RSSAmplifier

Blog

From The Architect

Recent content on From The Architect

fromthearchitect.devRSS feed ↗20 posts

Latest posts

Moments: The Photo App I Built to Win an Argument

A phone call with a mate turned into a wager: could AI actually build a real application from scratch? Five months, 898 commits and 40,000 lines of Rust later, here's the verdict — and the app.

Building GNOME Apps with Rust, Part 6: Fetching Feeds

Clicking a sidebar row still just logs a line to stderr. Stand up a second executor for Tokio alongside GTK's single-threaded main loop, fetch and parse real RSS feeds off the UI thread, and learn exactly where the one seam between them is allowed to cross.

Stop Thinking in Rows: GListModel and the Modern List Mindset

GTK4 retired the row-at-a-time way of showing data without much fanfare. Before any specific list widget, the mental shift that has to happen first — and the one case where the old instinct is still correct.

Two YubiKeys, One Prompt Too Many

A PIN prompt that failed before the one that worked, but only when the backup key was in the port. The fix is four lines of ssh_config, and the interesting part is what it takes to answer 'which key is plugged in' quickly enough to run on every connection.

Excavating Legacy ETL: The AI Never Asserts a Fact It Could Look Up

Pointing an LLM at undocumented SAP BODS XML produces confident fiction. Splitting the job into a deterministic fact store and an agent layer that reads from it produces migration specs you can actually sign off.

The Application Shell: GtkApplicationWindow vs AdwApplicationWindow

Every GNOME app starts with a window — and the toolkit hands you two of them. Which to use, why AdwApplicationWindow has no titlebar, and how AdwHeaderBar and AdwToolbarView build the chrome that makes an app feel native.

A Field Guide to GTK Widgets

The GTK reference tells you what every widget is. It rarely tells you which one to reach for, or why the obvious choice will bite you. This series is the field guide I wish I'd had.

Building GNOME Apps with Rust, Part 5: State and Signals

Clicking a sidebar row finally does something. Build a real Feed GObject, bind a list to a model, define a custom signal, and learn where state lives in a GTK Rust app — and why Rc<RefCell<T>> almost never belongs there.

Four Ways the Outbox Bit Me

A follow-up. The architecture is sound. The first six weeks of running it were not. Here are four bugs the round-trip taught me — two about the abstraction, two about the substrate underneath.

Why Open Source Doesn't Embrace AI

A week ago I would have told you the open source community rejected AI for four obvious reasons. Then I tried defending each one properly. Most of them collapse under scrutiny — and what's left is a much more tractable conversation.

Recording Mutations, Not Events

An offline-first photo manager whose library code has no idea it has a sync backend. One enum, one trait, three implementations behind it, and the architectural property they buy together.

The Shape of Decoupling

We designed an event bus, had it externally reviewed, shipped it, and a month later deleted it. Here's why direct service-to-client channels turned out to be the honest answer.

Building GNOME Apps with Rust, Part 4: Blueprint

Replace GTK's verbose XML templates with Blueprint, wire it into Meson, and grow the Hello-World window into the real Gazette layout — sidebar, content pane, and a placeholder feed list.

Building GNOME Apps with Rust, Bonus: The Stack Underneath

Why GNOME's stack looks the way it does in 2026 — a short tour of the licence fight, the component dream that didn't pan out, the GNOME 3 reset, the libadwaita split, and the Flatpak runtime model.

Building GNOME Apps with Rust, Part 3: Your First App

Create a GTK4 + libadwaita application with GNOME Builder, understand every file it generates, and upgrade to the latest GNOME platform

Making a Dumb Fridge Smart

Three Home Assistant alerts built on a single smart-plug power signal — offline, stuck on, and door open — plus the patterns that make them reliable.

Building GNOME Apps with Rust, Part 2: GObject in Rust — The Type System Explained

Before we build a GNOME app, we need to understand GObject — the type system underneath everything in GTK. Here's how it works in Rust.

Building GNOME Apps with Rust, Part 1: Getting Started

Why GNOME, why Rust, and how to set up a development environment that will carry you from first widget to Flathub submission

The AI Pair Programmer: Why the Human Loop Is About Partnership, Not Review

What Extreme Programming taught us about collaboration — and why it maps perfectly onto working with LLMs

About

About Justin and From The Architect.