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