Thought Eddies
I've Stopped Learning Programming Languages
I've Stopped Learning Programming Languages
Reviving a Raspberry Pi with Claude Code
Why Write
Year in Review: 2025
Images as Context
On Writing, Speaking and Thinking
Embedding with sqlite-vector
Embeddings with sqlite-vector
Debugging DSPy token usage and prompts
Intro to DSPy
Running a Mile with LLMs
Claude Code Custom Slash Commands Hierarchy
Running `uv` with Environment Variables
Datadog and the OpenAI API Spec
Migrating To Astro
Find the Groove
State Of Code Agents - July 2025
Gemini Hidden Reasoning
With MCP, Dates are a Footgun
Gemini 2.5 Uses Thinking By Default
Amazon Bedrock On Demand Throughput Error
A few strategies to make LLMs useful for you
Agent Coding Strategies
Who Finds LLMs Useful and Why
OpenAI Compatible API Implementation Variance
Note Taking
Using `llm` to handle large input context
Git Worktree
Create a Link Blog
Alfred as a Text Editor
LLM Chat UI Concepts
RSS Club
Models as Force Multipliers and their Limits in Software Development
Vibe Coding in early 2025
Goose as a Task Runner
Adding an llms.txt file to Hugo
Claude Code
Cursor Triple Backticks Stop Sequence
Developing a Mental Model for using Models
Astro Code Toggle Component
Document Citations
Running Deepseek Janus Pro 7B on a Macbook
`llm` upgrade pip
Claude Citations
Zoomable Document
Taking Browser Screenshots with Deno
LLM Conversation Branching
Local VLMs Have Improved
The Unreasonable Effectiveness of Generating UI with React and Tailwind
Calling Deepseek with `llm` using OpenAI Compatible APIs
Year in Review: 2024
Challenges Building an Electron App
Intro to Astro
Practical Deep Learning, Lesson 7, Movie Recommendations
Hugo Social Image Previews
Embeddings Clustering
Conversation Branching
Add Alt Text to an Image with an LLM and Cursor
Practical Deep Learning, Lesson 5, Pricing Iowa Houses with Random Forests
Practical Deep Learning, Lesson 4, Language Model Blog Post Imitator
Models Writing About Coding With Models
Language model random number generator
Practical Deep Learning, Lesson 3, Stochastic Gradient Descent on the Titanic Dataset
Accessing direnv environment variables in a Jupyter notebook
Fixing Nix When Upgrading To macOS Sequoia
Raw Markdown Pages
Hugo Page Bundles
Prompt Template for Word Definitions
Practical Deep Learning, Lesson 2, Rowing Classifier
Claude 3.5 Sonnet Connections Evals
Practical Deep Learning, Lesson 1, Image Models
FastHTML Loading Spinner
Prefill And Stop Sequences
Running Huggingface Models with Llama.cpp and ollama
Upload Multiple Images with FastHTML
Rebuilding My iTerm Setup In Wezterm
VLMs Hallucinate
Structured Output, Functions and Prompting
VLM data extraction with Protobufs
Protobuf Zip Imports in Python
Making Your Vision Real with Models
VLMs aren't blind
Challenges and Opportunities of the Impact of Language Models on Software Engineering
Claude Artifacts
Temporal Parallel Child Workflows
Multi-Modal Models with ollama
Claude 3.5 Sonnet Codes Really Well
Language model-based aggregators
Learning How to Learn
Switching From Pocket to Raindrop for bookmarks
Evals: unit testing for language models
Summarizing webpages with language models
Summarizing Youtube video transcripts with language models
Unmasking a Model Prompt
Using Multiple Temporal Task Queues
Pip Latest Version Checking
Nix-Darwin Launch Agents
Run a Python Module as a Script
Installing git-lfs with Nix
SQLite Vector Similarity Search
SQLite Arrow Key Navigation Support
Using Nix to Install `llm` with Plugins
Installing Python Packages with Nix
Using devbox for a local PostgreSQL database
Rebuilding My iTerm setup in Alacritty
Replicating Hammerspoon window management with yabai and skhd
Managing Multiple Tool Versions with Nix
Nix Channels and the Linux Builder
Nix and Direnv with Flakes
Fresh Hugo Setup
Language Model Streaming With SSE
Intro to Deno
Sandboxed Python Environment
Using Vercel's AI SDK to stream responses from different language models
Fine-tuning gpt-3.5-turbo to learn to play "Connections"
Using My Full Keyboard as an App Launcher with Goku Simultaneous Layers (Simlayer)
Mapping Caps Lock to a Hyper Key with Karabiner and Goku
Fireworks.ai OpenAI Compatibility
2023 Review
Limiting concurrency with Python Coroutines
Python Coroutines
Render Python Encodings Error
Javascript Promises
Kubernetes Liveness Check
Passing an arg to a make target
Intro to skhd
Using open-interpreter to create a DIY audiobook with say
Improving User Experience with Auto-Focus in 2FA Input
Removing the First Line of a File
Embracing Failure in Software Development
Importing Activities for a Temporal Workflow in Python
Disable Obsidian's blinking cursor
Cursor Introduction
Next.js Async Functions
Intro to TypeChat
Warp: first impressions
Promptfoo and standardizing output structure across models
Nix Language
Zero to Nix
Using Marvin for Structured Data Extraction
Migrating to Modules in Hugo
Threading Macros
OpenAI Function Calling
Cloudflare D1
Trying out Jsonformer
Tradeoffs of Using a Cache at Scale
Protobuf contracts with LLMs
Input data schemas and token efficiency
Figuring out how to use LLMs in production
Shaping LLM Responses
Auto-GPT
Using GPT-3.5 to Quickly Generate and Run Shell Commands
Future of Personal Knowledge
Nix and direnv
GPT Prompt Attack
Beating Prompt Injection with Focus
LLM Prompt Injection
Trying Out Deepsparse
Clean Python Setup
Language model schema extraction and object generation
Playing with Language Models
Ways to improve your team's code quality
Pipelines and your Unix toolbox
Go and UNIX files
Debugging go code with delve
Go scope
Tracking a call stack in Go with context
Go channels
Go closures
Custom Markdown rendering
Creating a Go module
Quickstart `supervisor` guide
Querying S3 with Presto
Creating a Presto Cluster
Creating an Elixir module
Git aliases
PySpark dependencies
Python Fabric
Bash SSH host management
Managing bash aliases
Elixir binary search
Hello
qc: quick calculator