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.

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 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.

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 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.

⭐ 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

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

Adding Value as an Engineering Manager

⭐ Developing service oriented architectures.

Building a Software Deployment Pipeline

Irrational Exuberance's Fourth Coming

Company Culture and Managing Freedoms

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

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

Articles and Series

Coding Projects

Being Defensive

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

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

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

かかった年と新しい年の取り返し

生きて変わる

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

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)

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

Reflections on Django (repost)

Finding Our Programming Flow (repost)