Archive for September, 2007

Dreadlocks no more: My Community Haircut

Posted in Ego, Personal Growth on September 29th, 2007 by leodirac – 2 Comments

Leo's Community HaircutAfter 6.5 years of having dreadlocks, I decided I was done.  So while I was at Burningman this year, I had my friends help me cut them off.  I wandered around on Saturday with a pair of scissors, and would ask friends one at a time if they would help me by cutting off one of my dreads.  Some of them went into a bag for future nefarious purposes, and some of them got put into my new dread hat, and others got burned ceremoniously.  In all, 33 people helped cut my hair.  "It takes a village" Mason said.  I did a tiny amount of trimming myself afterwards, but really this is a community haircut.  At some point I’ll need to get a professional to clean it up.  But considering how it was formed, I think it’s not bad.

Now, with a few weeks of introspection and perspective, I can explain my thought process and motivation.  A big part of it was that I was sick of maintaining them.  For a pale guy like me, keeping dreads looking half-way decent is a lot of work — arguably more than I was doing.  I was attracted to the hairstyle initially because of its promise of never having to do anything with your hair again.  That might be true for somebody with thick, curly african hair, but not for me.  I had to go at them with a crochet hook for an hour or two every couple of weeks to keep from looking too fuzzy.

Now that they’re gone, I realize a number of things about them that were really downers: I had a giant lump of matter stuck to my head.  It got in the way when I lay down.  None of my hats really fit anymore.  Helmets have all needed re-adjustment.  I was always pulling it out of my face.  My hair took forever to dry.  All these hassles are gone.  But bigger than that, now people can run their fingers through my hair!  I feel like a purring cat whenever it happens.  I probably have a limit for how long I find that activity enjoyable for, but I haven’t found it yet.

 

But the most substantial reason was that I knew I was ready for structural changes in my life.  I knew I needed to focus my energy on school rather than my job.  I’d been working at Real Networks for 4.5 years and learned a ton, but doing both has been a killer.  As I squeezed the scissors through that first lock I was thinking to myself, "If I can cut off my dreads, I can make other big changes in my life."  It was an act of empowerment.  I control my destiny.  I actually haven’t exactly quit my job — I’m taking a leave of absence from Real for 6 months while I finish up my MBA at which point I’ll consider all my options.  But I am in control of my time, and time is the most critical resource any of us have.

Next step in taking control of my life: Puppy.  That one’s still pretty scary for me.

Why Desktop Computers Matter as Laptops Speed Up

Posted in Gadgets, Transhumanism, Uploading, User Experience on September 27th, 2007 by leodirac – 9 Comments

I just got a new MacBook Pro of my very own which is undoubtedly the fastest computer I’ve ever owned.  I hear a lot of people saying things like "I don’t think I’ll ever get another desktop computer again."  But to me there is one very good reason to own and use a desktop computer: Desktop computers can provide greater bandwidth connections between your brain and the net than laptop computers can.   I’ll explain what this means.

We’re quickly approaching a world where we’re always connected to the net in some manner or another.  As we all know, the bandwidth with which we can communicate with the net varies tremendously between locations and situations.  It might be
as slow as AT&T’s EDGE network, or as fast as a dedicated office
line with many Gbps of throughput.  But when we’re in the office, the speed of our pipe to the net isn’t the limiting factor.  Usually it’s the servers on the other end which limit how fast we can get things done.  Even when I’m on my DSL line at home, Gmail is so slow that my pipe isn’t the limiting factor.  Effective bandwidth is limited by the smallest pipe in the series from your brain to the information service.

Sometimes the smallest pipe isn’t a network layer at all.  If you’re using your iPhone on the office’s WiFi network, the network will all run super fast.  But your effective speed will be the iPhone’s virtual keyboard, and there are many small devices which are way harder to use than the iPhone.  There are multiple places the communications pipeline can get clogged:

  1. The physical Human-Computer Interface of your device
  2. The UI of the software on the device
  3. The local processing power of your device
  4. The direct connection from your device to the series of high-speed routers and fiber known as "the net"
  5. The processing power of the servers running the information service you’re using

Laptops have totally caught up with desktops in terms of #2 and #3, but not #1.  The reason to use a desktop machine is that you can trick out its Human-Computer Interface to be super high bandwidth.  You can get yourself a really nice ergonomic keyboard, multiple high-resolution monitors, and a real mouse.  A friend of mine even built himself a foot-mouse.  Pretty soon your desktop will start to look like Lain’s Navi.  (Pictured above for those not familiar with it — go watch it.  It’s rad.)

You can do some of this with a laptop docking station if
available, or by manually plugging and unplugging things.  Many laptops
support 2 monitors, but generally one of them needs to be the internal
monitor, which won’t match the second one.  A USB port multiplier can
handle all your input devices which is nice.  So if you’re happy with
just two displays, a laptop can probably get enough HCI bandwidth today.

Looking further down the line, someday Apple will extend the iPhone’s multi-touch UI to iMacs and give us the Minority Report interface.  This will offer far more Human-Computer bandwidth than we’ve ever seen before.  This trend will continue towards direct Computer-Brain Interfaces at which point the line between our biological brains and our "exocortex" will get very blurry indeed.  I can hardly wait.

FeedHub almost solves RSS Infoglut

Posted in Infoglut, Social Computing on September 26th, 2007 by leodirac – 3 Comments

A new feed digestion service FeedHub is attempting to solve RSS Infoglut.  By RSS Infoglut, I mean not being able to keep up with the all the posts that show up in your feed reader.  I recently posted a proposed solution to subscribing to more feeds than you can keep up with after rumors that Google might have hit on the same solution I had been thinking about building.

FeedHub is promising in that it is explicitly trying to solve this exact problem that I’ve identified.  Scoble refers to it as a Custom Techmeme.  But I’m fairly sure FeedHub won’t succeed as it currently exists. Why?  Because it doesn’t incorporate collective intelligence from the social network.  If they write it as a Facebook app, then they’d get here quickly.  But I just don’t believe that enough people will be willing to train this thing for its own sake.  Moreover, there’s no leverage — no network effect.  So even if millions of users have personally trained feedhub for themselves, that doesn’t make it any better for a new user who hasn’t started yet.  It’s just not Web 2.0 enough.

Overall I have to say "Good try."  One thing business school has taught me is that identifying a genuine and solvable need is about the most important thing to creating a business, and they’ve hit on that well.  But the execution seems to fall just a bit short of what’s needed these days.

Google Calendar for the 28-hour day

Posted in Hacks, Personal Growth on September 25th, 2007 by leodirac – 2 Comments

XKCD is a rad web-comic.  Today’s makes passing yo-mama jokes while discussing the concept of the "28-hour day." 

It’s an interesting idea.  Six 28-hour days make up a week.  6 x 28 = 7 x 24 = 168 hours.  {math corrected} If you sleep 8 hours out of 28, then you’re getting 48 hours of sleep a week, which is equivalent to just under 7 hours of sleep a night on a regular schedule.  (6 hours 51 minutes).  Personally, I’m optimal at about 7 hours 25 minutes a night on a long-term basis, but I can go 6 hours a night for quite a while and stay upright.

To see what this might be like with my schedule, I put XKCD’s schedule into a public Google calendar.  It doesn’t fit with my school schedule next quarter, so I won’t be trying it.  But if you give it a try, let me know how it works.

Or here’s the ical version.

Gmail Slowing Down: Why and how to fix it

Posted in Computer Science, Google, User Experience on September 20th, 2007 by leodirac – Be the first to comment

Gmail feels like it is slowing down to me.  Maybe my standards are going up.  Or maybe gmail’s user base has grown to the point where the servers to run it cost real money to Google, and they’ve throttled the computing resources to an "acceptable level of performance."  But it bothers me when I hit the "archive" button and I have to wait half a second for the UI to respond.  Sometimes even a couple of seconds.  Why does it take so long?  Just to get that line off my inbox screen?  The answer lies in computer science.

Gmail is written using a classic MVC pattern — Model, View, Controller.  The View reflects changes in the Model, and the Controller tells them what to do.  Clearly the View is our web page, and in this implementation, the Model is stored on Google’s servers.  What this means is that when you do something like archive a message, you’re not going to see the results until a message is sent to Google’s servers and the response comes back.  Now Google has really fast servers, but networks are slow.  By following this design pattern, Gmail is easy to code new features for and maintain relatively bug-free, but it’s never going to be all that fast.

Gmail engineers could code up optimizations for special cases.  For example, when I’m looking at my inbox and I hit archive on a message, they could detect this case, and just remove it from the page and then tell the server afterwards.  This kind of coding will quickly make the Gmail hard to maintain and result in lots of bugs.  Especially when you consider that multiple clients can connect to a single gmail account at once.  Strictly following MVC makes it easy to resolve conflicts in one place — the server.

A Proposed Solution

There is a solution though.  Google Gears can help.  The Gmail UI could be (and for all I know currently is being) re-architected to use Google Gears as the Model in the MVC pattern.  This means any operation in the UI would be committed very quickly to the SQLite database on your hard drive.  Then another thread would synchronize these changes in the background with the master model on Google’s servers.  Everything works — UI operations are reflected to the user extremely quickly.  We don’t lose all the benefits of storing all our data on the server.  And as an added bonus, we can still work on our e-mail when our computers are offline.  Yet another reason why Google Gears is important.

So when is this coming?  Synchronization and it’s evil twin, conflict resolution, are complex software tasks, so it could take a while.  But if I were placing bets, I’d guess we’ll see this in the first half of 2008.

Why Google Gears matters in an always-connected broadband world

Posted in Gadgets, Google, Tech Industry, User Experience on September 19th, 2007 by leodirac – Be the first to comment

An obvious trend in this industry is towards more pervasive internet access with bandwidth steadily increasing.  The build-outs of WiMax networks, 3G cellular networks and metropolitan WiFi efforts promise to offer broadband-class connectivity to all major cities in the US within the next couple of years.  Suburbs and extended metorpolitan areas will quickly follow.  Even airplanes should have reasonable net access before too long — Virgin America will have it next year.

In this environment it’s tempting to design products that assume customers will always be well connected.  It is certainly easier to build compelling services to users that have a good pipe to the net on them at all times.  So this begs the question: If customers will soon always have good broadband net access, why do we need a client-side data store like Google Gears?  For example, somebody working on a subscription music service might conclude that it’s a waste of time building portable mp3-players with local storage since soon enough everyone will have broadband access everywhere, so why not just stream the music off the net?

There are several good reasons why client-side storage is still important and will continue to be important into the future:

  • Wireless net access sucks down battery.  Always will.  It’s physics.  Local access to data will always cost less battery.  This won’t change no matter how pervasive broadband is.
  • Pervasive net access is expensive. Arguably we’re already in a world where some people have pervasive net access.  Verizon EVDO cards do pretty darned well in this country, for $60/month.  But it will be a long time before most people have it.  Higher speeds will always demand a premium.
  • Net access is unreliable.  Especially wireless access, but wired too.  Packets collide.  Transmission patterns have nodes.  Routers flap.  Cables get unplugged.  Laptops wake up and can’t figure out where they are for a while.  Something gets misconfigured.  If your software is designed to gracefully degrade when the network is unreliable, your customers will be happier, because it’s going to happen.  Remember what Outlook/Exchange was like when the entire Outlook UI would freeze while waiting for the Exchange server to respond to any request?  Please don’t do that to your users.

Once web applications are fully embracing it, Google Gears will close most of the functionality gap between native-client applications and web applications.  I believe it’s really important, and I’m really glad that there’s industry consensus around Google Gears and that other offline browser storage projects have deferred to it.  I’d hate to see web app developers trying to choose between several different client-store plugins.

Tab management in Firefox — my strategies and some requests

Posted in User Experience on September 18th, 2007 by leodirac – 4 Comments

Sometimes when I’m using firefox and I open a link in a new window, somebody will ask me "why don’t you use tabs?"  I do use tabs, but I use windows as well.

I like to group sets of related browser tabs together into OS windows.  This organizational structure makes it easy to multi-task.  I might be researching something I want to buy, and I’ll have lots of tabs open in a single window with the various options I’m considering and the related research.  When I’ve made my choice and have purchased something, I can easily close all those tabs together with a single click, and not interrupt any of my other activities.  Or if I get interrupted before I can make a decision, I will minimize this window and the whole set of activities is put aside until I’m ready to work on it again. 

The same strategy works for research — if I’m trying to figure out a specific something, I will typically open a half dozen windows before finding what I want.  But once I have the answer, none of those windows are useful anymore.

Suggestions / Requests

Here are a couple of things I’d like to see change about tab management in firefox:

I want the ability to take an open tab and pull it into its own window frame.  Sometimes a new tab will open in the current FF window and I’ll realize it’s going to be the root of an exploration and should really have its own window.  Right now I have to copy the URL, close the tab, open a new window and paste the URL.  It would be great to have a context menu option to do this for me.

Now some might question why that tab opened in the wrong window in the first place.  Sometimes it’s because I don’t realize when I open something that it will blossom into a whole research task.  So I open it in the same window, but then later want it in its own window.  More often though it’s because I click on a hyperlink in another application.  I have firefox set to open new links in new tabs instead of new windows.  Normally this is the correct behavior when browsing — anything I click on that wants to open a new window is related to what I’m doing.  But when I click a new link in another application, it’s generally not related to whichever FF window I happened to be using last.  I want a firefox option which allows me to change the new tab/new window behavior for OS links from other applications because normally I want those to open in new windows.

Update: Ask and you shall receive

It turns out most of what I want is already available in the fabulous Tab Mix Plus plugin.  Thanks to Stuart for pointing this out.  It’s got a lot of options and I haven’t explored all of them.  But I think it still doesn’t give me the level of control I’d really like to move tabs between windows.  I think what I really want is to be able to drag & drop between browser windows.

How to rescue an old dying Windows Mobile 5 phone from code-rot

Posted in Gadgets on September 14th, 2007 by leodirac – Be the first to comment

Those of us who have been around the block know that Windows systems accumulate cruft as they age and just generally get slower and less reliable until you wipe the OS and start over.  I realized recently that Windows Mobile 5 is no different.  Here are the steps I took to clean off a machine that was so far down the path of destruction it was almost unusable

Oh, Treo running Windows, how can you suck so badly?

After having my Treo 700W for a while, it started to get noticeably less stable.  First it stopped receiving e-mail.  Then it stopped sending e-mail.  Then incoming calls would cause it to crash (my favorite really).  Then it stopped sync’ing to Outlook, and then it wouldn’t even show up as a USB device on my PC.  Then incoming text messages would cause it to crash.  At that point it was just too much.  The Treo 700W is worse than most WM5 devices because it just doesn’t have enough RAM — somehow Palm failed to implement Microsoft’s recommended minimum memory requirements, which I hear rumors almost resulted in a class-action lawsuit.

Around July I realized that every time I rebooted the thing, it wasn’t storing any new text messages.  After a reboot, June 21st would be the most recent text message it stored.  I wondered if it was just being slow to commit them to memory, but finally I realized it was just full.  So I tried to clear the entire text message store.  I’d let this process run for hours, overnight even, and it would display no progress.  After rebooting, nothing had changed.  I remembered that at some point the "drafts" folder had become corrupt to the point that even trying to display the folder would lock the system hard.  I wondered if that was related.

The Dilemma

So my phone is crashing constantly.  It’s my primary contact database, and social calendar.  I know how to do a hard factory-defaults reset of everything.  But I haven’t gotten it to sync to Outlook since May and I don’t want to loose all the phone numbers and appointments I’ve made since then.  Being Microsoft, there’s no way to get the PIM data out except using Active Sync.  (What’s so hard about exporting to XML or a flat file!?)

So I could rescue my phone by clearing it’s brain.  But my phone is almost part of my own brain, and without backup I’d lose months worth of social data.  Ugh.

The Solution

Here are the steps I took to recover the thing:

1. Copy all files out of ‘My Documents’ folder onto an SD card, and back them up on a real computer.
2. Erase everything in ‘My Documents’
3. Uninstall all user applications.  (Except Active Sync!)
4. Keep plugging it into different Windows PC’s until one of them makes the USB ding-DING noise.  (All my desktop and laptop windows machines have degraded to near uselessness too over the last few months, so this was a challenge.)
5. Make sure that PC has Active Sync and Outlook on it.
6. Create a new Outlook profile (Start->Control Panel->Show Profiles) to back up the phone to without messing with other Outlook stuff
7. Tell ActiveSync to just backup the Contacts and Calendar. 
8. Copy them into Outlook.  (This can take a while of futzing with Active Sync on both sides.)
9. Reset your phone to its factory defaults
10. Active Sync the useful stuff back into your phone.

How do to a hard reset of your Windows Mobile 5 phone:

I’m not actually sure if this works for all WM5 phones, but it works on the Treo 700W.  Here’s what you need to do:
1. Pull out the battery
2. Wait for 15 seconds or so  (look closely at the screen — it slowly fades out even without power)
3. Press and hold the red Phone Hangup / On-off button
4. Insert the battery
5. Keep holding the red button until a screen asks you if you want to reset?
6. Press the up arrow to clear all memory from your phone.

It took weeks to actually accomplish this, but I’m really glad I did because my phone is so much more stable now.  It’s still a complete POS but at least it doesn’t crash every other time somebody calls now.

Next step: get the calendar to sync with google calendar.

Why build your app in Facebook?

Posted in Facebook, Social Computing on September 12th, 2007 by leodirac – 3 Comments

Almost every information service can be made more valuable by the addition of social networking metadata.  So if you’re thinking about launching a new information service you currently have three choices in this regard:

  • Build your app without social networking data
  • Start from scratch with your own social network
  • Integrate your app with Facebook

The third choice is so simple, it is the obvious best choice for most new information services.  As I see it, this is the fundamental power of the Facebook platform and why they’re going to go very, very far.

Solving RSS Infoglut through Social Filtering

Posted in Democratization of Information, Facebook, Google, Infoglut, Social Computing, User Experience on September 12th, 2007 by leodirac – Be the first to comment

This morning Scoble linked to a leaked video out of google describing some new features to be added to Google Reader.  I don’t like re-reporting other-people’s news here, but I can’t leave this one sit because it strikes so close to home for me.  The ideas they describe sound exactly like what I’ve been thinking the world needs out of a feed reader — features to manage infoglut using the social network.

What I’ve been thinking about building in my copious spare time is a web-based feed-reader that assumes you over-subscribe to feeds.  That is, it expects you to "subscribe" to more feeds than you can fully consume.  These days many of the most popular feeds on the web meet this criterion even if that’s all you subscribe too.  I don’t have time to follow any one of TechCrunch, Scobleizer, Engadget, or even Radar in their entirety — I generally don’t even get to skim all their headlines.  But I know people in my social network do, and when they do it would be a small extra effort for them to help me identify the posts that are worth me reading.

This could be done by explicitly recommending articles to friends, or by tagging, or rating, or any of a number of well-understood-yet-often-poorly-implemented mechanisms.  Additionally, I could subscribe to a meta-feed coming out of a single-friend or a set of people in the social network graph that could expand several levels.  And of course there would be meta-feeds covering the aggregate opinions of all users.  The result would be that I could "express mild interest" in a feed by "subscribing to it" and the system would help me figure out which of the voluminous posts were actually worth reading.  Or if other users tagged posts, I could find good posts on a particular topic.  It would encompass a lot of the utility of digg, techmeme and link blogs all at once.  Another step in the process of democratizing information consumption.

I’ve been talking with friends about building this in the context of a facebook app for reasonably obvious reasons.  I’d call it "the outside world" as a reference to the fact that college kids are generally so isolated from external news, and this would be a social way for those few who do read the traditional-news to share good things with their friends.  Facebook’s restrictions on apps processing social networking metadata would make somegood features difficult, but the advantages in marketing and lower barrier to entry probably outweigh that.  Now my idea is out there for the world, so I’m not getting a jump on anybody.  If anybody wants to take this idea and run with it, drop me a line and I’d be happy to help advise.  I might just do it anyway because the Facebook market and the Google Reader market are both healthy and the basics just aren’t that hard.

But it sounds like you’ll have stiff competition.  Quoting from Blogoscoped’s analysis of the video:

    Google’s recent big social effort is called Mocha-Mocha (or
    Mocka-Mocka?), and will become the infrastructure for all social stuff
    across all of their applications.
    As a part of this, a new
    feature called Activity Streams will be introduced or at least
    implemented in Reader this quarter. This will be comparable to
    Facebook’s News Feed (Minifeed?) feature, and integrate Gmail’s
    addressbook and contact list.

    Also there will be some other Gmail and Orkut integration, but this might just mean there will be links to Reader.

Hearing that Brad Fitzpatrick has joined Google and because it’s the kind of thing I do, I’ve been putting some thought into how Google could reasonably add social networking features to their services.  I’ve been talking to folks about how Facebook is currently Google’s biggest strategic threat because they’ve done such a good job integrating the social network into new feature development, and in doing so have democratized new feature development in a way the world has never before seen.  This need struck me as a good way to start integrating social networking features into Google. 

Orkut is and only ever will be a toy IMHO.  Let the Brazilians keep playing with it and don’t push it on the rest of us.  Between contacts and knowledge about whom we chat and e-mail with, gmail has vastly more meaningful set of social networking data.  As we’ve learned watching LinkedIn and okcupid and other social networks thrive side by side, it makes sense to have different social networks for different purposes.  Orkut is a toy network and should not be the basis of anything more meaningful.  Sorry, Orkut.