tech docs.

A collection of my writing on technical topics, as collected over the years. If what you're looking for isn't here, it's probably on my blog. Chances are one of the tags like "computers" or "nscp" will help you narrow your search.


Youtube's joke
of a fair-use
appeal process

2014
I posted a video, composed of pieces of other videos. The Content Mafia said it was a copyright violation, though it was clearly fair use. Youtube's robots disagreed. Their whole dispute-resolution process is corrupt, vile, and egregiously tilted in favor of corporations.
Standing Desk
2014
I have one now. It was a hassle to set up, but I like it.
Lock-screen
security bugs

2014
The Linux distro peanut gallery introduced yet another set of bugs that allow anyone to unlock your screen just by mashing the keyboard. You're using gnome-screensaver? Do you want ants? Because that's how you get ants.
Messaging Backup
2014
I've written tools that allow you to archive your SMS, Facebook Messenger and Twitter direct messages. This is an overview of them.
iTunes Highly
Rated Songs

2013
iTunes 11 removed the "play higher rated songs more often" option. I've mostly figured out how to reproduce it using a set of nested smart playlists. These are the (pretty complicated) instructions.
Mobile
Web Design

2013
Remember in the 90s when web sites would pop up little Javascript dialogs trying to better "engage" you, and it was about as pleasant as having a little hammer pop up and whack you in the face every time you clicked their link? It's back.
iTunes and
streaming audio

2013
I had to reverse-engineer some stuff to figure out how iTunes 10 copes with streaming audio, Icecast-style inline metadata, HTTP byte-ranges and seeking. It's complicated.
OpenGL vs. OpenGL ES
2012
When I ported XScreenSaver to iOS, I did it by writing an implementation of the OpenGL 1.3 API in terms of the OpenGL ES 1.1 API. I had some unkind things to say about the OpenGL standardization process as a result of this.
Why I use Safari instead of Firefox
2012
Based on my background, people think it's weird that I don't use Firefox. I have reasons, and these are them, as of 2012.
Dali Clock Y2K
2012
In 1998, I did a... thing. Because I am a bad person.
about:jwz
2011
The secret history of the about:jwz URL, and the Netscape Throbbers.
VC Con
2011
A Vulture Capitalist wrote an article claiming that the only path to success in the software industry is to work insane hours, sleep under your desk and give up your one and only youth, and he used my words to try and back that up. This is my rebuttal.
Computer History Museum
2011
I appear in a few video installations in the Computer History Museum's 2011 exhibit, Revolution: The First 2000 Years of Computing. These are my photos of the exhibit.
Internet Archive
2011
I visited the Internet Archive and took some photos.
Nym Wars
2011
Anonymity is important. Pseudonyms are important. My.nameis.me.
Dali Clock and
Apple's Store

2011
It turns out that if you publish free software in Apple's App Store, they delete your software if you don't continue paying them $100 per year. Isn't that swell?
Printing Margins
2011
At great personal irritation, I've learned some things about printer margins, Illustrator and Safari.
Nightclub Photography
2011
I offer some very basic advice for taking (and publishing) photos in dark, candid environs, with an emphasis on nightclubs and SLR cameras.
QR Codes
2010
I have come to the conclusion that it's impossible to construct a QR code that serves the function of a business card if you have more than one phone number.
WordPress
2010
In 2010, I migraded from LiveJournal to WordPress. This is what I learned in the process.
Old Browsers
2010
Did you know that JavaScript doesn't have integers? Somehow I had never noticed that. When I posted about it, Brendan and I got into an interesting conversation about the history.
MacOS vs. iOS
2010
In the course of porting Dali Clock to the iPhone, I felt the need to rant about API design and gratuitously incompatible changes.
Facebook Feeds
2009
How to use Facebook with a feed reader, since they make it hard to figure that out.
Palm Pre part 1,
part 2, part 3, part 4.

2009
When the Palm Pre smartphone was first released, I wrote a couple of programs for it. Palm's process for submitting software to their app catalog was a Kafka-esque nightmare. This is the tale.
Duct Tape
2009
Joel Spolsky wrote an article about me calling me a "Duct Tape programmer". This is my respopnse.
Bicycle Wisdom
2008
This is my down-to-earth advice for beginning (or prospective) urban commuter-bicyclists. Also known as, "jwz farts in bike-church".
Old Browsers
2008
In honor of the ten year anniversary of the Mozilla project, I got home.mcom.com back online, and also an archive of ancient web browsers and instructions on how to run them on modern computers.
MOST-POSITIVE-BIGNUM
2008
A story about Lisp Machines and infinite-range integers, and pushing things beyond their limits.
Ptys
2007
I found a kernel bug. MacOS 10.5 broke ptys, and I am sad. I don't think they'll ever fix it.
Backups
2007
Backups and how to do them.
Groupware
2005
Calendars, Hula, and asking the important questions like "how will this software I'm writing get my users laid?"
^H^H^H^H^H
2005
Do you know what it means when someone types ^H^H^H^H^H? Do you know why? I thought some people might not.
Switch
2005
In 2005, I gave up on Linux on the desktop forever, and switched to MacOS. Many people found this scandalous. These are my blog posts about the process.
Mork
2004
The database used in early versions of Firefox is the single most braindamaged file format that I have seen in my entire career. I wrote some things about it.
Censorzilla
2004
The bastards made us take out the dirty words.
CDDB
2003
A case study in idiocy: what happens when a five minute hack becomes a de facto standard because nobody had the foresight to strangle it in the crib.
Markup versus
Presentation

2003
Did you notice that some time around the turn of the century, the W3C peanut gallery started advocating exactly the opposite approach to web site design as what they used to advocate?
IWTBF
2003
People who use the phrase "information wants to be free" usually don't understand it.
CADT
2003
The "Cascade of Attention-Deficit Teenagers" model of software development.
RSS Damage
2002
RSS, content aggregation, and publishers who don't understand them.
Linux Video
2002
Another rant about the pathetic state of Linux usability, 2002.
Mailman
Considered
Harmful

2002
Mailman used to be a very popular mailing list manager software. It's a pain in the ass to use, and has a braindead security model. Here's a rant about it from 2002.
The Emacs Schism
2000
Lucid Emacs versus FSF Emacs: step right this way and kick the dead horse once more!
Tabs versus Spaces
2000
An attempt to introduce some facts and practicality into one of those arguments that just never goes away.
about:authors
2000
The condensed and expurgated history of the about:authors URL.
Emacs Timeline
1999
A family tree of GNU Emacs and major related projects, 1976-present.
Garbage Collection
1998
Garbage collection has a bad rap. I argue that using a good garbage collector will result in more efficient and less buggy software than doing malloc/free by hand, and further, that using a bad garbage collector will still get a better product out the door faster.
Linux
1998
A mini-rant about the state of Linux usability, circa 1998.
Easter Eggs
1998
Why all cool programs have easter eggs, Netscape Navigator in particular.
Generating
Message-IDs

1998
An expired Internet Draft I wrote in 1998 with recommendations on how mail and news clients can easily generate good, correct, and globally unique Message-IDs for their messages.
HTML Message
Composition

1998
The interface for composition of HTML mail and news messages in Netscape always sucked. Here's my rant/blueprint on the subject from 1998.
Intertwingle
1998
A project proposal I made in 1998 for a program to make it easier to deal with vast quantities of email. Nothing ever became of this.
Unity of Interface
1998
An argument for why kitchen-sink user interfaces (such as web browsers, and emacs) are a good idea.
Mail Summary Files
1998
How mail summary files worked in Netscape Mail 2.0, 3.0, and Grendel, and where 4.0 went horribly wrong and left me hopping up and down and shouting "I told you so."
Message Threading
1997
A description of an algorithm for threading messages together (presenting the parent/child relationship of trees of messages and replies.) This is the algorithm used by Netscape Mail and News 2.0, 3.0, and Grendel, but was not what 4.0 used (see "I told you so," above.)
The Posted-and-
Mailed Header

1997
An expired Internet Draft I wrote in 1997 with a proposal on how combined mail/news clients should identify the messages they generate, to make it possible for the recipients to tell what's going on. (This used to matter, back when USENET still existed.)
X Cut and Paste
1997
How cutting and pasting really works in X Windows, what Selections and Cut Buffers are, and how Emacs fits into the picture.
Character Sets
1997
All about Latin1, Windows CP-1252, and MacRoman, and why there are lots of web pages out there that use characters you can't see.
Java
1997
I like Java, but I hate Java too. Here are the things about it that bug me. Written in 1997, but it's all still true today.
XEmacs Wishlist
1997
In 1997, I composed a wishlist of the ten most important things that I thought XEmacs needed. Sadly, the XEmacs maintainers still don't seem to agree, so these wishes are still valid.
Content-Length
Considered Harmful

1996
A description of the format of traditional BSD `mbox' mail files (the file format used by Netscape, Eudora, and most other pre-Millennial mail readers), why ">From mangling" happens, and why the Content-Length header is a hazard.
Configuring
Netscape Mail
on Unix

1995
An explanation of how the various mail-download methods worked in the Unix versions of Netscape in the mid 1990s, how to configure sendmail compatibly, and why you can't use "procmail". Irrelevant today, but a hilarious snapshot of the indignities we had to deal with back then.
Worse is Better
1989
I didn't write this one, Richard Gabriel did, but it's been on my page forever, and you should read it. It explains why mediocrity has better survival characteristics than perfection, using Unix's triumph over the Lisp Machines as an illustration.


© 1994-2011 Jamie Zawinski <jwz@jwz.org>