RSSAmplifier

Blog

Bricolage

Essays by Kyle Mathews about software, AI agents, local-first systems, organizations, and how technology changes the way we work.

github.comRSS feed ↗122 posts

Latest posts

Custom Rubrics for Agentic Search

My rubrics are on GitHub — try them with your favorite agent. Example output. I moved from the Bay Area to Salt Lake City a couple years ago…

Steering Is Harder Than It Looks

Napoleon thought he was steering events. Events were steering him. That’s how Tolstoy writes Napoleon in War and Peace. His theory of…

Essential Until It Wasn't

What we call programming today is not the same activity it was two years ago. The daily work, the skills that matter, the texture of the…

Apps After Agents

The Bitter Lesson Has Limits For seventy years, hand-crafted AI approaches lost to scaling. Chess programs with elaborate opening books lost…

The Rise of Protocols

Here’s a quick sketch about why I think protocols are so important and why I think protocol design is a practical skill for many of us to…

Announcing a new Vite Plugin for integrating Capsizecss & Radix-ui

I really enjoy typography — which causes pain when developing for the web. Because the web makes it hard to deeply control text layout. This…

LocalFirst.fm Podcast with Johannes Schickling

Johannes invited me on his LocalFirst.fm podcast and we had a great chat talking about all things Sync Engine / LocalFirst. I thought the…

Build Notes: Where I add an email newsletter with an ElectricSQL admin app

I’ve been avoiding adding a newsletter to my blog for months now. It’s an obvious thing to do and people ask for it now and then but it just…

Build Notes: Where is my time spent when building two micro-apps?

In the past week I built and deployed two micro-apps. I was curious what exactly would take the most time so took fairly detailed notes as I…

Flying Drones in Latent Space

Venkatesh Rao has been on a tear recently with some really insightful posts on AI - if you haven’t subscribed to his substack, Ribbonfarm…

Build Notes: Creating a Local-First, AI-powered YouTube Summarizer

My wife and I have been working on a side project for a while — an AI-powered tool that summarizes YouTube videos. This tool was highly…

Build Notes: Creating a Local First Vite/React/ElectricSQL Starter

I was thinking last night about the new starter I released — that in the past, I’d do a short Twitter thread dumping out the various…

Announcing trpc-crdt

Since my last blog post on local-first and CRDTs two months ago, I’ve continued to explore the possibilities around systems that colocate…

Building a "per-user database" SaaS app with Turso

Turso is a SQLite-in-the-cloud startup with automatic backup and multi-region leader-follower replication across dozens of regions. Last…

Some notes on Local-First Development

A few months ago in June, I attended a local-first meetup in Berlin organized by Johannes Schickling, formerly the founder of Prisma. An…

LLM Test Runners for Content

I wrote, maintained, and thought a lot about documentation for Gatsby. One thing that always bothered me is we couldn’t write tests for our…

A Social Protocols OS

My wife and I often talk about the difficulty of making friends as adults. There’s lots of articles online about this so I won’t rehash them…

Situated Software for Hyper-local, Hyper-yummy Ice Cream

My wife and I are working on a fun side project to create a micro-business to make and sell homemade ice cream to our neighbors. We’ve been…

Do you actually want your own open source project?

Open source is great! It’s an amazing way to grow as a developer, influence our craft, make friends, build your online resume, and help…

Building a Slack bot to help handle large numbers of PRs

Gatsby gets a lot of PRs. We’ve been averaging ~100 / week for the past few months. And even with the great OSS team we’ve built, this is a…

New blog design

I last redesigned my blog around three years ago — before I started on the rewrite of Gatsby that became Gatsby v1. Which is a long time…

Hope and the Atonement

I gave the following at the local LDS church church I attend. Our church doesn’t have paid ministry meaning everyone who attends…

Typefaces: The easiest way to self-host open-source fonts

Once upon a time, I thought self-hosting web fonts was intimidating. It seemed nice but the complexities were too much. I needed to create a…

Working full-time on Gatsby

After several years of working on a startup, I’ve recently quit. The reasons are quite boring—poor product traction and we ran out of money…

Tools to help administer your Facebook Groups

I’m an administrator for an active Facebook group. There’s about a 100 or so of us that regularly post and discuss various issues. As most…

Hosting static sites with Docker and Nginx

For most of its life, this blog has run on Drupal. But as I no longer do Drupal development, maintaining (and even using) Drupal feels like…

New Beginnings

Quick announcement post. First I’m leaving Pantheon, the startup I’ve been working at the past two years. It’s been a fantastic run and I’ve…

Humility and judgement

Ran across a lovely quote tonight. It expresses well a basic tenet of mine, that people and groups do everything they do for a reason that…

Building your own tools

I was explaining to someone in IRC earlier this week about why I was building my own project management software and said it was basically…

Chatroom Feature for Drupal 6.x built with Node.js and Backbone.js

Recently, for fun and learning, I built a group chatroom feature for Drupal 6.x. I’ve been learning and using Node.js and Backbone.js the…

SimpleGTD

I’m starting work soon on building a new open source Getting Things Done web app that I’m tentatively calling SimpleGTD. I’ve tried a good…

It is the learners who inherit the future

The central task of education is to implant a will and a facility for learning; it should produce not learned but learning people. The truly…

Developing faith in God

The following is a talk I recently gave at the local LDS church I attend. Our church doesn’t have paid ministry meaning everyone who attends…

How to create a résumé using Latex

Since recent changes in my life have forced me to look for new employment, I’ve had to relearn the long-forgotten art of writing a résumé…

Becoming unhinged from reality—and fixing that

This is from a most excellent biography of a most interesting person, John Boyd. The danger is that if our mental processes become focused…

The True Executive

From the most excellent book, ”The Organization Man“: Of all organization men, the true executive is the one who remains most suspicious of…

New Drupal-Mixpanel integration module released to track event-based analytics

As part of my work with my (now defunct) startup Eduglu, I wrote a Drupal module that integrates with the popular analytics service Mixpanel…

Eduglu enters the deadpool

I just posted this on the Eduglu community site. Reposted here without further comment: It is with mixed emotions that I announce that I’m…

A loose assortment of thoughts

I was recently introduced to a new phrase which I rather like, “existential musing”. It nicely describes what I’ve been doing a lot of…

Richard Hamming on Luck

From Richard Hamming’s classic and must-read talk, ”You and Your Research“. There is indeed an element of luck, and no, there isn’t. The…

Stockdale paradox

You must never confuse faith that you will prevail in the end—which you can never afford to lose—with the discipline to confront the most…

Creating a CCK Field module with an "invisible" widget

Most CCK Field modules have a widget where the user adds information upon creating a node which is then saved with the node. For the recent…

Eduglu, Roadmaps, platforms, and killer apps

Killer platforms need killer apps. A great platform by itself isn’t that interesting or useful. It takes killer apps to attract customers…

Eduglu Alpha 6 released

Time for another Eduglu release! Download Alpha 6 at eduglu.com There’s been lots of progress made since Alpha 5. Along with the usual…

Veracity is the heart of morality

In an ideal University, as I conceive it, a man should be able to obtain instruction in all forms of knowledge, and discipline in the use of…

First beta release for Drupal-native mailinglist module

Today I rolled out the first beta for my Drupal module, OG Mailinglist, which provides native mailinglist functionality to Drupal similar to…

Three worldwide education trends behind Eduglu

Later this week, I’ll be presenting on my company Eduglu and product Eduglu at Launchup, a local entrepreneurship event. In preparing for my…

The problem of too general tools

There was a nugget of a comment today on the Lean Startup Circle from William Pietri: However, having made the mistake of building too…

Second release of Eduglu

New release of Eduglu I’m pleased to announce the second release of Eduglu! Eduglu is a Drupal distribution designed to support social…

Conversation

From British political philosopher Michael Oakeshott: Conversation is not … a contest where a winner gets a prize, … it is an endless…