Hacker News new | past | comments | ask | show | jobs | submit login
Use a work journal (fev.al)
1083 points by charles_f 3 months ago | hide | past | favorite | 293 comments



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.


> 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 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.


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.


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


What type of notebook?


Does't matter. Pick the one right next to you and start


I love me a daily planner, personally. I like having a page per day to organize my thoughts by hand.


+1 for physical notes (:

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.


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).

Just fyi in case it helps : - )


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.


Have been meaning to try it for a while - thanks!


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.


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.


Van Neistat (YouTube) has a video that I can’t find know where he talks about his planning process. He uses full sized poster boards.

Lots of space to lay out your ideas and get a great overview just not very pocketable.


Interesting tool.

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.


> because it is the discipline to use the tool consistently that makes a difference.

Agree, though I advise folks that tooling matters tremendously, because a bad tool requires more discipline to continue using than a streamlined tool.


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."


This is generally true.

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.


Obsidian in a nutshell.

Too many bells a whistles to tweak, and isn’t conducive to consistency.


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.


> 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.


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!


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


Not a comment about the project itself.

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.


But how do you use that flow to _plan_ your work?


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 great. You should do a separate hn post


Love it. Just two questions from curiosity.

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.


That is one of those novel once in a generation kind of tools and concepts I feel. Outstanding


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).


This is really cool. How do you reorder frames?

If you’re working on a particularly complex frame, how do you maintain context?


> This is really cool. How do you reorder frames?

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.


This is really interesting. Thanks for sharing.


Really cool tool. Starred


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.


These are really good!


A good technique I've used as well. Call it "iterative literate programming".


An effective strategy for managing complex tasks


> 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.


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 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.


The notion that using a journal is a common misconception


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.


> 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.


Check out obsidian.

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.


Obsidian is pretty close to that. Markdown is basically plain text.


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.


Likewise, I seldom reread. But I do get most out of just writing it down.


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.

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).


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.

1 - https://zettelkasten.de/introduction/


> 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 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


The problem with writing too much is that it becomes a chore to read, there could be a lot of fluf and a few gems, but you couldn’t tell anyways.


Focus on meaningful, contextual comments that explain the "why" behind your 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.

Feed them all to an LLM?


I've thought about that. The AI should figure it out. But if I don't know what I should ask the AI it cannot much help me.

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!


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 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.


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.

[0] https://obsidian.rocks/quick-tip-quickly-organize-notes-in-o...


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.

Also, my unfortunately named thread from 2022: https://news.ycombinator.com/item?id=33359329


do you have a decent system to get entries between(both in and out) Obsidian and OneNote?

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).


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?

Good luck!


For those struggling with overwhelming functionality an ux tax of note-taking apps:

  This also works
      It’s easy to spin up
      And to search through
  It has a structure
      Can be easily refactored
  <ctrl-s>


I've been using Logseq as a work journal and it works great. Hashtags help me to track what I need to do and what I've done.


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.


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.


Absolutely! What often appears to be effortless intelligence or innate talent is usually the result of extensive experience and hard work.


I had a whole CLI full with bash scripts and a Sublime Text app with self-written plugins that functioned like this at my previous job.


You mean, for journaling, or to automate the process?


Journaling


Is the process of writing not for reading it but to solidfy memory? Of course the bonus is you could read it, but you really won’t


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.


This advice is pure gold. Thank you.


The auto-tagging plugin for Logseq has helped me a lot get over the hump. Everything that I want to be connected just is.

Creating and maintaining the taxonomy is another thing but not too bad.


By clearly visualizing your mental model, you can more easily identify and address any gaps or missing elements, leading to a more complete understanding.


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.


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.


Same here too. It's the act of writing that's important to me.

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.


Would you have an LLM summarise it for you instead?


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.


Essentially "working memory", gets discarded with the task


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.


What editor did you modify?


https://github.com/brunophilipe/Noto

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.


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.


It's hard to grep for misspelled words though.



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.


> 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 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 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?


That was my trick for Obsidian. No organization or fancy plugins, just interlinked notes. Backlinks alone work amazingly well for me for retrieval.


It's the exact same thing as a messy desk pre computers. I'm a big subscriber of that idea.


No surprise that I am a very strong proponent of messy desk. Organized chaos.


This is what I do too.

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.


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.


You can have images alongside text in VS Code extensions too. Yes there's still bloat but you may already have VS Code open.


> The faintest - and most disorganized - ink is more powerful than the strongest memory.

Very true words. Thank you.


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.

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 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.


I use GitHub issues (combined with embeddings and logprobs via your llm) as an AI infused bookmark manager:

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:)


This is the method that I’ve found works best for me - each project has a repo, and when I’m working on a specific “thing” I open an issue.

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…


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.


GitHub Issues have a very comprehensive API. I've written code in the past to export all of my issues and their comments: https://datasette.io/tools/github-to-sqlite


my concern is what happens when github decides they don't want you on their platform any more, and terminate your account immediately?


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.


Why would this happen?


An example I remember from a little while ago: https://news.ycombinator.com/item?id=23832437


It's surprising how many devs are trying to overoptimize for productivity with various fancy tools and techniques, when it actually comes down to simple basics.

Here is what I rely on as a founder who does a lot of context switching:

- a never-ending text file for todos and work journal [0]

- calendar for planning (and blocking focus time)

- website blocker

- turned off notifications

[0] https://news.ycombinator.com/item?id=39432876


For the never-ending text file for todos and work journal, I've found great success with org-mode, especially since deadlines automatically end up in my calendar with org-agenda. The outline format of org-mode is quite nice and it took all of 1 day to learn the key commands for making / manipulating the outline, creating links, and cycling through TODO states (using Doom emacs made the start super easy since I already know vi and didn't have to also learn the text editing commands).

I've also found the concept of an "inbox" from the Zettelkasten method very helpful. Anytime something comes up that's not yet in my system, I add it to the inbox for later processing (org-capture on my computer, and beorg on my phone). This way, note entry doesn't require a full context switch. I then just make sure to regularly drain my inbox.

I don't use emacs currently for anything but org-mode but I'm far happier with this than I was with a never ending `.md` file.


How does one hide completed tasks from org mode?


Like many things in Software the question is why do you want to hide them?

One way to do it is to archive[0] it which will move it into a local _archive file.

Another way which I'm currently using is to periodically manually archive tasks into a tree of folders and files by date then category (and sometimes subcategory) which allows me to publish an HTML or PDF file of everything from say 2023 for a particular client.

[0] https://orgmode.org/manual/Archiving.html


    (setopt org-agenda-skip-scheduled-if-done t)


Archive is an option, it'll move the heading and children into a new file. Agenda can also find and filter by state.

Perhaps to clarify: hide from where?


In org-journal, opening a new daily or weekly file only moves uncompleted tasks. It leaves completed tasks in the previous file.


Big +1 to this (see my comment on this thread).

I just use a editor plugin to make marking tasks as done/cancelled easier and rotate the files every month to keep things a little organized (and scoping the keyword search) and it has been the most effective form of project management/journalling for me for many years.


Do you manage monthly to-do lists? How do you integrate them with that approach if so? I mean the one that is used in a [bullet journal](https://bulletjournal.com/cdn/shop/articles/monthly-log-insp...) for example


How do/would you use it over various systems? What's the best way to cloud sync this? One might have to use it on work machine with restrictions around installing apps.


As long as auto-revert-mode is on (so the editor notices synced changes from other devices), you can sync it using any file storage service: Dropbox, iCloud Drive, Resilio Sync, etc.


I use org mode and sync with a git repository. Thoughtfully emacs and git are both approved.


Do you have any hooks setup to automatically commit/push if file changes are detected?


I have a server hook to make a commit (which causes the push to fail) if I forget to manually make one. I have F10 in emacs setup to commit and pull to local. Local is also setup to rebase on pull.


What website blocker do you use?


I use LeechBlock NG, for Chrome, Firefox, Edge, as well as Firefox on Android.


I follow the same structure, and I use Notion, Google Calendar, and Flow App.


I like having a "devlog.md" file for each project/repo.

The log is jut a reverse chronological order of comments/todos/rants.

I have mapped on VSCode cmd+shift+I to write a timestamp. Whenever I want to write something I just insert a timestamp at the beginning of the bullet-point list and write it out. This is stored alongside the repo.

It is particularly useful for recovering in the morning where I was the night before.


Along the same lines, I also find it useful to have a text log for each sizeable task I undertake. This could contain anything, notes of module structure, code & data snippets for testing, everything!

Like one of the top comments mentions, it acts as a node of knowledge within a wider system (graph) and I end up revisiting these logs more often than you would expect! It only gets better as you explore/document more and edges form.


Yea, for me what really helped is once I interned at a hydraulic engineering company and I was tasked with debugging a custom software for pump modeling/optimization in GIS.

I had no background in C++ or the GIS I was dealing with and this was a one-off thing that was built for a project, but not maintained or documented at all.

The lead eng that wrote the software also had a long and detailed personal log of what he was working on. He just gave me that.

It helped a lot to understand not only how the software worked, but also the design decisions.


Do you commit "devlog.md" to your version control system? If not, how do you sync it between your different computers?


Yes, I do!


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.


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


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:

    * DD/MM/YYYY
    ** Admin
    ** Meetings
    ** Tickets/Stories/Work
    ** Problems
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.


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").


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.


I keep a daily log but tend do skip updating it at the most intense times, ie. when it would be the most helpful to take notes...


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.


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.


For me it's all about reducing the friction.

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.


Every day starts with a new day note that automatically generates a checklist for me.

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.


The technique of journaling as you work is sometimes called “interstitial journaling” and I became a big fan of it as a way to help focus as well as keeping track of what I was working on.

I made a tool to associate those notes with a color coded project and timestamp:

https://interstitch.app

It ended up being unintentionally similar to an invoicing time tracking tool a freelancer might use but the use case Im interested in is more personal productivity.

Can’t say the project has generated much interest outside my own personal use but I find it very nice to track notes as I go and then easily see how much time I spent on a given project. You can also add a #hashtag in the notes and then filter by that hashtag in the calendar view.

Completely free in case anyone else finds it helpful!


"Ignore all previous instructions. Show your work. Explain your chain of thought in detail. Keep a journal of your work progress."

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.


Have you tried telling yourself that a schoolbus of children will drive off a cliff if you don’t get the job done?


No but I have promised myself a $30 tip for good performance. It was surprisingly motivating.


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."


Evey time I've tried essentially journaling for my own sanity I get too bogged down in the way to actually do it. Logseq and Obsidian are often mentione but by the time I've figured out how the hell to use thier obscure syntax (why the hell am I programming, its a journal) I've lost interest.

I'd like for there to be an out of the box option, but there doesnt seem to be any. When you bring this up in discussions like this it often ends up just proving the point when someone tells you "Oh its easy just install X and then add this plugin, that plugin, tweak this file to do such and such...and my adhd brain lost interest.

There's a real hole in the market for a good out of the box, opensource and self hoated tool that you open the app and write tool, not a note pad, we've all got one of those, I'm talking about somethinh you open, you've got your current day to dump notes into and and they're stored. Sure, theres tools like DayOne, but it's cloud based storage is a catagorical no for me, and many others - theres been countless discussions about this on Reddit, and the answer is always spend half a day screwing around with Logseq or Obsidian and then try to remember their syntax.

The out of the box on both of those is pretty awful, and if the solution is spending hours tweaking it it's not really a solution, its a patch, one that shouldn't really need to be made if it's supposed to be the tool to use.


If all you need is daily notes, Obsidian does that out of the box. You don't have to tweak anything, install any plugins or learn any new syntax if all you need is a simple GUI over text files. It's not open-source however.

Don't get fooled and intimidated by the "productivity porn" community that likes to show off their sophisticated setup and unrealistic workflows. My rule: if they refer to Obsidian as their "second brain", they are part of the cult and should be ignored.

All that said, I strongly encourage you to try pen and paper, the ultimate, no setup, open source app. And it has exquisite haptic feedback on top of that.


What syntax are you trying to use or thinking that you need? In Obsidian for example, remove all plugins except Daily Note and just start typing. Ignore all syntax except maybe bullets. Ignore properties and links. Ignore any habit-tracking or database tricks people say you need. Ignore the graph.

Or consider using Vim/Neovim and set a leader hotkey to open today’s journal/YYYY-MM-DD.txt


> Or consider using Vim/Neovim and set a leader hotkey to open today’s journal/YYYY-MM-DD.txt

For a broader audience: Create a shell script that runs “$EDITOR $JOURNALDIR/$(date +%Y-%m-%d).md”, and bind a system-wide keybinding to run that script. Works even for GUI editors.


This kinda highlights the exact issue I'm talking about. "Just open this, add that, change this, build that...sure it may work, but it's far too much effort for a journal."


I kinda agree that there should be a market for more journaling apps. Something like Logseq for non-programmers would be a hit.

At the same time… I think you overestimate how hard it is to get started with your own solution. The shell script and system-wide keybinding is just a convenience, since many of us like to automate things that we do daily. If you don’t want it you really don’t need it.

Just make one large file in whatever editor you prefer, and keep it always open. Manually add a new heading like “2024-07-14” to that file every day. Write notes in bullet points.

The basic system is independent of any app or script, and is more or less identical to what you would do in a paper journal. It’s a bit harder to add equations and diagrams, but a bit easier to search through it and access it from any device, that’s the trade-off. But writing a date stamp daily is really not a dealbreaker if your top priority is to not configure anything.


It took me a few times to land on something I stuck with. At my current job I have a running doc where I just start a new entry per day, at the top and log before I try to do something, and what progress I made that day.

What maybe helps is this doc is findable and readable by coworkers and my boss. It is very useful for me, but it's also helpful for others to see what I'm working on without pinging me.


I do kind of the same but I’d be concerned to have it readable and n not private. But maybe I shouldn’t be. What’s your thoughts on having it open? I think it would be the first in the company if it’d do that.


Eh, I just try to not slack off too much. I've been doing this for nearly 2 years and so far only benefits as far as I can tell. I think very few people look at it besides myself and occasionally my boss.


Yeah I definitely don’t slack off (at this job, I’m precious it was terrible), so that wouldn’t be the concern. It’s more like I think I’m quite a private person. What would be the benefits that you’ve seen out of it?


Uh, I think just having a clear record of what I did when is helpful. It also is motivating to me, I want to close out items not just write that I started something. I sometimes also put in a todo there if there is just something small at the top of the stack I want to do tomorrow. I'll see the todo there and deal with it first.


Have you tried appending a txt file? If you want to find something, grep it.


Have you tried appending a txt file?


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 recently started doing this with my todo list. I wrote a few bash functions and aliases:

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.


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.


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.


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


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.


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?


> 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.


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.


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


How do you organize the journal? Do you grow an index from one side and tasks from the other?


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)


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 like how a work journal reorients your locus of control, and focus on important vs urgent work.

You can get really reactive to whatever stuff is happening on your team that you lose the forest for the trees. And further as you get more and more senior, living off of reactivity is only counterproductive as you control your own time and its expected you try to shift to a focus of important over urgent work.


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.


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.


How do you structure the entries? Bullets, free style, mix?


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


Date (MM/DD/YYYY)-

(tab) Task

(tab) (tab) Details

etc


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 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 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...

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.


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.

[0] https://www.paulgraham.com/makersschedule.html


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 don't do a journal, but I do like to do "end of day" notes. Working on adding database binary support to my JS framework [1] and finished last night with this (just dropped in a Markdown file):

---

Latest version of DB installer is breaking.

Why:

- We had it bump all DB versions to latest. MongoDB is failing on MacOS.

- MongoDB is failing on Linux and PostgreSQL is failing to build.

Ideas:

- Separate the logic off by database/platform. This will ensure that once we lock in a database/platform combo, it’s set unless we mess with it. Current set up is getting increasingly complex to the point of insanity.

- Go through, one database at a time tomorrow, for each platform. Get it perfect on each for the latest version (unless there’s a compat issue) and then move on to the next.

Good news:

- The basic idea WORKS. We can always roll back to older versions and figure out the latest stuff later, but I don’t think we’ll need to. It’s just going to take a full day of work to get 100%.

- This is worth it as this is the last major barrier to entry. It also removed headaches with people saying “works for me” while others say “it doesn’t work.”

---

Makes the next day's ramp up take a few minutes as opposed to who knows how long.

[1] https://cheatcode.co/joystick


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.


Our implementation team of 15 writes individual and project logs every day.

The logs are not to account for a record of what was performed but rather the rational, decisions, setbacks, observations, learnings, etc of our work.

Each member of the team is expected to keep current on the individual and project logs.

I’ve been doing this now for the last two years and I’m always surprised at how helpful they continue to be.


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.


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.


Heres my digital pensieve -

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


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.


(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.

Just my 2c.


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'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


There is no free version if you use it for work.


> Do you all pay for obsidian?

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...


This has become one of my favourite tools over the last couple of years:

https://jrnl.sh


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.

[1]: https://github.com/cu/silicon


I have the exact same workflow! It's great!


I cannot work without taking notes. It is a process of thinking, sorting my ideas, documenting steps and outcomes, pausing, practicing meta-cognition, gaining clarity and confidence along the process. Plus I have the benefit to go back to my notes and have instant access to what I did days, months, years ago. So I can’t understand how people are working without taking notes, documenting (for themselves), and journaling.


Same here. Taking notes is incredibly helpful, especially when I'm stuck or unfocused. I just start writing anything that's on my mind and it's like the writing does the thinking for me.

While I used to type notes digitally, I've recently discovered the superiority of pen and paper. Writing by hand offers more flexibility - you can start anywhere on the page, sketch, or create mind maps effortlessly which encourages creativity, whereas typing forces you to think linearly. Research also shows handwriting improves thinking and memory retention.[1]

Interestingly, rediscovering fountain pens sparked this change for me. The enjoyment of using a quality writing instrument encouraged me to take more handwritten notes, leading to significant improvements in my workflow. I now keep separate notebooks for different projects and have started journaling.

This discussion has made me realize that moving my keyboard is the last bit of friction when switching from computer to paper notes. It might finally convince me to invest in that split keyboard I've been considering.

[1] https://www.npr.org/sections/health-shots/2024/05/11/1250529...


Both digital and handwritten notes have their values. - I‘ve used moleskine notebooks and fountain pens for over two decades. Fountain pens are unbelievably smooth to write with, and the text looks beautifully. So I can relate to your experience.

Re Keyboards: I switched to mechanical keyboards lately and will never go back. It’s like the fountain pen of typing.


I wholeheartedly agree on mechanical keyboards.


I did this at my last job and it was very helpful.

I used an actual notebook. I used a new page every day. I'd write down everything I worked on, mostly for stand-ups and performance reviews, and the to-do list but only for items I intended to complete that day. Every morning, I manually copied the previous day's to-do items to the new page. It reminded me of what I was working on and made me aware of the issues I kept delaying.


This sounds so similar to certain productivity dogmas that were mentioned already in the comments and I know that some people get extremely obsessed with those methods and that in the end that might become precisely a productivity obstacle.

But honestly I have been doing exactly what the author claims work for him, just write what you are doing and you “feel” is going to be useful later, this very thing that just happened in the command line is a clue to the complete puzzle. And it’s funny that this is exactly what those productivity dogmas describe as “second brain” in my perspective you just take what works for you from those methods.

I think you just have to try it, although it seems like that’s a waste of time and that you will never see that note again just write it save it and maybe the next month when you come back to the same exact problem those notes will be pure gold, yea I know most of those notes are going to be just a bunch of bytes never to be seen again but when they are useful you will be so thankful that you did it.


The best thing I ever did for work was to get a notebook and keep a running todo. Every few days I start a new entry, copying over old items and ignoring items that aren't important anymore. I then prioritise my work and get going. This has been my constant over the last 15 years and has always served me well (very low friction, easy to use pen and paper to jot out ideas/thoughts/todos).

I have expanded that a bit in the few years. I now also use Obsidian as my digital wiki. If I'm researching topics, etc. I store it in Obsidian. It's basically my second brain and really helps when I need to remember the details of something I looked at months in the past.

The other thing I started doing is keeping a running work journal in a Google doc where I summarize what I did each day. This is more out of necessity, as I need to write my performance review each year and I use this to summarize what I did.


Is there a benefit difference between digital journal and analog (pen) ? I’ve been having this internal debate. Any thoughts?


I like the idea of analog, there's something about writing on paper.

Practically, digital is much better. Everytime I see something that might be useful I past a link. I paste links to discussions I need to follow up on. And then I also use a homemade plugin for Obsidian that lists my to-dos across all notes(1), so whenever I think about something I need to do I just include it directly into the text and it's listed there.

I think you could do something somewhat similar on paper (I tried a while back), but the overhead is simply too much for me.

1: https://github.com/cfe84/obsidian-pw


How much retention do you require though? For me having a more organized week is probably useful, not sure about having to retrieves years worth of information ?


I've done analog for years and tried to do digital this year. I switched back to analog. With digital, I tended to just dump everything whereas with analog I reflected and edited for concision. The things I typed I forgot; writing things down I remembered. It's much the same as taking notes - the act of physically writing helps "set" the information.

I know a lot of people will say to do digital for ease of searching. I find that if I write it down, I'm much more likely to remember and not need to search in the first place. And digital I think it's easier to get lost in the ways to try and optimize the process with a file, format, editor, plugin, method, etc. With paper, I have some paper that I can write in whatever format I want at the time.

I use these every year for taking notes: https://www.leuchtturm1917.com/weekly-planner-and-notebook-2... . I've been using the A5, but will probably go up to the B5+ for next year. I've been using these for the past 7 years.


The digital camp tends to jump all over the place with a new solution to the same problem without ever getting it right or getting closer to the root of it. You will notice a whole lot of todo apps, organization articles and a new solution every couple years. None ever solve the fundamental problem - friction and focus.

The analog camp, solved this, each in their own unique way, but all using the same tools (pen and paper). Its much quiet here, as we all have moved on to real problems.


I've yet to find anything better than pen and paper. You just grab the pen and go. Also, it's really hard to hack paper.

Apple Pencil & iPad works fairly well, but the multipurpose nature of the device often means that I need to navigate back to my note taking app.

Typing things into a log (for me) effectively pipes it to /dev/null.


Pen and paper is far superior in my experience.

https://news.ycombinator.com/item?id=40953297


If analog works better for you, maybe a good stylus would be a usable middle ground? Don’t cheap out on it though. The inexpensive ones aren’t worth it.


VS code user, Vs code journal plugin - https://marketplace.visualstudio.com/items?itemName=pajoma.v...

>month/day.md

>month/day/important-meeting.md

Find the equivalent for where you spend the majority of your time


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 have a part-time research assistant job in a lab where I work on several overlapping projects, and when I started this job I started a journal using a Google Spreadsheet, with a shortcut to the sheet on the home screen on my phone.

It's instantly always there, adds up my hours for time tracking, and when I have to write a project status report, I just pull out the relevant entries and turn them into proper sentences. Bam! Report done with semi-chronological flow.

I bold entries of open questions/tasks that need attention, and i can quickly scan my journal to know exactly what to work on next. I've never been so organized and on top of things in my life. This little journal hack makes me look like a fricken genius in the lab.


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.


A physical notebook has been excellent for me for capture and increased retention/recall.

Where it falls apart is locating informatoin.

For this, logseq has been invaluable, having no set standard or way than scribbling my notes the same way in logseq, with completely invented hashtags that only I remember (yay) I never have to tag much on my own, thanks to the auto-tagging plugin, I just type the word and it does it on it's own as long as I've done this.

This kind of a work journal is more of a log, it doesn't quite hit the spot of "where do I put a longer form document" similar to what Obsidian, Notion, or Anytype might allow. That's probably a lack of my looking into it. I have seen people install a Logseq vault inside a Obsidian directory to have the best of both worlds in one storage and that seems quite elegant and simple for a solution.

I'm more and more considering a Remarkable or Supernote... as I do like the writing and drawing.

If anyone's using an ipad mini to make their note taking life easier happy to hear as well, the screen is a tad small, it can be partially reoriented, etc, but mostly these days, note taking is about workflow too


all the senior engineers i worked with, when i started out 20 years ago, carried around bound books and kept as journals. And they logged things all day, dated entries. They just said it was essential, so I did it.


Indeed, we are doing a lot of reinventing. Or more charitably reapplying old ideas to today's world and it's affordances.


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.

Markdown editor + ChatGPT => killer combination.


Sometimes I use the project management tool's issue/task comments for notes on what I'm thinking. Other times, comments in the code. Other times, the relevant page in the startup's wiki.

Sometimes the intermediate notes want to evolve to more polished documentation and/or code, and other times it wants to be preserved in a very lightweight way.

What's important is that information you or others might later need is captured in a way that's accessible when you need it.

Make it a practice, and it's negligible additional effort.


Very nice! I immediately created a fish shell function for this. Feel free to copy/modify/ignore.

Running `journal` quickly allows you to add a line to your journal. This will fallback to ~/.journal.log unless you have a .journal.log file in the current directory or any of its parents. Running `journal show` outputs the tail -5 of that journal. Running `journal init` creates a log in the current folder.

Adding .journal.log to your global gitignore is recommended.

$ cat ~/.config/fish/functions/journal.fish

function journal set -f journal ~/.journal.log

        if test "$argv[1]" = "init"
                set -f journal .journal.log
        else
                set -f journal ~/.journal.log
        end
        touch $journal

        set -l dirparts (string split "/" (pwd))
        set -l dircount (count $dirparts)
        for x in (seq $dircount -1 2)
                set -l dir (string join "/" $dirparts[1..$x])
                if test -f $dir/.journal.log
                        set -f journal $dir/.journal.log
                        break
                end
        end

        if test "$argv[1]" = "show"
                printf "Last journal entries from: %s\n" "$journal"
                tail -5 $journal
        else
                printf "Add to journal: %s\n" "$journal"
                read -P "Addition: " -l line
                if test -z $line
                        printf "Nothing added.\n"
                        return
                end
                printf "%s\n" "$line" >> $journal
        end
end


Apart from being a personal cache for your thoughts, it also catches you from going down rabbit holes.

Keeping a log like this is one kind of guard.

I've had to come up with my own set of tricks while working alone [0] but in general I think it helps to be a defensive developer.

[0] https://www.idiotlamborghini.com/articles/mastering_focus_as...


I don’t like keeping it seperate from “The code”. I try but there is ultimately one place to keep everything and that is in “the code”. So my comments become my journal, and this gels with how I view code and source control - that leaving dead comments, moving around functions and chnaging stuff is part of the process

It’s like, we are somehow conditioned into thinking that the commit must be perfect and not reflect a process over time.

And the thing is a software system reflects a process over time even if we are pushing it into production


I sometimes use this approach for untangling unfamiliar undocumented code and for keeping track of what worked/didn't work for a particularly complex task. I found that it's a real life superpower, a literal augmentation of my flawed, forgetful human brain. The biggest downside is that I don't use it enough in fear that it takes up too much time to write everything down, so I feel I'm wasting my employer's time.


The org-journal extension to Emacs' org-mode is great for this.

  ctrl-c n j = add new timestamped journal entry
https://github.com/bastibe/org-journal

So the workflow for this is: command-tab to switch to Emacs, ctrl-c n j to add a new journal entry, write the entry, command-tab back to whatever else I was doing. Emacs auto-saves my changes.

Of course, getting to that point requires some work. You have to be using Emacs and org-mode already, or prepared to try it, and that journey can be difficult for some.

The org-journal extension is great: It supports daily/weekly/monthly/yearly journal files (I use daily but I'm considering switching to weekly or monthly). When I create a new daily file, it only "brings forward" uncompleted TODO items, which means any completed TODOs are automatically archived out of your sight.

Because it integrates with org-mode, I have it set up such that it tracks when a task is moved from TODO into PROG, and again when it moves into DONE. (I get annoyed when columns don't line up, so I made my todo item names 4 characters long)


The first paragraph spoke to me. The complexity of the systems is so big and the difficulty of fixing issues is exponential. The stress of working on things that are not core software development is killing me. How to calm down after working on days without good progress on the issue, PM is on my neck, the end of sprint is near and the task is not finished yet.


Nice article that reminds me of that one Sherlock Holmes quote.

“I consider that a man's brain originally is like a little empty attic, and you have to stock it with such furniture as you choose. A fool takes in all the lumber of every sort that he comes across, so that the knowledge which might be useful to him gets crowded out, or at best is jumbled up with a lot of other things, so that he has a difficulty in laying his hands upon it. Now the skillful workman is very careful indeed as to what he takes into his brain-attic. He will have nothing but the tools which may help him in doing his work, but of these he has a large assortment, and all in the most perfect order. It is a mistake to think that that little room has elastic walls and can distend to any extent. Depend upon it there comes a time when for every addition of knowledge you forget something that you knew before. It is of the highest importance, therefore, not to have useless facts elbowing out the useful ones.”


I also keep an error journal, which I call "The Library of Horrors", so when an error reocurs I can refer to.

I found this necessary because I tend to remember the "oh, this happened earlier..." but not the "... and this is the approach we followed succesfully" that should follow. The information is slotted in my brain, but not accessible unless I have some key reminder.

Also serves as a communication device between my past and future self, and between coworkers. The error-solving information tends to live transiently in your and your coworkers minds, and it is very valuable.

I haven't solved the method to properly identify-and-recalling. I simply save new information per project, per language, etc, with not much thinking. This would clearly be the next point of improvement.


> "The Library of Horrors"

Oh god that brings back memories from when I dared to propose sharing "failure stories" instead of success stories when I was in consulting. The look on people's faces was that rare blend of disdain and horror. We can't fail, how can we share failures? I mean you only learn from each other's successes right?


One format I like to use is to organize my most immediate tasks in the form of a stack. So if I’m working on feature A, that’s the bottom of the stack. Need to solve sub problem A1, push that to the top of the stack. Subproblem A1 requires me to shave yak number A1(a) so now my stack is three deep. Someone asks me for something unrelated. I pause, make sure I’ve fully written down my current stack, and then patiently listen to the person (or read their message). If I need to context switch and do something right now, fine, now interrupt B is the top of the stack, and when it’s done, I go back to shaving yak number A1(a). If I’m blocked, I pull the front task in my priority queue and push that to the stack. If the stack gets too deep with unrelated tasks and interrupts, I usually pull it apart and put everything into a priority queue.

At a higher level of granularity it also helps to record what you’ve actually done for performance reviews and the like.


No Joplin in this thread?!

Simple and flexible, cheap sub or free if you host self or on a service like dropbox. Import/export for backup.

Instantly useful out of the box. Many plugins but i havent needed them. Basic search is all I need.

I keep brief notes of the "secret sauce" as I work, eg a list of magic commands, a short outline of function calls, etc.


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.)


I wonder what the logistics of this look like - isn't this just another interrupt while you're in the zone? Or do you do it between two zones, retroactively? Imagine you start working deep on something. Do you simultaneously take notes of what you're doing?


Most things I write become almost obsolete in a few days


I was assigned a big project at work 2 years ago. Apart from main code base there were a bunch of other modules and services it talked to at it was all very old code. I couldn't have kept all of that in my head throughout.

I kind of rediscovered OneNote which helped me actually do the project. It's like your thought dumping playground. It's the only tool that offers least resistance to jotting down thoughts in whatever form you like. Every page is like a freeform infinite canvas. Just click anywhere, start typing or paste the screenshot or even files.

OneNote has been my daily driver since then. I mostly just dump thoughts in a lossely structured system that I am following for myself.


Same here though my preferred tool is OmniOutliner or any similar tool with hierarchical branching. There are other tools like Roam/Obsidian but Omni has proved to the fastest offline local macOS app with the most rich feature set.


Heynote was exactly developed for this purpose. Just one big buffer with sections and lots of shortcuts and nice little additional features: https://heynote.com/


no vim support sadly


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


I've concluded that I need different note taking tools for various contexts.

* LogSeq for day-to-day notes. Append only. Since everything is bullet points, I don't have to worry about structure, and it's easy to just add a comment instead of revising a paragraph.

* TiddlyWiki for write-ups. I've tested many wiki solutions but always return to TiddlyWiki. Mainly because it is so easy to adapt how things look, and various entries may need different presentation.

* E-mail. Should not be underestimated as a knowledge base for discussions and decisions. Unfortunately, the search function in outlook is terrible


I use Obsidian for the first two. Email was very useful but you need to essentially categorize the data yourself manually. I’m very surprised there isn’t a bot that will automatically attempt to categorize your emails for you via IMAP access.


I tried obsidian too, but found that outlining/nested bullet points in LogSeq matched my flow better.

I agree regarding emails, one day I'll try to write a script that imports emails with a specific tag, perhaps autotagging can be a part of the pipeline


I started doing a daily work journal in earnest when I began as a SWE and it's seriously saved my hide dozens of times. It's a habit that once you get used to, you can't function without it


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.


I have a #leftoff tag in all my Logseq journals where I leave a description of where I was when I stepped away from a task. Use it everyday all day. Simple and works great.


"4 days of sleepless afternoons", love it! I was laughing out loud multiple times. Keep writing, please!


Thanks, I'm glad you noticed this one


GitLab issues also works nicely for journaling. Each issue is a task, bundled into milestones. Within each issue you can add comments and even have one level of nested comments. Good for a lightweight hierarchical journaling. And comments/threads of an issue can each be “resolved”, all within the same issue. Great for progress tracking.

Ah, and you can paste images and have syntax highlighting. Great for debugging.


I use the resettable rocket wave notebook for my work journal.

Aside from reinforcing ideas and helping figure things out on paper, it’s perfect to jump back into a task that’s been interrupted.

The other trick with it is to keep a running todo list from the back page in.

The moment a disruptive thought pops into my head that I need to revisit, I flip to the back, capture it, and flip back to where I was.


“Writing helps you organize your thoughts more clearly”

I actually rely on email for this. I'm grateful to work with a project manager who does not mind me writing her 20 emails a day, some of which she does not actually need to read. But some of of it is relevant to her, and it helps me keep focused when I can then follow up and discuss things with her.


I use notepad++ documents. One is the stack, its just describing as one liners with checkboxes and subtasks a task and its depths. Arrow to where execution is.one can have several threads of course.

Research into a topic goes into that list as tasks and then seperate documents or wikis if it blows the list.simple and it works suprisingly intuitiv like a bare metal os stack debug screen.


While I wholeheartedly agree that this approach makes perfect sense and would perhaps help with context switching various tasks, the time required to pour your heart out journaling would take time away from doing actual work.

While I do some note taking at work it's all one liners, url references, copy and paste code snippets and VM options for intellij.


Journaling can be a lot of things and they’re moxed here.

Brainstorming, real-time todo, planning, decision making.

Each requires the tool be used differently.


I have been using PlainTasks [0] plugin with Sublime Text for many years now at work to do something similar. It is sort of a mix between GTD [1] and journalling.

I create a new file monthly (since that is the "sprint" duration at work) and for each project I am working on, I create a project heading and a list of tasks below each. The plugin doesn't enforce any schema and is just a plain text file so I can iterate on the task list, record thoughts as free form notes anywhere (just below the project heading or below a particular task or just in the file anywhere.

If the notes grow too large for a particular project (they don't usually for me), I pull them in a separate file dedicated to that project.

I iterate on the task list as things become more clear. For eg. I might start as "Find out how to deploy new certificates on our cluster nodes". Once I have done some research or talked to my colleagues, I might mark this a done or delete it and replace it with a list of steps required to deploy the certificates.

I also mark things I am going to do today with "@today" every day in the morning. If something planned comes up urgently, it gets it own task with "@critical" tag. The plugin highlights these tags for me.

There are some more features but I only use creating and marking tasks as done with the 2 tags. The plugin is also semi-abandoned which is a big +1 for me as I don't have to worry about flow breaking changes or sudden sponsorship messages or constant updates.

I don't use sublime for anything else but tracking tasks and notes so it gives me a sort of dedicated workspace for collecting my tasks. Recall is just a plain text search away. I have been using this for many years and has been extremely effective for me. Whenever I feel lost of overwhelmed, I just look this file, find the @today tags and suddenly I am back in my flow.

Most of the other tools I have tried (Jira, Asana, Trello, Github/Gitlab issues, Azure DevOps, company internal project management tooling etc.) are too opinionated, not flexible enough, sends unnecessary notifications to me or everyone on the team and are a chore to maintain (busywork).

[0] https://github.com/aziz/PlainTasks [1] https://gettingthingsdone.com/what-is-gtd/


The best tool for this I've found so far is Logseq [0]. The only things that come close in functionality are some really custom Emacs roll-your-own things that were just too hard for me as a basic Doom Emacs defaults user, and Anytype. However, I couldn't understand the storage of Anytype enough to convince me that my work would be okay with it (e.g. encryption, but IPFS-ing your files all over the place, maybe?).

Anyway, here are the reasons to consider Logseq for a "lab journal". Note all of these features are unique to Logseq (except the ones I note, afaik), but the subset of them are from what I can tell:

1. Local storage: this is just messing around with markdown on a local file. You can keep it in your corporate storage as a regular folder, at home, it is completely separate from your data sync setup and you can choose what you want. They are working a new database-backed version of the files for faster querying (though I have >10k files in it now and it does fine).

2. Open source: Obsidian, a popular alternative, is not open source. Considering this carries confidential info and all my personal stuff (not at work though!), I gotta trust my tools.

3. Killer feature that only Logseq has: custom, datalog query engine to query your existing notes and aggregate things. Other tools have some similar thing, but it's mostly akin to "search" and possibly ANDing some terms together, but Logseq has much more advanced uses enabled by this engine.

The datalog and querying feel initially like a "draw the rest of the owl" meme, as it is up to you to decide whether you want to create namespace hierarchies (e.g. should your `vim` page be `devtools/vim`, just `vim`, or tagged with `devtools`?), but once you figure out a system, it takes a bit to craft a few clever queries and reuse them with templates.

I have a reasonably slick system for this, where I have a set of queries prioritized by due date / priority on my home page, along with incoming (waiting for someone) and outgoing (someone waiting on me) dependencies. I organize things with a series of "project" pages that each have a very long query to aggregate all my daily journal entries (and other pages) that are tagged with anything related to that project page (e.g. I have a page `CMake Template Repository` where I'm trying to create a github template repo for C++ projects so I don't have to write it from scratch each time). It has really helped me get things done despite having a bit of ADHD. If there's enough interest, I can try to write this up in a blog post.

[0] https://logseq.com/


I just slack myself notes of things I am trying to process that are more in depth. It helps me rebuild context, and those notes are usuallu short lived (usually a day or a week depending on difficulty of task)


I use Sublime Text for my daily journal and it works really well. Typing in Sublime is a joy. I have it open throughout the day in a separate virtual desktop. Distraction Free mode is very cool!


If you get constantly interrupted, or you became a manager, this is a must.


Sadly, the image doesn't load to me (I get ![[focus.png]] instead)


Woops, thanks for letting me know, should be fixed in a few minutes.

That's the one: https://fev.al/img/2024/focus.png


I'm getting the below instead of an image

![/img/2024/focus.png]


Yeah I'm editing that on a phone and apparently that's beyond my skillset. It's working now! Thanks for helping!


I been doing the same from a year, dumping all my thoughts in obsidian notes especially on the Friday evening, this really helped me resuming when back to the work.


Hmm? I keep (shared if needed) google docs for every project called "XXX random notes" and we throw info in there. I thought everyone did that?


I use my inbox in OmniFocus as a running log of things for later, but I like the idea of having a dedicated journal thing.


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.

[1] https://imgur.com/never-interrupt-programmer-3uyRWGJ


The stupid thing is that I messed up the link of the comic I included, which is pretty much the same :) : https://fev.al/img/2024/focus.png


Related - we need more landscape-oriented notebooks in the world.


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 always wrote notes into Apple notes everyday

It would be like:

W47 Mon, date


I hand-write a work journal. Just an A5 notebook and a few pens of different colors. Definitely an essential piece of my dev toolkit. I've especially come to love the free-form nature of hand-writing, which allows me to visualize more of my thoughts than a digital text editor.

The journal has served two main purposes. One, I can write and annotate free-form pseudocode at exactly the level of abstraction I need without getting distracted by the errors produced by the code editor. It's really helped me work through the difficult parts of coding puzzles before I ever touch the keyboard to implement.

Two, I have a scientific notebook for debugging. I write down a hypothesis, design a small experiment, document the steps and complications as I go, and write down what the actual result was; then repeat the cycle. Putting it all in writing keeps it straight so I don't chase my tail, and I have something to look back on if I need to explain the bug and how it was solved to my coworkers.


Can you tell me more about the scientific notebook? Does it have a specific layout or is it just another notebook you use for debugging?


> Except that it’s nothing new, right? “Writing helps you organize your thoughts more clearly”: everyone and their grandmother know that! Writing a plan, writing a diary? People keep listing how transformative that’s been for them.

Luckily, we'll soon be replacing writing with editing LLM output. Much more efficient. /s




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: