Sunday, February 28, 2010

The Beauty Of Abstract Thinking

I've been spending a lot of time in the past couple weeks on refactoring large sections of code. To some people this might be boring, or tedious, but to me it's possibly the best part of being a programmer, or at least tied with the other best part which is writing new code. I love poking around in conceptual musty back rooms, throwing up my hands in disgust, cursing a little, and then tearing it all apart and putting it back together again.

In case anyone reading this isn't familiar with the term, it's basically the same process as what any other discipline that produces written text would call editing -- going back over what's been written and adjusting it for accuracy and style. Except unlike other written output, program code is functional. It's a set of instructions being interpreted by a machine that is completely stupid, and completely unwilling to treat anything you write any way other than literally. This has some advantages. A naive system will, at least, always come to the same conclusion every time it reads the instructions, and every machine will interpret your words in the same way. But it also means that you have to be explicit about everything. Every detail has to be included, every time you need it.

I'm willing to bet that the majority of people who write for human consumption aren't really aware of how lucky they are to have an audience that isn't completely literal. A human reading a story or a set of instructions will bring an amazing amount of conceptual understanding to their side of the discussion, and interpret confusing or contradictory things properly using their own judgment. If you take a story, change a character from male to female, and miss one of the pronouns, any human reader might be a little confused, but will quickly realize what's going on and continue reading. Maybe a little irritated, but without a severely damaged understanding of what happened. A computer presented with the same situation will crash, and refuse to read past the confusing word.

Sunday, February 21, 2010

When You Know You're Right

I had a Sociology professor in college who described the breakdown between liberals and conservatives like this.

Liberals think things are broken, and want to fix it by finding new ways of doing things. Conservatives think things are broken, and want to fix it by going back to the way we used to do things.

Since I'm paraphrasing, poorly, there's an assumption that goes along with this statement which my clumsy version has failed to capture. The best way I can describe it is, conservatives tend to find an innate value in continuity -- something that's remained unchanged for a long time is thought to be better precisely because it has remained unchanged for a long time. Liberals, obviously, would fall on the other side of this distinction, finding little or no innate value in old habits just because they are old.

Sunday, February 14, 2010

Resisting The iPad

Remember when you were a kid, there was some toy that you just had to have. It was shiny and perfect, and you could only imagine the hours of finely sculpted joy you would have with it, if only you could buy it (or convince your parents to buy it for you). For me it was those little hand-held video games, the kind where it could only play one game because all the lcd segments were in pre-defined shapes rather than pixels. Then in high school it was a bulky, underpowered surplus laptop that was cheap enough for me to afford, but not powerful enough to run much of anything. Then in college it was a Palm Pilot, one of the old black and white ones that could sync to a computer and not much else.

The problem with all of them was that the reality never lived up to the expectation. The imagined joy instilled on whichever product was the object of my techno-lust was never founded in specifics, but rather a haze of half realized possibility fueled by colorful packaging and television commercials. I suspect everyone has something like this in their past, and that this feeling is not something unique to my own experience.

Which brings us to the latest in a long line of Over-Hyped Shiny Objects: the iPad. I will say one thing for Steve Jobs, he's damned good at making a sales pitch that instills this exact kind of unreasoning technological envy while making it look like he's doing the exact opposite. The announcement, streamed live on the front page of CNN (how they pulled that one off I have no idea), presented such a dizzying series of features and applications that it's hard to imagine there being any purpose the iPad couldn't fulfill. Don't worry about needing a reason to buy one, Steve just showed you fifty reasons; surely a couple will apply to you.

Sunday, February 7, 2010

So, You Want To Work In Programming?

Programmers and other engineers are going to put everyone else out of business. It's just a fact. At some point -- not next year, probably not next decade -- but at some point, a whole bunch of stuff is going to be written down in a repeatable form. Computers and machines will follow those instructions, and do work that could employ millions of people. Okay, that's already happened today, but so far we've found other productive things to replace those jobs. The someday scenario is the point at which we have few enough non-automation jobs and a large enough supply of non-automation people that society starts to notice.

That's still not clear, and it's because I'm working on a theory which I haven't stated yet, which goes something like this: As automation replaces an increasing number of jobs, the proportion of jobs actively involved in creating more automation will go up. Remember the graph from a couple posts back, with the pretty colors? In those terms, this means that the bell curve is going to squeeze in and become much more narrow, and the green portion is going to expand to fill most of it (if that makes no sense, check out the archives). In pop culture terms, this is the future we've been dreaming of for centuries, when machines will do all the menial junk that we don't want to do, and we can all become artists and scientists and dance in the meadows.

While this is usually painted as some kind of paradise, I'm not so convinced that this is going to turn out happily for everyone. It's a paradise for the people who want to be artists and scientists, sure, but there's another theory I have which I haven't really heard repeated much, and it's this: Some people just aren't cut out to work in automation. A world where being creative is the only thing a machine can't do for pennies on the dollar might be paradise for someone who likes being creative, but for someone who doesn't like it -- or worse, can't do it -- it sounds a lot more like hell.