A collection of articles, ideas, and rambling from a guy who wrote some software that one time.

Saturday, July 31, 2004

A Note of Thanks

I forgot to mention, in my OSCon wrap-up entry, the defining moment of the conference for me.

I gave a very, very brief lightning talk just to sing Python's praises as a stable platform for building services on top of. I figured I should say something, since I am sure that at least a few people expected me to. I didn't know many of the people in the conference though, so when I stood up I was surprised at the response:

I stood up in front of the audience and said "Hi, I'm glyph, and I wrote a package called Twisted..." and at this point in my speech I was interrupted by applause from nearly half the room. Best of all, I looked at the faces of the people applauding and I couldn't recognize almost any of them. Thanks to everyone who clapped - you've encouraged me to spend some more time maintaining it.

But do write me some email and tell me how you're using it, would you? :)

OSCON Wrap-Up

I was trying to blog this conference without too much name-dropping.

At this point, though, I find that pretty hard. I attended very few sessions, and I'm glad of it. The sessions weren't bad, but at my current level of community involvement there isn't too much for me to learn.

The real usefulness of the conference for me was that I met a bunch of people in the community that I really respect and got to talk to them about issues important to me. Although some of this was rather dry and technical, it was a deeply satisfying experience, especially when I realized that many of these luminaries really respect my opinion as an accomplished developer myself and as a knowledgeable user of their software. Since I only have positive things to say I guess I can blog pretty much all of it. Let me start off with my family.

Those of you in the community may find the expansive explanations unnecessary, but I will provide context for each name so that those whose involvement is more peripheral will know why I'm so excited.

I went to OSCON with my father, Robert "the r0ml" Lefkowitz, a headlining keynote speaker this year, my stepmother Gina DeFelice, a circus arts teacher (more on this later) and my sister Kimberly Lefkowitz, a physics student who has just been getting started in the open source community with the Boinc project being used on Einstein @Home.

r0ml's keynote was awesome, if I do say so myself. Though he probably had at least 5 keynotes rattling around in there struggling to get out - he only got 2/3 of the way through the slides that he had, and the talk had been cut significantly already.

Since everyone has been asking: Yes, Guido, being a good sport, did offer to spare Dan from the pie-thon. Dan, also a class act, baked the pies himself, and so Guido decided to share the pie with the community, and it was eaten. I am proud to have carried one of these Pies of Peace to the room where they were, after all, not thrown.

However, after the Pythons were placated, the Perl community was still out for blood - delicious, banana-creme flavored blood. They (the Perl foundation) auctioned off a second pie-ing, in addition to the original Guido pie-ing, at a $500 opening bid. It sold for, if I was told correctly, $514. As the blood-thirst's description implied, they did not use a nice, baked Key Lime pie as would have been preferable. Morever, despite her circus experience, nobody asked Gina how to properly stage the pie-ing. I hope that future circus antics will be more expertly choreographed.

Yes, I do have pictures.

I spoke to Jeff Waugh about evil and insidious plans for world takeover, which I am very excited and can say basically nothing about. Thanks, Andrew, for hooking that meeting up.

I got a moment to speak with Doc Searls, the illustrious blogger and writer for Linux Journal, and give him a basic Divmod pitch and tell him how great Linux has been for us. If I'm lucky, my quote might get into the next issue...

I briefly met Miguel de Icaza - original author of the Ximian division of Novell, and, apparently, a happy user of Twisted. He lives in my area so you might be hearing about future meetings between us sometime soon.

I also met, equally briefly, Tim O'Reilly, who unfortunately does not live on the same coast. I like to think I piqued his interest about Divmod, but we shall see if I receive email about it. A very friendly guy though.

I spoke to Dan Sugalski, author of Parrot, and gave him a few use-cases for the virtual machine and restricted execution system. He is a really energetic and fun guy to talk to. Our meeting lasted hours and was still too brief - luckily he happens to live almost dead center on the road between my apartment and my family's house.

After frightening Jim Hugunin, author of IronPython, I made sure that it wouldn't be too hard to write a Twisted reactor for Python on the CLR. Somebody out there - get started on that.

The most connected person to us at the conference was Rael Dornfest, who is according to his business card the CTO of O'Reilly Media - referred Amir through a writer friend of his, me through a writer friend of mine, and both of us through my father. We had a good time talking about the future voice-over-IP applications that Divmod's platform is going to enable.

I spoke to Alex Martelli, author of Python in a Nutshell and editor of the Python Cookbook. He reminded me that the world does, in fact, need a Twisted book, a reminder for which I am very grateful. I think that as a result of this conversation a moribund book project may be restarted, and another might come into the works. Time will tell.

I got to give a full-fledged Divmod sales pitch to Manish Singh AKA Yosh, of the Gimp project, who was a remarkably good sport about it.

I spoke to Ted Leung & Brian Kirsch from OSAF, and got to compare and contrast the Quotient and Chandler architectures. We've done a lot of similar work. It was interesting especially to hear about their development on the GUI front, where we have been experimenting with a few different frameworks. I hadn't used WxWindows for quite a while, because it seemed pretty gross on the UNIX side the last time I touched it, and the API for constructing widgets was rather tedious. Partly as a result of pressure from OSAF, all that has changed.

As a result, I spoke with Robin Dunn, author of wxPython, and learned of the last missing piece in this puzzle, WxGlade. Kevin Altis also showed me a demo of a very snazzy-looking PythonCard, which is based on wxPython, running on OS X. Especially since Robin seemed interested in exposing some better hooks for faster, more reliable Twisted reactor integration on UNIX, I predict I will have more nice things to say about wxPython soon.

I was also very happy to meet Chris DiBona, who sold me some awesome hardware at a steep discount for being a "cool open-source guy" back in the days when VA Software was still VA Research and making dream machines for geeks, and Imagination was still Reality Pencil, and you could actually use it for making games. We had an interesting discussion of linux distributions. To my pleasant surprise, he actually vaguely remembered my call all those years ago!

Finally, I met the angry economist, and enjoyed a few drinks and discussing (among other things) economics with him. I am going to have to disclose his secret: he's not actually very angry. In fact he was pretty nice.

I'm sorry if you're not on this list, and I am sure I forgot a few important people, but I was being whisked from meeting to meal to meeting to session to meeting to keynote for the whole conference, and I didn't have any chance to take notes. It's also pretty dang late and I have a flight to catch tomorrow.

If you spoke to me at the conference and I haven't given you one already, please drop me an email and ask for a Divmod beta-test ticket; we still haven't raised the price from the previous discount but we are planning to as soon as we can open signup further, so take advantage of it now! I'm really hoping that much of our first wave of customers are open-source hackers who can give us some really detailed bug reports and help us to produce an extremely high-quality experience.

Friday, July 30, 2004

OSCON: Day 2

Today I met with lots of interesting people again. Personalities from the Chandler project, O'Reilly, Linux Journal, Ximian, the Perl community, the Parrot project and various other industries and companies. I hope to spend some more time with them tomorrow.

I attended two sessions today: the Python lightning talks, and Dan Sugalski's "parrot in the real world" talk. He's really doing some interesting legacy-system support with it: something that open source folks frequently don't address very well.

I find myself in the enviable position of people I respect knowing of my personal achievements, my company, and my father. While less useful technically than PyCon, this conference has been a lot of fun so far.

I'm looking forward to the last day. I have some pictures, which I hope to post tomorrow.

Wednesday, July 28, 2004

OSCON: Day 1

I saw Tim O'Reilly's keynote speech. He mentioned a bunch of things that were similar to Divmod's goals: smart address book, data portability, etc.

I saw r0ml's keynote speech. It was brilliant.

That was the last of the sessions I attended though, the rest of the day was all talking to people.

I met with Jeff Waugh of No Name Yet, and discussed some opportunities for collaboration between his company and mine. No concrete plans yet, but we're clearly companies with aligned philosophies, and not really any product overlap, so I think it's likely we'll do something. He also introduced me to Havoc Pennington of Red Hat.

I embarrassed myself by introducing myself to Yosh and a few other Gimp folks, thinking he was someone else, and casually mentioning that I'd been banned from #gimp a few times (by Yosh). All was well, though, and I got to pitch Divmod a little bit.

IronPython was released today. I missed the announcement but did get to thank Jim Hugunin, which appeared to frighten him.

Finally I met with as planned, and I had a hamburger. Then we added ezmlm mailing list filtering to Quotient (I believe). That's service for you: if Divmod doesn't do what you need, a developer will come to your home town and sit down with you and write it right there. :-)

Now I am getting ready to go to sleep. See you tomorrow.

Sunday, July 25, 2004

where flap the tatters of the symlink

As soon as I got to New York, my sister's laptop immediately died. Why is it that wherever I go, problems follow me?

Has anyone ever had /etc spontaneously disappear, on a mac? /private/etc stayed in-tact, but /etc disappeared. It seems something else has gone wrong too, since at the phase of boot where you're supposed to see a big grey apple, instead we see a big grey universal "No" sign. (Circle with a slash through it.)

reflect, repent, reinstall

Friday, July 23, 2004

I almost forgot. I'm going to OSCON.

By the way, I'm going to be at the O'Reilly Open Source Convention 2004 in Portland next week. I'm arriving Tuesday evening.

If anyone in the area (and you know who you are, for example you are ) would like to meet while I'm at the con, please add comments to this entry. I believe that the exhibit hall registration is free, so you can come down and have a look at some potentially amusing advertising while you're at it.

I would also appreciate it if you would post comments about groups that I should seek out and attempt to talk to for some reason for integration with the Twisted, Atop, Nevow, Quotient, etc, etc, etc. Double points if you're actually from that project, and triple points if you're the one who will meet me at the conference yourself. If you know someone interesting I should talk to, please refer them to this entry and encourage them to comment.

Advice about what to look for at the conference is also appreciated. I have no idea what I want to do when I get there other than watch the madman who built me rant and rave and look for interesting people to talk to.

Seriously though, I would offer that last as advice for you, the reader: I highly recommend going to the aforementioned madman's keynote. He's an impressive speaker with a stellar list of references and a lot of interesting things to say. He has an uncanny knack for looking at an issue in a completely alien and enlightening way. If you enjoyed seeing me speak at PyCon or the paper I co-wrote for USENIX, imagine somebody similar who's had 20 years more practice.

So with that, comment away! I hope to see you all soon.

wolFdellaCetatSlatneM

Overtime makes programmers less productive.

You have to be in the right mood, called "flow" by many, to be a good programmer. Different hackers can get into and out of this state more or less easily, and it is a large part of what determines their quality. When this blog was just a simple paper journal and not a multi-billion dollar media empire *, I spilled huge bottles of ink on wondering what the magic formula for instantly dropping into flow was. I've talked about it a lot with my friends in the years since then.

As the Tao and most physics teaches us, though, any powerful force has an equally powerful opposite. So it is with Flow, and I have experienced it: the Anti-Flow.

There's a lot of hacker mythology about working late into the night, eyes glazed over, blissfully hacking away on some deep problem, unaware of the outside world. It is generally acknowledged that this is a state of Being At One With The Machine. I believe that this is a false enlightenment. After this last round of crunch time, I have realized its true nature. After a certain number of hours of working, you think you're in flow. It seems as though everything is going well. What's really happening is that your mind is playing tricks on you: you're tired, you're making mistakes, but you're just not seeing them.

I think this is why the first programming methodology to get really bothered about programmer-written tests was also the first one to start complaining loudly that we should stick to a forty hour week. When you're just writing and writing and writing code, it doesn't occur to you that you're producing garbage, or if not garbage, at least substantially lower-quality code than usual. You hit your testing phase later, and you fix your bugs, and you shrug and think "that's software for you". It seems like you're productive on both ends, since you're producing lots of code when you're tired and you're fixing lots of bugs when you're awake.

But when you're sitting there bleary-eyed and trying to get your tenth test to pass and it just won't pass no matter what you do, you know it's time to quit. You have a real-time feedback loop that's telling you "go home". After a while, you put two and two together and realize that you're not really understanding the machine as much as you thought you were.

Of course, if you're not as rigorous as you should be, you just stop writing tests.

This week I watched a programmer who is normally incredibly fastidious about testing give up on his tests, work tons of overtime, jang it, and endure the consequent failure. I have done this myself many times when working overtime. I am much less likely to test code when I'm burning myself out than when I'm relaxed. It seems like the tests are just so much less likely to pass anyway, so why bother?

The moral of the story is that crunch time really doesn't work in the small any better than it does in the large. If a deadline looms in the near future and it looks like we're going to need overtime to make it, I am going to have to admit to myself and to my team earlier on that the deadline has already been blown.

I wonder how many more times I'll need to learn this lesson before it sticks.


*:

International guests: a gratuity of 15-20% is appreciated if you enjoyed the service, and may be included with the check for parties larger than 10.

Saturday, July 17, 2004

Overtime

I worked quite a lot over the last few days. Normally I really don't like crazy overtime, having had a very bad experience with it at Origin. Although we haven't really committed to show anything (and I'm not presenting a paper), I do feel as though our demo should be strong for OSCon. I'm sorry I have been a bit hard to reach because when I'm not working, I'm sleeping. I'll still be working for some of this weekend, and in keeping with recently-established tradition, when I'm not working or sleeping I'll be driving.

As soon as this server upgrade is over, I'm going to have a nice, long contemplation (along with my coworkers) of how things went wrong, and hopefully this crunch will be an isolated occurrence.

Sunday, July 11, 2004

Missing Entries

I've lost some data on my LJ. The last entry, in particular, and two comments associated with it were particularly annoying to lose, since I'd deleted my offline backups recently, assuming that LJ was never going to lose anything.

My support request is here, and a lj_maintenance entry detailing the fix that didn't work for me is here.

Let this be a lesson to you all: backups are not a way to restore your data, they are a magic talisman against data loss.

Thursday, July 08, 2004

Sunday, July 04, 2004

This Coming Week at Divmod

I'll start posting these to the community blog in the future, but since more people read this one right now, I'll put it here. Since to some extent our process is public, and I get a lot of questions, I feel like I should mention what I'll be focusing on in the coming week. I hope that those of you looking into the fishbowl find this interesting ;-).

This week I am endeavoring to get out of the process business. Over the last month or two, I've been drawing up schedules for the team, trying to get us (and myself) organized. While I seem to be able to imagine the process quite well, I'm not organized enough to pull it off, and my coding has been slipping behind while I'm doing this. So, I'm turning as much of it as I can over to Mark, our new "marketing" guy. While this is slightly out-of-scope for someone doing general marketing, it should give him the necessary insight into how the product works to describe it clearly to our audience.

So, that's what I won't be working on. What I will be working on is our scalability solution, so that we can start adding hardware when we get more customers. While simple in principle, I've been banging my head against it, with Allen's help, for several weeks now. I think I will be able to finish it up this week, if everything goes well.

Whether everything usually goes well or not is left as an exercise for the reader.

The Price of Silence

Well, I went to the mall to price some noise-cancelling headphones. WOW. Those are some absurdly expensive little toys. I still think I want some, but it's going to require a little more careful consideration.

The ideal headset for me would be around-the-ear, collapsable, USB, linux- and mac-compatible (e.g. a standard USB audio device, not some crazy third-party thing that requires drivers), with active noise cancelling earpieces, a noise cancelling microphone, and of course standard features like in-line volume control and a microphone mute switch that doesn't produce a deafening bang when used. (I did have a headset which did that.) It should also cost one dollar and be bullet-proof.

Obviously I'm willing to make some compromises, since I can't even find the union of "noise cancelling earpieces" and "microphone". Any suggestions?

Status Rapport

Being sick over the last few days has given me some time for quiet reflection, some reading, and a little bit of catching up on personal correspondence. Ying was away in NY, and the fluid in my ears has also really muted my hearing, so everything seemed really peaceful and calm in the apartment. It's intriguing the effect that something as simple as noise-level has on my mood. I think I'm going to get some noise-cancelling headphones today.

That's right: it's July 4, and to celebrate I am going to sit in perfect silence.