I’ve finally caved in and got myself an iPhone yesterday. Now that I spend a whole day playing with it I thought I should write down my first impressions. In short: It’s absolutely awesome. In long:
What I liked:
- UMTS is fricking fast, at least in Hamburg. But maybe I’m easy to impress because I’m used to surf via GPRS on my old phone (I know…). I switched to EDGE and still got about 280 kbit/sec.
- The GPS finds your position fast, cell phone tower triangulation works good too. The map starts circling your position as soon as you open it and then refines it as more data becomes available.
- Visual Voicemail! I gave up on normal voice mail. Sorry if I never even listened to messages you left. It’s just too bothersome. But I can work this!
- Location based services. This has been promised since years and now it finally works. It’s spooky though. Exposure (a Flickr app) has a feature called “Photo’s near me”. I touched it and a few seconds later it showed me a photo of a building across the street and told me it was taken 150 meters from my position.
- The AppStore can turn this little thing in just about anything. And there’s always the SDK if you want to get your own hands dirty. Some of the games are awesome.
What I can learn to live with:
- Scrolling is weird? Maybe it’s just me because I never heard anybody else complain. I’m used to drag scrollbars down when I want to scroll down. On the iPhone you drag the whole view. If you want to see the bottom of the view you drag it up. Takes some time to get used to.
- It’s a dust and finger print magnet. Maybe the white one doesn’t show them as badly? Once the screen is lit you wont see the dirt.
- I think I’ll keep using my old iPod as a music player. I’m just not used to doing that on my phone. Maybe I’ll change my mind in a few days.
I’m currently working on functional specifications for an e-commerce project. It’s always “fun” to be on the short end of the stick, e.g. the customer’s side. So I decided to write down what happened to me last night when I was trying to print shipping labels on DHL’s site:
They offer me two options for printing, a Java applet or a PDF download. Do “normal” people know what a Java applet is? Either way, I choose PDF and the label opens in my trusted Foxit PDF reader.
This looks wrong. The label is illegible, having written “example” all over it. After reading the FAQ it turns out I need Adobe’s PDF reader. I download & install it, when I open the PDF again I see two buttons: “test print” and “print for real”.
Testing is for chickens so I just print for real. Adobe PDF says it needs to connect to some server at DHL to figure out its thing. Then it tells me printing failed. Fair enough, I click “print for real” again. Now it tells me my label was already printed and doing so again would not be allowed because I’m probably cheating on DHL.
Let’s try the Java applet. Turns out my browser didn’t even have a Java runtime installed.
So I figure out how to get the Java runtime up and running on my Firefox 3 RC. Finally the applet shows and I get the same message again. Can’t print because I printed already.
I would have given up here if I didn’t already pay for shipping.
They have an option to chat with consumer service, but no luck again because we’re already past office time. Didn’t know websites have office times. Email or Phone? I’m kind of pissed now and don’t want to have to wait 24 hours for somebody to get back to me.
I get on the phone. The service agent is friendly. At least they know they have a website out there.
After some back and forth (”Why didn’t you test print first?”) they decide to “reset” my printing token and I get to print again.
This time I do the PDF test print. It works. Then the real print, which works now too.
Learnings?
- People don’t read your instructions or FAQ’s unless they have a problem. Don’t rely on them knowing what they’re doing before they do.
- If I play around with it, I shouldn’t be able to get myself into a corner I can’t get out off on my own.
- Don’t make assumptions which software I’m using, try to find the lowest common denominator.
- “Portable” Document Format my ass.
- I happened to know what a Java applet is and how to install crap to make it running, but most people wont.
- Don’t offer online chat if you can’t have somebody there 24/7.
- Last time I shipped something with UPS they send me an email with an link to an image containing the label. That was plain, simple, low tech and worked.
I will be at next08 (thursday, May 15th in Hamburg, Germany), a web conference organized by the company I’m working for. This year’s theme is “get realtime”. There are 70 speakers so I’m currently working through the schedule to see what I’m interested in:
- Werner Vogel (Amazon’s CTO) probably talking about Amazon’s cloud computing efforts (S3, EC2, SimpleDB).
- Ryan Singer of 37signals presenting on “Things We Care About”. Hopefully it will be something along the lines of this article.
- Mike Jennings (Google) talking about Android.
But that’s just me looking through my software developer goggles. Check out the schedule to find something you’re interested in.
Keep an eye on the #next08 Twitter hashtag.
Now that Castro is out of office, the cuban public can buy desktop PC’s for the first time.
A tower-style QTECH PC and monitor costs nearly US$780 (euro505). While few Cubans can afford that, dozens still gawked outside a tiny Havana electronics store, crowding every inch of its large glass windows and leaving finger and nose prints behind.
We have a creepy mailman. He’s friendly, smiling a lot, waving at us whenever we see him. My wife says he might kill us one day and I think she’s onto something here. Is there any better disguise for a murderer? We’d open the door if he rings. For sure. He can park his truck in front of the house all day without causing suspicion. Once he chopped us up, he may stuff us in big carton boxes and no one would think a thing of it. A mailman carrying big boxes in and out of houses. Well, maybe he’s just friendly.
Since Subversion 1.4 you can synchronize repositories easily. This way you can have a local copy which works when you’re offline. Great to keep a copy of your code + history on your laptop. The only thing to watch out for is that you can only synchronize it one-way, so don’t commit anything. Here’s how to do it on Windows:
more …
String.toUpperCase is not as innocent as it looks. If you carefully read the docs you’ll see that the default signature asks for a java.util.Locale. The reasoning behind this is that there are language specific rules on how to convert lower case letters to uppercase. German, for example, has the letter “ß” which gets converted to “SS”, so “straße” becomes “STRASSE”. See the problem? The String length changed! This can trip you up if you stored it somewhere before you called toUpperCase. I’m sure there are lots of examples for other languages, so watch out and never store a String length.
Time to start over. Once you realize that what you’re doing is crap you shouldn’t be afraid to create a blank slate. Also, I’ll write in english now. Not my mother tongue, but a good exercise and worth the larger audience. Soooo, here’s to a new start.