Skip to content


Five Years

I just moved offices at work and noticed this tag stuck to the bottom of my bookshelf:It’s a visitor badge from IBM Westford. I had resigned from IBM a week earlier and returned as a visitor on August 4th to collect my personal belongings from my old office. I was already a Microsoft employee by that point (in fact I just got my five year service award). We were busy packing up our home for the move to Seattle. It was sad to say goodbye to friends in Boston but we’ve really enjoyed living out here. (And visitors are welcome!).

I just wish that we got back to Boston more frequently. Five years of living in such a friendly place is wearing down my East Coast nature.

Posted in Life, Work.


Halo for the Atari 2600

Halo re-imagined as an Atari 2600 game.  Crazy. Here’s the creator’s back story and the 4K ROM image. (Via waxy.org)

Posted in Programming.


Dreamscape

Andy Baio said:

Finally saw Inception last night. Incredible film, but it really needed more Dennis Quaid and giant lizard-men. http://bit.ly/cc37oW

Wow, I’d completely forgotten about Dreamscape featuring a young Dennis Quaid and and a cheesy stop-motion Snakeman. It came out in 1984 and I’m fairly certain I saw it in the theater back then.

I just watched it again on Netflix. The special effects and film score didn’t age well but it’s not bad. Quaid plays a psychic who can enter people’s dreams (called dream-linking). He get entangled with a government agency that’s trying to use dream-linking to carry out assassinations.

The president is suffering from post-apocalyptic nightmares. In the first scene, he imagines his wife running away from New York City just as a mushroom cloud rises from Manhattan and the shock wave overtakes her. (Viewed in 2010, the most jarring part of this imagery isn’t the mushroom cloud or horrible green screen work, it’s seeing the World Trade Center towers in the NYC skyline). One of the president’s advisors thinks that these nightmares will cause him to sign an unfavorable nuclear disarmament treaty and so plots to have the president killed in his sleep while dreaming. Quaid is the “good guy” so you can see where this is headed.

Saw Inception? Looking for a film about messing with other people’s dreams and maybe want to revisit a cheesy hit from the 80s? Look no further than Dreamscape.

Posted in Movies.


Inception cat

There’s a thread on reddit about combining the music from Inception with any video to make it more dramatic. This pairing of the Ninja cat video and music from the Inception trailer works pretty well.

Posted in Memes, Movies.


Inception music

Inception posterChristopher Nolan’s new film Inception has been a huge hit at the box office. I think it’s a terrific film but I won’t go on and on about it. Too much hype can set unrealistic expectations. And too much detail can spoil it as well. (If you’re looking for spoilers, or have seen the film, there are plenty of reviews online).

I’ve watched it twice (it’s worth a second viewing). The second time I also was watching the audience’s reactions, especially for the ending. Both times as the film ended several people in the audience gasped, paused and then applauded. Applause after a movie is rare (and rarer still for a big budget Hollywood film) but it’s an acknowledgement of enjoying a shared experience.

Besides the great cast, amazing visuals and twisty/clever plot, Inception has a terrific film score by Hans Zimmer. The music used at the ending (called “Time”) was stuck in my head for a couple of days afterwards “forcing” me to buy the soundtrack. It’s a terrific soundtrack but I noticed something odd — the music for the third Inception trailer doesn’t appear on the soundtrack. While it’s not unusual for music used in trailers to be different, this sounds similar to Zimmer’s score but it’s not. The music created for the trailer (called “Mind Heist“) was done by Zack Hemsey, not Zimmer. (Hemsey addresses the confusion in a blog post).

Another interesting tidbit about the score: if you’ve seen the film, remember that music performed by Edith Piaf is used as a “musical countdown” in the movie? Apparently Zimmer’s score embeds a bit of this in an interesting way. (Oh, and who did cast member Marion Cotilliard play in La vie en rose? Edith Piaf).

Posted in Movies.


WordPress

The switch from Blogger to WordPress went well. It was pretty easy to import my Blogger posts. Comments will still take a while since I have to take old comments from Haloscan and Squawkbox and merge them in. I really like WordPress’s plugin architecture. I’ve added plugins for Google Adsense and Analytics as well as a plugin that finds broken links. I’m still trying to find a WordPress theme that I like — and one that’s compatible with mobile devices would be nice too. In the end I might have to hack an existing template but I’m trying to avoid that.

Posted in Blog.


Back again

A series of events conspired to force me to change my blog. My hosting provider (JumpDomain) went dark. They were also the domain registrar which made it complicated to move my blog to another hosting provider. At around the same time, Blogger changed their publishing model such that publishing to a self-hosted domain using FTP was no longer supported. So I decided to finally make the switch to self-hosted WordPress. After I was finally able to move my domain to a different registrar, I set up a new hosting account with WebFaction, converted my Blogger content to WordPress and here we are. Not perfect yet but getting better.

My old blog is still on Blogger as codingthing.blogspot.com but I plan to remove it as soon as I’m sure that this site is complete.

Posted in Blog.


Anachronisms

I recently stopped wearing a wristwatch. I always carry my cellphone which displays the current time. Why bother with a watch?

I get the Seattle Times delivered at home even though I can get the same information online. I like reading the paper but I know that its days are numbered. The other Seattle daily, the Seattle P-I stopped publishing last year when it became an online-only newspaper.

We still have a land line even though we all have cellphones. We like having a single phone number for our family but we could probably get rid of it.

What other obsolete things do we cling to?

Posted in Uncategorized.


Why or Why Not Objective-C?

My friend Pete recently started developing apps for the iPhone using Objective-C and loves it:

I can’t believe we all used C++ when Objective-C was sitting there. I don’t care that message passing is slower1. It’s f*cking genius.

Objective-C has been around for about as long as C++, why isn’t it more popular? The simple answer is that early on when object-oriented programming was becoming popular, C++ got into the hands of more developers than Objective-C.

The first C++ compiler called Cfront generated C code. The end result was code that just about any C compiler could compile. Shortly after, inexpensive native C++ compilers such as Zortech appeared. This was followed by vendor support from companies like Microsoft, Borland, Sun, etc.

In contrast, Objective-C was originally a product from a single company PPI (aka Stepstone). NeXT licensed the technology for NeXTstep in the late 80s but never developed into a large enough market for most developers. When NeXT was purchased by Apple, the same language and runtime were used for Mac OS X and eventually the iPhone. Certainly if this hadn’t happened Objective-C would be little more than a historical footnote, not a mainstream language.

There’s another issue when discussing Objective-C: portability. It was used by NeXTstep, now Mac OS X and nonexistent elsewhere. What happens when you want your code to run on other platforms?

When we developed Improv for NeXT we wrote the UI in Objective-C, everything else in C++. The usage of C++ was partly historical since a lot of the code started out on OS/2. But we retained this separation: source files continued to be either pure Objective-C or pure C++. There was a thin facade layer between the two. We also developed an application called Presentation Builder which produces graphs and diagrams for Improv. It was entirely written in Objective-C. When we ported Improv to Windows (and Mac for a while), we were able to retain the back-end code and rewrite the UI in C++. But we couldn’t reuse any of the Presentation Builder code since there was no Objective-C compiler for Windows at the time. We had to rewrite it from scratch. In fact, we couldn’t even salvage the Presentation Builder file format since relied on the AppKit serialization format which, as far as I know, NeXT never documented. Since Presentation Builder relied heavily on Display Postscript, we still would have had quite a bit of work to port it but we would have been able to salvage some of the code.

Apple’s current recommendations for Mac OS X developers is to write UI in Objective-C (Cocoa) and use anything you like for the rest. So what does Apple use for their own cross-platform apps? I’ve read that iTunes is more-or-less pure C++ but much of Safari is written in Objective-C, even on Windows. So Apple must have Objective-C tools (and frameworks) for Windows.

My personal take on Objective-C is that while it’s not as “pretty” as C++ it’s also much easier to learn. Objective-C is clearly an add-on to C rather than an attempt to define a new language. Objective-C syntax is derived from Smalltalk and message passing is explicit in the language. In C++ method calls use the same syntax as accessing struct members in C. But language syntax is secondary. The real beauty of developing in Objective-C isn’t just the language — it’s the AppKit/Cocoa frameworks. And a big part of that is the late-bound dynamic nature of the language, something that’s still hard to do in C++.

  1. Message passing in Objective-C isn’t always slower than C++ virtual method calls.

Posted in Programming.


Twenty Years!

Twenty years ago today was my first day at Lotus. Normally I wouldn’t recall a milestone like this but I thoroughly enjoyed working for Lotus back in those days. It was an upbeat and successful company and I worked on fantastic product with a terrific team. So pardon me for indulging in a bit of nostalgia…

A few months prior, a headhunter called me at home. I was expected another call so picked up rather than letting it go to voice mail (no Caller ID back then). He mentioned several people I had worked with before wouldn’t tell me who had passed along my name. He pitched a job at Lotus working on a PC database project. I wasn’t happy with my current job but I didn’t really want to write PC software. A week later he called about another job at Lotus. This other team was working on a secret project that was supposed to be really cool and was a closer match to my interests. So I scheduled an interview. The interviews went well and I got excited about the project while talking to the team. When I found out that they were writing software for NeXT, I really wanted the job. The code name was “BackBay” which became Lotus Improv.

When I accepted the job offer I asked the headhunter again for the name of the person who passed along my name, it turned out to be a co-worker. Her husband worked for Lotus. Small world.

Prior to Lotus, I developed software for Unix workstations; primarily CAD software. On my first day during new employee orientation I felt like a fish out of water. All of the other new employees were conversant in Lotus products: 123, Manuscript, Agenda… I’d never used a spreadsheet before and knew next to nothing about PC software. What was I doing there? But it turned out okay; at least in the short term. The Improv team was run like a startup, separate from the rest of Lotus and developed solely on NeXT.

After orientation, I settled into my new office. On my desk was a brand new NeXT cube. After setting it up I quickly discovered its beauty wasn’t skin deep. Before Lotus, I had SGI and Sun workstations on my desk. But despite their high-end graphical capabilities, GUI-based apps were nearly non-existent. Most of my day was spent in shell windows using emacs, gdb, etc. We wrote design specs using text-based formatters such as troff or scribe. When I needed something better, I’d write specs on my Mac. Conversely, developing software on Unix was a joy but developing for the Mac back then was painful. No multi-tasking, no virtual memory, etc. In contrast, NeXT had the best of both worlds for users and developers — rich graphical apps like a Mac on a Unix-based OS. For example, the NeXT Mail application was beautiful and powerful. It let you send richly formatted text with pictures and file attachments. It may not sound like much today but in the days before HTML and MIME, just having email access, much less email with rich content, was uncommon.

Working on a “secret” project with NeXT was a lot of fun. NeXT had started out in the education market but was trying to move into the enterprise. Steve Jobs had come out to Lotus and got a demo of an early Improv prototype running on OS/2. He convinced Lotus management to build the first release on NeXT. The team had been working on the NeXT release for less than a year when I started. Jobs would come out to Cambridge occasionally to check on our progress.

All of our hard work culminated in the first public demonstration of Improv as part of a NeXT product announcement at Davies Symphony Hall in San Francisco. Ashton-Tate and Informix also announced spreadsheet products for NeXT at the same event but, with a typically Jobsian twist, NeXT announced that Improv would be bundled with all new NeXT computers. The Ashton-Tate and Informix folks were livid. Lotus Improv 1.0 for NeXT shipped the following February.

One other thing from those early days: During my first week at Lotus I ran into someone I worked with at Applicon. He told me that he worked on Lotus Notes then paused, expecting some sort of reaction. I had to explain that I didn’t know what Notes was. A couple years later when we moved off NeXT to Windows development, I had my first experience with Notes. Compared to NeXT, it was God-awful. Ugly. Primitive. Slow. It was really hard to appreciate the underlying power under that ugly facade. Fortunately for Lotus, it did get better later.

Posted in Uncategorized.




bob congdon is Stephen Fry proof thanks to caching by WP Super Cache