RSSAmplifier

Blog

veni vidi cogitavi

Recent content on veni vidi cogitavi

blog.luketurner.orgRSS feed ↗59 posts

Latest posts

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.

Accelerating software projects with AI-assisted prototyping

A post about using AI-assisted development, combined with a prototype-first planning model, to accelerate midsize software projects.

Specks

It's a poem, what else is there to say

Experiments with spec-driven development

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.

Are React hooks like inheritance?

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: Building Bun single-file executables

[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.

Bring your own agent: an alternative AI strategy for SaaS

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: a TUI for running multiple commands

[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.

Unfurling posts with Astro

A tutorial about adding high-quality social media unfurling to your Astro content, including summary, tags, images, estimated reading time, etc.

Dopamine fasting

An explanation of dopamine fasts, dopamine traps, and why you should care.

How I'm using Claude Code

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.

Coupling and Modularization

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.

Why I started streaming programming

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.

Comparing Three CHOP extensions for VS Code

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.

Writing effective design documents

This post is about an important step in designing software systems: writing design documents.

Abstraction in software systems

This post is a high-level explanation of _abstraction_ and why it's so important for software engineering.

The first principle of software design

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.

Hosting your own webhook testing service on Fly.io

Introducing a simple, open-source [Webhook Testing Tool](https://github.com/luketurner/webhook-testing-tool) that you can easily host on Fly.

Using the pgvector extension with Fly Postgres

A quick tutorial for enabling the [pgvector](https://github.com/pgvector/pgvector) extension on your [Fly Postgres](https://fly.io/docs/postgres/) instance.

Deploying Llamafiles on Fly

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).

Three weird reducers: State management in a Next.js app

Explaining a pattern I'm using for client/server state management in [dust](https://github.com/luketurner/dust).

Why I deployed my Next.js app on Fly instead of Vercel

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)".

Features in my ideal habit/task tracking app

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.

SSO Lab: Self-hosting Keycloak on Fly

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.

Astro recipe: New post scaffold script

A script to scaffold new posts for my [Astro](https://astro.build/) blog.

Astro recipe: D2 component

Use [D2](https://d2lang.com/) markup to author diagrams in your [Astro](https://astro.build/) MDX content.

Astro recipe: Creating aliases (redirects) for old content URLs

Implementing [Hugo-style aliases](https://gohugo.io/content-management/urls/#aliases) in [Astro](https://astro.build/).

Ad Astro

Switching my blog's static site generator to [Astro](https://astro.build/).

Web Clipping for Dendron

A brief overview of my [MarkDownload fork](https://github.com/luketurner/markdownload), intended for Dendron users.

Compiling Mermaid, KaTeX, and D2 at build-time with aftermath

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).

Triggering Fly deployments from Gitea webhooks

A brief overview of [gitea-fly-connector](https://github.com/luketurner/gitea-fly-connector), a piece of code I recently published.

Hosting Gitea on Fly

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 techniques

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.

Specter, a motivational tutorial

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.

Arch Linux RPi 4

Installing Arch Linux on Raspberry Pi 4, with notes, tweaks, and bash script.

Cool Tools for Desktop Linux

A list of cool tools, customizations, hacks, etc. for (power-user) desktop Linux.

Doom Emacs config

My self-compiling literate config for Doom Emacs. Supports note-taking and blogging workflows.

ClojureScript Project Quickstart

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).

Useful GUIs for Developers

A list of interesting GUI tools for developers.

Recommended books

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.

GergoPlex Keymap Images

My printable key layout images for the Gergoplex keyboard

Customizing the Faunchpad

A "Getting started" guide for customizing the Faunchpad's keybindings. Covers QMK basics, compiling, and flashing the firmware.

Blogging workflow

A brief summary of my blogging workflow.

Pi Homelab

My notes from planning and provisioning a lightweight Kubernetes custer with Raspberry Pis and k3s.

The new blog theme

What I think about when making a new theme for my blog, and how that affects the design you're looking at now.

About this blog

Has information about the blog you're currently reading.

Sample Formatting

This post illustrates the different features and formatting available for content on my blog.

Sharing human knowledge

Words are a lossy way to represent information. How can we share knowledge with language despite its lossiness?

The Internet is down

A short poem.

G.O.L.EM.

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.