DaFoster
Issue counts always go up
Designing Software in the Large
The trouble with the Symbol type
Dumping a traceback when an error message is printed
Effective Code Reviews
PyCon US 2024 Highlights
Redis relicensing: Why is this a problem?
Bulkheads: A pattern for handling unexpected errors in software
Debugging a deadlock in Python
Custom file icons, folder icons, and app icons on different operating systems
How to make a binary .deb Debian package using Docker
Debugging bash scripts with the bashdb debugger
Crystal Web Archiver 1.3.0b Released!
CompressedTextField for Django & MySQL is released!
Interview with David Foster
Crystal Web Archiver 1.1.0b Released!
You might not need centralized continuous integration
Reliable rendering of web pages that view concurrently modified data
Real-time updates in Django with WebSockets, Channels, and pub-sub
Building web apps with Vue and Django (2024) - The Ultimate Guide
Database clamps: Deterministic performance tests for database-dependent code
Privacy Sandbox: Google's answer to privacy-conscious advertising
Tests as Policy Automation
Python's type checking renaissance
I no longer trust The Great Suspender
Power Naps
Stress
OS Abstractions are Failing Us
Dependent Types: Impressions of a software practitioner
Timecharts
Why isn't the external link symbol in Unicode?
The Flat Module Pattern in JavaScript
Performance Testing
Unsound type systems are still useful
How to implement a large software feature
How to annotate a new recipe
Learning to cook better: My journey
The Trouble with Global Variables
How to Design Large Programs with Abstraction and Encapsulation
How to upload from OS X Photos to Facebook (2016)
Glue in Functional Programming Languages
Abandonment vs. Unchecked Exceptions for Error Handling
A Programmer's Guide to Practical Hats
Notes on “The Clean Coder”
Roles on Software Teams
State of the Union in Programming Languages (2015)
Algorithms 101 for Software Applications
Unicode 101
Optional Structural Static Typing in Python
Block Distracting Websites
Semantic Versioning vs. Romantic Versioning
Proof terms in Idris
Spectrum of Languages by Hardware Distance
Error handling styles in programming
Learning Japanese - the first 6 months
Submitting a Python App to the Mac App Store
Reading Japanese text from images
Agda: Second Impressions
What is Color?
Agda: First Impressions
How to move notes from an iPhone to an email account
Impressions of Haskell
Scrivener: An IDE for thinkers, creators, and writers
Shame on the NSA
WA Initiative 522: GMO Food Labeling
Strange Loop 2013 Highlights
Regular Expressions
How I learn new programming languages
Interactive Computing
Fixing a function at runtime without restarting the program
Skills I'm Learning at Splunk
Skills I Learned at Microsoft
Sending email from command line scripts
Error Handling
Handling Text Correctly
RDiscount 2.1.6 released
Implicit Partial Application Considered Harmful
Programming for Perfectionists (P4P): A Book Outline
Avoid feeling like a port on the Mac
Copyrights and Licenses for Software
Exploring Onionland: The Tor .onion Darknet
Making an Existing Python Program Unicode Aware
Beautiful Code: SQLite
Migrating from BBEdit to Sublime Text
Introducing p4status: A status command for Perforce
Killer apps for software platforms
Notes on Racket (PLT-Scheme)
Notes on Prolog
Visual Guide to Programming Language Properties
RDiscount 2.0.7 released
Learnings from SICP (and Lisp)
Unique Features of Various Programming Languages
Things I Wish I Knew Before Working in Industry
Programming is Fun. But What Matters is Solving a Real Problem.
This website is now powered by Jekyll
Why I no longer use Drupal
Retrospect vs. Time Machine
Impact of Anime on my Programming Experience
Comparing Writing Utensils