Carl Tashian

March 2007

« February 2007 | Main | April 2007 »

29 Mar 02007

the muffins

I made these this morning, adapted from Mark Bittman — it’s a mash-up of his muffin recipes. I like these because they cook faster than coffee cake, and they have more crusty goodness.

Preheat oven to 401°F. Grease a standard 12-guage muffin tin. Prepare three bowls:

Bowl 1, dry ingredients:

  • 2 cups (~9 oz) AP flour
  • ¼ cup white sugar
  • 1 tsp baking powder
  • ½ tsp baking soda
  • ½ tsp salt

Bowl 2, wet ingredients:

  • 1 Tbsp melted butter or canola oil
  • 1 egg
  • 1¼ sour cream or yogurt

Bowl 3, tasty ingredients:

  • 2 Tbsp melted butter
  • 1 tsp ground cinnamon
  • ½ cup packed brown sugar
  • 1 cup finely chopped pecans

Mix dry ingredients to combine, burrow a well in the center, and add wet ingredients plus half of tasty ingredients. Fold in quickly until everything is just hydrated. Fill each muffin slot about 8/12ths and top with other half of tasty ingredients before baking. Pour a little water into any remaining empty muffin slots.

Bake 23 minutes. Let stand 4 minutes and 53 seconds before flipping the pan over and turning its contents into your mouth.

26 Mar 02007

the DVD package

I recently purchased Brian Eno’s 77 Million Paintings (not to be confused with Sala’s One Thousand Paintings), which generates paintings on your screen by layering a set of images and slowly fading between them. The software is designed to emulate a 1970s slideshow installation that Eno built; many of the images are from the original slides. Most of them are abstract scratches, geometric patterns, color blocks and swirls, but some paintings have very clear imagery: rocket drawings, schematics, halftoned faces etc. Each time you run the program, it starts in a different place, so you’re always at the dawn of a new day of paintings. But patterns do repeat: the number of slides is limited, so there is definitely a style among the imagery—this is not pure randomness.

But I have to say that since I bought this program a month or so ago, I’ve only run it a handful of times. I ran it for friends once. Karl and I stared at it for a few minutes once. When you get it going, it really is captivating and beautiful, but because it’s a self-contained program, you really have to want to see it. The activation energy is high, especially because there’s nothing you can do in 77 Million Paintings but sit and stare (and listen—the soundtrack is also generated). The only thing you can manipulate is the speed of the transitions before the show starts. So it’s unlike a video game or a word processor or any other application on my computer. It has no real functionality; it’s all form. And that’s frustrating for me, because I never go looking for pure, self-contained form in my Applications folder. Every other program I have is about me somehow manipulating content of my choosing, and here comes Eno with this rogue Application to which nothing can be Applied. It’s a misfit.

A screen saver seems like the ideal venue for pure, self-contained form, doesn’t it? I’m really surprised that Eno didn’t take it in that direction, or at least provide the option. He must have considered it, but I couldn’t find an explanation in the packaging as to why it wasn’t a screen saver. In his diary, Eno went on and on about screen savers—he loved them!—so I’m baffled.

I can only guess why it it’s not a screen saver. When active, screen savers are not usually the center of attention. They’re a background element, something one might see across the room, or something one might not see at all because one is down the block having a sandwich. Eno may feel that his work should really have people’s undivided attention when it’s running, and that it would be an insult for it to exist only as background. That is, maybe he wanted the software to be as true as possible to its original museum context. Unfortunately, people do not use computers as they use museums, so I think the intent falls flat.

25 Mar 02007

Jobs like real estate agent, car salesman, or insurance agent used to be very profitable because these folks were able to take advantage of specific knowledge about the market, pricing, and so on. They were local gurus, and many customers didn’t look too hard for alternatives—they just got taken advantage of. But now these knowledge areas are being opened up online, and it’s harder for, say, car dealerships to make a ton of money. With a bit of online research, you can walk in to one dealer and demand a good price, where previously you may have had to pit two or three dealers against each other (if they weren’t colluding…) and do some unpleasant work to come up with a reasonable deal.

I wonder if the resurgence of atheism in pop culture is similar. Sure, there’s the quiet non-religious minority in this country, and it’s pretty huge. But maybe the religious majority, especially the young religious majority, still forming opinions, are finally going online and getting access to other points of view. Kids being raised with Internet access can now easily get a second opinion when they’re questioning their religion. Maybe they’re at least fascinated by atheism, whether they actually buy into it or not. They want to know more, and finally they’re able to shop around.

And of course, the opposite is true, too. Kids in atheist families finding out about fundamentalism and how much fun it can be.

Either way, I bet the parents are just as upset as the car dealers.

24 Mar 02007

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

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

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.

10 Mar 02007

Missed my flight to Austin this morning; will leave at 11:45am instead. In response to this blog post, I’ve just started reading Cities by John Reader. With earplugs and a cup of coffee, Terminal C is not a bad place to read. The light is very good along the windows, and there’s no lack of activity out on the tarmac.

I’m rarely up so early. I saw the sun rise out the bus window, and it was really pretty along the Fort Point Channel docks, looking back toward downtown. Sunrise has a beautiful quality of light, nicer than sunset I think. It’s serene and is more of a silvery blue than sunset. Sunrise feels different emotionally, too — the slow reveal of a landscape that’s been hidden for 12 hours. It uncovers the the potential of a new day, but it’s not an innocent potential. It’s an omnicient potential, and if you’re observant, you might see things at sunrise that you’re not supposed to, perhaps the last moments of some illicit transaction or a crime in progress. Sunset is all glamour, warm and fake, a cloyingly comfy Kodak moment. Sunrise is cold, subterranean, even surly. But it’s genuine, a real astronomical event, clearly stated, evidenced by the dew. And when I see it, I feel part of a small community of dissidents: early risers, alley cats, drug runners and club heads. Where sunset is sold out and overrated, sunrise is an exclusive event, perpetually underbooked, missed for months at a time by most of us who’d rather not face its raw power, preferring vacuous dreams and tight schedules instead. We’re rightly scared that the dawn might quietly reveal more to us than we’d care to know.