« | » Main « | »

Machete mode

Wednesday 25 June 2003

For the last day or so, I've been working hard to write some code using technologies that I really don't understand. It needs to be done quickly, so I've been in "machete mode". That's my term for the style of working where nothing matters but getting to the end goal. I call it machete mode because I imagine a jungle of technological unknowns separating me from my goal. Instead of careful craftsmanship, reasoned balancing of goals, elegant design, and thoughtful coding, I have to work quickly with tools and technology that are mysterious to me. Extreme sample-searching, blind cut-and-paste, just-in-time documentation diving, and guerilla debugging are the order of the day.

This kind of work is nothing to be proud of, but it is fun and challenging in a Survivor-like way. You know, the lone developer dropped in the middle of unforgiving terrain, with nothing but his wits and a machete. And at the end of it all, you've probably learned something, if only a few milestones so the next time you have to go that way, a few things will look familiar.

ArsDigita post mortems

Tuesday 24 June 2003

Two survivors of ArsDigita have written up their versions of events. First Eve Andersson gave us her view: Diary of a Start-Up (summary: VCs suck). Then Michael Yoon responded with ArsDigita: An Alternate Perspective (summary: it was more complicated than that). Both are interesting recaps of what must have been tumultuous times.

I worked at a failed startup that never got beyond 30 employees, and I know there was plenty of room even there for multiple perceptions of truth. I can only imagine how complex a place like ArsDigita got by the end of its run.

By all accounts, ArsDigita was an idealistic place, staffed with intelligent people. Its founder Philip Greenspun (blog) is both idealistic and intelligent, with quirky and charismatic thrown into the bargain.

BTW: What ever happened to ArsDigita? It was bought by Red Hat.


Sunday 22 June 2003

I can't imagine why McDonald's has let this go on for as long as they have. McBurgers is a collection of do-it-yourself recipes for burgers just like McDonald's makes them. I'm not a great fan of fast food, but I have to admire the geeky fanaticism inherent in these pages.

Alice's restaurant

Saturday 21 June 2003

I saw Alice's Restaurant (the movie) last night. I've always loved the original 18-minute Arlo Guthrie song. It's practically a family tradition to find some radio station that plays it on the drive to Thanksgiving.

On the plus side: Arlo plays himself, as does Officer Obie and the blind judge. The real Alice is an extra in a few scenes. The movie was filmed in the actual church, which is now owned by Arlo as the Guthrie Center. Director Arthur Penn was nominated for an Oscar (though I don't really see why).

On the minus side: Considering the movie is an attempt to stretch the song into a full-length movie, it does a bad job making full use of the song itself. It rushes through the re-enactment of the lyrics, poorly timing the gags it contains. Also, there are a number of oddly melodramatic sub-plots.

Overall, it was about what I expected: disjoint, confusing, idealistic, goofy, earnest. In other words, it nicely captured the mood in 1969.

Google site search

Saturday 21 June 2003

I added a Google search button to my front page. As I was working through the instructions on how to set it up, I didn't notice any rules about leaving the Google logo in, or leaving the choice of whole web vs. site search, so I stripped it down to just what I wanted.

Google, if I've broken the rules, I apologize.

Will Ferrell Matrix parody

Tuesday 17 June 2003

Another Matrix Reloaded parody, this one is the intro to the MTV Movie Awards, and includes Will Ferrell as The Architect. Watch it.

BTW: Something I forgot to put in my initial impressions of Matrix Reloaded: I found the sequence of The characters a little tiresome, first The Oracle, then The Keymaker, then The Merovingian, then The Architect. I expected Neo to walk through a door and come face-to-face with... The VP of Marketing!

Paul Rand's geometry books

Monday 16 June 2003

For my birthday today I spent some time at the legendary Brattle Book Shop in downtown Boston. Something about used bookstores just makes me happy. Partly it's the collected wisdom, patiently waiting for new readers. Partly it's the offbeat dated titles. Partly it's the glimpse into other times. Whatever the reason, I went. And I'm glad I did, because now I own two of Paul Rand's personal geometry books.

» read more of: Paul Rand's geometry books... (11 paragraphs)

Animatrix: Beyond

Saturday 14 June 2003

The Animatrix is a collection of animated short stories in the world of The Matrix. Most of them I didn't care for (lots of violence), but I really liked the episode called "Beyond". It's quiet and beautiful. A woman follows some children to a "haunted house" which is really a bug in the matrix. They find beauty and joy in the bugs there. To me, it was about serendipity and the unexpected. As a coder, it also was a cool visual metaphor for unreachable code paths and unintended side-effects!

Finding Nemo

Saturday 14 June 2003

Just came back from seeing Finding Nemo, and it was, of course, wonderful. The story was perhaps a bit too Disney (single parent, child out in danger, struggling to get back together), but Dory was fabulous, and overall, it was great. One thing not mentioned enough is that the film is visually beautiful.

The short before the film is an old favorite of mine, Knick-Knack. It has been re-rendered, and the women have had breast reductions! I'm not sure why they had to go from gargantuan to non-existent, though.

Construction methods

Friday 13 June 2003

PragDave writes about a small matter, but one that made me think: Construction Methods. He favors static methods over overloaded constructors, because they can be distinguished by name rather than parameter types.

It's this kind of attention to detail, the willingness to ponder the best approach to even the smallest things, that makes all the difference in the code a developer writes. Dave correctly describes the technique as not particularly new, which also gets him points: too often technologists believe that only flashy revolutionary new techniques can be of value. Not true: mostly what adds value to software is good old-fashioned engineering, and caring about little things that add up throughout a code base.

Unfortunately, for C++ coders, the technique has a serious downside, which is that the static method has to know how you want your object allocated. For example, you can't create a stack-allocated object this way, and if you have overloaded new, you are in trouble as well unless your static methods can know once and for all which overload to use. But for heap-only languages like Python, Java, and (I guess) Ruby, that isn't a factor.

Bray on performance

Thursday 12 June 2003

Tim Bray writes passionately about speed: On Software Performance. It was inspired by a .NET-specific article on MSDN, but Tim's points apply to any software. An excerpt:

  1. Design and code your app, trying hard not to do anything really stupid, and striving for flexibility.
  2. If it's fast enough, don't worry any more.
  3. If it's slow, get out your profiler and measure things until you understand where the problem is.
  4. Fix the problem, which may well require major refactoring, but that's OK because that's probably coming at you pretty soon anyhow with the next batch of requirements. Furthermore, you couldn't have avoided it because nobody is smart enough to predict where the bottlenecks will be in a complex application before it's running.

That last point is right on the money. More than once, I've had this experience: We analyzed the bottlenecks, and identified a piece of code that was holding things up. The code had a comment on it along the lines of, "This should really boost performance".

Flash click to view

Wednesday 11 June 2003

If you are using Mozilla Firebird, you want to go install Flash Click to View, an oddly named, but marvelously effective extension. It only does one thing, but it does it beautifully. It replaces all Flash content with an empty box that says "flash [[Click to play]]". Of course, clicking the box plays the Flash. This extension plus the menu pick "Block images from this server" together mean that I see virtually no ads. Bliss.

Qu'ranic illumination

Sunday 8 June 2003

About a year ago, on an impulse, I bought a lovely little book called Platonic & Archimedean Solids, by Daud Sutton. I was so taken with the beautiful illustrations, that I tracked down an email address for Daud to compliment him on his artwork. Nearly a year later (!) he wrote back, pointing me to some flash work he'd done for Tradigital, a company which aims to produce new Arabic publications with all of the beauty and richness of hand-produced work of previous centuries. (Daud's flash isn't easily linkable on its own: go to Specials, and open the flash film yourself).

Holland Schmolland

Friday 6 June 2003

There's a famous essay in special-needs circles called Welcome to Holland, about the fact that your life with your child is not what you planned, but it has its own joys. Our experience with autism wasn't quite like that, and a number of other autism parents we've talked to felt the same.

Now a mother of an autistic sums it up: Holland Schmolland. I think it perfectly captures the feel of a family living with autism:

For citizens of Schmolland, it is quite normal to repeat lines from videos to express emotion. If you are sad, you can look downcast and say "Oh Pongo." When mad or anxious, you might shout, "Snow can't stop me!" or "Duchess, kittens, come on!" Sometimes, "And now our feature presentation" says it all. In Schmolland, there's not a lot to do, so our citizens find amusement wherever they can. Bouncing on the couch for hours, methodically pulling feathers out of down pillows, and laughing hysterically in bed at 4:00am, are all traditional Schmutch pastimes.

Python main() functions

Friday 6 June 2003

A few weeks ago, Guido van Rossum wrote about Python main() functions in his weblog. There are good ideas in there, but I didn't agree with them all. In particular, I thought this was odd:

def main(argv=None):
    if argv is None:
        argv = sys.argv
    # etc...

if __name__ == "__main__":

To me, it is better to keep the sys.exit and the sys.argv in one place:

def main(argv):
    # etc...

if __name__ == "__main__":

The weblog has an active comment system, with Guido responding thoughtfully. After I posted my thoughts, he agreed to "compromise" with me!

By the way: one trick I've used in main() functions: when converting numeric arguments from strings in argv, use eval(), not int(). That way, you can use any numeric calculations you want in your command line arguments.

Kubi Client reviewed in PC World

Thursday 5 June 2003

PC World has a review of four email-related applications: E-Mail Evolves. Kubi Client is reviewed very favorably (four stars):

Overall, we found all four of the products useful in their own unique ways. ... For ambition and potential, Kubi Client is the standout, pushing e-mail toward workgroup collaboration.

Translation is hard

Thursday 5 June 2003

I found a link in my referrer logs from Peter Gloor's blog. It's in German:

Kaum zu glauben, aber es gibt immer noch Leute, die genug Zeit haben Ihre persönliche Home-Page aufrecht zu erhalten und einen unwiderstehlichen Drang verspüren sich im Web irgendwie zu präsentieren. Nun, was ich gesehen habe als ich neulich zwei oder drei Mal über Ned Batchelder's blog gestolpert bin, war ein völlig neues Erlebnis, dem auch ich nicht widerstehen kann. Die Zeiten der langweiligen, statischen Home Pages sind vorbei.

I was, of course, curious to know what Peter had said, so I used Babelfish to translate it to English. This is what I got:

» read more of: Translation is hard... (4 paragraphs)

Business card cubes

Tuesday 3 June 2003

Every job I've had, I've been handed a box of at least 250 business cards. Over the course of the job, I've never handed out more than 20 cards, and most jobs have involved either corporate or personal changes that meant getting new boxes of cards. As a result, I've always had a lot of spare cards hanging around. What to do? Fold them into cubes, of course.

Card cube diagram

« | » Main « | »