- LLM Tools and my System Prompts
- Secure Home Server Access with Caddy, Tailscale, and Cloudflare
- Using git to manage dotfiles
- Automating PR descriptions with the LLM CLI
- Setting LLM ClI default template with a wrapper
- Keeping Directories and editing gitignores: A Handy Alias
- Real-Time Voice Streaming and Stateful Buffering
- Returning to R
- Your AI Agent is Unsafe and Sandboxes Won't Save It
- Declaring Python Scripts with `pyproject.toml`
- Understanding `set -euxo pipefail` in Bash Scripts
- Fighting Project Procrastination with a Project Project
- Start simple, iterate to perfection
- Navigating Metric Trade-offs in Machine Learning
- WSGI vs ASGI: Serving Python Models with Gunicorn or Uvicorn
- Extreme Programming for ML Teams: Faster Delivery, Reliable Results
- Quantifying Trust: Ensuring Reliability in LLM Summaries
- Dotfile management with Chezmoi and Vim
- AI Coding Assistants: What a Month of Testing Taught Me
- Finding Git branches faster with FZF
- AI and the Mythical Man-Month: Productivity or Paradox?
- Better config files for python ML experiments
- How I review pull requests
- No abstraction is better than the wrong abstraction
- AI workforce reconsidered, my response
- Small PRs, Big Impact: A Git Workflow for Data Scientists
- Bug hunt: Rescaling DataFrames in Python
- Tuner: why dating apps (probably) don't match with Spotify data
- Asynchronous Vim
- Using Pipes and Sockets for asynchronous local AI Chats
- Metacognition and AI usage
- TIL How to build and host a container on GCP VM instance
- Old Hat, New Tricks: Makefiles for Python Projects
- Tuner: A web app for finding people with similar music tastes
- TIL How to diff two local files
- Small project workflow: The making of `foxtail`