Long-running agent workflows: Background and Tools
An overview of tools and preliminary workflow for running agentic sessions in the cloud and managing them via mobile/desktop devices.
Recent content on veni vidi cogitavi
An overview of tools and preliminary workflow for running agentic sessions in the cloud and managing them via mobile/desktop devices.
A post about using AI-assisted development, combined with a prototype-first planning model, to accelerate midsize software projects.
It's a poem, what else is there to say
Spec-driven development is a methodology where _specs_ are used as a basis for generating code. In this post, I talk about my SDD workflow using [spec-kit](https://github.com/github/spec-kit) and Claude Code subagents.
I recently saw [a comment](https://news.ycombinator.com/item?id=45475923) on Hacker News comparing React hooks with multiple inheritance in C++. I thought this was an interesting analogy and wanted to expand on it a bit.
[Bakery](https://github.com/luketurner/bakery) is an opinionated utility for building and releasing projects with [Bun](https://bun.com/). It's intended for tools and executables, not libraries.
In this post, I want to talk about an AI strategy for SaaS companies that I think will be _cheaper_, _simpler_, and _more future-proof_ than the alternative. I call it **Bring your own agent** (BYOA).
[weave](https://github.com/luketurner/weave) is a CLI/TUI for running multiple long-running commands and "weaving" together their output. I use it to solve a persistent pain point of mine -- running multiple dev servers / watchers / etc. at once.
A tutorial about adding high-quality social media unfurling to your Astro content, including summary, tags, images, estimated reading time, etc.
An explanation of dopamine fasts, dopamine traps, and why you should care.
This post describes my process for developing with [Claude Code](https://www.anthropic.com/claude-code), including the "transient micro-IDE" concept I'm using for managing multiple worktrees at once.
In this post, I'll be talking about the ideas of coupling, decoupling, and modularization, and how coupling is tightly related to the idea of the software's design context.
I've started streaming software development at https://www.twitch.tv/LukeTurnerSWE (past streams are available [on youtube](https://www.youtube.com/@LukeTurnerSWE)). In this post, I give a brief explanation of why I've started doing this.
A quick, semi-scientific comparison of using [Github Copilot](https://github.com/features/copilot), [Cline](https://github.com/cline/cline), and [Cody](https://sourcegraph.com/cody) VSCode extensions to do Chat-Oriented Programming (CHOP). Their performance is compared for writing tests, refactoring, and adding features.
This post is about an important step in designing software systems: writing design documents.
This post is a high-level explanation of _abstraction_ and why it's so important for software engineering.
In this post, I want to talk about how I think about designing software systems, starting from the first and most important principle. This is inspired by my experience conducting interviews at Redox, mentoring engineers over the years, as well as designing complex systems myself.
Introducing a simple, open-source [Webhook Testing Tool](https://github.com/luketurner/webhook-testing-tool) that you can easily host on Fly.
A quick tutorial for enabling the [pgvector](https://github.com/pgvector/pgvector) extension on your [Fly Postgres](https://fly.io/docs/postgres/) instance.
A quick tutorial for deploying a private "LLM model as a service" to [Fly](https:fly.io) using a single-file executable [Llamafile](https://github.com/Mozilla-Ocho/llamafile).
Explaining a pattern I'm using for client/server state management in [dust](https://github.com/luketurner/dust).
I recently deployed another [one of my little apps](https://dust.luketurner.org), written with [Next.js](https://nextjs.org/). In this post, I discuss why my app is deployed on [Fly](https://fly.io/) instead of [Vercel](https://vercel.com), even though Vercel is "[the native Next.js platform](https://vercel.com/docs/frameworks/nextjs)".
I'm working on a habit/task tracking app called [Habitsheets](https://github.com/luketurner/habitsheets). As I've worked on it, thinking about "features I'd like in my ideal habit/task tracking app," some ideas occurred to me that don't seem common in other apps. This post is highlighting those features I wouldn't mind seeing in other habit and/or task management tools.
I've been wanting an "SSO lab" for experimenting with Single Sign-On (SAML and OIDC) setups. My solution is a [Keycloak](https://www.keycloak.org/) instance running on [Fly.io](https://fly.io/). This post is a brief tutorial for self-hosting your own Keycloak instance.
A script to scaffold new posts for my [Astro](https://astro.build/) blog.
Use [D2](https://d2lang.com/) markup to author diagrams in your [Astro](https://astro.build/) MDX content.
Implementing [Hugo-style aliases](https://gohugo.io/content-management/urls/#aliases) in [Astro](https://astro.build/).
Switching my blog's static site generator to [Astro](https://astro.build/).
A brief overview of my [MarkDownload fork](https://github.com/luketurner/markdownload), intended for Dendron users.
I'm happy to report that you no longer need JavaScript to see rendered KaTeX expressions and Mermaid diagrams in my blog posts! I wrote a script [aftermath](https://github.com/luketurner/aftermath) that post-processes my blog posts to compile the following at build-time: [KaTeX](https://katex.org/), [Mermaid](https://mermaid.js.org/), and [D2](https://d2lang.com).
A brief overview of [gitea-fly-connector](https://github.com/luketurner/gitea-fly-connector), a piece of code I recently published.
This is a tutorial for hosting [Gitea](https://gitea.io/en-us/) on [Fly.io](https://fly.io/). Includes installation, hardening, SSH, and custom domain setup. For an example of what you get, see [git.luketurner.org](https://git.luketurner.org).
Breathing: We all do it, but we don't usually pay attention to it. This post has a brief summary of some conscious breathing techniques that I like to use in everyday life.
This is a tutorial for [Specter](https://github.com/redplanetlabs/specter), an awesome Clojure(Script) library for transforming complex data structures. I seek to explain the how and why of Specter through a series of worked examples.
Installing Arch Linux on Raspberry Pi 4, with notes, tweaks, and bash script.
A list of cool tools, customizations, hacks, etc. for (power-user) desktop Linux.
My self-compiling literate config for Doom Emacs. Supports note-taking and blogging workflows.
A brief guide to tooling for ClojureScript projects. Includes compiling, development servers, CI/CD, and publishing to Netlify (for websites) and/or Clojars (for libraries).
A list of interesting GUI tools for developers.
Looking for something to read? This is a list of books I've read and recommended, organized by genre. The list is provided in both human-readable and CSV formats.
My printable key layout images for the Gergoplex keyboard
A "Getting started" guide for customizing the Faunchpad's keybindings. Covers QMK basics, compiling, and flashing the firmware.
A brief summary of my blogging workflow.
My notes from planning and provisioning a lightweight Kubernetes custer with Raspberry Pis and k3s.
What I think about when making a new theme for my blog, and how that affects the design you're looking at now.
Has information about the blog you're currently reading.
This post illustrates the different features and formatting available for content on my blog.
Words are a lossy way to represent information. How can we share knowledge with language despite its lossiness?
A short poem.
G.O.L.EM. (Game Of Life EMulator) is an interactive Game of Life implementation I built, just for fun, using Clojurescript and HTML Canvas.