One way to achieve gender neutrality

October 31, 2011

From Beats Now and Then:

“The detective’s moment of stillness before he slowly reaches for the matchbox tells us that she’s realized something important”

Namely, that he’s a woman.

Wherein I am made teary-eyed by a stupid pop song

October 23, 2011

Yesterday Amelia, five years old, started singing a song in the car with great enthusiasm and volume—or part of a song anyway. Something about “light the light … something, something … the 4th of July.” It took me a bit to figure out that this was not one of the many official songs being taught in her kindergarten class but rather something she had learned from friends at recess. (Those of you more au courant vis a vis pop music may already have figured that out.) Her rendition was dramatic if somewhat mumbly. As we were at the end of the long day, I grouchily had to insist that if she must sing, she had to sing softer. She claimed, with some justification, that it really needed to be sung loud.

This morning she was at it again when I was within reach of a computer so I was able to google up the actual song which turns out to be “Firework” by Katy Perry. Soon I had a video of the song going while she sat, enthralled, trying to master the lyrics of the chorus. Even little Tabby, sixteen months old, seemed to be joining in on the “oh-oh-oh” parts.

Now, this is not great music. I know that. The lyrics don’t really bear up under even cursory analysis. But the theme is at least something I can get behind, especially as a father—don’t be afraid, be yourself, show the world what you can do. And the chorus does build musically, the melody stepping slowly—almost one note per measure—up the scale over pulsing strings and a slow crescendo that leaves Perry belting out the key line, “baby you’re a firework” over a driving drum machine beat.

For whatever reason, something about the whole scene—the heartstring-tugging musical effects, Amelia’s little-girl-growing-up interest in her first pop song, and the fact that this is no doubt just the first of many interests, infatuations, and obsessions she’s going to bring home from the world outside—kept getting me all choked up.

End of the line for Code Quarterly

October 17, 2011

A bit over a year and a half ago I announced that I was starting a magazine for programmers, Code Quarterly. Today I’m pulling the plug.

So what went wrong? There were three parts to the theory that led me to start Code Quarterly:

  1. There’s a market for high-quality, in-depth articles for programmers.
  2. By working with other writers and providing extensive editorial support, I could produce more high-quality content than I’d be able to write on my own.
  3. New ways of publishing (Kindle, iPad, print-on-demand, etc.) have opened up opportunities to publish (and sell) different kinds and different lengths of writing than had been feasible in the past.

As far as I can tell, I was right about point number one. Over two thousand people filled out the form on our web site to express interest in subscribing to Code Quarterly and the comment and emails I’ve received have been very enthusiastic and encourging.

Point number two, however, turned out to be the sticky wicket. I couldn’t find enough people to write the kind of stuff I wanted to publish, even with me doing a lot of editing. There was interest: almost four hundred people indicated that they might like to write for the Quarterly. But I wasn’t able to turn that interest into actual pieces: from that pool of four hundred I got thirteen writers to the point where I actually sent them a contract. Eight of those finished a first draft, three persevered to a second draft, and only one got all the way to a published article.

For a while I thought, “Okay, I’ll just do most of the writing myself.” Unfortunately there turned out to be two problems with that theory: one is that I couldn’t write enough, quickly enough to make the Quarterly a viable publication. The other, even more serious problem, was that I found myself losing interest in writing on the topics Code Quarterly was supposed to be covering. I have, for some time, described myself as a writer turned programmer and a programmer turned writer. These days I’m feeling more and more like just a writer and one who wants to write about things other than just programming and computer science.

As a result, I never got Code Quarterly to the point where I could find out whether the third part of my theory was right. I’d like to think it was: two out of three wouldn’t be bad, even if not good enough for success.

I’m sorry that I wasn’t able to pull this off. It’s certainly possible that there’s something I could have done differently over the past year and a half that would have led to a more successful outcome but to continue now would be to fall prey to the sunk cost fallacy—the time and money I’ve spent are gone and spending more when my heart is no longer in it is just a recipe for ending up with less of both with no more to show for it.

My thanks to everybody who encouraged me along the way and my apologies to those who are still waiting, hoping to see something come of it. I especially want to thank Adam Solove, who did some beautiful design work, both print and web, which now, sadly, will never see the light of day and Michael Fogus, my one writer to complete an article, his interview with Rich Hickey.

Up next, I try to figure out a new career as a writer and editor. I hope to write more books but I’ve discovered, working on Code Quarterly, that I also enjoy editing other people’s writing. So if you know anyone who’s looking for a freelance or part-time development editor send them my way.

A krevitch to snork your flads: the lost ~U format directive

October 7, 2010

Preparing for my upcoming ILC talk led me to some old Common
Lisp email archives where I came across this proposal from Guy
Steele:

Date: 11 June 1982 2233-EDT (Friday)
From: Quux
To: bug-lisp at MIT-AI, bug-lispm at MIT-AI, common-lisp at SU-AI
Subject:  Proposed new FORMAT operator: ~U("units")

Here's a krevitch that will really snork your flads. ~U swallows an
argument, which should be a floating-point number (an integer or ratio
may be floated first). The argument is then scaled by 10^(3*K) for
some integer K, so that it lies in [1.0,1000.0). If this K is suitably
small, then the scaled number is printed, then a space, then a
metric-system prefix. If not, then the number is printed in
exponential notation, then a space. With a :, prints the short prefix.

Examples:

 (FORMAT () "~Umeters, ~Uliters, ~:Um, ~:UHz" 50300.0 6.0 .013 1.0e7)
  =>  "50.5 kilometers, 6.0 liters, 13.0 mm, 10.0 MHz"

And you thought ~R was bad!

Later he made this small addition:

Date: 12 June 1982 1119-EDT (Saturday)
From: Quux
To: bug-lisp at MIT-AI, bug-lispm at MIT-AI, common-lisp at SU-AI
Subject:  More on ~U (short)

I forgot to mention that the @ flag should cause scaling by powers of 2^10
instead of 10^3:

(format () "~Ubits, ~:Ub, ~@Ubits, ~:@Ub" 65536 65536 65536 65536)
  =>  "65.536 kilobits, 65.536 Kb, 64.0 kilobits, 64.0 Kb"

--Q

Lisp implementors/maintainers poll

October 5, 2010

I’m working on my talk for the upcoming ILC. If you are the implementor or maintainer of a Common Lisp system, I’d love to know if you were involved in the standardization of Common Lisp either in the pre-ANSI period or on the ANSI committee. If you could drop me an email or leave a comment here, telling me who you are and saying whether you were or were not and what implementation you work on, that’d be a huge help. (If you were, please let me know if it was pre-ANSI, ANSI, or both.)

Whither Lispbox?

April 16, 2010

When I wrote Practical Common Lisp, in order to provide a semi-standard environment for people to play with Common Lisp I created Lispbox, a customized version of Matthew Danish and Mikel Evins’s Lisp in a Box. Like Lisp in a Box, Lispbox combined Emacs, SLIME, and a Common Lisp implementation into a single, easily installable hunk of bits.

At the time, my goal was just to make a single version that could be installed on GNU/Linux, OS X, and Windows that would contain the libraries needed to run the example code from PCL in a predictable environment. (For instance, Lispbox removes implementation-specific packages from the CL-USER package use list so that the behavior of different Lispboxen would be more consistent.)

At the time I had dreams of continuing to work on Lispbox and make it something more than just a bike-with-training-wheels for new Lispers. At the very least I hoped to be able to continue to build and distribute new versions of it as Lisp implementations were updated, etc. As it turns out, I’ve completely failed to do either of those things.

Somewhere along the line, I registered the lispbox.com domain but never did anything with it. My registration is going to expire in about a week and since I’m pretty obviously not going to be doing anything with Lispbox myself, I’m not going to renew it. But I would be happy to let someone take over the project.

All the code needed to build Lispboxen is available as a Google code project. And people other than me have in fact succeeded in building working Lispboxen from it. If you are interested in doing something with Lispbox, please email me. I’ll be happy to set you up as a contributor on the Google code project and to answer questions about how things work. And if anyone wants to really take it over, I’d be more than willing to officially pass the baton.

A Tale of Two, Three, … N Rewrites

March 7, 2010

In an earlier post about the various rewrites Netscape’s browser underwent I quoted both Jamie Zawinski and Brendan Eich about their experience with the programmers from companies acquired by Netscape coming in and rewriting sections of browser code. I quoted Eich saying:

There was an imperative from Netscape to make the acquisition that waved the Design Patterns book around [i.e. Collabra] feel like they were winners by using their new rendering engine, which was like My First Object-Oriented Rendering Engine.

Eich soon wrote me to clarify and I’ve been meaning to post something about it for quite some time. Here’s what he said:

I wasn’t referring to Collabra, rather to Digital Styles. Different Netscape startup-acquisition lottery winner, same sad rewrite story, but with the rendering engine the rewrite target instead of the mail/news (“groupware”) code the target this time.

You quoted jwz saying: “They [Collaborators] didn’t start from scratch with a blank disk but they eventually replaced every line of code.” The “every line of code” is about the mail/news code only, not the browser front ends, and specifically not the layout (rendering) engine. The Collaborators weren’t that good, they had no one who could hack a web-compatible replacement layout engine or a JavaScript engine. They were Windows Professional ™ C++ programmers, mostly.

Netscape 4 was not a total rewrite. (No Netscape release, not even Netscape 6, was, although 6 and the Mozilla code it was based on came closest by far.) I rewrote my first JS engine (“Mocha”) for it, but reused a lot of code with name changes (big change: a real GC instead of ref-counting and arenas). Eric Bina’s layout engine remained pretty much as it was in Netscape 3. Lou Montulli’s hacked over netlib, ditto. More hands on board at Netscape meant more incremental evolution, but the original Netscape 1 or 2 era browser and rendering code was still there.

Feel free to quote me, hope this helps.

From there Eich and Zawinski had a short back and forth that I got cc’d on about what exactly got rewritten by whom. Unfortunately the final answer, which could be pulled from the old CVS repository may be lost to history – Eich tried to get AOL to release the old CVS repsitory in 2003 but didn’t get anywhere with it, in part because, as he said in one of his emails, “I’m not sure what had become of the old CVS server at that point.”

Anyway a bit of ancient history that I should have posted about far sooner.

Code Quarterly (née Gigamonkeys Quarterly)

February 25, 2010

So this is an actual announcement. The idea I floated the other day about a quarterly journal for hackers is now a real going concern, renamed Code Quarterly. I got a ton of email from people interested in the idea and have put together some writer’s guidelines for folks interested in contributing. If you just want to be told when we have made some progress toward actual content, go to the website and fill out our form. Or follow us on Twitter.

Gigamonkeys Quarterly

February 18, 2010

I’m not sure if this is an announcement, a pre-announcement, or simply a trial ballon, but here’s an idea that’s been getting me excited lately: Gigamonkeys Quarterly, a web site / journal / publishing house that will publish well-written articles and books of interest to hackers.

My basic theory is that there’s a niche waiting to be filled by someone publishing well-written pieces longer than blog articles but shorter than books and making them available in a variety of formats.

So my plan is to create a web site where I can publish in-depth articles about computers and software written by me and by other writers who are interested in working with a hands-on editor. (Me, that is.) We will then publish individual pieces in other formats: DRM-free PDFs, ebooks for devices such as Kindle and iPad, and print-on-demand paper books. And then, if all goes well, we’ll also publish a nicely typeset paper magazine quarterly. Finally, we may publish book-length treatments of various subjects in serial and then publish them as books when they’re complete. Or all these plans might change drastically when they come into first contact with the enemy.

I plan to pay contributors for their work but at the moment all I can say about that is that I expect to pay them fairly for their contribution, based on how much money, if any, the Quarterly makes.

The basic categories of articles I’m interested in are:

  1. Explanations of deep technical ideas aimed at competent programmers.
  2. Annotations and critques of interesting code.
  3. Profiles of and Q&A interviews with interesting programmers.
  4. “Think pieces” about larger issues of interest to hackers. e.g. Should the code behind scientific research be released and if so, why isn’t it?
  5. Book reviews.
  6. Cool hacks – interesting code explained by its author.
  7. Computer history – articles that explore how we got where we are today.

If you have any interest in writing for the Quarterly or being involved in any other capacity, feel free to email me. Or if you just have words of encouragement, or even discouragement, I’d love to hear those too.

The Power of Pink

February 9, 2010

I recently read a great book Pink Brain, Blue Brain by Lise Eliot about the differences between boys and girls. Subtitled, “How Small Differences Grow Into Troublesome Gaps – And What We Can Do About It”, the book’s basic thesis is that there are some statistically significant biological differences between boys’ and girls’ brains but not so many nor as significant as is often made out. Rather, cultural influences act to magnify the differences that are there to make older boys and girls, and eventually men and women, quite different. Thus an initial biological seed can be reinforced by culture to produce a powerful effect.

For instance, according to Eliot, one of the most statistically significant differences between the sexes is toy preference – starting around their first birthday kids start identifying toys and “for girls” and “for boys” and by the time they’re three they, statistically speaking, strongly prefer to play with the toys that are “for” their sex. (Of course some kids cross the gender line regularly and most kids will occasionally. But it’s a strong effect; much stronger than the frequently touted differences in verbal or mechanical ability.) The development of these preferences seems to be neither completely hardwired nor completely cultural. But it is strong.

I experienced this first hand the other day when I went to buy my three-year-old daughter Amelia some roller skates at Target. The had three kinds, a set of “princess” skates in pink and purple and decorated with pictures of princesses, a set of purple Dora the Explorer skates, and finally a set of red skates modeled after the main character from the Pixar movie Cars. I suggested the Cars skates, since Amelia loved the movie and had been quite excited to see some Cars toys earlier on our trip through the store. But she immediately countered with a request for the Dora skates because “the Cars skates are for boys and these are for girls.” I tried for a bit to remind her how much she liked the movie but there was no changing her mind. And I didn’t want to linger too long lest she notice the truly ghastly princess skates.

On the other hand, there is still some wiggle room. Today I got a package of hand exercisers from Iron Mind, a company that makes serious strength training tools for hardcore muscle heads. These grippers, part of the “Captains of Crush” line, are knurled metal and the ones I got, which require 167.5 and 195 pounds of pressure to close, are only the middle of the line by difficulty. So serious manly exercise equipment, right? Not so fast. Along with the full-sized grippers, I also got a stubby gripper intended for exercising the thumb and one finger at a time, which is just about the right size to be a full-size gripper for Amelia. She was instantly drawn to it, trying to squeeze it closed with both hands. “I’m going to be the strongest kid in the world,” she said. “This is my princess gripper.”

I wonder if Iron Mind would consider making Captains of Crush in sparkly pink?