Apr 28

Why I am excited for the iPhone Tablet? My son.

Apple, Tech with tags: 12 Comments »


I am really excited to see what comes out of all of the iPhone Tablet rumors.

My son is three years old now, and knows how to use my iPhone. When using the computer, he instinctively started to think of it like the iPhone and would start to touch (and smudge!) the screen.

In the real world we touch things. We grab them. We manipulate them. We don’t often have an abstract notion of moving X to get Y.

Well, there is one that Sam knows well:

These machines are pure evil when you have a young’un as they say “Daddy! Daddy! I want the pink one there!” and you have no chance in hell of ever getting it :)

Anyway, so Sam knows how to use multitouch, and is at an age where we are thinking about setting him up with his own computer. I don’t want to go through the pain to teach him a mouse and keyboard quite yet though, so what if there was a computer he could hold and could use his normal skills to access? The iPhone tablet could be that device!

As a side effect, it would also be the PERFECT home automation device, as well as an eBook reader, and a casual browser, and email checker, and the list goes on and on and on. The computer is changing in front of our eyes isn’t it.

Apr 24

Expectations: When to be automagic, and when it makes sense to be explicit

Tech, UI / UX with tags: 8 Comments »


Have you ever noticed how the odd subtle feature here or there has profound impact? You can either inspire the “wooah, I can’t believe this app just did this!” for good or ill.

When I try new Twitter clients for example, the lack of a certain feature that I am used to can be the game changer for me. One simple example is expanding short URLs. I don’t want to see http://tinyurl.com/aaaa. I want to see http://bbc.co.uk/..... The fact that Twitter has the URLs part of the space limitation is their issue, not mine. I have a greasemonkey script that auto expands through the 301 redirect stack. When I tried Tweetie for the Mac, I looked for that feature. It gets a passing grade as you can turn on a feature that onclick does a popup with the full URL and “sure you want to go here?” Not bad, but not what I really actually want. The same goes for writing a message. Let me put in the full URL and if the message is too long, at that point auto shorten for me.

So, subtle features can make or break my enjoyment of a tool. On paper, two competing tools can look the same, but you find that one user base loves it, and another doesn’t. We have run into that a little with Git and Mercurial. On the surface they are both very similar DVCS, but subtle usage differences have resorted in very different reactions from our community. Also, the fact that Github exists (even though Bitbucket is doing well too) makes a huge difference.

One common problem that I constantly find myself grappling with is that I sometimes try to do too much “automagically” for the user. Surely, if I do all of this stuff for a user, they will love me! That is what computers should be doing, make them do less.

Although this is very true, and comes up in the Twitter examples above, and also in the fact that Google does an amazing amount of work behind the search box, it is a tricky balance.

One case that everyone has experienced is auto correction. I remember when this feature first appeared in Word and it drove me batty. I always felt like I was fighting the machine. No! Don’t capitalize that for me! I actually get that feeling with the iPhone to this day. The only reason that I keep autocorrect on in the iPhone case is that the keyboard is so fat-finger-constant that you have too. Still, a day doesn’t go by when I don’t type something that puts a capital letter in and then I have to back up to it and then remember to un-select SHIFT. Ugh. This is the kind of thing that makes your blood pressure up every time you do it, and you curse the fact that computers are still so dumb.


I made the same mistake myself with Bespin and the command line. Early on I thought to myself:

“since I know all of the possible commands that the user can run, if they have typed enough that there is only one choice, automatically fill it in!”

This seemed great. No need to even hit the tab key! In practice though it was silly indeed. I found myself at a command line with value such as “listst” (as it auto filled to “list” but I didn’t notice and kept typing the end). With years of command lines under my belt, this new functionality went against all of my training. Having to do a TAB myself turned out to be a feature. It gave me control. What I did do though was add a filtered list of commands above the command line which gives the user information on what is available, and when you are down to one you know that TAB will get you there.

This made me realise the subtle difference between autocorrection, and say Google results when they suggest “Did you mean ‘Hilly Mit’?” If Google just thought it was so much smarter than you and changed the terms automatically you would be as frustrated as Word autocomplete. This way, you get control, and when Google is right (90% of the time) you are one quick click away from your answers. Of course, Google is so good at searching that even if your term was a bit off, often the result is right there anyway so you don’t even need that click.

Another more subtle feature of the command line that tries to be smart, is the fact that if you have typed in a command that has no other options, and the command requires a parameter, a space is automatically added. This means that you skip a SPACE BAR hit and you get a visual cue. In reality it normally means two spaces in between the command and first argument (which is of course fine and is no different). It is still enough to bug people.

Of course, this all pales in comparison to the grand daddy of all, Clippy. Clippy offered no value, was wrong 90% of the time, and was incredibly in your face. All pain and no gain.

In conclusion, whenever I think about adding a feature that seems borderline too smart I stop and think:

  • Is this too smart for its own good (like auto correct)
  • Would it be better to subtly give the information to the user so they can act on it (like Google search “did you mean?” and Google Suggest)
  • Should I make this a setting that the user can easily turn on and off (as in command line completion)

Have you noticed features like this?

Apr 21

Firefox trunk now has HTML 5 drag and drop code; Time to get clipboard working nicer?

Ajax, Tech with tags: , 4 Comments »

I have already jabbered on about getting the clipboard to work nicely in Bespin and your own Web application.

Johan Sörlin noted the Firefox trunk had an interesting development with new code being checked in for HTML5 drag and drop.

He told me:

I’ve fiddled some with the new drag drop support in FF 3.6 nightly. And I was amazed to find that you can get the plain/text and html/text contents out of the drop event. So in theory this can be used as a method of accessing the clipboard.

However this event doesn’t fire when you paste contents so it can’t be used for now.

But according to the HTML5 spec the drop event should fire when you paste contents.

This is good news because now we have drag and drop support in code, and hopefully soon we will have access to data on paste!

Apr 20

Rebooting your social network; When is it time? And how can you garden?

Tech with tags: 5 Comments »


After talking about the “Social Web” over the weekend, I heard about how the young’uns often reboot their social network every year or so. It becomes too unwieldy for them, they may have switched groups (high school to college for example) and they kick off a new account and start afresh. After getting all of those friends????? Hmm.

I have noticed something similar myself. I find that the gardening that you have to do once your social network evolves can be as intense as dealing with your RSS subscriptions. A lot of people are ignoring feed readers and instead just rely on the social streams and “friends” to tell them what is happening. Social aggregation really helps keep down the flow without making you think that you are missing out on something. I personally look forward to a day when I hang up the feed reader hat for awhile. It can be too heavy for my neck these days.

Anyway, back to the gardening. The problem that I have is that when I start on a new network, I plant a lot of seeds. People who connect to me will get connections back, as why not? However, if I get a follower on Twitter now, unless I recognize the username, chances are that I won’t make the time to follow them back. This is unfortunate, and is due to the fact that I perceive myself to be at the upper limit of the number of people that I can follow and still stay sane.

The problem though is that this new chap may have a lot more interesting things to say that someone who I followed on day 10. I just don’t unfollow enough (weed the garden).

I mentioned not taking the time to follow the person back and you may think “time??? to click on a link???” but that isn’t really where the time is. To do it right, I should either go back and read their past tweets and/or follow them and “give them a few days”.

One small change by Twitter itself that I would appreciate, and would help me follow back, would be to change the email notification that you get when someone follows you. Instead of the simple:

Hi, Dion Almaer (dalmaer).

Zaphod Beeblebrox (DaBeebiest) is now following your updates on Twitter.

Check out Zaphod Beeblebrox’s profile here:

You may follow Zaphod Beeblebrox as well by clicking on the “follow” button.

Turn off these emails at: http://twitter.com/account/notifications

How about showing me the goods. Let me know what I am missing by NOT communicating:

Hi, Dion Almaer (dalmaer).

Zaphod Beeblebrox (DaBeebiest) is now following your updates on Twitter.

You may be interested in following him back, and to help you decide, here are some of his recent tweets:

“I love catz”
“My cat is the cutest”
“@arthur can we leave!”
“Tie me kangaroo down sport is the best song evar!”
“@arthur uh uh!”
“Giggling. It’s sunny.”
“@arthur DON’T PANIC!”

Check out Zaphod Beeblebrox’s profile here:

You may follow Zaphod Beeblebrox as well by clicking on the “follow” button.

Turn off these emails at: http://twitter.com/account/notifications

On a side note, I got to meet Alex Payne of Twitter who had some good insights on Bespin. Very helpful, and an all round great chap.

Apr 17

Raw Data Now; The big fight for the Social Web

Tech 3 Comments »


Watching Sir Tim ask the audience at TED shout RAW DATA NOW may be a bit much, but I thought back to the talk this weekend as I went through an exercise that had me cursing for integration. I wonder if you have ever had these experiences:

  • You look at an address on Google Maps and get directions. Later, you do the same on your phone, and when I finally get to the car I plug it all into the built in car GPS (or Sat Nav for my British mates, which is more correct, but still sounds funny to me).
  • You find a new TV show that you like and think about buying a season pass on iTunes. You try to remember about this when at home so you can tell your DVR to just record the bugger, so you skip the iTunes $. However, your DVR fills up with kids shows just before the actual showing, and thus you have to go back to iTunes and grab the show.
  • You drive yourself nuts with your calendar as you try to share an item that is on your work calendar with the wife, and you end up with duplicates, and your calendar program isn’t smart enough to merge the darn items
  • FriendFeed nicely sucks in your delicious tagging and you try to work out how to also get it to Twitter and you run around chasing your tail as you try to work out who will aggregate whom, and how
  • You have an email alias that you send photos from your phone too, hoping to put them in the right places (Flickr!, Facebook, etc). Facebook then turns around and tells you “sorry, if you are using an iPhone use our Facebook application and you curse as the point is that you don’t want to do something different for each service! I still keep the Facebook alias and email it every time just because I am mad at the buggers.

You could go on and on with this list. Once you think about it, as you go throughout your day you find that you are repeating yourself again and again. I want to say “I like this URL” once, and have anyone who cares know that (delicious, FriendFeed, Facebook, Twitter). I want to say “I want to see this show” and have it waiting for me at home on the TV, or on my computer via iTunes, and on my iPhone. My intent is there, I consume it wherever.

The real battle of the “social Web” isn’t just about where your put your friends or eye balls, but where your data lives. Is one centralized source going to “win”? That sounds pretty darn scary doesn’t it. Even if that source was always a “good guy” (a big leap) they will always do something that doesn’t let you work on the data the way you wish (e.g. Facebook changing their mind on how to accept photos and blocking email).

I want to take control of my data. I then want to let services use it as *I* wish. I may lease out a service to someone who does a great job and who also has top notch policies and APIs for import/export. Lot’s of small players feels a lot better than the walled gardens of some of the social networks.

This is where Weave has me excited. Right now it may look like an experiment on sync, but what if it could be my broker. It feels different because Weave is a very different beast. You own your data. The browser can be your broker. The server can be a dumb bucket and if the client is encrypting it doesn’t even know what it stores in its buckets, let alone dip in to sell ads and make money off of the data that it knows about you, your connects, and your habbits.

It seems quite obvious that the future will be a lot more usable as we work out how this integration thing can actually work out. How do the business models fit in this world. Once industries see this new world as an opportunity instead of hanging on to their old models, the walls will break down and users will be free and have ownership. I would be happy to have micropayments happening constantly as I move around my data.

When this all happens, will a company or two own the experience? Or will you. That makes me want to shout RAW DATA NOW too, Tim.

Apr 14

New tabs, top sites, and how you learn to not be a hater

Mozila, Tech 5 Comments »


When I first saw the top sites feature that Safari took to the extreme (look wise) I jumped up and down shouting about how I wouldn’t want this feature at all. I am the king of about:blank.

Why would I want to waste time for this new tab page to come up when I normally want to just go somewhere (often the “where” is in my clipboard).

Well, after a week of using Safari 4 I realised that I hadn’t switched it off, and it hadn’t bothered me even though I knew it would bother me!

The reason is of course due to the speed. The reason I always hated setting my “home page” to anything but about:blank was because of the time it would take to grab and render the page. I have never been a “put iGoogle there!” kinda guy. Too slow, and not in my flow at all.

I don’t find that I often USE the top sites to get somewhere because the way I get to common sites is that I put them into tabs and I use APPLE-# (where # is a number of the tab) to get there. Thus, the whole notion of top sites doesn’t make much sense for me. The history area has been used once or twice and coverflow is waaaay too much here.

Now, Aza and company have been doing fun work with what this would look like in Firefox. It is a lot more subtle, especially the latest visual update. I love the subtle things such as knowing that I often go to my clipboard to having an action right there.

I also have really enjoyed how this has all been done as a plugin itself, and the process has happened very much in the open. Imagine if you could talk to the Apple engineers and help them do the best job they could for Safari? You can’t. With us, you can.

Also, this being Firefox, you can tweak the hell out of this puppy by greasemonkeying the page, setting the page to your own beast, or writing your own plugin to do something really fancy (like being able to tie into the same places database to do cool things).

You may think that you will hate these new pages, but as long as they load up just as fast as an empty page (perceived to be) you may find that, like me, you don’t actually care at all.

Apr 13

The wrong solutions to the frame busting war

Tech 4 Comments »

Marcus Westin wrote a little library called oFrameBust that goes beyond the if (top.location != window.location) frame buster to allow whitelists via:

<script type="text/javascript" src="http://oframebust.com/oframebust.js">
oFrameBust('digg.com', 'www.facebook.com', 'www.marcuswestin.com');

Unfortunately, for the entire system to work the whitelist party needs to grok oframebust, which is always a tough sell.

I think the best post I have seen on the entire topic is from Charles Miller as he gets to the root of the issue, which is point of view:

Digg’s point of view:

Website owners point of view:

Exactly. If someone installs a Digg toolbar add-on to the browser, no-one would say anything, as it is part of the browser and THE END USER REQUESTED IT. The DiggBar has people clicking around with no idea what has happened.

Watching people come up with rev=”canonical” and libraries to make url shorteners on their own domains makes me a little sad too. The world doesn’t need “ajaxian.com/Apasojd” Instead, we need SMS to be updated to grok the Web, and we need Twitter to take the link out of the message (as FriendFeed allows) so the characters don’t matter. The majority of my tweets follow the pattern of: “Blah blah blah di blah http://url” Make that a first class citizen. I even created Twitter Greasemonkey scripts to deal with the URL and UN-shorten them. In fact, don’t just do that, but make the entire message a link to that URL. There are better fixes out there.

Apr 10

Browser storage: Do we need SQL? Or would a JSON approach be better?

Ajax, JavaScript, Tech with tags: , 18 Comments »


Ian Hickson: “I expect I’ll be reverse-engineering SQLite and speccing that, if nothing better is picked first. As it is, people are starting to use the database feature in actual Web apps (e.g. mobile GMail, iirc).”

When I read that comment to Vlad’s post on HTML 5 Web Storage I gulped. This would basically make SQLite the HTML 5 for storage in the browser. You would have to be a little crazy to re-write the exact semantics (including bugs) of SQLite and its dialect. What if you couldn’t use the public domain code?

Gears lead out strong with making a relational database part of the toolbox for developers. It embedded its own SQLite, in fact one that was customized to have the very cool full text search ability. However, this brings up the point of “which SQLite do you standardize on?”

The beauty of using SQL and SQLite is that many developers already know it. RDBMS has been mainstream for donkey’s years; we have tools to manage SQL, to view the model, and to tweak for performance. It has gone through the test of time.

However, SQL has always been at odds with many developers. Ted Neward brought up ORM as the vietnam of computer science (which is going a touch far ;). I was just lamenting with a friend at Microsoft on how developers spend 90% of their time munging data. Our life is one of transformations, and that is why I am interested in a world of JavaScript on client and server AND database. We aren’t there yet, but hopefully we can make progress.

One of Vlad’s main questions is “Is SQL the right API for Web developers?” and it is a valid one. I quickly found that for most of my tasks with the DB I just wanted to deal with JSON and hence created a wrapper GearsDB to let me insert/update/select/delete the database with a JSON view of the world. You probably wouldn’t want to do this on large production applications for performance reasons, but it works well for me.

Now a days, we have interesting APIs such as JSONQuery which Persevere (and other databases) use. I would love to see Firefox and other browsers support something like this and let us live in JSON throughout the stack. It feels so much more Webby, and also, some of the reasons that made us stay with SQL don’t matter as much in the client side world. For example, when OODBMS took off in some Enterprises, I remember having all of these Versant to Oracle exports just so people could report on the darn data. On the client the database is used for a very different reason (local storage) so lets use JSON!

That being said, at this point there are applications such as Gmail, MySpace search, Zoho, and many iPhone Web applications that use the SQL storage in browsers. In fact, if we had the API in Firefox I would have Bespin using it right now! We had a version of this that abstracted on top of stores, but it was a pain. I would love to just use HTML 5 storage and be done.

So, I think that Firefox should actually support this for practical reasons (and we have SQLite right there!) but should push JSON APIs and let developers decide. I hope that JSON wins, you? I also hope that Hixie doesn’t have to spec SQLite :/

It was also interesting to just read this post Abusing Web Storage via Sam Ruby:

Alberto Trivero: The aim of this white paper is to analyze security implications of the new HTML 5 client-side storage technology, showing how different attacks can be conduct in order to steal storage data in the client’s machine.

Apr 09

What if you, and people like you, volunteered for the police?

British, Open Source with tags: , 1 Comment »

When thinking about Open Web evangelism my thoughts led me to some advertisements that I saw on the Tube when I was recently in London. They had content like this:


You can now potentially volunteer for the metropolitan police. At first this seemed a little strange, but it quickly made a ton of sense to me.

I remember how I felt about the police as a kid. The bobby-on-the-beat police. The cops were part of the community and were seen as truly helping out in many ways.

Now fast forward to moving to America. Here I fear the police. If I see a police car pull someone over I get goosebumps and raised hair on my arms.

London is a huge cosmopolitan city, and with that growth it has also seen an increase in crime. If you walk past New Scotland Yard you see a chap with a machine gun. Far from the local bobby. The problem is that you lose your grip on the community around you. If you don’t know what is going on and the vibe you have less information. You probably have less informants too.

So, how could the Met go about getting a closer connection to the people again? How about inviting them into the fold. Open the curtain so those people offer a valuable service and see how the force works. On the flip side, when you interact with a cop now, it could actually be your kids teacher! If the system works out you feel differently towards the copper crew again and the community gets more close knit.

I am obviously not close enough to the scene in London, and wonder how well this program will do / has done (anyone know more?), but in general, I love it. Putting people first.

Apr 08

Google App Engine and The Java Web; The Wrong Java?

Ajax, Google, HTML, JavaScript 6 Comments »

I had the pleasure of being at the Google Campfire event that launched the worst kept secret, App Engine supports Java and Google has a preview for you to check out if you signup in time.

Java is a huge ecosystem, which is a big win, but what interested me was the nuance. The Secure Data Connector feature that gives us a glimpse of “on premise” type functionality (that Microsoft is touting with Azure) is a big one, and something that enterprises need.

The GWT pitch and the Google plugin for Eclipse is another interesting one. I am always so incredibly torn here. GWT is fantastic technology. Because of the way it works, it gets to do things that pure JavaScript libraries would love to be able to do but can’t. The team is great, and the hard core tech is incredibly impressive. I understand why people use it.

My personal issue is that it feels so funny to see the two messages from Google.

Now, these aren’t mutually exclusive of course. GWT can wrap all of the HTML 5 stuff and both can be happy. But it just feels weird to me. The idea that JavaScript is the assembler of the Web, when it is such a high level language is hard to wrap my mind around. It can be moulded to do so much more than Java can with its static nature (which has downsides too of course!)

Another thing. Writing your applications using Java in this world is about the source code and the language but not about the VM. For me this is hard to wrap my head around too. I get to use a language I *personally* don’t like as much (Java the language) and have it run on a runtime that isn’t as good as the Java VM. Hmm. And, since there isn’t the VM there (on the client, there is with App Engine!), I don’t get the pleasure of writing in any of the very interesting languages available on the JVM (Scala, Clojure, JRuby, Groovy, etc). They have picked the wrong Java for my taste!

Now, Paul Hammant has a very detailed post about building a rich Ruby application on top of AppEngine4J. He flips from a jQuery view to a Ruby client using Swiby to a Ruby Shoes app and beyond. Then, at the end, he says something very interesting:

If Google made changes to GWT to make it a viable thick/desktop/offline technology then AppEngine might shift up a gear with online/offline apps.

Since you are writing Java code, why not ship down a jar file for browsers that support Java (still a fair few) and run the application natively within the browser? Kinda bizarre, but imagine if Gears had been done in Java, and people could add functionality easily that way (this is where Yahoo! BrowserPlus is interesting… how you can write services in Ruby and the like). And now you are sending down a jar, you could write the applications using any JVM language you want. Huh. That would be an interesting direction.

Who knows where this ends. When you get practical though, Google have delivered a nice experience for people that like Java, and that is a large group still.

I am still in the camp of DSLs and lightweight and all that jazz, and agree that one great thing about the Web is that some people can come in and make a change here and there at a very high level and make something their own.

Fun times!