Plaintext Productivity
plaintext-productivity.net
plaintext-productivity.net
With all these plain text posts surfacing regularly, I'd love for the lesser-known org markup (https://orgmode.org) to gain more adoption. It's a real power-house. Its Emacs origin may put some off, but it's plain text, so your content can be ingested/consumed by either regular text editors or any app focusing on specific user-journeys.
I built two org-powered apps for iOS myself:
There are other great ones out there:
Thanks to Karl Voit for driving org markup awareness outside of Emacs via Orgdown https://gitlab.com/publicvoit/orgdown. He's also got a great post showcasing org strengths at https://karl-voit.at/2017/09/23/orgmode-as-markup-only
Also there's a super comprehensive guide if you want to go all in on Emacs side of things. It's written in org itself http://doc.norang.ca/org-mode.org and exported to html http://doc.norang.ca/org-mode.html.
>Anybody using a simple text editor is very fast at adding markup for headings, font variations, and so forth. The previous section proved that other markup languages clearly fail in many cases.
Markdown is not quick to add markup with a simple text editor? Really?
Org mode has weird and nasty corners and multiple ways to do things too, they're just ignoring them: https://news.ycombinator.com/item?id=30523684
Then there's
>Org Mode Has Excellent Tool Support
No, it has a single tool's support and no spec (though it's in progress last I saw, which is great). Almost everything else compared in that page is superior here, having specs (even if multiple competing specs, e.g. commonmark vs github) and multiple implementations.
* Excellent outliner features, similar to those from OmniOutliner for example
* Great support for tables (including mini spreadsheets), links, footnotes / citations, tags / keywords and timestamps
* The ability to build interpreters that create views of one or several documents
The last feature looks weird and exotic, but it is super useful. For example a kanban is just a view that displays e.g. ongoing tasks and forthcoming deadlines harvested from your org files. Actually, Emacs already has this feature implemented as the function org-agenda. But you can build other equivalent views.
Maybe I am a magician of some kind, but my content is always mine, regardless of the file type I use.
For the sake of argument, let's say I have a floppy disk with a Vizawrite file on it, that I typed 30 years ago. There is no lock-in. I still can use that file.
First is the app lock-in, which perhaps hasn’t bitten you but not everyone is so fortunate, especially in a scenario the article describes, corporate environments where you can’t install arbitrary software onto the machine you use.
The other problem is corruption. I haven’t experienced this in a few years, but it’s certainly not unheard-of for a binary data file to experience corruption; often the only way to recover it is to perform surgery on it, which not everyone will have the tools and skills to do.
Plain text files are much safer in that regard.
The problem with corruption is solved by backups. It's a solved problem.
well, and checksums. otherwise you might not be aware of that bitrot. FEC would be ideal.
1) You can have corruption in files of any type. Text is no more robust to random bit flips. Pick a file format and there are often tools that can isolate the corruption to a small portion to recover everything else.
2) The solution to lock-in is not "let's make everything text", but "let's have open file formats". Many types of data, especially for project-management-like tools, aren't particularly well suited as plain text (or a markdown format). So many extra unnecessary parsing/regex steps have to be jumped through for the program to use it, and the sanitizing functions now have to be moved from code to the user's brain to not break things.
By all means, support open file formats and exporting functionality. But shoehorning -everything- into text sounds like some crazy mix of bikeshedding and worldbuilding. Why waste your time? Especially knowing MD will fall out of favor eventually, and a new format du jour will rise. What will you do then?
Erm, a single bitflip will ruin, at maximum, a single character, which probably has enough context around it to be easily manually repaired.
Not so pretty much any compressed, encrypted or binary format... either a large chunk of it gets undecodable or the whole thing is lost.
Hence the initial post. (Are we running in circles now?)
https://plain-text.co/#the-office-model-and-the-engineering-... https://plain-text.co/#two-revolutions-in-computing
It boils down to a tradeoff of learning your tools while retaining full control vs use apps that abstract away complexity by giving up control.
If your work needs some strict technical requisite (reproducibility for example, or any other of the -ilities in software engineering), you need to have the control to tweak your tools so that you ensure it (Engineering Model, plain text files), but mostly is not needed so you can get away with working in the Office Model (binary files)
The value of plain text with markup is that any of the tools @xenodium mentions above can work with data from any of the others. I use emacs/org to edit my data from BrainTool, I use Orgzly on the same file on my Android and its also part of my LogSeq digital knowledge garden.
However, that doesn't make me lose control over my content, if I don't use plain text files, which was my actual argument.
Edit: I'm not the OP
Ah yes. I get the Emacs part putting some folks off. Org markup is super capable and stands on its own merit. I’d love for it to be more independently recognised, spurring a rich and diverse ecosystem of org-powered tools (outside of Emacs).
I’m scratching my own itch for iOS but also taking feature requests along the way :) https://plainorg.com https://flathabits.com
Of course any number of notes systems allow one to do that, and I have my very own system of organisation that helps [0], but we ended up, at my partner’s suggestion, just saving individual .txt files in the folders containing the episodes.
[0]: https://johnnydecimal.com
Nothing new here of course, it’s what we all used to do when it was the only option. But it feels like it’s been so long since I just fired up TextEdit, typed the words, and File-SaveAs’d it in to a folder. It’s weirdly refreshing and works really well.
I noted that it was my partner’s suggestion because she’s been learning Markdown, and as an ex-professional-writer (medical/patient) is overjoyed that she doesn’t have to use Word. When we were looking for a solution she said, well why don’t we just save a file there. So simple that I’d missed it.
On the same page are mental/physical subheadings so a small bit of journalling takes place. I never look back at it, but it's there.
This beats all previous attempts at organisational systems. Obsidian has a great mobile app. Syncthing keeps them updated. Previous systems were Trello (perma loss of everything archived), big single plaintext file (soon becomes a heaving mess), paper (no search and easy for things to sink/not be surfaced). Taskwarrior, which was great for a long time, but tricky to sync and no additional features like journalling, swipe file creation, flashcards, search, mobile app (sync to cli env on Android was clunky). And surely more I'm forgetting.
Side benefits: all plaintext, whatever happens to obsidian. Graph view of all interconnected ideas. Easy resurfacing of old but relevant ideas through search and backlink sidebar. Could import my attempts at using vimwiki with zero conversion required. Much better UX than Vim. Great place to also write content, use wordcount, sprint, wordcount goal, calendar features etc.
For me the days of Vimwiki and org-mode are now numbered. Even most other note taking software tbh, for anyone OK with syncing their own stuff and figuring out a little bit of basic script syntax for the dynamic lists within the plaintext files.
Interesting, based on what do you generate these tasks? How does the dynamic list work in your use case?
We're thinking about building something similar for https://acreom.com as a plugin but likely easier to setup (no-code).
The tasks are generated as jobs come in, i.e. a checkbox line, I assigned ctrl+T to task edit, so I can add a due date. I make sure to add #freelance so it gets picked up by the query below, and displays in a list on my daily template (ctrl+shift+D for me) so whichever daily note I'm in I can see my tasks.
Then I have another for jobs to invoice, adding #inv to the line manually is simple because the tasks plugin lets you click through from the list, and another for "general" todos, which does accumulate, but not in a single file.
Example query (using community plugin "tasks"):
```tasks
not done
description includes #freelance
description does not include #inv
path includes journal
```
New version of OneNote (metro style) has been bitten by designers though like all good things in recent times. Also, it does not have customizable shortcut keys making formatting code snippets a non-trivial process.
Every page is a white board which no other tool does and that's where it's power is. Plaintext can't beat that.
I love pasting in screen clips and shots, and being able to extract text from them when I need to.
I also love arbitrary indentation and use that for structuring my notes. This is something that Markdown can't do, and I have yet to find any kind of markup-supporting text format that doesn't treat indented text as pre-formatted.
I dislike that newer versions force syncing with Office 365 and have reduced the file format flexibility of older versions, like saving the notebook on a network share, or exporting to an MHT file if one wants.
I still use the Office 2016 version and am hesitant to try newer versions again. I have numerous notebooks on many different PCs and want to coalesce them at some point, but am not comfortable putting them all on Office 365.
But for day to day note taking, it's the lowest friction tool I've found that comes closest to my preferences.
I have a directory with text files and images named like: 2022_03_20_1_short_description.txt or 2022_03_20_2_config_screenshot.png
The names are mostly to group images with related text files when I grep later.
I create the file at the start of each work day, write a few lines of TODO for the task I'm working on, and whenever I copy-paste something that seems relevant - I paste it there and leave it with a few empty lines as separator.
If image is better I screenshot only the relevant part and possibly add some notes with paint and save it in that directory.
When I investigate some error I paste stacktrace there. And when I find solution - I paste the link or the git commit or JIRA task or description.
If I do several unrelated things in the same day I sometimes create several files, but it doesn't matter that much.
It saved me A LOT of time. A quick grep and I have all the context of some error that last happened 8 months ago.
Grepping to find files by date is easy and if a more detailed document had to be generated, you have pandoc or Libreoffice to produce PDFs using those source data files.
For images, I take screenshots with the Snag-It software which automatically assigns a time-based filename to the screenshot and stores it in a central directory.
So, at the start, my text files and screenshots have basic filenames which are time-based.
Later-on, I'll create an index for the text files with a Google Doc; an index which is a basic list of the text files with some brief bullet-point comments describing each one.
Actually, for text files, I just describe it with a comma-delimited list of tags/titles per file.
So, gotta jump in here and say - I'm going thru the "Let's figure out Emacs, Org-Mode, Org-Roam - get my todo, calendar, files, notes all in one... somewhat coherent system". I've got my Emacs cheatsheets, and all that. I'm on the journey. But I can't help but think - some one really needs to do the UNIX->Next->MacOS of this. That is, figure out a solution that works, standardize it, make it easy.
I saw a guy made an Raspberry-Pi, with Emacs, & an e-ink display. When someone makes a "personal productivity device" - some sort of E-Ink Palm Pilot + Blackberry keyboard + Easy mode Emacs-org/notes/todo/calendar/rolodex, that syncs to your laptop, phone, refrigerator calendar... that's going to be huge.
The reason I am going through this journey is because I am treating it as a life-investment. Getting your personal productivity / information systems in order, getting that problem solved... for LIFE. It would be a huge win. So despite the pain, I'm sold on the benefits, have many people who have told me about the impact of org-mode etc on their life. So, I'm taking that at face value, trying to actually apply this advice to my own life (instead of reading about it, agreeing, and then taking 0 action on it). The irony of not prioritizing setting up a reliable TODO system is not lost on me... It's a daily laugh, as I Google search yet another Emacs package manager, or diagnose random Lisp errors - this programming language I have never used before, but this important tool requires me to know in order to... configure a note template. What.
I know there are historical reasons for the various keyboard shortcuts. But all these "arcane" (I know, "different") keyboard shortcuts for "Yank", "Buffers". Emacs keeps on opening windows. I can barely remember how to even save a file & quit. Don't worry - got Doom Emacs! I'm getting it, but still a whole 'nother set of "non standard" keyboard shortcuts.
I genuinely appreciate the various bloggers and Youtube videos out there, where people explain their system, walk you through installing & configuring stuff.
But I can't help to think. This system is so powerful. So many smart people working on it, making plug-ins for it, creating systems for it. Where is the smart person who can tie it together as a holistic system, make it EASY, and still be open source. Am I missing something? I'm thinking "Green" mode on the SLR camera. It works. If you want to tweak, you can experiment with aperture/shutter priority as you learn when/why to use it.
Ok, thanks for hearing out my Emacs rant. (as I go smoke a J, and go back to learning Emacs)
1. how to deal with old tasks (are they relevant anymore? should they be removed?). 2. connecting tasks to their related source and needed information to act
For the former, the accumulation of old stuff has consistently led to less and less usage of the system and as a result to a continuously decreasing trust in that system. Adopting a new solution has given the feeling of a better system with better chances to success; but it has mainly been about having a (temporarily) new clean inbox.
So maybe the way to go is to have a logrotate-like on your input file.
[1] On writing -- Stephen King, although I read it a very long time ago and would not be able to point to a specific page. [2] I searched the web but can't find the exact citation, and there is no search feature on the website.
A clean sheet is intimidating when you don't know where to start but is a hard requirement downstream once your chosen abstraction starts to break under the weight.
Another tool to look at is Logseq [3], which is essentially an outliner (supports both MarkDown and Org syntax), but supports a rather simplistic TODO management system. The benefit here is exactly what you describe—as you work in Logseq, you can create Todos, thereby connecting the task to the related source and any context that surrounds the todo. Furthermore, Logseq also allows for queries [4], allowing you to query your "knowledge graph", which you can embed in other pages.
Both Obsidian and Logseq store your files locally, so they can be easily version-controlled (In fact, Logseq routines commits your files for you).
[1] https://news.ycombinator.com/item?id=30747131
[2] https://github.com/blacksmithgu/obsidian-dataview
[4] https://logseq.github.io/#/page/Queries
[Edited for formatting]
Main difference for me was that Obsidian can be an outliner or general markdown editor. Logseq very focused on the former, and atomising your notes, but in reality this is rarely useful. In my case at least, especially when writing long form content. Search is fast and complete in obsidian, so there's very little benefit to recalling and embedding single lines from entire vault, it's just a resource sink in my case.
Monthly folders so basically with every new month, some things are not carried-over but are still there and can be referenced if necessary.
So basically, a new month helps with reducing the accumulation of old stuff which bogs down a system.
I actually tried simply using VSCode for a while with just a plain text "todo.txt", "schedule.txt" and "projects.txt", but that didn’t scale very well (also didn't really get things like autocomplete to work properly).
If anyone’s interested, we decided to see if we can actually solve this ourselves and are building an editor/IDE from scratch now, but specifically for "todo.txt" (https://thymer.com).
I built a browser based solution because I spend most of my day in the browser anyway, so I just keep Nolific pinned in a tab.
It’s free and open source if you wanna check it out.
(though I am thrilled that it is in progress! https://orgmode.org/worg/dev/org-syntax.html )
The learning curve exists of course, but it's not that hard if you have a bit of IT background and in any case it pay back so much that's absolutely worth the initial "capex"...
Org mode has an extremely shallow learning curve. I literally watched Carsten Dominik's Google Tech Talk and was immediately productive. Every time I wanted to do more, the information was easy to find.
Getting used to Emacs - well sure ;-)
1. You specify subheadings, or “outline format,” with asterisks at the start of a line, with 1 asterisk (*) per level.
2. Use no asterisk for ultimate high level. If you have no asterisks at all at the beginning of a line in your text file, it’s literally a plain text file, not really org mode at all.
3. One asterisk (*) at the start of a line for top level beneath that.
4. Two asterisks (**) at the start of a line for the level beneath that - call it sub top level.
5. Three asterisks(***) at the start of a line for the level beneath sub top level…
6. You get it: add asterisks at the start of a line, one more than is present in the asterisk level above yours, to go “deeper” into subsections. If you want to “reset” and start at top level again, use 1 asterisk or *. To reset to sub top level, use two asterisks or **…
7. Now, to navigate between these levels, press tab to expand, and tab again to close. Typically your view will only be of “top level” headings.
8. You can use orgmode in Emacs (assumed default, as that's where it originated) or you can just as easily use it in vim after installing an extension. In vim, where I typically use it, press zR to expand everything, if you’d rather default to a view where everything is expanded and you contract stuff to make it more navigable.
I don’t use any org functionality outside this, just this, and it’s been a godsend.
I have got to the point I just use the reminders app in apple ecosystem. Notes go in the notes app. Things get deleted when done or disinterest kicks in. Shortcuts fills up regular tasks for me.
I'll take that set of features over your self-imposed compromises.
I closed over 23,000 tasks so far with it while managing a full time job and a family.
I've probably closed a mega-zillion (1) tasks from 1980ish onward using my hyper-minimalist approach, so, I think both styles can work
(1: guestimated, in approx 50ms. lol)
I have a base.md file and when I run personal init will open a new file for 'today' using base.md
I can also create a post/note/idea even mind map using markdown.
I've been using plain text for about 3 years, totally recommend it.
bonus tip, I use grep to find content in my files. and yes, I have a personal backup command :D
one thing I love about having a plaintext bias when working is that many opportunities arise to design ad hoc DSLs, as I need them. when they begin to feel like a net win
its also fairly easy to start blurring the lines between text notes and working code, esp with shell scripts and langs like Python
Simplicity.
If "simple" text is all you need to fulfill a certain goal, just stop there.
Any system should be as complex as absolutely necessary, not a shred more.
And yes, plain text is good enough for a very many usecases.
KISS people, KISS ;)
KISS doesn't mean that you can't have nice features, it means to have nice features with meaningful complexity
Just as an example as a Hebrew speaker who regularly uses math - MD editors that support both RTL and math rendering are difficult to find. And that's squarely inside the domain of a "knowledge worker".
Jesus, I thought it was just me and my long-time Apple bias (as a person who grudgingly uses Windows a lot of the time)
Maybe we could expand Unicode based on lessons learned from Markdown/typesetting & the formatting characters could be added as non-printing characters. Visibility could be toggled with other whitespace characters.
> cults... programmers
I've been coding for 20+ years and have yet to see any correlation between programmers and any cult (cargo or otherwise... ok maybe cargo SOMEtimes, but certainly nothing else)
Thanks for mentioning this, I hadn't heard about it before, and it seems like a great practice.