12 ms·
Files are the interface humans and agents interact with
- deleted 7mo ago[deleted]
- jmclnx 7mo agoFunny, decades ago (mid-80s), I had to write a onetime fix on a what would be now a very low memory system, the data in question had a unique key of 8 7bit-ascii characters. Instead of reading multi-meg data into memory to determine what to do, I used the file system and the program would store data related to the key in sub directories instead. The older people saw what I did and thought that was interesting. With development time factored in, doing it this way ended up being much faster and avoided memory issues that would have occurred. So with AI, back to the old ways I guess :)
- bsenftner 7mo agoReminds me of early data driving approaches. Early CD based game consoles had memory constraints, which I sidestepped by writing the most ridiculous simple game engine: the game loop was all data driven, and "going somewhere new" in the game was simply triggering a disc read given a raw sector offset and the number of sectors. That read was then a repeated series of bytes to be written at the memory address given by the first 4 bytes read and next 4 bytes how many bytes to copy. That simple mechanism, paired with a data organizer for creating the disc images, enabled some well known successful games to have "huge worlds" with an executable under 100K, leaving the rest of the console's memory for content assets, animations, whatever.
- alexjplant 7mo agoWhich games were these out of interest? I enjoy reading about game dev from the nascent era of 3D on home consoles (on the Saturn in particular) and would love to hear more.
- bsenftner 7mo agoTiger Woods Golf PSX was one, RoadRash3D0 another. Dozens that were never popular too.
- galsapir 7mo agonice, esp. liked - "our memories, our thoughts, our designs should outlive the software we used to create them"
- SoftTalker 7mo agoWeird. My memories and thoughts are not created by software.
- korbatz 7mo agoI was having exact same observation, albeit from a bit diffrent perspective: SaaS. This is where as the code tends to be temporary and very domain specific, the data (files) must strive to be boring standards. The problem today is that we build specific, short-lived apps that lock data into formats only they can read. If you don't use universal formats, your system is fragile. We can still open JPEGs from 1995 because the files don't depend on the software used to make them. Using obscure or proprietary formats is just technical debt that will eventually kill your project. File or forget.
- jmathai 7mo agoMy 10+ year old photo management system [1] relies on the file system and EXIF as the source of truth for my entire photo library. It’s proven several times over that it’s the correct approach. Abstractions (formerly Google photos, currently Immich) should just be built on top - but these proprietary databases are only for convenience. For work, I’m having the same experience as the author and everything is just markdown and csv files for Claude Code (for research and document writing). [1] https://github.com/jmathai/elodie https://github.com/jmathai/elodie
- alanbernstein 7mo agoThanks for sharing, I might have too much NIH syndrome to use it but I'd love to check it out.
- jmathai 7mo agoHa! I totally get it. Use it for inspiration though!
- whartung 7mo agoI know some systems leverage the modern file meta data (extended attributes), but it's clearly not successful enough that folks can use them for an application like this. Ostensibly, things like MacOS Spotlight can bring real utility and value to the file system, and extended attributes through the sidecar indexing, etc. But Spotlight is infamous for its unreliability. The other issue with file systems is simply that the user (potentially) has "direct access" to them, in that they can readily move files in and up and around whimsically. The "structure" is laid bare for them to potentially interfere with, or, such as the case with the extended attributes, drag a file to a USB fob, and then copy it back -- inadvertently removing those attributes. And thats how we end up with everything being stuffed into a SQLite DB.
- TacticalCoder 7mo agoAs TFA basically says: files on a filesystem is a DB. Just a very crude one. There aren't nice indexes for a variety of things. "Views" are not really there (arguably you can create different views with links but it's, once again, very crude). But it's definitely a DB, represented as a tree indeed as TFA mentions. My life's data, including all the official stuff (bank statements, notary acts, statements made to the police [witness, etc.], insurance, property titels), all my coding projects, all the family pictures (not just the ones I took) and all the stuff I forgot, is in files, not in a dedicated DB. But these files are a definitely a database. And because I don't want to deal with data corruption and even less want to deal with synching now corrupted data, many of my files contains, in their filename, a partial cryptographic checksum. E.g. "dsc239879879.jpg" becomes "dsc239789879-b3-6f338201b7.jpg" (meaning the Blake3 hash of that file has to begin with 6f338201b7 or the file is corrupted). At any time, if I want to, I can import these in "real" dedicated DBs. For example I can pass my pictures as a read-only to "I'm Mich" (immich) and then query my pictures: "Find me all the pictures of Eliza" or "Find me all the pictures taken in 2016 on the french riviera". But the real database of my all my life is and shall always be files on a filesystem. With a "real" database, a backup can be as simple as a dump. With files backuping involve... Making sure you keep a proper version of all your files. I'd say files are even more important than the filesystem: a backup on a BluRay disc or on an ext4-formatted SSD or on an exfat formatted SSD or on a tape... Doesn't matter: the files are the data. A filesystem is the first "database" with these data: a crude one, with only simple queries. But a filesystem is definitely a database. The main advantage of this very simple database is that as long as the data are accessible, you know your data is safe and can always use them to populate more advanced databases if needed.
- heavyset_go 7mo agoYou can get views by using namespaces/cgroups
- ciupicri 7mo agoWhy Blake3 and not say XXH3 64/128 bits (https://xxhash.com/ https://xxhash.com/)?
- 7mo ago
- tacitusarc 7mo ago[flagged]
- q3k 7mo agoEveryone's trying to be the new thought leader enlightened technical essayist. So much fluff everywhere.
- orsorna 7mo agoWhat's wild is that with a few minutes of manual editing it would give exponential return. For instance, a lead sentence in your section saying "here's why X" that was already described by your subheading is unnecessary and could have been wholly removed.
- gzread 7mo agoYou'd have to have a good idea of how you want the document to read, which is half (or more) of the process of writing it.
- amarant 7mo agoExponential return? This is the front page of HN! What does exponential returns even look like? Are you saying this post is a few edits away from becoming a New York Times bestseller?
- orsorna 7mo agoNo, I guess I meant editing to approach a text that doesn't look rushed over (LLM generation is a subset of such poor writings) But you're right, it did hit the front page, and that says more about my sensibilities not lining up with whoever is voting the article up.
- antonvs 7mo agoIME many people aren't very capable of editing their own work effectively. It's why "editor" exists as a profession.
- naaqq 7mo agoThis article said some things I couldn’t put into words about different AI tools. Thanks for sharing.
- dzello 7mo agoResonates deeply with me. I’ve moved personal data out of ~10 SaaS systems into a single directory structure in the last year. Agents pay a higher price for fragmentation than humans. A well-organized system of files eliminates that fragmentation. It’s enough for single player. I suspect we’ll see new databases emerge that enable low multi-player (safe writes etc) scenarios without making the filesystem data more opaque. Not unlike what QMD is for search.
- rafaepta 7mo agoGreat read. Thanks for sharing
- jonstewart 7mo agoIt reminds me a lot of Hans Reiser’s original white paper, which can be found at https://web.archive.org/web/20070927003401/http://www.namesys.com/whitepaper.html https://web.archive.org/web/20070927003401/http://www.namesy.... Add some embeddings and boom.
- ramoz 7mo agoI thing the real impact behind the scenes here is Bash(). Filesystem relevance is a bit coincidental to placing an agent on an operating system and giving it full capability over it.
- BoredPositron 7mo agoI revived my Johnny Decimal system as my single source of truth for almost anything and couldn't be happier. The filing is done mostly by agents now but I still have the overview myself.
- ciupicri 7mo agoCould you give us more details about your system?
- hmokiguess 7mo agoNotable mention: Plan 9 from Bell Labs. https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs
- mieubrisse 7mo agoI'm building an agent orchestrator (plug: https://github.com/mieubrisse/agenc https://github.com/mieubrisse/agenc) and asked Claude what prior art exists. It pulled back Plan 9, and I was shocked: this is exactly what we need today, as I'm convinced we need to think about minimizing agent permissions the exact same way companies do. Plan 9 was just too early.
- paulryanrogers 7mo agoIt was too dogmatic. Lowest common denominator meant APIs had to shove square pegs through round holes. Unix had already partially gone down that path and stopped. IMO with good reason. Then again, perhaps in this era of ever expanding storage and compute, maybe someone can make it work even better?
- zozbot234 7mo agoThere's nothing "dogmatic" about containerization and providing services through userspace (IPC that's modeled as interaction with custom filesystem trees) rather than bespoke syscalls whenever feasible, which are basically the foundations of the plan9 approach. We do strive to do both in modern systems, but the approach to the problem space is clumsily bolted over the original system interfaces, and becomes overly complicated rather than elegant.
- anthk 7mo agoAnd for actual, new device filesystem, check GeFS.
- bsenftner 7mo agoI don't think this paradigm will last, or be what becomes the more common structure in the future. This will still suffers from conflicts of persona and objective, plus has the issue that individual apps will need protected file hierarchies to prevent malicious injections. I don't see this as a solution, just a deck chair shuffle. I've been researching and building with a different paradigm, an inversion of the tool calling concept that creates contextual agents of limited scope, but pipelines of them, with the user in triplicate control of agent as author, operator of an application with a clear goal, and conversationally cooperating on a task with one or more agents. I create agents that are inside open source software, making that application "intelligent", and the user has control to make the agent an expert in the type of work that human uses that software. Imagine a word processor that when used by a documentation author has multiple documentation agents that co-work with the author. While that same word processor when used by a, for example, romance novelist has similar agents but experts in a different literary / document goal. Then do this with spreadsheets, and project management software, and you get an intelligent office suite with amazing levels of user assistance. In this structure, context/task specific knowledge is placed inside other software, providing complex processes to the user they can conversationally request and compose on the fly, use and save as a new agent for repeated use, or discard as something built for the moment. The agents are inside other software, with full knowledge of that application in addition to task knowledge related to why the user is using that software. It's a unified agent creation and use and chain-of-thought live editing environment, in context with what one is doing in other software. I wrap the entire structure into a permission hierarchy that mirrors departments, projects, and project staff, creating an application suite structure more secure than this Filesystems approach, with substantially more user controls that do not expose the potential for malicious application. The agents are each for a specific purpose, which limits their reach and potential for damage. Being purpose built, the users (who are task focused, not developers) easily edit and enhance the agents they use because that is the job/career they already know and continue to do, just with agent help.
- visarga 7mo agoYour project, while interesting as an approach, is orders of magnitude more complex than the proposition here - which is to rely on agents skills with file systems, bash, python, sed, grep and other cli tools to find and organize data, but also maintain their own skills and memories. LLMs have gained excellent capabilities with files and can generate code on the fly to process them. It's people realizing that you can use a coding agent for any cognitive work, and it's better since you own the file system while easily swapping the model or harness. I personally use a graph like format but organized like a simple text file, each node prefixed with [id] and inline referencing other nodes by [id], this works well with replace, diff, git and is navigable at larger scales without reading everything. Every time I start work I have the agent read it, and at the end update it. This ensures continuity over weeks and months of work. This is my take on file system as memory - make it a graph of nodes, but keep it simple - a flat text file, don't prescribe structure, just node size. It grows organically as needed, I once got one to 500 nodes.
- istillwritecode 7mo agoExcept android and iOS are both trying to keep you away from your own files.
- Gigachad 7mo agoKind of? iOS does have a file manager which explicitly shows you your own files. They just made a separation between OS/Program files vs the users own files. What more killed files was cloud programs where multiple users can edit at the same time which required a system that was more sophisticated than syncing a file.
- alcazar 7mo agoYeah, I'm not sure most normal people use file systems that much. We spend ours on our laptops and assume others do too. But many people don't even own a laptop. They handle all their computing needs from their phones, using proprietary apps, with the data living in WhatsApp messages.
- leonflexo 7mo agoI wonder how much of a lost in the middle effect there is and if there could be or are tools that specifically differentiate optimizing post compaction "seeding". One problem I've run into with open spec is after a compaction, or kicking off a new session, it is easy to start out already ~50k tokens in and I assume somewhat more vulnerable to lost in the middle type effects before any actual coding may have taken place.
- jnsaff2 7mo agoHere’s me getting excited that a new file system is being developed but alas, just talk about text files.
- 0xbadcafebee 7mo agoCan we bring back Plan9 architecture now? It had what was essentially MCP. You make a custom device driver, and anything really can be a file. Not only that, but you network them, so a file on local disk could be a display on a remote host (or whatever). Just tell the agent to read/write files and it doesn't need to figure out either MCP or tool calls.
- bnjms 7mo agoThis seems like the place to ask. What other big ideas have there been since everything-is-a-file? I’m not aware of any. And it seems like we want another layer of permissions on device & data access we spent have before.
- deleted 7mo ago[deleted]
- MarkMarine 7mo agoOver a number of files similar to a codebase, that are well organized (like a codebase) the coding agents and harnesses are quite good at finding information, they clearly train on them so they will only improve. The challenge is how to structure messy data as a filesystem the agent can use. That is a lot harder than querying a vector db for a semantic query. The code bases we’ve been using agents in had been pruned and maintained over years, we’ve got principles like DRY that pushed us to put the answer in one place… implicitly building and maintaining that graph with all the actors in the system invested in maintaining this. This is not the case for messy data, so while I see the authors point and agree that a filesystem is a better structure for context over time, we haven’t supplanted search yet for non-code data.
- staplung 7mo agoNot knocking the article in any way but from the headline I was expecting - perhaps hoping - this would be about some innovation in filesystems research like it was the 90's again. That's not what this is. It's about how filesystems as they are (and have been for decades) are proving to be powerful tools for LLMs/agents.
- mangogogo 7mo agoi was hoping the same, but then it turned out to be another article about LLMs.
- fragmede 7mo agoYeah, none of it was really about file systems. There was a brief mention that file systems look like a graph, and that you build roughly an index so it looks graph and thus database-y, but you could store it all in a sqlite database with a column, called filename and a column called content for all the details about file systems this post went into. I too was expecting something more in depth about file systems like for instance, cluster file systems have made a little to no advancement. ZFS is not a cluster file system and we've been needing a good one of those for decades, ever since VM's became feasible on consumer grade hardware. Still, files on desk is better than having to pay Oracle a fee per-skill on today's modern, open Internet. That was never going to happen.
- alecco 7mo agoAnd by filesystem they mean CLI (command line interface) and a full *nix system. Like the hundreds of similar articles about it for the past year said.
- Gigachad 7mo agoI feel like every article on HN now disguises itself as interesting but the content is just the same boring AI slop.
- palata 7mo agoI have been reading HN for a few years, and my feeling is that I find fewer and fewer interesting articles. Maybe it's just me, and the average articles are the same quality. Now I tend to skim through it to see if a title looks like it may bring interesting discussions, and then I skim through the discussions. Because there are very knowledgeable people who sometimes share valuable insights. Interestingly, last time I asked a question, hoping to get interesting people to share insights, I was answered that I "should learn how to use an LLM instead of asking questions" :-).
- deleted 7mo ago[deleted]
- JoeAltmaier 7mo agoDigression: a file system is a terrible abstraction. The ceremonial file tree, where branches are directories and you have to hang your file on a particular branch like a Christmas ornament. Relational is better. Hell, and kind of unique identifier would be nice. So many better ways to organize data stores.
- mieubrisse 7mo agoI've been wondering this too: for us, UUIDs are super opaque. But for an agent, two UUIDs are distinct as day and night. Is the best filesystem just blob storage S3 style with good indexes, and a bit of context on where everything lives? One thing directories solve: they're great grouping mechanisms. "All the Q3 stuff lives in this directory" I bet we move towards a world where files are just UUIDs, then directory structures get created on demand, like tags.
- para_parolu 7mo agoFilepath is just unique name that model can identify easily and understand grouping. Uuid solves nothing but requires another mapping from file to short description.
- JoeAltmaier 7mo agoUUID solve oh so very, very much. You can have several versions of the same set of data object at once - an entire source set for a build, all the names duplicate but tagged with 'revision' so they can be distinguished. Hard to do that without a UUID at root, to use for unique identification of the particular 'particle' of the particular data set.
- JoeAltmaier 7mo agoOr, have to "Q" attribute and ask the file store for "Q=3" All good.
- packetlost 7mo agoFiles in most file systems are uniquely identified by inode and can be referenced by multiple files. Why does everyone forget links?
- packetlost 7mo agoWe once again discover that Plan9 and UNIX were right. The most powerful, lowest common denominator interface is text files exposed over a file system. Now to get back to making 9p2026. The article gets some fundamentals completely wrong though: file systems are full graphs, not strict trees and are definitely not acyclic
- andai 7mo agoSo what are Plan 9's killer features, and can they be bolted on with FUSE or is there a deeper magic at play?
- packetlost 7mo agoPlan9 doesn't really have a single killer feature beyond 9P and the universal consistency and simplicity of its APIs. It has a very clean syscall interface and takes "everything is a file" to its logical conclusion and does it well (IMO). Pretty much everything is a file(system) and it's all accessed via the 9P protocol. You could sorta bolt these features on with FUSE, but to see real benefits you'd want something closer to Inferno, which is like an OS/application runtime that runs on top of another OS host. In my mind, the security model is the closest thing to a killer feature it has. Because everything is a file(system) and the fork/rfork and bind syscalls let you precisely control what resources/files/services/etc. a child process has access to via easily understandable shell commands (or using libc functions if you want), it means you don't need special APIs for namespacing (ie. containers) and access controls. It's very clean. When a parent process forks or spawns a child process, it can chose whether that process inherits the namespace or gets a clean slate that it can then bind filesystems onto, controlling precisely what it has access to.
- anthk 7mo agoFUSE is dog slow and it's a bad hack compared to mount anything anywhere in 9front without root permissions. Also the API is much simpler than POSIX. Hurd with settrans made things much easier than the classical Unix, but it's still in alpha and it still has to implement POSIX for convenience.
- fogzen 7mo agoDoes this really have to do with file systems? Replacing RAG/context stuffing with tool calls for data access seems like the actual change. Whether the tool call is backed by a file system or DB or whatever shouldn’t matter, right?
- largbae 7mo agoI think this article just speaks to the immaturity of our use of AI at this "moment." Production grade systems might be written by agents running on filesystem skills, but the production systems themselves will run on consistent and scalable data structures. Meanwhile the UI of AI agents will almost certainly evolve away from desktop computers and toward audio/visual interfaces. An agent might get more context from a zoom call with you, once tone and body language can be used to increase the bandwidth between you.
- fragmede 7mo agoI don't think written prompting will ever go away. Writing helps you organize your thoughts in a way that speaking, umm, ah, wait no, hang on, does not. Writing I can go back and change what I've already written before I hit send. Anybody who's prompted with speech for any length has been "wait no nevermind start over". So STT will get better, sure, it's already quite good. I just don't see text extry entirely going away because Human Intelligence (HI) just doesn't work in a way that speech would be the only interface.
- drowntoge 7mo agoTotally agree. Speech is powerful and it will always have its place. It will continue to evolve and become far more useful than it is today. But at its core, it remains a highly lossy medium compared with text, especially when it comes to expressing (and consuming expressions thereof) ideas. Even the best voice memo cannot rival a clear, well-structured email when it comes to explaining something even moderately complicated. Voice assistants, AI pins, and whatever other speech-based interfaces they come up with next will always be "nice to have", but I don't think anybody should be throwing away their keyboards anytime soon. We may have transformed how we make computers work for us, yet the ways we interact with them are much harder to revolutionize, because they are grounded in the physical, neurological, and habitual constraints of human existence. All of which is to say, when I look at the future, I still see a lot of typing.
- andai 7mo agohttps://www.youtube.com/watch?v=GH9-EmgtABw https://www.youtube.com/watch?v=GH9-EmgtABw Saw this video recently, by an AI company working to get contextual cues from tone and body language. I think they're converting it to text and feeding it into a LLM, so not natively multimodal, but I still thought it was really cool.
- zmmmmm 7mo agoI don't think there's a lot magical about files beyond (a) they are native for LLMs and coding because they both process text and (b)when things are rapidly in flux, unstructured formats prosper because flexibility is king. Literally any fixed format you try and describe becomes rapidly outdated and fails to serve the purpose. For example it feels like MCP is already ageing like milk. Which is mainly to say, trust me, this is a temporary state, the god of complexity is coming. It is utterly inevitable. The people who created React, Kubernetes, all those Java frameworks you hated etc didn't go away. They are right now thinking about how amazing it would be if you if you stacked ten different tools together with brand new structured file formats and databases. We already have "beads" and "gastown" where this is starting. Enjoy these times because a couple of years from now it will already be the end of the "fun" part I think.
- _pdp_ 7mo agoIn other words, file systems are an excellent way to organise information. I mean, yeah - we've been using them forever. File systems are not a good abstraction mechanism for remote procedure calls, though. I think it's important to distinguish between the two, since I find there are a lot of articles conflating both - comparing MCPs to SKILLs, which are completely different things. I think the confusion comes from the fact that MCP came before SKILLs, and there's a mental model where SKILLs are somehow "better than" MCPs. This is like saying local Word documents are better than a fully integrated collaborative office suite. It's just not the same thing. The reason SKILLs work so well is because there's 50 years of accumulated knowledge of how to run rudimentary Unix tools. the TLDR File systems - organising information MCP/APIs - remote procedure calls
- stephbook 7mo agoI'm not too deep into agentic coding, but I hadn't understood why people write `SOUL.md` files like no tomorrow. Does anyone think these will be called the same three years from now? If you've got a coding convention, enforce it using a linter. Have the LLM write the rules and integrate it into the local build and CI tool. Has noone ever thought about how – gasp – a future human collaborator would be onboarded?
- tasuki 7mo ago> He pointed out that Claude Code works because it runs on your computer, with your environment, your data, your context. Ah yes - I hate that. Yes it "works", but I don't want things to only work on my machine: I want them to work everywhere. I was wondering why Google's Jules wasn't more popular, and I guess this is why. My preference for my code to work in different environments is unusual.
- rvz 7mo ago> Anthropic is reportedly approaching profitability Where is the source for that?
- ganelonhb 7mo ago[flagged]
- tomhow 7mo agoPlease don't do this here.
- jl6 7mo agoFiles are a fundamental freedom because they enable users to have custody of data, thus enabling ultimate sovereignty of confidentiality, integrity, and availability. We should recognize files as an essential pillar of digital liberty, on par with FOSS licensing.
- prmph 7mo agoIndeed, that's why it bothers me that major technology vendors, especially Apple, would like to do away with the very concept of files, at least for non-power users. They make it seem like data is bound up with apps, and should not have an independent existence. They also make it hard to import/export data, except via backups, which a very crude way of taking control of your personal data. I'm working on a tool to work around these issues to the extent possible, allowing users to extract their information, as granular files, from device backups into their personal digital library. For immutable data, archival is ok, but for editable data, the biggest challenge is how to make the extracted data "live", i.e., available and editable on the devices again, preferably in the same apps used to create them. There seems to be no good solutions.
- jl6 7mo agoApple keep their casual users on a short leash, but for those willing to tinker, iOS device backups are actually quite good for that archive use case, as you can extract most of your important data in the form of SQLite database files. The whole process is high friction and very user-unfriendly, and open documentation of these databases is lacking, but the fact that this route still exists at all is encouraging (in the sense that all hope is not yet lost). They could very easily have hidden all these files behind an Apple-managed encryption key. On the other hand, this niche affordance may serve to placate the power users who would be most likely to cause noise and revolt if our personal needs were not met. On the gripping hand, the device backup mechanism via iTunes feels so ancient that they probably just haven’t thought about it.
- prmph 7mo ago> The whole process is high friction and very user-unfriendly, and open documentation of these databases is lacking Yeah, that's what I want to abstract way. There are tools that do this to some extent, but they stop at backup extraction, without helping you to integrate the extracted data into a proper personal digital library with easy retrieval.
- zbyforgotpass 7mo agoFiles work as long as you can find them. This means search and/or indexes - at some scale they start breaking. The question is: how big your agent operated knowledge base needs to be? Files are practical now - but I think we should more analyze this from first principles. Here is my attempt at that: https://zby.github.io/commonplace/notes/a-good-agentic-kb-maximizes-contextual-competence-through-discoverable-composable-trustworthy-knowledge/ https://zby.github.io/commonplace/notes/a-good-agentic-kb-ma... (just entry point - the whole kb is about this).
- naomi_kynes 7mo agoThe filesystem model works well for persistence and async handoff — you're right that it's the most durable common ground. Where it gets awkward: the synchronous case. An agent that needs a human approval before proceeding. Most people end up routing these back-to-human calls through Discord/Slack, where the agent shows up as a bot. It works, but agents are structurally second-class there — manual setup, limited API surface, no agent-native identity. The async file interface and the real-time decision channel are solving two different things. (This is actually what I've been working on: a platform where agents aren't bolted onto human chat as bots, but provision themselves as first-class participants. Files handle state; what handles decisions? That's the gap we're trying to close.)
- deleted 7mo ago[deleted]
- devonkelley 7mo ago[dead]