Command Palette

Search for a command to run...

Page Inspect

https://lethain.com/
Internal Links
859
External Links
3
Images
0
Headings
0

Page Content

Title:Irrational Exuberance
Description:
HTML Size:229 KB
Markdown Size:45 KB
Fetched At:November 17, 2025

Page Structure

Markdown Content

Irrational Exuberance

Irrational Exuberance

- Popular
- Tags
- Newsletter
- RSS
- About

*Crafting Engineering Strategy* is available now on O'Reilly and Amazon!

Hey folks, I’m Will Larson! I wrote *An Elegant Puzzle*, *Staff Engineer*, *The Engineering Executive’s Primer*, and *Crafting Engineering Strategy*. You might also be interested in my collection of popular blog posts over the years, or to read my writing as it’s published via my newsletter or my RSS feed.

⭐ "Good engineering management" is a fad October 26, 2025

Crafting Engineering Strategy! October 25, 2025

An agent to use Notion docs as prompts to comment on Notion docs. July 20, 2025

Commenting on Notion docs via OpenAI and Zapier. July 20, 2025

⭐ Moving from an orchestration-heavy to leadership-heavy management role. July 19, 2025

Advancing the industry, part two. July 18, 2025

What can agents actually do? July 6, 2025

What is the competitive advantage of authors in the age of LLMs? June 14, 2025

My desk setup in 2025. June 7, 2025

Stuff I learned at Carta. May 23, 2025

systems-mcp: generate systems models via LLM May 11, 2025

How to provide feedback on documents. May 11, 2025

Public company comparables. May 3, 2025

How to filter out old email from inbox May 3, 2025

How should Stripe deprecate APIs? (~2016) April 24, 2025

Systems model of API deprecation April 24, 2025

library-mcp: working with Markdown knowledge bases April 22, 2025

Refreshed StaffEng.com and a few other sites April 20, 2025

Why did Stripe build Sorbet? (~2017) April 17, 2025

How to get better at strategy? April 10, 2025

Wardley mapping the service orchestration ecosystem (2014). April 10, 2025

Script for consistent linking within book. April 6, 2025

How to resource Engineering-driven projects at Calm? (2020) April 3, 2025

Is this strategy any good? March 27, 2025

Steps to build an engineering strategy. March 27, 2025

Operational mechanisms for strategy. March 20, 2025

Career advice in 2025. March 15, 2025

Setting policy for strategy. March 13, 2025

Who gets to do strategy? March 6, 2025

How to integrate Stripe's acquisition of Index? (2018) February 27, 2025

Diagnosis in engineering strategy. February 22, 2025

Exploring for strategy. February 13, 2025

How should we control access to user data? February 7, 2025

Our own agents with their own tools. February 4, 2025

Is engineering strategy useful? January 30, 2025

"We're a product engineering company!" — Engineering strategy at Calm. January 23, 2025

Bridging theory and practice in engineering strategy. January 16, 2025

Uber's service migration strategy circa 2014. January 9, 2025

Service onboarding model for Uber (2014). January 9, 2025

Refining strategy with Wardley Mapping. January 2, 2025

How to effectively refine engineering strategy. December 28, 2024

Wardley mapping the LLM ecosystem. December 24, 2024

Wardley mapping of Gitlab Strategy. December 23, 2024

2024 in review. December 14, 2024

Measuring developer experience, benchmarks, and providing a theory of improvement. December 8, 2024

Rough notes on learning Wardley Mapping. November 30, 2024

Video of practice run of QCon SF 2024 talk on Principal Engineers. November 21, 2024

How to get more headcount. November 16, 2024

Navigating Private Equity ownership. November 11, 2024

Using systems modeling to refine strategy. November 4, 2024

⭐ Eng org seniority-mix model. October 27, 2024

Modeling driving onboarding. October 19, 2024

Modeling impact of LLMs on Developer Experience. October 6, 2024

Strategy testing: avoid the waterfall strategy trap with iterative refinement. September 25, 2024

Should we decompose our monolith? September 15, 2024

Executive translation. September 7, 2024

Video of Developing Eng Leadership Styles. September 7, 2024

Numbers go up. September 1, 2024

When to write strategy, and how much? August 25, 2024

Developing domain expertise: get your hands dirty. July 16, 2024

Physics and perception. June 29, 2024

⭐ How to create software quality. June 16, 2024

Video of Using LLMs in your product. June 14, 2024

No Wrong Doors. May 22, 2024

Making engineering strategies more readable May 18, 2024

How should you adopt LLMs? May 14, 2024

Load-bearing / Career-minded / Act Two rationales May 2, 2024

Constraints on giving feedback. April 29, 2024

Notes on how to use LLMs in your product. April 8, 2024

Ex-technology companies. March 22, 2024

Leadership requires taking some risk. March 17, 2024

Friction isn't velocity. March 15, 2024

More (self-)publishing thoughts. February 24, 2024

Digital release of Engineering Executive's Primer. February 7, 2024

Thesis on value accumulation in AI. January 31, 2024

High-Context Triad. January 24, 2024

⭐ Useful tradeoffs are multi-dimensional. January 24, 2024

Navigating ambiguity. January 19, 2024

⭐ Layers of context. January 15, 2024

Those five spare hours each week. January 14, 2024

Predictability. January 1, 2024

2023 in review. December 18, 2023

Notes on How Big Things Get Done December 15, 2023

⭐ Writers who operate. December 7, 2023

Advancing the industry. December 7, 2023

Notes on Enterprise Architecture as Strategy December 7, 2023

Create technical leverage: workflow improvements & product capabilities December 1, 2023

Navigators November 24, 2023

Notes on The Crux November 24, 2023

Engineering strategy notes. November 21, 2023

Notes on Technology Strategy Patterns November 20, 2023

Notes on The Software Engineer's Guidebook November 19, 2023

Notes on Tidy First? November 19, 2023

Notes on The Value Flywheel Effect November 18, 2023

Team Charters are a trap. November 12, 2023

A bit late, but I did leave Calm. November 12, 2023

Benchmarking. November 11, 2023

Getting lucky isn't a plan. November 11, 2023

Thoughts on writing and publishing Primer. November 3, 2023

Developing leadership styles October 22, 2023

Video of Solving the Eng Strategy crisis. October 21, 2023

Solving the Engineering Strategy crisis. September 23, 2023

Drafted Eng Executive's Primer! September 4, 2023

Performance & Compensation (for Eng Execs). September 3, 2023

The Engineering executive’s role in hiring. August 27, 2023

Manage your priorities and energy. August 3, 2023

Gelling your Engineering leadership team. July 11, 2023

Building personal and organizational prestige July 4, 2023

Playing with Streamlit and LLMs. June 19, 2023

Extract the kernel. May 27, 2023

Slides for Measuring an engineering organization. May 20, 2023

Good hypergrowth/curator manager. April 30, 2023

The Engineering Executive's Primer. April 27, 2023

Balancing your CEO, peers, and Engineering. April 20, 2023

Grab bag of random thoughts. April 17, 2023

Interviewing engineering executives. April 17, 2023

Poking around OpenAI. April 12, 2023

How to plan as an engineering executive. April 10, 2023

Who runs Engineering processes? April 3, 2023

Onboarding peer executives. March 27, 2023

⭐ Deciding to leave your (executive) job. March 20, 2023

Using cultural survey data. March 13, 2023

Running your engineering onboarding program. March 6, 2023

Engineering’s role in Mergers & Acquisitions. February 27, 2023

Building your executive network. February 21, 2023

ReadME contribution on reliability programs. February 16, 2023

⭐ Writing an engineering strategy. February 13, 2023

Better to micromanage than be disengaged. February 6, 2023

Culture vs systems. February 3, 2023

⭐ Setting engineering org values. January 30, 2023

Safe defaults. January 26, 2023

Internal comms for executives. January 23, 2023

What does it mean to be a cost center? January 20, 2023

Meetings for an effective eng organization. January 17, 2023

Mailbag: What should you do if you report to an underperforming executive? January 15, 2023

Trying Plausible. January 12, 2023

Getting a job as an engineering executive. January 8, 2023

Make an effective executive LinkedIn profile. January 8, 2023

How to capitalize engineering costs. January 5, 2023

Trying Tailscale. January 4, 2023

⭐ Measuring an engineering organization. January 2, 2023

A brief rant on converging compliance regimes. December 22, 2022

Lessons not worth learning. December 15, 2022

2022 in review. December 13, 2022

2019 - 2022 reading recap. December 12, 2022

When shouldn't you roll out business reviews? December 10, 2022

Company, team, self. November 30, 2022

Twitter. November 19, 2022

The flying wedge. November 13, 2022

Work hard / work smart. November 7, 2022

Time and energy. November 6, 2022

Mailbag: What isn't measurable? To hire as exec or not? October 21, 2022

Reminiscing: the retreat to comforting work. October 11, 2022

Fewer, happier incident heroes. October 8, 2022

One-on-ones with executives. September 6, 2022

'Drawing your three maps' exercise September 4, 2022

Bar raisers, hiring committees, and other complex ways to improve hiring quality. August 28, 2022

How to estimate disk space. July 8, 2022

⭐ Reading a Profit & Loss statement. July 6, 2022

Downturn career decisions. July 5, 2022

STAR method for interview questions. June 20, 2022

Career checkup template. June 5, 2022

Plagarism, idea theft, and writing online. May 21, 2022

Mailbag: Did I become a manager too soon? May 18, 2022

Moving the finish line. May 11, 2022

Your migration probably isn’t failing due to insufficient staffing. May 5, 2022

⭐ Founding Uber SRE. April 28, 2022

Platforms change but cool URIs don't. April 25, 2022

Interim assignments. April 23, 2022

Stuff I haven't written yet, but hopefully will someday (2022). April 22, 2022

Stripe's model of product-led, developer-centric growth. April 16, 2022

Mailbag: Resources for Engineering Directors. April 13, 2022

Generating a daily snapshot of Twitter Search results. April 7, 2022

Should you prioritize infrastructure costs? April 3, 2022

What is innovation? April 2, 2022

⭐ Hard to work with. March 17, 2022

Starting to write Infrastructure Engineering. March 9, 2022

⭐ Trunk and Branches Model for Scaling Infrastructure Organizations March 5, 2022

Getting started with git-scraping February 27, 2022

The impact of less scalable work. February 21, 2022

Mix and match mental models. January 15, 2022

Index of writing on hiring. January 9, 2022

Things I learned hiring a data science leader. December 30, 2021

Dipping toes in angel investing. December 30, 2021

Why not start an indie tech book publisher? December 27, 2021

⭐ Inspection and the limits of trust. December 18, 2021

Thesis on engineering onboarding products. December 4, 2021

2021 in review. November 23, 2021

The terminal level rulebook. November 17, 2021

Should you write a technical or management book? November 17, 2021

Notes on The Kool-Aid Factory's Planning Issue. October 24, 2021

How to find engineering leadership roles. October 16, 2021

⭐ How to safely think in systems. October 7, 2021

Learning about personal finances. September 11, 2021

Notes on hiring a Foundation Eng leader. September 9, 2021

Closing calls: tell the best version of the truth. August 26, 2021

Create capacity rather than capture it. August 17, 2021

Getting to yes: solving engineering manager hiring loops that reject every candidate. July 26, 2021

Pockets of rest enable careers. July 2, 2021

Can senior leaders make friends at work? June 7, 2021

An interlude. May 11, 2021

Mailbag: Should we just call them architects? March 26, 2021

RSS feed changing! Migrating blog in next few days. March 25, 2021

Mailbag: How to deal with unhappy users on your Internal platform? March 3, 2021

Measures of engineering impact. February 27, 2021

Digital gardening at Exuberant Sketches. February 25, 2021

Self-publishing Staff Engineer. February 17, 2021

Mailbag: Building alignment around a new strategy. February 16, 2021

Mailbag: How to encourage good documents rather than perfect documents? February 15, 2021

The curious case of the missing regretted attrition. February 9, 2021

Staff Engineer. February 5, 2021

Why not create a StaffEng Slack or Discord? February 1, 2021

⭐ How to be a tech influencer. January 30, 2021

How to present to executives. January 2, 2021

Early Edition of "Staff Engineer" coming Jan 31st. January 1, 2021

Pacing and isolating change. December 21, 2020

Tech Lead Management roles are a trap. December 18, 2020

Interesting work happens at the edges. December 17, 2020

2020 in review. December 10, 2020

Weak and strong team concepts. December 5, 2020

What do Staff engineers actually do? December 3, 2020

Managing Staff-plus engineers. November 27, 2020

⭐ Write five, then synthesize: good engineering strategy is boring. November 26, 2020

Mailbag: Advice for someone five years into their tech career? November 23, 2020

Notes on compliance tools. November 22, 2020

Interviewing for Staff-plus roles. November 20, 2020

Finding your Staff sponsor. November 19, 2020

My skepticism towards current developer meta-productivity tools. November 18, 2020

Renegotiating your first vendor contract. November 14, 2020

Speaking and podcasts in 2020. November 13, 2020

Engineering strategy every org should write. November 7, 2020

Surplus rules of engineering strategy. November 7, 2020

Care and feeding for your engineering strategy. November 7, 2020

Things that aren't engineering strategy. November 7, 2020

A survey of engineering strategies. November 7, 2020

Engineering strategy. November 5, 2020

Developer productivity surveys. October 18, 2020

⭐ Managing technical quality in a codebase. October 17, 2020

Finding the right company to reach Staff Engineer. October 8, 2020

Deciding to switch companies. October 1, 2020

TechWriters community. September 26, 2020

Being visible. September 24, 2020

Staff projects. September 17, 2020

⭐ Work on what matters. September 10, 2020

Using QR Codes in printed books. September 7, 2020

Build a network of peers. September 4, 2020

Performative leadership. August 23, 2020

The Grand Migration. August 13, 2020

Promotion pathologies. August 9, 2020

Staff promotion packets. August 8, 2020

The Saint-Exupéry of metrics. August 6, 2020

Some common hiring manager mistakes. August 2, 2020

Customizing screen and screenrc. July 26, 2020

Create space for others. July 26, 2020

Staff-plus interview processes. July 12, 2020

External office hours. July 7, 2020

Does the Staff title even matter? June 28, 2020

Where do Staff-plus engineers fit into the org? June 28, 2020

StaffEng Updates, June 2020 June 23, 2020

Stuff I've learned about Diversity, Equity and Inclusion over the past few years. June 20, 2020

How to practice backend engineering. June 20, 2020

Trapped in a Values Oasis. June 18, 2020

My career story. June 14, 2020

Mentoring from privilege. June 13, 2020

Ways I'm available to help. June 12, 2020

Black Lives Matter. May 30, 2020

To lead, you have to follow. May 25, 2020

The rush to "show value." May 5, 2020

April updates for StaffEng. April 23, 2020

Picking problems for programming interviews. April 19, 2020

Minding our stories. April 16, 2020

Testing Python projects for Google Cloud Run. April 11, 2020

Staff engineer archetypes. April 9, 2020

Poking around Contentful. April 5, 2020

Build versus buy. April 5, 2020

Staying aligned with authority. April 2, 2020

Getting in the room. March 28, 2020

Learn to never be wrong. March 21, 2020

How do folks reach Staff Engineer? March 19, 2020

Hotspotting developer productivity. March 17, 2020

vtt-compactor: slightly less verbose VTT files. March 7, 2020

Resources for Staff-plus engineers. March 7, 2020

From one to two: how to start a successful distributed engineering office. March 3, 2020

Interviewing senior engineering leaders. February 18, 2020

Mailbag: Evolving your engineer career beyond the career level. February 13, 2020

Crowdsourcing CTO/VPE learning circles. February 11, 2020

Do you work at a tech company? February 10, 2020

Share stories, not advice. February 4, 2020

How to partner with an executive assistant. January 28, 2020

Example Call For Proposals submissions. January 25, 2020

Joining Calm. January 21, 2020

Some rough notes on running learning circles. January 18, 2020

How to build your company's engineering brand. January 16, 2020

More great memos. January 14, 2020

⭐ Your first 90 days as CTO or VP Engineering. January 13, 2020

How to navigate and/or survive your acquihire. January 2, 2020

⭐ How the Digg team was acquihired. January 1, 2020

2019 in review. December 26, 2019

"Good Process is Evolved, Not Designed" in 97 Things Every Engineering Manager Should Know December 20, 2019

Incident response, programs and you(r startup). December 19, 2019

Mailbag: When your team wants your job, personal brand, and service registries. December 9, 2019

Maintaining platform-product fit. November 25, 2019

"How to successfully design organizational processes" November 23, 2019

"Do engineering managers need to be technical?" in Increment. November 22, 2019

Expanding on S\[a-z\]{3,} Reliability Engineer roles. November 18, 2019

Notes on Building Evolutionary Architectures. November 15, 2019

You only learn when you reflect. November 14, 2019

Distributing your Slack application. November 11, 2019

Using Cloud Firestore to power a Slack app. November 10, 2019

Make Slack app respond to reacji. November 9, 2019

Adding App Home to Slack app in Python. November 8, 2019

Creating a Slack App in Python on GCP. November 6, 2019

HMAC SHA256 signatures in Python and Flask. November 6, 2019

Forecasting synthetic metrics. November 5, 2019

Sending weekly 5-15 updates. November 3, 2019

"Investing in technical infrastructure" October 31, 2019

Healthchecks at scale. October 27, 2019

An Elegant Puzzle by the numbers, five months later. October 23, 2019

Founding Monocle Studios. October 22, 2019

Nobody cares about quality. October 12, 2019

⭐ A forty-year career. October 8, 2019

Notes on data modeling from Handbook of Relational Database Design. September 13, 2019

Organizing team offsites. September 8, 2019

Rewriting the Yahoo! BOSS Datahub. August 31, 2019

Describing fault domains. August 17, 2019

Distributed systems vocabulary. August 11, 2019

⭐ Reclaim unreasonable software. July 28, 2019

What's the inverse of literate programming. July 14, 2019

Head in the clouds. July 7, 2019

Don't follow the sun. July 3, 2019

Notes on Escaping the Build Trap June 30, 2019

Fostering program engagement. June 26, 2019

Programs: tips for owning the unownable. June 25, 2019

Some career advice. June 22, 2019

Running systems library as Cloud Function. June 16, 2019

Path to engineering manager of managers. June 15, 2019

An Elegant Puzzle @ Software Engineering Daily June 14, 2019

What I learned writing a book. June 8, 2019

Privilege's upward-facing window. June 1, 2019

Elegant Puzzle press, reviews and podcasts. May 29, 2019

An Elegant Puzzle is released today! May 28, 2019

Make timeline tradeoffs using iterative elimination tournaments. May 25, 2019

⭐ How to invest in technical infrastructure. May 19, 2019

Can governments design great APIs? Let's hope so. May 12, 2019

An Elegant Puzzle is available for pre-order. April 25, 2019

To innovate, first deprecate. April 7, 2019

⭐ Magnitudes of exploration. April 6, 2019

An Elegant Puzzle coming in late May. April 1, 2019

Fire fixation. March 23, 2019

Rules of thumb for org design. March 17, 2019

⭐ How to evolve an engineering organization. March 5, 2019

Paying the predictability tax. February 24, 2019

Valuing already-solved problems. February 23, 2019

⭐ Why limiting work-in-progress works. February 17, 2019

Binder for hosting Jupyter notebooks. February 10, 2019

Writing a reliability strategy: reason about complex things with system models. February 9, 2019

Notes on Soul of a New Machine, Messy Middle, Crazy at Work, Company of One. February 2, 2019

Growing with your company's complexity. January 29, 2019

Meeting people. January 26, 2019

An Elegant Puzzle: Systems of Eng Management. January 22, 2019

Newsletter for Irrational Exuberance. January 20, 2019

⭐ Metrics for the unmeasurable. January 19, 2019

Some delightful developer experiences in 2019. January 7, 2019

Good process is evolved, not designed. January 1, 2019

Defining policy, process and programs. December 30, 2018

Notes on Structure and Interpretation of Computer Programs. December 29, 2018

2018 in review. December 27, 2018

"Paying Technical Debt at Scale - Migrations" December 13, 2018

⭐ Infrastructure planning: users, baselines and timeframes. December 9, 2018

Notes on The Timeless Way of Building November 24, 2018

Quick tutorial on using GraphQL with Python. November 18, 2018

Headcount dilemmas. November 15, 2018

Speaking at QCon SF 2018 about migrations. November 5, 2018

Talent distributions. November 4, 2018

Landing in the JET Program. October 15, 2018

Capturing resources. October 14, 2018

Quick blogging update for October 2018 October 13, 2018

Notes on The Pyramid Principle. October 1, 2018

System dynamics in a jupyter notebook. September 30, 2018

Career narratives. September 26, 2018

Saying no. September 23, 2018

⭐ Work the policy, not the exceptions. September 23, 2018

Modeling a hiring funnel with Systems library. September 18, 2018

Introduction to systems thinking. September 4, 2018

Notes on A Philosophy of Software Design. September 3, 2018

Designing interview loops. September 2, 2018

Communities of learning. September 1, 2018

Time management: the leadership meta-problem. August 27, 2018

Problem exploration, selection and validation. August 20, 2018

Introducing SREs, TPMs and other specialized roles. August 13, 2018

Career levels, designation momentum, etc. August 11, 2018

Designations, levels and calibrations. August 10, 2018

Make your peers your first team. August 8, 2018

Digg v4 @ Internet History Podcast August 6, 2018

Presenting to executives. August 6, 2018

Your hiring funnel. August 1, 2018

Scaling technical consistency. July 30, 2018

Book recommendations. July 24, 2018

Succession planning. July 23, 2018

Identify your controls. July 21, 2018

Opportunity & Membership. July 17, 2018

Service cookbooks. July 15, 2018

⭐ Sizing engineering teams. July 14, 2018

Selecting project leads. July 12, 2018

Writing strategies and visions. July 9, 2018

Braindump on approach to writing a technical book. July 8, 2018

Guiding broad change with metrics. July 6, 2018

Goals and baselines. July 5, 2018

⭐ Digg's v4 launch: an optimism born of necessity. July 2, 2018

My rails for engineering leadership. July 1, 2018

Accelerate's definition of developer productivity. June 27, 2018

The briefest of media trainings. June 24, 2018

A case against top-down global optimization. June 23, 2018

Infrastructure migrations @ Interestings June 22, 2018

⭐ Staying on the path to high performing teams. June 17, 2018

Where to stash your organizational risk? June 13, 2018

Experiment with distributed finite state machines. June 2, 2018

You can't reason about big balls of mud. May 23, 2018

Consider the team you have for senior positions. May 19, 2018

Setting organizational direction. May 9, 2018

Model, document and share. April 26, 2018

⭐ Migrations: the sole scalable fix to tech debt. April 15, 2018

Reflections on the Systems & Papers. April 14, 2018

The Redis Protocol is pretty great. April 10, 2018

⭐ Some of my favorite technical papers. April 7, 2018

Close out, solve or delegate. March 29, 2018

Managing in the growth plates. March 21, 2018

Infrastructure engineering @ Inside Intercom March 20, 2018

Notes from "Good Strategy, Bad Strategy." March 1, 2018

How I write group emails at work. February 17, 2018

Refactoring Ruby programmatically. February 13, 2018

Seth Godin's The Dip. February 11, 2018

⭐ Product management in infrastructure eng. February 6, 2018

Global secondary indexes. January 30, 2018

Experimenting with content and distribution. January 27, 2018

Inclusion in the first shift. January 23, 2018

Vulnerability. January 20, 2018

The physics of Cloud expansion. January 16, 2018

Async processing with sync semantics? January 15, 2018

⭐ Cold sourcing: hire someone you don't know. January 8, 2018

Roles over rocket ships, and why hypergrowth is a weak predictor of personal growth. January 2, 2018

Engineering management stuff I learned in 2017. December 29, 2017

Analyzing cross-service requests with Apache Beam. November 26, 2017

From lambda to kappa and dataflow paradigms. November 22, 2017

Tools for operating a growing organization. November 18, 2017

Sketching out failure injection on Kubernetes. May 20, 2017

Simple Continuous Deployment on GKE with gke\_ci May 18, 2017

Trying out Google Container Engine May 14, 2017

Providing pierceable abstractions. May 7, 2017

Options for orchestrating periodic tasks. April 30, 2017

Increment has launched. April 13, 2017

Notes from fifth blog rewrite April 2, 2017

Running an engineering reorg March 17, 2017

Partnering with your manager March 13, 2017

Technology Inheritance March 7, 2017

Infrastructure between cost center and ego trip March 5, 2017

Ways Engineering Managers Get Stuck March 3, 2017

Braindump on Load Generation December 18, 2016

Finding Managerial Scope October 31, 2016

Usable QA Environments October 24, 2016

Serverless: Gatekeeping and Profit Margins October 16, 2016

⭐ Productivity in the age of hypergrowth. October 10, 2016

You Should Take More Vacation October 1, 2016

Acing Your Architecture Interview September 27, 2016

Fail Open and Layer Policy September 20, 2016

Thoughts on Envoy's Design September 18, 2016

QoS, Cost & Quotas September 11, 2016

Running a Humane Interview Process June 9, 2016

Healing a Burned Out Team May 29, 2016

Wherein I Rewrite My Blog a Fifth Time May 20, 2016

Your Philosophy of Management May 7, 2016

Adding Value as an Engineering Manager September 26, 2015

Developing service oriented architectures. June 1, 2014

Building a Software Deployment Pipeline March 30, 2014

Irrational Exuberance's Fourth Coming March 24, 2014

Company Culture and Managing Freedoms February 9, 2014

War Card Game in Python December 2, 2012

Reflection on RethinkDB December 2, 2012

Kill Your Heroes, Stop Doing it Harder November 25, 2012

Configuration Driven Behavior November 25, 2012

Extraction: Get Metadata from HTML Documents November 23, 2012

Social Hierarchies in Engineering Organizations November 4, 2012

Creating Multi-Worksheet Excel Docs with xlwt November 4, 2012

Building Technical Leverage November 4, 2012

Hosting a Paper Reading Group October 28, 2012

Why Pagination Was Hard at Digg August 25, 2012

Slack and Hope for Middle Management August 25, 2012

Digg v4's Architecture and Development Processes August 19, 2012

Writing, Analytics and Analysis April 10, 2011

Storing Bounded Timeboxes in Redis April 7, 2011

Using Flot.js with the Digg Streaming API April 6, 2011

⭐ Introduction to architecting systems for scale. April 4, 2011

How to Filter Bots From Analytics April 3, 2011

Don't Make Me Defend Your Claims March 30, 2011

IE's New Infrastructure and Writing Workflow March 28, 2011

Irrational Exuberance's Third Rebirth March 27, 2011

Articles and Series March 27, 2011

Coding Projects March 27, 2011

Being Defensive January 22, 2011

Python Default Parameter Value Gotchas September 11, 2010

Python Datastructures Backed by Redis September 5, 2010

DjangoDash and Drinkfindr September 4, 2010

Time to Load Redis Snapshots August 23, 2010

Notes on Redis Memory Usage August 22, 2010

SuperFamily Relationships with Lazyboy May 23, 2010

Tailing in Python May 16, 2010

Callbacks Are An Informal Pipeline March 7, 2010

Porting Django's urlpatterns to Node.js March 6, 2010

Retiring and Releasing Codernote.com February 20, 2010

The Day I Broke Production February 14, 2010

Looking For a New Agenda February 7, 2010

Log Collection Server with Node.js January 30, 2010

Debugging Crashes With Small Scripts January 23, 2010

A Python-Markdown Extension for Embedding Graphviz January 16, 2010

Formatting Multipart Formdata in Erlang January 10, 2010

A Photo Album with Python and PIL January 4, 2010

Refactoring & Testing Our Dynamo Clone January 2, 2010

Quick Notes for Starting 2010 January 1, 2010

Crash on Compiling App With MKMapView December 31, 2009

Nagios Monitoring for Erlang December 30, 2009

Replicating receive-after in an Erlang gen\_server December 13, 2009

Durable Writes & Consistent Reads November 30, 2009

Hands On Review of the Dynamo Paper November 30, 2009

Recurring Events and Message Passing November 25, 2009

Scalable Scraping in Clojure November 24, 2009

A Couple of Clojure Agent Examples November 22, 2009

Writing Files in Clojure November 16, 2009

Reading Files in Clojure November 15, 2009

Setting Up TLA+ Tools on OS X October 31, 2009

Comments on "Why Engineers Should Consider Formal Methods" October 20, 2009

Money or Meaning: Spending Our Wealth of Time October 11, 2009

Cleaning up erlang\_markdown October 10, 2009

A Failed Stack-based Markdown Interpreter September 27, 2009

Proposal for Authenticating Web Callbacks September 20, 2009

Generating RSS feeds via BeepBeep September 20, 2009

How Pitance Versions Documents in CouchDB September 17, 2009

Erlang Brush for SyntaxHighlighter September 15, 2009

Pitance: Template and Snippet Infrastructure September 13, 2009

Load Balancing Across Erlang Process Groups September 12, 2009

Changing Mimetypes for Text Responses in BeepBeep September 3, 2009

Paper Review of "Hints On Computer System Design" August 21, 2009

Paper Review of "A Transaction Model" August 18, 2009

Success and Dancing Shoes July 31, 2009

Several Approaches to Versioning Files in PHP July 28, 2009

Distinguishing Strings from Lists in Erlang July 24, 2009

Freebase Hackday and Image Game July 12, 2009

BeepBeep, CouchDB and a Trivial Blog July 9, 2009

Using Ajax with the BeepBeep Microframework July 6, 2009

Getting Started With BeepBeep July 5, 2009

What Do Django People Search About? June 17, 2009

YUI Dialogs, IE z-index and Tragedy June 16, 2009

Feedback Loops in Software Development June 1, 2009

Recycling Hacker Fear-Mongering May 31, 2009

Skew, The Frontend Engineer's Misery April 28, 2009

OS X Textfield Encoding (maybe) Issue April 1, 2009

Findjango Redesign & Slides for django-nyc March 25, 2009

How To Remotely Admin Servers Via Twitter March 22, 2009

Findjango, A Week of Progress March 16, 2009

Making Django Apps Run On and Off GAE March 10, 2009

Technical Debt and Peanut Butter Jars March 10, 2009

Findjango: A Django Search Vertical March 9, 2009

Solango and Tomcat 6 on Ubuntu Intrepid March 6, 2009

Simplified django-springsteen Deploy on GAE March 5, 2009

Deploying django-springsteen on Google App Engine March 5, 2009

Reranking Results in django-springsteen February 26, 2009

django-springsteen and Distributed Search February 25, 2009

Leaving DreamHost February 23, 2009

Depicting Human Relationships February 21, 2009

Smaller Header, JobSyndicate, Printable Articles February 19, 2009

Measuring Single and Multi Server Performance February 18, 2009

Rewriting Parameterized URLs with Nginx February 16, 2009

Overview of Single vs. Multi Server Architecture February 16, 2009

When psycopg2 Can't Import tz February 13, 2009

The Django and Ubuntu Intrepid Almanac February 13, 2009

Visually Representing Word Structures February 10, 2009

Using Threadpools in Python February 10, 2009

Setting up CouchDB-Lucene on OS X February 6, 2009

We're All Sinners and Cosiners February 6, 2009

Circle and Line Diaspora February 5, 2009

Spiral and Square February 5, 2009

Visualizing Keyterms with BOSS and Processing February 4, 2009

Cull Lingering Erlang Heart Processes February 4, 2009

Hard and Soft, Fluffy and Brittle February 3, 2009

Simple Unittesting in PHP February 1, 2009

Stripping Illegal Characters from XML in Python January 25, 2009

Huge CSV and XML Files in Python January 22, 2009

A Filter to Display Neighbors in a List January 20, 2009

Genetic Programming: A Novel Failure January 19, 2009

⭐ Genetic algorithms: cool name & damn simple. January 2, 2009

Moving Into 2009 January 2, 2009

Django-Portfolio: Organize and Display Projects December 29, 2008

The Subtle Joys of Generic Methods December 11, 2008

A Command Line Tool for Loading CouchDB Documents December 9, 2008

Full-Text Search in CouchDB Using... CouchDB December 8, 2008

Blogging as People December 6, 2008

Intro to HTTP::Server::Simple::CGI December 5, 2008

Finally Waving The White Flag to Objective-C 2.0 December 4, 2008

Fixing What Ails LifeFlow December 3, 2008

Prevent Cron Cancer With a File-based Mutex December 3, 2008

Parallel HTTP Requests in Python December 2, 2008

Reading XML Files on the iPhone November 30, 2008

A Different Approach to local\_settings.py November 28, 2008

XML::Twig for Large XML Files in Perl November 20, 2008

Slides from django-nyc on 11/18/2008 November 19, 2008

Python-Brightkite for... you get the idea November 16, 2008

Introducing a Tutorial and touchDefense November 11, 2008

The Blogging Hypochondriac November 8, 2008

The Fate of Pop and Hip-Hop in 2008 November 7, 2008

XML::Simple for Non-Perlers November 7, 2008

You Only Learn the First Time November 6, 2008

Bad Ideas and Regular Expressions in Templates November 5, 2008

Deploying Django with Fabric November 4, 2008

Development to Deployment in Django November 3, 2008

Creating Slideshows with Cocos2d iPhone October 29, 2008

Customize site style by user with django-userskins October 27, 2008

User Registration Apps for Django October 25, 2008

Releasing Kappa Source (PyObjC Twitter Client) October 23, 2008

Advice to Programmers in College October 22, 2008

Touch Detection in Cocos2d iPhone October 20, 2008

Being a Local Maximum October 19, 2008

HSS and YUI Compressor in AYM CMS October 19, 2008

R.I.P. Your Resume Site to Awesome October 18, 2008

Taming AuditTrail Proliferation October 16, 2008

Releasing Source for Mahou October 16, 2008

Choosing Between AuditTrail and Django-Rcsfield October 15, 2008

Setting Up Django-Rcsfield October 15, 2008

Restricting User Signups in Django October 12, 2008

Failing a Contract October 11, 2008

The Magical Source of YUI Get's Power October 3, 2008

Notes on Cocos2d iPhone Development October 3, 2008

Suffer Less By Using Django Dev Server as a Proxy September 30, 2008

Writing for Consumption September 29, 2008

Starting Again, Keeping It Simple September 27, 2008

As-You-Type Slug Uniqueness Validation September 26, 2008

Layers of Authentication September 25, 2008

Custom Django Views for Happier Ajax September 24, 2008

Using Automator to Scale Images Horizontally September 22, 2008

Redesign of Lethain.com September 21, 2008

Intro to Unintrusive JavaScript with Django September 21, 2008

A One-Stop AYM CMS Solution September 17, 2008

Making Static Dynamic Again; AYM CMS September 15, 2008

Intricate Static Websites With Django Templates September 15, 2008

Sparklines.js Port to Python September 13, 2008

Yes, You Do Care About Cappuccino September 12, 2008

Extending Mahou; Gotchas and Snippets September 12, 2008

Extracting Data From Google Analytics Reports September 11, 2008

Extending Classes in Cappuccino September 7, 2008

Writing Mahou; a Cappuccino Image Search September 6, 2008

Startups and Assembly Lines September 5, 2008

Migrating the 'This Week in Django' Concept September 5, 2008

Poor Wireless Connectivity for MacBook September 4, 2008

Naming and Casing Convention in PyObjC September 4, 2008

Introducing Kappa, a Twitter Client September 3, 2008

I Live in New Jersey September 1, 2008

Dynamic Ad Targeting With django-monetize August 29, 2008

Transcending Search-as-You-Type Stickiness August 29, 2008

Epic PyObjC, Part 5: Resources and Farewell August 27, 2008

Epic PyObjc, Part 4: Drag & Drop, Multiple Nibs August 26, 2008

Epic PyObjC, Part 3: Browsing, Caching, Indicating August 25, 2008

Epic PyObjC, Part 2: Adding a Library & Bindings August 24, 2008

⭐ An Epic Introduction to PyObjC and Cocoa August 22, 2008

Writing to Application Support in PyObjC August 22, 2008

Writing Titles Under Ninety-Five Characters August 20, 2008

Deleting From NSOutlineView With the Delete Key August 20, 2008

How to Use Selectors in PyObjC August 19, 2008

An Introduction to Using CouchDB with Django August 18, 2008

Global Popularity of Programming Languages August 14, 2008

An Introduction to Compassionate Screen Scraping August 10, 2008

A Syntax Coloring Template Filter for Django August 9, 2008

A Year Later, Home From Japan August 9, 2008

Python Content Scraper for OneManga.com August 8, 2008

Reading "The Nudist on the Late Shift" in 2008 August 7, 2008

Cocoa Drag and Drop text into the Dock Icon August 6, 2008

How to Write a Wrapper Library August 4, 2008

BossArray for list-like Yahoo search results July 28, 2008

Replacing Django's ORM with SQLAlchemy July 23, 2008

Replacing Django's Template Language With Jinja2 July 22, 2008

An Introduction to Django's Loose Coupling July 22, 2008

Reflections on a Year of Blogging and Japan July 21, 2008

小学校と教える授業の最後の日 July 18, 2008

Last Day of Elementary School and Classes July 18, 2008

Stripping Reddit From HackerNews With BOSS Mashup July 12, 2008

Polishing Up Our Django & BOSS Search Service July 12, 2008

Search Recipes for Yahoo's BOSS in Python July 11, 2008

Yahoo's Build your Own Search Service in Django July 10, 2008

Release of LifeFlow 0.91 July 7, 2008

Advice for ALTs Considering a Second Year July 7, 2008

A Thursday: Elementary School July 2, 2008

An Introduction to a Week in Japan July 2, 2008

ReST, Textile and HTML in Markdown July 1, 2008

Updates to Sparklines.js June 30, 2008

Sparklines in Javascript With Sparklines.js June 26, 2008

JSON, Object Oriented Views, and Starting a Real App June 22, 2008

Ambush Code Review Learns Code Diffs June 18, 2008

Overview of Using Django on the Google App Engine June 17, 2008

A Sunday Project: Ambush Code Review June 16, 2008

Up to Speed June 15, 2008

A Django Anti-Pattern, Rolling Your Own REST June 13, 2008

Minimalism June 11, 2008

Working on LifeFlow's Public Face June 11, 2008

Release of LifeFlow Version 0.90 June 10, 2008

Deployment Scripts With BeautifulSoup June 9, 2008

Processed Tower Defense 1.0 June 9, 2008

Things I'll Miss in Japan June 8, 2008

Strangest JavaScript Bug I've Ever Seen June 6, 2008

Looking for Recycling's Lost Sex Appeal June 3, 2008

Updates to Processed Tower Defense May 28, 2008

May in Review May 27, 2008

Processing.jsの使い方 May 26, 2008

Spoken Languages, Blub, and Convenience May 25, 2008

Music From the iTunes Store, 1 May 21, 2008

Improvements to LifeFlow Editor May 21, 2008

Updating Processing.js Graphics via Ajax May 20, 2008

Design of Processed Tower Defense May 18, 2008

Three Processing.js Examples May 14, 2008

Using Javascript to Control Processing May 11, 2008

Getting Started with Processing.js May 10, 2008

Our Yellow Woods, and a Story May 7, 2008

Writing Join in Erlang May 4, 2008

Photographing Japan May 4, 2008

A Picture of a Couple May 3, 2008

Spring Haiku and Tanka May 3, 2008

Thoughts on Dating Erlang April 30, 2008

Haiku for an April April 20, 2008

Designing Elesma April 13, 2008

A Week In The Job April 12, 2008

Failed Night Time Pictures of Sakura Blossoms April 5, 2008

A Brief Winter Hike April 5, 2008

Opening Files With Associated App in Cocoa April 5, 2008

Tip Your Hat To Accessors And Mutators March 12, 2008

Handling Files With CoreData March 12, 2008

Catching Up On Some Thoughts March 10, 2008

Tools, Languages, and Squeak March 1, 2008

Quick Reflections on JET in Haiku February 27, 2008

Assigning One To Many Relationships in CoreData February 24, 2008

Spring Doesn't Come in February, But Snow Does February 24, 2008

On Writing February 19, 2008

Filtering Arrays in Objective C February 15, 2008

Teaching Elementary Classes as an ALT February 14, 2008

My First Sickday in Japan February 13, 2008

Midnight Philosophy in The Garden of Good and Evil February 12, 2008

Seeking Some Music I Can't Find February 11, 2008

Some Biased Analysis of Music Videos February 4, 2008

Using Our Own Software February 4, 2008

Using Optional Parameters in Django Urls February 4, 2008

Technical Aspects of the Life Flow Editor February 3, 2008

Introducting the LifeFlow Editor February 3, 2008

Why Was The Syllabus Born? January 28, 2008

On Hegemony and an Anti-Capitalist Bias in European Textbooks January 26, 2008

Hot Water Is Broken January 26, 2008

5\. A Chartered Bus to Downtown Tokyo January 25, 2008

Standard Workflow for Publishing With LifeFlow January 24, 2008

Replacing the Karma Social Model with Whuffie January 22, 2008

Catching Lessons From Spam January 22, 2008

Translating Entries into Other Languages with LifeFlow January 22, 2008

A Historical Perspective on the JET Program in 2008 January 22, 2008

On The Causes and Cures of Malware January 21, 2008

Failures of Proactive Communication & Other Generic Complaints January 20, 2008

かかった年と新しい年の取り返し January 19, 2008

生きて変わる January 19, 2008

Opinionated Programming Languages, The Huddled Masses, and Elitism January 19, 2008

Lesson Plan: My Winter Vacation January 16, 2008

New Style for Including Resources in Entries on LifeFlow January 15, 2008

Adding Arbitrary Mods to LifeFlow January 15, 2008

Changes from Living January 13, 2008

Introduction to Kamioka-cho, Hida-shi, Gifu-ken, Japan January 10, 2008

Odors from Shoes Curious in OS X 10.4 January 10, 2008

Driving on the Left Side January 9, 2008

Don't Repeat Yourself for Bloggers: Dynamic Blog Context in LifeFlow January 9, 2008

Cleanly Extending Python Markdown with Syntax Highlighting January 9, 2008

Update to Lethain.com January 7, 2008

Customizing LifeFlow Quickly with Skins January 7, 2008

Installing a Development Deployment of LifeFlow, a Django Blog Solution January 7, 2008

Reflections on the old year, and the new one January 6, 2008

BluePrint CSS makes LifeFlow look better, and easier to customize January 6, 2008

Music Recommendations & Snow Pictures January 5, 2008

Implementing Threaded Comments in LifeFlow January 4, 2008

Visiting Kiyomizudera January 3, 2008

Status Update for LifeFlow January 3, 2008

Accolades for Pygments 0.9 January 3, 2008

Actors in Common Lisp January 3, 2008

Packaging of Renu Contact Solution January 1, 2008

Miyajima and Hiroshima December 29, 2007

Designing My Future Home December 29, 2007

Another Breakfast With You December 29, 2007

Another Slight Mistake... December 27, 2007

Merry Christmas 2007 December 24, 2007

Moving Writings to Separate Flow December 24, 2007

Two-Faced Django Part 7: PyFacebook and FBJS Ajax December 17, 2007

Upgrading from 256 to 512 megs of ram December 16, 2007

Two-Faced Django: Live install December 16, 2007

Two-Faced-Django Part 6: PyFacebook December 12, 2007

Two-Faced Django Part 5: JQuery Ajax December 11, 2007

4\. Airplanes December 9, 2007

Two-Faced Django Part 4: The Webapp December 9, 2007

Two-Faced Django Part 3: Newforms December 4, 2007

Two-Faced Django Part 2: Models and Django Testing December 4, 2007

Two-Faced Django Part 1: Building a project that exists simultaniously on Facebook and the web December 4, 2007

3\. Shuttle Busses December 2, 2007

On Education, Self-Responsibility and Manure December 2, 2007

2\. Traffic Jams December 1, 2007

1\. Beginnings December 1, 2007

0\. Introduction December 1, 2007

Using JQuery with Django for Autocomplete Fields November 30, 2007

Using PyFacebook without the Facebook middleware November 30, 2007

Human Error November 24, 2007

"You Are Beautiful At All Times" by Yppah November 5, 2007

Context is a Parameter in Calculating Truth November 5, 2007

Those Annoying Habits November 5, 2007

Defining Your Web Aesthetic October 24, 2007

Introducing my Japanese Kitchen October 21, 2007

Hiking Tengaisan October 21, 2007

Reliable Mealtime Friends October 20, 2007

Grocery Shopping in Japan October 19, 2007

Getting Cold in Kamioka October 18, 2007

Teaching Adult English Classes October 18, 2007

Getting started with Shoes on OS X October 15, 2007

Expectations and Reality for the lowly ALT October 14, 2007

FAQ about JET October 13, 2007

A Few Quick Updates to Site October 12, 2007

Back in Action October 10, 2007

Eating Cornflakes August 20, 2007

Leaving Tokyo, Arriving in Kamioka August 20, 2007

From America into an American Bubble: The Flight to Japan August 9, 2007

JET Pre-Departure Orientation July 29, 2007

Picture from Hotel Room July 29, 2007

Heading toward Atlanta July 26, 2007

Applying to the JET Programme July 19, 2007

Failure of Implicit Conventions: Determining Function Destructiveness July 18, 2007

"Building Scalable Web Sites" by Cal Henderson July 17, 2007

Dreamier Dream Server with Nginx July 17, 2007

Apache/Lighttpd Confusion July 17, 2007

Adding Social Bookmarking To a Django App July 14, 2007

Syntax Highlighting with MarkDown, and a pinch of Automagick for Django July 14, 2007

Music Video? Movie? The 'Once' Dilemma July 14, 2007

Extracting Models From Django Datadump July 13, 2007

Creating my Dream Server for Django July 13, 2007

New Look for LifeFlow, Deployment on Dreamhost July 12, 2007

"Puddle City Racing Lights" by Windmill July 12, 2007

YouTube Scalability July 8, 2007

Stability Issues July 5, 2007

How to Migrate Data Across Model Changes July 1, 2007

Writing Custom Contexts for Django July 1, 2007

Examining Web Analytics to Implement (repost) June 21, 2007

A Django Middleware for Google Analytics (repost) June 14, 2007

Anti-Objects and Reflexive Decisions (repost) June 7, 2007

A Comp. Sci Degree is What You Make Of It (repost) June 5, 2007

Is the JVM the "next assembly"? I hope not. (repost) June 4, 2007

Good to Great, Paul Graham and Ayn Rand (repost) June 1, 2007

Reflections on Django (repost) June 1, 2007

Finding Our Programming Flow (repost) April 7, 2007

© Will Larson 2025 Tags Newsletter RSS About