With over 70 hours of live coding on Kid Money Manager completed, it's time to take a look back.
As I wrote in a previous blog entry, Kid Money Manager (KMM) is an app that I'm developing to track my son's money, since he can't use a real bank account. For the past year or so, the transactions have been in an Excel spreadsheet, but also scattered among bits of paper and a whiteboard. Not a great way to manage things. It's especially annoying since he may be out with his mom and spend some of his money, which means one of them has to tell me what he spent so I can update the spreadsheet. I don't want to be the middle man here, and transactions easily get lost.
Sure, I could've cobbled something using Google Sheets or AirTable, combined with some code to integrate with SMS text messaging -- when you're in a store, you're not going to want to open up a Google Sheet on your phone to enter the fact that your son just spend $25 on some Magic: The Gathering cards, texting that information is much easier.
Another reason for a full-fledged application is that I'm a Java/Spring trainer and am always looking for compelling code examples to demonstrate Java language and Spring framework features. Developing this application gives me that with a real-world perspective providing a depth of understanding that I otherwise wouldn't get.
With that, it's time to take a look at where I'm at.
Season 1: MVP Deployed to Production
On Friday, March 15th, I deployed the production release of my "Kid Money Manager" (KMM) app (with the help of Mike Rizzi). I consider this to be the "production release", because it has the minimum that I need to track my son's money so I can stop using the Excel spreadsheet. If I were a Lean Startup, I'd call this the MVP, or Minimum Viable Product. Those features are:
- Update the balance via deposits and spending (withdrawal) via a web-based UI
- Check the balance, and deposit/spend money via SMS text messages (using Twilio). This is actually the primary way I and my son (and his mom) will interact with the app, since the spending often happens when we're at a physical store.
- Credit the account with interest on a monthly basis.
- Import an initial set of transactions from the spreadsheet (using CSV)
- Secure login using OAuth2 and Google Sign-In -- so that I can log in as a parent and my son can log in as the kid, and we each have different abilities. Also, I don't have to deal with password management.
- Deployed to a cloud server (Heroku) with a dedicated domain (kidmoneymanager.com), using CloudFlare to handle the HSTS and HTTPS certificates, along with the DNS.
With those features, I consider the 25 episodes of live coding (around 70 hours) to comprise "Season 1", with a satisfying ending where I have an app that I can use.
Season 2: What's Ahead
There's quite a few features I want to add to KMM, but Season 2 will have the added tension of making changes to a production system. That means anything I do can't mess with the existing data or break anything for any extended period of time. As I've been coding using TDD, I expect bugs to be kept to a minimum, but there are always things you can't find until it's in production (such as the security blocking the incoming text messages from Twilio that we found in episode 25).
I make all the mistakes, so you don't have to.
As I'm also writing this app for educational purposes, demonstrating how to implement a real application using TDD and the Hexagonal Architecture, I'm finding that I'm forced to learn aspects of Spring that I hadn't used deeply before and have already incorporated that knowledge into my training classes. This means that I'll continue implement features that, while not strictly necessary, force me to stretch and do things in different ways, so that I can teach it to others more effectively. As I've been saying a lot recently, "I make all the mistakes, so you don't have to".
Who's Paying For All This?
For the first six episodes that I live coded, I spent a number of hours editing the video (2-3 hours per hour of video), and this was "light editing", where I tried to focus just on removing breaks, long periods of me just thinking, and lots of "umm" and "uhh" sounds. I posted the edited versions on YouTube, and hoped to keep doing that, but it's just too time consuming. So I've decided to make future edited episodes available only to those who support me via Patreon. The unedited videos will continue to be available on Twitch, but only the first six episodes will remain free, along with any excerpts that I'll also put up free on YouTube.
How You Can Help
Obviously, signing up for Patreon at even the $1/month level helps encourage me! Higher tier levels get an hour of code coaching from me, at what's really a bargain rate.
If you prefer, you can buy me a cup of coffee at Ko-Fi.com/jitterted.
Be sure to subscribe to my email list to find out about what I'm up to.
Finally, you can help spread the word, tell folks about my stream, and maybe hire me to help your team with some personal Java training or coaching? Email me for details.
Thanks go out to my real-world pair programmers: David and Mike.
Shout-outs to my active viewers: Bugrimov_Alex, fluffytme (subscriber!), greybeard1970, Nyannyan_artist, EchoStrike36, MiniBossDev, Farianit_RJV, and more.