Tod - Plan and Manage Daily Tasks In The CLI (Shell)
Check out the project files on Codeberg
A straightforward and simple task manager for your terminal.
Ever since I wrote Tod the first time, I've been using it for miscellaneous tasks at home and at work. It's proven very effective as a barebones way to maintain focus on what's important through the day and between sessions, and it's one less Electron app to burden my computer.
The point of diminishing returns
In the meantime, I've completed a coding boot camp and started a new job working in full-stack web development, but still have a love of minimizing dependencies and aiming for ultimate simplicity without sacrificing usability. And while the Python implementation I have works, I knew I could make it simpler, faster, and less resource intensive.
The Python Version
While this version served me well, it has grown very crufty and become a bit unwieldy, considering its simple purpose (not unlike essentially any other task management application out there, s/o to Zawinski's Law). It became this way because this project was more or less a scratchpad for ideas and also that I built it when I had very bad (no) ideas regarding planning, maintenance, or any kind of long-termism.
I've been using it for work and it slowly dawned on me that most of the things I do are really either not that important or could be done without spinlocking the terminal window the whole time the timer isn't running.
So my goals in improving Tod were:
- Removing the idle running of Tod when not active
- Removing all the nasty un/underutilized cruft
- Improving portability and simplicity
- Learning more about C and the Shell
So surprisingly, most of shell programming is simple. Unix tools seem to be able to do everything in regards to file or line manipulation, with `sed`, `awk`, and `perl` being the main players. The one non-shell thing I wanted to learn more about and use (which is still probably unnecessary, but fun) was C and ncurses to build a timer, which is still pretty darn simple, fun, and straightforward. And at the end of the day, I made my timer for this using a background process in the shell anyway.
Putting all this together, and it can do pretty much everything I care about on a day-to-day, though I will see what features I am missing from this stripped down version as I go. I love this process of rebuilding from scratch, seeing what I've learned and how I can do better, as I still suck at almost everything, but manage to suck a little less each time.