Just use post-it notes as a task stack. Push and Pop as distractions come and go. Affirm to yourself that you are a productive and loved human being and not a biological IRQ handler.
I've always done this. My coworkers have been frustrated with me in the past for asking them to write things down, because some of them overestimate my ability to listen to them speak for 5-10 minutes and remember every detail. It's very hard to forget what is written down.
Recently, I neglected to write down my thinking and progress for a week, and I was at a loss for where to begin the following Monday. Keeping a work journal (in my case, a linear text document with an entry for each day) is the most important productivity habit I have.
I write it as a prose. Mostly because that's the form I enjoy the most to write, and also because it's mostly about writing it more than reading it later on
Somewhat OT, but tangentially related: One of my clients likes to tell me his work requirements by telling me long-winded stories about how he came up with an idea, what exactly happened, etc. that was useful at first but became extremely wasteful of time as years passed. I tried typing down notes while he talked, but it became too hard to write useful ones.
At some point, I resorted to keeping an audio recording of the whole meeting just to make sure I have something to come back to, in case my notes fail me.
I wouldn't do this for everything, but it helped me realize that an audio/video log like a dashcam video can work for certain scenarios.
Lovely post. I do something similar where I write blog posts for myself as I solve a problem. Something like a how-to guide before I actually know how to do it. Then I cite sources as I find them. When I finally solve the issue or create "the thing", I revisit the doc and either publish it internally, or keep it in my archives.
This really became a habit after reading Writing to Learn by William Zinsser. I recommend this book to everyone and their grandmother these days.
"Writing enables us to find out what we know—and what we don’t know—about whatever we’re trying to learn."
I have been doing this for years. Every morning, I create a new Markdown file with the day's date, copy the previous day's content into it, and edit it. Mine has (for now) the following sections: Morning checklist, Todo, Done, and Meeting Notes.
The morning checklist consists of things like checking email, checking Teams, skimming the team's handover queue, logging into various things, etc.
Todo is a stack of things I can/should tackle. Most important ones to the top. I limit it to 15 items, no matter what. But realistically, I typically only interact with about the top 5 99% of the time.
Done gets wiped every morning and I add things to it as I do them. Things like, "emailed Joe Schmo for 3rd time to ask for ETA", or "helped Fred troubleshoot the frobnitz." Little things that I would totally forget about but cumulatively end up taking a huge chunk of the day. I've never had a boss that expressed a concern, but I think of it as my primary defense if anyone accuses me of slacking off all day. (Maybe it's just to convince myself...)
Each meeting I go to gets its own section for the day. If the content was important enough to save into my second brain[1], I clean it up and transfer it over there at the end of the day, or the beginning of the next day at worst.
Any complex investigation or rabbit hole gets its own section as well. It's astonishingly difficult for me to actually reason about any complex system or design without writing it out and actually describing it to myself. I envy those who can just "see" it all at once in their mind's eye. If ends up being important enough to save, I will clean it up and share it with the team and/or dump it into my personal wiki.
Thanks for the great blog post, I could feel the frustration of not getting something to work, and the anxiety of feeling like I'm under performing. I've added you to my RSS reader now. :)
I've started to use index cards to write down daily tasks and I'll switch over to obsidian if I find myself asking the same question more than once. I think for me the process of writing something down slows my mind enough to let me focus on it.
I like @ZXoomerCretin's idea of keeping a running document of what I do each day. I think it would make anual review time a lot easier.
Dynamic todo list where things move up and down freely
remarkable tablet where I watch lectures and write notes (writing things down slows my mind and focuses as you say)
Daily
Weekly
Fortnightly
Monthly
Text files for spaced repetition, if I get to one and I have forgotten something then it’s moved up, if I feel like I know something it’s moved down
Longer memories are stored by topic:
Memory (working memory)
Platform
Operations
Zany schemes
Non-AT
… + many more
Each is a hierarchy, platform is some 20 categories each with 10ish sub categories
It’s actually hosed on my NAS, tailscale connects all my devices so I can edit and view anywhere
I look forward to the day I can query and edit this with thought
Yes! Obsidian with daily note plugin and templates makes it really easy to build a quick list of things and automatically link to yesterday’s notes. A little extra time with templates and some custom js and you can make it a single key combo to copy the notes to paste buffer for sharing in slack standup thread.
Also, set up a praise folder and take screenshots every time somebody says something nice about the work you’re doing. You can automate documenting the context around it, too with quick add
Do you all pay for obsidian? Subscriptions rub me the wrong way for whatever reason and it was enough that I didn't want to pay so I use something else.
I'm using the free version synchronized with Syncthing, works great for just myself. Have a couple plugins I built for my own workflow. The good thing is that I can jump to any other markdown app if I want to
(Full disclosure - I’m speaking from a place of privilege where I can afford the subscription cost of Obsidian)
I hear you on subscriptions rubbing you the wrong way. Hear me out, though. This is a bootstrapped team that builds and supports apps that empower you, the individual. Your data resides in plaintext and you can use your own sync server.
Not everything needs to be a subscription, but I don’t mind paying a few dollars per month to support the team.
If you're interested in an open-source, free equivalent, check out VSCodium (open-source version of VSCode), and FOAM (VSCode plugin - https://foambubble.github.io/foam/). In a new project, create a `docs/` folder, and start with `docs/notes.md`. When you want to branch out to other files & links, you can type [[MyTopic]] and FOAM will automatically create MyTopic.md, and will allow you to click on the link and navigate to it. Later, if you want to publish your notes as an HTML site, you can run `mkdocs` on the `docs/` folder, and it'll create a website from your notes. This MkDocs plugin enables the crosslinks in HTML: https://github.com/Jackiexiao/mkdocs-roamlinks-plugin. Good luck!
I did pay to support their development[1] early on. I've been an obsidian user since early 2020 and I had to roll my own sync solution at the time. At the time I was experimenting with a lot of other PKIM/Note apps and Obsidian was the only one that didn't do proprietary storage format and really honored the "minimal but trivial to extend in powerful ways" philosophy that I value.
> Subscriptions rub me the wrong way for whatever reason
I can understand that. Software development is hard and we are _long_ past the days where software was static. In some ways, I miss buying a computer that didn't expect an internet connection to constantly self-update. On the other hand, though, paying a few bucks a month so make sure the app is updated to take advantage of new OS features and generally keep up with device capabilities is worth it for me.
If there was some 2-5$/month option to support obsidian development I'd consider it. Yes, I know their cheapest sync plan is $4/month but it's only good for 1 gig of data and my biggest vault grows by that much every year or two... hence using SyncThing on a cheap VPS :).
I keep a stack. Whenever I am interrupted, I push a task onto the stack. When I finish a task, I pop it from the stack. Each task has an associated journal file. Sometimes I reorder the stack.
I wrote myself a python cli tool that manages the stack by updating a sqlite database, and one of the commands creates a text file associated with the task (if it doesn't already exist) and opens it in Emacs. The text files are stored in a hard-coded directory and an anacron job does a git commit once a day.
I can tell what I worked on each day by querying the git commit history, and I can grep the entire directory for keywords.
It's a little janky but it works pretty well for me.
Ahh, I was expecting "journal" to refer to a physical book for some reason!
This makes a lot of sense. Why not simply store the task with the sqlite database? I'm assuming ease of editing + the ability to manage the stack separately from the log of text entries, which presumably need no maintenance nor will ever be deleted?
Pretty much what you said, yeah. I thought that a git repo of text files was easier to work with then storing them as blobs inside sqlite.
I do insert completed tasks into a "completed task" append-only table when I pop them off the stack, so I do have a record of completed tasks in sqlite. (I find that useful for remembering what I did recently for standups and 1:1's)
This is pretty similar workflow to mine. I have a sideproject that implements it in a terminal that's been sitting on a shelf for awhile, maybe I should pick that one back up
Similar workflow, except I have 3 lists: TODO, Pending and Done.
"TODO" is actionable items. It's a reorderable stack of work I need to do. Same: interruption pushes a task to the stack, when I finish a task I pop it from the stack, etc. So I always know what to do next.
"Pending" is an unordered list of things I'm awaiting. Say, I asked someone to do something, and they promised they'd get back to me in a few hours (or "by July 20"). I occasionally scan this list to see if some of the items got resolved and I need to continue working in those areas because I'm unblocked.
"Done" is a list of items I completed for the day, all finished items go there. I then copy the entire list to the time tracker (for the PMs) at the end of the day.
However, I organize files by day, not by task. Each day I create a new file for the day by copying the lists of the previous day's file minus the DONE list. I don't modify lists for previous days, so it's kind of an append-only log so I can see what was the state for any particular day. 1 file per day is easy to see as a whole as it mostly fits in one screen (and inside my working memory). I use plain text files because I found it much simpler to use, I don't have to install any software, it just works, and it's easily searchable.
I've been using this system for the last 6 years now and it served me well.
> However, I organize files by day, not by task. Each day I create a new file for the day by copying the lists of the previous day's file minus the DONE list. I don't modify lists for previous days, so it's kind of an append-only log so I can see what was the state for any particular day. 1 file per day is easy to see as a whole as it mostly fits in one screen (and inside my working memory). I use plain text files because I found it much simpler to use, I don't have to install any software, it just works, and it's easily searchable.
For my working files I use a similar system except I separate at least Months, often Weeks, and sometimes Days into subheadings for easy time tracking of tasks on various time partitions.
So when I need to start a new heading for a new day, I just move all the incomplete TODO items into it, similar to you moving them into a new file.
Occasionally I manually archive the completed tasks into files by year with headings by month only when I no longer need their full granularity.
I started this a few months ago and find that my TODO grows faster than it depletes. My TODO items are both professional items (i.e. implement feature x) and personal (i.e. fix bike chain). The list is items that will take some non-trivial effort.
I now find that when I have a moment to do something, I pick it off of the TODO list and complete it. Prior to this technique, I did not have a list of this nature and some items never got completed.
I feel incredibly productive with my current setup. However, I don't feel as though my previous system was unproductive and am concerned that I'm "spinning my wheels" by feeling like I need to complete these tasks that went unfinished before.
Have you experienced this? Do you know how to best think about what is optimal?
Still a Linux noob, but I'm recently learning that you can do simple things like this in bash and the fact that it just... works is incredible. Thanks for the suggestion, I think I'll try this one
Do you have them publicly available somewhere? I'd be interested in that, especially your `next` function telling you which to-do is coming up next without you having to look at _all_ tasks again.
I loved this idea ! I decided to develop a cli that reproduces these commands here for those interested: https://github.com/sahbic/todo-cli
It can synchronize tasks on github, and I can use a telegram bot to list and add tasks to the list from my mobile phone.
Yes, stack is much better than long-long log. After some time you're log becomes too big and if it contains some points you want to return to, then they are just lost. And if you lose something in it you stop trusting it and do not use it. At least this is my story.
I do work journaling too, but they're simply part of my journaling routine which encompasses much more than just a work log.
Primarily I use work log to document problems I am having, keeping track of contexts such as what page I last read, and keeping track of my time. Timestamping is a very useful tool to fight procrastination.
In other part of my life, I use journals for personal development and productivity in general, like writing down my problems and thinking about them. I often stumbled upon changes that I could implement or try. This allows me to achieve things that I haven't achieved before, such as putting actual effort in learning electronics. Daily habits and action items are tracked, including my prediction of how an action goes and what is the actual outcome.
So yeah, journaling is a very good practice. It doesn't seem to matter much how you use them, just that you use them. It's very good at stopping your ruminating and you can actually move forward with your thoughts.
I just finished a project where I was in the same situation. Stuck, I ended up in the same place every night that I started at. Began writing down a plan as detailed as I could, made a plan for every day what I wanted to achieve and maintained that to the end of the project. Got me out of a slump.
Wonderfully written piece. I love how it builds up that idea of finally making progress, “seeing the matrix”, and then:
> It’s Mitch, your PM. He’s asking the url for a doc he wrote
Boy that’s too real. Really reminds me of the comic from a decade ago about programmer focus [1].
But welcome to the world of Note taking, I agree it’s like a superpower once you develop the habit. Obsidian is fantastic, but even daily markdown notes are great. The whole “second brain” idea hasn’t panned out for me, but a hotkey to jump to today’s note, and another insert the current time has been a mainstay of my workflow for years now.
What finally got this to stick for me was abandoning all notion of structure and organization (and formal concepts like “logging” and “journaling”) and optimizing fully for capture over retrieval, then relying on search tools and proximity for the latter.
I have the OneNote icon in the notification area configured to create a new quick note and use it liberally. Occasionally I look through all the pages, especially the recent ones, aggregate and reorganize some, move others to an “archive” tab, and that’s it.
The faintest - and most disorganized - ink is more powerful than the strongest memory.
It took me a couple years to realize this too. For the past five years I abandoned all structure. I use a literal log file. Chronological from top to bottom, with paragraph breaks for each workday. Higher than necessary verbosity, no points taken away for spelling or grammar mistakes.
I basically do this, too. One big text file. My twist that makes it work for me is a slightly modified text editor that I only use to edit this file.
That way I’ve got a dedicated dock icon and context just for writing notes, but no other overhead. It’s important to me that it not feel like a product, and search works effortlessly (although subject to typo misses).
My only tweak on the text editor is a shortcut to insert a timestamp and a chunk of new lines, which I do periodically so I can separate moments in time and see what I was working on when, how I fixed something, etc.
I used obsidian for a while, but for my purposes it felt like work to organize and get “right”. I ended up writing a script to join all the files into one.
I've also been doing this for ~30 years. My current job's journal is 17,581 lines long. It's just a file I edit in screen (so I can attach to it from multiple machines) with a line with the date on it and then a sentence for every thing I've done that day.
It is super helpful when we notice something strange has been going on since a specific date. I give my coworkers access to it and we will regularly refer back to it to try to figure out what was going on on a particular date. I also use it monthly to summarize for my 1:1 meeting with my boss.
I also have a Kindle Scribe e-notebook that I use for my daily todo list. The writing experience with the Kindle is very good, in that it's very paper like, but the access and retrieval is pretty meh. I described it to my coworkers as: It's exactly like paper, only more expensive. I'm basically doing bullet journaling of my tasks, things I need to circle back with coworkers about, and stuff to chat about over lunch or shows people have recommended.
I use something like this too, I will say it's helpful to have some simple command to append text to it so you can do it automatically, and then an extra little bit so if it's your first append of the day it adds the date. Sometimes I know something happened on a date and if you're just using paragraph breaks to separate it's harder to find but if you know it was related to this meeting on that date a few months ago you can go straight to it.
This is the way. I’ve used zettelkasten, which is similar philosophy. Dump a thought and tag it for retrieval later. I prefer making this work with simple files and markdown. I have a colleague who uses email drafts well. My problem with OneNote and similar is the bloat of it. But, having images alongside text, when needed, is super nice.
I’ve found a lot of success going one step further giving up on retrieval all together. I use either a new text file every time (which I never open again) or a physical notebook page (which I never refer back to). I get so much value from the act of writing itself.
Same. I just bought a scanner which I intend to use to scan and OCR my notes so that I can finally shred the mountain of paper I have. But I know I won't read the digital copy either so I'm not sure why I'm bothering. I guess it's the next step to putting it completely out of mind.
That's not a terrible idea. The OCR is struggling with my chicken scratch, but maybe ChatGPT can read the image directly. Might try one day. I was reading some of my notes...and it's mostly garbage, not sure it's even worth doing.
> abandoning all notion of structure and organization ... optimizing fully for capture over retrieval, then relying on search tools and proximity
I did this too - obsidian's daily note feature is fantastic, and you can extract out pages from it if you want/need to dedicate a document for a specific thing. Since it's just markdown, search is quick - and being able to use regex if I need to is awesome. The graph view, showing connections between notes is great if you create notes on specific subjects, and link them together, or pull sections out to explain more in depth - but it's not really that necessary unless you're building your own knowledgebase, which like all documentation suffers from rot over time.
As long as your note-ing tool supports a good enough search that you can find things again, then I think it doesn't really matter what you use - as you said, writing it down is the important part.
i never read the change logs, so just found out the concept of daily notes it looks pretty cool and might be what i need. Do you use any other templates?
I decided to use ChatGPT as my journal when they made it so they wouldn't be training on my data. Was talking to it all the time anyway, now I can pull the export whenever and just vectorize the whole thing... timestamps and all.
I use the Obsidian TimeStamper plugin with a nice shortcut (Ctrl + .), and then just have an append-only log of thoughts that each start with a timestamp on its own line. I'll throw in a tag or two if I'm motivated (#tickets/DEV-1234) and create a new file every month (e.g. 2024-07).
It makes it very easy and fast to just switch to Obsidian and do a brain dump before lunch / end of day, or any time a thought hits me.
I’ve shared this before here. I actually keep a timestamp log of work I do. I used to do it by hand on my journal and while I still prefer it I ultimately found the benefit of having searchable text files that are integrated into my work management to be too much of a benefit to ignore.
Been using obsidian since it launched and my workflow is to always have the window open taking a thin column on the left of my screen and whatever I’m working on takes up the rest of the screen (Yey for fancyzones in windows powertoys).
As I work I just stream my thoughts into the file. I have a shortcut, ctrl-alt-m, that inserts the timestamp as `hh:mm:ss`. I hit it, and start typing. I paste screenshots, code snippets, as I go along. It’s godsend when I’ve gone far along enough and I need to reference something. Esp given that I work on security tickets and I’m constantly triaging reports that are unclear or require digging into layers of source code to find where they come from.
One important step to note if you ever try this out: if you have 30 seconds before you jump on to an interruption, try to build the discipline of throwing in a few words saying what you need to do when you return. Even with all the historical context it can take some thinking to recall what your next step should be.
In fact, if you don’t like journaling just do this last step instead. I stole the concept from GTD’s next actions and it works.
I use GitHub Issues threads for this and it works amazingly well.
Any task I'm working on has a GitHub issue - in a public repo for my open source work, or a private repo for other tasks (including personal research).
As I figure things out, I add comments. These might have copy pasted fragments of code, links to things I found useful, quoted chunks of text, screenshots or references to other issues.
I often end up with dozens of comments on an issue, all from me. They provide a detailed record of my process and also mean that if I get interrupted or switch to something else I can quickly pick up where I left off.
I tried following this idea from simon (first via discord channels) about 8-9 months ago and now zulip, I used zulip "streams" as the "github issue" here. Worked very nicely for me.
I use it for everything and not only work journal, this creates a small problem.Since I dump both future references and worklogs, and I have ~50 channels, it's very easy to not get back to things and only get back to it when needed(which is the idea mentioned by OP). It seems like a feature than a bug at first but after capture, one round of review after some time interval really helps. It took a while but slowly seeing the benefits.
For that I plan to write some bot to re-organize the worklogs and the reference/other things dump to my own email at the end of the week and then I can create something like https://simonwillison.net/tags/weeknotes/ for myself(private) to go though at the end of the week. I think it would be perfect for me.
That's interesting, but aren't you concerned about using a proprietary service for this? I would hesitate to be at the mercy of a corporation for such a personal workflow.
I do worry about that. I've been meaning to setup an automated export of my issues to protect against that situation.
My protection for now is nepotism: I know enough people at GitHub that I'm confident I could use back channels to recover my account if I ever need to.
The benefit of journaling is not just reentry, but that you begin to solidify the mental model into a concrete branching of possibilities that is tightly coupled to the specific problem. Your work becomes traversal and mutation of this tree. Several benefits accrue: you begin to see gaps in the tree, and can fill them in. You begin to have confidence in your mental model, recovering the time you used to spend going over the same nodes again and again in a haphazard way. In distributed systems in particular, the work is often detailed, manual, error prone and high latency - with a solid mental model you can get through a checklist of steps with minimum difficulty and high confidence that you didn't miss anything. This ability to take something abstract and make it more concrete on the fly is a critical skill.
Perhaps the greatest barrier to using it is akin to envy. We see others who apparently do this without written materials, in their head. I think we see this as evidence of intellectual superiority and harbor the doubt that using an aid like a journal means we are somehow lacking in skill or ability. This is wrong. Using an aid to map out complex problems isn't a failure, it's essential, especially for problems in systems you've never used before. Over time you may yourself build up your expertise such that you no longer need the aid, but that doesn't signal anything about your intelligence or ability either, only your experience.
> Perhaps the greatest barrier to using it is akin to envy. We see others who apparently do this without written materials, in their head. I think we see this as evidence of intellectual superiority and harbor the doubt that using an aid like a journal means we are somehow lacking in skill or ability.
To add to your "this is wrong": These others may have themselves solved the problems we are now trying to solve, likely even using a journal. They no longer need a journal since they know how to navigate it, and it appears as superior to us.
I mitigate this "problem" somewhat by taking pride in specialized yet (hopefully) readable notations and sometimes even creative tool usage. Like using a project planning tool with a Gantt chart feature to speed up a boot process with many dependencies.
Of course, sometimes an existing tool or notation used for its original purpose is what you need. Maybe manually remove the stuff that doesn't matter.
This was the biggest revelation in grad school for me, I think.
The professors were in fact not gods of problem solving, they just had the answers. Not just of the problems they brought along (obviously). But also of the handful of problems we’d tend to invent. Of course, if you really catch them flat-footed, they can provide circumspect and sagely advice, and then quickly check Wikipedia to see if anyone has solved your problem.
I’ve been seriously considering using Logseq for this reason.
When I first started with Obsidian I used it that way, but the more I put in it the more I started organizing everything. It became less of a journal and more of a repository for long form stuff.
I’m thinking about using both just so I have a dedicated tool just for the journaling side of things.
I use different editors for different purposes, e.g., Obsidian for long form and planning, OneNote for meetings.
I wouldn't overthink it, though, and just use the simplest tools available. I use Sublime Text 3 with a few shortcuts to add the current timestamp, etc. and log everything in a long file. I was too ambitious in the past and wanted to learn how to use Emacs for everything, but it just held me back, and I ended up without any notes.
I usually don't move notes to and from OneNote. I tried this Obsydian importer, and it is OK for my meeting notes in terms of formatting. However, it has a bug that strips slashes from page titles, which is a bit of an issue for me because I always add dates to titles (e.g., 7/13/2024).
With a few good examples, maybe some LLM could help you with reformatting?
I use Emacs Org Mode with Org Roam for journaling. I’ve customized it extensively to fit my workflow, but there is a risk. Unlike paper, in Emacs there’s a potential distraction lurking around every thought, every entry, even every keystone. I’ve tried going to paper many times to mitigate the risk, but it never sticks. I’m too far down the hole and habituated to change. But if I were starting over, I would choose paper and stay with it. When journaling, you want no distractions. Nothing beats paper.
Love Logseq. It’s the best model Ive found for how I want to take notes. I used to get analysis paralysis managing structure or thinking about when to split off a new note. But with Logseq, you just write linearly and the hashtags take care of all that for you while making discovery a great experience.
Same here. I began using Obsidian when looking for something to drop my collection of Markdown notes into, which was somewhat of an improvement due to the quick search, tags and links, but not life-changing. I tried the Kanban plugin but gave up after a while. Then I read about the MOC concept[0] and started with topic-based index pages using the `dataview` plugin for generating lists of backlinks. Haven't looked back (yet)!
You could also create an index of MOC pages with the same plugin and making sure each MOC have a `#moc` tag, for example by using templates. Then write a query that lists all pages with the `#moc` tag.
For pure TODO lists, I'm a happy user of Taskwarrior since more than a decade.
I write a lot of notes in fact I write more than I read. It helps. However I have some issues:
1. How much commentary should I write? I try to write not too many notes because I write code, and some say code should be self-documenting. So it's the same old question of how many comments should there be along the code.
2. How do I retrieve a note I've written earlier? I can use tags and search for them but it is not easy to come up with a perfect tag which I would remember later.
3. I have so many notes and by now many of them are out-of-date. I don't want to spend time updating my notes. But if I don't they can become misleading.
There needs to be a balance between "Just do it" and "Write about it". I'm not sure I have the correct balance between those two.
I can see an alternate approach which would be a FORUM where co-workers discuss what they are doing or plan to, or have done . But there too the retrieval might be a problem. However the FORUM-tool would automatically keep track of when something was written and by whom. NOTE: You might benefit from other people's notes just as you can from your own.
It is just folders and markdown so it is ultra portable, but the obsidian editor has tons of useful features like a graph view, autolinking, and a plugin in for anything you can think of.
There are tons of YouTube videos and articles describing different organizing systems and ways to use it.
I like Obsidian, but plain text continues to reign supreme. I prefer nvAlt or my programmers editor, or if on a team, whatever the company provides (e.g. Jira). The embarrassment of options is actually a key problem in itself, since if you do not commit to one, you find your notes spread across various files, tools, and services, totally disjoint in a way that is impossible to work with and difficult to undo.
The ideal tool, which I don't think exists, would combine the immediacy and locality of nvAlt and bidirectionally map to something like Jira for sharing, distributed as a browser plugin and/or a simple server component with local write access.
> you find your notes spread across various files, tools, and services
That is a problem I've experienced too. Therefore I currently write my comments in plain text in the IDE I am using (WebStorm), which saves them as text-files.
I used OneNote for some time but I realized there is a lock-in because it saves its notes in its proprietary format. And now it seems its content can only be saved online on Microsoft servers.
On the other hand if there was a clear rationale as to which type of notes belong to which tool then using multiple tools can actually help you find your note later.
For example: Use your fridge-door for post-it-notes about what food we need more of.
This may have something to do with the "Memory Palace" -techniques. You can remember things better when you can associate a path to finding them. Food? I must write a note about the food. Where should I save it? Preferably close to the fridge, because that is where most food is.
Here's a trick I am using to write my coding-notes: I actually write and save them in files with .js -extension. I can have multiple such files for different aspects of notes. I can write notes about my app specification in one file and code-notes in another file, and what was done and what remains to be done in yet another file.
That means my notes are comments in syntactically valid JavaScript files (which exists only to store such notes).
Now I can use the Expand/Collapse feature of the IDE to collapse all comments to their first line, which is the title of the note.
I can also save real JavaScript functions within the same file and have them syntax-highlighted, so I know the code-examples are valid JavaScript.
I also use a WebStorm macro to generate tags based on current time and/or date. Saving them with the note allows me to refer to that tag from other notes. A bit like hyperlinking, but for text-files.
Obsidian vaults are just folders full of a bunch of Markdown files with a dotfolder that has some JSON configuration files in it. You can probably put images in them, too (I haven't needed to bother yet).
I'm not sure how you can get more plain-text than that.
Keep trying. Try different methods. What works for me debugging and refactoring distributed systems may not work for you. The thing I tend to drive toward is a single page mind-map-like artifact that is monotonically increasing in density with a focus on system-of-record and data flow. I tend to keep notes about individual tech and important systems in whatever tools are handy, either locally or in a form that are accessible to the team. Often this takes the form of a JIRA page per topic, or an nvAlt note per topic. Tickets aren't great for this because they are ephemeral. These notes are where code snippets, error messages, anything searchable, go. I have something like the Zettlekasten[1] method in the back of my mind when deciding on scope of these support notes. However I may also start from a simple local text file, not committed to the repository, or even attached as a note to a ticket or other ephemeral trigger. But the thing that ties it all together, for me, is that mind map. Once I have that I can truly reason about the system.
> 2. How do I retrieve a note I've written earlier? I can use tags and search for them but it is not easy to come up with a perfect tag which I would remember later.
It really depends on your work. If you're doing mundane work, keeping notes is just busywork and doesn't really have a payoff.
But if you're constantly trying to solve novel problems, and have episodic ideas that are half-baked, writing notes -- without trying to organize them first -- can be really powerful. For me, I just write them in Logseq and tag them with a few hashtags like #topic1 #topic2 #topic3. It doesn't have to be a perfect tag, just tag it with all the topics you think are relevant.
From time to timeI click a hashtag and revisit all my half-baked ideas -- periodic revisits and curation is key -- I surprise myself when some peripherally connected notes coalesce into a real idea. (Logseq makes this easy because each note is bullet point that can be tagged, and clicking on a tag is like running a query)
This is called the Fieldstone method. (conceptualized by Gerard Weinberg). It's a very useful approach for writers because it recognizes that the best ideas are episodic and don't all come at once, you have to gather the "stones" over a long time before something gels.
> 1. How much commentary should I write? I try to write not too many notes because I write code, and some say code should be self-documenting. So it's the same old question of how many comments should there be along the code.
I think the best I've heard this was by a friend who said something akin to this;
Programming is the art of solving problems by codifying complexity. Generally, the self documenting part is the 'defining the problem' portion of the code. But in every problem, there's a certain amount of irreducible complexity, or it wouldn't be a problem.
There's going to be some part of the code where you wish you could make it simpler, or you wish you understood it better, or you wish you could break it down into smaller components but there's no 'good way' to do it in the system you're working in. Or, the way you have working is 'good enough' and it's not worth the investment from some (business needs angle) in making it any better.
This is the portion of the code you should comment, and document, and do so liberally and in detail.
I write but never reread. The act of writing helps me organize my thoughts. Maybe I'll reread the last page when coming back to something but that's it.
So my advice is to write when you have a lot on your mind so that you can get it out of your mind. That's it.
Don't mess around with forums. That's for a different problem.
Keep a pen and paper handy always. There can be no barrier to entry or it breaks the flow.
I think you need to have a clear separation on what you're trying to achieve. From what you've written, I get the sense that you're combining documentation, wiki and your personal notes together.
For example, code documentation is very subjective. I'd combine code comments with readmes and potentially a separate wiki. All depending on the complexity of it.
For personal notes like reminders or thoughts, there's no need to keep it up to date. It's ordered by date. And when I need it, I roughly remember when I wrote it. If something needs to be updated? Write a new entry today. I use pen and paper for this. This is also where I sketch one-off diagrams and the like.
Separately, I also have a personal wiki for things I learn or teach among other things. Since these are limited in numbers and are quite important, keeping them up to date is not a big task
> a balance between "Just do it" and "Write about it"
This is the key point - capturing, organizing and retrieving notes has a cost. And I find myself always paying for notes out of my "just do it" budget. Especially when virtually all of the things I'm working on (notebooks, libraries, applications, planning documents) are themselves a form of writing, having yet another place to scatter my thoughts is not helpful at all. It's much more productive to take that thought and put it directly into the project documentation where everyone can benefit. More README, less journal.
> This is the key point - capturing, organizing and retrieving notes has a cost.
Exactly my thoughts too.
There is a cost. The thing is to keep that cost down to the level where it is in fact a good investment.
I don't think there is an ideal solution. It is just hard work to create information-artifacts, just like there is no silver-bullet for writing perfect code.
I sometimes write to document my thoughts - but just as often I write in order to discover what I think. Sometimes it's like the writing is the thinking.
Also, I love Obsidian. It became more useful when learned to stop overdoing it with exploring the endless plugin options, settled on a favorite few, and now mostly write in the daily note, occasionally extracting things to dedicated devnotes which in turn have chronological timestamped entries (and bidirectional links to the corresponding DNs). Highest possible recommendation to find a tool / workflow that suits you, and leverage it.
> solidify the mental model into a concrete branching of possibilities that is tightly coupled to the specific problem. Your work becomes traversal and mutation of this tree.
I currently use a TODO text file in the root of each project I'm working on, which I update right before I stop working. The lists are hierarchical, so each task I'm focused on has a parent item, which helps me remind of the bigger picture.
Usually, ths simplest solution is best and your approach exemplifies it: no need for a special application, simply open the text file and then go to work.
I have found, and advise teams I lead or work with, that the tool absolutely does not matter because it is the discipline to use the tool consistently that makes a difference.
Now, having said that, shoving jira down peoples throats with all kinds of rules around tagging and whatever wears people out.
So, yes, a text file, a google doc, linear or a few post-its on the wall.
This is very true. I guess I was thinking about all the times new people join a team and want to make changes to the team to fit the tools they prefer (including when a "big org" person rolls in wanting JIRA).
Toil and friction are killers.
In "Secrets of Productive People" Mark talks about building systems and that the lower level / background things should be reliable and without friction.
"Good systems for simple administration will free your mind for more productive work. Ideally you shouldn’t need to have to think about the lower-level stuff at all. Thinking needs to be kept for the high-level systems, which will be designed to fit each particular case. But even then the aim of designing a high-level system is to avoid eventually having to think about that system too."
I run it without any modifications from the default and it has been working quite well tbh. I'm pretty far from being a "power user" of obsidian though, it's literally only a note taking tool for me.
Logseq is one of the only tools I feel different about.
The per item line entry combined with a basic plugin to auto tag based on the words you type and existing tags, has been a game changer. I can simultaneously tag one line to multiple things without having to go the point of filing or adding them to each.
> Usually, ths simplest solution is best and your approach exemplifies it: no need for a special application, simply open the text file and then go to work.
I agree. The "tool" I have simply maintains text files and provides a streamlined way to display/edit the current one, switch to some previous one and switch back.
I made it to manage context switches. IOW, it's not to serve as a journal, it's to serve as a swap partition for my brain.
and a tool to squash or expand the hierarchy helps alot. jEdit can fold/unfold based on indentation. along with simple prefixes : '-' for info, '>' for todo, '= {date}' for done, etc
Mineis called README.md or notes.txt I use a similar hierarchical format - I use tabs for the hierarchy. I use markdown for most notes, but I find it somewhat incompatible with the tab-based note-taking that I prefer.
I share this in case there are others out there who work the same way. Let's band together to establish a tab-friendly Markdown variant!
Love the sound of this tool! Seems a bit of a shame to permanently delete anything that's been completed, sometimes it's really useful to have a record of what you've been working on.
> Love the sound of this tool! Seems a bit of a shame to permanently delete anything that's been completed, sometimes it's really useful to have a record of what you've been working on.
I did originally have that; it lowered the signal:noise ratio.
I've found that there's isn't a need to keep around any frames of context for things that I have completed: generally there's already an artifact from that frame of context anyway (write this function, call that person, design that foobar, etc).
If someone wants to try a similar flow but cannot run the above for any reason, git can be used to achieve something similar. You can also make use of existing tooling around git for shell integration like PS1 and gui.
1. Your main/master branch is your root frame.
2. Child Branches + branch commits themselves are messages.
3. Pop is hard reset of branch to parent or branch switch
The main idea is your log resides in commit messages and not the commit data itself. You can try using commit data too but limit that for shared contextual information.
Wrapping it up(to generate phony changes and running git) in shell aliases or functions should be easy.
I wouldn't see that as a way to plan work, but rather to keep track of what you did or where you were.
In general, I like the idea of ruthlessly tracking what I've done like this. But I think that it is still missing the context of the environment... meaning, if you are editing a file, it would be nice to not only know that you edited file A, but also that you changed line N to X.
I've spent a decent amount of time thinking about this over the years and haven't fully figured out a good solution. I was a wet lab scientist for a long time and we have the tradition/requirement of keeping a lab notebook. This is something that is incredibly helpful where you keep track of what you've done and what you're planning to do. I've missed this when I switched over to mainly computational work. In the past, I've thought about maybe having a loopback FUSE-ish mounted directory to track changes to files would work. But I think something akin to working in a git tracked repository (with these intermittent commits per command) might make this work better!
It's low-tech, but I've been using notebooks (not too thick, stapled usually). I write a header for each day when I start and then a line or two as I work on tasks and I try to note each time I switch tasks.
I keep the notebooks but rarely look at them once they are filled. Maybe once or twice as I switch to a new notebook and then once again when it comes to yearly review time. A couple of times I have rifled through old ones looking for command line flags but most of the time reading through the notes is enough to jog my memory.
Also a note taker - the physical aspect acts as a kind of cementing the thought. I never look at my old notes either and discard them when the book is complete, it's just an excerise in helping me manage complexity.
A real notebook and pen are the perfect tools for this. Its the only one I know that works, long term.
append only log works, but skimming through 2 months of logs for a specific thing is poor and slow but very useful. I don't do that often but when i do need it sometimes and especially fast, like on a call, with no lead time. Its a superpower.
I now organize my notebook a with a few conventions that make it more useful.
I limit myself to using only the right side of a page for logs from whole week. Each new week gets a new page, always on the right side. Put the date as the page header. Makes skimming easier. Put any important tasks / targets for the week right after.
Further Split right page into 3 columns. First 2 for work logs, third column for recurring weekly/biweekly meeting stuff. Very easy to go back to what was discussed 2 months ago. All logs are usually 1-3 words. Just cues. but everything has a topic subheader.
Left page is free form for detailed stuff. Things i discover, design, 1:1 meeting notes, questions i need answers to, philosophy, anything new on HN, etc. Right page serves as context.
I also do an index on the first page of the book pointing to anything that i find repeatedly useful. Could do page numbers but i put the date as its naturally ordered by the dates on the right page.
Been doing this a while and works perfect. I have everything I need in one notebook, i can carry it with me. a $1 composition book with 50 pages lasts well over six months.
For me, Sublime Text works well because I am researching and copy/pasting URLs, data, snippets etc into it which would slow down as "scratch" memory on paper
True for me too. The only advantages of digital notes (for me) have been searchability and shareability. One thing I keep occasionally going back to is Notion - for LaTeX support (I tend to use a lot of math. symbols) and now diagramming support using mermaid (since 2022, but I discovered that only a few months ago, and I find myself spending a little more time in Notion now).
If you're into notion I wanna recommend obsidian. It's got support for both of those and it's way more lightweight. If you use the tables and images a lot I will say notion is simpler to use there, the same is possible in obsidian but it's more work for sure, but when I was using it it started to feel bloated and even though I love it I wanted something smoother and obsidian has been exactly that. Plus local storage as markdown for reliable access even if obsidian ends up shutting down or something is nice, and unbeatable for searchability since you can ripgrep through it all with ease.
I have a nice setup with notebooks, on one page I put down the date and my meetings for the day, then i list the tasks i want to get done for the day. I start crossing things off once they are done per project. Went to standup? ok cool cross it off, new task comes in, add it to the list to priortize for the next day. I can go back and see what i've done on every single day and which days i've been in meetings most days. Having a nice pen/pencil really helps.
One. In your experience of using it for a while now, what is a typical tree size? What’s the highest it’s ever been?
Two. Why did you write it in C? Several other languages would surely make it much easier to implement that program. Not a critique at all, just curious. (I’m actually glad you wrote it in C. It’s a nice, reasonably sized piece of code to peruse.)
> One. In your experience of using it for a while now, what is a typical tree size? What’s the highest it’s ever been?
For me, the deepest node has ~ 25 ancestors. I don't know the largest depth it has ever been.
> Two. Why did you write it in C? Several other languages would surely make it much easier to implement that program.
I'm competent enough in C that it didn't matter to me, and the important thing was being able to call the library from any other language. Easy FFI made it quick to make a GUI for it (I primarily use the GUI now).
The library is in C, so others can make GUIs and wrappers in whatever language they want to, which is something I would like to encourage.
If I'm working on something particularly complex I basically just do the journaling in a code comment adjacent to what I'm working on. So the first commit may be three lines of code and a huge long winded rambling comment of what I've already tried or thought about. By the time the task is done I've pared away the more speculative/rambling elements of what I wrote, and what's left is typically some extremely well commented code. I think this method results in higher quality code produced faster than if you just try to keep everything in your head. No one's complained yet...!
I like that. There are other ways of capturing work in progress adjacent to the code, instead of writing a journal. One of my favourites is to write a failing test - pretty much impossible to overlook or misunderstand on "re-entry" to the task.
Another is to write a temporary commit log, with "WIP" in the first line and a TODO list in the rest of the log. This is good for ephemeral information that would just clutter up the code.
If I do need something like a journal, I have occasionally just written a private gist and put that in a tab on my browser.
I believe it cuts both ways. Writing things down allows you to dump state so that you can make other complex calculations with your working memory. Then, learning to hold more complexity in your head increases your mental bandwidth using the same amount of external state available. Rinse and repeat.
Experience looks like intelligence to us because we didn’t see the hours our favorite instructors and mentors spent banging their heads against their own notebooks, haha.
It is the rare instructor or mentor that takes pains to NOT show off their expertise, and model the expected behavior, tools, and techniques of the learner where they are at. It is the classic problem of telling someone the goal, but not how to get there. A common error-mode is repeating "the magic" over and over again, expecting it to sink in; it takes extra effort to decompose the magic into teachable, practicable parts. This teaching effort requires meta-cognition and empathy orthogonal to the effort required to become an expert, which is why expert teachers are a rare and precious gift.
By clearly visualizing your mental model, you can more easily identify and address any gaps or missing elements, leading to a more complete understanding.
Reminds me a lot of Cal Newport's ideas re: Slow Productivity. He talks a lot about how Context shifts are death for knowledge work and that a lot of offices operate via a "hyper active hive mind" that doesn't allow or value deep work.
I have too many meetings to get anything done. I'll go weeks, or months, without actually doing anything of real value. Eventually it comes to a head and I need to get things done to avoid going crazy. I go on do-not-disturb in our chat app, quit Outlook completely, and turn on a focus mode on my cell phone so people can't even call me. I'll end up working for 8-15 hours straight with no real breaks. I go to the bathroom, but keep my head in the problem, that's about it. I completely forget to eat or do anything else. I get 2 months worth of work done in 1 day.
If meetings were eliminated (or just consolidated into a single planning week), and I cloud just do deep work, I think I could work 2 days per month and be more productive than I am currently working 40+ hours per week.
I always want to send my management graphs like this to show them why having 10 projects running at a time is a bad idea...
The image in the article (here, since the link was broken: https://fev.al/img/2024/focus.png) is something I've sent to a boss in the past. He didn't get it.
I feel for you, friend. Maybe you could share the essay "Maker's Schedule, Manager's Schedule" by Paul Graham [0]. It's been somewhat helpful when I've shared it with colleagues.
Thanks for sharing. I agree with everything in the essay.
When it talked about the person effectively working 2 days, once on the managers schedule, and once at night to code on the makers scheduled, I thought back and that resonated with me. I spent a decade or so doing something like that. I’d typically work 12-14 hour days. The normal work day was full of distractions and interruption, and once everyone started to leave and the meetings stopped, I started making stuff and got a lot done. At the time I thought I was just avoiding rush hour traffic, but there was a much bigger side effect in terms of productivity.
With the situation I had in 2017, this essay may have gone a long way. With my current situation I worry sharing it would have a negative impact on my job. It’s not one person I’d have to convince and coordinate with, it’s at least 4, probably more. I have 3 “stand ups” most days, which are all 30 minutes and often run long. If I were to split my day into 2 maker blocks, my mornings are shot every single day with 2-4 hours of meetings. This is usually enough to kill my whole day. 3-4 days per week usually have a meeting (or 3) in the afternoon, which kills that block as well. Some teams have office hours posted to everyone. While I rarely go, simply having them on my calendar has an impact to my ability to see that my day is clear. And of course there are all the chats I need to monitor and respond to, which never stop and might as well be meetings.
A massive culture shift is needed and I don’t feel like I’m in a position to make it. We are getting a new CIO soon, so I can hope for some positive impact there. Right now all bets are off. In the current culture, if something isn’t getting done fast enough, the go-to solution is a daily meeting to talk about it. It makes the project managers feel good and gives the appearance we’re doing all we can, but in reality it slows everything way down.
I will keep the essay in my back pocket to share if the opportunity presents itself.
Goodness gracious. It sounds like having you be ineffective might be advantageous to one or more people above you. Perhaps they get to blame you for their own ineffectiveness, offsetting pressures elsewhere. It truly sounds toxic. I'm sorry you're going through that.
I find a timer useful for this. If you use Timery, you get a live activity on your home screen.
I don't care how long a thing takes, and I don't retrospectively analyse the time. The point is that I can only have one timer running: and that's the thing that I'm supposed to be doing.
If I notice I'm doing something else, it serves to bring me back to the task.
And at the end of the day, I do look through the list and see how often the thing I was doing changed. I try to keep that to a minimum, because every change is a context switch.
I've only been doing this for about a week, I'm still working on it, but so far it's been more helpful than not.
I recently started manually typing out everything I jot down in my pocket notebooks when I fill them in my Digital Garden. The amount of ideas I forgot about within a week or so is crazy. Glad I can revisit some of this now
My new organization workflow is as follows for planning my day.
I run a custom python script to generate a file/folder for each day in a month 2024/June/01-Jun.md ...
1. Tell ChatGPT what I want to do on that day, and ask it to give me a checkable markdown list.
2. Use "Typora" markdown editor for organization. It has a folder browser in the side bar. So I can have other files / folders at glance. Very easy to access.
3. Copy and paste the checkable list into the file with into Typora.
If I had the need, I could write a script to aggregate all the unchecked items and create a new file with them. Or do other processing.
Forget focusing faster and clarifying thoughts - a work journal does wonders for helping you during your yearly/6-month reviews, because you can look over the past several months and have concrete things to put down for why you deserve a raise and promotion.
(Actually, don't forget it. But realize that you can use it for both purposes.)
This is something I do if I'm in the middle of something before the weekend, and especially before a vacation.
I use Obsidian with its calendar plugin, so I get a note per day. It's where I keep my to do items as well as any notes for the day. Before leaving for a break I will open up the note for the day I plan to return and fill in my to do items, as well as additional notes on what I was doing, what I should be doing next, and references I may have had that I'll want to revisit. It is extremely helpful for getting me back into things once I've been out for a bit.
Prose writing in any form is super useful. The challenge is having a unified tool to impose some structure. Instead, thoughts are divided across email, slack, confluence, quip, etc.
To me the hardest part of journaling (or Pomodoro, or whatever work-related methodology/hack) is to stick with it. I have a work journal. I abandoned it and came back, then abandoned it and came back again. It's an endless back-and-forth.
To those who keep doing this for a longer period: Any tips would be appreciated.
I had the same problem because it was serving no purpose.
What really worked for me is to make it a primary tool of work. Rather than sometimes writing what I did today, whenever I work on something somewhat involved, I immediately write my approach about it ("I need to do X so I started Y").
I have my journal available within my editor, so it's easily accessible. I find that once I've seen how useful past-notes have been its very apparent I need to update.
I keep a standard set of headers for each new entry:
I copy/paste that header to the end of the file, and just fill out stuff as I go. I used to have my editor auto-open the diary on startup, but took that away in the end.
Accept that that is how it works for you. Like, maybe you do different types of work and subconsciously find it useful only for some of them. That's OK.
Consider it a tool you sometimes use, and think of using journaling as an option when you're frustrated with something.
We often need consistency and time to build up habits that stick.
I do everything including my own personal side projects in a work journal with time tracking for everything, but I had to work up to it being a natural part of my workflow.
Here's my suggested path to gaining these habits:
1. Initially just try to make sure you are taking SOME notes at the start or end of every day
- it doesn't matter where they are or how they are formatted just always take some notes at the start or end of your day
2. Once you have gotten into the habit of taking daily notes, start figuring what kinds of things you need notes for most often and take those before or during those activities
- for example if you often find yourself having to look back at work tickets to retrieve some important information, start adding that information to your notes
3. By the time you are taking daily notes and adding things you know you need notes for you probably have a lot of notes so start worrying about structure and formatting
- for example maybe you decide text files with homegrown markup aren't going to scale and you look into something like Obsidian with Markdown or Emacs with Org-mode
4. Repeat iterations of using your chosen note taking methods daily, building good habits, and improving your note taking system for you
- if it feels like something is taking more time than it is worth change how you are doing it so it takes less time or just stop doing it
Gustave Flaubert said, "be regular and orderly in your life, so that you may be violent and original in your work." Perhaps we who strive to be regular and orderly in our work should accept a little chaos in our life.
On the other hand, perhaps we simply need better external anchors for our habits. I have been journaling on-and-off for years. Environments change, people change, and my schedule changes. What got me back into it this time was joining a Shut Up and Write™ meetup. That broke the seal, and I've been sporadically journaling to de-frag in the weeks since.
I think you need to go past this common thinking to "just focus on consistency/habits/discipline". You need to get clear about how/why you decide in the present moment. I assume this takes varying amount of time/effort for different people.
I think one needs to unravel our inner state and psychology ... we cannot simply turn on and off. But then, once we understand our inner state/psychology it makes it easier to turn on/off.
I have a cron job that opens my note app - a few times every day. The app is focused in the foreground, opened on the top of a journaling note, pre-filled with the today's date. All that's left for me is to write.
My forcing function was external. I was getting randomized by a lot of tasks and I felt I wasn't getting anything done. So I started to break down my day into 30 minute chunks. This got the feedback loop of seeing things get done going.
I also started to take notes about projects, other teams' working, notes from internal documentation etc. This has allowed me to retrieve some things super quickly to the point my teammates have been amazed. Another way to get the dopamine hit going.
Long story short: my brain is a primate, it needs dopamine hits, find a way to make your intended behavior give you dopamine hits.
I'm currently working on a PhD dissertation part time, and this concept has been very helpful since I'm not working full days and therefore have more context switching. I end up drawing a lot of graphs and figures to think things through, so a big notebook of graph paper ends up working the best for me. Every couple of days or so I write out a list of the next few tasks as I currently see them, then think on paper to figure out how to implement the code for each task.
Funny thing is, writing it down helps it stick in my brain, so I need the write up less than I would if I didn't write it. That's got to be some kind of contrapositive of Murphy's law or something.
303 comments
[ 3.4 ms ] story [ 339 ms ] threadThat's the one: https://fev.al/img/2024/focus.png
![/img/2024/focus.png]
Recently, I neglected to write down my thinking and progress for a week, and I was at a loss for where to begin the following Monday. Keeping a work journal (in my case, a linear text document with an entry for each day) is the most important productivity habit I have.
(tab) Task
(tab) (tab) Details
etc
At some point, I resorted to keeping an audio recording of the whole meeting just to make sure I have something to come back to, in case my notes fail me.
I wouldn't do this for everything, but it helped me realize that an audio/video log like a dashcam video can work for certain scenarios.
This really became a habit after reading Writing to Learn by William Zinsser. I recommend this book to everyone and their grandmother these days.
"Writing enables us to find out what we know—and what we don’t know—about whatever we’re trying to learn."
The morning checklist consists of things like checking email, checking Teams, skimming the team's handover queue, logging into various things, etc.
Todo is a stack of things I can/should tackle. Most important ones to the top. I limit it to 15 items, no matter what. But realistically, I typically only interact with about the top 5 99% of the time.
Done gets wiped every morning and I add things to it as I do them. Things like, "emailed Joe Schmo for 3rd time to ask for ETA", or "helped Fred troubleshoot the frobnitz." Little things that I would totally forget about but cumulatively end up taking a huge chunk of the day. I've never had a boss that expressed a concern, but I think of it as my primary defense if anyone accuses me of slacking off all day. (Maybe it's just to convince myself...)
Each meeting I go to gets its own section for the day. If the content was important enough to save into my second brain[1], I clean it up and transfer it over there at the end of the day, or the beginning of the next day at worst.
Any complex investigation or rabbit hole gets its own section as well. It's astonishingly difficult for me to actually reason about any complex system or design without writing it out and actually describing it to myself. I envy those who can just "see" it all at once in their mind's eye. If ends up being important enough to save, I will clean it up and share it with the team and/or dump it into my personal wiki.
[1]: https://github.com/cu/silicon
I've started to use index cards to write down daily tasks and I'll switch over to obsidian if I find myself asking the same question more than once. I think for me the process of writing something down slows my mind enough to let me focus on it.
I like @ZXoomerCretin's idea of keeping a running document of what I do each day. I think it would make anual review time a lot easier.
Daily running log of what I have done
Dynamic todo list where things move up and down freely
remarkable tablet where I watch lectures and write notes (writing things down slows my mind and focuses as you say)
Daily Weekly Fortnightly Monthly Text files for spaced repetition, if I get to one and I have forgotten something then it’s moved up, if I feel like I know something it’s moved down
Longer memories are stored by topic:
Memory (working memory) Platform Operations Zany schemes Non-AT … + many more
Each is a hierarchy, platform is some 20 categories each with 10ish sub categories
It’s actually hosed on my NAS, tailscale connects all my devices so I can edit and view anywhere
I look forward to the day I can query and edit this with thought
Also, set up a praise folder and take screenshots every time somebody says something nice about the work you’re doing. You can automate documenting the context around it, too with quick add
I hear you on subscriptions rubbing you the wrong way. Hear me out, though. This is a bootstrapped team that builds and supports apps that empower you, the individual. Your data resides in plaintext and you can use your own sync server.
Not everything needs to be a subscription, but I don’t mind paying a few dollars per month to support the team.
Just my 2c.
I did pay to support their development[1] early on. I've been an obsidian user since early 2020 and I had to roll my own sync solution at the time. At the time I was experimenting with a lot of other PKIM/Note apps and Obsidian was the only one that didn't do proprietary storage format and really honored the "minimal but trivial to extend in powerful ways" philosophy that I value.
> Subscriptions rub me the wrong way for whatever reason
I can understand that. Software development is hard and we are _long_ past the days where software was static. In some ways, I miss buying a computer that didn't expect an internet connection to constantly self-update. On the other hand, though, paying a few bucks a month so make sure the app is updated to take advantage of new OS features and generally keep up with device capabilities is worth it for me.
If there was some 2-5$/month option to support obsidian development I'd consider it. Yes, I know their cheapest sync plan is $4/month but it's only good for 1 gig of data and my biggest vault grows by that much every year or two... hence using SyncThing on a cheap VPS :).
[1]: https://help.obsidian.md/Licenses+and+payment/Catalyst+licen...
I can tell what I worked on each day by querying the git commit history, and I can grep the entire directory for keywords.
It's a little janky but it works pretty well for me.
This makes a lot of sense. Why not simply store the task with the sqlite database? I'm assuming ease of editing + the ability to manage the stack separately from the log of text entries, which presumably need no maintenance nor will ever be deleted?
I do insert completed tasks into a "completed task" append-only table when I pop them off the stack, so I do have a record of completed tasks in sqlite. (I find that useful for remembering what I did recently for standups and 1:1's)
"TODO" is actionable items. It's a reorderable stack of work I need to do. Same: interruption pushes a task to the stack, when I finish a task I pop it from the stack, etc. So I always know what to do next.
"Pending" is an unordered list of things I'm awaiting. Say, I asked someone to do something, and they promised they'd get back to me in a few hours (or "by July 20"). I occasionally scan this list to see if some of the items got resolved and I need to continue working in those areas because I'm unblocked.
"Done" is a list of items I completed for the day, all finished items go there. I then copy the entire list to the time tracker (for the PMs) at the end of the day.
However, I organize files by day, not by task. Each day I create a new file for the day by copying the lists of the previous day's file minus the DONE list. I don't modify lists for previous days, so it's kind of an append-only log so I can see what was the state for any particular day. 1 file per day is easy to see as a whole as it mostly fits in one screen (and inside my working memory). I use plain text files because I found it much simpler to use, I don't have to install any software, it just works, and it's easily searchable.
I've been using this system for the last 6 years now and it served me well.
For my working files I use a similar system except I separate at least Months, often Weeks, and sometimes Days into subheadings for easy time tracking of tasks on various time partitions.
So when I need to start a new heading for a new day, I just move all the incomplete TODO items into it, similar to you moving them into a new file.
Occasionally I manually archive the completed tasks into files by year with headings by month only when I no longer need their full granularity.
I now find that when I have a moment to do something, I pick it off of the TODO list and complete it. Prior to this technique, I did not have a list of this nature and some items never got completed.
I feel incredibly productive with my current setup. However, I don't feel as though my previous system was unproductive and am concerned that I'm "spinning my wheels" by feeling like I need to complete these tasks that went unfinished before.
Have you experienced this? Do you know how to best think about what is optimal?
todo: Open my list in an editor
todo [thing]: Add a thing to the bottom of my list.
next: Show me only my next most important task.
mark: Mark my current task done.
There are a few more, but you get the idea.
Primarily I use work log to document problems I am having, keeping track of contexts such as what page I last read, and keeping track of my time. Timestamping is a very useful tool to fight procrastination.
In other part of my life, I use journals for personal development and productivity in general, like writing down my problems and thinking about them. I often stumbled upon changes that I could implement or try. This allows me to achieve things that I haven't achieved before, such as putting actual effort in learning electronics. Daily habits and action items are tracked, including my prediction of how an action goes and what is the actual outcome.
So yeah, journaling is a very good practice. It doesn't seem to matter much how you use them, just that you use them. It's very good at stopping your ruminating and you can actually move forward with your thoughts.
> It’s Mitch, your PM. He’s asking the url for a doc he wrote
Boy that’s too real. Really reminds me of the comic from a decade ago about programmer focus [1].
But welcome to the world of Note taking, I agree it’s like a superpower once you develop the habit. Obsidian is fantastic, but even daily markdown notes are great. The whole “second brain” idea hasn’t panned out for me, but a hotkey to jump to today’s note, and another insert the current time has been a mainstay of my workflow for years now.
[1] https://imgur.com/never-interrupt-programmer-3uyRWGJ
I have the OneNote icon in the notification area configured to create a new quick note and use it liberally. Occasionally I look through all the pages, especially the recent ones, aggregate and reorganize some, move others to an “archive” tab, and that’s it.
The faintest - and most disorganized - ink is more powerful than the strongest memory.
https://www.redhat.com/sysadmin/fzf-linux-fuzzy-finder
That way I’ve got a dedicated dock icon and context just for writing notes, but no other overhead. It’s important to me that it not feel like a product, and search works effortlessly (although subject to typo misses).
My only tweak on the text editor is a shortcut to insert a timestamp and a chunk of new lines, which I do periodically so I can separate moments in time and see what I was working on when, how I fixed something, etc.
I used obsidian for a while, but for my purposes it felt like work to organize and get “right”. I ended up writing a script to join all the files into one.
Looks like you can download from the App Store now, too.
It’s dead simple and I’ve never found a bug in 6 years of daily use. It’s pretty awesome and shows a lot of restraint and skill on the author’s part.
It is super helpful when we notice something strange has been going on since a specific date. I give my coworkers access to it and we will regularly refer back to it to try to figure out what was going on on a particular date. I also use it monthly to summarize for my 1:1 meeting with my boss.
I also have a Kindle Scribe e-notebook that I use for my daily todo list. The writing experience with the Kindle is very good, in that it's very paper like, but the access and retrieval is pretty meh. I described it to my coworkers as: It's exactly like paper, only more expensive. I'm basically doing bullet journaling of my tasks, things I need to circle back with coworkers about, and stuff to chat about over lunch or shows people have recommended.
Keeps my thoughts in order while I'm switching tasks etc.
I do use a rocketbook which is a little reusable notebook with a companion app you can use to quickly scan and upload the pages.
I only scan the things I think I might refer back to, but it is seldom I actually do refer back.
I did this too - obsidian's daily note feature is fantastic, and you can extract out pages from it if you want/need to dedicate a document for a specific thing. Since it's just markdown, search is quick - and being able to use regex if I need to is awesome. The graph view, showing connections between notes is great if you create notes on specific subjects, and link them together, or pull sections out to explain more in depth - but it's not really that necessary unless you're building your own knowledgebase, which like all documentation suffers from rot over time.
As long as your note-ing tool supports a good enough search that you can find things again, then I think it doesn't really matter what you use - as you said, writing it down is the important part.
Very true words. Thank you.
I use the Obsidian TimeStamper plugin with a nice shortcut (Ctrl + .), and then just have an append-only log of thoughts that each start with a timestamp on its own line. I'll throw in a tag or two if I'm motivated (#tickets/DEV-1234) and create a new file every month (e.g. 2024-07).
It makes it very easy and fast to just switch to Obsidian and do a brain dump before lunch / end of day, or any time a thought hits me.
I've been using this prompt on myself, on and off, for years, but I keep on hallucinating and losing focus and going off track.
Been using obsidian since it launched and my workflow is to always have the window open taking a thin column on the left of my screen and whatever I’m working on takes up the rest of the screen (Yey for fancyzones in windows powertoys).
As I work I just stream my thoughts into the file. I have a shortcut, ctrl-alt-m, that inserts the timestamp as `hh:mm:ss`. I hit it, and start typing. I paste screenshots, code snippets, as I go along. It’s godsend when I’ve gone far along enough and I need to reference something. Esp given that I work on security tickets and I’m constantly triaging reports that are unclear or require digging into layers of source code to find where they come from.
One important step to note if you ever try this out: if you have 30 seconds before you jump on to an interruption, try to build the discipline of throwing in a few words saying what you need to do when you return. Even with all the historical context it can take some thinking to recall what your next step should be.
In fact, if you don’t like journaling just do this last step instead. I stole the concept from GTD’s next actions and it works.
Any task I'm working on has a GitHub issue - in a public repo for my open source work, or a private repo for other tasks (including personal research).
As I figure things out, I add comments. These might have copy pasted fragments of code, links to things I found useful, quoted chunks of text, screenshots or references to other issues.
I often end up with dozens of comments on an issue, all from me. They provide a detailed record of my process and also mean that if I get interrupted or switch to something else I can quickly pick up where I left off.
Here's a public example of one of my more involved research threads: https://github.com/simonw/public-notes/issues/1
I also create a new issue every day to plan the work I intend to get done and keep random notes in. I wrote about how that works here: https://til.simonwillison.net/github-actions/daily-planner
I use it for everything and not only work journal, this creates a small problem.Since I dump both future references and worklogs, and I have ~50 channels, it's very easy to not get back to things and only get back to it when needed(which is the idea mentioned by OP). It seems like a feature than a bug at first but after capture, one round of review after some time interval really helps. It took a while but slowly seeing the benefits.
For that I plan to write some bot to re-organize the worklogs and the reference/other things dump to my own email at the end of the week and then I can create something like https://simonwillison.net/tags/weeknotes/ for myself(private) to go though at the end of the week. I think it would be perfect for me.
https://GitHub.com/irthomasthomas/undecidability/issues
The code that runs it is here:
https://GitHub.com/irthomasthomas/label-maker (how it started/how it's going:)
My protection for now is nepotism: I know enough people at GitHub that I'm confident I could use back channels to recover my account if I ever need to.
There’s usually a lot more issue comments than commits as I just add a comment to the issue while I “work it out”.
New problem? New issue.
New insight on that problem? Comment.
And so on…
Perhaps the greatest barrier to using it is akin to envy. We see others who apparently do this without written materials, in their head. I think we see this as evidence of intellectual superiority and harbor the doubt that using an aid like a journal means we are somehow lacking in skill or ability. This is wrong. Using an aid to map out complex problems isn't a failure, it's essential, especially for problems in systems you've never used before. Over time you may yourself build up your expertise such that you no longer need the aid, but that doesn't signal anything about your intelligence or ability either, only your experience.
To add to your "this is wrong": These others may have themselves solved the problems we are now trying to solve, likely even using a journal. They no longer need a journal since they know how to navigate it, and it appears as superior to us.
Of course, sometimes an existing tool or notation used for its original purpose is what you need. Maybe manually remove the stuff that doesn't matter.
The professors were in fact not gods of problem solving, they just had the answers. Not just of the problems they brought along (obviously). But also of the handful of problems we’d tend to invent. Of course, if you really catch them flat-footed, they can provide circumspect and sagely advice, and then quickly check Wikipedia to see if anyone has solved your problem.
When I first started with Obsidian I used it that way, but the more I put in it the more I started organizing everything. It became less of a journal and more of a repository for long form stuff.
I’m thinking about using both just so I have a dedicated tool just for the journaling side of things.
I wouldn't overthink it, though, and just use the simplest tools available. I use Sublime Text 3 with a few shortcuts to add the current timestamp, etc. and log everything in a long file. I was too ambitious in the past and wanted to learn how to use Emacs for everything, but it just held me back, and I ended up without any notes.
Also, my unfortunately named thread from 2022: https://news.ycombinator.com/item?id=33359329
I have a similar system to you, but getting things in and out of OneNote is such a massive pain.
Everything I have tried requires significant reformatting (even Word).
With a few good examples, maybe some LLM could help you with reformatting?
Good luck!
You could also create an index of MOC pages with the same plugin and making sure each MOC have a `#moc` tag, for example by using templates. Then write a query that lists all pages with the `#moc` tag.
For pure TODO lists, I'm a happy user of Taskwarrior since more than a decade.
[0] https://obsidian.rocks/quick-tip-quickly-organize-notes-in-o...
1. How much commentary should I write? I try to write not too many notes because I write code, and some say code should be self-documenting. So it's the same old question of how many comments should there be along the code.
2. How do I retrieve a note I've written earlier? I can use tags and search for them but it is not easy to come up with a perfect tag which I would remember later.
3. I have so many notes and by now many of them are out-of-date. I don't want to spend time updating my notes. But if I don't they can become misleading.
There needs to be a balance between "Just do it" and "Write about it". I'm not sure I have the correct balance between those two.
I can see an alternate approach which would be a FORUM where co-workers discuss what they are doing or plan to, or have done . But there too the retrieval might be a problem. However the FORUM-tool would automatically keep track of when something was written and by whom. NOTE: You might benefit from other people's notes just as you can from your own.
It is just folders and markdown so it is ultra portable, but the obsidian editor has tons of useful features like a graph view, autolinking, and a plugin in for anything you can think of.
There are tons of YouTube videos and articles describing different organizing systems and ways to use it.
The ideal tool, which I don't think exists, would combine the immediacy and locality of nvAlt and bidirectionally map to something like Jira for sharing, distributed as a browser plugin and/or a simple server component with local write access.
That is a problem I've experienced too. Therefore I currently write my comments in plain text in the IDE I am using (WebStorm), which saves them as text-files.
I used OneNote for some time but I realized there is a lock-in because it saves its notes in its proprietary format. And now it seems its content can only be saved online on Microsoft servers.
On the other hand if there was a clear rationale as to which type of notes belong to which tool then using multiple tools can actually help you find your note later.
For example: Use your fridge-door for post-it-notes about what food we need more of.
This may have something to do with the "Memory Palace" -techniques. You can remember things better when you can associate a path to finding them. Food? I must write a note about the food. Where should I save it? Preferably close to the fridge, because that is where most food is.
Here's a trick I am using to write my coding-notes: I actually write and save them in files with .js -extension. I can have multiple such files for different aspects of notes. I can write notes about my app specification in one file and code-notes in another file, and what was done and what remains to be done in yet another file.
That means my notes are comments in syntactically valid JavaScript files (which exists only to store such notes).
Now I can use the Expand/Collapse feature of the IDE to collapse all comments to their first line, which is the title of the note.
I can also save real JavaScript functions within the same file and have them syntax-highlighted, so I know the code-examples are valid JavaScript.
I also use a WebStorm macro to generate tags based on current time and/or date. Saving them with the note allows me to refer to that tag from other notes. A bit like hyperlinking, but for text-files.
I'm not sure how you can get more plain-text than that.
1 - https://zettelkasten.de/introduction/
Feed them all to an LLM?
I wrote in some discussion about whether AI could replace us programmers? I think they cannot because:
AI has the answers. WE have the questions!
But if you're constantly trying to solve novel problems, and have episodic ideas that are half-baked, writing notes -- without trying to organize them first -- can be really powerful. For me, I just write them in Logseq and tag them with a few hashtags like #topic1 #topic2 #topic3. It doesn't have to be a perfect tag, just tag it with all the topics you think are relevant.
From time to timeI click a hashtag and revisit all my half-baked ideas -- periodic revisits and curation is key -- I surprise myself when some peripherally connected notes coalesce into a real idea. (Logseq makes this easy because each note is bullet point that can be tagged, and clicking on a tag is like running a query)
This is called the Fieldstone method. (conceptualized by Gerard Weinberg). It's a very useful approach for writers because it recognizes that the best ideas are episodic and don't all come at once, you have to gather the "stones" over a long time before something gels.
https://www.amazon.com/Weinberg-Writing-Fieldstone-Gerald-M/...
I've used it with great success over the years (both at work and in my writing).
I think the best I've heard this was by a friend who said something akin to this;
Programming is the art of solving problems by codifying complexity. Generally, the self documenting part is the 'defining the problem' portion of the code. But in every problem, there's a certain amount of irreducible complexity, or it wouldn't be a problem.
There's going to be some part of the code where you wish you could make it simpler, or you wish you understood it better, or you wish you could break it down into smaller components but there's no 'good way' to do it in the system you're working in. Or, the way you have working is 'good enough' and it's not worth the investment from some (business needs angle) in making it any better.
This is the portion of the code you should comment, and document, and do so liberally and in detail.
So my advice is to write when you have a lot on your mind so that you can get it out of your mind. That's it.
Don't mess around with forums. That's for a different problem.
Keep a pen and paper handy always. There can be no barrier to entry or it breaks the flow.
For example, code documentation is very subjective. I'd combine code comments with readmes and potentially a separate wiki. All depending on the complexity of it.
For personal notes like reminders or thoughts, there's no need to keep it up to date. It's ordered by date. And when I need it, I roughly remember when I wrote it. If something needs to be updated? Write a new entry today. I use pen and paper for this. This is also where I sketch one-off diagrams and the like.
Separately, I also have a personal wiki for things I learn or teach among other things. Since these are limited in numbers and are quite important, keeping them up to date is not a big task
This is the key point - capturing, organizing and retrieving notes has a cost. And I find myself always paying for notes out of my "just do it" budget. Especially when virtually all of the things I'm working on (notebooks, libraries, applications, planning documents) are themselves a form of writing, having yet another place to scatter my thoughts is not helpful at all. It's much more productive to take that thought and put it directly into the project documentation where everyone can benefit. More README, less journal.
Exactly my thoughts too.
There is a cost. The thing is to keep that cost down to the level where it is in fact a good investment.
I don't think there is an ideal solution. It is just hard work to create information-artifacts, just like there is no silver-bullet for writing perfect code.
Also, I love Obsidian. It became more useful when learned to stop overdoing it with exploring the endless plugin options, settled on a favorite few, and now mostly write in the daily note, occasionally extracting things to dedicated devnotes which in turn have chronological timestamped entries (and bidirectional links to the corresponding DNs). Highest possible recommendation to find a tool / workflow that suits you, and leverage it.
I wrote a program (used from a CLI, but I mostly use the GUI I developed for it) to do something similar for my own use: https://github.com/lelanthran/frame/blob/master/docs/FrameIn...
I use it daily.
I currently use a TODO text file in the root of each project I'm working on, which I update right before I stop working. The lists are hierarchical, so each task I'm focused on has a parent item, which helps me remind of the bigger picture.
Now, having said that, shoving jira down peoples throats with all kinds of rules around tagging and whatever wears people out.
So, yes, a text file, a google doc, linear or a few post-its on the wall.
Agree, though I advise folks that tooling matters tremendously, because a bad tool requires more discipline to continue using than a streamlined tool.
Toil and friction are killers.
In "Secrets of Productive People" Mark talks about building systems and that the lower level / background things should be reliable and without friction.
"Good systems for simple administration will free your mind for more productive work. Ideally you shouldn’t need to have to think about the lower-level stuff at all. Thinking needs to be kept for the high-level systems, which will be designed to fit each particular case. But even then the aim of designing a high-level system is to avoid eventually having to think about that system too."
Too many bells a whistles to tweak, and isn’t conducive to consistency.
Logseq is one of the only tools I feel different about.
The per item line entry combined with a basic plugin to auto tag based on the words you type and existing tags, has been a game changer. I can simultaneously tag one line to multiple things without having to go the point of filing or adding them to each.
I agree. The "tool" I have simply maintains text files and provides a streamlined way to display/edit the current one, switch to some previous one and switch back.
I made it to manage context switches. IOW, it's not to serve as a journal, it's to serve as a swap partition for my brain.
I share this in case there are others out there who work the same way. Let's band together to establish a tab-friendly Markdown variant!
I did originally have that; it lowered the signal:noise ratio.
I've found that there's isn't a need to keep around any frames of context for things that I have completed: generally there's already an artifact from that frame of context anyway (write this function, call that person, design that foobar, etc).
If someone wants to try a similar flow but cannot run the above for any reason, git can be used to achieve something similar. You can also make use of existing tooling around git for shell integration like PS1 and gui.
1. Your main/master branch is your root frame.
2. Child Branches + branch commits themselves are messages.
3. Pop is hard reset of branch to parent or branch switch
The main idea is your log resides in commit messages and not the commit data itself. You can try using commit data too but limit that for shared contextual information.
Wrapping it up(to generate phony changes and running git) in shell aliases or functions should be easy.
In general, I like the idea of ruthlessly tracking what I've done like this. But I think that it is still missing the context of the environment... meaning, if you are editing a file, it would be nice to not only know that you edited file A, but also that you changed line N to X.
I've spent a decent amount of time thinking about this over the years and haven't fully figured out a good solution. I was a wet lab scientist for a long time and we have the tradition/requirement of keeping a lab notebook. This is something that is incredibly helpful where you keep track of what you've done and what you're planning to do. I've missed this when I switched over to mainly computational work. In the past, I've thought about maybe having a loopback FUSE-ish mounted directory to track changes to files would work. But I think something akin to working in a git tracked repository (with these intermittent commits per command) might make this work better!
I keep the notebooks but rarely look at them once they are filled. Maybe once or twice as I switch to a new notebook and then once again when it comes to yearly review time. A couple of times I have rifled through old ones looking for command line flags but most of the time reading through the notes is enough to jog my memory.
append only log works, but skimming through 2 months of logs for a specific thing is poor and slow but very useful. I don't do that often but when i do need it sometimes and especially fast, like on a call, with no lead time. Its a superpower.
I now organize my notebook a with a few conventions that make it more useful.
I limit myself to using only the right side of a page for logs from whole week. Each new week gets a new page, always on the right side. Put the date as the page header. Makes skimming easier. Put any important tasks / targets for the week right after.
Further Split right page into 3 columns. First 2 for work logs, third column for recurring weekly/biweekly meeting stuff. Very easy to go back to what was discussed 2 months ago. All logs are usually 1-3 words. Just cues. but everything has a topic subheader.
Left page is free form for detailed stuff. Things i discover, design, 1:1 meeting notes, questions i need answers to, philosophy, anything new on HN, etc. Right page serves as context.
I also do an index on the first page of the book pointing to anything that i find repeatedly useful. Could do page numbers but i put the date as its naturally ordered by the dates on the right page.
Been doing this a while and works perfect. I have everything I need in one notebook, i can carry it with me. a $1 composition book with 50 pages lasts well over six months.
Lots of space to lay out your ideas and get a great overview just not very pocketable.
I use a lot of diagrams / sketches / arrows between things / etc, so doing it all in text on a computer is too cumbersome.
Of course, with paper, looking up something from the past is a pain sometimes.
Just fyi in case it helps : - )
If you’re working on a particularly complex frame, how do you maintain context?
Since each frame is a subdirectory directory in ~/.framedb/root, I can simply `mv` them. TBH, I've never yet found a need to rearrange them.
> If you’re working on a particularly complex frame, how do you maintain context?
I create child frames using whatever context was written into the current frame.
One. In your experience of using it for a while now, what is a typical tree size? What’s the highest it’s ever been?
Two. Why did you write it in C? Several other languages would surely make it much easier to implement that program. Not a critique at all, just curious. (I’m actually glad you wrote it in C. It’s a nice, reasonably sized piece of code to peruse.)
For me, the deepest node has ~ 25 ancestors. I don't know the largest depth it has ever been.
> Two. Why did you write it in C? Several other languages would surely make it much easier to implement that program.
I'm competent enough in C that it didn't matter to me, and the important thing was being able to call the library from any other language. Easy FFI made it quick to make a GUI for it (I primarily use the GUI now).
The library is in C, so others can make GUIs and wrappers in whatever language they want to, which is something I would like to encourage.
Another is to write a temporary commit log, with "WIP" in the first line and a TODO list in the rest of the log. This is good for ephemeral information that would just clutter up the code.
If I do need something like a journal, I have occasionally just written a private gist and put that in a tab on my browser.
Creating and maintaining the taxonomy is another thing but not too bad.
If meetings were eliminated (or just consolidated into a single planning week), and I cloud just do deep work, I think I could work 2 days per month and be more productive than I am currently working 40+ hours per week.
I always want to send my management graphs like this to show them why having 10 projects running at a time is a bad idea...
https://res.cloudinary.com/jlengstorf/image/upload/f_auto,q_...
...but I know it will be received poorly.
The image in the article (here, since the link was broken: https://fev.al/img/2024/focus.png) is something I've sent to a boss in the past. He didn't get it.
[0] https://www.paulgraham.com/makersschedule.html
When it talked about the person effectively working 2 days, once on the managers schedule, and once at night to code on the makers scheduled, I thought back and that resonated with me. I spent a decade or so doing something like that. I’d typically work 12-14 hour days. The normal work day was full of distractions and interruption, and once everyone started to leave and the meetings stopped, I started making stuff and got a lot done. At the time I thought I was just avoiding rush hour traffic, but there was a much bigger side effect in terms of productivity.
With the situation I had in 2017, this essay may have gone a long way. With my current situation I worry sharing it would have a negative impact on my job. It’s not one person I’d have to convince and coordinate with, it’s at least 4, probably more. I have 3 “stand ups” most days, which are all 30 minutes and often run long. If I were to split my day into 2 maker blocks, my mornings are shot every single day with 2-4 hours of meetings. This is usually enough to kill my whole day. 3-4 days per week usually have a meeting (or 3) in the afternoon, which kills that block as well. Some teams have office hours posted to everyone. While I rarely go, simply having them on my calendar has an impact to my ability to see that my day is clear. And of course there are all the chats I need to monitor and respond to, which never stop and might as well be meetings.
A massive culture shift is needed and I don’t feel like I’m in a position to make it. We are getting a new CIO soon, so I can hope for some positive impact there. Right now all bets are off. In the current culture, if something isn’t getting done fast enough, the go-to solution is a daily meeting to talk about it. It makes the project managers feel good and gives the appearance we’re doing all we can, but in reality it slows everything way down.
I will keep the essay in my back pocket to share if the opportunity presents itself.
I don't care how long a thing takes, and I don't retrospectively analyse the time. The point is that I can only have one timer running: and that's the thing that I'm supposed to be doing.
If I notice I'm doing something else, it serves to bring me back to the task.
And at the end of the day, I do look through the list and see how often the thing I was doing changed. I try to keep that to a minimum, because every change is a context switch.
I've only been doing this for about a week, I'm still working on it, but so far it's been more helpful than not.
I run a custom python script to generate a file/folder for each day in a month 2024/June/01-Jun.md ...
1. Tell ChatGPT what I want to do on that day, and ask it to give me a checkable markdown list.
2. Use "Typora" markdown editor for organization. It has a folder browser in the side bar. So I can have other files / folders at glance. Very easy to access.
3. Copy and paste the checkable list into the file with into Typora.
If I had the need, I could write a script to aggregate all the unchecked items and create a new file with them. Or do other processing.
Markdown editor + ChatGPT => killer combination.
(Actually, don't forget it. But realize that you can use it for both purposes.)
I use Obsidian with its calendar plugin, so I get a note per day. It's where I keep my to do items as well as any notes for the day. Before leaving for a break I will open up the note for the day I plan to return and fill in my to do items, as well as additional notes on what I was doing, what I should be doing next, and references I may have had that I'll want to revisit. It is extremely helpful for getting me back into things once I've been out for a bit.
To those who keep doing this for a longer period: Any tips would be appreciated.
What really worked for me is to make it a primary tool of work. Rather than sometimes writing what I did today, whenever I work on something somewhat involved, I immediately write my approach about it ("I need to do X so I started Y").
I keep a standard set of headers for each new entry:
I copy/paste that header to the end of the file, and just fill out stuff as I go. I used to have my editor auto-open the diary on startup, but took that away in the end.Consider it a tool you sometimes use, and think of using journaling as an option when you're frustrated with something.
I do everything including my own personal side projects in a work journal with time tracking for everything, but I had to work up to it being a natural part of my workflow.
Here's my suggested path to gaining these habits:
1. Initially just try to make sure you are taking SOME notes at the start or end of every day
2. Once you have gotten into the habit of taking daily notes, start figuring what kinds of things you need notes for most often and take those before or during those activities 3. By the time you are taking daily notes and adding things you know you need notes for you probably have a lot of notes so start worrying about structure and formatting 4. Repeat iterations of using your chosen note taking methods daily, building good habits, and improving your note taking system for youOn the other hand, perhaps we simply need better external anchors for our habits. I have been journaling on-and-off for years. Environments change, people change, and my schedule changes. What got me back into it this time was joining a Shut Up and Write™ meetup. That broke the seal, and I've been sporadically journaling to de-frag in the weeks since.
One of the checklist items may be to journal.
The randomness is so that I actually follow through on the checklist and don’t gloss over it.
I think one needs to unravel our inner state and psychology ... we cannot simply turn on and off. But then, once we understand our inner state/psychology it makes it easier to turn on/off.
I have a cron job that opens my note app - a few times every day. The app is focused in the foreground, opened on the top of a journaling note, pre-filled with the today's date. All that's left for me is to write.
I also started to take notes about projects, other teams' working, notes from internal documentation etc. This has allowed me to retrieve some things super quickly to the point my teammates have been amazed. Another way to get the dopamine hit going.
Long story short: my brain is a primate, it needs dopamine hits, find a way to make your intended behavior give you dopamine hits.
Funny thing is, writing it down helps it stick in my brain, so I need the write up less than I would if I didn't write it. That's got to be some kind of contrapositive of Murphy's law or something.