RSSAmplifier

Blog

ooo-yay.com

Personal website and blog of Matt - thoughts, projects, and insights

ooo-yay.comRSS feed ↗32 posts

Latest posts

Working definitions

English is a pretty expressive language. That comes with a lot of upsides, but it also comes with the notable downside that talking about things with understanding becomes more difficult when two parties don't understand each other's working definitions. This is a log of mine.

Codeberg banned code it can't identify

Codeberg's members voted to ban projects mostly written by AI. They did not explain how anyone is supposed to prove that a project violates the rule.

What comes after chat?

Slack built chat. Teams turned it into a distribution war. Agents are forcing the next collaboration product to compete on architecture again.

Why Cascade Chat kept disconnecting

Cascade Chat could connect to Libera.Chat just fine and then lose the socket a few seconds later. Finding out why took several PRs and a rethink of its event architecture.

The most powerful AI product decision is invisible

The best use of AI in a product may be the part the customer never recognizes as AI at all.

Cascade Chat has moved to an ADLC

Cascade Chat now runs on an Agentic Development Lifecycle. Agents write the code, Playwright verifies it, and the only human decisions left are ideation, architecture, and the release gate.

CalVer is just better

Semantic versioning signals intent. Calendar versioning tells you when. The second one is more useful.

Are we (re-)approaching the year of applications on the desktop?

Desktop software is having a quiet revival. After years of SaaS monoculture, frameworks like Wails and Tauri are enabling a new generation of native-feeling apps built with familiar web technologies — at a fraction of Electron's resource cost. Wails v3's first-class in-app updates might be what finally tips the scale.

I dumped Cursor

As is tradition, my workflow continues to evolve at a rapid pace. I've since dumped Cursor in favor of a new stack.

Budgeting with Claude

Wiring SimpleFIN, a self-hosted Actual Budget instance, and Claude Desktop together over MCP so I can actually talk to my money — and walk into my financial planner's office already knowing the picture.

Engineering culture matters more than ever

The industry has spent a decade recoiling into rigidity and pessimism, and the AI moment is reproducing the same false dichotomies. A case for returning to curiosity, experimentation, and the willingness to be wrong.

Warrant: a shared work queue for agents and humans

Warrant is a work queue plus shared project context so people and IDE agents can pull tickets, log work, and hand off to human review, without losing the thread between chat and the repo.

You can't automate what you don't understand

AI is automation and no matter how good the model you cannot automate things you do not understand.

I made my own IRC client

Yes, it is still 2026 and you read that title correctly. I built an IRC client. Slack, Discord, and Matrix all still exist. But here we are. I made an IRC client, and I'm going to tell you about it.

How I design systems

A practical guide to designing distributed systems by breaking them down into functional areas: architecture, communication, ingress, events, databases, caching, testing, and instrumentation.

Introducing lan.events

I've been working on [lan.events](https://beta.lan.events), a platform for organizing and discovering LAN parties and gaming events. I started going to LAN parties as a kid, took a long break as a young adult, then got back into it in 2025 thanks to my friend Ben. We hit DreamHack together, which led me to PDXLAN in the fall.

Building my own personal assistant

I'm building my own personal assistant to help me with my daily tasks.

Open source and monetization

I've been publishing HashPost's code publicly since its inception but it's not actually open source. Recently I've been thinking about what the pros and cons of open sourcing are as well as how HashPost will sustain itself.

Back to a static site

After a year and a half of my blog being a dynamic site I'm going back to a static site.

Migrating to SSR and source availability

My blog is actually two applications: a frontend and a backend. The frontend used to be a client side rendered (CSR) application, which worked fine for my usual work on internal tools.

Building my own Markdown editor

Since I started this blog project I've been using a Markdown based WYSIWYG editor. I necessarily had to pick a new framework when I migrated to Vue.

2025 roadmap

My 2025 roadmap is pretty simple: - [x] Site branding - [x] JSON feed endpoint > I originally intended to publish an Atom Feed but ended up going with JSON Feed since most modern services support it.

Using an LLM to code: six month update

It's been six months since I last wrote about my experience using GitHub CoPilot while I wrote this blog. If you haven't read that entry, my key takeaways were: - CoPilot functioned like a smarter...

Server-client wire-compatibility guarantees

An idea I've been proliferating recently is that, in the year of our lord 2024, server and client communication should be guaranteed to be wire-compatible.

Defensive programming in Python

I love Python, but it's a minefield of a language. Here's some things I do to have confidence in the code I write. Always log exceptions Exceptions are the standard path for error reporting in...

November website updates

November updates are out. This is the conclusion of the major features I intended to develop initially for this blog. Below is a summary of new features and fixes.

How AI tools are democratizing software development

I've been working on the comments system for my blog in the past week. Comments systems are complicated; there's not only what the user experiences but there's also entire sub-systems and metadata...

October website updates

As promised in one of my earlier posts I have continued to hack on this website. The early days of this project were pretty rudimentary at best as my git history will happily attest to.

I wrote a file manager

I wrote a file manager so that I could upload photos and it turned out a lot better than I expected. I ended up with this feature list: - Public files - Private files - Automated, time-based...

Error handling with OpenAPI Generator's typescript-fetch client

I use OpenAPI Generator's typescript-fetch client in most projects I build. For the most part, it does the job, but it wasn't super obvious how I could capture errors as part of my response.

Using Pydantic Settings with Django and Django Ninja

I love Django as a framework. It's modularity makes building new and complex projects a breeze. When Django Ninja came around and layered Pydantic Schema onto the framework for serialization I was...

Forever projects

Before I was a professional programmer programming was much more of a labor of love. I built tools for IRC, mostly scripts and bots for channel management or novelty like slapping someone with...

ooo-yay.com · RSS Amplifier