How I Tried (and Failed) To Automate My Life
Turns out it's far easier to create a digital nag than a digital nanny
In late 2022, my spouse lamented that it was difficult to keep track of all the deep cleaning and random chores of the house. Yes the trash gets taken out and the floors vacuumed regularly, but who remembers when it’s time to sweep under the couch or wash the baseboards? The kind of stuff that comes up every few months and it’s easy to let that mental load get away from you. I’ll throw out a quick acknowledgement that my spouse and I are in the position where we can worry about this sort of thing. Not every family has this sort of time or privilege to do regular deep cleaning. Hang in there if that’s you.
A quick google shows a few charts and lists that various bloggers have written up of what to do and when. While a good starting point, it didn’t seem to fit what we wanted. In a bit of foreshadowing, I wish we had tried a lower tech solution first.
Like any good techie who spends too much time in C (not even C++) at a day job and loves the occasional web dev, I reached for technology as a solution. Cloudflare pages was a recently released service that seemed to fit what I wanted. So with a stack of typescript + Vue + trpc.io + Kysely SQLite + Cloudflare KV, I quickly had a workable solution. I called it Honeydew (get it Honey do = honeydew?) Honeydew kept track of chores, projects, and meals. The web interface is useful but you can also use telegram to communicate with it. Send it a link to a recipe and it will add it to your list of potential meals. Daily it assigns each member of the household a chore as well as a collective project task. There are graphs for project tasks with dependencies.
For example, my chore this morning was to clean the oven and today’s project is to touch up the kitchen cabinets as there are a few scuffs. The telegram message even has a helpful button labeled “I Did It” for when you complete the chore. While it supports multiple users, I decided to never share it because I didn’t want the burden of maintaining a service for someone else. I wanted to break it and only have to apologize to my wife, not a wider community. Though to my credit, it hasn’t broken and my wife hasn’t complained about it.
As you might have guessed from the title, I can tell you it has been a few months since I did the chore because I got a friendly message to do so.
So where did I go wrong?
Let me ask you. When was the last time you logged what you ate because Lose It told you to? Or practiced your Swedish because Duolingo sent you a cheerful reminder? The line between nanny and nag is surprisingly thin. I read the message, then just continue on my way, perhaps rolling my eyes internally. It can be helpful when I’m cleaning to look at the list of what hasn’t been cleaned in a while and knock off some of more urgent ones. But I’m already cleaning. Honeydew can’t bother me or nag me into deep cleaning sessions.
Going back to Duolingo, they’ve actually done research and trained AI models to send the perfect notification. And it still has a success rate in the single digits. Getting someone to do something from just a text is incredibly hard. Partially the impersonal, robotic nature of it. But you likely get hundreds of call to action from notifications every day. A quick scroll through my phone shows that I left something behind at the house when I went on a walk, a book I wanted is available at my library, I should track what I ate for lunch, and a new episode of a podcast I enjoy dropped. Honeydew gets lost in the noise.
To win in the sea of marketers you have to become like them. I toyed around with implementing streaks so that my wife and I can compete on a weekly basis. I could use rewards so that if one of us complete the chore you get points that you can redeem for various gifts. But in the end, why am I doing this to myself? Attaching a carrot or a stick to a taskmaster doesn’t change the task or the master. While I love getting the occasional message that my wife completed her chore and vice-versa, ultimately we use it as a form of guidance on what to do when we are already on a cleaning spree.
Do I regret building it? Absolutely not. It was fun to build (even if it took me a year to get it just right) and I’m very proud of how it’s built. The backend is fairly well tested thanks to tRPC and miniflare (which replicates a Cloudflare environment locally). As you might have noticed, a real focus of this project was typescript. While it doesn’t solve everything, it does reduce the mental complexity of jumping back in after being away. It’s nice to know that I haven’t broken anything (thanks to good tests and build errors) and the types and systems are better at self-documenting.
I’ve expanded it in a few other ways like better meal planning. The codebase is clean and modular where I can easily steal different parts (I recently stole the password-less auth system for another project along with the tRPC setup).
I’m also a huge fan of Cloudflare products (not sponsored, just a fan). From git push to refreshing in my browser it’s usually under two minutes and often just one. Compared to my previous experience with Azure WebApps where Github actions can take a half an hour (I once sat and waited as I pushed an urgent bug-fix for a live demo and it took 25 minutes). I haven’t touched the repo in seven months and it’s chugging along merrily.
What’s the take away?
This is a somewhat ramblely article (hence the name rambleware), but I believe the best take away is to develop the idea you have. Just try it out, even if it’s a low tech version of it. Expect it might not work the way you think it will. Even then, that doesn't mean it’s a waste of time. Use good tools that maximize your ability to pause and resume working on it.
I've definitely experienced the "nag vs nanny" issue. It's an issue regarding notifications and what makes them effective or not. I hadn't heard about Duolingo but it isn't an encouraging statistic.