Posts for: #Workflow

XP 3.0: AI Validates What Extreme Programming Got Right

XP 3.0: AI Validates What Extreme Programming Got Right

Extreme Programming evangelists knew pair programming, TDD, code review, and simple design produced better software. The industry mostly ignored them. Too expensive. Too slow. Doesn’t scale.

AI changes this calculation completely. We all pair program now - with AI. TDD keeps AI on rails. AI-to-AI code review catches what humans miss. Simple design matters more than ever because AI needs clean structure to understand context.

XP was right. AI makes it practical.

[Read more]

Emacs for AI Development: Workflows That Scale

Emacs for AI Development: Workflows That Scale

Modern IDEs optimize for mouse-driven workflows and language-specific features. Emacs optimizes for text manipulation and extensibility. AI development requires working across multiple languages, formats, and tools simultaneously. Emacs handles this naturally.

Python for training scripts. YAML for Kubernetes configs. SQL for feature queries. Markdown for documentation. JSON for API responses. Terraform for infrastructure. Shell scripts for automation. Emacs treats all of them as text to be manipulated efficiently.

Why Emacs in 2025

Text-first paradigm:

[Read more]

Async-First Remote Teams: Leading 35 Engineers Across Time Zones

Async-First Remote Teams: Leading 35 Engineers Across Time Zones

Synchronous meetings don’t scale across six countries and four time zones. Someone is always on a call at 2am or missing context from the 9am standup they couldn’t attend.

Async-first communication solves this. Write decisions down. Document context. Use tools like Clarity for status visibility. Make meetings the exception, not the default. Result: 97% retention over 4 years at Digital Turbine leading 35 remote engineers across 6 countries.

Write Everything Down

Meetings generate decisions. Conversations surface insights. Neither persists unless written.

[Read more]

direnv: Tree-Based Environment State for Your Terminal

direnv: Tree-Based Environment State for Your Terminal

Every project needs different environment variables. GitHub credentials for personal projects. GitHub Enterprise for work. Different AWS profiles. Different API keys. Different Node.js versions.

The traditional approach: manually export variables, or source project-specific shell scripts, or maintain complex .zshrc configurations that load everything globally.

direnv automates this. Drop a .envrc file in any directory. direnv loads it when you cd in, unloads it when you cd out. Tree-based: child directories inherit parent .envrc settings. Works with any shell.

[Read more]

Git Worktree: Multitasking Without the Context Switching Tax

Git Worktree: Multitasking Without the Context Switching Tax

You’re deep in a feature branch with uncommitted changes, half-written code, and tests not passing yet. Then: “Hey, can you review this PR real quick?” or “There’s a critical bug in prod!”

Three options: copy the directory, clone the repo again, or use git worktree.

Option 1: Copy the Directory

cp -r myproject myproject-feature
cd myproject-feature
git checkout feature/new-api

Each copy has its own .git directory. That’s 500MB+ duplicated per copy. git fetch in one doesn’t update the others. Disk usage explodes.

[Read more]