7 ms·
Plain text has been around for decades and it’s here to stay
- lofaszvanitt 7mo agoAll plaintext bullshit should be eradicated. Fucking useless as a medium when displaying and handling complex tasks.
- deleted 7mo ago[deleted]
- godd2 7mo agoCounterpoint: Adding in a custom, proprietary interpretation of your data makes your complex task more complicated.
- lofaszvanitt 7mo agoHowso? :)
- edelkas 7mo ago[dead]
- deleted 7mo ago[deleted]
- OuterVale 7mo agoUnsung is one of the best little blogs around. Well worth checking out the rest of the posts.
- ssivark 7mo agoCouldn't help riffing off on a tangent from the title (since the article is about diagramming tools)... Dylan Beattie has a thought-provoking presentation for anyone who believes that "plain text" is a simple / solid substrate for computing: "There's no such thing as plain text" https://www.slideshare.net/slideshow/theres-no-such-thing-as-plain-text-dylan-beattie/249952971 https://www.slideshare.net/slideshow/theres-no-such-thing-as... (you'll find many videos from different conferences)
- rmunn 7mo agoHaven't watched the videos yet, but from the slides, it looks like part of the issue he was talking about was encodings (there's a slide illustrating UTF-16LE ve UTF-16BE, for example). Thankfully, with UTF-8 becoming the default everywhere (so that you need a really good reason not to use it for any given document), we're back at "yes, there is such a thing as plain text" again. It has a much larger set of valid characters, but if you receive a text file without knowing its encoding, you can just assume it's UTF-8 and have a 99.7% chance of being right. FINALLY.
- wongarsu 7mo agoUntil you hit a CSV exported by Excel
- rmunn 7mo agoI should have said "a text file with no byte-order mark". I would hope that Excel's CSV export, if it's writing UTF-16, is writing a byte-order mark first (though I don't have any Excel-exported CSVs lying around right now to check). The byte-order mark is necessary for UTF-16 since it has big-endian and little-endian variants, but unnecessary (and actually harmful in a few situations) for UTF-8. So naturally, if you assume something is UTF-8 but the first few bytes you encounter are FF FE or FE FF (both of which are illegal in UTF-8) then instead of throwing an error saying "Hey, that's illegal UTF-8, buddy!" you should just reparse in UTF-16 (and you now know the correct byte order to use). In fact, you should read four bytes just to make sure you're not seeing FF FE 00 00, because that would indicate a UTF-32LE document. (Which indicates an ambiguity in UTF-16, that UTF-8 doesn't have. A UTF-16 document that begins with a null byte is likely to be misinterpreted as UTF-32LE). Before I go off on too much of a rabbit trail, I have two points I want to make: 1. Since UTF-8 should be the default assumption for any sensible software, a byte-order mark is not needed for UTF-8, but any non-UTF-8 encoding should use a byte-order mark. (And in fact needs a BOM, because both UTF-16 and UTF-32 have LE and BE variants). 2. Excel needs to fix its stupid CSV import/export defaults.
- 7mo ago
- nullhole 7mo agoI have a mixed opinion of unicode, but it's hard not to love the box-drawing / block-element chars.
- perilunar 7mo agoThe box-drawing characters pre-date unicode though: https://en.wikipedia.org/wiki/Code_page_437 https://en.wikipedia.org/wiki/Code_page_437
- dlcarrier 7mo agoFrom the title, I was not expecting a bunch of extended ASCII characters.
- Freak_NL 7mo agoThe article mentioned that the use of 'ASCII' within the context of those tools should not be seen as the limited character set ASCII. Personally, I would avoid mentioning ASCII at all. The title just talks of plain text though, and plain text usually means UTF-8 encoded text these days. Plain, as in conventional, standardised, portable, and editable with any text editor. I would be surprised if someone talked about plain text as being limited to just ASCII.
- benj111 7mo agoI would? Would an emoji count as plain text? What about right to left text? I have no idea how many editors handle that.
- suprjami 7mo agoThe list at the top could be longer: - https://asciiflow.com/ https://asciiflow.com/ - https://asciidraw.github.io/ https://asciidraw.github.io/ Anybody know more?
- snackbroken 7mo agoD2 https://d2lang.com/ https://d2lang.com/ added beta support for ASCII & Unicode output last year.
- suprjami 7mo agoThat would be interesting. I like D2 though the lack of control over the layout is a bit frustrating sometimes.
- 4k93n2 7mo agohttps://monosketch.io https://monosketch.io
- 1024kb 7mo agoI have a few more on my site under the bookmarks page. Link in bio.
- smusamashah 7mo agohttps://xosh.org/text-to-diagram https://xosh.org/text-to-diagram a list of lots of tools
- electroglyph 7mo agohow about a unicode art tool? https://electroglyph.github.io/atheriz_draw/ https://electroglyph.github.io/atheriz_draw/
- everybodyknows 7mo agohttps://github.com/TheoKVA/ascii-box-editor https://github.com/TheoKVA/ascii-box-editor A visual editor of UTF-8 BOX DRAWING characters, contrary to "ascii" in the name. No server, no installation: browser-side Javascript only.
- keyle 7mo agoI'm all for it, but it's dangerously mixing ASCII with the meaning of plain-text...
- eimrine 7mo agoWell, we are computer nerds, not the rock drawers.
- shevy-java 7mo agoText and text files are simple. I think this is their number #1 advantage. There are limitations though. Compare a database of .yml files to a database in a DBMS. I wrote a custom forum via ruby + yaml files. It also works. It also can not compete anywhere with e. g. rails/activerecord and so forth. Its sole advantage is simplicity. Everywhere else it loses without even a fight.
- draven 7mo agoAlso: M-x artist-mode in emacs.
- dwb 7mo agoPlain text is great as far as it goes, but when it comes to structure you start from zero for every file. There’s always someone getting wistful about ad-hoc combinations of venerable Unix tools to process “plain text”, and that’s fine when you’re in an ad-hoc situation, but it’s no substitute for a well-specified format.
- adityaathalye 7mo agoXML, JSON, YAML, RDF, EDN, LaTeX, OrgMode, Markdown... Plenty of plaintext, but structured information formats that are "yes, and". Yes, I can process them as lines of plain text, and I can do structured data transformations on them too, and there are clients (or readers) that know how to render them in WYSIWYG style.
- dwb 7mo agoIf that’s our definition of “plain text”, sure. I would still rather our tools were more advanced, such that printable and non-printable formats were on a more equal footing, though. I always process structured formats through something that understands the structure, if I can, so I feel that the only benefit I regularly get out of formats being printable is that I have to use tools that only cope with printable formats. The argument starts getting a bit circular for me.
- zzo38computer 7mo agoYes, I thought of what you mentioned too, and in my opinion, DER is a better format, and it is a binary format rather than text. (In my ideas of an operating system design, there is a structured binary format (similar to DER but different) used for most files and data, so that the tools (and the command shell) would be usable consistently with most of them; and if some need special handling, you can use other programs and functions to convert them and/or handle them in a way that can be interoperable.)
- adityaathalye 7mo agoHm, you made me think about non-printing characters as metadata, which is of course immediately lost on printing and therefore does not round trip between digital and printed versions. Many nonprinting characters imply some directive; line break (hard-wrap the text here, but this is not a paragraph), page break (let the rest of the page be blank, start the next paragraph overleaf), EOL (file over, bye bye), nonbreaking space (keep these two words together, always, till death do them part). This is out-of-band information spliced in-band (with the text corpus), which a computer program can "see", but a person can't.
- Joel11 7mo agoIt's good to see the plain text, it's been a while that people wanting them. So many users wants the Special fonts but in here simple is Special to eyes and Mind. As a developer I agree. Sometimes simplicity is more Special and powerful than complex formats.
- hsbauauvhabzb 7mo ago* L a u g h s i n u t f 1 6 *
- randomeel 7mo agoThat’s cool ! How did you do that ?
- hsbauauvhabzb 7mo agoManually, with spaces. Ironically each actual space took 3 spaces, which HN truncated to one space removing any concept of words. Technically this is incorrect because a real post would be 0x00 and not 0x20, but my point was even ‘basic’ text can be problematic if you’re not aware of encoding types, and it can really fukin bite if you’re not ready for it.
- deleted 7mo ago[deleted]
- alex1sa 7mo ago[dead]
- 2b3a51 7mo agoTangent to article: text character based charts for statistics. Decades ago I had an education version of MINITAB that ran under DOS and did scatter diagrams and dotplots and box and whisker plots from text characters (you could use pure text, I think proper ASCII or you could set an option to use those DOS drawing characters). The idea was to encourage initial data exploration before launching on formal statistical tests. Anyone know of a terminal program that can do proper dotplots?
- nxpnsv 7mo agoGnu plot dumb terminal mode?
- rbanffy 7mo agoThat’s possible as well. I wish common terminals (the kind that is shipped with the OS) would do ReGIS, Tektronix, or even sixel (yuck!).
- 2b3a51 7mo agoThanks to all posts above for engaging with my quest for minitab style text character dotplots! Below is an example of what I'm on about (artisan construction in Mousepad) and apologies to anyone on a narrow screen where the text mode is going to get jumbled. 0 . . . . . . . . . . 1 : .:.. .. . . 2 . ..:: .. --|-------|-------|-------|-------|-------|-------|-------|----- 32 40 48 56 64 72 80 88 The example is typed out from https://support.minitab.com/en-us/minitab/help-and-how-to/graphs/dotplot/before-you-start/example/ https://support.minitab.com/en-us/minitab/help-and-how-to/gr... The `plotrix` package for R looks hopeful (mentioned on one of the links kindly provided above) as it includes a 'minitab style dotplot' function.
- wonger_ 7mo agoThis stack overflow thread had a pretty good list of terminal plotting tools: https://stackoverflow.com/questions/123378/command-line-unix-ascii-based-charting-plotting-tool https://stackoverflow.com/questions/123378/command-line-unix... gnuplot, feedgnuplot, eplot, asciichart, bashplotlib, ervy, ttyplot, youplot, visidata And there's a lovely ASCII plot in the AWK book: https://dn790008.ca.archive.org/0/items/pdfy-MgN0H1joIoDVoIC7/The_AWK_Programming_Language.pdf#page=148 https://dn790008.ca.archive.org/0/items/pdfy-MgN0H1joIoDVoIC...
- TazeTSchnitzel 7mo ago> Fun to see a contemporary take on something that peaked between 1970s–1980s Maybe that was the peak, but you had some very good TUIs in the early 1990's for DOS apps, where Windows hadn't quite completely taken over yet, but you very likely had a VGA-compatible graphics card and monitor, meaning you had a good, high-resolution, crisp and configurable-font text mode available, and also likely had a mouse. This is the stuff I grew up with: QBASIC and EDIT.COM for example. Bisqwit has a cool video about how some apps from that era could have a proper mouse cursor, even: https://www.youtube.com/watch?v=7nlNQcKsj74 https://www.youtube.com/watch?v=7nlNQcKsj74
- safety1st 7mo agoThe peak of TUIs is now. Take a look at Omarchy, an entire operating system built around terminals and config files, it's nirvana. I can only imagine how much farther down this road things may go as we enter a world where the primary interface is conversation with the machine in text. I'm sure I'll get downvoted for that last part because Reddit -- (cough) I mean Hacker News - hates AI, but I'm genuinely excited for the future.
- user3939382 7mo agoI hope it’s inevitable. Most users’ computing workloads by far are text oriented. The terminal is capable of flexbox now. Current GUIs create massive complexity and power draw relative to their value. Over a long enough arc, economic inefficiency is doomed.
- zahlman 7mo ago> The terminal is capable of flexbox now. You mean like https://silvery.dev/examples/layout.html https://silvery.dev/examples/layout.html ? This is definitely not a UI development paradigm I would have expected to see.
- user3939382 7mo agoThat’s the tip of a conceivable iceberg but exactly. Also look at kitty graphics protocol. Look at the amount of engineering resources we pour into OS GUI toolkits and then browsers. Those layers of complexity aren’t there because we stood back and said, “given what we know in 2026 how should we design a GUI compositor?”. The majority of the stack is written how it is by archeological happenstance. One generation adds on top of the prior since the 60s. I’d say start from the terminal, fix the rendering limitations that drove the split from terminal and then to the browser. If we pin down efficient GUI, we could have machines that cover non graphics workloads which is the vast majority with solar and the equivalent of a 6502. The amount of energy wasted on modern stacks relative to the tasks being delivered is incalculable.
- 0x1da49 7mo ago[flagged]
- arter45 7mo agoI think the real limit of plain text is pretty obvious: you cannot embed pictures in it. It’s like SMS vs MMS or modern chat. With pure text, you can at best add a link to a picture (which could get rotten or inaccessible for other reasons), but you cannot directly graphical content.
- perilunar 7mo agoSure you can: data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH hhx4dbgYKAAA7 from:https://www.rfc-editor.org/rfc/rfc2397#section-4 https://www.rfc-editor.org/rfc/rfc2397#section-4
- eimrine 7mo agoYou cannot send your photo in color though.
- deleted 7mo ago[deleted]
- perilunar 7mo agoOf course you can. You can convert any image to base64.
- arter45 7mo agoYou can but it’s not part of a plaintext standard. You could certainly build a text editor which can decode a base64 string, but to transform that into a picture you need something implementing the GIF (or JPEG or PNG) specification, otherwise it’s just a binary blob.
- amelius 7mo agoPlain text is great, but if you're holding a hammer ...
- LePetitPrince 7mo ago[dead]
- FlyingSnake 7mo agoText is Lindy. It has withstood the test of time and it's as ubiquitous as SQL or TCP/IP. Reminds me of this decade old post (and discussion) by Graydon Hoare, "Always bet on text". [1]: https://news.ycombinator.com/item?id=8451271 https://news.ycombinator.com/item?id=8451271 [2]: https://graydon2.dreamwidth.org/193447.html https://graydon2.dreamwidth.org/193447.html
- kevinmgranger 7mo agoAre ASCII diagrams painful for screen reader users, though?
- hrtk 7mo agoHow could you forget draw.io
- rmunn 7mo agoBut draw.io doesn't produce text "drawings", it's a graphical drawing editor. Not the same thing at all.
- epistasis 7mo agoIt's fun to see a plaintext accounting view as the example... I just switched from QuickBooks to Beancount+Fava for my sole proprietorship, and couldn't be happier. I've added a text-based simple invoice system, a text-based vehicle mileage tracker, and have validators that ensure that every expense with a tax status has a document attached to it. It's far easier and faster to use than QuickBooks, I don't have to put up with ads, and with git + RFC3161 attestation of commits, I can prove I made additions when I said I made them, and there's no accidental erasures from lazy text edits, and it's a simple command to see exactly when each entry was made. All based on plain text at the core, but I've now added Fava extensions so that I can do it all in the browser when I want. If there was a TUI fava with graphs, great, but the web isn't so bad either. Now, let's see what my accountant thinks of this...
- aejm 7mo agoThis is really good inspiration for some of my plain text accounting projects! Could you please go into more detail about your RFC3161 attestation of commits? I'm assuming you're signing your commits with a gpg key to assert that it was in fact you who made the commit. Do you use an external timstamping service and an external ca authority, or do you build your own chains of trust? If you were asked to attest your accounting commits, what would that look like to the auditor?
- epistasis 7mo agoThe time stamp stuff is mostly a lark, because the bank statements and receipts are probably all that really matters, but it was fun! I use freetsa.org and OpenSSL on the git commit hash to tie that commit to a particular point in time. I also added the Bitcoin based opentimestamps-client time stamping, but even fewer auditors would believe that it's of any value... Edit: I only timestamp after account reconciliation right now, and will do it when I close the books for a year. The files for attestation get attached to the commit with a git note, and get added to a directory for easier browsing. An LLM can write scripts for this, probably from just copying and pasting this comment as direction. I installed them as git subcommands. Other CAs offer for-fee time stamp attestation, and I hear it may hold value in the EU, but here in the US it's only for fun, and for very small values of fun!
- nickjj 7mo agoPlain text is great. 20+ years of my notes are in plain text, facilitated with https://github.com/nickjj/notes https://github.com/nickjj/notes. Also been doing plain text invoicing for around 7 years with https://github.com/nickjj/invoice https://github.com/nickjj/invoice. There's also Plutus https://github.com/nickjj/plutus https://github.com/nickjj/plutus for income and expense tracking. Couldn't be happier. All I do now is export my bank's CSV files and import them into Plutus, a few minutes later my books are done after I align some of the categories. I've done 2 years of taxes with this now.
- dfedbeef 7mo agoPlain text has been around for thousands of years, it just wasn't digital.
- IAmBroom 7mo agoBut graphic "terminals" are oldest.
- mattbis 7mo agoThis and just use it instead of a .pdf.. stay libre make it work for all platforms of all ages and all over the world... no rtf nothing needs to be fancy a canonical .txt resource, is parseable and universal. Don't restrict your audience. For example: If a repo has a .txt backup of some changelog it's therefore not tied to whatever platform.. The repo is a living project and memory.. don't assume anything: ( ie if for some reason your a/c is gone... that information is not lost its saved forever... ) usually if I must reference a pdf it means a browser.. And often I don't want a browser running..
- 61j3t 7mo agoWhen you stop worrying about pixels and start focusing on the data structure, the friction between thought and execution just melts away
- imoverclocked 7mo agoDoes the community here consider HN as plaintext? Obviously, the site is html with hyperlinks etc ... but it's basically implementing a text interface that I can click on. In a cryptographic sense, html itself is plaintext since it is encoded as ascii/utf-8. However, the MIME type of text/plain is distinct from text/html to describe the html encoding of document style/structure information. A terminal is often considered plaintext but in reality there are escape sequences to encode meta-information which is otherwise unreadable to most humans. On the other end of the spectrum, there are images with a few words transcribed on a lot of social media platforms. To blur this line, recent(ish) mobile platforms recognize text embedded in images and make it selectable. Given this context, is text in an image without anything else considered plaintext? I guess my real question is, "where do we draw the line" for what we call plaintext, decades after the initial implementation.
- shepherdjerred 7mo agoHN is normal HTML, so I think that's fair to call 'plaintext'