7 ms·
Storing knowledge in a single long plain text file
- zaik 2y agoToo many people don't know about Wikidata.
- breck 2y agoCan you elaborate?
- boomlinde 2y agoIt feels like you left a chapter or two out. You mention in the citations that "Hierarchies are painless in our system through nested parsers, parser inheritance, parser mixins, and nested measurements." Nothing else in the article gives any hint as to what those things are or how your system implements them except nested measurements. It's unclear at all what a parser is in your system. It is however clear that what you call "parsers" aren't parsers. Is the list of "parsers" a schema definition? Overall it seems like your ideas would make more sense if you used more widely adopted language to describe it. "Concepts" are records, "measurements" are fields.
- breck 2y ago> It feels like you left a chapter or two out. I agree with you. More details will come out over time but I wanted to keep yesterday's paper a single page. > You mention in the citations that "Hierarchies are painless in our system through nested parsers, parser inheritance, parser mixins, and nested measurements." Nothing else in the article gives any hint as to what those things are or how your system implements them except nested measurements. It's unclear at all what a parser is in your system. Below is a link to a web IDE we built. You can see parsers (on the left), and concepts (on the right). Nested parsers and parser inheritance are demonstrated. Mixins is not currently in that branch yet. Ignore the "cells" stuff at top (that turned out to be an unneeded division between lines parsers and word parsers). https://jtree.treenotation.org/designer#url%20https%3A%2F%2Fpldb.io%2Fpldb.grammar%0AprogramUrl%20https%3A%2F%2Fpldb.io%2Fconcepts%2Frecfiles.scroll https://jtree.treenotation.org/designer#url%20https%3A%2F%2F... > Overall it seems like your ideas would make more sense if you used more widely adopted language to describe it. "Concepts" are records, "measurements" are fields. Yes, concepts often map to records or rows. Measures to fields or columns. Measurements to the cells in a spreadsheet. There are reasons for my terminology, that should become clearer over time.
- the_duke 2y agoFrom a quick scan, it sounds like you re-invented a lot of the concepts of semantic data, just with different terminology and a different text format. (RDF, triples, ...)
- 0x445442 2y agoI wish there was a defacto/canonical site that housed free papers that people could go search before embarking on these types of efforts. Perhaps there is but when I attempt these types of searches I get directed to pay walled ACM type links or Github "Papers We Love" type links.
- breck 2y agoYou might enjoy https://pldb.io/ https://pldb.io/, which is a paywall free, open source, public domain, database you can browse completely locally, with information on all of these kinds of prior languages. :)
- mynotaccount 2y agosci-hub
- sleno 2y agoFunny, someone linked me here. I just posted a project that got a bit of traction related to this: papertalk.xyz
- breck 2y agoIt would certainly be fair to add RDF/triples/semantic web, to prior work. I spent many years exploring that stuff. We are aiming at roughly the same problem. Our implementation has solved some important details.
- FabHK 2y agoMight be worth highlighting some of the problems solved (particularly those that earlier ideas haven't).
- 082349872349872 2y agotangent: http://www-formal.stanford.edu/jmc/elephant/elephant.html http://www-formal.stanford.edu/jmc/elephant/elephant.html
- breck 2y agoI know what my rabbit hole of the day will be now. Thanks! (https://github.com/breck7/pldb/commit/83ba14454ed80fa682c85dfd0202d99e3d805681 https://github.com/breck7/pldb/commit/83ba14454ed80fa682c85d...)
- deleted 2y ago[deleted]
- racional 2y agoSee also - Ask HN: How do you store your knowledge? - https://news.ycombinator.com/item?id=40131689 https://news.ycombinator.com/item?id=40131689
- igtztorrero 2y agoI like the blog site, it's using scroll language, cool !
- EGreg 2y agoWhat I want to know is, what is the maximum size of a PHP file that can be loaded? I guess I can TIAS but is it documented anywhere ??
- pimlottc 2y agoI have no idea what the visualization means.
- kriro 2y agoIt is surprisingly common for very good bug bounty hunters to rely on stuff.txt as their major "knowledge base". At least I've heard this from a couple of high earning guys in interviews. They usually just grep through it or roughly remember where things are. I was quite surprised to hear that.
- jhoechtl 2y agoGlad recutils got a mention. I find it superior to the proposed concept. Sadly recutils never cought on.
- samatman 2y agoIn case you would like to be less (or more) confused, this is an application of Tree Notation, by the same author https://treenotation.org/ https://treenotation.org/ I suffer from the same flaw as the author, a tendency towards grandiosity and fervor in describing my good ideas. So I'm in a good position to advise that he knock it off: people don't like that, and it will keep them from using your stuff even if it's good. Which it might be, actually. The extreme simplicity of the foundation is laudable.
- breck 2y agoThe brevity and grandiosity is not for marketing the idea, it is so the idea can be attacked. I don't want to waste my working hours building a factory out of the wrong materials. If I've made a mistake, I want to know. If the idea is truly good, the products built on the idea should do just fine.
- samatman 2y agoIt's your project to run as you please, of course. My guess is that the attacks you draw will skip any basis in technical merit and land directly on the tone, proceeding on an emotional basis. We have an n=1 here with plenty of that behavior on display. You'd like to believe that someone proposing Tree Notation for a project wouldn't be dismissed with "isn't that, like, the YAML for TimeCube guy?". But this is, in large part, how the world actually functions.
- breck 2y agoIt's been a slog, but I'm very happy with how the ideas in Scroll (which for all intents and purposes Tree Notation and Grammar are Scroll--99% of usage is Scroll) and PLDB have evolved. I don't mind the pushback. If it wasn't for the pushback against Tree Notation, I never would have started PLDB. ("Learn to research properly", one commenter once said. And he was right. I think PLDB is the proper way to do research). It's much nicer to get pushback than crickets. That means people are generously giving their time to consider the ideas. Crickets is the worst. I should know, I mostly get crickets.
- zitterbewegung 2y agoThis reminds me of Org Mode[1] https://orgmode.org https://orgmode.org
- csomar 2y agoI understand the author point, but I think this is over-complicating a database table while losing most of the features a database can give you. This is not some new concept, however. I stumbled upon this concept two years ago with some dude promoting a "Vault" architecture, where you use a single "notion.so" table to store all your data. You create views from this data to separate topics. You'll then be able to "centralize" all you notion stuff in a single file; all while being able to link any two topics or more together. What hit me is that I can export the notion table to CSV and then this can be fed into an AI pipeline that might be able to predict my tasks better (like code). Only problem was, a couple of months into this and the notion interface became completely unusable. This can be done with a regular database. Though the views/interfaces to interact are not that easy to create. I didn't find an alternative (I tried airtable too)
- bitwize 2y agoReminds me of the Canon Cat. You put a disk in and it would store everything you typed as a single, long document on the disk. You could put dividers in the document to separate sections. Parsers in the Cat's system software allowed for specific actions to be taken on parts of the document; for example, tabular numeric data could be identified and spreadsheet-like functionality could be enabled over that data. The whole document was searchable via a pair of LEAP keys which, when held down while typing, would search for what was typed. Jef Raskin of Macintosh fame was responsible for this UI. https://en.wikipedia.org/wiki/Canon_Cat https://en.wikipedia.org/wiki/Canon_Cat
- breck 2y agoThis is fascinating. I don’t think I’ve seen this before. Thank you.
- dSebastien 2y agoOne big text file (OBTF) for the win? I'm curious about the pros and cons people think of. https://notes.dsebastien.net/30+Areas/33+Permanent+notes/33.02+Content/One+Big+Text+File+(OBTF) https://notes.dsebastien.net/30+Areas/33+Permanent+notes/33....
- deleted 2y ago[deleted]
- smarm52 2y ago(Excuse me if this is obvious, I have limited time, but this article grabbed my attention; Fascinating). How do you handle writes? It seems like an interrupted write process could corrupt a section of text, which could be difficult to recover from. Given the example at "breckyunits.com", I don't see hashing information associated with each item. Are you depending on git to prevent such errors from corrupting individual items? If so, then I would be concerned about gits propensity for data corruption [1, 2, 3, 4]. I wonder if adding some ZFS-like hashing and integrity checks would be helpful. Then, as it's one big file, it seems to act like a TAR archive [5], where you append to the end, but have to scan through the previous content to find what you want. If that's the case, then it may be viable to do copy-on-write [6], where information is never modified, but instead referenced with a key, and later modifications supersede older versions. (Again apologies if this is redundant, I just had the thought and had to get it down. XD) [1] https://superuser.com/questions/1253830/does-git-prevent-data-degradation https://superuser.com/questions/1253830/does-git-prevent-dat... [2] https://superuser.com/questions/1635797/what-if-git-repository-gets-corrupted https://superuser.com/questions/1635797/what-if-git-reposito... [3] https://stackoverflow.com/questions/tagged/corruption?tab=Frequent https://stackoverflow.com/questions/tagged/corruption?tab=Fr... [4] https://www.reddit.com/r/git/comments/oq9wph/power_outage_in_the_middle_of_commit_index_file/ https://www.reddit.com/r/git/comments/oq9wph/power_outage_in... [5] https://en.wikipedia.org/wiki/Tar_(computing) https://en.wikipedia.org/wiki/Tar_(computing) [6] https://en.wikipedia.org/wiki/Copy-on-write https://en.wikipedia.org/wiki/Copy-on-write
- rifty 2y agoI feel like the focus on language appearance is taking too much precedence over covering other aspects like parser composition. For example mentioning the 'indention trick' feels like a deviation and distraction from the actual point you're trying to convey. The idea here isn't actually dependent on the exact presentation style of the format... To comment on the appearance though since it seems a focus none the less... I appreciate the ideal of syntax sparseness, but in this case I feel like it loses visual salience in plaintext after looking at some of the .scroll files. It's difficult to recognize the shape and proportion of what the content will be when rendered. The applied meta content lacks visual differentiation in plaintext from the content itself. I don't think total spareness should be the sole goal here; Markdown for example isn't strong in plaintext just because it is syntactically sparse, but because it is sparse in tandem with not supporting applying extensible meta content to content - but this does.
- h2odragon 2y agoplain text has so many advantages. then you need some syntax for the strictures of your use case. and /etc is reborn.
- Terr_ 2y agoThen you want to be able to access old copies, and RCS [0] is reborn... [0] https://en.wikipedia.org/wiki/Revision_Control_System https://en.wikipedia.org/wiki/Revision_Control_System
- mushufasa 2y agoThe title, "A New Way to Store Knowledge", indicates this is a joke.
- happytoexplain 2y agoIs there some context you're leaving unsaid?
- mushufasa 2y agoa plain text file is the oldest idea for storing knowledge. see unix philosophy: "Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface."
- sprobertson 2y agoDid you read past the title? The main point of the article is a syntax for knowledge bases - plain text is just an implementation detail.
- chipdart 2y agoIf you take out plain text from this presentation, what's left? The tree structure? The log aspect? In order to claim any of this is remotely novel, you have to first ignore the whole body of work built around information systems.
- fellowniusmonk 2y agoI'm so excited for this kind of work. I think there is an alternate history where EMACS or an EMACS equivalent became the dominant OS but the onboarding process was too onerous, and the community has been focused on technical integrations instead of integrating a larger less technical community of people into a sane but simpler default. With AI I think interfaces will further bifurcate between "users" and "creators" and pretty much all of our "desktop" ui paradigms will be consigned to history in favor of structured collaborative text interfaces.
- pama 2y agoI thought I wasnt alone but perhaps I live in a sparsely populated alternative history where Emacs gets simpler over time. Once you know the basics they dont change. Some more advanced tools gradually simplify or improve but it takes years. Various ideas are explored by users around the globe and the simplest and best ones survive: we now have magit and eglot and treesitter support. And org, but also markup. The shells are true shells with unlimited context and full access to the OS. Similarily for the REPLs. The only thing I miss is changing tools all the time and losing history, which felt like a refreshing excuse to start over when I was younger —- these days I dont have the patience and time.
- myhf 2y ago“Every program attempts to get simpler until it can no longer read email. Those programs which cannot simplify are replaced by ones which can.”
- cpr 2y agoI did this for decades (using Emacs) but finally gave up and am using Notes.
- dflock 2y agoThis is _so much more_ than the title suggests - this is not about making notes in text files.
- breck 2y agoYou get it ;).
- kjksf 2y agoI've built a web-based tool for myself that has similar philosophy: https://edna.arslexis.io/ https://edna.arslexis.io/ It does support multiple pages but you can use just one. It has a nifty feature in that you can divide the single file into virtual parts. They just have alternate backgrounds to tell them apart. And each virtual part can have a type for syntax highlighting (plain text, markdown or a programming language). I've been using it for a few months now and it's my primary note taking / knowledge recording thing. Even though it's web based, on Chrome you can save notes on disk so it works like a desktop app. Each note is a plain text file so you can edit them in any text editor. If you put notes on a shared drive (Dropbox, OneDrive, Google Drive etc.) you can work on notes on multiple computers. It's also open-source: https://github.com/kjk/edna https://github.com/kjk/edna
- zcw100 2y agoLooks like a CLI version of a tiddlywiki
- porridgeraisin 2y agoHeynote is similar
- kjksf 2y agoEdna is a fork of Heynote with a bunch of changes. Mostly it supports multiple notes and it's a web app, not a desktop app. I could build a desktop app but it would not offer almost any advantages given that Edna can also save notes on disk (that's how I use it). You can use Chrome's "Install" feature to make it look act like a native app (it opens in it's own window and acts independently of the browser).
- jonatanheyman 2y agoHeynote also exists as a web app: https://app.heynote.com/ https://app.heynote.com/
- 2y ago
- runjake 2y agoCaveat from article: > For pragmatic reasons, it is best to split your data into 1 file per concept and combine concept files at runtime.
- pizzafeelsright 2y agoAll separate things should be in different files. And files are just key/values anyway.
- egeozcan 2y agoI wouldn't say "should" but I agree. A file is a very abstracted concept and it technically can mean a lot of different things depending on the file system. However, it is a very good abstraction that's nearly universal and practically there is little to no reason not to use them to organize things.
- AtlasBarfed 2y agoThere's two hard problems in computer science: name spacing and caching. This ... Is namespace hell, and if you squint at the caching problem, it's actually an indexing problem, which is also related to this.
- adtac 2y agoThe aphorism typically says cache invalidation is hard. Not because you don't know what index to invalidate but because it's hard to invalidate the thing at the right time. Caching itself is quite easy, just ask the designers of speculative execution at Intel :)
- samatman 2y agoIf a cache doesn't have cache invalidation, it isn't a cache, it's a database.
- throwthrowuknow 2y agoFacts
- andrepd 2y ago[flagged]
- deleted 2y ago[deleted]
- fwip 2y agoNot sure why the "fast filesystem" links to the M1 processor.
- breck 2y agoYou are right, that is not clear. I've added a note and link (https://github.com/breck7/breckyunits.com/commit/61792237c0b81cebecfbcdf2ca38e06f03deb1cb https://github.com/breck7/breckyunits.com/commit/61792237c0b...) "The M1 laptop was the first consumer machine I tried where the performance of this system wasn't abysmal." - https://breckyunits.com/building-a-treebase-with-6.5-million-files.html https://breckyunits.com/building-a-treebase-with-6.5-million... Thank you!
- fwip 2y agoThanks for the explanation. :)
- thorncorona 2y agothis is solved better by obsidian
- breck 2y agoCan you explain why?
- atrus 2y agoObsidian is a bit closer to an unstructured TreeBase than this single file TreeBase imo.
- Sarky 2y agoIndeed. Markdown files seperated into folders. I organize them into topics. Easy to search with a lot of possible customizations. And even setup without customizations is optically pleasing and functional
- rakoo 2y agoIs this a serious article ? The state of the art of knowledge ? There are at least two (2) existing prior art implementation that have done this for years, only better (as in, with better tools): - recutils: https://www.gnu.org/software/recutils/ https://www.gnu.org/software/recutils/ - ndb: https://9fans.github.io/plan9port/man/man7/ndb.html https://9fans.github.io/plan9port/man/man7/ndb.html Please, developers of everywhere, I beg you: please learn what came before you before reinventing the wheel, only triangular this time. Please take the time to appreciate that if it's so obvious maybe it's because of your ignorance and not your genius.
- breck 2y agoThank you for bringing up recutils and ndb. I had seen them years ago but didn't make the connection when writing this paper. But there are some great connections, and I will definitely be updating the post with a section and links to them. I am reading through the source and will have more to say soon. If anyone has any links to massive plain text datasets based on these (or other similar tools), I would appreciate more pointers. I can tell you now (subject to change), based on my preliminary read through the source is that the two systems you mentioned missed some highly important details that I have presented in my paper, with order of magnitude impacts. Not to discredit them at all, rather I think my work gives them credit, in that they were on the right track, and we just have the benefit of some recent innovations, and get to stand on their shoulders (and the shoulders of others). Edit: I have updated the paper with a reference to Recutils. Thanks rakoo! https://github.com/breck7/breckyunits.com/commit/71b706d296ecfa1caa3dae05d746258be520cbf5 https://github.com/breck7/breckyunits.com/commit/71b706d296e... The added text: GNU Recutils^recutils deserves credit as the closest precursor to our system. If Recutils were to adopt some designs from our system it would be capable of supporting larger databases. https://www.gnu.org/software/recutils/ ^recutils: GNU Recutils: Jose E. Marchesi https://www.gnu.org/software/recutils/ - Recutils and our system have debatable syntactic differences, but our system solves a few clear problems described in the Recutils docs: - "difficult to manage hierarchies". Hierarchies are painless in our system through nested parsers, parser inheritance, parser mixins, and nested measurements. - "tedious to manually encode...several lines". No encoding is needed in our system thanks to the indentation trick. - In Recutils comments are "completely ignored by processing tools and can only be seen by looking at the recfile itself". Our system supports first class comments which are bound to measurements using the indentation trick. - "It is difficult to manually maintain the integrity of data stored in the data base." In our system advances parsers provides unlimited capabilities for maintaining data integrity.
- Biganon 2y agoThis gives off a TimeCube vibe.
- deleted 2y ago[deleted]
- dankwizard 2y ago[flagged]
- deleted 2y ago[deleted]
- TZubiri 2y agoWhen you still haven't emerged from the covid pandemic and your shutdown project started to take roots deep in your mind. It reminds me of that scene from The Shining where the character writes the same sentence over and over again.
- breck 2y agoAll text and no syntax makes Breck a dull boy. All text and no syntax makes Breck a dull boy. All text and no syntax makes Breck a dull boy.
- TZubiri 2y agoXml is too bulky, let's do csv Csv is too limited too strongly typed, let's do json. Json is too heavily punctuated let's do yaml. Yaml is too yamly, let's do this instead.
- Quothling 2y agoEventually everything becomes toml. All jokes aside, I think the equivalent for this would be markdown not xml/csv/json/yaml.
- wruza 2y agoLet’s just do json5 after json. https://json5.org/ https://json5.org/
- corn13read2 2y agoI'll wait for version 6
- a_c 2y agoIf we forego human read-write-ability to gain some interactivity, we got https://tiddlywiki.com/ https://tiddlywiki.com/ , a single long html file
- wodenokoto 2y agoI don’t get it. How do I now that something is a data definition and not just more data? Is “>” a special character together with space and new lines? He calls it a trick, why? How do I add data with spaces and new lines? Is “Parser” a keyword that you postfix to names of values? He writes “idParser” and then has a value in each observation that is named “id”
- breck 2y ago> I don’t get it. How do I now that something is a data definition and not just more data? In our ScrollSet implementation, a measure definition (what you call a "data definition") is a subset of a parser. You will know something is a measure definition when you see a line starting with a word with a "Parser" postfix, and nested inside that definition is a line like "extends abstractMeasureParser". Below is a link to a web IDE we built. You can see all of the measure definitions currently powering PLDB on the left. On the right, you can see a concept ("more data", in your terms). https://jtree.treenotation.org/designer#url%20https%3A%2F%2Fpldb.io%2Fpldb.grammar%0AprogramUrl%20https%3A%2F%2Fpldb.io%2Fconcepts%2Frecfiles.scroll https://jtree.treenotation.org/designer#url%20https%3A%2F%2F... > He calls it a trick, why? The current term of art is "Offi-side rule" (https://en.wikipedia.org/wiki/Off-side_rule https://en.wikipedia.org/wiki/Off-side_rule). I never liked that term. I call it the indentation trick. But I am referring to the Offside_rule.
- benatkin 2y agoNested Markdown with code fences is plain text. Alas, vscode will choke on it. I have a project where a thin wrapper loads from a giant markdown file into a sandboxed iframe. That way you could paste code from an unknown source into it and play with the output and paste private data into it and it wouldn’t be encoded into a URL sent to a server, as making network requests and following links are blocked. https://codeberg.org/ristretto/pages https://codeberg.org/ristretto/pages notebook.md is huge, output in the project website, link to source in the README.
- akasakahakada 2y agoEducate me if this is not reinventing the wheel of ymal, toml, xml, etc.
- enriquto 2y agoOne would rather say that ymal, toml, xml, etc. are wheel reinventions of plain text files.