One Work Week Later...

 


No, I'm not celebrating a birthday.  That already happened.  I'm celebrating what I was able to accomplish in 50 hours (well, 50.25, but we're playing by IRS rules, so I'm rounding down) when writing my financial app, Slowpoke:

  • Created a rudimentary Python app and a single SQLite table for transactions.
  • Abandoned said Python solution in favor of a JS one that plays better with the Google Sheet I'm using for a datastore.
  • Abandoned said JS solution in favor of using Astro for my preferred JS solution.
  • Deployed to Cloudflare Workers to run the site.  It's cheap (free, so far), fast, and easy to use.  How could I resist?!
  • Successfully implemented CRUD operations to manage recent transactions on a mobile site.
    • This included the unorthodox step of creating an id for each row in Google Sheets to allow me to perform deletes and updates sanely.  Creating an id is surprisingly non-trivial, and requires writing a few functions in the sheet's App Script extension.  However, once it's done, it can be reused anywhere Sheets needs a unique ID.
  • Created a Budget tab to show my running total of categorized expenses for both the month and the year.
  • Added login capabilities for Google accounts.
  • Performed a site redesign to go from this:
It ain't easy being old school green

to this:

This app is going to be a hit on St. Paddy's Day


  • Migrated the data store to a SQLite database for funsies.
  • Fixed most of the bugs.
My tech stack was as simple as I could potentially make it:
  • Google Sheets/SQLite as my datastore.
  • Cloudflare Workers as my server-side provider (I'm running my SQL database off their D1 solution).
  • Astro as my front-end framework with heavy reliance on Tailwind CSS and Alpine.js (I used Alpine instead of _hyperscript because the documentation is a bit more mature and usage is greater, making it easier to search for solutions, though I still appreciate both of them for their simplicity over heavier JS frameworks).
  • Windsurf for my code completion LLM and Gemini as my design/architect LLM.  I'd say, on balance, they get a solid C+/B- for the work they did.  If I didn't know my way around software, they would've created a dumpster fire.  But my software engineering experience, coupled with the tools' mostly reliable output, allowed me to hit the 50-hour mark I'm so proud of.   
    • Gemini in particular was able to lead me through the nuances of implementing serverless functions in Cloudflare, helping me implement server-side rendering in Astro, and style my oh-so-green-it-looked-like-a-Leprechaun-barfed design with some modern flourish.  
    • But if I didn't have experience with LLMs, I wouldn't have known that they have a tendency to lie and would've fallen much further down a lot of rabbit holes.  Gemini did nothing to warn me that googleapis, the access API for sheets was a bloated behemoth until I tried to deploy everything on Cloudflare.  Then it smugly informed me I shouldn't have used it with a lightweight installation like Cloudflare, even though it recommended the library. That was nearly a good day's worth of effort that could've been cleared up 4 hours earlier, if it just told me to use the REST calls instead of the language specific API.
    • Still, as much I'd like to think my efficiency on this app was solely due to my awesome Product, design, and coding abilities, the LLMs did help me out a lot - as long as I was consistently willing to check their work and do the research to ensure I understood every line they spit out.
That's a lot of functionality for a long week's worth of work (if you think a 50-hour work week isn't long, please feel my eyes rolling as you talk about your epic work ethic.  Go find a hobby and enjoy yourself!).  But there's still a lot I left out, much of it around reliability and scaling.  We'll take aim at my follies in the following post.

Until next time, my human and robot friends.

Comments

Popular Posts