Kurt McKee
lessons learned in production
Archive
Archive
2023
Revitalizing stalled open source projects
Test suite performance: Build wheels to go faster
dotbot-firefox 1.1.0
pelican-precompress 2.2.0
pelican-granular-signals 1.1.0
2022
Enabling vigilant mode on GitHub
Announcing dotbot-firefox
Fixing a missing Python REPL history
Managing your git config using dotbot
listparser 0.19
pelican-granular-signals 1.0.1
pelican-precompress 2.1.1
2021
Announcing pelican-granular-signals
pelican-precompress 2.1.0
Keep code style out of code reviews
2020
Monkeypatching: Retrieving data from the parent scope
Monkeypatching: The basics
pelican_precompress 1.1.1
Design for "and" and "or"
Why you should document your test assertions
Sitemap now included!
JSON output from CLI commands
Now available: my oldest posts!
Friends with robots
Redirecting www
Announcing pelican_precompress
Qotom Q350G4Y: My new router
Content attribution
Enabling Brotli compression
2019
Self-documenting code
Handling automatic favicon requests
CSS minification and cache busting
TLSv1.3 and caching
Upgrading the site's HTTPS and TLS
Moving, part 9
2015
Tera Term subroutines
listparser 0.18
feedparser 5.2.0
Twelve days later
Moving, part 8
Moving, part 7
Moving, part 6
Moving, part 5
Moving, part 4
Moving, part 3
Moving, part 2
Moving, part 1
The state of feedparser
2014
In the beginning
Caller ID blocking options
The Debris Cathedral
A change of scenery
Raspberry Pi benchmarks
2013
Raspberry Pi server
2012
Date parsing
listparser 0.17 - "Territory expansion"
Announcing feedparser 5.1.3
Getting back into it (part 6)
Getting back into it (part 5)
Getting back into it (part 4)
Getting back into it (part 3)
Getting back into it (part 2)
Getting back into it (part 1)
And now I look around
Leveling up my tech
Maintaining my humanity
Announcing feedparser 5.1.2
Customizing websites using a scalpel
listparser now has a unified codebase
Announcing feedparser 5.1.1
A case for forgetting
Book burning
How old am I?
Fixing more things
Fixed it!
pdb post-mortem debugging
YouTube for the XBox 360
Gifts and surprises
2011
listparser 0.16 - "Refresh"
Announcing feedparser 5.1
Photo managers
My opinion of Hulu Plus
Revisiting Windows
Predictions and facts
It's the truth
Announcing feedparser 5.0.1
Announcing feedparser 5.0
The problem with Mercurial
Improving feedparser's unit tests
Supporting a timeout in feedparser
2010
Goodbye, Liferea
Extending feedparser using dynamic inheritance
Bash' extglob option
A git-svn reminder
Feedparser porting status, Thanksgiving edition
Feedparser porting status
Porting feedparser to Python 3
Don't just trust: backup your data
listparser v0.15 - "A special day"
listparser v0.14 - "A good year"
True bookmarking software?
LiveJournal FOAF file support
Licensing
urlnorm has a purpose!
Link Widgets for Firefox
Normalizing URLs
Posting comments from within a feed reader
On being held hostage
Migrating back to Wordpress
listparser v0.13 - "Revelations"
Fixing listparser's unit tests
listparser v0.12 - "Safety net"
2009
listparser v0.11 - "Floodgates"
listparser v0.10 - "Internet-ready"
Changes to rawdog-rss
Easy subscriptions and filtering
Patching rawdog's rss.py plugin
listparser 0.9 - "Celery wolves"
Replacing magical code
Regarding reboots
listparser v0.8 - "Three day weekend"
listparser v0.7 - "The Codex"
Writing documentation
listparser v0.6 - "Hatchet Hotel"
listparser v0.5 - "Going green"
Penny Arcade powered by Django
Bash programmable completion
Commanding bash
listparser v0.4 - "07/18,29"
Quantifying unit test coverage
listparser v0.3 - "...and Recursion for all."
Claims in subscription lists
Saved by a squid
listparser v0.2 - "Leveling up"
Normalizing years
Subscribing to a subscription list...
listparser 0.1 - "Achievement unlocked"
No cookie for you!
Look ma, no BeautifulSoup!
listparser on Freshmeat
Announcing listparser
listparser.py
Finding my voice
On CPU specialization
Subclassing Python types
2008
Quantum of Solace (2008)
Tracking feeds and comments
Pidgin-encryption key
FireGPG and blogging
Wordpress.com and comment feeds
Yahoo for search
Revisiting comment scraping
Scraping LiveJournal comments
while read i
Python's time module
Cherokee 0.6.0 and Django
Announcing Tricycle
Unit testing
Authorship and extensibility
Renquist and distutils
Capturing comments
Revisiting "uninteresting" statistics
2007
"Uninteresting" statistics
Licensing Renquist
Life with GnuCash
Feed lists
Quantifying stuff and things
Renquist
Unable to sleep
Comic duplication
Northwestern and OpenID
Cell phone video formats
A header mockup
Learning Dvorak
Address booking
Watermarked images
My first cell phone
Spam Karma 2
My Akismet analysis
Django makes learning fun!
Dealing with hotlinking
Stats are helpful around here
Of presidents and internets
Goodbye, hive mind
Goodbye, Liferea
Good News - 1991
What I Wish - 1991
SSH over FTP and HTTP
A rule to live by
Header design
A plan for copyrighting
A new avatar
Keeping track of comments
Adobe Flash and online audio
Reporting vulnerabilities to Northwestern
I love Webmail.us!
15 years and counting, baby!
Playing the Twitter game
Firefox! Stop locking things down!
2006
Well themed, well done
The death of Amtrak
One week in December
Not anymore, I don't
Startling timing on my part
Pavatar documentation
Decentralizing my visual identity
GPS metadata in photos
Baobab hooks me up
Wishy-washy tool selection
I want a people manager! Now!
After reading the specs
The shift, unexpected
Simulating Conversation in MySQL
Facebook backlash
IM And Me: A History
FOAFing it up
More MySpace stuff
Beating MySpace into submission
Towards better MySpace feeds
The MySpace Cross-poster
MySpace progress
Cross-posting to Myspace
Bundling information together
Internationalization of the installer
The tragedy of Apple's DRM
Sabrosus gettext support - beta 1
Gettext support in Sa.bros.us
I'm a Sabrosus developer!
A shift in bookmarking
Another manufacturer ends support
2005
Alarm clocks have bugs?!
My job and my future
Like Doublemint gum
Gotta please the people
More stuff what ain't easy
Conversions ain't easy
Computer don't got brains
Of elephants and rabbits
Feeds save me time
The Xanga Archiver
Free Culture
A Xanga archiver
Soon, I hope
Google found me
I guess it's useful
Presentation is everything
Kurt does Xanga
Picasa
I hate script kiddies!
iTunes Store for Linux
I got it! I got it!
Coolness to come
Participation, however small
Stunning
Upgrades for sure!
A dizzying array of vulnerabilities
Drivel and Liferea
2004
Fixed it, if you noticed
Stupid spammers
Adblocking about.com
More Halo 2 thoughts
The Tuesday foretold from of old
A couple of lynch pins
Like pirating music, only encrypted
On the complete other hand...
So that's it, I guess.
Jump ship NOW
Best. Conversation. EVER.
Yahoo!'s shenanigans
Ain't gonna take no sass
The ol' tap-a-roo