Tuesday, July 03, 2007

What the iPhone could have been, part 1

June 29th came and went. Both Apple and At&t had a very good day with sales of 200,000 phones on the first day, bringing in tons of new subscriber to At&t.

The iPhone is slick, it's cool, it slices, it dices, and it'll clean your dirty laundry and cook dinner for you. It's everything a phone should have been in this day and age: a phone shouldn't crash (so far so good from various reports). A phone should store all your contacts. You should be able to get quick information from the web without tearing your hairs out. Most of all, a phone should do the phone thing really well.

However, being an apple product, we'd expect it to fly to the moon, bring in some cheese, and fix global warming while it's at it. All jokes aside, the initial version of Apple's entry to the mobile market did bring some disappointment for the ubber geeks, and here is a list of features I'd expect from apple in their following releases:

Current Integration of Phone activities with Mac OS X

The current Mac OS X (10.4.10 tiger) spots a rather rich set of features for communicating with various bluetooth enabled mobile phones. Right out of the box, it can sync with your phone (isync), you can make dail or send and receive SMS (Short Message Service) to a number in Address Book. With third party software like salling clicker (very satisfied customer), I can even have my mac pause itunes on incoming call, and resume the music when the call is done (iPhone does this as well. My N70 pauses the music for my incoming call, but fails to resume for some reason).

That is all great, but these features aren't consistent over the various brands. For example, I can both send and receive SMS and have incoming call notification on my mac via the Sony Ericsson K510i, while only able to send SMS via Nokia N70. Nokia N70 Syncs contact photos as well, which K510i can't.

The inconsistency, largely due to each phone company's design philosophy, can drive you absolutely mad trying to find the perfect phone that will work with your Mac.

Integration, not just synchronization

iPhone is an apple product, and it should, out of the box, work with my Mac to do all kinds of amazing things that was previously known to enterprises with expensive call automation system installed. My mac will know that my iPhone is close, connect to it via bluetooth (my N70 and salling clicker does that currently). I can then, without taking my phone out of my pocket, sync my iPhone data, be notified of incoming calls and be able to answer them via my built-in microphone just like I did with Skype. In fact, I should be able to, through core audio or some apple API voodoo, be able to conference between parties on iChat AV, iPhone calls, and ultimately, skype.

My mac should be able to warn me that my iphone is running out of battery, just like my bluetooth mouse did. It should be able to obtain my attention data like the pages that I am currently browsing, so that I can sync and go and be able to continue reading webpages on my commute.

And then there is the automated security part. I should be able to set up my mac to see proximity of my iphone as a factor of authentication. This, of course, is a slippery sloop, but it's fun to just imagine the possibilities.

Most of what I talked about are actually available features of Salling Clicker, and with Apple Script I was able to quickly add to the featureset of the software. This is what I would ultimately be looking for in my iPhone v2.0. API in the form of Apple Script, widgets AJAX, or eventually Cocoa would open up all kinds of possibilities.

Thursday, April 20, 2006

Free as the new marketing strategy

Pangea Software is giving out free site license for schools. All they need to do is ask. Send a request on the school's official letterhead, signed by the principal, and the contact listed must use a ".k12" email address.

Giveaway product promotion is nothing new, but when children in school gets to enjoy the benefits, there's certainly warm and fuzzy feelings to be had.

We are vitnessing more and more experiments similar to these in software industry, and that is a good thing. Software is no more special than any product sold to consumers. The ultimate goal is to satisfy the user's expectation in exchange for payment. You don't get customer satisfaction by listing the features in bulletin points on a power point slide. You get the satisfaction by letting users try your product, and making it so good that they want to pay for it.

Thursday, April 13, 2006

Ruby on Rails, acts_as_taggable plugin frustration


I'd been working on a project using ruby on rails as of late. The project, like so many other recent projects involves all the "web 2.0" features such as tagging, social networking, AJAX, the list goes on.

One real advantage of using rails for such a project is their extreme willingness to support the web 2.0 features listed above, so much so that you can get most of these features for free if you're doing things right. Features they missed can be extended via two different channels: plugin system or gem package management system.

This is where things can get a little confusing. A real live example is the simple problem of tagging: there are two extensions for rails for tagging, both of which are named "acts_as_taggable". different group of people, using plugin system and gem system respectively, approaching the problem with slightly different approach.

Putting aside the problems with namespace pollution inside the framework, learning the new extension becomes extremely annoying with the search on google. A "acts_as_taggable" google gives you a mix of results with methods from both systems, and with no real way to distinctly differentiate between the two except to try the commands on the extension of your choice.

Anyways, that is not what this post's about.

I'm using "acts_as_taggable" plugin, which is great, but for whatever reason, it does not detect double entry. For example, we have objects "book" and "author", both of which are taggable. If the user tag a book as "interesting", and later did the same thing again, the tag "interesting" would be on the book's page twice.

This is a problem with the taggings table. When an object (a book) is tagged, acts_as_taggable method uses the find_or_create_by_name method to make sure that entries in the Tags table has no dulplicated entry. After this, it calls on( ) method in Tag model to link our object (the book) to our tag (the entry we just created or found, "interesting" in this case). Unfortunately there is no checking for duplicate in this step. So even though tags name in the tags table contains unique entries, same tags for the same object can appear multiple times.

To go around this problem, I replaced the following line in tag.rb in vendor/plugins/acts_as_taggable/lib/ of your application folder

taggings.create :taggable => taggable

Into this

taggings.find_or_create_by_tag_id_and_taggable_id_and_taggable_type(id, taggable.id, taggable.class.to_s);



This is meant to be a quick fix of the problem I'm having, not nearly an elegant solution. I don't know how expensive find_or_create_by method, so I have no idea if this was left out of the plugin intensionally.

Saturday, March 11, 2006

Tags


Tag
Originally uploaded by Thomas Hawk.
In some way, tags aren't new. Kids scribble on side margins of their notebook instead of paying attention in class, and then they scribble bigger words (graffidi) on walls and sidewalks late at night.

Just that we found a way to make it useful for the web.

It's all about balance between freedom of expression vs. potential abuse. In flickr, average users either never bother to leave tags, or they leave them they way tags should work: keywords that relate to your picture/post. There are people who think it's cute and tag Web20 to a naked celebrity photo, and those are noise. Noise exists in all systems of communication, or in fact, they exist in all system, period. Human beings are incredibly good at filtering out low volume of noise.

Tags provide a clear path towards organized chaos, which leads to unplanned creativity. The benefits of these tiny random innovations may not be apparent in the business world. However, with collective intelligence of a network of people wanting to contribute, tags beats traditional database for organizing data, especially data that are "out of the ordinary and cannot be easily referenced", which often is the needle we subconciously look for in the haystack.

Wednesday, March 01, 2006

Sunday, February 19, 2006

New Toy and Birthday Present

Got myself a second-hand wireless bluetooth mouse, sort of a late birthday present for myself. Speaking of which, the package Yvonne sent ends up to be Firefly DVD set, exactly what I'd been wanting to get for myself. First episode kicks all kinds of ass that it's just hard to force myself not to finish the whole darn DVD set all in one go.

My trusty ibook finally failed to boot after I deleted some kernel extensions in the Terminal with "Sudo" command. Sudo command has a nice little paragraph warning that you shouldn't mess with it if you don't know what you're doing. I managed to screw things up even with the explicit wordings like: "Think before you do anything".

Mac OS X disk didn't have a "rescue" mode per-se. But it did come with Disk Utilities and Terminal application, which allowed me to go in, and manually backup everything of importance to my ipods via unix commands. I told the install CD to install the copy of OS X for me after that, and to my surprise, everything that I'd backed up were actually still in the harddisk, tucked away in a directory called "previous systems".

Within minutes, I did a copy of copy and move commands, and all my stuffs are back, with a slightly more responsive OS due to fresh install.

Lesson learnt:

- Backup, backup, backup.
If my stuffs were on a Windows machine it would have been a hell of a lot harder to get access to the only copy of my stuffs.
- Know your Unix commands
- Backup, backup, backup
- Did I metion backup?

Lost Kitty


Lost Kitty
Originally uploaded by benliong.

Tuesday, February 14, 2006

DHL


The present

So Yvonne sent me a present for my birthday, and the package was delivered by DHL.

The day after, on Valentine's day, she asked if I liked the present. Only problem is that it's not here yet.

Apparently Yvonne was promised that the package will be delivered on 13th Feb by no other than amazon. So what went wrong here?

Amazon gets the estimated delivery date from shipping companies like DHL and Fedex, which generates a date using some kind of algorithm: depending on where it comes from, wher it's going to, how much was paid, their flight schedule, any recent holidays, etc.

If you've worked with shipping companies for any extended period of time, like I did when I was in Texas (I was working for a company that ships auto-parts to customers in the states), you'd know that shipping companies are inheritly unrealiable, like modern PCs. The further your package travels, the less accurate these estimated delivery time is. We had a customer from Hawaii yelling at us for not having her son's package, and we were at the verge of refunding when the item finally arrived, 10 days late.

So I told Yvonne the item's no here yet, and it ends up Yvonne did pay extra to make sure it arrives on time. She went to DHL's website, the front page was filled with Javascript that her browser (IE of some sort I'm sure) couldn't deal with. Routing around to the tracking page, the package was marked "initiate inquery", and she called.

It turns out that they couldn't figure out where I live, and I have to call them to give them the details. They deliver the package tonight, 8pm-10pm, one day late.

The Problem

My problem with the situation is that there really isn't a lot of reasons for DHL to not know the area in Hong Kong inside out when they have such a local presense. On their local page, the following was written on the "About us" section:
DHL Express was the first international air express company to operate in Hong Kong in 1972 providing air express service. With our experience in local and regional markets, we strive to deliver the highest level of services and solutions.
When you make such a big promise, and claim of local and regional markets experience, it's essential for you to keep up with your words.

Lessons learnt

It's just another less-than-satisfactory delivery. It's not the talk of the office. Everyone and their dog's gotten to accept that packages do arrive late. But when that happens, it just strike me of the difficulty of providing a localized service, especially for global enterprises. There are generalized operational procedures, strategies and directions in place that work poorly with localized situation in most cases.

When I was talking to the DHL representative, I was asked to tell him my address, in English. It's no big deal for me, but what if I'm like the other 30-40% of the population who doesn't know a word of English?

It's these small little details that Global undertakings like FON have a hard time competing with local efforts that really know the area. (for context, read my previous post on FON)

When you're trying to do too much, you probably won't do them well.

Rev.e.la.tion ?

Watching Channel9's interview with Microsoft Experience Designer Jenny Lam.

As I listened, got interested about a couple of minutes into listening to what she has to say, then I realize that it might not be what she's saying that got me interested. It's herself as a smart articulate asian women working in the biggest software company in the world on one of the most anticipated products ever.

Then it hit me: I like women who're smarter than me. I like them with power, I like them to know what they're doing.

It's almost a reverse in the traditional roles of the different genders. Just a couple of years back, men would be repulsed by powerful women and ladies like rich and powerful men (well, some still do I'm sure).

Anyways, perhaps I'm just out of it because it's valentines'.

Happy Valentines' day everybody.