Monday, 15 September 2008

MomoLondon: Mobile Platforms: Too much choice or Hobson's Choice?

  • Annie Turner — editor of telecomseurope.net
  • Marko Balabanovic — lastminute.com labs
    • launched fonefood as web site around Western Europe
    • have two or three customisations for screen sizes but not much more than that
    • world looks like iPhone version + everyone else
    • want to have rounded buttons etc for iPhone, but everyone else the same
    • adding location — launched with Google Gears for Windows Mobile
  • Ricardo Varela — European Mobile Engineering Lead, Yahoo!
    • working to make Yahoo Go widget framework (Blueprint) available for single apps
    • have native Symbian, iPhone, Android platforms
  • Ben Last — EMCC
  • Nick Allot — OMTP (Open Mobile Terminal Platform)
    • working with BONDI initiative — calls to mobile APIs from Javascript
  • Simon Rockman — Sony Ericsson
    • hope for the future: app stores

Is there a sustainable business model?

  • iPhone proves there’s people willing to pay money
    • interesting that this has eclipsed any other payment

Designed for device

Simon Rockman: You don’t get games developers wanting to write the same thing for different devices — they optimize for different hardware

  • Simon Rockman: “Trying to make things easy in development will end up with products that people don’t want to buy”
  • Ben Whitaker (Masabi): “Niches are too small”
  • SR: “It’s more about what can you charge for the app. You can do segmentation based on the device — music phones are sold to particular people”
  • Nick Allot: “No route to market”
  • Ben Last: “Can address enterprise using just Nokia Series 60v3 & BlackBerry”
  • BL: “Route to market via the web — mobile apps are often things that people want to take from the web with them on their mobile. e.g. Google Mail, Yahoo”

We’ve heard “write once play everywhere before” with Java…

  • Ben Last: “operators want a piece of iPhone pie, and getting rid of fragmentation will sort that”
  • Kai Hendry (Aplix): “the web can degrade nicely, better than Java”

Will the operators and manufacturers really get involved?

  • Simon Rockman: “Existing phones are getting cheaper and that’s where the growth is. Processor power is not growing in the same way as computers. Battery power is only growing at 10% a year.”
    • however, there is increase in processor growth at the high end, and this is filtering down steadily
  • Nick Allot: OMTP have OEMs & operators on-board

Putting things in the way of normal mobile users actually using applications

  • Nick Allot: “warnings are absolving network operators and manufacturers of responsibility for upstream content, just like warnings in a car park telling you not to leave your valuables in the car”
    • “OMTP trying to come up with a sensible trust mechanism — especially one that will allow you to take a phone from one network to another”
  • Ben Masabi: “setting up data connections and installation warning texts could be standardized across all phones — just like NTT DoCoMo”
  • Nick Allot: “we tried this and have done what we can…”
    • e.g. removing an application that’s deemed dangerous, depends upon legal implications of country, operator contract

What do Yahoo Blueprint think of OMTP and vice-versa?

  • Nick Allot: OMTP based on web standards
  • Ricardo Varela: Blueprint is out there already

Whither Fennec?

  • Ben Last: “Where firefox got good, was when it stopped trying to fight IE but implemented the de facto standards. It’s good to see more browsers coming out that are standards-compliant”

Staying on mobile or going back to web to register?

  • Ben Whitaker: “stats — losing 2/3rds when ask to register on PC; losing 50% when trying to go online with GPRS”
  • Gambling software (J2ME): “78% installed from a link for the trial — gobsmacked! Don’t expect that for the actual release”

How will the platforms go in the future?

  • Ben Last: “will be driven by the killer app”
    • but the killer app is already there — it’s making phone calls!
  • Simon Rockman: “killer app is seamlessness. Need to do the right thing on the right device”

Demos

Goojet widget engine couldn’t make it

Shazam — Dominic Pride

Taking music recognition further:

  • buy track
  • artist info
  • share track

Application built by EMCC on Symbian

  • deliver same consistency of experience
  • go deep into messaging & contacts API

Next MoMo

  • October 13th: NFC
  • November 10th: MoMo London Turns Three
  • December 1st: Social Networking Revisited?

Tuesday, 22 July 2008

miniSPA 2008

miniSPA is the little brother of the BCS Software Practise Advancement conference, held over 3½ days each spring time. Instead of 2½hr sessions with breaks in the middle, we get one day of 75min condensed versions as a taster to the main event next year. And it’s free!

Each of the sessions was interactive in its own way — some depending on the attendees to provide content, other involving them in exercises and others just inviting discussion about a particular experience that was present. I went to one of each type and they were all well presented and food for thought.

Best Practices for Finding your way into new Projects - quickly…

Marina Haase

This was a workgroup session in which we were invited to brainstorm ideas and experiences that help us understand and get involved with a new project.

First of all Marina gave us a run-down of some the ideas that had been raised in the main SPA conference earlier in the year. These are covered on the SPA wiki, but the ones that caught my attention were the following three:

  1. Watch out for guru fear: the team you are joining may be apprehensive of new experts joining them — will they be told that what they are doing is wrong?
    • One way to defuse this fear might be to find areas where the existing team does things better and to mention those areas of expertise; another might be to find experts in the existing team and go to them for help
  2. Prepare questions beforehand — and make sure you take time to ask them
    • It’s all too easy to get wrapped up in the work and to hurry with your integration, but taking a step back is often very useful
  3. Write down things in your own way
    • Don’t just rely on existing documentation — take a notebook and write down descriptions in your own language. Writing things down can often be a better way of understanding them than just reading other people’s descriptions.

We then went on to brainstorm further ideas for getting into a new project quickly. The most interesting part of this bit of the session was the brainstorming techniques themselves — we were invited to try one of three methods, though all the groups in the room chose the same one: Metaphorical Brainstorming.

I’ve never come across this before, but it’s a great idea (and good fun too!) — instead of brainstorming directly on a subject, think of a loosely parallel situation and brainstorm ideas and techniques for that instead. Once you are done, spend some time figuring out how each of your ideas might apply in your original problem domain.

The brainstorms that worked best were the ones that took a slightly unusual scenario (one further away from the original problem) and then pushed it to its extremes. These generated ideas that we wouldn’t have thought of otherwise and gave the group a lot more energy in the brainstorming itself. A useful technique that I may end up using if a brainstorming team shows signs of flagging.

Sid and Nancy apply for Life Insurance: Storyboarding the Domain Model

Justin Forder

The second session I attended was a more traditional presentation, but discussion was encouraged from the start and the presentation evolved directly with the wishes of the audience, skipping some slides and focussing on others.

The topic was a new style of diagramming aiming to bring the domain model of a complex system to life. Often the domain model can get fairly big and complicated. While it is (usually) understood by the people who built it, the model can be difficult to describe to new joiners, and discussion of requirements and restrictions with the business team can be subject to misunderstandings. UML diagrams such as sequence diagrams and use case diagrams are meant to help here, but they can often be too detailed or too abstract to make sense without an existing understanding of the system.

In contrast, there are a lot of techniques used to bring the user interface to life — as this is the only way that it can be evaluated. Justin’s idea was to take one of the techniques from user interface design, storyboarding, and apply it to the back-end domain model.

A storyboard looks like a cartoon, consisting of a sequence of snapshots each showing an instant of the story and hinting at the movement within each frame. In user interface design, you would create a storyboard for a detailed, concrete scenario, with clearly defined actors trying to achieve specific goals.

Justin applied the same technique to the domain model resulting in a sequence of diagrams showing how the model is populated and how it changes as different actions occur. The final document told the story of the system in a way that lots of different people could understand; it was a powerful tool for new joiners, but also extremely useful for testers. Justin even used the same technique to help identify performance bottlenecks caused by repetitious actions.

In order to make the diagrams more complete, Justin invented some simple annotation styles which are well described in his actual presentation. This will probably make its way on the web via the SPA wiki at some point..

This storyboard is not intended to be the only documentation of the system. There are several areas, such as encapsulation and polymorphism that it does not show at all. Drawing the diagrams won’t particularly help to design the system in the first place — but it does help to exercise and illustrate an existing design.

The differences between this process and specific UML use case diagrams also raised a point about testing: it’s useful to remember the difference between use cases and scenarios when writing unit and functional tests. Scenarios have specific values and tell an end-to-end story. Use cases are more general — they often capture a lot of error cases — and are more individual.

Overall, storyboarding the model looks like a very useful tool for getting an overview of a bigger system and I will look out for opportunities to take advantage of it.

Effective Pairing

John Daniels + David Cleal

The final session I attended at miniSPA 2008 consisted of a series of exercises to evaluate the effectiveness of pairing. The exercises were intended to cover different kinds of tasks — analysis & planning, social situations, physical activities and creativity. Each activity was worked on by both pairs and individuals so that we could compare and discuss the advantages and disadvantages of each approach.

The full version of the workshop allowed everybody to try all the exercises, but the cut-down version we were getting at miniSPA, only had time for each person to try out a couple of the activities. This was a great pity, as the physical exercise involved putting together a Lego model, and only two groups (not including me!) got to have a go.

I found the exercises themselves very well designed — useful source material for helping teams to understand the benefits (and sometimes drawbacks) of pairing. The planning activity in particular worked well with a pair, surprising some people who had only thought of pairing in development. At Kizoom, we try to do all our estimating and project planning with at least two people — errors caught here save not only the planning time but also the development time.

The social situation exercise was a role play of a personnel issue, with a project hampered by a troublesome guru. The group I was in found that pairing was good for the managerial side of the role play — one had time to think and a chance to moderate their feelings while the other was talking — but could be more threatening for the interviewee. On the other hand, having a one-on-one conversation meant that the conversation was more personal rather than about the issue at hand. There were some people in the session who said their companies had a policy to always have a third party in the room for personnel issues.

I really hope that the session organisers publish their exercises and the results of the questionnaires they asked us before and after each exercise (possibly here). Personally, I didn’t find my impression of pairing changed that much due to the session, but then I really like pairing already and am fortunate to work in a company that not only accepts it but recommends it as a practice.

Friday, 18 July 2008

Time Machine fails on 10.5.4 when interrupted by sleep

Ok, so I've been using my QNAP TS-109 NAS box as a remote Time Machine server for my various home Macs for several months now. Everything's been going swimmingly and for the first time in years I've felt a little more secure knowing that my files are all backed up to several generations, without me having to do anything.

However... in the last couple of days, first one then another of the backups failed and wouldn't restart. The symptoms were Time Machine errors saying that the target volume was read-only.

I ran a couple of quick checks -- first seeing if I could open the sparse bundle used for the backup image directly and try to repair it using Disk Utility -- but it wouldn't even mount. Then I checked in the logs to see exactly what happened when.

It turns out that in both cases, the backup failed when the machine was put to sleep during a Time Machine run. When the Mac woke up, it tried to automatically reconnect to the SMB share and logged a failure message such as the following:

Jul 16 15:34:48 imac kernel[0]: smbfs_smb_reopen_file: Reopen 2b with open deny modes failed because the modify time has changed was 1216197810s 0ns now 1216197813s 0ns!

These messages were often succeeded by various other disk errors and culminated in the backupd process returning an error when it was trying to do something. I have two examples of the backupd failures:

Jul 16 15:34:53 imac /System/Library/CoreServices/backupd[72423]: Error -47 deleting backup: /Volumes/Backup of iMac/Backups.backupdb/iMac/2008-07-15-084358

and

Jul 17 21:42:05 ruth_macbook /System/Library/CoreServices/backupd[6543]: Error: (-50) copying /Users/ruth/Library/Calendars/Calendar Sync Changes to /Volumes/Backup of Ruth's MacBook/Backups.backupdb/Ruth's MacBook/2008-07-17-211219.inProgress/A11E4033-1FAB-457A-96FA-B23B3FED2579/Macintosh HD/Users/ruth/Library/Calendars

but both appear to be due to the smbfs error above.

I've also just recently upgraded all my machines to 10.5.4. Given that it's quite unlikely that two machines would start to fail so close to each other, I suspect that the latest OS upgrade may have introduced a bug.

Other people seem to have encountered similar issues, and not only with unsupported NAS boxes but with official Time Capsules too.

I tried attaching the backup image without mounting it and then running Disk Utility (as suggested here), but Disk Utility wasn't happy then either -- giving me "sibling link" errors. Running fsck by itself just results in "BAD SUPER BLOCK: MAGIC NUMBER WRONG" which is kind of worrying. I haven't yet tried using DiskWarrior, though it's probably worth the $99 for some peace of mind.

I'm going to try a couple of things next:

  1. Check the NAS disk itself for corruption, just in case.
  2. Buy DiskWarrior and see if that fares any better.

I guess after that, I may have to wipe the backup and start again. At least it's a backup and I don't need anything from it right now (famous last words...).

A few days later...

The NAS disk itself seems fine -- I successfully backed up to another image on the same disk with no trouble.

I bought DiskWarrior and ran it against one of the corrupted backup images, but this didn't work either.

Please post a comment if you've had something similar happen to you. Especially if you've been able to fix things!

What I have noticed is that the Time Machine Options (under the Time Machine Preference pane) has a checkbox labelled "Back up while on battery power". Since I only tend to put my machines to sleep when they're on battery power, avoiding backups completely during this time should avoid this corruption issue for the moment.

Backups are now going fine again, just not on battery power.