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.
I wrote a program (used from a CLI, but I mostly use the GUI I developed for it) to do something similar for my own use: https://github.com/lelanthran/frame/blob/master/docs/FrameIn...
I use it daily.
I keep the notebooks but rarely look at them once they are filled. Maybe once or twice as I switch to a new notebook and then once again when it comes to yearly review time. A couple of times I have rifled through old ones looking for command line flags but most of the time reading through the notes is enough to jog my memory.
append only log works, but skimming through 2 months of logs for a specific thing is poor and slow but very useful. I don't do that often but when i do need it sometimes and especially fast, like on a call, with no lead time. Its a superpower.
I now organize my notebook a with a few conventions that make it more useful.
I limit myself to using only the right side of a page for logs from whole week. Each new week gets a new page, always on the right side. Put the date as the page header. Makes skimming easier. Put any important tasks / targets for the week right after.
Further Split right page into 3 columns. First 2 for work logs, third column for recurring weekly/biweekly meeting stuff. Very easy to go back to what was discussed 2 months ago. All logs are usually 1-3 words. Just cues. but everything has a topic subheader.
Left page is free form for detailed stuff. Things i discover, design, 1:1 meeting notes, questions i need answers to, philosophy, anything new on HN, etc. Right page serves as context.
I also do an index on the first page of the book pointing to anything that i find repeatedly useful. Could do page numbers but i put the date as its naturally ordered by the dates on the right page.
Been doing this a while and works perfect. I have everything I need in one notebook, i can carry it with me. a $1 composition book with 50 pages lasts well over six months.
I use a lot of diagrams / sketches / arrows between things / etc, so doing it all in text on a computer is too cumbersome.
Of course, with paper, looking up something from the past is a pain sometimes.
Just fyi in case it helps : - )
Lots of space to lay out your ideas and get a great overview just not very pocketable.
I currently use a TODO text file in the root of each project I'm working on, which I update right before I stop working. The lists are hierarchical, so each task I'm focused on has a parent item, which helps me remind of the bigger picture.
Now, having said that, shoving jira down peoples throats with all kinds of rules around tagging and whatever wears people out.
So, yes, a text file, a google doc, linear or a few post-its on the wall.
Agree, though I advise folks that tooling matters tremendously, because a bad tool requires more discipline to continue using than a streamlined tool.
Toil and friction are killers.
In "Secrets of Productive People" Mark talks about building systems and that the lower level / background things should be reliable and without friction.
"Good systems for simple administration will free your mind for more productive work. Ideally you shouldn’t need to have to think about the lower-level stuff at all. Thinking needs to be kept for the high-level systems, which will be designed to fit each particular case. But even then the aim of designing a high-level system is to avoid eventually having to think about that system too."
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.
Too many bells a whistles to tweak, and isn’t conducive to consistency.
I agree. The "tool" I have simply maintains text files and provides a streamlined way to display/edit the current one, switch to some previous one and switch back.
I made it to manage context switches. IOW, it's not to serve as a journal, it's to serve as a swap partition for my brain.
I share this in case there are others out there who work the same way. Let's band together to establish a tab-friendly Markdown variant!
If someone wants to try a similar flow but cannot run the above for any reason, git can be used to achieve something similar. You can also make use of existing tooling around git for shell integration like PS1 and gui.
1. Your main/master branch is your root frame.
2. Child Branches + branch commits themselves are messages.
3. Pop is hard reset of branch to parent or branch switch
The main idea is your log resides in commit messages and not the commit data itself. You can try using commit data too but limit that for shared contextual information.
Wrapping it up(to generate phony changes and running git) in shell aliases or functions should be easy.
In general, I like the idea of ruthlessly tracking what I've done like this. But I think that it is still missing the context of the environment... meaning, if you are editing a file, it would be nice to not only know that you edited file A, but also that you changed line N to X.
I've spent a decent amount of time thinking about this over the years and haven't fully figured out a good solution. I was a wet lab scientist for a long time and we have the tradition/requirement of keeping a lab notebook. This is something that is incredibly helpful where you keep track of what you've done and what you're planning to do. I've missed this when I switched over to mainly computational work. In the past, I've thought about maybe having a loopback FUSE-ish mounted directory to track changes to files would work. But I think something akin to working in a git tracked repository (with these intermittent commits per command) might make this work better!
One. In your experience of using it for a while now, what is a typical tree size? What’s the highest it’s ever been?
Two. Why did you write it in C? Several other languages would surely make it much easier to implement that program. Not a critique at all, just curious. (I’m actually glad you wrote it in C. It’s a nice, reasonably sized piece of code to peruse.)
For me, the deepest node has ~ 25 ancestors. I don't know the largest depth it has ever been.
> Two. Why did you write it in C? Several other languages would surely make it much easier to implement that program.
I'm competent enough in C that it didn't matter to me, and the important thing was being able to call the library from any other language. Easy FFI made it quick to make a GUI for it (I primarily use the GUI now).
The library is in C, so others can make GUIs and wrappers in whatever language they want to, which is something I would like to encourage.
I did originally have that; it lowered the signal:noise ratio.
I've found that there's isn't a need to keep around any frames of context for things that I have completed: generally there's already an artifact from that frame of context anyway (write this function, call that person, design that foobar, etc).
If you’re working on a particularly complex frame, how do you maintain context?
Since each frame is a subdirectory directory in ~/.framedb/root, I can simply `mv` them. TBH, I've never yet found a need to rearrange them.
> If you’re working on a particularly complex frame, how do you maintain context?
I create child frames using whatever context was written into the current frame.
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.
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.
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.
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.
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.
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.
It is just folders and markdown so it is ultra portable, but the obsidian editor has tons of useful features like a graph view, autolinking, and a plugin in for anything you can think of.
There are tons of YouTube videos and articles describing different organizing systems and ways to use it.
The ideal tool, which I don't think exists, would combine the immediacy and locality of nvAlt and bidirectionally map to something like Jira for sharing, distributed as a browser plugin and/or a simple server component with local write access.
That is a problem I've experienced too. Therefore I currently write my comments in plain text in the IDE I am using (WebStorm), which saves them as text-files.
I used OneNote for some time but I realized there is a lock-in because it saves its notes in its proprietary format. And now it seems its content can only be saved online on Microsoft servers.
On the other hand if there was a clear rationale as to which type of notes belong to which tool then using multiple tools can actually help you find your note later.
For example: Use your fridge-door for post-it-notes about what food we need more of.
This may have something to do with the "Memory Palace" -techniques. You can remember things better when you can associate a path to finding them. Food? I must write a note about the food. Where should I save it? Preferably close to the fridge, because that is where most food is.
Here's a trick I am using to write my coding-notes: I actually write and save them in files with .js -extension. I can have multiple such files for different aspects of notes. I can write notes about my app specification in one file and code-notes in another file, and what was done and what remains to be done in yet another file.
That means my notes are comments in syntactically valid JavaScript files (which exists only to store such notes).
Now I can use the Expand/Collapse feature of the IDE to collapse all comments to their first line, which is the title of the note.
I can also save real JavaScript functions within the same file and have them syntax-highlighted, so I know the code-examples are valid JavaScript.
I also use a WebStorm macro to generate tags based on current time and/or date. Saving them with the note allows me to refer to that tag from other notes. A bit like hyperlinking, but for text-files.
I'm not sure how you can get more plain-text than that.
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.
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).
This is the key point - capturing, organizing and retrieving notes has a cost. And I find myself always paying for notes out of my "just do it" budget. Especially when virtually all of the things I'm working on (notebooks, libraries, applications, planning documents) are themselves a form of writing, having yet another place to scatter my thoughts is not helpful at all. It's much more productive to take that thought and put it directly into the project documentation where everyone can benefit. More README, less journal.
Exactly my thoughts too.
There is a cost. The thing is to keep that cost down to the level where it is in fact a good investment.
I don't think there is an ideal solution. It is just hard work to create information-artifacts, just like there is no silver-bullet for writing perfect code.
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
Feed them all to an LLM?
I wrote in some discussion about whether AI could replace us programmers? I think they cannot because:
AI has the answers. WE have the questions!
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.
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 wouldn't overthink it, though, and just use the simplest tools available. I use Sublime Text 3 with a few shortcuts to add the current timestamp, etc. and log everything in a long file. I was too ambitious in the past and wanted to learn how to use Emacs for everything, but it just held me back, and I ended up without any notes.
Also, my unfortunately named thread from 2022: https://news.ycombinator.com/item?id=33359329
I have a similar system to you, but getting things in and out of OneNote is such a massive pain.
Everything I have tried requires significant reformatting (even Word).
With a few good examples, maybe some LLM could help you with reformatting?
Good luck!
This also works
It’s easy to spin up
And to search through
It has a structure
Can be easily refactored
<ctrl-s>
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.
Creating and maintaining the taxonomy is another thing but not too bad.
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.
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.
That way I’ve got a dedicated dock icon and context just for writing notes, but no other overhead. It’s important to me that it not feel like a product, and search works effortlessly (although subject to typo misses).
My only tweak on the text editor is a shortcut to insert a timestamp and a chunk of new lines, which I do periodically so I can separate moments in time and see what I was working on when, how I fixed something, etc.
I used obsidian for a while, but for my purposes it felt like work to organize and get “right”. I ended up writing a script to join all the files into one.
Looks like you can download from the App Store now, too.
It’s dead simple and I’ve never found a bug in 6 years of daily use. It’s pretty awesome and shows a lot of restraint and skill on the author’s part.
It is super helpful when we notice something strange has been going on since a specific date. I give my coworkers access to it and we will regularly refer back to it to try to figure out what was going on on a particular date. I also use it monthly to summarize for my 1:1 meeting with my boss.
I also have a Kindle Scribe e-notebook that I use for my daily todo list. The writing experience with the Kindle is very good, in that it's very paper like, but the access and retrieval is pretty meh. I described it to my coworkers as: It's exactly like paper, only more expensive. I'm basically doing bullet journaling of my tasks, things I need to circle back with coworkers about, and stuff to chat about over lunch or shows people have recommended.
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 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.
Very true words. Thank you.
Any task I'm working on has a GitHub issue - in a public repo for my open source work, or a private repo for other tasks (including personal research).
As I figure things out, I add comments. These might have copy pasted fragments of code, links to things I found useful, quoted chunks of text, screenshots or references to other issues.
I often end up with dozens of comments on an issue, all from me. They provide a detailed record of my process and also mean that if I get interrupted or switch to something else I can quickly pick up where I left off.
Here's a public example of one of my more involved research threads: https://github.com/simonw/public-notes/issues/1
I also create a new issue every day to plan the work I intend to get done and keep random notes in. I wrote about how that works here: https://til.simonwillison.net/github-actions/daily-planner
I use it for everything and not only work journal, this creates a small problem.Since I dump both future references and worklogs, and I have ~50 channels, it's very easy to not get back to things and only get back to it when needed(which is the idea mentioned by OP). It seems like a feature than a bug at first but after capture, one round of review after some time interval really helps. It took a while but slowly seeing the benefits.
For that I plan to write some bot to re-organize the worklogs and the reference/other things dump to my own email at the end of the week and then I can create something like https://simonwillison.net/tags/weeknotes/ for myself(private) to go though at the end of the week. I think it would be perfect for me.
https://GitHub.com/irthomasthomas/undecidability/issues
The code that runs it is here:
https://GitHub.com/irthomasthomas/label-maker (how it started/how it's going:)
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…
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.
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
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.
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.
(setopt org-agenda-skip-scheduled-if-done t)
Perhaps to clarify: hide from where?
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.
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.
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.
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.
To those who keep doing this for a longer period: Any tips would be appreciated.
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 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.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").
Consider it a tool you sometimes use, and think of using journaling as an option when you're frustrated with something.
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.
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 one needs to unravel our inner state and psychology ... we cannot simply turn on and off. But then, once we understand our inner state/psychology it makes it easier to turn on/off.
I have a cron job that opens my note app - a few times every day. The app is focused in the foreground, opened on the top of a journaling note, pre-filled with the today's date. All that's left for me is to write.
One of the checklist items may be to journal.
The randomness is so that I actually follow through on the checklist and don’t gloss over it.
I made a tool to associate those notes with a color coded project and timestamp:
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!
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.
This really became a habit after reading Writing to Learn by William Zinsser. I recommend this book to everyone and their grandmother these days.
"Writing enables us to find out what we know—and what we don’t know—about whatever we’re trying to learn."
I'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.
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.
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.
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.
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.
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.
"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 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?
For my working files I use a similar system except I separate at least Months, often Weeks, and sometimes Days into subheadings for easy time tracking of tasks on various time partitions.
So when I need to start a new heading for a new day, I just move all the incomplete TODO items into it, similar to you moving them into a new file.
Occasionally I manually archive the completed tasks into files by year with headings by month only when I no longer need their full granularity.
I can tell what I worked on each day by querying the git commit history, and I can grep the entire directory for keywords.
It's a little janky but it works pretty well for me.
This makes a lot of sense. Why not simply store the task with the sqlite database? I'm assuming ease of editing + the ability to manage the stack separately from the log of text entries, which presumably need no maintenance nor will ever be deleted?
I do insert completed tasks into a "completed task" append-only table when I pop them off the stack, so I do have a record of completed tasks in sqlite. (I find that useful for remembering what I did recently for standups and 1:1's)
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.
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.
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.
(tab) Task
(tab) (tab) Details
etc
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.
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.
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.
---
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.
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.
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.
I've started to use index cards to write down daily tasks and I'll switch over to obsidian if I find myself asking the same question more than once. I think for me the process of writing something down slows my mind enough to let me focus on it.
I like @ZXoomerCretin's idea of keeping a running document of what I do each day. I think it would make anual review time a lot easier.
Daily running log of what I have done
Dynamic todo list where things move up and down freely
remarkable tablet where I watch lectures and write notes (writing things down slows my mind and focuses as you say)
Daily Weekly Fortnightly Monthly Text files for spaced repetition, if I get to one and I have forgotten something then it’s moved up, if I feel like I know something it’s moved down
Longer memories are stored by topic:
Memory (working memory) Platform Operations Zany schemes Non-AT … + many more
Each is a hierarchy, platform is some 20 categories each with 10ish sub categories
It’s actually hosed on my NAS, tailscale connects all my devices so I can edit and view anywhere
I look forward to the day I can query and edit this with thought
Also, set up a praise folder and take screenshots every time somebody says something nice about the work you’re doing. You can automate documenting the context around it, too with quick add
I hear you on subscriptions rubbing you the wrong way. Hear me out, though. This is a bootstrapped team that builds and supports apps that empower you, the individual. Your data resides in plaintext and you can use your own sync server.
Not everything needs to be a subscription, but I don’t mind paying a few dollars per month to support the team.
Just my 2c.
I did pay to support their development[1] early on. I've been an obsidian user since early 2020 and I had to roll my own sync solution at the time. At the time I was experimenting with a lot of other PKIM/Note apps and Obsidian was the only one that didn't do proprietary storage format and really honored the "minimal but trivial to extend in powerful ways" philosophy that I value.
> Subscriptions rub me the wrong way for whatever reason
I can understand that. Software development is hard and we are _long_ past the days where software was static. In some ways, I miss buying a computer that didn't expect an internet connection to constantly self-update. On the other hand, though, paying a few bucks a month so make sure the app is updated to take advantage of new OS features and generally keep up with device capabilities is worth it for me.
If there was some 2-5$/month option to support obsidian development I'd consider it. Yes, I know their cheapest sync plan is $4/month but it's only good for 1 gig of data and my biggest vault grows by that much every year or two... hence using SyncThing on a cheap VPS :).
[1]: https://help.obsidian.md/Licenses+and+payment/Catalyst+licen...
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.
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...
Re Keyboards: I switched to mechanical keyboards lately and will never go back. It’s like the fountain pen of typing.
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.
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.
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.
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.
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 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.
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.
>month/day.md
>month/day/important-meeting.md
Find the equivalent for where you spend the majority of your time
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.
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.
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.
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
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 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.
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
endKeeping 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...
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
ctrl-c n j = add new timestamped journal entry
https://github.com/bastibe/org-journalSo 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)
“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 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.
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?
At a higher level of granularity it also helps to record what you’ve actually done for performance reviews and the like.
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.
(Actually, don't forget it. But realize that you can use it for both purposes.)
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.
* 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 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
Ah, and you can paste images and have syntax highlighting. Great for debugging.
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.
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.
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 do some note taking at work it's all one liners, url references, copy and paste code snippets and VM options for intellij.
Brainstorming, real-time todo, planning, decision making.
Each requires the tool be used differently.
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/
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.
That's the one: https://fev.al/img/2024/focus.png
![/img/2024/focus.png]
> 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.
Primarily I use work log to document problems I am having, keeping track of contexts such as what page I last read, and keeping track of my time. Timestamping is a very useful tool to fight procrastination.
In other part of my life, I use journals for personal development and productivity in general, like writing down my problems and thinking about them. I often stumbled upon changes that I could implement or try. This allows me to achieve things that I haven't achieved before, such as putting actual effort in learning electronics. Daily habits and action items are tracked, including my prediction of how an action goes and what is the actual outcome.
So yeah, journaling is a very good practice. It doesn't seem to matter much how you use them, just that you use them. It's very good at stopping your ruminating and you can actually move forward with your thoughts.
It would be like:
W47 Mon, date
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.
Luckily, we'll soon be replacing writing with editing LLM output. Much more efficient. /s