developer blog
how i use openclaw
openclaw tutorial: my setup for an ai assistant that handles tasks, calendar, finances, and more
agentic coding is the default
a brief exploration of how i write code in 2026.
my talk from hono conference 2025
a link to the slides and a brief overview of what i talked about at hono conference 2025.
closing a cleaning company
reflections on one of my 2025 projects, and why it didn't work out
how i'm doing plain-text accounting
getting started with hledger for bookkeeping
re-encoding a media library
notes on considering av1 encoding for my plex library
ecovacs goat a3000 review
my experience with a robot lawn mower
four ideas from extensive claude code usage
four practical ideas for getting more out of claude code, from planning workflows to memory and tool usage.
setting up teslamate with docker and proxmox
using proxmox, docker, and tailscale to self-host teslamate in your home network
rewriting functionality with claude code
claude code's coding agent is great for meaningful but non-essential code rewrites
building a cleaning company
documenting my wip experience building a home service business
"act as my personal strategic advisor"
a cool ai prompt to help you make decisions.
image binding in workers
how to use cloudflare images bindings in workers to watermark and transform images on your site.
redesigning
thoughts on application facelifts.
programatically generated weather svgs
using workers to generate weather svgs for my newsletter
diy error monitor
building a diy error monitor for serverless applications using cloudflare tail workers, deepseek, and slack
san marcos tx life
building a local newsletter for san marcos, tx.
the switch to linear
i switched everything in my life to linear - here's why.
sleepy time tea
my recipe for tea at nighttime.
caching middleware with deepseek and workers
building an ai-powered caching layer for "smarter" (this is questionable) content delivery
integrating workers assets with fullstack apps
how to integrate workers assets, service bindings, and full-stack apps
recursively transcode flac files to mp3
a quick script for recursively transcoding lossless flac files to mp3
my morning coffee
my morning coffee routine.
about
about kristian freeman
date and time numbers cheatsheet
a list of date and time numbers that all programmers should know
how to generate types for a supabase project
learn how to generate types for a supabase project using the supabase cli.
how to filter shell output with grep
embracing the unix philosophy and some basic grep tricks to easily scan noisy logs.
running a ruby on rails application in nix
a minimal configuration for running a ruby on rails application in nix
beverage hydration index
why coca-cola may be better than water.
just enough obsidian
more about my obsidian process: themes, plugins, styling, best practices.
my starter macos nix config
what i used on a new macos machine to write and publish this post.
message of the day
different ways to implement the 'message of the day' in unix machines
success with obsidian
maybe the trick is just to write about and document things you actually care about.
effective web clipping with obsidian
how to make custom clipping templates with obsidian web clipper
install fonts with homebrew
how to install most fonts in a single command, using homebrew.
get started with 𝕏 ai and grok
an introduction to 𝕏 ai and the grok foundational models, with sample code.
how i record videos
a description of my process for recording videos for software developers, in 2024.
m4 macs
some brief thoughts on the new mac hardware announced this week.
tailwind child selectors
how to use child selectors in tailwind css 3.1+.
workers entrypoints
a cloudflare workers application can have multiple entrypoints, allowing for different usage patterns.
an introduction to cloudflare workflows
how to get started with a great new feature in cloudflare's developer platform.
announcing the astro cloudflare redirects integration
a plugin for astro to automatically generate redirects using cloudflare's _redirects file specification.
recommended icon libraries
a rundown of three icon libraries i recommend for react/webdev projects.
donor advised funds
a tax-advantaged investment vehicle for charitable donations.
building an indexer
an open-source solution for indexing your site.
effective indexing
strategies for improving your site's seo and indexing.
the astro rewrite
migrating my blog from bearblog.dev to astro.
shipfast vulnerabilities
a look at the vulnerabilities in shipfast.
the mcmaster-carrification effect
improving this site with tweaks inspired by mcmaster-carr.
building your own radio network with liquidsoap
building a localhost radio empire.
releasing my bearblog chrome extension
a chrome extension for navigating bearblog.
defer loading css with one line of code
how to defer css loading with one line of code.
increasing lighthouse score to 100
some performance tricks for improving the lighthouse score of this site.
understanding astro's getstaticpaths function
how to use one of astro's most powerful features for static site generation.
an introduction to astro's content system
an in-depth look at how to use astro's powerful content system.
how to add cloudflare turnstile to your ruby on rails application
adding protection to your rails app with cloudflare turnstile.
the big bearblog syntax highlighting hack
a terribly convoluted way to add syntax highlighting to bearblog.
how to use lucide icons via a cdn
a simple way to use lucide icons in situations where you can't use npm.
just enough zustand
an introduction to zustand, a great state management library for react.
the quest for pure aspirin
sourcing high quality aspirin powder.
deploying astro applications to cloudflare
details on how to deploy full-stack astro apps to cloudflare.
shadcn/ui review
a quick review of an excellent react ui library.
create a zellij instance with a useful session name
fixing one of zellij's annoying quirks.
creating a custom post list page in bear
how to add custom pages to bearblog for a specific tag.
blog rss auto-backlinks on a github repo
a tricky hack for adding backlinks to a github repo.
idgaf git commit
a quick way to commit early, and often.
shopping list of non-toxic products
a running list of health products i'm using, primarily around eliminating toxic pufas.
recent developer tool discoveries
some tools i've discovered recently that have improved my development experience.
what to do with a newsletter?
a thought on the value of newsletters.
digital throwaways, physical keepsakes
collecting physical media, versus staying fully digital.
full-stack development is a superpower
developers: invest in full-stack development skills.
replaying majora's mask
a great way to replay one of the greatest video games ever made.
second brain alternative
what if we don't need a second brain?
what comes next after simple chat uis in ai?
a look at the next step in developing with ai.
quick review of zellij
reviewing a modern terminal multiplexer.
llms and voice are really something else
a look at how to use llms with voice.
shipfast and the world of starter kits
what is the value of a starter kit for builders?
the whoop is quite cool
a review of the whoop fitness tracker.
a great usage of qr codes in the real world
a look at how i built tools for managing my home using qr codes.
authenticity and producing content as a developer advocate
some unstructured thoughts on working as a developer advocate in 2024.
how to fix 𝕏's broken "download an archive of your data" feature
a fix for a crucial feature in 𝕏.
second brain-less
thoughts on obsidian and the "second brain" process.
domain ranking experiment
a continuous experiment to increase the domain ranking of this site.
roms
downloading roms at scale.
youtube music
a process for collecting music from youtube, for the completionists.
building a sharex-style screenshot workflow on macos
how to build a workflow similar to the windows app sharex on macos, including uploads, custom hostnames, and clean urls.