That time I built a project… to keep track of my projects.
Two weeks ago, I was thinking through my current work and how I keep tabs on everything. Some of my project work is grant-funded, some of it is personal projects, some of it is early research that later transitions over to grant-funded and/or collaborative projects, etc. This means some projects have set up pathways for reporting and tracking progress, but others don’t. I was noodling through what I might do to better track all the things I was working on, because of the lack of visibility for a lot of the maintenance and tiny but meaningful tweaks across a lot of projects. Actually, I didn’t know exactly how many projects I’m working on and juggling.
Coincidentally, I saw a re-post of an interview Simon Willison did about technical blogging from earlier this year, which was interesting in of itself. He also linked to a blog about a talk he gave about ‘coping strategies for the serial project hoarder’. I figured there would be some useful ideas in there given I, too, have a serial project habit (although not at the same scale Simon does).
That triggered my brain to realize that because I don’t have all of my projects on Github (nor do they need to be), I can’t use the same style of issue-driven development. Some of my projects are code and do have git repositories, some do not. I have a mix of manually tracked projects and git repo-tracked projects locally. What if I could combine those, though? I’d like to be able to keep track of all types of projects, ranging from public-facing iOS apps like PERT Pilot (plus the Android version of PERT Pilot) and Carb Pilot; n=1 iOS apps like my macro-while-running/hiking or medicine trial/protocol app I recently built; non-iOS apps and public-facing tools like an infusion dosing simulator or BookPilot; plus various funded and un-funded research projects that don’t have a concrete finished artifact. Some are done, some are being maintained, some I’m working on, some I lost interest in but might come back to.
What might work for managing all of this? And what would give me visibility into the history and progress of some of those git-tracked repos where I have a lot of progress but it’s not visible anywhere, leaving me feeling like I’m not doing ‘enough’ even when I am doing quite a bit of work (it’s just spread out across a lot of projects)?
How meta to realize I needed to build a thing to track the things I’m building (and have built already).
A portfolio dashboard
I ended up building a simple dashboard to track all of my projects; automatically update tied to git repos across my computer; and also paired with manual to-do and task tracking.
The really nice thing is that it now automatically logs completed tasks based on local git commits, which is something I didn’t know I needed. It ties in with the manual to-do list. It also helps me see alllllll the projects I have active and their various states plus a high level ‘last touched’. If I’m bored, I can glance and see which project might deserve some attention and what state I left it in last, without having to go and open it and spelunk to figure out what state I left it in. When I’m busy and overwhelmed, I can see which projects based on those statuses are fresh enough to be left alone and deal with more urgent tasks (like specific project deadlines or things that are broken).
Plus I built in rollups so I can see what I’ve done today, this week, this month. I also added a mini dashboard section so I can see weekly, monthly, quarterly, or this year what I’ve worked on and what projects have gotten my attention the most at various times, as well as show me velocity over weeks. I don’t want to beat myself up on days when I’m not feeling well and am not productive, but I also want to motivate myself to do a little more when I am capable of doing more. This serves both purposes with flexibility, giving me grace – not every day is going to be the most productive ever, and some weeks because of other projects or life priorities I will do less. At the same time, I can see when I start trending toward less productivity and if there’s not a valid reason (e.g. competing life priorities like several weeks this summer where we prioritized time off with both sides of our families), that helps motivate me to correct the trend.
The combination of being able to log to-do’s and see that they are done, plus the automated history, means I can track things that aren’t digital projects (like paintings, which is a hobby project I have spent substantial time on in the last year) as well as digital projects.
And, I didn’t want to spin up complicated architecture, so this dashboard is simple. Local json data that is served up in an HTML page. I keep a server running on my laptop to show the page as a tab on my computer. I can also see a snapshot of this HTML on my phone (although I can’t edit data because I don’t want to spin up more complicated architecture, I keep it as view only for now). I can then while on the go review things and think about what I might want to work on next, etc.
Already, this has been super helpful the first week that I’ve been using it. It has motivated me to chip away at a big, hairy, and scary project that landed on my lap last week (and succeeded with, despite my fear that I would fail at this hard, technical project). I’ve been able to see that actually, even when I’m feeling non-productive, because of the huge portfolio (dozens) of projects of various sizes, even light maintenance work builds up to be large productive volumes of work. It also helps me realize when apps or projects are getting a little outdated and while not urgent, deserve to be refreshed. And I can already tell it’s reducing the context-switching “tax” of how hard it is to dig back into a project where it’s been a while since I touched it. (A good example of this is a bug report someone sent me for the Android version of PERT Pilot, which I had not touched in months. The bug was something not impacting all users and was intermittent, so I had to figure out how to debug it and reproduce the intermittent issue, then fix it, then re-figure out how to push the fixed version to the Play Store, which felt hard because I hadn’t done so in months. It was a little bit easier to do the ‘figure out what I did last’ part, which made the rest of the harder parts a little easier, too, and I didn’t procrastinate it quite as long as I might have otherwise.)
I thought about whether this amount of effort to build a custom setup was worth it, in contrast with trying to shoehorn my processes and tracking into other existing project-tracking systems. But, the amount of effort to shoe-horn my stuff into an existing system or to get everything into Github would take just as much time and not have all of the features I want. (I’ve tried various versions of that in the past, and always dropped them). This project may not last forever and I may eventually drop it, too, but for now it seems to work and like many things these days, the little bit of investment in setting myself up now to track and automate tracking of what can be automated goes a long way.