December 22 - December 28
This week I was off work 4 weekdays for the holidays, so I had a good chunk of time to work on personal projects. Here's what I got done:
- pocketarc.com
- I took the time to upgrade the website to Next.js 16 + Tailwind 4, and make it completely static in the process, so it can be deployed to CloudFlare Workers as a fully-static site (CloudFlare Pages is deprecated and suggests that people set static sites up in Workers, so I figured I'd get ahead of that). Cleaned up a few different things in the layout (and enabled View Transitions, which looks damn good), created new commands, made a new navbar, finally added support for "Notes" (short-form posts) and "Weekly Log" entries, which I've been wanting to do for a very, very long time. eev.ee's my inspiration for this.
- TV Sort
- I upgraded the app to Next.js 16 + Tailwind 4 as well, and made it a point to remove all Server Actions in favor of standard API routes. The security exploit made me uncomfortable about using them in production, so I decided to remove them entirely and disable them in the Next.js config. API routes are a lot easier to reason about, and I've achieved my learning goal: I know how to use Server Actions now. I cleaned up a lot of other things in the backend to improve error handling and observability. No user-facing changes, but the app is more robust now. People do actually use it regularly, which is nice.
- Cashscape
- I spent a good chunk of time working on my personal CLI-based bookkeeping app. I upgraded the entire app from Laravel 8 to Laravel 12, and moved a lot of the data into the database, for easier management. Payees and transaction categories were previously huge ever-growing Enums, with regexes for matching, but now that can all be done via the DB + AI (it's important to note AI just makes suggestions, I approve/reject them, nothing's done automatically yet). I also added support for it to read through and process all of my emails for receipts, extracting receipt (whether attached to the email or available via links) with AI and storing them in the database so they can be linked to transactions (which will later on be done automatically with AI as well). That part works remarkably well, and even though categorizing every single email as "receipt" or "not_receipt" involves -a lot- of AI use, GPT 5.2 Nano's been doing a great job at it so far.
- CodeIgniter
- I took the time to clear out all open issues and PRs on the CodeIgniter 3 fork I maintain, and get everything ready for PHP 8.5, including getting CI working for all PHP versions from 5.4 to 8.5 without any failures. CodeIgniter 3 is still surprisingly popular, so I'm happy to keep maintaining it for the community.
- Prism
- I raised a PR for better error handling for OpenRouter API requests, which was merged in. Not a huge change, but it makes debugging issues with routing a lot easier.
- Stealth CodeIgniter-to-Laravel Project
- I spent a big chunk of time making authentication and sessions shareable between CodeIgniter 3 and Laravel 12, so that users can log in to either environment and be authenticated on both. This involved writing custom session handlers for both frameworks, and enables me to slowly switch over specific routes from CodeIgniter to Laravel without the users noticing anything different. The main reason this started is because I wanted to expose the /horizon routes for Laravel Horizon, but CodeIgniter is the main app, so I wanted a way to share sessions to gate that route. Also migrated away from Selenium to Playwright for HTML-to-PDF generation, which is working out much better.
There may have been other small things I worked on, but those were the main projects. Overall an incredibly productive week, taking into account the fact that I had relatively little time at the computer, thanks to the holiday celebrations. This week has really made me think about how much I can get done with AI these days.