Keeping track of podcasts
One of the things that has sparked a lot of joy in my life in the last two years was building an app to keep track of "podcasts" I want to listen to. I'm using podcast in a very loose sense here, it's more like any content where I need to pay attention with my ears, from actual podcast episodes, to Youtube lectures from Stanford, to courses on whatever platforms, to sermons in mp3 format, to audio/video on Substack, etc.
I previously would always lose track of things, forget about them and actually not get around to listening to things. And when I would actually have time to listen to something, I would not know what to listen to.
So I decided to make an app for this. Existing apps didn't really work because I was listening content across a very wide variety of platforms.
After having heard the startup adage to start scrappy, the first iteration was a Google Sheet.
Initially it just had a couple of columns, which kept growing in number. At some point I started color coding them (for example by length so it's easier to find something based on how much time I have). This got to tags, starring favorite episodes, notes.
Then I started adding statistics. I learned that you can do a sort of SQL query in Sheets.
I love statistics. I love tracking things.
I even learned how to do some basic automation in Sheets and how to add "buttons".
But, eventually I outgrew the spreadsheet. After almost two years, I decided it's time to graduate to something more serious, so I built an app in Django. The only design awards it will win are for worst looking app, but it works very well for me. And it only has to work for me!
Now I can filter things even better, I can drill down quickly by speaker, series, tags.
Using this app has helped me listen to an average of 9 episodes per week. Previously, if I listened to 1 episode per week was good. So I'm glad I'm more organized and I'm able to learn more.
But, there's some other important lessons: home cooked software. This is an app I built for myself. It will have 1 user for the rest of my life (maaaaybe someone else from my family will use it, but unlikely). It means I can get away with things like using SQLite3 for the database. I can have one 700 line file for the views. I can mix Javascript libraries like there is no tomorrow. It's tremendously fun to develop this. And I think more programmers should build this sort of personal use software. It's small, it's niche, but over time it can get to do some pretty impressive stuff. And you know what? It's super fast. Network round trip from my NAS that is sitting on the same LAN with me is miliseconds. The app is super snappy, much faster than almost any app made by big tech or an american startup. With a minimum of effort into avoiding cascading SQL queries, it's possible to get all page loads to be under 300 ms.
I remember reading about Linus, who invented his own programming language, and wrote his own editor and a ton of other apps for personal usage. At the time I was like why would you waste your time on that? Now I'm starting to understand him and I'm starting to expand this app to slowly do more things.
But there's an interesting twist: I tried the same for tracking articles to read. It doesn't work at all. I add things and I never read them. Why? Because new articles to read are always easy to come by, Twitter, Reddit and Hacker News are always full of the latest shiny stuff, so there's no natural context for me to go and find saved articles to read. So I'll have to do some more thinking about how to solve that problem.