Fight Akrasia and Decision Fatigue with DIY Productivity Software
Akrasia is the condition of knowing what you should be doing, but being psychologically unable to motivate yourself to do it. Decision fatigue is the condition of being unable to select between competing choices because of mental exhaustion.
There’s a whole sector of the software industry that’s dedicated to helping people fight these conditions. Some tools help you build habits, while others try to hold you accountable for your mistakes, to give you an incentive to make better choices.
Many people, including myself, have experimented with these tools and found them lacking, for a wide variety of reasons. Sometimes the problem is a crucial missing feature—and sometimes the problem is too many features. Some people have been burned by technology churn—why invest your time to learn the most recent fad, when history indicates that software often declines in quality over time, and is then abandoned?
Perhaps most importantly, it often feels that the author of the tool is guilty of other-optimizing—the techniques that are useful and relevant for him/her simply aren’t as valuable for other people… because people are actually quite different internally.
I claim that you can solve these problems by writing your own productivity software.
To many people, this idea might seem preposterous: software is hard to build, so it only makes economic sense if you sell it to a large market.
But actually the hardness of software development mostly comes from the challenges of scaling up and serving large numbers of users. It turns out that writing software just for yourself is actually pretty easy—especially if 1) you’re a decent developer, as many LessWrongers are, and 2) you have some good tools.
I know this from experience. I’ve been developing my own customized “life-management” tools for the last several years, and it’s had a transformative effect on my life. I have dozens of tools—I call them Widgets—that range over a wide variety of areas:
Fitness tracking and logging
Time tracking
Expense monitoring
TODO list and project management
Commitment review
Daily Checklist (inspired by the Checklist Manifesto)
Chinese character learning
Question / Answer system (my personal version of StackOverflow)
Alcohol and Junk Food consumption control
Chore reminders
Day Planning / Scheduling
Some of these are more complicated than others, but a typical Widget usually takes about 2-3 hours for the initial development, and then another 1-2 hours of updates and polishing after I start using it. This is a very small price to pay for a tool that can significantly improve some area of my life. You can see how these Widgets work by viewing my Demo videos.
I would be happy if people read this post and immediately started developing their own frameworks for DIY software development.
But I also want to offer LessWrong users the benefit of my framework. I spent a lot of time developing it and simplifying it, and I know it works, since I use multiple Widgets every day.
As a very brief summary, the Widgets framework is a generic backend for DIY WebApps. The backend stores user data in SQLite files, and ships the entire content of the DB to the browser on page load (this is practical because the DBs are modestly sized, since you are the only user). The browser sends back updates to the DB based on user input. The frontend is entirely up to you; I use vanilla Javascript and simple HTML. You can see how this works in practice by browsing the code Gallery.
I’m offering some incentives to early adopters: free accounts, free tech support, and I will even build some Widgets for you (this is an instance of “do things that don’t scale”). If you are interested, sign up here, or reach out in the comments.
For more information, check out my main Widgets page. Thanks for your attention!
I have had very good experiences writing my own productivity software. Many of them were so useful, they paid back the time invested in developing them after less than a year.
Some examples of tools I wrote and still use regularly:
An application called “event radar”, helping me build my calendar of social events for each week.
Personal contact management software. Key feature: import contacts from my phone and Facebook, organize my friends into groups and auto-invite to events based on their interests
A very simple recipe management software, helping to optimize protein per kcal and cost per kcal. It produces shopping lists. May upgrade it in the future so it automatically sends grocery orders.
Software for catching all small tasks and errands. Key feature: It auto-selects the next task to work on. Turns out, this feature alone makes errands vastly easier to handle. It was exactly the feature I needed for my particular psychology, which underscores the point raised in your article.
Hi Lukas!
Just stumbled upon this, sounds awesome! Any tips or pointers on the event radar? Screenshots or similar would be incredible!
Thanks!
Cool concepts! What tech stack did you use? Was it painful to get the Facebook API working?
All my tools are just Windows desktop applications built on old technology, C# and Windows Forms, using a simple file for data storage. The Facebook API is extremely limited due to privacy considerations, IIRC it does not allow fetching a list of your friends. Therefore I just implemented everything using web automation.
Trying to build your own productivity tools is also very helpful in understanding why you have difficulties in the first place because you reflect upon them while designing your feature set. I really appreciate this post for reminding me of the joy of programming your own solutions.
Very interesting idea. I’ve also built my own piece of productivity software for myself since ideas out there were lacking, although it’s centered around strict accountability that I don’t think the App Store would allow.
The Paul Graham article you linked is centered around startups, so if you are using this for the possibility of creating a startup then there is one caveat: the value proposition you describe is eliminating decision fatigue by removing features irrelevant to you. But as you create stuff for more and more people, then you’ll add more and more features that are each used by your audience but to different degrees (e.g. perhaps 20% of your audience can’t live without feature 1 and the rest never use it, but a completely separate 30% of users love features 2 but no one else uses it). Eventually your original value proposition will erode and it will be similar to other solutions. But if you aren’t doing this for a startup, then you can ignore this.