Thoughts on the iPad

May 1st, 2010

I love the fact that the iPad has no preferred orientation. I find myself often turning it upside down. I have the apple cover and with the stand up and upside down it sits really nicely on the lap when I’m sitting on the couch.

The keyboard is definitely usable for typing. In fact I love the fact that it autocorrects as I type. I loved this on the iPhone and it is even better on the iPad. We’ll see if I still like using it for content creation in a week or so.

Consuming media is compelling. It’s beyond the first flush of awe that you get when you use it for the first time and it’s the sort of thing that will only get better as the apps mature.

The NPR app is a killer app - I’ve read and listened to more content there today than in a long time. And i can see it being like a paper - the sort of thing that becomes part of the daily ritual, listening to a story as I have breakfast, or get ready to go out.

The battery life is superb. I’ve been using it all day and it is still only at 50%. When that happens on the iPhone I start looking for a power outlet. I guess it’s going to take a while for that habit to die.

For all the amazing apps that are out there (and they are *amazing*) there are some rough edges and false starts. Since no one has actually had the chance to use one before developing the apps it is amazing how good they are. I can’t wait to see what the next generation apps are like.

Now for some observations on the apps.

Omnigraffle is still much like a mouse driven app. The gestures associated with drawing are not yet intuitive. This is going to take some experimentation, so despite the power of that app on the desktop I think the space is open for a competitor who gets it right.

Many websites display the old desktop versions on the iPad. So for example you get the desktop version of the BBC. Now it is great for reading those sites, but one great thing about the iPhone sites was that it forced sites to trim down the extra guff and concentrate on content. It feels strange to have a third of the page filled with an advertisement on the New York Times iPad app. And the BBC website is much nicer on the iPhone than on the desktop version. It will be interesting to see if people start optimizing their sites for iPad as they now do for iPhone.

The Magazine and newspaper apps are a revelation. It’s like the newspapers in the Harry Potter books (or the book in Neal Stephenson’s Diamond Age for the geeky) in that photos become videos, you can expand them, you can play them, all in place. It really does feel like magic. And it is surprising how much of the web is already accessible despite the lack of Flash. Flash is dead. Sorry Adobe.

So what about the closed nature of the iPad? Well I pretty much agree with what Joe Hewitt says as reported here.

It is all very well to complain that apple is closed and a walled garden etc. But like it or not, apple are inventing the future here. So unless you want to be the Lotus 123 of the touch era, you should take every opportunity you can to learn how this new platform will work. That knowledge will be transferrable in the same way that Microsoft’s learning from developing the early Macintosh versions of Word were. This is a brand new human computer interface, from the company that designed the last new HCI back in 1984*

* yes I know, the WIMP interface was developed at Xerox PARC. But the desktop metaphor, overlapping windows etc. were all Apple. And they brought it to market. It doesn’t count if no one used it.

- Posted using BlogPress from my iPad

Mea culpa

May 4th, 2009

I like many have been following the recent discussions in the rails community about the p0rn presentation. This is not about that, except peripherally.

This is a mea culpa. Some may dismiss it as a luxurious middle class angst and maybe it is. But it is how I feel and reflects the learnings and thoughts of quite some time.

When do we learn to discriminate?

A friend of mine told me something the other day. He was playing an old video game with a friend’s child. At the start of the game you get to choose which character you play. There are two player avatars, one white, one black. The black character is wearing a hat. His friend’s (white) child would always choose to play as ‘the one with the hat’.

In a similar vein I had a shock once after being in India for a long time, and traveling back to the UK. On the train on the way back to London I felt wierd and uncomfortable, and I realized that it was because everyone else on the train was white. I had become so used to living in India that my concept of what was ‘normal’ had shifted so that white people looked ‘different than me’.

In one of my first jobs we had a female lead DBA (let’s call her Alice). She was incredibly good at her job. We had a contractor (lets call him Charlie). Charlie was a man in his 50s who was contracted to come and do a review and audit of some of the data. There had been problems with the data in previous years that meant that external review was important.

Another colleague of mine pointed out something that has remained with me ever since. He pointed out that Charlie never talked to Alice. He would never ask her for help, or address questions to her, or even acknowledge her in meetings. The next time I was in a meeting with them both I watched, and it was perfectly true. He would address questions to some of the other DBAs, and if he spoke it would be to someone else.

Two things struck me abut this. One was the obvious misogyny and disrespect that Charlie showed towards someone who I knew to be incredibly competent - in fact far more competent that he. The other - and in many ways more frightening realization - was that I had never noticed this. That I had been in meetings before where this behavior had happened and that I had never seen it. I started to question my own assumptions and behaviors and have tried to do so ever since.

Recently I’ve come to realise that I am a lot more like Charlie than I like to admit. I have worked in India and China for a long time now, and when I see the sort of discrimination against Indians or Chinese people and towards foreigners I have always hated it, and done what I could do divert or deflate it. But while it is sometimes easy to see in others it can be hard to see in yourself.

I am a tall, experienced, confident, financially secure white man. I have all the advantages in our world. My only minority status is as a gay man - ironically out middle class gay men are one of the richest niche demographics in the western world. While I can empathize and recoil in horror at the treatment of GLBT people in Africa, India, China and parts of our western world I have been lucky enough to live in places where that kind of discrimination is not common. Debates about same-sex marriage notwithstanding, I have never suffered negative discrimination on that account, even being ‘out’ in India and China where the majority of society still treats gay locals as outcast.

As that experienced, tall, confident rich white foreigner I get a lot of deference and respect. It is far too easy to internalize that deference - to come to believe that all of it is deserved - to take it all for granted. As that happens more times you start to think you are always right. No matter how many times I have been humbled by the skills and knowledge of my junior colleagues. And no matter how hard I try it is easy end up thinking as yourself as ‘better’.

I like all of us have seen cases where a good suggestion or idea from a junior in a team is ignored, while the very same suggestion from a person in power is enthusiastically taken up. Often times this happens in the same meeting, and the person who does it seems completely unaware of what just happened. Earlier in my career I saw it happen to others, and sometimes myself. These days I wonder how often I do it myself.

I don’t know if I, or any of us who are in these unconsciously powerful social roles can ever move beyond conscious incompetence at recognizing when this is happening. I try to set up an environment where people can learn and people can own their own innovations. I try to give others the chance to propose solutions *before* I give my ideas. I try (and often fail) not to drive too much while pairing.

We miss things like this all the time. We become desensitized to our surroundings and we don’t see the things that stare others in the face. Go into a shop that sells hose (I was buying it for a stage costume - honest) or cosmetics and see what the ‘normal’ color range looks like. Walk through an American city as a vegetarian and look at all the pictures of dead bleeding meat on billboards. Walk as a gay man and notice all the heterosexuality on billboards. Walk as a woman and notice the number of semi-naked women sharing a space in an ad with a fully dressed man.

This is why it is so important that I listen to a colleague when they tell me that something makes them feel uncomfortable. Because I have been be blind to it in the past and I will be in the future. To question their experience is to prolong my own ignorance and increase the offense.

I will never reach the end of this path. The best I can hope for is that by keeping constant guard I may be able to realize and notice these things, and try to address them in myself. When I fail (and I fail often) it is not just others who suffer, but my relationships with others, and I myself diminish.

In the Middle Somewhat Elevated - San Francisco Ballet

January 30th, 2009

“In the middle, somewhat elevated” is what modern dance should be about. The piece opens with an industrial crash, and the electronic-punk soundtrack by Thom Willems grabs the audience (and the dancers) by the throat and doesn’t let up. 

It was first performed in 1987 by the Paris Opera Ballet - in the Palais Garnier with its rococco stylings and Marc Chagall roof. The stage is bare, the wings exposed, and the performers wear skintight lycra. This contrast carries into the choreography with its playful contrast of angular movement with classical references and pas de deux.

The dancers match the frenetic music, the focus shifting from one dancer to a group to a pair. Often there are multiple groupings at once, and sometimes the briefest of handoffs as a single shared movement is taken in different directions.

Dancers give the briefest of acknowledgements to each other before they part - stalking away in disdain - forming again in aggression or sexual tension before parting again. The piece is demanding and relentlessly angular - making heavy demands on the dancers.

This performance by the San Francisco Ballet was magical. It came at the end of the night after two other pieces. 

“Naked” is choreographed by Stanton Welch to music by Poulenc. It seemed that the dancers were not fully invested in the piece however. There are playful elements to the piece that I felt were missing, and while it was entertaining I felt myself drifting. “Ibsen’s House” by Val Caniparoli to music by Dvorak seemed to engage the dancers more. There are some engaging ensemble dances for the female dancers, and some of the pas de deux are great. 

But really the Forsythe, last for physical reasons, is a level above in terms of performance and commitment. It was worth the ticket price on its own. Highly highly recommended.

PS. You can catch a flavor of the piece on youtube but really there’s no substitute for seeing it live. You can see it until 8th February - Book tickets here.

Microsoft’s recursive search

August 12th, 2008

Finding things on Microsoft’s site is an exercise in frustration.

Here is a case in point. I am looking for a fix to a problem caused when trying to open a VSTO (Office) project in Visual Studio. I get a helpful error that says “The project type is not supported by this installation.”. There are a few places around the web that talk of this problem and suggest ways to fix it. I follow one link to an MS web page:

http://www.microsoft.com/downloads/details.aspx?FamilyId=A2151993-991D-4F58-A707-5883FF4C1DC2&displaylang=en

Unfortunately this is an old link, and the page no longer exists. MS use their flagship Live Search to give me a set of alternatives. Unfortunately, and insanely stupidly, the very first link that comes up as a result of the search is the same link that I was trying to go to in the first place — the one that doesn’t exist.

Sigh.

Interestingly when I put the same search into Google and follow the link, I get the same ‘not found’ error but the first link on the page is not the recursive search link.

Is that Martin Fowler?

August 4th, 2008

I was showing http://cuil.com to a colleague — I like the three column view — when I noticed this rather unexpected image appear when I did a search for Martin Fowler : http://www.cuil.com/search?q=martin+fowler

So who is that youngster that appears? Did Martin clone himself a few years back and is starting to accustom us to his new younger avatar?

Martin Fowler\'s clone?

The photo does not appear on the linked page that I can see, and the image link itself (http://www.cuilimg.com/imgsrv?i=020410:620124592474843) doesn’t help. But there is a clue in the categories on the right hand side :

Eureka!

So here is the solution - it seems that Martin has actually been a fictional character all along, and indeed Patterns of Enterprise Application Architecture itself is a subtle astroturfing campaign to add credibility to a character in an english soap opera.

Who knew? :-)

The Apple iPhone has no ‘off’ button

May 6th, 2008

Update: So it turns out iPhones *do* have a way to turn it off but its just that I at least never read the manual (because you don’t need to) and didn’t discover it. My main point is still interesting I think, that you don’t need it enough to want to find it. As usual I will leave my mistake here for the word to read. :-)

Apple get usability. By now there must be very few people who don’t realise that. But in case there are some out there, lets just look at a couple of examples that struck me recently.

I own an Apple iPhone. I bought it in San Francisco, unlocked it myself, and have been using it constantly for the last month. It is without question the best phone I have ever used. Not perfect, for all the (3G etc.) reasons that you can read about on the blogsphere, but it is pretty damn close, and certainly closer than any other I have owned, including my abortive attempts to get to like “smart phones” in the past (Palm, Nokia etc).

But it struck me after a month of using the thing that there is a glaring missing feature. In fact it is so obvious I’m astounded that I haven’t noticed it before. There is no ‘off’ button.

There is a button on the top right that you press to lock it - the screen turns off but little more.

There is also a ‘be quiet’ button on the left side, above the volume control. Hit it, and the phone gives a little shake and then remains silent. This is equivalent to choosing the ‘Silent’ profile on a Nokia or other phone.

The most amazing thing about the lack of an ‘off’ switch is that you never notice it. Hey, it took me a month. And when do notice, and start to think about it, you realise that you never actually needed an off button anyway. The only reason that I used it on my old phone was because I was going into a meeting, and I wanted to make sure I wasn’t disturbed.

But this shows the reason that Apple doesn’t need it. With my old Nokia, ‘Silent’ was a profile, and I had to trust that the people who created that profile did the right thing, and turned all the sounds and notifications off. That they didn’t think “You know, this feature that I’m working on is really *really* important — no-one would *ever* turn it off — so I’ll give an ever so subtle beep even in Silent mode”. I don’t trust anyone to do that. I don’t trust *myself* to do that if I’m developing software.

So what Apple does is say: “No, this isn’t an option, its not a profile that you can customise. No questions asked — hit this button and I won’t disturb you. Not at all. Never”. It is still a trust issue. But I trust that button. I trust it because it doesn’t feel like a software option — the button implies a hardware solution — a built in switch that kills the sound. (Of course I understand that in reality it is software, but trust is conveyed by the visceral physical click of that button).

Apart from wanting to make it silent, why would you ever turn off your mobile? These days turning off a mobile is like locking yourself in a dark room and calling out to your friends that you aren’t coming out. Life — or at least social life — stops [1]. So the Apple iPhone has no off button.

Another shorter example. I am writing this sitting outside the Apple store in NY. You know the one, the glass box on 5th Avenue. Every couple of minutes someone takes a photo of it. It is beautiful, ad the plaza that surrounds it is comfortable and popular and full of people sitting eating lunch. A shop that gives something back. Nice.

Inside the store, it is very busy, very crowded. Apple stores have the highest per foot profitability of any store here. But it is still cool and comfortable and a pleasant place to be. But it is quite noisy. So how do you sell iPods, which are ‘all about the music’ as Steve Jobs likes to say in a noisy environment?

I don’t know how other companies would do it, but what Apple do is load all the iPods on display with Bose sound cancelling headphones. These are the $250+ headphones that you see long distance travellers (like me) using on long haul flights to cut down the airplane noise and get some sleep [2]. Despite the noise in the store you really can hear the music, and the chaos of the store disappears when you put them on.

This is the attention to the user experience that has made Apple what it is. It is pleasant to visit an Apple store. It is pleasant to buy an Apple product. It is pleasant to use an Apple product. And it is why the Apple iPhone doesn’t have an off button.

[1] While writing this it struck me that the same is true of my laptop. I never switch it off, I just close the lid. And that makes me wonder if we will someday see a laptop from Apple that has no off switch?

[2] They are using the AC3 ones that sit on the ear, and I guess that is because a used over the ear headphone might feel unsanitary, whereas the on the ear design leads to less actual contact. They are not the battery operated ones though, I don’t know what exact model they are.

REST Podcast

March 22nd, 2008

While in San Francisco recently for a meeting, a group of ThoughtWorkers got together to record some podcasts. The first has now been posted here:

In this two-part series, Martin Fowler, Chris Stevenson, Jim Webber, and Sriram Narayan discuss REST (Representational State Transfer). They touch on the history of REST, a detailed explanation, and examples. Additionally, they discuss programming with the Web today, modeling your resources, types, RESTful enterprise development, and reuse.

http://www.thoughtworks.com/what-we-say/podcasts.html

Fixing Broken Windows with Ratcheting

March 11th, 2008

Many codebases suffer from an accumulation of technical debt — small sub-optimal fixes and tactical decisions. Each of these probably made sense at the time, and we always intend to come back and fix them, but somehow never have time. Ratcheting is one technique that may help to address this problem.

The Problem

You are on a large codebase in a large team. The codebase hase been around for a while, and as always in these cases, has accumlated some technical debt. These are mostly simple things that would be easy to fix, but there are so may of them that it can be hard to see where to start. And since you are busy releasing new versions and working on new features, it is hard to find the time to just work on these trivial things.

But just leaving them is bad too - since this lead to an acceleration of problems. If there are 100 warnings, then 101 is not so bad, is it? If there are already 30 ignored tests, does it really matter if I ignore this test? These are the sort of simple day to day compromises that lead to a long term deterioration in code.

This is the boiling frog syndrome — where a small incremental change is not noticeable but over a long period of time there is a significant change.

Another example is build time. Over time our builds tend to get longer, and while today’s build may only be a second or two slower than yesterday’s, over a year or longer we may be looking at significantly slower builds.

Avoiding this is one problem. Another is fixing it when it has occurred, but you can’t take the development process offline to just fix the technical debt.

It is easy to say ‘the build should be no longer than 10 minutes’ but what do you do if it is currently 20 minutes? What do you do if you have hundreds of build warnings, or FxCop reports thousands of (mostly trivial) problems?

Ratcheting

A ratchet is defined as “a ratchet is a device that allows linear or rotary motion in only one direction, while preventing motion in the opposite direction.” — Wikipedia

What we are trying on our project is a software version of the ratchet. The approach is fairly simple, and consists of the following steps:

Identify a problem — Choose one of the issues that you have, and find a way of reducing it to a number. Examples are build time, the number of ignored tests, the number of enums, switch statements, code coverage or pretty much whatever you can count.

Stop it getting worse — This is the crucial piece. In every build, check the number, and compare it to the number in the previous build. If it is ‘worse’, then fail the build. Of course what ‘worse’ means differs for different metrics. Build time is worse if it goes up. Coverage is worse if it goes down.

Make it better (optional) — In this step you fail the build if the number doesn’t get better. I think of this as tightening the screws. I like to think of it as a reference to literally tightening loose screws on some kind of machine. But done badly it could be a reference to tightening thumbscrews to torture people. A tyrannical ‘architect’ doing this could kill team morale. On the other hand if the whole team agrees to it and chooses the thing to ratchet then it can be a positive reinforcement.

This means that every time someone checks in, they have to remove one of these items. It may be simple, as in fixing one build warning, or more complex, as in improving code coverage. It will affect productivity a bit, but only a little bit for each checkin. It makes sure that everyone takes responsibility for fixing the problems in the code. Done well, I think this can enhance the team.

Repeat — There’s a lot left to do. Choose another metric. Keep the previous ratchet in place, or you will lose the benefit.

Trying it out

On our current project, we have 85 ‘TODO’ comments in the code. This is classic technical debt. Who knows if these are still valid? We have turned ratcheting of these on in our build to test the idea. With a team of 7 pairs, it should only take us a few days to get that to zero. I’ll let you know how it goes…

UN data free and accessible — data.un.org

February 23rd, 2008

At TED in 2007, Hans Roslings announced that the UN had agreed to make their data freely available. Previously it was paid only. 

Well they have not only followed up with action, they have done it in style.They have just introduced a new website where you can query all the databases. It is features a very nice google style search, with lots of ajaxy goodness to make finding data even easier.You can find it here : http://data.un.org/.

It is early days yet, and all the data is not there, but you can already do some interesting searches. Some rather peculiar ones too. For example, you can find out how many Internet users there were in the world from 1960 to the present. Here is the data for 1960 : Internet Usage in 1960 - 30 years before Al Gore even invented it :-)

Mashups at the World Bank

February 23rd, 2008

I have been interested for a while in the idea of the ‘corporate mashup’. What could be done with corporate data mashed up with things like Google Maps and other visualizations? I found this one today from the World Bank — summaries of its projects in a Google Maps mashup.

http://geo.worldbank.org/

It is also very good to see that these organizations are starting to open up access to this information — triggered in no small part by Hans Roslings at Gapminder.