Carl Tashian

archives: tech & usability

14 Jan 02008

Dial M for Hamburger: a design tragedy

I love microwave ovens with dials. One dial for the cooking time, and one for the power level.

microwave
Photo: larskflem

What more do you need, right? So you can imagine my surprise when I saw exactly how much you could screw up this simple, elegant solution. I spotted this in a gas station in Crescent City, California a couple months ago:

microwave dial

The designers of this microwave really went the extra mile to be helpful. Instead of the usual numbers showing how much time you’re dialing in, which are just so confusing, they used letters! What a novel approach. And they provided a handy heating guide below the dial that maps the letters A through S to different foods you might want to cook. The guide evokes nostalgia, too. It is sure to bring a tear to the eye of anyone who remembers when we all subsisted on hamburgers, microwave popcorn, hots dogs, and pizza, before burritos and sushi ruthlessly invaded the culture of single-handed eating.

But the table is still quite applicable in today’s convenience stores, and the nice thing about this letter dial design is that the convenience store owner could augment the table with her own sign listing additional convenience store foods that were invented after this microwave. You know, “for Hot Pockets, dial F. For Easy Mac, dial H…”

But the bad thing about this dial design is that it sucks. Even in 1981, when some people were surely confused about how long it takes these magical ovens to cook common foods, they did not need letters on the dial. The letters only add myth to the magic. Here we have a new and exciting technology in our culture, and people honestly want to know how it works and how long things take to cook in it. But if all they remember is to dial E for their hamburger, they are not learning anything. This dial encourages a whole new mental model for microwaving that is redundant, confusing, and, worst of all, proprietary.

Now, I will admit this is a very old microwave, made during the “wild west” days of microwave oven dial design, an era when we still hadn’t reached consensus, an era of wild experimentation and lots of illicit drug use. And I am thankful that they used letters and not arbitrary numbers. But I still think they should have known better.

The saving grace is that there are smaller time indicators. You know, for compatibility with other microwaves.

Oh, you might have noticed one other thing. The dial markings are backwards! They go counter-clockwise, so when the microwave is off, you read “S, R, Q, P, O…” from left to right. I struggled with this for a minute, because you do actually turn this dial to the right, just like most other dials. But the difference with this dial is that the letters are actually marked on the dial itself, which is uncommon, and the indicator for which letter you’re on is in the space outside the dial.

Put another way, which of these kitchen timers would you rather use?

timer Atimer B


30 Nov 02007

Fixing apache virtual hosts in Leopard

I’m posting this only because I had trouble getting Apache back into shape after a Leopard upgrade, and I wanted to post a fix. Switching to Leopard (which comes with Apache 2.2), I needed to get virtual hosting working again for my development work. Some files and settings have moved.

The apache config for Leopard is in /etc/apache2/httpd.conf, and to turn on virtual hosting you must uncomment line 461, which includes /private/etc/apache2/extra/httpd-vhosts.conf. While you’re at it, if you need PHP, uncomment line 114.

Then edit httpd-vhosts.conf. I wanted to still be able to use the Mac’s default DocumentRoot for requests on localhost, but turning on virtual hosting in Apache 2.2 disables the server-wide DocumentRoot and ServerName, and the first virtual host you define becomes the default instead. Here’s what I needed in order to get my specific name-based virual hosts working:

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
  DocumentRoot "/Library/WebServer/Documents"
</VirtualHost>

<VirtualHost *:80>
  ServerName myrailsapp.biz
  ProxyPass / http://127.0.0.1:3000/  
</VirtualHost>

<VirtualHost *:80>
  ServerName wpclient.com
  DocumentRoot "/Library/WebServer/Documents/wpclient.com"
</VirtualHost>

This configuration should work for multiple virtual hosts, but for me it wasn’t totally successful until after restarting the system—a simple “sudo apachectl graceful” didn’t do the trick. It may be that I also modified /etc/hosts and the system wasn’t fully assimilating my changes. Also, since I had upgraded from Tiger, my user-specific configuration files had moved, so my userdir (http://localhost/~carl/) stopped working! The fix for this was:

sudo cp /etc/httpd/users/* /etc/apache2/users/

4 Sep 02007

7.1 megapixels

So, thanks to my father’s generocity, this week I was paid—in the form of a new computer—for what would have been a pro-bono web site for one my family’s many enterprises. And it actually turned out to be more exciting than I thought. A computer is just a computer, right? We all have to upgrade, but it’s basically the same thing. But every once in a while, something comes along that changes the way I work and reminds me of the value of proper tools.

In this case, I was upgrading from a PowerMac G5, a big hunky desktop machine. I don’t know why I thought I’d need all of those card slots or hard drive bays. Maybe I just bought it as a doorstop for my ego. Anyway, over the years I only ever added RAM to it. So when choosing a new machine, the number of card slots didn’t enter into it. The decision really came down to portability vs. screen real estate, and even though my life is in mobile turmoil right now, I opted for screen real estate.

Four days with the new machine and I’m utterly convinced I’ve made the right choice. I bought a 24” iMac, and I now have a luxurious 7.1 megapixel LCD landscape in front of me. It feels like my productivity has doubled. It’s similar to the way I felt when Exposé came out. The main screen is 1920x1200, and I think that makes the biggest difference for me. But the secondary screen (my old 20” LCD) is also indispensable, because I can now give my e-mail, IM, and a full calendar the space they deserve.

That’s the thing: More space really changes the way I work. For example, if I keep iCal open on my secondary screen, it becomes the virtual equivalent of tacking a calendar to the wall. That is very, very valuable. It means that I can rely on iCal because I don’t have to find and open it each time I want to add to it. It means that I can actually use iCal now. Because I can just glance at it. I can rely on iCal always being there. So the secondary screen becomes the screen at which I glance while I’m working on other things. It’s the screen of passive interruption—the communication center. I can be interrupted, but without the real work around. Psychologically, even with the ease Exposé, that makes a big difference to me. It’s counterintuitive, but more space seems to allow me to focus better.

My secondary screen is the virtual cork board above my virtual desk, and I think that over the next couple years, as the desktop metaphor finally dies out, its replacement will have to have this functionality in some form.

Anyway, I’m grateful to have this new machine and the productivity boost that comes with it. (thanks, Dad!)

24 Aug 02007

Then and Now: YouTube

YouTube page grab
YouTube: August 2005

YouTube page grab
August 2007

Here’s some real estate speculation for you. In the last post I focused changes to YouTube’s toolbar over two years. In this one, I want to talk more broadly about the whole page and how it has changed since August 2005. This is less about particular vocabulary, white space, and other details, and more about the audience and the content.

What was removed?

  • New user hand holding - before, a big box in the most valuable part of the page introduced the site, with one sentence dedicated to each of Watch, Upload, and Share. This box is entirely gone. Today, watching is self-explanatory, especially thanks to the big video that automatically loads in the top right corner. Upload has moved to a prominent button in the top right (with an arrow graphic), and Share is just intuitively obvious in the “Broadcast Yourself” tagline and in the content itself.
  • The tag cloud - early YouTube had a cloud of recent video tags. Tags were hot back then. I could go on about tag clouds and their failures, but I’m guessing it came down to three things: 1) they tell without showing — and on a video sharing site, why not just show? 2) they are rarely clicked, and 3) they are visually cluttered. Beyond the tag cloud, YouTube also removed the list of tags from the Featured Videos metadata. Good riddance — a category, title, and humane description work better.
  • Excessive tabs and links - See my previous post
  • Recent users online - This is when YouTube thought they were a social network. We see a list of 8 recent users, along with counts of videos, favorites, and friends for each of them. This was removed for obvious scaling reasons: after a community grows beyond, say, 500 users, this just isn’t interesting information for anyone.
  • Sign up promotion - a bold yellow box, in a very valuable spot, beckons you to sign up. It’s not very convincing, though. Chances are, you’re going to sign up only when you’re trying to do something else. You’re not signing up for the sake of signing up. So why push the issue? Instead, the new YouTube has a login box in the right column, and a small “sign up” link on the top right in case you really can’t wait.
  • Video of the month contest - This has been replaced by all kinds of slicker cross-promoted contents and ads.

What was added?

  • Videos being watched right now - Certainly more interesting than list of recent users. This is a dynamic Flash piece that flips through recent videos until you roll over something.
  • Promoted Videos and Ads - The revenue has to come from somewhere, right? And now that Diddy is out there with his camcorder, now that the networks have gotten hip to this, the cross promotions are flying all over the place. August 2007’s YouTube features the presidential debates (YouChoose), a huge promo video for UFC on Pay Per View, and a series of promoted videos across the top of the home page (how much do these cost?).
  • Video ratings - the five star system. People love their stars. As if being featured or having a high view count is not enough. Most videos on the front page of YouTube have four or five stars. But some of the most watched videos have poor ratings because they’re controversial. So effectively, stars are more a measure of controversy than quality.
  • Tabbed video listing - It isn’t just about featured videos anymore. You can choose to see Most Viewed, Most Discussed, and Top Favorites as well. These other three categories tend to have a lot of overlap, so it’s good that YouTube doesn’t waste time showing more than one of them at a time. On the other hand, what’s the difference between Most Viewed and Most Discussed, from the user’s perspective? Does anyone care?
  • “What’s New” box - something for the returning users? A post from the YouTube corporate blog. A promotion for mobile videos (iPhone!)
  • Popular Videos for Mobile Devices box - YouTube is very proud of their iPhone partnership, and they should be.

Overall, they’ve made huge improvements, if that wasn’t obvious from the page grabs. The data/ink ratio is so much higher, and the information hierarchy is more clear (the old YouTube had too many elements with similar priorities). Even the promotions are mostly pure content, so you hardly notice you’re being promoted on!

Crosscut: YouTube toolbar

The Internet Archive is great for looking at web site usability changes over time. Lets just look at one part of one site: the toolbar on YouTube.com. dec-2005.jpg
December 2005

aug-2006.jpg
August 2006

feb-2007.jpg
February 2007

today.jpg
August 2007

The changes are not subtle. This is over a period of two years, as the site grew from a niche into one of the biggest sites in the world. So I’m going to try to read between the lines, imagining some of the lessons learned by YouTube over the last couple years.

  • Notice the rise and fall of administrative debris. After the toolbar was initially introduced (not long before December 2005), it had to pass through a painful bloat phase before reaching relative simplicity.
  • In the early days, they may have needed the “watch and share your videos worldwide” tagline. By August 2006, YouTube was confidently mainstream—or their site had reached self-explanatory usability nirvana—so they shortened the tagline. I’m wondering if they ever needed the old tagline at all. But in general, it seems that as a company becomes more well-known, their logo can get very small, and the content itself becomes the logo and tagline (OK, some logos stay huge anyway). The content and interface become the identifying mark. The interface is the brand, and the logo is just there so you know what to call the interface.
  • YouTube may have had ambitions about being a strong social network at first, but today it’s very clearly video centered. The “User Search” option is gone, the “Friends” tab is gone, and the Community tab is about group videos, not friends or individual users. My question is, did they even need those features in 2005? Was the “Friends” tab key to their viral growth, or was it always a bad idea?
  • They finally found the right place for the search box: front and center, and highlighted by a darker background. Just between Feburary and August 2007, they’ve been able to shrink the height of the toolbar tremendously. I bet search is the most common function on YouTube after watching videos. “Did you see the latest Spiderman dance video?”
  • The word “Home” on YouTube means home from YouTube’s perspective, not from the user’s perspective! It means “Our home page where we put the stuff we want you to see.” It does not mean “The place where all my stuff is,” as it does on Facebook.
  • As a result, all of the “My Stuff” link cruft does not belong under the Home tab. A series of “My”s followed by one word make my eyes glaze over, anyway: the “My Account” page, which has sections for all of the relevant My items, is much simpler. By August 2006, “My Account” is among the utility links. As a side note, given that Home means YouTube’s Home and not My Home, shouldn’t “My Account” really be called “Your Account”?
  • In fact, the home tab doesn’t even need to be a tab! Click the logo. In fact, if you hover over today’s logo, the word “Home” appears to its right. What if the logo were a tab, as with Amazon or Apple? The logo-as-tab is kind of irrational (what are the other tabs, if not part of Amazon?), but it works.
  • It’s hard to see from my site grabs, but today’s tabs are slightly bigger than the tabs of 2005, now that there are fewer of them.
  • “Groups” becomes “Community” — and that’s good, because Groups could be groups of anything. Communities are groups of people.
  • “My Subscriptions” was folded into the “Channels” tab. On YouTube, a channel is a subscription to someone’s videos. But channels make me think of TV channels, and today’s TV channels are centered around subject areas (“Categories”), not people. Without clicking, I couldn’t have told you the difference between Categories and Channels. These areas must be for frequent/return visitors.
  • Feb 2007: What is a QuickList, anyway? Obviously no one took the bait, and now it’s gone.
  • A brief try at “Upload Videos” (Feb 2007) goes back to “Upload” (Aug 2007), “Search Videos” (Dec 2005) becomes “Search” (Aug 2006), and “Viewing History” (Aug 2006) is just “History” (Feb 2007). In fact, any word referring to videos or viewing is redundantly obvious and wisely removed.

24 Mar 02007

Free-Syncing Liberals

I tried out two new services over the last couple days, Highrise (contact management web app) and GrandCentral (a “one phone number for life” VoIP call-forwarding service). I’m not going to review them here, but I noticed that both services make the false, tired assumption that either my address book is static or their copy of it is authoritative. They provide a way for me to send them my entire address book, but it’s designed as a one-time operation. So either my address book never changes, or their copy of it is all-holy. I don’t want to single out these two apps, though; this is a serious problem. Skype, Adium, LinkedIn, Facebook, you name it. Many many more apps are culpable. And it seems ironic that, in 2007, the Internet is creating more data disparity for me across everyday applications, not less. I thought this was supposed to be the great connector of people and data?

Web applications are partly to blame. Highrise offers import/export options for vCards. To their credit, they do delete obvious duplicates when you re-import set of vCards. But that’s not syncing, it’s just dupe detection, and it still assumes that Highrise’s copy of the contacts is authoritative (their copy always “wins” on an import). I want to sync! I don’t even want to manually initiate it. I just want the network to assimilate my changes automatically. Unfortunately, as much as we all love JavaScript these days, this isn’t something you can do inside a browser window. But moving this data around manually is a 100% waste of time, so when I sign up for Highrise, I’m signing up for that time waste. I believe there is no customer for whom the import and export function for address books is a benefit.

We need syncing. We need to smoothly merge versions of our data from different contexts.

One answer is to store things in fewer places, but that’s unrealistic in 2007, unless my plan is to quit the Internet entirely. Fact of life: My digital data is dispersed all over the place. I have bookmarks in five different web browsers on two computers. And my address book is so dynamic that the authoritative copy is in my head and in a stack of business cards in my desk drawer, and the digital copy on my Mac is rarely up to date. But when I do bother to update it, I want to do that operation only once. I want to be able to make updates in different contexts; it really shouldn’t matter.

So why is syncing so hard? Part of the problem is that most software doesn’t remember my actions, it only stores the data I acted upon. So later, when I sync, the computer tries to compare one address book copy with another, but it often can’t decide how to merge the two. I have to explain my intentions again: I want this copy, I don’t want that copy, because this is the copy I changed most recently. Were a dated change log in place on both ends, fine-grained version control, the computer would already know what I intended in the first place. But developers have historically faced a lot of space limitations when programming, as computer memory and hard drive space were once a huge premium. So metadata still seems luxurious to some. Or it seems unrelated to the problem at hand; an afterthought. But notice that developer tools have long been able to sync: multi-user version control systems for code have been around forever.

I think the real trouble is that syncing is dangerous for software companies. Some see syncing as a potential recurring revenue stream, so they see little incentive in opening things up. Apple will let me sync—if I sign up for their .Mac service. Cell phone companies offer a centralized over-the-air backup service for my address book…so smooth syncing would eat into their subscriber base. I recently heard of a phone company that’s been able to monetize the sync operation itself: $2.99 a shot, for me to move the data a couple feet between phone and computer.

Syncing would also make it easier for me to switch to the competition. Companies would much rather hold my data hostage with artificial barriers like proprietary data formats and closed APIs. I’m part of probably 15 social networks right now, and all of them sovereign states who pretend the others don’t exist. Apple has been so successful not because they play well with others, but because they’re creating and selling all of the devices you’ll ever want to sync between. It’s magical to see all of these devices talking to each other so smoothly, isn’t it? Yet there never was a technical limitation to it!

It makes Apple a lot of money, but it’s not an open solution and they can’t possibly sustain it for a long time. Every company goes through cycles (see Sony), so we can never rely on one to come through for us. So what can we do to bring the Apple magic into the larger space of web apps, cell phones, and MP3 players?

Free software will help us; the political incentives are different there. Reverse-engineering will help crack the data monopolies, as well. This information wants to be free, and I believe the network will eventually destroy any false barriers. There are free phone projects in the works, and we’ve already seen open source iPod firmware replacements. The world is entirely hackable; so now we need to create more open standards for syncing all of this structure data, and start getting these free software projects talking to each other. No company would dare to do this, so it could be the next huge leap in the free software movement.

17 Mar 02007

The Microsoft Interview

This is a repost of a story I wrote in 1997.

Well, now I can say I got denied by Microsoft. I call it bad luck. And as I was writing a cathartic story about it, Windows NT crashed. So I wrote it again:

It was a rainy Thursday night in Redmond when I arrived at the “Courtyard by Marriot.” The check-in process was simple: I said my name and the guy behind the counter crossed it off on a list of about a hundred people and handed me my key. As I was walking away, I heard the person behind me in line give their name. Then I heard the pencil cross another name off the list.

Was I in a Microsoft-owned hotel? The first thing I noticed when I entered the room was the “Thanks from Microsoft and Marriot” card on the table. I’m not a paranoid person, but at this point I had a bizarre urge to look around for surveillance cameras. These two companies must do a lot of business together—the room was paid by Microsoft, as well as the food and all phone calls. They told me I’d have to pay for the porno movies, though.

In my anxiety about the next day’s interview, I had a night of little sleep. In the few dreams I did have, I found myself in the interview forgetting everything I knew about computers. Tongue-tied and ignorant, I blathered on about wanting to just stay in college all my life.

When I got up and went to breakfast in the morning, the hotel dining room had at least 20 other nervous, college-age kids whose corporate dress didn’t do much to hide the fact that only yesterday were they walking across campus with a backpack, t-shirt, and shorts. In suits and ties they sipped their coffee and pretended to read a newspaper.

I felt like an apprehensive lemming.

“We’re more interested in what’s in your head than what’s on your body,” the internship brochure read. What was on the body of the receptionist in Building 19 gave me a pretty good idea of what was in his head, though. Microsoft.

He wore a 100% Nylon, all-Nike outfit that made him look like he’d just finished a morning game of corporate-sponsored soccer. I’d always thought that casual dress was a great thing in the workplace, but this was ridiculous. I was looking at the first Microsoft employee seen by most prospective interns. He must have been adhering to a strict yet unconventional dress code.

I waited a good 30 minutes in the lobby, with 15 other loitering recruits. There was a computer kiosk in the corner of the lobby with “Explore” written in big Microsoft lettering above the monitor. The screen was dead—completely blank except for a small Post-It note reading “Out of order.” The TV was set on MS-NBC, with another note on it, this one reading “Please do not change the channel.”

My recruiter finally came down to meet me. Like most Microsoft employees, she was a twenty-something who hadn’t shown any signs of the long hours she must have spent shepherding the masses. We discussed the interview process, and she gave me the name of the person I’d be interviewing with first and the code name for his group. “I can’t tell you anything else about them, because I don’t know what they’re telling people,” she said. The code name didn’t reveal too much, either, but I guess that’s the point of a code name. I hopped on the Microsoft Recruiting Shuttle to Building 6, the location of my first “real” interview with an unknown person at the Unknown Group.

The Software Design Engineer who came to get me in the lobby of Building 6 was an unshaven Eastern European guy who was going for the all-Adidas look that morning. He stuck with all-Nylon, as well. He was a terse speaker with a pretty thick accent, and we didn’t really get along well from the start.

This bothered me. If I don’t “click” with the person I might be working for in the future, my prospects are much lower. At the same time, I didn’t want to start thinking “What am I doing here?” already, since the interview hadn’t even begun yet.

We entered his somewhat cluttered office. There was a strange smell in the air, a mix of cigarette smoke and carpet cleaner. Without formally introducing himself, he handed me a dry erase marker, adding a third smell to the nasal experience. “I’ll start you out with a simple problem,” he said. “You have b boxes and n dollars. If I want any amount of money from 0 to n dollars, you must be able to hand me 0 to b boxes so that I get exactly what I request.” The two questions were “What are the restrictions on b and n, and how is money distributed among the boxes?” I immediately explained to him that you could put 1 in the first, 2 in the second, 4 in the third, 8 in the fourth, etc, but he wanted a mathematical proof.

A mathematical proof? I hadn’t written a proof since eighth grade, nor had I ever needed to while designing software. I had not taken a Discrete Math class yet, and four semesters of Calculus didn’t help this situation. I finally managed to write out that each box i should have 2^i dollars in it, the total amount of money being the summation from 0 to b of 2^i. He still wouldn’t accept it. It was as though I was speaking English and he wanted me to speak an Eastern European language. “Is that an algebraic or geometric progression?” he asked. A what? I haven’t done that since eighth grade, either. So I asked him to define his terms, but he wouldn’t. My answer just wouldn’t do.

By this point he was frustrated with my incompetence and probably ready to give up on me, but since I came all the way from Cleveland to answer his questions, he offered me another problem. “I want an office phone book. It should have names and phone numbers in it. Write some C++ code to search the phone book and give me the response.” A pretty vague question, so I started prying for more information. “Do you want to look up names, numbers, or both?” I ask. “I don’t care how you do it, I’m just your manager.” he says. Oh. Well, it’s always nice to have a specification to follow.

The first thing that enters my mind is a similar project I worked on a long time ago. It used a binary search for lookups, so I said, “Okay, I’ll do a binary search.” I always liked the binary search because it is both fast and simple to code. In the case of an office phone book, you don’t need anything complicated. My interviewer chuckled at the words. I started writing code, nonetheless.

A few minutes later I had a good binary search written and debugged. I said that binary searches may not be as fast as other methods, like hash tables, but they’re easy to code. “So why didn’t you say hash table earlier?” he said, as though hash tables were the only solution. He had me explain how hash tables worked before sending me to my next interview.

So far, I was pretty unimpressed. It was obvious that we weren’t seeing eye to eye. I was trying to decide whether I was a complete idiot or merely unable to communicate. I still didn’t know his name. Luckily, I had three interviews left.

My second interviewer was much more cordial. He spoke English, too. He devoted a lot of our time to explaining the purpose of the group to me, at long last. Unfortunately I had no experience in the group’s area of research, but it was still pretty interesting. Then he started in with the questions. “If I want to insert a node in a binary search tree….”

The interview went well. I answered everything he asked, and we weren’t arguing over semantics or the complexity of different search algorithms. By this time, it was about 12:30, so I went to get lunch with my new favorite Microsoft employee at the nearby Red Robin restaurant. A delicious cheeseburger and IBC later, we returned to the Microsoft campus and he dropped me off at the next interview. I was somewhat relieved, but I still had a bad feeling about how the first interview turned out. I would have to rock on the rest of the interviews if I expected to get a job offer from this company, who allegedly hires less than 1 in 4 recruits.

Well, the third interview was similar to the second. Another employee in another numbered building asked more of the same old stock questions from the Microsoft interview database. “What’s the easiest way to reverse a linked list?”, and so on. As this point I was feeling like a pro, and I had no trouble churning out correct answers. Perhaps they’d dumbed things down for me?

I felt a lot better once the third interview was over, because with one left to go, there might still be some hope for recovery from my first.

Afterwards, I was told to wait in the lobby for my final interview. I spent about 15 minutes people-watching and trying to fill out the Microsoft job application form with the only pen I had—a nearly empty Bic with a small leak. The finished application reminded me of kindergarden.

Finally, my previous interviewer returned to the lobby and said, “Sorry, but my manager, who you were going to interview with, didn’t come to work today.” It was over. Since his manager decided not to come in, I had no fourth interview. It was time to return to the recruiting office and finish things up with my “job agent.”

Back in her office, she asked “How did your day go?” This simple question turned into a polite argument about Microsoft’s interviewing practices. Does job experience dictate potential? They did not seem to think so.

Well, call me bitter and cynical, but after the interview and subsequent rejection postcard, I believe that in hiring practices, especially at a company who has a herd of expendable prospective employees, the interviewee can always get denied, but the company will win.

“I hear Bill Gates drives a simple car—a Lexus or something,” said the driver of the recruiting shuttle. “Why doesn’t he take a limo?” someone asked. “I think he really enjoys driving,” she replied.

15 Mar 02007

Movement interfaces

Karl Cronin
Karl at the DeCordova

Karl teaches me a lot about how “real people” use computers, and it’s fascinating. As a dancer, he has a kind of body intelligence that is spell-binding to watch, because it is beautiful and because I know I could never do it. I think his brain developed toward movement very early, and mine toward BASIC, so he has an extreme muscle memory that is very powerful and expressive. His favorite thing right now is mouse gestures, but I think the mouse is ultimately too simple of an input device for him. I believe there’s a missing interface paradigm and set of applications that could extend the self-expression of a mover just as Word extends self-expression of a writer. Marginalized and underfunded as dance may be, I’m learning that there are a lot of movers in the world, and that, as far as I can tell, few of them end up in computer science. The people writing code, myself included, are really writers and linguists—they’re stuck in their own heads. So anyone who wants to interact with or program computers with their whole body is, for the most part, out of luck.

The gamers are, of course, ahead of the interface curve. The Wiimote represents the biggest advance in input devices in a decade, I think, but it only tracks the movement of one limb, and on the software end it’s only scratching the surface. The current games emulate existing real world movement (golf, bowling)—they don’t let you code with movement, there’s no room to create new movement vocabularies. I’m ready for that; I think Karl is, too.

Along these lines, I saw Aza Raskin’s excellent talk “Death of the Desktop” at SXSW and he demoed two things that represent good steps away from the 25-year-old “desktop.” Why should the desktop die? Not because it’s old; because it is 3D: things are hidden and they should not be. We spend all day moving windows around. We spend all day looking for these files and applications that should just be right in front of our noses. Anything that is not direct content manipulation, Raskin posits, is wasted effort. Exposé helps, but doesn’t get us all the way there. And sure, you can boost your productivity by getting 2 or 3 monitors on your desk, but Raskin has a couple alternatives.

For today’s users, Raskin recommends Enso, his company’s Spotlight/Quicksilver app for Windows. It executes simple commands typed while the caps lock key is held down. It’s a CLI on crack. Good stuff, and in his demo he killed Explorer.exe just to show his app in place of the desktop, running on a blank screen.

But the real goodies came later in the talk, when Raskin demoed a Zoomable User Interface. It’s not really a product, but it’s cool! A ZUI is just a plane, often infinite, with all of your content on it: photos, documents, web pages, whatever. No desktop, no file browser per se, no icons, no “open” or “save” commands—just directly manipulable content everywhere you look. And as you work with your content, you develop a cognitive map of the content plane, so you can find things easily—eg. if I’m at my video album from SXSW, I’ll know that my recipes are generally to the left, and my new voicemails are up and to the far left.

Spore
Spore screenshot

But once again, the gamers are already way ahead of the operating system designers, training today’s children to use tomorrow’s laptops. Game designers have the luxury of creating entirely sovereign environments for their games, so they have a lot of flexibility. Many games are already ZUIs, both 2D and 3D. Will Wright’s Spore has a beautiful 3D ZUI. Raskin still hasn’t convinced me that 3D UIs are cognitively a bad idea; I think it really depends on the input device. Mice are not good for navigating 3D content, but something soon may be.

2 Feb 02007

8 phrases for what you do with RFID cards

One day, maybe we’ll settle on one or two.

18 Jan 02007

locked into DRM

This article really gets at the center of the issues around digital music distribution and why “encrypted” music, at least as it is today, serves no one but the hardware manufacturer whose line of music players you’re now locked into using.

Apple’s employment of DRM drives me crazy. The iTunes store was the first big digital music store, and I think their DRM is a relic of early deals with fearful record labels. It may not be very (legally) easy for them to shut off at this point. Apple is a lifestyle, so I understand why it’s important for them to control the horizontal and vertical, the hardware and software. But in my opinion, proprietary standards like FairPlay do not last. Sure, it has seen a lot of use because of the iPod’s popularity, but I think MP3 will win in the end because it is open.

I also think services like Rhapsody, where you can subscribe and stream any music you want for a fixed monthly fee, ala NetFlix, could win out in the end. It’s a funny psychological difference—between purchasing music and having a subscription to listen to music. It really depends on people’s feelings about music: do they want to “own” it or do they just want to listen? You never really own music, though. You own a license to play it, and you own some packaging material. So the idea of music ownership is really about the sentimentality felt by a collector about the packaging, and so far there is no replacement for that sentimentality in any digital service. The extreme music collector hardly even has a CD collection, because they know the only real emotion—the only true sentiment—is cut out of vinyl, not plastic.

7 Nov 02006

Technological Arms Races

Last week I saw a very good lecture by Ray Kurzweil at Harvard, the subtitle of which was “In the 21st century, intelligence will underlie everything of value.” But the real meat of the talk was around two things: one, the exponential pace of technogical progress, where progress is advancement in the form of new technology and exponentially decreasing costs and size. Kurzweil has spent many years building models of future technology, and he was able to predict things like the growth of the Internet, back in the early 1980s. Expoential growth has a way of creeping up on you. When the size of the network goes from 128 nodes to 256 in a given year, no one notices. But when it goes from 64 million to 128 million in a year, that’s a big deal. His current prediction is that medicine is on a path where, in about 30 years, we will be increasing the average lifespan of humans by more than 1 year each year. In other words, in 30 years we will all live forever, or at least we will not die because of medical problems. Kurzweil does a good job of showing past data about technological growth that make his current predicitons seem within the realm of possibility.

Of course, on hearing something like “in 30 years we will all live forever,” a shiver runs down my spine as I think about the ugly battle for resources on a planet full of people who are living forever. It’s quite possible that we’re approaching a tipping point, where we either reverse the effects of technology on our planet and move forward into a virtuous cycle of prosperity and renewal, or we lose too much ground or develop something that destroys us for good. This will be a major milestone in human history, and it’s hard to say when it will happen. I think miniature versions of this ultimate deathmatch have been happening throughout human history, and I believe we won’t know exactly when we’ve passed the tipping point.

Which brings me to the second component of the talk. Technology is a tool which can be used for “good” or “evil.” Many technologies go through “arms race” phases as they grow—computer viruses are a great example. Virus technology and virus detection technology have always been neck-and-neck. Phishing and anti-phishing, encryption and cracking, missiles and anti-missiles—these battles are costly to fight and often result in a lot of collateral damage. But they are a maor driving force for technology. Damn, we say, someome figured out how to make a virus that dynamically reorganizes itself—now what? Technology takes a step forward.

But while these arms races literally shove technology forward, I think they are a very damaging way of doing it. One might say that the cold war was an arms race with a positive outcome, because we did not destroy ourselves. But on the other hand, what about all the military ditritus that was developed, manufactured, and deployed on both sides between 1947 and 1985? Who’s holding those guns now? They are still on this planet, somewhere, probably being pointed at someone by another. They have dissipated across the world and are still being used to exploit and oppress, to maim and kill. So, does that mean the whole of the cold war had a net negative outcome? I believe so, and this is the kind of thing that keeps me up at night. I think most arms races kick off a destruction pattern that haunts us into the long term.

So as technologists, we have to learn to be accountable to what we’re putting into the world. A better version of the cold war might have been fought on paper and with diplomacy. “Oh, it looks like we won’t have the resources to win this. So lets just settle it now.” Seems unlikely though, doesn’t it?

But do you see how it all boils down to a social and economic problem, not just a technological problem? With no conflict, there is no need for destructive technology. It’s not just renewable resources that will save us. It’s global diplomacy, education, and a global consciousness. But technology is a huge factor, and my biggest hope is that more future resources will be devoted to technology that sustains rather than destroys. We need to leverage the exponential growth toward a future that works.

And the trouble is, by no means does capitalism guarantee this. The planet is not going to wait around until we decide that the economic atmosphere is right for sustainability. It’s not going to wait around until we choose to quit our oil addiction. Mother Nature has so often appeased us in the past, so we assume she will in the future. “Oh, sure,” she’ll say, “I’ll just hang on a minute while you figure out how to keep my icebergs from melting.”

Kurzweil is unfazed by the urgency of climate change. He criticizes Al Gore for assuming linear technological growth in “An Inconvenient Truth.” Thirty years from now, Kurzweil said, we’ll have reversed all the effects of climate change and eliminated fossil fuel use. Such is the stunning impact of exponential technological growth; you can’t even imagine what will be possible. I sure hope he’s right.

POSTSCRIPT: A quote from an aging Thomas Edison, asked about his predictions for the future: “I’d put my money on the sun and solar energy. What a source of power! I hope we don’t have to wait ‘til oil and coal run out before we tackle that.”

POSTSCRIPT 2: Robin just pointed me to Bill McKibbon’s recent review of books on climate change.

21 Oct 02005

Flock Developer Preview is now available

I’m sheepishly posting to this blog right now using Flock.


22 May 02005

musical phones

My current cell phone is a T610 from SonyEricsson. I like it a lot. It has Bluetooth. It’s small. I can sync it with my Mac. The battery lasts many days.

I’m on an AT&T plan right now, but my contract has lapsed, so it’s time again to wrangle with the phone companies. Karl and I are going to do a family-style plan, and since AT&T got swallowed up by Cingular, we thought we’d go with Cingular.

So now Cingular wants to sell me a new phone. But I don’t really want one. The phone I have now is fine. Why should I upgrade? The Cingular store salesman says, “You can’t use an AT&T phone on the Cingular network. You must get a new phone.” What he dosn’t say is that I, or just about any AT&T customer, can easily unlock my old phone and restore its usefulness on any GSM network, Cingular or otherwise.

AT&T locked my phone when I bought it. AT&T was then bought by Cingular. So why won’t Cingular unlock it for me? They could even re-lock it onto the Cingular network. Instead, they’re leading their millions of AT&T customers into this scam, fostering a culture of disposable technology, upselling new products when old ones suffice. Cingular treats these old phones like diapers that AT&T shat upon before it ate AT&T.

If the tables were turned and AT&T had bought Cingular, all would be fine with my phone and the Cingular customers would be suffering instead. If I weren’t an engineer with a curiosity about my cell phone works and all its glorious capabilities, I’d probably trust the salesman and cough up another $100.

So, does anyone have a spare T28 unlock cable for SonyEricsson phones?

10 Mar 02005

groove networks

The glorified chat software that we once attempted to use on an outsorced software project eventually became the “Virtual Office” that appears to be a P2P e-mail/discussion/file sharing/IM/project management suite. I like this as a VPN-less solution…it looked interesting until it got swallowed up by Microsoft today.

What do you think Microsoft is up to, with all their acquisitions of disparate technology companies?

24 Feb 02005

notes on Subversion

I’ve been thinking about switching to Subversion (from CVS) for a while. Here are the tools I’ve found that will give me what I need…

Server

Docs

Clients

Update 2.25.05: Read this for a list of subversion’s benefits over CVS. What about bitkeeper? Has anyone tried it?

9 Feb 02005

google maps

I liked this dissection of Google Maps.

The interesting bits:
- they use PNGs with 8-bit alpha channels to make -really- nice transparent images that they can overlay on the maps.
- they have an XSLT processing engine—written in JavaScript of all things!—that converts XML location/POI data into HTML for display. Seems like a lot of extra work, but it is eXtensible I suppose.

I played with Maps some more tonight and I’m really impressed. The map dragging works really well. And I love the fact that I can expand my browser to full size and actually get a huge map. That is so beautiful.

30 Aug 02004

comment registration turned on (sadly)...

After receiving a record 85 blog comment spams about porn in one hour, I decided: it’s time to turn comment registration on. I hate to do it.. but this means that you need to do a (fairly quick) signup at TypeKey if you want to comment on this blog.

I welcome your (relevant) comments.

19 Jul 02004

usability

Open source usability is indeed a major problem—I think it’s the biggest thing that has kept the Linux desktop out of most hands. With so many coders switching to Mac OS X, we know that even people in the software industry avoid it. It’s a shame that the Linux desktop is not so easy to use, because the community has put so many hours into the development of projects like KDE (which describes itself first as easy to use, right on its front page). I often feel that the community has made a bed which it is now avoiding.

One problem is that open source is largely about cloning commercial software and then adding features. Many developers add one or two features they want for their own use, incorporate their changes back into the source without a thought to the utility of, or excise created by what they’ve done (Luis Buñuel: “Every object conceals another.”).

We don’t need more features. No one wants a system with 34 buttons in the administrative part of its file brower, or 28 options on its main menu, 16 of them being submenus that beg questions like, “What’s the difference between Office and OpenOffice.org?” or “To change my desktop background, do I go to Settings, System, or Utilities?”

People typically have a pretty small set of tasks they ever want to perform with a computer program, and the variety from person to person isn’t that great, so what we need is fewer options. You might propose that we just remove some features, sculpt the software into perfection, and we’ll be all set, right? This is what Frans Englich proposes in a recent article on NewsForge. I think this approach would help, but I don’t think it’s the answer. We can incorporate a lot of options if they’re presented in an organized, hierarchical (some options more strongly emphasized than others, many options hidden away for only the most advanced power-hungry users to find), and intuitively obvious way that is consistent and cuts across the entire system.

Usability starts broad and goes down to the core, within and between software; it is not just the fine patina at the surface. Though sculpting current software down to a simpler form that addresses 90% of the typical user’s goals may help, I think great usability is thoughtfully considered throughout the development cycle.

This is how Apple has been so successful when it comes to usability: they’ve chosen to design and control every level of the experience, not even stopping at the edge of your desk. Apple is practically designing a lifestyle. Their individual compontents are easy to use and consistent with each other, and the interaction between components is clear and consistent. Usability considerations aren’t constrained to one program. Apple’s approach doesn’t just go to the core of software, it goes to the core of all software and hardware in their system and to the global APIs that are available in all software. A thorough style guide means that keyboard shortcuts in one program that are consistent with keyboard shortcuts in another, and so on. So while you may look at a small change in source code and say “this makes my program more (or less) usable”, this is not a strategy for great usability in my opinion.

I do think we can have usability in the open source community. Making incremental changes to individual pieces of software won’t cut it, however. I believe that (yet again) a new Linux desktop/distribution should be formed, with usability as its purpose, and with the following goals:

  • Maintain interface consistency within and between all components. No software should be allowed in without meeting these criteria, and no more than one program of any kind is allowed (unlike today where there are five options for MP3 players, etc.). This kind of consistency is best achieved, in my opinion, by an auteur—someone who provides the central vision, and acts as gatekeeper and high-level decision maker, just as Linus Torvalds has done so successfully with the Linux kernel.
  • Severely limit or reëmphasize the options available to the user. We’ve already got way too many choices in this world. Lets reduce interface excise, hide or remove the least-used options, give greater emphasis to the most-used options.
  • Require all programs to use consistent keyboard shortcuts, preferences, operating system functions (like cut and paste), the same file browser, and so on. Make overarching OS-level decisions about the direct manipulation of data, so that this is consistent across all programs. This isn’t just about drag and drop, it’s also about spell checking, renaming things, etc.
  • Waste no pixels, leave as many as possible for content, use as few as are needed for interface.
  • Prevent crashes by allowing only mature, low-bug software (the Debian approach)
  • Make it comfortable for my grandmother or the hacker next door. Comfort requires the OS to become a part of the person using it, to take on the user’s personality. A new user should be able to quickly settle into the system and feel good using it. After all, the goal is to make the user feel productive doing whatever it is they’re doing, and productivity is just as much an emotion as it is an internal measurement.

There are more items on this list; I don’t know them all. A usable Linux desktop will need a lot of thought before it gets off the ground. I think it will need a clearer statement of the goals, a thorough style guide, and so on. This project could be greatly informed by other style guides and usability books, but it also needs to be tailored to the nature of open source development.

If executed properly, I think the final desktop environment will be far and away more usable than the mess we have today. Now, who wants to write up a vision statement? ;-)

13 Jul 02004

roundabouts!

roundabouts in America
the magic roundabout in Swindon, UK
RoundaboutsUSA, the site dedicated to free traffic flow through the design and use of roundabouts.

21 May 02004

RFID race

Plant a few RFID readers around town. Give each race participant a card and map with the reader locations. They choose the best route and, using any transportation means, strive to be first to scan their card at each of the readers. All participants meet back at the origin to celebrate. Game progress is tracked on a web site that each reader talks to.

9 May 02004

real virtuality

Feeling much better now, with my hearing back, and some new inspiration.

I saw an interesting article today in the NY Times about new and interesting ways to merge video games with real world games. The article focuses on a Pac-Man game played in real life in Manhattan, where strategists remotely track the players’ movement using GPS and assist via cell phone. This kind of thing has just started to blossom in the last year as WiFi and GPS became cheaper.

What I love is how this flip-flops the idea of virtual reality, which we tried and tried so many times. Why bother? With video games, five or so years ago we were starting from the virtual space and looking for ways to make it more physical (guns that aim at the screen, Dance Dance Revolution, steering wheels and petals). Now we have what I’ll call “real virtuality”, starting from the physical space and introducing virtual controls and feedback, a more promising approach, in my opinion. With virtual reality, we are slaves to the machine and its limitations. But real virtuality starts with our goals as active humans and allows computers to assist in whatever limited way they can. And right now, even with the limited technologies we do have for this, there’s a lot of untapped potential.

6 Apr 02004

"voice chat"

Standard voice chat is build into most instant messaging clients, but it currently emulates CB radio, not instant messaging. This is a bizarre discrepancy, isn’t it? Some voice chats are full duplex, so they emulate a telephone. A nice little throwback, eh? I guess the idea is that if you’re sitting right there in front of the instant messaging client, you don’t want to click on each voice message as it comes in.. you just want to hear it and respond.

Step back and look at the task of typing out an instant message on a computer. It’s slower than voice (not as much information transferred per unit time, unless you can type 200+ words per minute) and it suffers from most of the drawbacks of a telephone conversation (you can’t see expressions on the other person’s face, you’re chained to some device and missing out on some part of reality, etc.)

For all these drawbacks, I see a few benefits to typed instant messaging. The recipent doesn’t have to be around to get the message, a response is not immediately required, and a message can be read faster than it can be spoken. A message can be thoroughly reviewed before sending. This is what makes IM worthwhile to so many people. Especially: since I don’t have to reply right away, I can finish up some other task on the computer, then compose my reply. My other task could be anything.. possibly another IM conversation.

Now. Why isn’t it possible to set up voice chat so it emulates instant messaging rather than a telephone? You say your message to me and it gets queued up on my computer. I listen to it when I’m ready and reply.

The ultimate scenario involves either speech recognition (so you can edit your text before sending, and so it arrives as text not voice) or an easy way to review and overdub your message before sending it. These are probably major drawbacks, rendering the idea infeasible at the moment. But I still like it.

11 Feb 02004

what about portrait?

Ordered an LCD monitor for home. It pivots 90 degrees! I’m wondering if I’ll start doing everything in portrait mode… 1024x1280 makes a lot of sense for the web, word processing, etc.

Has anyone ever made a movie shot in portrait mode? 9:16 aspect ratio? I’m sure some crazy early 20th century filmmaker did it. Maybe it’s time to do it again.

Long day. Feeling satisfied. Off to bed.

7 Feb 02004

finding conferences

A question: Does your employer send you to conferences as part of your job? From Sundance to SXSW to , every job has its conferences. How do you find out about them (aside from the bigger ones), and how do you know which conferences live up to the hype? Employers will send you to a conference that relates to your job, but it’s up to you to find and attend conferences that further your own interests outside of that.

How do you find out about them?

5 Feb 02004

tidbits

I have a love/hate relationship with European washing machines, but have you seen James Dyson’s washing machine? Apparently it is faster, it’s more efficient, it holds more laundry in a smaller space, and it cleans better than anything we’ve got. Will he ever stop? I hope not.

Household items James Dyson should revisit next:

  • The Kitchen Mixer: make kneading more human-like. Use sensors/feedback systems to treat the dough nicely.
  • The blender and/or cuisinart: keep the size more consistent across and between batches. Every chef wants each piece of chopped vegetable in a batch to be exactly the same size, so they’ll all cook evenly. I’d like to see a cuisinart that can take a carrot and give you a pile of perfect 1/16” square carrot pieces.
  • Toaster oven: Don’t let anything char. Toast more evenly. Etc.

He doesn’t need to revisit the coffee maker, alarm clock, television, microwave, or any other appliaces we already pay too much attention to.

Book idea: The Road Trip Road Atlas. Large format, something you can really get your face into. Along with typical USA road atlas content, this guide adds full-page or multi-page maps of national and state parks, with photographs (to give a better idea of what the terrain looks like), seasonal day/night climate graphs, trails, some indication of scale beyond the simple miles/km scale, and other stuff you should know: What trails you’ll need passes for in advance, what to bring with you when visiting this area, animals to look out for, etc.

Finish this story: “We first met in the trunk of a car.”

Want to start working on a 1280x1024 or higher res. web site. How will the web change when you’ve got 1280x1024 to work with? Do you know of any sites that require it? It could be bad— more pixels means more room for interface. And as they say, no matter how great your interface is, it’d be better if there were less of it. But it could also be good— more room for data. Hmm.. If I ever get a 1280x1024 flat panel, I may start designing for that size, see where it goes.

31 Jan 02004

Multiples of 1

to Hani:

I have been using the Multiples of 1 comment card as a mouse pad for the last 3 months, as a reminder to send in a little feedback. Better late than never?

Anyway, I wanted to let you know that I thoroughly enjoyed the conference. At a company like Zipcar, we don’t have many opportunities for the kind of thinking that this conference evoked. We’re too busy and too small to step very far from our daily work, but I’m so glad I had the opportunity.

I know the conference was broken up into separate sessions, but when I think back on it I remember the individuals, not the sessions as a whole. I think you managed to draw people from such diverse areas that, in the end, the common theme of each session was blurred. That didn’t diminish the experience for me.

First, I think when you invite a speaker, you can only impose so much— they’re likely to make a few changes to a presentation they’ve given a number of times and deliver that. It’s good because they stay within their area of expertise, just putting a slight spin onto it for the conference.

Second, even if I didn’t always see the relationship between topics within a session, I loved the variety. I think there’s still a value in having a theme for each session, if only to steer the panel discussions and look for commonalities. But for me the conference was not about finding specific answers to the questions presented— for most questions answered, new ones arise, and that’s OK. I think that’s how we make progress.

As for next year, an interesting theme might be found by looking further into the past and future. How can we help social networks stay afloat through revolutions, wars, and other major historical events? Can we look to history for inspiration? How about far, far ahead?

Example topics: What can we learn from the role that text messaging played in the overthrow of President Estrada in the Philippines a couple years ago? Or, how might technology better prepare us for an emergency on the magnitude of Sept. 11th— mobilizing emergency crews during a crisis, perhaps using P2P mesh networks to facilitate communication when a dispatcher is no longer available or feasible?

Anyway, thanks again.

best,
Carl Tashian

30 Jan 02004

remote control

I love Apple’s latest version of X11 under Mac OS X. It is fantastic:

  • It uses standard OS X widgets for close/resize/minimize.
  • You can Exposé X11 windows! You can put them into the dock!
  • And you get a lot of other niceities of native OS X apps. You can even copy text from X11 windows into OS X windows!
  • Optional root window could let you have your full X11 desktop.
  • most importantly, I get to use my loud and obnoxious Fedora box from the comfort of my laptop.

Speaking of remote desktops, also of note is Microsoft’s fine Remote Desktop Client
for the Mac, which lets you connect to any Windows XP or 2000 server, should you care to. Why is it better than RealVNC?

  • definitely faster
  • when using it on a Mac with spanning monitors, you can have the Mac on one monitor and the PC on the other
  • you can make the Dock pop up while in full screen mode when connected to a Windows box
  • etc…

And while we’re on the topic, I have to say that Apple has really outdone themselves with their latest remote desktop solution. It’s a little big brotherish, but were I running a lab of Macs, I’d want something like this.. along with Mike Bombich’s great sysadmin software.

9 Jan 02004

finite state machines

I’m doing finite state machine design for work today, to handle communication between our embedded system and a new GPRS modem.

To refresh my memory about these things, I went hunting around on the web. I’m surprised by how few good resources I found, considering this is a cornerstone of computer science. Most resources are very academic/theoretical, with too-simple FSM examples like the alarm clock, traffic light, etc. Most are focused on the digital logic design side of things, as opposed to the compiler design/Yacc/Lex side. Maybe I’m not googling for the right things, maybe this is too common, but I would expect to find a lot of finished example code for finite automata.

FSMs are simple as long as you follow the standard procedure for them:

  • Write a human description
  • Draw out a state/transition graph
  • Do some state minimization / Quine-McCluskey voodoo
  • Build your transition table
  • Write the code
  • Test and enjoy!

I remember encountering CircleMUD when I was about 14, and learning C by reading it. It is chock full of all the most important procedural programming concepts, and it’s well written and well commented. It has a couple good state machines, excellent examples of TCP/IP socket code, pointers and structs galore, binary/flat file management, and some well-designed algorithms. Were I teaching computer science, this program would be the syllabus, and for a bit of back-story, students would read a few seminal books (a basic algorithms and data structures book, TCP/IP illustrated, and a compiler/FSM book). After my course, you’ve got yourself a minor.

I think it’s how we all learn best: we need some context in which to base the theoretical knowledge. Otherwise it’s just a vacuum of theory, with no concrete output, no results. It’s really only meaningful when you’re high as a kite, or if you’ve already had a lot of concrete experience and you’re looking to zoom out.

One benefit of OSS is that its increased this library of good code from which many can learn. It’s accessible. I’ve always wanted to step through the core of the Linux kernel source. There’s even a book of the Linux kernel source, neatly annotated.

Of course, OSS has also added to the vast wasteland of horrible code. Choose wisely the code you wish to learn from.

I think there’s a web site idea here somewhere (and it’s not Freshmeat or Sourceforge).

8 Jan 02004

minor OS X annoyances

Greg and I got eMacs at work last week. Here are the only annoying things that have come up, as far as I can recall.

Is it at all possible to select a dropdown item in a web form on Safari using only the keyboard?
Can you mount SMB network drives automatically when you login? (I’ve seen this and this, and have tried that with no success)
Does Apple make some kind of iCal corporate server? Something akin to Exchange’s calendar, that is?
Is it possible to print to an SMB network printer? (a DeskJet 3820)

Those are my only OS X questions after a week of using it at the Zipcar office. Considering it’s otherwise 100% Windows at the office (including the Exchange server), I’d say the switch was pretty smooth. We have Active Directory authentication going on and everything. We had to give up the following apps:

  • MPLAB IDE and PIC C compiler, for embedded systems programming
  • TOAD SQL monitor, which isn’t that great anyway. But I still haven’t found an excellent SQL monitor for the Mac. Or for any platform, really.
  • Exchange calendar features (iCal is cooler, but it won’t sync with Exchange afaik)
  • Oracle Enterprise Management stuff. It runs in Java but … you know how Oracle is. Oracle’s OS X progress seems to have come to a halt a year or so ago.

That’s it, I think. I could probably do ALL of these things with Virtual PC, which Microsoft will supposedly update soon. Granted, that’s half the software I use for my job, but it’s the less important half. Safari, ssh, a good text editor, and CVS is the other half.

Meanwhile, others in the office are wowed by everything from Exposé to the eject button on the keyboard.

5 Dec 02003

dynamic demand, dynamic pricing

Greg forwarded an interesting site to me today:

An Analysis of Netflix’s DVD Allocation System

Netflix’s approach dynamically adjusts the quality of their service for different classes of customers. As a new Netflix customer, it’s important that I have a good experience, so they’ll give me better access to new releases. As a long-time but high-margin customer, I’ll get a similar treatment. Since they have a subscription model, infrequent users are high-margin users. But if my habits are eating too far into their profits, the availability of items in my movie queue will fall off dramatically. They’re actively adjusting my behavior (with respect to their service) so they can make more cash. Once I’ve entered Netflix limbo, I may end up going to Blockbuster to get that new release I want, which is fine with Netflix— I’m paying them monthly, not per rental. This model, properly tuned, will only eat into customer satisfaction for the kinds of customers they don’t want anyway.

Another example of this can be found in credit card customer service centers. Some credit card companies are reportedly sticking their worst customers (the ones with excellent credit, who always pay their bills on time) on hold for longer, and immediately answering calls from their best customers (the ones who pay the minimum each month, etc).

I call this the “fire your customers” model of achieving higher margins and selective customer satisfaction with the limited resources of any profit-driven company.

Lets look at another approach— the approach of Easy Everything, the company behind Easy Internet Café, Easy Cinema, Easy Jet, and others. They are all about dynamic pricing, so rather than firing or otherwise inconveniencing the customers they don’t like, they simply charge more. Easy Internet Cafés make you pay by the minute for access, and their per-minute price is dynamically tied to the utilization of the cafe. You pay a lot more during peak hours. Easy Cinema prices their movie tickets dynamically, depending on a combination of how far in advance you book (want to see Gigli for 90 pents? Book 2 weeks ahead) and how popular the showing is (based on past utilization or on current bookings made so far).

I call this the price tweaking approach, and it seems very much in vogue right now. Of course, airlines have done it for years. It’s typically combined with lots of value-added things that cost extra. At the Internet Cafe I can buy drinks, print things out for $x per page, etc.

I don’t mind paying more at peak times and for extra services; it makes sense to me that I should, and while I do feel I’m getting a good deal if I play the game right, I’ll always wonder what the person sitting next to me paid. Also, as opposed to the “fire you customers” model, my experience will not be worse at times when I pay less (in fact it might be better— I’d rather sit in a quiet, mostly empty Internet cafe anyway). But the dynamic pricing model is annoyingly opaque when compared to Netflix or the simple “Matinee vs. prime-time” movie pricing that most theaters use. But by requiring you to put the movie tickets onto your credit card, they make the dynamic pricing pill easier to swallow.

Anyway, I think both of these models are really just getting off the ground. They rely heavily on computer-based analysis, trends, etc.

Other things to think about:
- As an outsider, what can you glean simply from the dynamic pricing? If you know what goes into the pricing, and how it’s weighted, you might be able to extrapolate backwards and get some really nice information about usage patterns, etc.
- What other traditional businesses set prices dynamically?
- Cell phone companies, roughly based on network utilization
- “Filenes Basement” discount clothing store, based on how long it’s been sitting around.
- Music? Listen to it the first time for cheap. Each time thereafter, the song gets more expensive, until it eventually is free. Nice concept, wouldn’t work in the real world.
- You tell me!

12 Nov 02003

contact management

So I got bluetooth going on my new cellphone, and I’m using iSync to sync up all my contacts now. I update a phone number in my Apple address book, and my phone will sync. So will my iPod.

But I can’t stop thinking about doing contact management in a more distributed way, not just distributed between all my devices, but distributed between all the people in my network. I’m surely not the first or second person to think of it this way, but it seems like there’s no great implementation yet. Why do I need to manage my address book independently of everyone else? The trouble is, if Jane tells everyone she has a new cell phone number, all of her contacts have to update their address books. So why not have Jane store her contact information on a server, and she can update it as she chooses. I sync to this server when I’m connected, and my local copy is updated automatically. If my phone syncs up shortly after, then I never really need to know that Jane changed her number. It just changes because Jane is part of my network. This is a sort of Friendster/LDAP hybrid. I like it.

Jane has a blog, too, perhaps, that’s tied into her network. Her blog has access control, so she can write an entry which is readable by everyone immediately around her, a specific group of people, everyone two or three links out in the network, or the entire world. The resulting discussion within each entry is also limited in scope. Since Jane has already established a trust relationship with the people in her immediate network, she can trust them with some items that she wouldn’t trust others with. Just as people have different social groups that they’re in: work, place (neighborhood), faith, virtual, etc. Jane needs controls over who sees which parts of her blog. Maybe she doesn’t want to talk about her job with people from her church, etc.

8 Nov 02003

relative speeds

I’ve been thinking about the relative speeds at which different pieces of information move .. and the relative depth of these chunks of information, and some other psychadelic stuff like that.

For example, consider a continuum which has the “fast” information on one end. The fastest being a chat room, then Usenet, then Slashdot and news organizations (the first level of editorial logic and classification). On the slower end, you have “knowlege bases”, the Linux Documentation Project, and other bigger (slower-changing) documents. Standards documents and RFCs are probably at the slowest end. They are infrastructure documents.

I think there’s an interesting analogy here with houses, ala How Buildings Learn. The fastest moving parts of a house are the people and their stuff. The slow moving parts are the biggest parts: the foundation, the roof, etc. If you look at the industries, the furniture and “stuff” industries are the fastest moving, and the building industry is relatively slow moving, with raw material standards like wooden 2x4s and PVC tubing.

And of course, in both worlds, there’s room for experimentation on the infrastructure levels. A Frank Ghery building is an infrastructure experiment. His projects require the use of new materials and new construction techniques, etc. But it’s expensive. Interestingly, the entire Open Source movement has grown from the bottom up, out of the infrastructure, starting with the kernel, the core of a computer’s software operations. Even now, Open Source projects haven’t been able to come up with decent user interfaces and “facades” for their work. It’s largely underground, and I think that’s why it’s taking over the industry.

As Stewart Brand discusses in How Buildings Learn, many organizations spend ludicrous sums of money on the facades of their buildings, more so than any structural costs. Maybe there are similar costs associated with facades (user interfaces) in software, and that’s why OSS hasn’t addressed these yet. Or maybe the design “dictatorship” (like what Apple does) isn’t strong enough among the OSS community, so design is too fractured and the audience is too vague for anything to be labeled “user-centered”.

Hmm.

7 Nov 02003

to patrick, re bugzilla

hi Patrick,

Got your VM.

We have a blog here in the Engineering department at Zipcar, and we use for general progress reports. Fleet/Operations has just created one for themselves, as well. We try to send a blog out to everyon in the company each week (on Fridays), and cover current and a little future progress.

You’d quickly fall asleep if you tried to read our blog in reverse chonological order, though, because the narrative flow from one week to the next is non-existant, and we reiterate a lot (“I’m doing XYZ next week”, followed by “This week, I finished XYZ”). But you could ask “what were we doing last July”, read one entry around there, and get a pretty good idea.

But I’d argue that you’re putting too much stock in blogs. The trouble with them is there’s only a handful of ways to slice the data: temporally, by keyword, and maybe by category. It’s really just a diary. While there’s something nice about the simplicity of blogs, I think this simplicity gets people believing that blogs are the end-all solution for many kinds of problems; the reality of it is, I think a lot of blogs are used in leiu of a more appropriate tool (that might not exist yet).

For example, I see Bugzilla as a better (though still not ideal) solution when it comes to software development. Bugzilla lets us keep up with what we’re going to do AND notify the appropriate people when progress is made on the items they’re interested in. But bugzilla is just blog * N, and the trouble with it is that it’s very granular and doesn’t give a good “macro” perspective. Bugzilla forces us to pose everything as a problem, and it isn’t good for much else, like medium- or long-term planning or “we hired an intern this week” (status = RESOLVED ;-)

So we use MT as our meta-blog, and that keeps people informed about things without the intimidation of going into bugzilla and looking around. It also lets us speak to some of the non-bugs I mentioned above.

But back to Bugzilla, if you’ll let me ride the high horse for a moment. Bugzilla also lacks a coherent categorization feature when you have hundreds or thousands of bugs. You could talk about the “component” of your software product that this bug applies to, but with a quickly changing landscape, you’d end up spending a ton of time adding and retiring components. Also, components are frequently in the solution space, and bugzilla is for reporting problems, so bugs will get mis-classified. Now you need someone to go through all of them as they come in, diligently verifying and reclassifying, etc.

On that note, I’ve been thinking a lot about QA lately, and how perspective changes a problem and its possible solution set. I could enter a bug called “I have an ear infection and need some antibiotics”, or I could enter one called “I can’t hear well and I keep getting dizzy.” The former is really a solution stated without symptoms, a self-diagnosis. I hear these every day, and they’re usually wrong. I instinctively tell people to back up, tell me what the symptoms are, explain whether they can reproduce it or not, etc. When a problem is rephrased like this, I’m no longer biased toward their solution, and I can perhaps provide something better than they had in mind.

A better method of classification might be to a “google news”-style summary page that classifies bugs simply by finding commonalities within the text. New components are auto-generated, and Bugzilla can tell you which components are the most active right now. This lets you group and identify common problems, so you’ll more easily spot duplicates and can see which parts of the system are most prone to failure at any time. Do you know much about this kind of data mining and how it works?

Anyway, what I’m really talking about is the reporting part of bugzilla, which is not really a part of bugzilla at all. I think bugzilla was created to solve an operational problem of software development, not an analytical/planning problem, so it’s not yet great for aggregation and so on. Certainly the built-in bugzilla metrics (like the “# open bugs over time” graph) are cute but say nothing that you don’t already know.

I think it’s time for something else. I want to sit down with a couple other people and figure out what it is.

Carl

1 Sep 02003

'beaver.A' virus alert

Virus Alert:

A new virus is clogging Internet mail servers and hogging bandwidth around the world. Though it’s not one virus, written by one person, I believe it needs a name: ‘beaver.A’ as we’ll call it, takes on many forms and pervades mail servers around the world.

Virus Type:

Trojan horse spam robot

Threat Level:

High

Behavior:

This virus is installed in SMTP mail servers throughout the world, and takes a wide range of forms. For most server-based virus scanners, the behavior is this: When the mail server receives any known e-mail virus from anyone on the Internet, it sends a warning message to the perceived sender of the infected message. The perceived sender is often not the actual sender— many viruses pick random e-mail addresses from the victim’s web cache and address book, masquerading as them. This is where ‘beaver.B’ does its damage: It sends a “you have a virus” warning message to the “originator” of the message, a third party who may not in fact have any virus. The warning message instills fear and prompts the recipient, perhaps, to buy an anti-virus package from the same company that sent the false warning.

At the peak of any e-mail virus outbreak, when Internet resources are already strained, the varied warning messages produced by ‘beaver.A’ clog servers, hog Internet bandwidth, and fill random e-mail boxes with lies and advertisements, as spammers do.

How it spreads:

This virus is a Trojan horse, but it doesn’t spread in the traditional fashion (via the network, or hidden inside data files), and that’s what makes it so insidious. It hides in the shrink-wrapped products of legitimate virus prevention software vendors. With each sale and installation of mail server virus protection software, it spreads further. Mail server administrators who install virus scanning products to protect their own users from e-mail viruses, are often oblivious to the nuisance they’re unleashing on everyone else.

Prevention:

People receiving these warning messages may contact the server administrator of the system that sent the warning. Server administrators may refer to the user’s guide of the SMTP server virus-scanning product they’ve purchased. Companies producing these products may, in future releases, eliminate ‘beaver.A’ from their product by supressing the warning messages by default, especially when receiving viruses with unknown origins.

Carl Tashian / www.tashian.com

13 Aug 02003

social networks

I was talking with Greg and Max today about social networks, thinking of ways the Friendster model could solve all the worlds problems. We went down a few paths….


Media Recommendations:
I want to get into new music, new books, etc. Amazon has gotten me part of the way there, but I have a problem with their algorithms.. if I buy a jazz CD, I’ll see lots of jazz CDs in my recommendations… until I buy a polka CD, and then it’s all polka.


Here’s what I might want out of a good recommendations system:

- A human should make the recommendations by revealing their likes and dislikes to the system.

- Once you have these rankings, show me individuals within the network who have the most overlap with me. (Amazon says: people who bought X also bought Y, but that is averaged out and therefore not as interesting.. I don’t trust the averages as well as I might trust one person I like the taste of)

- Let me build up a trust relationship with other individuals based on how well I like what they recommend. The strength of these relationships will decide the likelihood that some new item of theirs will be recommended to me.

- Understand that music recommendations != book recommendations != electronics recommendations. I trust different people for different things.


What I think we have here is a mesh network. It’s sort of peer-to-peer instead of Amazon’s more centralized averaging system. Amazon may have attempted to do something more like this (something more “human”) by adding those recommendation lists, but the flaw is that I don’t want to know what some random dude who liked this one item I’m looking at also liked. I need more than one data point.


My current solution to the recommendations problem, at least for music (which I go through a lot of very quickly), is a simple mix CD swapping club. The other members just happened to have fairly congruent tastes with mine, and there were enough things I’d never heard of to keep me excited about it. We meet once every week or 2 and dicuss (for an hour!) a mix CD someone made. I’ve been around for 2 CDs worth so far and its opened me up to about 5 new artists I like that I’d never have heard of otherwise.


Amazon doesn’t do that for me.


Alumni Networks: Why isn’t Friendster-style networking sold to schools for alumni (or even current student) networks? Rather than providing a list of alumni who graduated in 2000, why not allow a Friendster network within the class. Then when I ask “Who was Agnus Beef? Where do I remember her from?”, I could see that I knew Agnus through my friend Chuck… etc.


Edward Tufte, in his recent PowerPoint slam, The Cognitive Style of PowerPoint, complained that a simple list of items is uninteresting because it provides no relationships between items… and this is one of the fundamental problems with PowerPoint’s list-based presentation model, he says. If you could have arrows between list elements, to show relationships, you’d add an entire dimension of information.


But I’m getting off topic. Time for sleep.

22 Jun 02003

Thoughts on Friendster

I just started on Friendster— and I think it’s a totally briliant idea. Something about it just sucked me in, in a way that no other community has since MUDs.

Why does it feel so good? I think the magic ingredient of Friendster is exclusivity. “Omit the thing that no one thought of leaving out” — what Friendster somehow omitted was a lot of the arseholes on the Internet. By limiting the extent to which you may roam, the signal is boosted. My friends are “cool”, so their friends are probably “cool”, etc. I like performing a search for people and not being overwhelmed with results. It gets boring to me after about three degrees anyway (or, more interesting!). By four degrees, most commonality is just by coincidence anyway.

There’s also a “me generation” ego trip thing going on with the profiles and testimonials. You want me to write about myself? Sure, I could write all day about myself. And of course I love hearing how great I am from my friends. And I a