- Feb. 20, 2018, 4:57 a.m.
A self-hacking topic near and dear to my heart, I built a recurring task system into my blog. I was quite happy with it too, right up until I stopped using it.
Here's a quick description of the Upkeep system, some of the pros and cons, and then the future of the system.
A quick and dirty way to irregularly do regular tasks.
I have tunnel vision. Recently I've been stuck in work helping get software built, tested, and out the door, and because of my focus on that, I've forgotten to do some things I should do all the time. Some of these things are straight up more work- keep posting to my blog, reach out to thought leaders in the field, or work on a long term project that I need to keep touching once every few days.
Some of these things, admittedly, are bald faced examples of how much of a terrible human being I am. I forgot to reach out to my sister who is teaching abroad for two solid months- I also have some friends who are travelling, and keeping up with their travels is to share in their adventure.
Despite being busy, most of these things only take a couple of minutes (sending a text is inconsequentially small amounts of time to do, but the payoff in keeping up with people is huge). The ones that take longer pay off dividends on the effort put in several times over.
However, some things should be done once a week, others irregularly like week and a half or so, and some things, like submitting code or exercising, should be done every. single. day.
Upkeep: A System for Keeping Up With Stuff
So I made a blog system for recurring things. After writing a task, it has exactly one action that you can perform on it: DONE.
It also has only three attributes: a title, a description, and a wait time. A task that has less more than 75% of its wait time remaining is green, and goes in an All Tasks list. A task that has less than 25% of its wait time remaining is red, and goes in a Red Tasks list.
The routine is simple - look at the red tasks daily, and plan to close them all.
The Clearly Awesome Advantages of Such a System as Upkeep
This served me quite well for a long time. Despite it being Web 1.0, built from django templates and html redirects, I managed to keep regular/irregular contact with people I care about and always had an idea of what was going on in their lives.
I also did an excellent job of keeping up with small tasks that I wanted to do daily- at least break a sweat. Try to get 8 hours of sleep daily. And when I didn't- especially in the case of that last one, I got to see how long it had been since I could honestly say I'd done it, and it would nag at me.
The Inevitable Failure
Like all self-hacking, after an astoundingly capable couple of months, this failed miserably. There was one thing that stayed on my red list that never got done.
I never wrote a third blog post.
That grated at me, and was enough to annoy but not enough to make me stop using the Upkeep system. Well, one item led to two, and two items (and awful css) meant everything before the fold of the Red list never moved.
I skipped looking at the list until the weekend, when I knew I'd have time to do one of the big ticket items. Then I missed the weekend and two weeks later I'd forgotten all about it. Tunnel vision had set back in.
The Underlying Problems
Some tasks are more difficult than others, and not giving leeway to allow for the challenge of challenging tasks meant that some tasks never got done.
Another issue was that there wasn't actually a concept of weekends, or holidays, or vacation time. This meant any time off (which I don't for a second think I can do without forever) would turn into a long list of red tasks I'd need to pick back up all at once. Bug or feature, it was sort of annoying.
Instead of just trying harder and expecting different results, this time the goal is to build in mechanisms to directly deal with the challenges that made me stop using it in the first place.
First and foremost, missed tasks need special treatment. For starters, if a task gets missed for a long period of time, it will disappear for a cycle and come back. A simple retry and backoff mechanism will let the really tough tasks that sometimes you need to take months off of (*cough* blogging *cough*) go away, and eventually they can feel fresh again and even like a good idea. Like today!
Secondly, respecting downtime. This, as all time related functions, will be a complete abysmal mess. Programming in arbitrary vacation days and setting up caveats for weekends will be a non-trivial, completely un-reusable project. However, it will probably be fun to write.
Finally, and just as importantly as the other two, I am going to put some work into the frontend of this site. I've already got a plan to write a version of this awesome blog on using django with websockets
, but with modern versions of these libraries. The ideal stack here is django/channels with react as a frontend. Time to learn how to web dev like it's 2015!
One Foot In Front of the Other
The most important thing is to try to stick to the routine, and add one 3 day task- make an update to Upkeep. Plan is to open source the entire timsthebomb.com site on github to add to my impressive portfolio of ancient, broken chatbots and the forks of large, impressive frameworks I submitted documentation patches to.
Until next time!