Massive air

I'm not really tired because I'm jetlagged, but I should probably try to get some sleep. But before I go, I thought I'd post this video, because it made me laugh out loud.

Awesome! I wanna try.

Web links in iPhone apps

There should be a standard icon to augment buttons and links in the iPhone interface for "this will close the current app and open a link in Safari" I don't know how many times I've opened an app and clicked on something to see what it does, only to be taken to Safari. In most cases, I wouldn't have tapped the link / button if I had known that it would do that.

Goodbye, Amsterdam


scott, me, cor, and julie @ sanzaka
Cor and Julie -- thank you so much for your hospitality. I had a great (and productive!) time. (updated with photos)

Everyone is saying, "Hey, that's great! Amsterdam! Did you go into coffee houses?"

The answer is no. Aside from a few trips into the center of the city to get dinner and a short excursion to tourist-mobbed towns Volendam and Marken, I could have been just outside of pretty much any city. For most of the week, Cor and I sat in his office and coded collaboratively while Julie fluttered around doing Julie things. I have to say that it was a lot of fun. :)

Best part of the week: Convincing Samba that I am not evil (took 5 days)

Worst part of the week: Watching a movie somewhere in the middle of Amsterdam with the most annoying audience I have ever experienced. Bored Amsterdam vagrants = terrible.

I also enjoyed teppanyaki at Sazanka, and meeting Cor and Julie's friend Scott, who is so anti-blog[^1] that he might find his name and face here and berate me for mentioning him.

[^1]: not that I consider this to be a blog...

How to make Quicksilver index Firefox 3 bookmarks

By default, Firefox 3 doesn't burn out bookmarks into an HTML file, preferring to keep them in its own local database. Because of this, Quicksilver will no longer pick up changes to your bookmarks once you upgrade to Firefox 3 (if you have set Quicksilver to index bookmarks). To set Firefox to automatically export bookmarks to HTML, type "about:config" in the location bar and hit Enter. Type "export" into the filter field, and set "browser.bookmarks.autoExportHTML" to "true".

Thanks, Cor Bosman, for the information.

My kitchen is featured on Architectural Record


my kitchen, featured (all 2008 features)!

Spatial Integration San Francisco, California Jean Orino Architect A kitchen designed to disappear.

By Linda C. Lentz

Designed for a concert cellist cum underwater photographer, this kitchen in a 1910 San Francisco loft is part of a residence/gallery/recital space meant to be as public as it is private. To do this architect Jean Orino called upon Gregg De Meza, also an architect, of Soza Studio, to create a quintessential galley with furniture-like cabinetry packed with storage and integrated, built-in appliances. The resulting 20-foot single wall configuration blends into the woodwork, so to speak, in a “Ceylon rosewood” veneer, actually a different fast-growing species, dyed and layered in sheets, then cut to create a grain pattern that resembles the real thing. The backsplash is an acid-etched ebony glass. The light valance keeps the LED fixtures from view. A bright aluminum ceiling duct complements the dark, architectural cabinetry and recalls the building’s industrial past.

Architect: Jean Orino

Cabinets and stainless steel counter: Sozo Studio “Space” Kitchen

Refrigerator: Sub-Zero

Cooktop: Thermador

Vent hood, oven, and dishwasher: Miele

Faucet and soap dispenser: Dornbracht

I think it's funny that everyone refers to me as a "concert cellist." Real cellists would be offended! ;)

Friends in high places

Many of my old classmates and co-workers are ending up in influential positions in the tech world, which is very exciting. I continue to live vicariously through them because I wandered off the path years ago and fell with a big splash into the ocean, where I continue to paddle around. Here's an old photo I found today while looking through some archives:


interns @ apple in 1997

It's a (terribly-blurry) photo of Adam Nash, me, Michael Schroepfer, and Scott Kleper in 1997 when we met Woz as interns at Apple. Nash is now Director of Products at LinkedIn, Schrep just (today) left his position as VP Engineering at Mozilla to join Facebook as Director of Engineering, and Klep is CTO at Context Optional, Inc. What's especially interesting is that all three of them ended up at social networking companies. I guess it's the next big thing, eh?

Meanwhile, I keep floating around in the ocean, looking for interesting critters. Congratulations, guys! I'll be cheering you on while wrangling sharks and looking for rare nudibranchs. :)

Time travel, coming soon

This is going to be interesting. Let's say my flight starts on day 1. I fly from Yap (in the Federated States of Micronesia) to Guam and arrive a full day after I leave (on day 2, 25.5 hours later in calendar time). I spend the night in Guam, and wake up on day 3. Then, I fly from Guam to Honolulu and lose 2 calendar days, arriving back in time on day 1. After a short layover, I get on a plane to New York from Honolulu, and arrive the next morning, on day 2. Entering this itinerary into my travel calendar was not easy.

Thoughts on iPhone 2.0 firmware

To add to the iPhone blog mayhem, I thought I'd write down some thoughts about my first week using iPhone's firmware v2.0. I'm using 2.0 on the original iPhone; I have driven by Apple and AT&T stores numerous times in futile attempts to procure a 3G model, but I'm simply unwilling to wait in line to get a phone. I did, however, get a chance to play with Kenny's phone while I was in Oregon, and it is indeed much faster in side-by-side tests when compared to my EDGE model (although Kenny complained about battery life on 3G and also said that subjectively, it didn't feel very fast). I've really enjoying the selection of applications in the app store. Although I had previously been using a jailbroken iPhone v1.x, the new (official) selection of apps is much better, except that I can no longer use any apps that are capable of running in the background. I miss Fring.

The new Maps application is great, and updates the iPhone's position on the map a couple times a minute. My iPhone doesn't have GPS, but in urban environments I've found wifi/cell-tower triangulation to be accurate to within half a block or tighter.

I'm syncing both contacts and calendar over MobileMe. Apple is getting in trouble now for having called the service "push," since it's really just forcing an updates periodically from Macs that are running MobileMe sync. The web app and iPhone are supposed to update immediately, but over-the-air MobileMe isn't working very well for me. As a test, I went to the web app and made two calendar changes. I created a new appointment at 1pm, and moved a prior appointment from 1pm to 2pm. On my Mac, iCal picked up the changes accurately (but not immediately). My iPhone bungled the updates pretty badly; it did not pickup the 1pm to 2pm appointment time change, and created three copies of the new 1pm appointment.


mobileme calendar on the left; iphone "pushed" sync on the right

I'm now afraid that my contacts and appointment are getting corrupted as MobileMe tries to synchronize data across all of my services.

I'm also noticing periodic iPhone freezing and slowness. Apps crash my phone at least a few times a day, usually resulting in a 5-10 second pause before the SpringBoard is restarted. Launching the SMS Text application takes a full 4-5 seconds, even with all of my SMS history cleared out. I'm not sure what the hell it is doing during that time, but it is really annoying.

I was in San Diego and Los Angeles a couple of weeks ago, and AT&T coverage was so bad that I pretty much gave up on using my phone. I actually switched to using LAND LINES (the horror!) for the duration of my visit, which was a strange experience. The SF Bay Area seems to have better AT&T coverage, but I still get the pervasive "Call Failed" screen far too often -- at least once a day, it seems. In Southern California, I probably dropped more than 50% of calls. I miss Verizon's rock-solid coverage.

It may sound like I'm complaining, but I realize that all platforms have drawbacks. I'm still enjoying the old iPhone very much, and don't feel much pressure to upgrade (although, I probably will).

Manzanita sand, Oregon


sand at a beach in manzanita, oregon coast
The wind blows so hard outside that it creates dunes on the beach, and each day, signs of human activity are erased (except for the dead trees from the logging industry that litter the coast).

How to delete an Amazon S3 bucket with lots of files in it

This may be common knowledge for those of you who live in S3 land, but it took me awhile to figure out. If you're on Mac OS X or have access to a system with Ruby on Rails installed, it's easy to delete a bucket and all of its keys.

1. download s3sync and s3cmd 2. configure s3sync's environment (like it says to do in the README) 3. open a terminal window and run "s3cmd.rb deleteall bucketname" 4. then, if you want to delete the bucket itself, run "s3cmd.rb deletebucket bucketname"

On my MacBook Pro on an EVDO connection, it seems to be deleting 4 keys per second, or just over 4 minutes for 1,000 keys and 7 hours for 100,000 keys. ECHENG.COM alone has around 68,000 files in it. 45 days of backups = about 3 million files. My calculations tell me that it will take 35 days of constant deleting to remove all of the keys, and that's only for ECHENG.COM. Wetpixel is pretty big, too.

I'm screwed. :(

*UPDATE* On my Mac Pro on DSL, it's deleting 10-15 keys per second. That is much better.


success! it's slow, but it looks like it's working

THE HISTORY, IF YOU CARE

I asked my server guys to use S3 as a backup repository for wetpixel.com and echeng.com, and they filled it up with a month and a half of FULL daily backups instead of doing something incremental. My sites are relatively large, and this resulted in 260GB of data spanning hundreds of thousands of files ("keys" in S3). I have been paying $40-60/month for S3 usage, and I wasn't too happy after I discovered that the most recent backup was 6 months old (luckily, I'm told that they have been backing me up to their own drives instead).

I tried to delete the useless buckets, but discovered that you must delete all of the keys in a bucket before you can delete it, and keys have to be deleted one at a time. There have been requests in the S3 forums for a feature that allows bucket deletion without prior removal of files, but the S3 folks replied saying that it was a "low priority."

I'm on the Mac, and normally use S3 Browser.app and Transmit.app to access my S3 buckets. I tried deleting a bucket using Transmit, but it failed repeatedly with an error after it deleted some number of keys (it consistently fails, but can take 15 or 20 minutes before the error). S3 Browser is an app that fails to inspire confidence -- it loads some number of keys at a time in bursts (1000, I think) and appends them to a single, scrolling list. I didn't want to find out what might happen if I let it pull down the entire list of files.

I started looking for other options, and eventually found s3sync and s3cmd. I then discovered that Ruby on Rails comes installed by default on Leopard, which was convenient. And now, I'm watching a scrolling list of files as they are removed from my bucket, which is very satisfying.

Introducing ECHENG TV

I've started uploading little video clips to ECHENG.COM. It's about time my website had more video content!

The latest videos are of Ella Kim, Peter and Karine's 20-month old daughter who is truly advanced beyond her age. She calls me by my full name, and most importantly, can identify nearly every fish in the first issue of Wetpixel Quarterly, which is Ella's favorite book. We should market the magazine as a publication for babies!

Go to http://echeng.com/tv for more. There's also an RSS feed for those of you who consumer web content properly. :)

My 15 favorite iPhone 2.0 applications

Here are the iPhone firmware 2.0 applications that I have installed and think are useful.

  • AIM - AIM / iChat client. Seems to work well! I had originally thought that this would be a good way to get URLs over from my big machine to my iPhone, but I was unable to tap on URLs, and as we all know, the iPhone doesn't have cut & paste. Unfortunately, it also doesn't parse phone numbers nor e-mail addresses, and messages sent to the my account while the app was not active were not queued up for later delivery.
  • Evernote - I use Evernote to store a lot of information, and the fact that it syncs across machines, the web, and the iPhone is fantastic. Like the web version of Evernote, the iPhone app doesn't allow you to view encrypted data. I hope this gets fixed in a future version.
  • Facebook - A polished update of the older web app. Also has Facebook chat capability.
  • Google - Really fast. Easy to search. Launches Safari when you tap on a result.
  • Jott - Fantastic implentation of mobile Jott, which allows you to record voicenotes and push them over as text to supported applications.
  • Kyte Producer- I haven't spent a lot of time testing this yet, but it is a mobile version of Kyte producer that allows you to create a new show with photo slideshows, polls, and links. All the iPhone needs is video to become a powerful video blogging tool.
  • Midomi - Find songs by singing / saying / typing / holding phone up to a speaker
  • NetNewsWire - RSS aggregator / reader. A great update to the old web app.
  • NYTimes - Well-done New York Times article reader with unobtrusive ads.
  • Paypal - haven't tested it yet, but it seems like it would be useful.
  • Remote - AWESOME iTunes remote control. Allows control of any iTunes instance where you are logged in as the same account.
  • Twitterrific Premium - I am a Twitter addict, and this app is clean, pretty, and functional.
  • WeatherBug - Impressive weather app, but only allows three locations to be stored at once. May want to hang onto the stock Weather app for additional locations.
  • Yelp - No-brainer if you are a Yelper. It doesn't let you login and access your account, but is a good search / research tool.
  • Zenbe Lists - The best simple list program I've seen for iPhone. Syncs with a web version.

I'm currently also evaluating Mobile News Network (AP), Comic Touch, Box Office, Mocha VNC Lite, Bank of America, and CityTransit (New York).

Apple iTunes

Wordpress Lightbox and PicLens plugins clash

I don't know why it took me so long to discover the conflict, but Wordpress' Lightbox and PicLens plug-ins don't work so well together. When both installed, PicLens works, but Lightbox freezes if you try to navigate to another image while one is already displayed. I put out a cry for help using Twitter, and Cor Bosman wrote back with the answer. It was in Cor's best interest to figure out the problem, anyway, because he's using a similar system. :)

The problem is that lightbox-2 and wp-piclens both use a function called "pause()". "Pause" is so common that I'm amazed that someone would use it in javascript code.

To fix the problem, we just renamed all instances of "pause" in lightbox-2's lightbox.js to something else.

Little slanty-eyed kids

A 21-year old Vietnamese-Australian girl named Natalie responds to a racist message. Awesome.

Can you imagine having millions of views as a video blogger? (her other videos are great, too)

What is up with Doostang?

A friend of mine invited me to join Doostang, "an invite-only career community started at Harvard, Stanford, and MIT." OK, I get that. That's sort of my community, so I joined, imported my LinkedIn profile (neat feature!), and invited some of my friends to connect. The site seemed to do the right thing, which was to identify from my contact list the people who were already Doostang members and to only ask them to connect. But shortly after, I received an email from a friend who tried to accept my invitation, only to be rejected because the link put her "on the Doostang welcome page.... and there's no way to register or login unless you've been invited by a Doostang member..."

So does that mean that I inadvertently invited my entire contact list to be members of Doostang? I hate it when people add me to social networks without my permission, and I hope that I didn't just spam everyone. If so, that qualifies as unforgivable trickery on the part of Doostang.

Speaking of being invited without permission, the person who solicited me to join Doostang used my personal e-mail address instead of my public one, so I was forced to add my other e-mail addresses and try to change my listed primary address. I added three more e-mail addresses, but none of those actions resulted in having a verification e-mail sent as promised. I went back to the e-mail address list and re-sent the verification e-mail (link cleverly hidded under "edit"), and finally received a verification e-mail, but upon clicking the link, Doostang said, "Invalid link for email verification."

Doostang isn't inspiring confidence. The people in their target "elite" market are probably not very forgiving of poor technical and interface design, and may not continue to use the site if it continues to throw strange errors.

Plus, I'm not really looking for a new job, so I'm not sure why I joined to begin with.

Finally, "Doostang?" Are you serious?

Urban Dictionary has a definition for what the word might mean, but it's not one that they will want to be associated with their business.

We amuse ourselves in Bonaire

This has become somewhat of a tradition at the Bonaire Digital Shootouts. :) Each year, we take a judges photo in the classroom during the grueling photo/video contest judging day.


david fleetham, berkley white, dan baldocchi, mary lynn price, and me
judging the photo and video contest (photo: lenny bucko)

We also take a group photo on the dock with all of our cameras. This year, we had 58 participants and 9 staff members. I usually end up next to Berkley White in the group photo. You can see us in the lower left-hand corner:

And if you zoom in...

Gotta amuse myself somehow. :)

Travel is going to become impossible soon

I just booked a ticket to Amsterdam with travel during high season. The ticket was $940 plus taxes. $529 in taxes (!). Total rapeage. $940 + $529 = $1445

Tax breakdown: $290 security surcharge $117 fuel surcharge $122 other taxes

$290 in security surcharges plus $117 fuel surcharge? Man. Someone is making lots of money on the war, and it isn't us.