What Have I Done?!

Not my actual todo list

The title is a bit dramatic, but I'm bad at naming things and that's the name of the project I'm writing about today.

As with many people, I like my todo list to be very low overhead. I don't want a huge task tracking system with all the bells and whistles. Those are for management's benefit. I want a list of things that I need to do and a way to keep track of which ones I've completed. If my todo list has a lot of overhead then I won't use it consistently and it becomes worse than useless because it provides a false sense of security that I'm tracking all the work I need to do. There are a million todo apps out there, but none that I've found were able to satisfy my desire for minimalism.

So I wrote my own (Deja vu much?)

It's a simple PyQt5 desktop application. You can see from the screenshot attached that there is not much to it, just three panes, only one of which is directly editable by the user. This design is essentially a tarted up version of the flat text file I was previously using for this purpose. Each line of the file was an item I needed to complete, and when they were done I noted it with a * (the app uses *** to avoid problems with items like "Test packages for tripleo-*").

The problem with the flat text file was that there was no history. I either had to manually keep a list of what I had done and when, or I had to leave all of the list entries in the file indefinitely (or at least until my next performance review...). Leaving all the entries for a year resulted in an unmanageably large file where unfinished items got lost, and manually tracking completed items was something I did too inconsistently to be useful. All of which meant that every time my manager asked me what I had done for the past year/month/week/day I frequently ended up with the panicked thought, "What have I done?!" (hence the name). In fact, I spent an inordinate amount of time trying to recall what I had done for these status meetings. It was an incredible waste of my time and tedious to boot. Finally one afternoon I sat down to fix it.

I had a few design tenets that I wanted to satisfy. First, I wanted it to work much like my flat text file because that workflow appealed to me. It was simple, I liked it, and history had shown that I would use it consistently. But I also wanted automated tracking of the history of things I had done. That was going to be the killer feature of this app. It also needed to support some sort of hierarchical structure because I used that in the flat text file to denote sub-tasks of a todo item.

After a couple of afternoons of hacking on the project, What Have I Done?! was born. I've made a few bug fixes since then, but for the most part it's been working well for me this past six months so I finally decided to share it. There's a readme in the repo with usage details if you're interested in using it yourself. As always, use at your own risk. If it crashes and destroys your data don't say you weren't warned.

That's What I Have Done. Since it was written very specifically to scratch my itch I can't promise feature requests will be entertained, but it can't hurt to ask if there's something you think would be useful. I am very interested in bug reports. I've found it to generally be stable, but if there are problems I'd rather know about them sooner than later.

I hope this is useful to someone else, but if not you can rest easy knowing that I like it quite a lot. :-)

Tags: