I have a few technical projects that I’m working on, but they are moving very slowly. Little’s Law has taken effect, where working on multiple things at once makes everything progress at a glacial pace. Let’s talk about the things I’m doing and maybe write out some progress. I might also cover some other topics, like how I’m using current AI techniques to get better at leveraging technology.
One project is called Team Beat. It’s software that organizes a retrospective into phases: a discovery phase where people can submit cards to a board, a voting phase where participants vote on the most important cards, and a discussion phase to talk about those cards. The software takes all the notes from the retrospective and puts them into a markdown document that you can save. The tool works well, and a couple of teams at work are using it. However, there are issues with it. The real-time board submissions are powered by WebSockets written in Go, which connects to the database storing all this information. One problem is that although Go performs well, configuration exists in the front end that really should be part of the back end. This disconnection of config makes it hard to filter down to specific user details in some situations. For example, every action on a board is broadcast on a single channel delivered to all users, requiring them all to fetch new information from the API instead of receiving simple updates.
The background software is called PocketBase. It’s useful, but I think I need to remove it entirely and replace the backend with native JavaScript. This presents challenges because the Svelte front end connects to a SvelteKit back end that doesn’t have solid real-time capabilities yet. I’ll need to bolt this on separately, which could be difficult. Also, PocketBase uses strange conventions for queries that aren’t SQL, where SQL would be better for my needs. If I can sort out the WebSocket and database issues, I should be able to rebuild everything using the SvelteKit backend for simpler deployment of a node-based app. This will let me make requested revisions that I haven’t been able to due to the current project’s in-development split between PocketBase and SvelteKit implementations.
Another project I’m working on is Tin, Go-based software that runs my blog. I need to update Tin to support ActivityPub so I can write posts that show up as ActivityPub posts others can subscribe to, with comments returning to the blog post itself. This could help with spam prevention by allowing me to ban comments from certain servers or users instead of using heuristic spam prevention tools like WordPress and Habari did.
I’ve started a new project related to writing electronic music using Ableton. A lesson suggested listening to music and using it as a template for writing my own songs. However, I struggle with annotating those arrangements and don’t like using paper for this purpose. So I’ve created a single-page React application that lets you drag bars across an arrangement view while listening to music. Originally intended for use alongside music apps like Spotify, I’ve added the ability to drag an audio file into a player at the bottom of the page for playback synchronization with the arrangement on screen.
This project is challenging due to issues like synchronizing playback with on-screen arrangements and handling beats per minute (BPM). I’ve been doing vibe coding with AI by telling it what changes I want and observing its edits without looking at the code much myself. Sometimes it’s easier just to make code changes directly when AI instructions fail or break functionality.
Lastly, I’m working on creating a deck of cards for the card game Scoundrel using Midjourney AI for illustrations of monsters from D&D lore. The black suits (clubs and spades) in a standard deck would normally represent monsters, and I’ve produced monster images for each of those cards using Midjourney AI with minimal tweaking needed. I’ve done the same for weapons and potions. Now I just need to add number overlays so they can be used in gameplay before submitting them for custom printing at DriveThruCards.
Overall, this project has been an interesting use of AI beyond purely technical applications. I have used Claude to produce lists of monsters, using refernces like D&D to choose creatures appropriate to the scale of threat. Claude produces a useful “imagine” command for Midjourney, includng style and rendering information that results in fewer revisions to the image prompt over the long run. With the exception of the rendering of an apple (I don’t know why this was so hard), everything webt pretty smoothly and I’m nearly set to have a printed deck.
While not strictly a technical project, this use of AI has had me thinking about MCPs and how to more tightly integrate my workflows between these AI tools. Something I’d like to do in the near future is figure out how to meaningfully connect AI to my Obsidian vault so that asking questions of the AI automatically explores personal notes.