All blogs / Engineering management / careers
Irrational Exuberance
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.
Engineering management / careersSoftware / engineering practiceAI / ML
- Posts
- 887 from 7 Apr 2007 to 30 Oct 2026
- Posting
- weekly (36 in the last year)
- Kind
- personal blog
- Feed
- https://lethain.com/feeds.xml
2026 24
- Self-reinforcing quality / adopting verification pattern
- Speeding up code review with `small-change`
- my RSS feed
- Trying the Software Factory pattern.
- Roadmap decisions rather than dates.
- Middle management roles are also a trap.
- Generated and suppressed demand.
- Make no assumptions.
- Revised rules of engineering leadership.
- Early and late-stage hypergrowth.
- Agents as scaffolding for recurring tasks.
- The agentic passive voice.
- Judgment and creativity are all you need.
- Refactoring internal documentation in Notion
- Should you include engineers in your leadership meetings?
- Writing Visualizations with Remotion
- Curiosity is the first-step in problem solving.
- Stripe's Lighthouse Hiring pattern.
- Pressure Without a Plan.
- Learning from Every's Compound Engineering
- Sharing Claude transcripts.
- Moved newsletter from Mailchimp to Buttondown.
- ⭐ Building internal agents
- Building an internal agent: Iterative prompt and skill refinement
2025 52
- Building an internal agent: Subagent support
- Building an internal agent: Code-driven vs LLM-driven workflows
- Building an internal agent: Logging and debugability
- Building an internal agent: Evals to validate workflows
- Building an internal agent: Triggers
- Building an internal agent: Context window compaction
- Building an internal agent: Progressive disclosure and handling large files
- Building an internal agent: Adding support for Agent Skills
- 2025 in review.
- Automatically merging dependabot PRs
- Facilitating AI adoption at Imprint
- Coding at work (after a decade away).
- ⭐ "Good engineering management" is a fad
- Crafting Engineering Strategy!
- Commenting on Notion docs via OpenAI and Zapier.
- An agent to use Notion docs as prompts to comment on Notion docs.
- ⭐ Moving from an orchestration-heavy to leadership-heavy management role.
- Advancing the industry, part two.
- What can agents actually do?
- What is the competitive advantage of authors in the age of LLMs?
- My desk setup in 2025.
- Stuff I learned at Carta.
- systems-mcp: generate systems models via LLM
- How to provide feedback on documents.
- Public company comparables.
- How to filter out old email from inbox
- How should Stripe deprecate APIs? (~2016)
- Systems model of API deprecation
- library-mcp: working with Markdown knowledge bases
- Refreshed StaffEng.com and a few other sites
- Why did Stripe build Sorbet? (~2017)
- How to get better at strategy?
- Wardley mapping the service orchestration ecosystem (2014).
- Script for consistent linking within book.
- How to resource Engineering-driven projects at Calm? (2020)
- Is this strategy any good?
- Steps to build an engineering strategy.
- Operational mechanisms for strategy.
- Career advice in 2025.
- Setting policy for strategy.
- Who gets to do strategy?
- How to integrate Stripe's acquisition of Index? (2018)
- Diagnosis in engineering strategy.
- Exploring for strategy.
- How should we control access to user data?
- Our own agents with their own tools.
- Is engineering strategy useful?
- "We're a product engineering company!" — Engineering strategy at Calm.
- Bridging theory and practice in engineering strategy.
- Uber's service migration strategy circa 2014.
- Service onboarding model for Uber (2014).
- Refining strategy with Wardley Mapping.
2024 41
- How to effectively refine engineering strategy.
- Wardley mapping the LLM ecosystem.
- Wardley mapping of Gitlab Strategy.
- 2024 in review.
- Measuring developer experience, benchmarks, and providing a theory of improvement.
- Rough notes on learning Wardley Mapping.
- Video of practice run of QCon SF 2024 talk on Principal Engineers.
- How to get more headcount.
- Navigating Private Equity ownership.
- Using systems modeling to refine strategy.
- ⭐ Eng org seniority-mix model.
- Modeling driving onboarding.
- Modeling impact of LLMs on Developer Experience.
- Strategy testing: avoid the waterfall strategy trap with iterative refinement.
- Should we decompose our monolith?
- Executive translation.
- Video of Developing Eng Leadership Styles.
- Numbers go up.
- When to write strategy, and how much?
- Developing domain expertise: get your hands dirty.
- Physics and perception.
- ⭐ How to create software quality.
- Video of Using LLMs in your product.
- No Wrong Doors.
- Making engineering strategies more readable
- How should you adopt LLMs?
- Load-bearing / Career-minded / Act Two rationales
- Constraints on giving feedback.
- Notes on how to use LLMs in your product.
- Ex-technology companies.
- Leadership requires taking some risk.
- Friction isn't velocity.
- More (self-)publishing thoughts.
- Digital release of Engineering Executive's Primer.
- Thesis on value accumulation in AI.
- High-Context Triad.
- ⭐ Useful tradeoffs are multi-dimensional.
- Navigating ambiguity.
- ⭐ Layers of context.
- Those five spare hours each week.
- Predictability.
2023 60
- 2023 in review.
- Notes on How Big Things Get Done
- ⭐ Writers who operate.
- Advancing the industry.
- Notes on Enterprise Architecture as Strategy
- Create technical leverage: workflow improvements & product capabilities
- Navigators
- Notes on The Crux
- Engineering strategy notes.
- Notes on Technology Strategy Patterns
- Notes on The Software Engineer's Guidebook
- Notes on Tidy First?
- Notes on The Value Flywheel Effect
- Team Charters are a trap.
- A bit late, but I did leave Calm.
- Benchmarking.
- Getting lucky isn't a plan.
- Thoughts on writing and publishing Primer.
- Developing leadership styles
- Video of Solving the Eng Strategy crisis.
- Solving the Engineering Strategy crisis.
- Drafted Eng Executive's Primer!
- Performance & Compensation (for Eng Execs).
- The Engineering executive’s role in hiring.
- Manage your priorities and energy.
- Gelling your Engineering leadership team.
- Building personal and organizational prestige
- Playing with Streamlit and LLMs.
- Extract the kernel.
- Slides for Measuring an engineering organization.
- Good hypergrowth/curator manager.
- The Engineering Executive's Primer.
- Balancing your CEO, peers, and Engineering.
- Grab bag of random thoughts.
- Interviewing engineering executives.
- Poking around OpenAI.
- How to plan as an engineering executive.
- Who runs Engineering processes?
- Onboarding peer executives.
- ⭐ Deciding to leave your (executive) job.
- Using cultural survey data.
- Running your engineering onboarding program.
- Engineering’s role in Mergers & Acquisitions.
- Building your executive network.
- ReadME contribution on reliability programs.
- ⭐ Writing an engineering strategy.
- Better to micromanage than be disengaged.
- Culture vs systems.
- ⭐ Setting engineering org values.
- Safe defaults.
- Internal comms for executives.
- What does it mean to be a cost center?
- Meetings for an effective eng organization.
- Mailbag: What should you do if you report to an underperforming executive?
- Trying Plausible.
- Getting a job as an engineering executive.
- Make an effective executive LinkedIn profile.
- How to capitalize engineering costs.
- Trying Tailscale.
- ⭐ Measuring an engineering organization.
2022 41
- A brief rant on converging compliance regimes.
- Lessons not worth learning.
- 2022 in review.
- 2019 - 2022 reading recap.
- When shouldn't you roll out business reviews?
- Company, team, self.
- Twitter.
- The flying wedge.
- Work hard / work smart.
- Time and energy.
- Mailbag: What isn't measurable? To hire as exec or not?
- Reminiscing: the retreat to comforting work.
- Fewer, happier incident heroes.
- One-on-ones with executives.
- 'Drawing your three maps' exercise
- Bar raisers, hiring committees, and other complex ways to improve hiring quality.
- How to estimate disk space.
- ⭐ Reading a Profit & Loss statement.
- Downturn career decisions.
- STAR method for interview questions.
- Career checkup template.
- Plagarism, idea theft, and writing online.
- Mailbag: Did I become a manager too soon?
- Moving the finish line.
- Your migration probably isn’t failing due to insufficient staffing.
- ⭐ Founding Uber SRE.
- Platforms change but cool URIs don't.
- Interim assignments.
- Stuff I haven't written yet, but hopefully will someday (2022).
- Stripe's model of product-led, developer-centric growth.
- Mailbag: Resources for Engineering Directors.
- Generating a daily snapshot of Twitter Search results.
- Should you prioritize infrastructure costs?
- What is innovation?
- ⭐ Hard to work with.
- Starting to write Infrastructure Engineering.
- ⭐ Trunk and Branches Model for Scaling Infrastructure Organizations
- Getting started with git-scraping
- The impact of less scalable work.
- Mix and match mental models.
- Index of writing on hiring.
2021 33
- Things I learned hiring a data science leader.
- Dipping toes in angel investing.
- Why not start an indie tech book publisher?
- ⭐ Inspection and the limits of trust.
- Thesis on engineering onboarding products.
- 2021 in review.
- The terminal level rulebook.
- Should you write a technical or management book?
- Notes on The Kool-Aid Factory's Planning Issue.
- How to find engineering leadership roles.
- ⭐ How to safely think in systems.
- Learning about personal finances.
- Notes on hiring a Foundation Eng leader.
- Closing calls: tell the best version of the truth.
- Create capacity rather than capture it.
- Getting to yes: solving engineering manager hiring loops that reject every candidate.
- Pockets of rest enable careers.
- Can senior leaders make friends at work?
- An interlude.
- Mailbag: Should we just call them architects?
- RSS feed changing! Migrating blog in next few days.
- Mailbag: How to deal with unhappy users on your Internal platform?
- Measures of engineering impact.
- Digital gardening at Exuberant Sketches.
- Self-publishing Staff Engineer.
- Mailbag: Building alignment around a new strategy.
- Mailbag: How to encourage good documents rather than perfect documents?
- The curious case of the missing regretted attrition.
- Staff Engineer.
- Why not create a StaffEng Slack or Discord?
- ⭐ How to be a tech influencer.
- How to present to executives.
- Early Edition of "Staff Engineer" coming Jan 31st.
2020 82
- Pacing and isolating change.
- Tech Lead Management roles are a trap.
- Interesting work happens at the edges.
- 2020 in review.
- Weak and strong team concepts.
- What do Staff engineers actually do?
- Managing Staff-plus engineers.
- ⭐ Write five, then synthesize: good engineering strategy is boring.
- Mailbag: Advice for someone five years into their tech career?
- Notes on compliance tools.
- Interviewing for Staff-plus roles.
- Finding your Staff sponsor.
- My skepticism towards current developer meta-productivity tools.
- Renegotiating your first vendor contract.
- Speaking and podcasts in 2020.
- Engineering strategy every org should write.
- Surplus rules of engineering strategy.
- Care and feeding for your engineering strategy.
- Things that aren't engineering strategy.
- A survey of engineering strategies.
- Engineering strategy.
- Developer productivity surveys.
- ⭐ Managing technical quality in a codebase.
- Finding the right company to reach Staff Engineer.
- Deciding to switch companies.
- TechWriters community.
- Being visible.
- Staff projects.
- ⭐ Work on what matters.
- Using QR Codes in printed books.
- Build a network of peers.
- Performative leadership.
- The Grand Migration.
- Promotion pathologies.
- Staff promotion packets.
- The Saint-Exupéry of metrics.
- Some common hiring manager mistakes.
- Customizing screen and screenrc.
- Create space for others.
- Staff-plus interview processes.
- External office hours.
- Does the Staff title even matter?
- Where do Staff-plus engineers fit into the org?
- StaffEng Updates, June 2020
- Stuff I've learned about Diversity, Equity and Inclusion over the past few years.
- How to practice backend engineering.
- Trapped in a Values Oasis.
- My career story.
- Mentoring from privilege.
- Ways I'm available to help.
- Black Lives Matter.
- To lead, you have to follow.
- The rush to "show value."
- April updates for StaffEng.
- Picking problems for programming interviews.
- Minding our stories.
- Testing Python projects for Google Cloud Run.
- Staff engineer archetypes.
- Poking around Contentful.
- Build versus buy.
- Staying aligned with authority.
- Getting in the room.
- Learn to never be wrong.
- How do folks reach Staff Engineer?
- Hotspotting developer productivity.
- vtt-compactor: slightly less verbose VTT files.
- Resources for Staff-plus engineers.
- From one to two: how to start a successful distributed engineering office.
- Interviewing senior engineering leaders.
- Mailbag: Evolving your engineer career beyond the career level.
- Crowdsourcing CTO/VPE learning circles.
- Do you work at a tech company?
- Share stories, not advice.
- How to partner with an executive assistant.
- Example Call For Proposals submissions.
- Joining Calm.
- Some rough notes on running learning circles.
- How to build your company's engineering brand.
- More great memos.
- ⭐ Your first 90 days as CTO or VP Engineering.
- How to navigate and/or survive your acquihire.
- ⭐ How the Digg team was acquihired.
2019 67
- 2019 in review.
- "Good Process is Evolved, Not Designed" in 97 Things Every Engineering Manager Should Know
- Incident response, programs and you(r startup).
- Mailbag: When your team wants your job, personal brand, and service registries.
- Maintaining platform-product fit.
- "How to successfully design organizational processes"
- "Do engineering managers need to be technical?" in Increment.
- Expanding on S[a-z]{3,} Reliability Engineer roles.
- Notes on Building Evolutionary Architectures.
- You only learn when you reflect.
- Distributing your Slack application.
- Using Cloud Firestore to power a Slack app.
- Make Slack app respond to reacji.
- Adding App Home to Slack app in Python.
- Creating a Slack App in Python on GCP.
- HMAC SHA256 signatures in Python and Flask.
- Forecasting synthetic metrics.
- Sending weekly 5-15 updates.
- "Investing in technical infrastructure"
- Healthchecks at scale.
- An Elegant Puzzle by the numbers, five months later.
- Founding Monocle Studios.
- Nobody cares about quality.
- ⭐ A forty-year career.
- Notes on data modeling from Handbook of Relational Database Design.
- Organizing team offsites.
- Rewriting the Yahoo! BOSS Datahub.
- Describing fault domains.
- Distributed systems vocabulary.
- ⭐ Reclaim unreasonable software.
- What's the inverse of literate programming.
- Head in the clouds.
- Don't follow the sun.
- Notes on Escaping the Build Trap
- Fostering program engagement.
- Programs: tips for owning the unownable.
- Some career advice.
- Running systems library as Cloud Function.
- Path to engineering manager of managers.
- An Elegant Puzzle @ Software Engineering Daily
- What I learned writing a book.
- Privilege's upward-facing window.
- Elegant Puzzle press, reviews and podcasts.
- An Elegant Puzzle is released today!
- Make timeline tradeoffs using iterative elimination tournaments.
- ⭐ How to invest in technical infrastructure.
- Can governments design great APIs? Let's hope so.
- An Elegant Puzzle is available for pre-order.
- To innovate, first deprecate.
- ⭐ Magnitudes of exploration.
- An Elegant Puzzle coming in late May.
- Fire fixation.
- Rules of thumb for org design.
- ⭐ How to evolve an engineering organization.
- Paying the predictability tax.
- Valuing already-solved problems.
- ⭐ Why limiting work-in-progress works.
- Binder for hosting Jupyter notebooks.
- Writing a reliability strategy: reason about complex things with system models.
- Notes on Soul of a New Machine, Messy Middle, Crazy at Work, Company of One.
- Growing with your company's complexity.
- Meeting people.
- An Elegant Puzzle: Systems of Eng Management.
- Newsletter for Irrational Exuberance.
- ⭐ Metrics for the unmeasurable.
- Some delightful developer experiences in 2019.
- Good process is evolved, not designed.
2018 77
- Defining policy, process and programs.
- Notes on Structure and Interpretation of Computer Programs.
- 2018 in review.
- "Paying Technical Debt at Scale - Migrations"
- ⭐ Infrastructure planning: users, baselines and timeframes.
- Notes on The Timeless Way of Building
- Quick tutorial on using GraphQL with Python.
- Headcount dilemmas.
- Speaking at QCon SF 2018 about migrations.
- Talent distributions.
- Landing in the JET Program.
- Capturing resources.
- Quick blogging update for October 2018
- Notes on The Pyramid Principle.
- System dynamics in a jupyter notebook.
- Career narratives.
- Saying no.
- ⭐ Work the policy, not the exceptions.
- Modeling a hiring funnel with Systems library.
- Introduction to systems thinking.
- Notes on A Philosophy of Software Design.
- Designing interview loops.
- Communities of learning.
- Time management: the leadership meta-problem.
- Problem exploration, selection and validation.
- Introducing SREs, TPMs and other specialized roles.
- Career levels, designation momentum, etc.
- Designations, levels and calibrations.
- Make your peers your first team.
- Digg v4 @ Internet History Podcast
- Presenting to executives.
- Your hiring funnel.
- Scaling technical consistency.
- Book recommendations.
- Succession planning.
- Identify your controls.
- Opportunity & Membership.
- Service cookbooks.
- ⭐ Sizing engineering teams.
- Selecting project leads.
- Writing strategies and visions.
- Braindump on approach to writing a technical book.
- Guiding broad change with metrics.
- Goals and baselines.
- ⭐ Digg's v4 launch: an optimism born of necessity.
- My rails for engineering leadership.
- Accelerate's definition of developer productivity.
- The briefest of media trainings.
- A case against top-down global optimization.
- Infrastructure migrations @ Interestings
- ⭐ Staying on the path to high performing teams.
- Where to stash your organizational risk?
- Experiment with distributed finite state machines.
- You can't reason about big balls of mud.
- Consider the team you have for senior positions.
- Setting organizational direction.
- Model, document and share.
- ⭐ Migrations: the sole scalable fix to tech debt.
- Reflections on the Systems & Papers.
- The Redis Protocol is pretty great.
- ⭐ Some of my favorite technical papers.
- Close out, solve or delegate.
- Managing in the growth plates.
- Infrastructure engineering @ Inside Intercom
- Notes from "Good Strategy, Bad Strategy."
- How I write group emails at work.
- Refactoring Ruby programmatically.
- Seth Godin's The Dip.
- ⭐ Product management in infrastructure eng.
- Global secondary indexes.
- Experimenting with content and distribution.
- Inclusion in the first shift.
- Vulnerability.
- The physics of Cloud expansion.
- Async processing with sync semantics?
- ⭐ Cold sourcing: hire someone you don't know.
- Roles over rocket ships, and why hypergrowth is a weak predictor of personal growth.
2017 16
- Engineering management stuff I learned in 2017.
- Analyzing cross-service requests with Apache Beam.
- From lambda to kappa and dataflow paradigms.
- Tools for operating a growing organization.
- Sketching out failure injection on Kubernetes.
- Simple Continuous Deployment on GKE with gke_ci
- Trying out Google Container Engine
- Providing pierceable abstractions.
- Options for orchestrating periodic tasks.
- Increment has launched.
- Notes from fifth blog rewrite
- Running an engineering reorg
- Partnering with your manager
- Technology Inheritance
- Infrastructure between cost center and ego trip
- Ways Engineering Managers Get Stuck
2016 14
- Braindump on Load Generation
- Finding Managerial Scope
- Usable QA Environments
- Serverless: Gatekeeping and Profit Margins
- ⭐ Productivity in the age of hypergrowth.
- You Should Take More Vacation
- Acing Your Architecture Interview
- Fail Open and Layer Policy
- Thoughts on Envoy's Design
- QoS, Cost & Quotas
- Running a Humane Interview Process
- Healing a Burned Out Team
- Wherein I Rewrite My Blog a Fifth Time
- Your Philosophy of Management
2015 1
2014 4
2012 12
- War Card Game in Python
- Reflection on RethinkDB
- Kill Your Heroes, Stop Doing it Harder
- Configuration Driven Behavior
- Extraction: Get Metadata from HTML Documents
- Social Hierarchies in Engineering Organizations
- Creating Multi-Worksheet Excel Docs with xlwt
- Building Technical Leverage
- Hosting a Paper Reading Group
- Why Pagination Was Hard at Digg
- Slack and Hope for Middle Management
- Digg v4's Architecture and Development Processes
2011 11
- Writing, Analytics and Analysis
- Storing Bounded Timeboxes in Redis
- Using Flot.js with the Digg Streaming API
- ⭐ Introduction to architecting systems for scale.
- How to Filter Bots From Analytics
- Don't Make Me Defend Your Claims
- IE's New Infrastructure and Writing Workflow
- Irrational Exuberance's Third Rebirth
- Coding Projects
- Articles and Series
- Being Defensive
2010 19
- Python Default Parameter Value Gotchas
- Python Datastructures Backed by Redis
- DjangoDash and Drinkfindr
- Time to Load Redis Snapshots
- Notes on Redis Memory Usage
- SuperFamily Relationships with Lazyboy
- Tailing in Python
- Callbacks Are An Informal Pipeline
- Porting Django's urlpatterns to Node.js
- Retiring and Releasing Codernote.com
- The Day I Broke Production
- Looking For a New Agenda
- Log Collection Server with Node.js
- Debugging Crashes With Small Scripts
- A Python-Markdown Extension for Embedding Graphviz
- Formatting Multipart Formdata in Erlang
- A Photo Album with Python and PIL
- Refactoring & Testing Our Dynamo Clone
- Quick Notes for Starting 2010
2009 72
- Crash on Compiling App With MKMapView
- Nagios Monitoring for Erlang
- Replicating receive-after in an Erlang gen_server
- Durable Writes & Consistent Reads
- Hands On Review of the Dynamo Paper
- Recurring Events and Message Passing
- Scalable Scraping in Clojure
- A Couple of Clojure Agent Examples
- Writing Files in Clojure
- Reading Files in Clojure
- Setting Up TLA+ Tools on OS X
- Comments on "Why Engineers Should Consider Formal Methods"
- Money or Meaning: Spending Our Wealth of Time
- Cleaning up erlang_markdown
- A Failed Stack-based Markdown Interpreter
- Proposal for Authenticating Web Callbacks
- Generating RSS feeds via BeepBeep
- How Pitance Versions Documents in CouchDB
- Erlang Brush for SyntaxHighlighter
- Pitance: Template and Snippet Infrastructure
- Load Balancing Across Erlang Process Groups
- Changing Mimetypes for Text Responses in BeepBeep
- Paper Review of "Hints On Computer System Design"
- Paper Review of "A Transaction Model"
- Success and Dancing Shoes
- Several Approaches to Versioning Files in PHP
- Distinguishing Strings from Lists in Erlang
- Freebase Hackday and Image Game
- BeepBeep, CouchDB and a Trivial Blog
- Using Ajax with the BeepBeep Microframework
- Getting Started With BeepBeep
- What Do Django People Search About?
- YUI Dialogs, IE z-index and Tragedy
- Feedback Loops in Software Development
- Recycling Hacker Fear-Mongering
- Skew, The Frontend Engineer's Misery
- OS X Textfield Encoding (maybe) Issue
- Findjango Redesign & Slides for django-nyc
- How To Remotely Admin Servers Via Twitter
- Findjango, A Week of Progress
- Making Django Apps Run On and Off GAE
- Technical Debt and Peanut Butter Jars
- Findjango: A Django Search Vertical
- Solango and Tomcat 6 on Ubuntu Intrepid
- Simplified django-springsteen Deploy on GAE
- Deploying django-springsteen on Google App Engine
- Reranking Results in django-springsteen
- django-springsteen and Distributed Search
- Leaving DreamHost
- Depicting Human Relationships
- Smaller Header, JobSyndicate, Printable Articles
- Measuring Single and Multi Server Performance
- Rewriting Parameterized URLs with Nginx
- Overview of Single vs. Multi Server Architecture
- When psycopg2 Can't Import tz
- The Django and Ubuntu Intrepid Almanac
- Visually Representing Word Structures
- Using Threadpools in Python
- Setting up CouchDB-Lucene on OS X
- We're All Sinners and Cosiners
- Circle and Line Diaspora
- Spiral and Square
- Visualizing Keyterms with BOSS and Processing
- Cull Lingering Erlang Heart Processes
- Hard and Soft, Fluffy and Brittle
- Simple Unittesting in PHP
- Stripping Illegal Characters from XML in Python
- Huge CSV and XML Files in Python
- A Filter to Display Neighbors in a List
- Genetic Programming: A Novel Failure
- ⭐ Genetic algorithms: cool name & damn simple.
- Moving Into 2009
2008 192
- Django-Portfolio: Organize and Display Projects
- The Subtle Joys of Generic Methods
- A Command Line Tool for Loading CouchDB Documents
- Full-Text Search in CouchDB Using... CouchDB
- Blogging as People
- Intro to HTTP::Server::Simple::CGI
- Finally Waving The White Flag to Objective-C 2.0
- Fixing What Ails LifeFlow
- Prevent Cron Cancer With a File-based Mutex
- Parallel HTTP Requests in Python
- Reading XML Files on the iPhone
- A Different Approach to local_settings.py
- XML::Twig for Large XML Files in Perl
- Slides from django-nyc on 11/18/2008
- Python-Brightkite for... you get the idea
- Introducing a Tutorial and touchDefense
- The Blogging Hypochondriac
- The Fate of Pop and Hip-Hop in 2008
- XML::Simple for Non-Perlers
- You Only Learn the First Time
- Bad Ideas and Regular Expressions in Templates
- Deploying Django with Fabric
- Development to Deployment in Django
- Creating Slideshows with Cocos2d iPhone
- Customize site style by user with django-userskins
- User Registration Apps for Django
- Releasing Kappa Source (PyObjC Twitter Client)
- Advice to Programmers in College
- Touch Detection in Cocos2d iPhone
- Being a Local Maximum
- HSS and YUI Compressor in AYM CMS
- R.I.P. Your Resume Site to Awesome
- Taming AuditTrail Proliferation
- Releasing Source for Mahou
- Choosing Between AuditTrail and Django-Rcsfield
- Setting Up Django-Rcsfield
- Restricting User Signups in Django
- Failing a Contract
- The Magical Source of YUI Get's Power
- Notes on Cocos2d iPhone Development
- Suffer Less By Using Django Dev Server as a Proxy
- Writing for Consumption
- Starting Again, Keeping It Simple
- As-You-Type Slug Uniqueness Validation
- Layers of Authentication
- Custom Django Views for Happier Ajax
- Using Automator to Scale Images Horizontally
- Redesign of Lethain.com
- Intro to Unintrusive JavaScript with Django
- A One-Stop AYM CMS Solution
- Making Static Dynamic Again; AYM CMS
- Intricate Static Websites With Django Templates
- Sparklines.js Port to Python
- Yes, You Do Care About Cappuccino
- Extending Mahou; Gotchas and Snippets
- Extracting Data From Google Analytics Reports
- Extending Classes in Cappuccino
- Writing Mahou; a Cappuccino Image Search
- Startups and Assembly Lines
- Migrating the 'This Week in Django' Concept
- Poor Wireless Connectivity for MacBook
- Naming and Casing Convention in PyObjC
- Introducing Kappa, a Twitter Client
- I Live in New Jersey
- Dynamic Ad Targeting With django-monetize
- Transcending Search-as-You-Type Stickiness
- Epic PyObjC, Part 5: Resources and Farewell
- Epic PyObjc, Part 4: Drag & Drop, Multiple Nibs
- Epic PyObjC, Part 3: Browsing, Caching, Indicating
- Epic PyObjC, Part 2: Adding a Library & Bindings
- ⭐ An Epic Introduction to PyObjC and Cocoa
- Writing to Application Support in PyObjC
- Writing Titles Under Ninety-Five Characters
- Deleting From NSOutlineView With the Delete Key
- How to Use Selectors in PyObjC
- An Introduction to Using CouchDB with Django
- Global Popularity of Programming Languages
- An Introduction to Compassionate Screen Scraping
- A Syntax Coloring Template Filter for Django
- A Year Later, Home From Japan
- Python Content Scraper for OneManga.com
- Reading "The Nudist on the Late Shift" in 2008
- Cocoa Drag and Drop text into the Dock Icon
- How to Write a Wrapper Library
- BossArray for list-like Yahoo search results
- Replacing Django's ORM with SQLAlchemy
- Replacing Django's Template Language With Jinja2
- An Introduction to Django's Loose Coupling
- Reflections on a Year of Blogging and Japan
- 小学校と教える授業の最後の日
- Last Day of Elementary School and Classes
- Stripping Reddit From HackerNews With BOSS Mashup
- Polishing Up Our Django & BOSS Search Service
- Search Recipes for Yahoo's BOSS in Python
- Yahoo's Build your Own Search Service in Django
- Release of LifeFlow 0.91
- Advice for ALTs Considering a Second Year
- A Thursday: Elementary School
- An Introduction to a Week in Japan
- ReST, Textile and HTML in Markdown
- Updates to Sparklines.js
- Sparklines in Javascript With Sparklines.js
- JSON, Object Oriented Views, and Starting a Real App
- Ambush Code Review Learns Code Diffs
- Overview of Using Django on the Google App Engine
- A Sunday Project: Ambush Code Review
- Up to Speed
- A Django Anti-Pattern, Rolling Your Own REST
- Minimalism
- Working on LifeFlow's Public Face
- Release of LifeFlow Version 0.90
- Deployment Scripts With BeautifulSoup
- Processed Tower Defense 1.0
- Things I'll Miss in Japan
- Strangest JavaScript Bug I've Ever Seen
- Looking for Recycling's Lost Sex Appeal
- Updates to Processed Tower Defense
- May in Review
- Processing.jsの使い方
- Spoken Languages, Blub, and Convenience
- Music From the iTunes Store, 1
- Improvements to LifeFlow Editor
- Updating Processing.js Graphics via Ajax
- Design of Processed Tower Defense
- Three Processing.js Examples
- Using Javascript to Control Processing
- Getting Started with Processing.js
- Our Yellow Woods, and a Story
- Writing Join in Erlang
- Photographing Japan
- A Picture of a Couple
- Spring Haiku and Tanka
- Thoughts on Dating Erlang
- Haiku for an April
- Designing Elesma
- A Week In The Job
- Failed Night Time Pictures of Sakura Blossoms
- A Brief Winter Hike
- Opening Files With Associated App in Cocoa
- Tip Your Hat To Accessors And Mutators
- Handling Files With CoreData
- Catching Up On Some Thoughts
- Tools, Languages, and Squeak
- Quick Reflections on JET in Haiku
- Assigning One To Many Relationships in CoreData
- Spring Doesn't Come in February, But Snow Does
- On Writing
- Filtering Arrays in Objective C
- Teaching Elementary Classes as an ALT
- My First Sickday in Japan
- Midnight Philosophy in The Garden of Good and Evil
- Seeking Some Music I Can't Find
- Some Biased Analysis of Music Videos
- Using Our Own Software
- Using Optional Parameters in Django Urls
- Technical Aspects of the Life Flow Editor
- Introducting the LifeFlow Editor
- Why Was The Syllabus Born?
- On Hegemony and an Anti-Capitalist Bias in European Textbooks
- Hot Water Is Broken
- 5. A Chartered Bus to Downtown Tokyo
- Standard Workflow for Publishing With LifeFlow
- Replacing the Karma Social Model with Whuffie
- Catching Lessons From Spam
- Translating Entries into Other Languages with LifeFlow
- A Historical Perspective on the JET Program in 2008
- On The Causes and Cures of Malware
- Failures of Proactive Communication & Other Generic Complaints
- かかった年と新しい年の取り返し
- Changes living japanese
- Opinionated Programming Languages, The Huddled Masses, and Elitism
- Lesson Plan: My Winter Vacation
- New Style for Including Resources in Entries on LifeFlow
- Adding Arbitrary Mods to LifeFlow
- Changes from Living
- Introduction to Kamioka-cho, Hida-shi, Gifu-ken, Japan
- Odors from Shoes Curious in OS X 10.4
- Driving on the Left Side
- Don't Repeat Yourself for Bloggers: Dynamic Blog Context in LifeFlow
- Cleanly Extending Python Markdown with Syntax Highlighting
- Update to Lethain.com
- Customizing LifeFlow Quickly with Skins
- Installing a Development Deployment of LifeFlow, a Django Blog Solution
- Reflections on the old year, and the new one
- BluePrint CSS makes LifeFlow look better, and easier to customize
- Music Recommendations & Snow Pictures
- Implementing Threaded Comments in LifeFlow
- Visiting Kiyomizudera
- Status Update for LifeFlow
- Accolades for Pygments 0.9
- Actors in Common Lisp
- Packaging of Renu Contact Solution
2007 69
- Miyajima and Hiroshima
- Designing My Future Home
- Another Breakfast With You
- Another Slight Mistake...
- Merry Christmas 2007
- Moving Writings to Separate Flow
- Two-Faced Django Part 7: PyFacebook and FBJS Ajax
- Upgrading from 256 to 512 megs of ram
- Two-Faced Django: Live install
- Two-Faced-Django Part 6: PyFacebook
- Two-Faced Django Part 5: JQuery Ajax
- 4. Airplanes
- Two-Faced Django Part 4: The Webapp
- Two-Faced Django Part 3: Newforms
- Two-Faced Django Part 2: Models and Django Testing
- Two-Faced Django Part 1: Building a project that exists simultaniously on Facebook and the web
- 3. Shuttle Busses
- On Education, Self-Responsibility and Manure
- 2. Traffic Jams
- 1. Beginnings
- 0. Introduction
- Using JQuery with Django for Autocomplete Fields
- Using PyFacebook without the Facebook middleware
- Human Error
- "You Are Beautiful At All Times" by Yppah
- Context is a Parameter in Calculating Truth
- Those Annoying Habits
- Defining Your Web Aesthetic
- Introducing my Japanese Kitchen
- Hiking Tengaisan
- Reliable Mealtime Friends
- Grocery Shopping in Japan
- Getting Cold in Kamioka
- Teaching Adult English Classes
- Getting started with Shoes on OS X
- Expectations and Reality for the lowly ALT
- FAQ about JET
- A Few Quick Updates to Site
- Back in Action
- Eating Cornflakes
- Leaving Tokyo, Arriving in Kamioka
- From America into an American Bubble: The Flight to Japan
- JET Pre-Departure Orientation
- Picture from Hotel Room
- Heading toward Atlanta
- Applying to the JET Programme
- Failure of Implicit Conventions: Determining Function Destructiveness
- "Building Scalable Web Sites" by Cal Henderson
- Dreamier Dream Server with Nginx
- Apache/Lighttpd Confusion
- Adding Social Bookmarking To a Django App
- Syntax Highlighting with MarkDown, and a pinch of Automagick for Django
- Music Video? Movie? The 'Once' Dilemma
- Extracting Models From Django Datadump
- Creating my Dream Server for Django
- New Look for LifeFlow, Deployment on Dreamhost
- "Puddle City Racing Lights" by Windmill
- YouTube Scalability
- Stability Issues
- How to Migrate Data Across Model Changes
- Writing Custom Contexts for Django
- Examining Web Analytics to Implement (repost)
- A Django Middleware for Google Analytics (repost)
- Anti-Objects and Reflexive Decisions (repost)
- A Comp. Sci Degree is What You Make Of It (repost)
- Is the JVM the "next assembly"? I hope not. (repost)
- Reflections on Django (repost)
- Good to Great, Paul Graham and Ayn Rand (repost)
- Finding Our Programming Flow (repost)