Saturday, March 20, 2010

How to be a Programmer

Time and time again, I return to this classic essay by Robert L. Read.

Debugging is the cornerstone of being a programmer. The first meaning of the verb to debug is to remove errors, but the meaning that really matters is to see into the execution of a program by examining it. A programmer that cannot debug effectively is blind.

Idealists that think design, or analysis, or complexity theory, or whatnot, are more fundamental are not working programmers. The working programmer does not live in an ideal world. Even if you are perfect, your are surrounded by and must interact with code written by major software companies, organizations like GNU, and your colleagues. Most of this code is imperfect and imperfectly documented. Without the ability to gain visibility into the execution of this code the slightest bump will throw you permanently. Often this visibility can only be gained by experimentation, that is, debugging. 
 If you're an engineer, this is a must-read.   Related: this thread on Quora. And more quotes from the essay after the break.

Friday, March 19, 2010

Discover Information

You might have noticed that if you scroll down on this blog, a bar appears at the top. Go ahead, scroll down a bit now, I'll wait.

Cool, isn't it? It's means that I have Apture 2.0-beta installed on the blog. This is a way to discover more information. Gain more knowledge! It's also a way to share that information and knowledge with the world.

For example....
Now try this: highlight this word: Iran. (You can highlight a word by double-clicking on it, or by dragging the mouse over it). See that little thought-bubble that says "Search"?  Click it. (or hit Control-C)

Now you have a bunch of relevant links to information up to your right. Click on one, and a small box with that information appears. Now click on a few. Now you have a few windows of relevant information for the term (or phrase) in the page about which you wanted more knowledge and.or were curious about.

Information, knowledge, context, discovery
This is cool. So when I write all sorts of technobabble like "I'm skeptical about the value of designing systems in python using only object inheritance without also considering object composition", readers unfamiliar with the esoteric nomenclature of object-oriented programming can use Apture to quickly and easily learn more about wtf I'm talking about, and gain a greater context in which to understand the discussion.

You are not entitled to your opinion; you are entitled to your informed opinion. If you are not informed on the subject, then your opinion counts for nothing.
~ Harlan Ellison

I want it everywhere.
I've been using Apture 2.0 beta for a few days now, and I'm addicted to it. I want it on every page I visit, especially on those where I frequently find a term or subject with which I am unfamiliar.

So enjoy! And please let me know what you think.

Update: More information at our Apture blog.


Saturday, March 13, 2010

Brian Eno on context

Brian Eno discusses context by way of the analogy of how one listens to Miles Davis:

[from The Wire Dec./Jan. 1993] When you listen to Miles Davis, how much of what you hear is music, and how much is context? Another way of saying that is, 'What would you be hearing if you didn't know you were listening to Miles Davis?' I think of context as everything that isn't physically contained in the grooves of the record, and in his case that seems quite a lot. It includes your knowledge, first of all, that everyone else says he's great: that must modify the way you hear him. But it also includes a host of other strands: that he was a handsome and imposing man, a member of a romantic minority, that he played with Charlie Parker, that he spans generations, that he underwent various addictions, that he married Cicely Tyson, that he dressed well, that Jean-Luc Godard liked him, that he wore shades and was very cool, that he himself said little about his work, and so on. Surely all that affects how you hear him: I mean, could it possibly have felt the same if he'd been an overweight heating engineer from Oslo? When you listen to music, Aren't you also 'listening' to all the stuff around it, too? How important is that to the experience you' re having, and is it differently important with different musics, different artists?
Miles was an intelligent man, by all accounts, and must have become increasingly aware of the power of his personal charisma, especially in the later years as he watched his reputation grow over his declining trumpeting skills. Perhaps he said to himself: 'These people are hearing a lot more context than music, so perhaps I accept that I am now primarily a context maker. My art is not just what comes out of the end of my trumpet or appears on a record, but a larger experience which is intimately connected to who I appear to be, to my life and charisma, to the Miles Davis story." In that scenario, the 'music', the sonic bit, could end up being quite a small part of the whole experience. Developing the context- the package, the delivery system, the buzz, the spin, the story - might itself become the art. Like perfume...
Professional critics in particular find such suggestions objectionable. They have invested heavily in the idea that music itself offers intrinsic, objective, self contained criteria that allow you to make judgments of worthiness. In the pursuit of True Value and other things with capital letters, they reject as immoral the idea that an artist could be 'manipulative' in this way. It seems to them cynical: they want to believe: to be certain that this was The Truth, a pure expression of spirit wrought in sound. They want it to 'out there', 'real', but now they're getting the message that what its worth is sort of connected with how much they're prepared to take part in the fabrication of a story about it. Awful! To discover that you're actually a co-conspirator in the creation of value, caught in the act of make-believe. 'How can it be worth anything if I did it myself?'
I remember seeing a thing on TV years ago. An Indonesian shaman was treating sick people by apparently reaching into their bodies and pulling out bloody rags which he claimed were the cause of their disease. It all took place in dim light, in smoky huts, after intense incantations. A Western team filmed him with infrared cameras and, of course, were able to show that he was performing a conjuring trick. He wasn't taking anything out of their bodies after all. So he was a fake, no? Well, maybe-- but his patients kept getting better. He was healing by context-- making a psychological space where people somehow got themselves well. The rag was just a prop. Was Miles, with a trumpet as a prop, making a place where we, in our collective imaginations, could somehow have great musical experiences? I think so. Thanks, Miles, and thanks everyone else who took part, too.

Friday, March 05, 2010

Closing one door, opening another one

Today is my last day at Slide. After two-plus years of being a Slider, I resigned a couple of weeks ago to join the gang at Apture. While I'm sad to leave Slide, I'm excited to join Apture.

I'll be moving from a company of over 100 people to a company of around 10 people.

When I started at Slide, we were somewhere between 50-70 people, and each team within the company felt like a mini-startup. I worked wild hours and loved it, and had a lot of fun working with the brilliant people by whom I was surrounded. Literally surrounded: our office at the time was essentially one big room, and we were packed in like obsessive-compulsive python-chewing sardines. At one point I shared a cheap Ikea desk with a QA engineer's pet fish.

Slide is a bigger company now and, while still maintaining some of the "scappy little startup" atmosphere, has grown into the "now we're a real company" phase. And while I loved going to work every day, I began to yearn for the 5-10 person sized company.

I had no intention of leaving Slide so soon, and I won't be ready to start a company of my own again until I've slept for a month straight and taken a vacation in some sunny, gin-and-tonic laden locale. But after several serendipitous conversations with Tristan, Can, and Steven, I felt that we could "make good jazz" together (I'll explain what that means in a later post).

Slide was, and is, a great place to work. When the opportunity to work at Slide came to me in an email from Max, I drove from Los Angeles to San Francisco the next day. Within a week of signing the offer, I had packed almost everything from the home-office rental in Topanga (from where Paul and I launched several products including our reasonably successful Facebook app) to SoMa. I'll miss the place and the people at Slide.

I'm very excited to work with the team at Apture on an extremely cool-and-useful product, and once again with some very smart people. You can see some of our product in this blog-post, but I'm sure that the best is yet to come.

Monday, March 01, 2010

Programming as an objective art

Managing or working with any team of highly motivated, passionate and creative developers presents this problem, as a group: how can you objectively judge code while preserving the sense of ownership by the author?
The first step to objectively judging code in my opinion, is to separate it from the individual who wrote it when discussing the code. For a lot of people this is easier said than done, particularly for younger engineers like myself. Younger engineers tend to have "more to prove" and are thereby far more emotionally invested in the code that they write, while older engineers whether by experience or simply by having written more code than their younger counterparts are able to distance themselves emotionally more easily from the code that they write. Not to say older engineers aren't emotionally invested in their work, in my experience they typically are, it's just a matter being better at picking battles.