Sunday, June 29, 2008

Archaeopteryx: On GitHub

Finally got on the bandwagon. Archaeopteryx now lives on GitHub.

Friday, June 27, 2008

Thursday, June 26, 2008

The Future Of User Interface

We'll get chocolate in our peanut butter.

Time To Be Tough On Crime - Especially War Crimes

Wednesday, June 25, 2008

Robot Rock, And Robots Rocking

Fear And Loathing At RailsConf

Chad Fowler wrote a great book.

And then said some strange things:

Photo by James Duncan Davidson

They're both reasonable things to say, it was just really weird to hear them combined like that.

Chad also did a little video interview with Gregg Pollack from Rails Envy. Take a second and check it out:

In it Chad says that the Ruby community has a good tradition of weird because for years this wasn't something you could get a day job doing. Today it is. Keeping the weirdness that flourished during that time is hard.

He also says "a lot of people" have complained about RubyConf being on a weekend.

Problem is, to my knowledge only one person has complained about that. It may be a lot of people via personal e-mail to Chad. Out on the world of the Web, as far as I've seen, it's just one person, and that person is Tim Bray. I don't ever listen to anything Tim Bray says, whether to agree or disagree, but if other people find him relevant, then by all means listen. But only give him one vote, because one person gets one vote.

This subtle falseness in Chad's reasoning led me to see another subtle falseness as well. He says the Ruby community has a good tradition of weirdness because for years this wasn't something you could get a day job doing. What if the Ruby community has a good tradition of weirdness, and it used to be that this wasn't something you could get a day job doing?

It makes a difference. "Because" means the weirdness is doomed to die out sooner or later. "And" means the popularity of Rails is victory and vindication for the weird - a sign of greater weird yet to come.

Let's make another subtle change.

What if the Ruby community has a tradition of weirdness, and it used to be that this wasn't something many people could get a day job doing?

This would be the historically accurate version. Ruby's obscurity didn't prevent Jamis Buck or DHH from getting day jobs with it. This would also be the version which doesn't conflate correlation with causation.

Chad's reasoning contains historical inaccuracies and a classic logical fallacy; he also confused the voice of one individual with the voice of the Ruby community. I believe the jury will find him guilty on three different counts of being wrong.

Seriously, I think Chad's heart is in the right place, and his goal is a valid goal.

How can we achieve it?

Or let's make yet another subtle change. Let's take off the "how." Can we achieve it? Is it even possible?

One way to find the answer to a question is to flip it inside-out. Instead of asking "can we keep RailsConf weird?", let's ask "will weird keep RailsConf?" If we do that, we know Chad's worthy goal won't happen. Weird has already rejected RailsConf. Virtually every open-source conference spawns a RejectConf, but RailsConf is unique in that it's spawned three - RejectConf itself, CabooseConf, and RubyFringe.

Elvis has left the building.

Each successive anti-RailsConf moves physically further away. RejectConf happened within RailsConf itself; CabooseConf happened in a different building in the same city; RubyFringe will happen in a different building, in a different city, in a different country.

Meanwhile, rumor has it Chad announced RailsConf will be in Las Vegas next year - moving from a city filled with strippers, plus the world's best tech bookstore, to a city filled with strippers, plus gambling. Again, I'm not saying you can't keep things weird by making this tradeoff. I'm just saying it's the hard way. It kinda seems like they got rid of something worth keeping.

Besides, we have so much Silicon Valley at RailsConf, we might already have all the gamblers we could possibly need.

In 2006, I asked on the Rails list who the interesting VC startups using Rails were, and people made fun of me for putting the words "interesting" and "VC" next to each other. One of the big rallying points for the Rails community before the VCs came was that Rails was a framework drawn out of real success in independent small business. Hackers who ran their own businesses knew what could really work; VCs were just schmucks rolling dice.

Taking this too seriously would be a mistake. But still, for Vegas to be an in-joke in 2006 and a headquarters in 2009 seems like a rapid and dramatic change. I think some people feel betrayed and insulted by this change.

It really seems a bit messed up. Here's DHH, telling us that it's important to take the surplus Rails provides, in terms of productivity, and not misuse it wastefully - his specific example being hookers and fur coats - but instead invest in ourselves, learning to whittle spoons out of oak and becoming wiser human beings. DHH is saying, "No hookers! Choose a life well-lived!" And RailsConf is like, "Screw Portland! We're going to Vegas!"

I like the dry Vegas climate much more than the soggy Portland climate. I always catch colds in Portland, and this time around I caught an epic fail case of laryngitis. But I like Portland the city much more than Vegas the city. Of course to be fair, I know Portland better than Vegas. I've only ever driven through Vegas, and when I could I drove around it instead. I fear Vegas. I can imagine what Vegas would do to me, because I know what Vegas did to Elvis, and I know what Vegas did to Hunter S. Thompson too.

Vegas is so hostile to weirdness it is literally a matter of legend. Fear And Loathing In Las Vegas is the biggest "here be dragonnes" sign that a truly weird person ever built to warn away other truly weird people, ever, in the entire history of human weirdness. "We need to keep RailsConf weird; let's all go to Vegas" is true epic fail, especially when healthy environments for weird already exist.

I go to lots of conferences, both the big, national ones, and the little, regional ones. Weird is doing just fine at those smaller conferences. One of the engines driving these regional conferences is the grants program from RubyCentral, an org Chad founded which drives both RailsConf and RubyConf.

This is the ironic part. Keeping RailsConf weird is unlikely, but keeping weird alive and well in the larger Ruby community is already happening, and Chad's part of the reason why. Chad is at least breaking even here, because as 100% fail as this Vegas thing is, RubyCentral's effort to preserve weird in regional conferences is all win. Its funding assistance encourages the regionals to each develop their own unique feel, and unique local culture is the real engine that powers weird.

For instance, GoRuCo hired a local graffiti artist to hand-draw its lanyards. I don't know if they had an assist from RubyCentral, but I do know that kind of weird is much easier with 150 people than with 1,500. It'd take some serious effort to create 1,500 unique graffiti nametags by hand.

I can say something similar with absolute confidence, because it's tautological: if I ever put together a regional conference, weird will have a home there. Whether a good thing or a bad thing, nobody has ever asked the question, "How can we keep Giles weird?"

It just doesn't seem to come up.

I think we can probably have the same confidence about the general Ruby community. As far as RailsConf, though, probably not. The crazy ones inevitably talk about different things than normal people do, and a conference which could accomodate both the exception and the norm would be a remarkable, improbable thing.

Which brings me to the solution. I think Chad should give up this idea of keeping RailsConf weird. Weird isn't keeping RailsConf either way, so he might as well quit breaking even and aim for pure profit. There's all this thorough and complete wrongness when it comes to RailsConf. There's a worthwhile goal and success achieving that goal elsewhere. And there's the fact that people enjoy RailsConf as is. The logical conclusion is the goal doesn't fit the context, and trying for it involves all kinds of struggle. There are times when struggle is worth it.

There are times when struggle is not.

The real reason the Ruby community had tons of weird when it was small hasn't got a thing to do with the money involved. Unique local culture powers the development of weird, and in a sense, the early Ruby community was a unique local culture - just local to a language rather than to a place. Rails is mainstream, or at least RailsConf is, because only the mainstream has to expend effort just to stay weird. Small Ruby conferences will keep weirding weirder and weirder, but that's not RailsConf's role in the ecosystem. The forces pushing RailsConf to Vegas aren't the forces of weird but the forces of normal - the Sandpaper of Averageness and the Nyquil of Safety. These are powerful demons; if we wrestle them, we'll probably lose. Sometimes you just have to accept that things are the way they are.

However, if you really want to keep RailsConf weird, it's not hard to do at all. It's the easiest thing in the world.

It wouldn't hurt to fire O'Reilly, either. O'Reilly organizes RailsConf almost identically to the way it organizes OSCON - multiple sessions, multiple rooms, the same security, the same registration process, etc., etc. But RailsConf's sessions seem to happen entirely randomly, separated from one another with no readily apparent logic. OSCON is a gathering of the tribes, with distinct, very explicitly articulated tracks for nearly every open source phenomenon under the sun.

Because people come to OSCON with their tribal affiliations already in place, OSCON is actually a much better gathering place for weird than RailsConf is. The predetermined tribes localize things to an extent, which in turn incubates a certain amount of weirdness. But these predetermined tribes don't exist at RailsConf, and there's no way RailsConf will ever get weird without them - and yes, the truth is RailsConf doesn't need to keep weird, it needs to get weird.

More to the point, RailsConf's schedule will never make any sense unless it develops some kind of unifying theme. O'Reilly applied the OSCON template to RailsConf without bothering to notice the absence of the circumstances which make OSCON's template work in the first place. It's cargo cult conference planning.

If RailsConf had tracks the way OSCON has tracks, you might get a certain amount of implicit tribalism, and this might give you an incubator for weird. Picture a scaling track, a newbies track, a wizards track, and a track for related non-Rails tech like Merb, DataMapper, jQuery, and Erlang. Suddenly you've got several small, highly specific worlds - unique local cultures, local to an interest rather than an area. Suddenly you have a context where weird can happen.

So maybe I'm wrong. Maybe RailsConf will stay weird. After all, even the Dead Kennedys love Las Vegas.

Update: Rick Olson corrects me; CabooseConf will be in Vegas too.


True Horror Story: RealDoll For Furries

This is one of the weirdest things I've ever seen:

It's beautiful that niche markets like this can flourish, and yet I can't call this beautiful in itself. It's this weird combination of banality and deep strangeness. It's scary but not much.

But this one is flat-out terrifying:

I'm going to have some nightmares about that. No doubt.

Tuesday, June 24, 2008

How I Got Started Programming

Tagged by Jim Weirich.

How old were you when you started programming?

I was 11. My dad, a gadget freak, bought the first computer on the block. He used it to do spreadsheets for his business. It was an Apple II.

I had a lot of fun with this, so my dad took me to a programming class. I learned BASIC on a TRS-80 with a tape drive.

How did you get started in programming?

The programming thing went dormant for years. When I was 19, I dropped out of college. I got an insurance settlement for a car accident when I'd been sixteen. My parents told me to use the money for college. I swore I would, and instead moved to a dangerous neighborhood in Chicago where the rent was low. My money lasted me there for quite some time, but eventually I had to get a job. Prior to getting a job, I spent months if not years writing bad screenplays and making pretty good music. (I no longer have copies of either.)

When I eventually had to start working again, I didn't want to get a real job. I was too hooked on my freedom. I also had no faith that I actually could - all my friends were finishing up college, and I had no degree. My parents are English, and in England exceptionally smart people go to great schools for free. People in America told them, oh yeah, we have that here, and probably believed it, so my parents hadn't saved the requisite gazillions of dollars for an American college education, and consequently I was hosed.

(In my parents' defense, they swear that Rice offered me a full scholarship, but I said I didn't want to go to Texas. This might be true. I don't know. I have no memory of it, but to be honest, it sounds like the kind of thing that I would do.)

So I did a bunch of office temping, and it sucked, but it worked really well in terms of giving me long stretches where I could write and make music without having to go to work. The cool thing about office temping is it seems like big money when you're really young and your rent is pretty cheap. Eventually it wasn't enough money, though, so I started doing Photoshop and Illustrator temping, and on one of those jobs, somebody asked me if I knew HTML.

And I did, because I was an internet junkie by that point. It was 1994 or thereabouts, and the internet was this amazing strange thing nobody had ever heard of. I was reading bOING bOING, the original paper zine, I had written tiny snippets for Wired and Schwa, and I had started doing HTML. I had a weird, dorky web site, my posts on alt.adjective.noun.verb.verb.verb were showing up on, I was into it.

I didn't have any experience, though, so to fix that I convinced the great graphic designer Carlos Segura to let me build a web site for his font foundry [T-26], but my follow-through was utter fail. I didn't have the software to do any real design, or the money to obtain it, or the friends to "borrow" it from, or the hacker skills to steal it. Also at the time I didn't really have the art skills to do anything with the software if I'd gotten it.

Anyway, stumbles aside, HTML freelancing worked well, so I got a book on Perl and learned Perl, and got a book on Java but totally failed to get it at all. My internet friends told me San Francisco was the place to be for HTML and Perl work, so I moved there in 1997. I got more work than I could handle, quickly graduated to just Perl, and within a very short space of time made a bunch of money as a tech contractor.

I was still doing temping, essentially, but for a much higher rate.

What was your first language?

Either BASIC, or Pascal, or Perl. In between Perl and BASIC, I learned Pascal. I took a boring summer job as a teenager, assisting union guys who really didn't work very hard or need assistants. The guy I was assisting took long naps of several hours per day, during which I was supposed to just chill and do nothing. This drove me crazy with boredom, but the job paid really well by teenage standards, so I borrowed a friend's book on Pascal and read it. I even wrote "programs" in a little notebook I brought with me, solving the programming problems at the end of each chapter.

I never found out if any of that code actually ran. The reason I did it is my big hobby at the time was reading Ancient Greek, and reading Ancient Greek requires at least three books and a notebook - the notebook for your translation, the book you're reading, the Liddell-Scott lexicon, and a verbs dictionary which also provided the dialect-oriented info that Liddell-Scott always left out. Yes, my big hobby as a teenager. Not exactly a party animal.

I couldn't take these with me to work, because the Liddell-Scott lexicon is the size of an ottoman, and people would have noticed it in my backpack. I figured a paperback on a programming language was close enough.

What was the first real program you wrote?


The runner-up would be a publishing system I built for E*Trade. I came on to keep a system alive and rewrote it from the ground up, learning OO along the way. The system solved an office politics problem; this was intentional. If you're in your early 20s and you tell CEOs they fucked up their org chart, you'll never get anywhere, but if you just build a tool which requires a certain structure of social interaction, you can fix the problem the CEO caused without anyone ever seeing you do it. Designing social software is as much about social engineering as anything else.

What languages have you used since you started programming?

Perl, JavaScript, Java, Python, Ruby, PHP, HTML, CSS, Common Lisp, Scheme, Erlang, Haskell, Squeak/Smalltalk, Processing, Supercollider, ActionScript, and BASIC. I'm only skilled in a small subset of these. There are probably more I've played with, though.

What was your first professional programming gig?

I don't remember. My resume says I've worked for over 30 companies, but that's actually not counting my career before I moved to San Francisco. When I was doing first office temping and then freelance Photoshop, HTML, and Perl in Chicago, that probably adds another 20 or more into the mix.

If there is one thing you learned along the way that you would tell new developers, what would it be?

Programming can do anything. You've got to pay the bills, but don't let the world tell you where programming happens. Programming is a how, not a what. In 2008 anything can be automated. You can have a machine running Ruby built into your car.


Make no little plans. They have no magic to stir men’s blood and probably themselves will not be realized. Make big plans; aim high in hope and work, remembering that a noble, logical diagram once recorded will never die, but long after we are gone will be a living thing, asserting itself with ever-growing insistency. Remember that our sons and grandsons are going to do things that would stagger us. Let your watchword be order and your beacon beauty. Think big.

Daniel Burnham, Chicago architect. (1864-1912)

What’s the most fun you’ve ever had… programming?


The runner-up would be discovering Rails.

Who’s up next?

Paul Dix.
Ramon Leon.
Amy Hoy.
Pat Maddox.
Ben Bleything.
Eric Trebuchet.

Monday, June 23, 2008

Worst News Ever: George Carlin, RIP

Archaeopteryx: First-Ever Artificial Intelligence Jungle Remix

Although the dynamics, pacing, structure, and rhythmic choices are very off, this video, which demonstrates that Archaeopteryx can synch its original Ruby-generated drum rhythms to MP3 playback, also technically qualifies as the first time an artificial intelligence has co-produced a jungle remix.

Sunday, June 22, 2008

Days Before The Angry Sky

The Iowa floodlands. There's nothing out there but alligators, mosquitos, and wild pigs. They had stilthouses for a while but they couldn't protect them from raiders or the weather. Too far from the major strongholds. We hacked into one of the ancient satellites. Hard to get a clear signal but easy to grok the data. It's the weirdest thing. There are these networks of flat white, they look like spaghetti or a drunk spiderweb. Outside the cities, the domes, and the little regional fortresses, the roads all fade out into this ancient highway system. It's like that all over the continent. This country, the next, even Los Estados Tejanos, as far west as the coastal swamps in Arizona. Flat slabs of concrete, miles of them. In Iowa the alligators lie on them to sunbathe, like rocks.

They must have been incredibly peace-loving people back then. Imagine getting two county governors to build a road together. These roads they literally span hundreds of counties. Hundreds. They must have all been on some kind of love pills or something. Or maybe just weak. Presidents don't go around telling each other the entry points to their road systems. Might as well announce where the core infrastructure for the domes and tunnels are located. Next thing you know a raiding party steals your copper and your gasoline, then your people die left and right when the tornadoes come.

In the mountains there are tribes of hippies living wild. They worship heathen gods and tell each other stories of the days before the angry sky. We had one captive, a slave. She told me some of their myths. Once the land was clean and the weather peaceful; her people tried to stop the coming of the storms, but our people wouldn't listen. They had the prophets, we ruled the land with an iron fist, blah blah blah. Superstitious, barely even rational. Ganja voodoo. She was surprised the first time she ate with us, because her mother had told her we all had forked tongues.

The hippies nurse these legends like a grudge or a drink. In a way they're both. They get high on the messiah complex, and it keeps their resentment strong against us. They probably need it. It's a hard life out there with their turbines and their yurts, hiding in the caves from the wind, always looking over your shoulder in danger of being eaten by a streaked bear.

It's good being a tech. We can't marry or own property, but we're protected. Allegedly we're celibate, in practice it's a whole different story.

She cries, especially when the rains come, but she's a woman and a savage. She doesn't know any better. That raiding party did her the biggest favor she'll ever see in her life. She'll live longer here than she would out there, and when she finally comes round and accepts the Lord, she'll have a place in Heaven.

Thursday, June 19, 2008

God's Gift To Griefers: Portable EMP

When a griefer goes to heaven, God gives him one of these:

We bought the Electro Magnetic Pulse technology and had a leading lab downsize the design so that the same technology used to bring down a missile can now be yours to ‘cook’ the circuitry in a cell phone. One touch of a button sends out a powerful elecro-magnetic pulse wave that fries the circuitry in a cell phone instantly.

And then the griefer goes to an infinitely large version of WWDC, packed with nothing but iPhone fanboys.

Fortunately, I think this might be a hoax; the purchase page says it requires a flux capacitor. Also, of course, griefers never get into heaven.

Tuesday, June 17, 2008

Tim Robbins Directs 1984

If you're in Los Angeles, check it out. (Related to my Crucible idea, but with experience to back it up.)

The Diamond Age Begins

Arthur C. Clarke wrote about this in 2061.

I Filter Cory Doctorow So You Don't Have To

In the past I've complained that, when it comes to Cory Doctorow, you have to filter through a lot of randomness about Disney's parking lot in order to get to the good stuff. Spare yourself that agony and just skip to the good stuff.

Darth Giles

I didn't speak at RailsConf, but I did get an interesting cameo.

This slide comes from Ogtastic's presentation.

Monday, June 16, 2008

Governments Really Don't Understand Legacy Hardware

Thousands of nukes wired to extremely old computers. Landmines buried throughout the world. Governments everywhere building military robots.

Sooner or later the whole world is going to find out all the things about legacy systems that programmers already know.

How can we warn them? How can we prevent them from doing what it's obvious they're going to do?

The next time somebody tries to get you into some argument about Programming Language X vs. Programming Language Y, skip the whole question and spend some time on this one instead. It's a harder question, and answering it will make a bigger difference to a larger number of people.

Sunday, June 15, 2008

Why I Need More Ducats

Saturday, June 14, 2008


Web video will not replace movies. The mammals did not take over from the dinosaurs until the comet hit. Before that point, they co-existed. Similarly, Getting Real will not replace the VC system, unless a comet hits (which, from the state of our economy, is possible).

Friday, June 13, 2008

Music Tech: Gizmodo Links

Homemade Tupperware synths

Tenori-On synth UX experiment

UCLA student project: robot DJ creates semi-user-generated playlist

Cool-looking synth with round UI

Female Programmers: Read This Book

In high school, I knew a girl called Sarah. I'm fairly certain that some of our classmates considered the discussion class we shared to be The Giles And Sarah Argue Show (and I'm equally certain they got pretty bored of it pretty fast). We co-founded the first (and probably only) high school chapter of the ACLU together. We competed for the Editor-in-Chief spot at our high school arts magazine, and she won. I asked her to the prom, and she dissed me. Sarah was nominated for the Pulitzer a couple years ago. I have a popular programming blog.

In high school, Sarah told me to read this book, and let me borrow it. It's a damn good book. I use this Foo: Bar naming scheme to mean things like Topic: Subtopic, so I recommend the book whether you're female or not. "Female Programmers: Read This Book" doesn't mean "female programmers should read this book" - it means people interested in that topic should read this book. Some female programmers aren't interested in the topic of female programmers; some male programmers are. Female project managers might be interested too, or male ones.

Long story short, good book.

You Just Don't Understand gives a survey of gender roles shaping linguistics, which is to say, the different ways men and women in America use the same language.

At my current project, one of the reasons I'm here is to answer questions, provide training, and generally enlighten people about Ruby. Many people at my project are new to Ruby and Rails; virtually the only people who take me up on this enlightening and edifying whatnot are women. You Just Don't Understand likens this to the mystery of men who never ask for directions (I am one of those men) by analyzing status transactions, which is to say, the real-time actions and evolutions of various subliminal pecking orders. Asking for help generally causes a loss of status for men, and generally does not for women. If this company didn't employ female programmers, I'm pretty confident nobody would ask for help at all.

The pitfall here, of course, is that none of this is conscious or intentional. In a generally male-dominated profession, male social rules generally carry the day. Say for the sake of argument you've got a female programmer who is generally smarter and more productive than a male programmer, but this female programmer knows less about Language X and Framework Y than this male programmer. Female programmer asks for help, male programmer completes the status transaction and asserts status over female programmer.

What happens? If the status assertion is successful the bad male programmer asserts a pattern of authority over the good female programmer. Say this happens every single time they interact: in every design decision, the male prevails and the female is trumped. Pretty soon bad code forces out good and whatever they're working on is totally screwed.

In real life of course it's never that black and white. Also, obviously, this kind of situation never happens with me; whenever a female programmer asks me for advice, I interact with perfect fairness, and it's a non-issue with me anyway, because I'm better than every other programmer on the planet, male or female, so this problem could never happen with me in the first place. But I'm a special case. For other, lesser beings - mortals and Java programmers, for instance - this type of thing happens all the freaking time.

Most people don't even notice when they're doing it.

Geeks are famous for their social ineptitude; people in Silicon Valley even brag about having Asperger's. (Bragging about having Asperger's means bragging about a medical problem, but Silicon Valley is a place with unusual priorities, many of which are not good for technology at all.)

If obliviousness to social niceties is something to brag about in the more twisted corners of the geek culture, this means that a loss of information which happens due to inadequate subtlety in social skills will happen constantly among geeks. This is indeed the case. Geeks hemmorhage this information at every turn. In my example, the female programmer was less knowledgeable about a particular skill, but the reality is, this sometimes happens even when the female programmer is more knowledgeable, because of these differences in communication styles. It's well-known that girls in all-girls schools outperform girls from coed schools at math and science.

"You get to be yourself," said 13-year-old Adela Sanchez, taking a break from a robotics experiment using Legos. "When you're in a school with guys, you worry about what guys think."

Consider that in comparison with the Barbie doll that used to complain it couldn't understand math.

The easy way out is to say, hey, so there aren't that many female programmers; no big loss. There are plenty of other jobs out there. But it is a huge loss. It is the biggest fucking deal in the world if you happen to know what being a programmer really is. Nearly everybody out there thinks that being a programmer is a what. They're all wrong. Being a programmer is a how. Technical literacy is as vital as any other kind of literacy, and to say it's no big deal if huge sections of the population are illiterate is to doom yourself to a society dominated by ignorant decision-making.

There are two problems here: one is easy and the other is hard. The first is how do we teach girls to program; the second is how do we teach all girls to program. You can teach any girl technical literacy just by putting her in a good school with no boys. Get little girls pair-programming with each other from an early age and the geek culture will mean nothing to them; they'll eat it for breakfast like a stack of pancakes. The hard part is making that solution universal. American education is so radically diverse in its standards of quality that it's created a class system in a society that used to hold its classlessness as its greatest virtue. I don't have the faintest idea how to solve that one, but the first one is easy, and everybody who can make it happen should.