Friday, December 24, 2010

What I learnt writing my first Android application

big-iconI have recently released my first Android application to the Android market. Even with a basic application, there are a number of things that needed consideration I hadn’t thought about (particularly graphical design considerations).

Application functionality overview

screenOne night at home, Jane asked me what temperature we should be cooking chicken to.  We had a meat thermometer, but each time we wanted to know whether a meat was cooked enough we resorted to an Internet search to find the appropriate temperature.  To make it easier I decided to write a basic application for her Nexus One Android device called Meat Temperature Guide that allowed her to select a type of meat from a dropdown list and to then display the details of the temperature to cook the meat to for rare, medium-rare, well etc.  I later embellished the application to allow a user to select whether they want to see Celsius or Fahrenheit temperatures displayed and default this and the meat chosen to whatever they last had selected.

Getting Started

To get started I downloaded Eclipse, installed the Android SDK and ADT Plugin for Eclipse (using the SDK for Android 2.1) and ran through a basic tutorial on how to write an application.  Java is the language for writing Android applications and even though my development skills are not currently strong, I found that this wasn’t a problem and could get by without too much trouble (expect for some graphical design challenges articulated below).  The official Android development site is magnificent and has a wealth of useful information from getting you started to how to publish an application.

The Skeleton

I roughly sketched out on a piece of paper what I wanted the application to look like and then got into it.  The first task was finding out what options were available for having a list and then selecting an item from it to get further information (the Android development site has this information).  The Spinner is what I ended up using, and this aligned with my sketch.  I used a strings.xml file file to populate the contents of the Spinner and then coded what to do depending on what was selected.  Getting this working for one item selected (including everything in the “Getting Started” selection above) took me about 2 hours, which was a lot faster than I expected.

Making it pretty

Taking the data presented back from the Spinner and then making it look nice took me a long time to work out.  If you have played around with Tables, Rows and Spans in HTML then doing Layouts in Android should be easy for you.  I spent ages trying to get a layout working that had the meat doneness on one side and the temperature to cook it to on the other and couldn’t get it to line up properly.  I showed it to Jane and in a few seconds she said; “If I was doing this in HTML I would add a span = 3 command here”.  I looked up the equivalent to span in the Android layout syntax and found that there is a colspan attribute.  I added this, recompiled and then stood back in amazement that it was now all looking brilliant.

Unit Testing

I mainly used the emulator for unit testing.  This takes a long time to start up and on my old pc took about 5 minutes.  Once started however you can install applications to it a lot faster; typically it was about 40 seconds to compile and then load.

I also occasionally emailed a copy of the Android Package (.apk) file to Jane to install on her phone; the .apk file is the file generated as part of compiling your application that brings it all together into one file and is typically in the “bin” directory.  Emailing to Jane’s gmail account enabled her to simply click on an Install icon from within gmail.  After she had then changed a setting to allow apps to be installed not from the market (the installation process told her what to do) she was away.  Incidentally I did not observe any differences between using the emulator and using a real phone, other than occasionally needing to uninstall the application on the phone until I started incrementing version numbers (more about that later), and the phone being significantly faster (almost instantaneous) to install an application.

Options / Menu

screen (1)When a user presses the preferences / options button on their Android device, the application displays options for the user to select.  The Meat Temperature Guide has two options; Change between Celsius and Fahrenheit, and Credits.

Credits is just a simple dialog, and as simple as the concept of changing between Celsius and Fahrenheit sounds, it took me a while to work out how to display the correct meat temperature information for the meat that was on screen when changing the temperature type.  I initially tried telling the Spinner to select the current item, but that didn’t work, so I made a call to repopulate the individual rows and this worked nicely.  When repopulating the rows I have a very simple “if statement” that first gets the type of meat selected and then checks to see whether to display temperatures as Celsius or Fahrenheit.

Storing Preferences

Until I started using the application I hadn’t thought about storing preferences.  As I used it however I found there were two preferences that I wanted to save whatever was last selected and then to then use this as the default for when the application was next started (even after the phone being turned off); the selection of Celsius or Fahrenheit and what meat was last selected.  This is easily done using SharedPreferences which stores the information in a name value pair format.  I then update it whenever the value changes and retrieve it when the application starts and set variables as required.

Icons & the Logo

When I started writing the application I didn’t think about what logo would be appropriate or what the icons would look like to get Credits information or to change from Celsius to Fahrenheit.  There are User Interface Guidelines on the Android Development site about how these should look; have depth, lighting from above, size for icons vs menus vs … etc.  I spent a lot of time trying to produce nice logos but decided after several hours that this was not my strong point; Jane however came to the rescue and produced the Android chef with a thermometer and the Celsius/Fahrenheit icon.

EULA & Credits

Having an End User License Agreement (EULA) accepted by users prior to using the application was mentioned on the Android Development site and also suggested as prudent on other forums.  I followed the instructions for adding a EULA at .  In terms of the EULA text, I used the EULA from another Android application as a template; most are very similar.

I also added Credits to show attribution to where I got the Meat Temperature information from, and to thank Jane for her work on the logo and icon.


Admob (owned by Google) makes it very easy to have advertising on an Android application.  Sample code is provided and then it is just a matter of deciding where to put the ad, and then adjusting the layout.  I ended up having a layout embedded within another type of layout to get the page looking how I wanted.

I made US$0.33 within the first 8 hours of the solution being on the market, and very little thereafter (so far!), but I can imagine that a popular application could be quite lucrative.

I am also not charging the user for the application.


In order to release an application to the Android market and make it available to anybody, you need to have version information in the manifest file (this needs to be incremented for each release of the application), including information pertaining to what version of Android the application is for.

The application must also be signed.  Eclipse makes this very easy to do.

There is a one time cost to Google to be able to put Android applications into the market of US$25.  Once paid, and confirmation was received of payment and being accepted into the market it was possible to publish the application; this took ~1 day.  In theory you’re supposed to be able to load all information about your application to the market (including a larger picture of the logo) prior to the acceptance to the market, but I didn’t find this to be case.  I also found I needed to log out and then back in again to click Accept of everything required.

qrcodeWhen uploading an application, you also include information about what is new in the current release.  Once published, the application was instantly available in the market to download.  The application can be found in the market at market://search? or via the QR code displayed here.

Application Usage

Whilst the market does provide information such as how many times your application has been downloaded, and how many active installs (i.e. they haven’t removed it already), this information is not updated in real-time, and appears to be hours old; daily maybe.

Admob also provides some statistics, the most interesting part from which country adverts are being clicked on; most of my clicks have been from Europe.


In conclusion, writing the basic application is often the easy part, the more tedious part is the graphical design factor.  The Android developer site is invaluable.

Sunday, October 24, 2010

Are you making assumptions about how web-savvy your customers/users are? Two examples for consideration.

We were in Europcar the other day to rent a car and a gentleman who was probably in his late 40’s was being explained the options of how to pay for road tolls.  The first option mentioned was that he could simply go to the tolls website to pay.  He threw his hands in the air and expressed that he knows nothing about websites.  The option presented next was thankfully a lot more palatable, paying via entering credit card information over the phone.

Just over a year ago I was involved in putting a site together for a closed group of invitees and we thought it was reasonably intuitive to use.  What we didn’t consider though was that some of our invitees were not used to signing up to websites and consequently they had never had to think about what their username would be or what picture they would use for an avatar (not to mention the process for how to get it onto their computer and then onto the website).  For a subsequent event, we took this onboard and generated usernames and passwords up front and provided these to the attendees, and cut down the amount of information we collected, with additional information such as avatars being on a more detailed profile page.  We also tested the process this time, and consequently had a lot more success.

It is very easy to make assumptions, so force yourself to step back and look at your product/service from a different perspective.  Even better, test it a wide variety of people.

Wednesday, October 20, 2010

Is Social Media reducing the likelihood of serendipitously meeting people you know when travelling?

I was pondering earlier today while over 2000km from home whether there is less likelihood now of serendipitously meeting people when travelling, since friends and family now have a greater awareness through social media and location-based sites (Facebook, Twitter, Tripit, Foursquare…) of where you are and where you are going (and vice versa).

About two hours after Jane & I had this discussion, whilst sitting down for lunch, a work colleague that sits a few desks away from me wandered past and said hi; she was in the area for a conference and both of us had no idea that the other would be in the area.

So rest assured, there are still lots of opportunities to randomly run into people while travelling.  I wander who I’ll see next.

Monday, September 20, 2010

"Have 2-3 wins each week" and a few other pearls of wisdom

Photo credit: Jane Gianoutsos
A contractor recently gave me some simple pearls of wisdom that are relevant beyond a contracting role and can apply to working on any project:
  1. Have 2-3 wins each week.
  2. Don't overstay your welcome.
  3. Deliver what you say you are going to deliver.
  4. Manage your stakeholders.
I like the simplicity of these and the focus they drive.

Saturday, August 21, 2010

NZ Google Barcamp 2010 #nzgbc

Arranged by Mike Riversdale, the NZ Google Barcamp 2010 brought together a bunch of people from throughout New Zealand to engage in discussions with a focus on Google. Here's a synopsis of my notes from some of the sessions I attended.

Location Based Services

  • There was a good discussion re GPS / Location apps that would be great for Primary School kids.  Some of the key areas discussed (which are definitely not limited to only being suitable for kids) were:

    • Augmented reality and being able to visualise what a street looked like in 1910.

      • History Pin has already collected some good content from the past.

      • This is adding a time dimension to location.

  • Simile (MIT) is focused on developing robust, open source tools that empower users to access, manage, visualize and reuse digital assets.

  • There is a lot of excellent information available in Layar for augmenting the real world with what you can’t see.

  • A location-based augmented reality example is being able to wander down a street, point your phone at a building and get information about the architect and what else they've created.

    • DBpedia is doing some excellent work in this space.  As per there website it is a community effort to extract structured information from Wikipedia and to make this information available on the Web. DBpedia allows you to ask sophisticated queries against Wikipedia, and to link other data sets on the Web to Wikipedia data.

  • Scavenger hunts, Geocaching and Virtual reality gaming such as grabbing objects in a virtual environment are examples of fun that can be had with location.

  • With services such as “Fix my street” that collect location based information, getting this information to the right party, getting them to action it, following up on it and the entire feedback loop is a key consideration.

  • There is a lot of data on the web, and if it has an open license it will drive additional services to be built based on the data.

    • c.f. Base data vs adding value added services on top of the data.

Google Earth

  • Watched a very cool Google Earth video that have done. Wow.

    • Followed by an A-team van driving around San Francisco.

    • Excellent for showcasing cruises, locations etc.

    • There are a number of demos available at the website above.

  • Google SketchUp is excellent for creating 3d models.

  • You can create your own Google 3d fly-through tour with

  • Building Maker is a 3D modelling tool for adding buildings to Google Earth.

  • Google is really wanting to make a model of our real world over time (for Google Earth at least).

    • This then raised a data ownership concern.  If individuals are able to add information to Google Earth and Google owns the data then should we be concerned?  It will be interesting to see whether OpenStreetMap ventures into this space.

  • Imagine using Google Street view for seeing what's on sale in a store. If the data was up-to-date the quality is there.

  • A Google Earth Application framework can be found at

Android development (the Sprite Software story)

  • Online backup/restore for Android.

    • Spritebackup

    • Backs up SMS, Contacts, Call Logs, Photos, Videos, Settings, …

    • and Dropbox releases

  • If you can get your software adopted as part of an OEM this is typically significantly more lucrative than selling it via an app store.

  • Android 2.2 backup is system settings and apps bought from store restored. That is all currently, but APIs available for apps to backup.

  • Sprite Software also have products to locate and protect your phone if it is stolen.


  • I was probably 1 of about 2 people in the room that weren't teachers.

  • Google Apps is being used by a number of schools for both students and staff (with several others very interested in it).

    • Keep teacher account separate from admin account.

    • The key Google Apps components that appear to be being used are Email, Chat, Sites and Docs.

  • Can decide what you want students to have access to (inc. Enabling offline Gmail).

  • A key consideration is enabling access to additional applications as students advance in Years.

  • When students leave, being able to terminate their accounts easily is good without needing to do each student individually (e.g. by Year).

  • Allowing students to archive their information or move it to another Google account prior to losing their account is also ideal.  These features are available.

  • Google Apps Sync for Microsoft Outlook works well.

  • The Google Apps Updates site / RSS feed is an excellent resource for finding out about new features and changes.

  • Google Surveys are a great way to survey students.

  • Flexibility of permissions is important.  Teachers would like to see all, ability for students to share with class etc.

Google Web Toolkit (GWT)

  • Google Web Toolkit appears to essentially be an alternative to jQuery for building application-intensive websites. It is very powerful once you get your head around it.

  • Biggest problems with GWT were with Chrome (of all browsers); initially at least.

  • Inner classes are good to use; typically better optimised.

  • The event model GWT uses is like nothing else so takes a bit to get used to.

  • Components and Widgets are really easy to write.

  • Fast and stable.

  • Make it clear to people you are building an application, not a webpage. (c.f. state etc.)

  • GWT RPC can't be cancelled. Needs to be considered.

  • For any Java class you can say to use a Java GWT class instead.

Tuesday, August 17, 2010

Pros and Cons of Software as a Service (SaaS) with a focus on the cons

There is a lot about Software as a Service (SaaS) that I love, but it is important to ensure that if you are looking at a SaaS solution to also consider what some of the cons are.

I recently posted these as a comment over on Ben's "Software Delivery Approaches – Debunking the Myths" post and thought it worthy to reiterate the key points.

The key Pros (from my perspective) Ben articulated with SaaS were as follows:
  1. Ability to provision almost instantly.
  2. Pushes infrastructure, service, and support costs to the vendor.
  3. Upgrades are automatically applied to all users – all customers work with the same application.

Cons of ASP and SaaS options (which will have differing levels of risk based on who the vendor is):
  1. If the vendor goes out of business, then you may have a significant problem with little or no warning.
  2. Depending on where the data is hosted you may be subject to different laws.
  3. From an information/data security perspective you are placing trust in another organisation. On the flip-side for many organisations, this may however be better than what they would have anyway.
  4. With SaaS you are moreso at the mercy of the vendor’s roadmap changing with little or no notice. Whilst this can be a positive in terms of functionality delivered, I’ve seen this one go the other way whereby a vendor “changed the rules” and as a result this raised a number of audit/risk challenges.
  5. Depending on your timezone, scheduled downtime (if required) may not be at an optimal time.
  6. Potential for increased latency depending on the location of the service. This may however end up being closer to your customers so may in fact be a positive.
  7. Integration may be confined to API limits that are not suitable.

Thursday, August 5, 2010

Product Development: The value of asking "Why?"

I attended an excellent presentation from Daniel Szuc last night at the UX Auckland meetup.  There was lots of excellent content and one of the slides he presented was a good reminder about asking the simple questions when embarking on the delivery of a new product:
  • What does this product do?
  • What do you love about the product? (Would you buy it?)
  • What does the product team love about the product?  (Passionate?)
  • Could you sell the product? (if asked to)
By asking these questions up front you may avoid progressing with delivering a product that provides no or little value.  Up front it is easier and cheaper to either redesign or abandon as required.

Saturday, July 17, 2010

Barcamp Auckland 4 Summary

I had yet another excellent time at Barcamp Auckland 4 #bcak4. This is an unconference run each year that brings together developers, designers, entrepreneurs, venture capitalists and others for discussion about topics of interest. 

The sessions are always thought provoking and there are lots of super knowledgeable people and hence great discussions. My notes from the sessions are below.

Building client side libraries in the enterprise

Simon Lieschke, @slieschke

  • Build on top of Yahoo! User Interface library

    • YUI doc tool for generating source code notes

  • Developer declares dependencies and this will then determine what libraies to use

  • Have generated tag library docs

  • When building javacript libraries, use a functional test page (e.g. if change CSS then show all different buttons) #regressiontesting

    • currently build page manually

  • Selenium mentioned as a tool to consider. It looks quite good.

  • Unit Testing

    • JsUnit

    • YUI test is a bit nicer than JsUnit. It provides better tools for simulating browser behaviour.

    • Google JS Test Driver may be another option

Doing Less. Using SaaS and API's to automate your workflow

Glen Barnes, @barnaclebarnes

  • Repetitive work sucks

  • Whenever you do a task think “Can I automate this or make this more efficient?”

  • MailChimp is good for small Mailing Lists. WYSIWYG editor abut can also upload.

  • Keep organised and focus on your tasks and opportunities. e.g. CapsuleCRM

  • Check out Capsule API

  • Capistrano is a good for automated deployment of websites.

  • TextMate bundles

  • Use context aware snippets (where available). Consider reuse of text you often write (e.g. an email signatures)

  • Hoptoad collects errors generated by other web applications, and aggregates the results for developer review.

  • Dropbox is awesome

  • Tripit is great

  • Quicksilver, Instapaper, Quicklauncher

  • Tools good for problem tickets for CSRs are not necessarily good for developers and bug tracking.

  • Automated testing (e.g. Selenium)

  • Run a source code checker (e.g. lint) across your code before you can check in to source code control system

Raising venture capital how to develop funding relationships

Yvonne McLaren @bucketree

  • Venture Capital is like an “Entrepeneur/Innovator, Investor, Creation of future capital” triangle with the Venture Capitalist in the middle.

  • Show where clear profit is

  • Look for partnerships. You usually can't compete straight with big, but you could possibly sell to them.

  • If you're getting paid in shares, make it a convertible note so you get bought out when the company gets larger investment

  • Have a shareholders agreement

  • NZTE's Escalator is investment service for small-to-medium enterprise

  • Will the VC make your idea work?

  • Don't treat Mum & Dad investment any different than investment from a stranger

Open Data in NZ - where we're at, and where to next

Rob, Glen, @amatix @barnaclebarnes

  • Lots of good stuff happening in NZ

  • Open Government, Open Data and Open Source are different things.

  • Government does not work quickly

  • There is sometimes a worry about releasing data that is not 100% correct, and how updates should be fed back

  • is an excellent resource for NZ government data.

  • Using a proper data catalogue is a good idea

  • Why open data? To sell, show use cases of what can be done with the data.

  • OpenStreetMap has been enriched with Open Government data (for the Chatham Islands so far). Aiming for whole of NZ in 6 months. Includes cattle stops and trees.

  • Crowdsource the improvement of data. This requires thought as to how the process will work.

  • The new MapQuest is using OpenStreetMap for all data other than the US at the moment. This should also aid in improving the data.

  • Start with low hanging fruit. Don't try and do everything at once.

  • has lots of great info.

  • Access to local council data (that is cost effective) would be good. There is a wealth of excellent data there.

What do you want from your Telco / Service provider?

Simon, Rob, @gianouts, @nzrob

  • Rob & I ran this session and threw up what was discussed on the whiteboard.  I may not necessarily with some of the points and this group is not necessarily representative of the mass market but there is definitely some good food for thought.  I have transcribed the whiteboard information below.

  • Reliable

    • 111 everywhere

    • Data access everywhere

      • Something is better than nothing

  • More flexibility in rural areas to access more fibre in a cost-effective way

  • Use of shared physical pipes/ducts

  • APIs

    • Rationale for why a Telco should do this: Reduce costs to build things themselves

    • Read & Write access to Billing data

      • Use Case: Right-planning

      • Use Case: Integration into customers’ billing system

      • Use Case: Buy flat white and put on Telco bill

    • Access Voicemail

    • MMS/SMS

    • Any data friendly format is okay (i.e. not PDF)

  • Reasonable data charges

    • Fixed & Mobile

    • Roaming too

  • Don’t do content

  • Tivo (or similar) – why?

  • ‘Powershop’ type of model

    • Use case: This weekend I’ll use company xyz

  • Fast to/from everywhere

    • content from wherever

  • Why have Yahoo! (or similar)?  Audience wants to chose whatever.

    • prefer reduced cost instead

  • Don’t want email or hosting

  • Upload vs Download

    • appropriate plans

    • encourage people to generate and upload content

    • Don’t care whether info is stored in NZ or not (privacy is not a concern)

    • Want fast access to data

  • “Don’t make me think”

  • Quality of video/YouTube/Hulu/…

  • A Google/YouTube/Gaming comparison across sites would be good to aid consumers to choose appropriate plan and provider

    • This needs to be independent of a Telco

  • Well priced mobile plans and phones

  • Unlocked phones

  • Simple plans

  • Easy billing

7x5 minute slots

Pacific Fibre, Lance Wiggs

  • Nobody else has data caps as much as NZ

University of Maryland No Media experiement, Mike Dickson

  • University of Maryland ran a no media (email/fb/twitter) day with 200 students .

  • Many of the students couldn't do it. Felt literally sick (a real addiction)

  • The only email messages are school related

  • The only mail I have ever received is email

  • I haven't used a landline telephone in over a year

  • I don't answer my phone until after 12 noon

  • I watch tv online

  • I haven't turned my machine on in 3 years

Is EVAL evil?

  • Sandboxed it can be very useful.

Interclue, Seth Wagoner

  • We often make assumptions about what people know. c.f. What is a browser?

  • Interclue is a browser add-on

  • Lazerus for auto-save of forms to your hard drive

  • Each browser is different

  • Prefetching icons can dramatically improve performance

  • Making money: fremium model

Judson Steel, Scott Judson

  • Job Dispatch app for Hines security.

  • Ipad-based

  • Integrates with Timesheets, Stock etc.

Augmented Reality

  • Definition on AR "combines real and virtual, is interactive in real time, true 3d"

  • Check out how a logo model looks when it's built

  • Try on clothes.

  • Face recognition to get info from FB/Linked In etc. and then overlay

  • Face recognition site:

Ragtag Leadership: how organisations need more Captain Mal and less Captain Kirk

Simon Young, @audaciousgloop

  • Writing a book. A lot of leadership books are really boring.

  • A lot of management models can be be found around us. Science fiction can teach us a lot.

  • The Star Trek management model... everybody knows the mission, same uniform, embodies the values

  • Doctor Who management model... not tribal like Star Trek, but sees things differently (e.g.. consultant) or have special tools

  • Firefly management model is akin to startups... small, need to earn money, ragtag. People sign up for their own reasons.

  • Improv – make the most of every situation

  • Win-win

  • Entrepeneurial

  • Creating a culture is a key part

  • Humour can be useful in times of stress

  • Choose what to be disciplined about and what to let go.

Getting the most out of Home Tech - Bring your Gadget stories and connectivity nightmares

Rob Inskeep, @NZRob

  • You can put motion sensors in a room and turn lights on/off, but different people react differently to this. Where's the switch?

  • A big consideration when buying devices for the home; they should last longer than the 18 month cycle of an iPhone.

  • With a Linksys WRT modem you can load Tomato on it and get a mesh

  • WAF (Wife Approval Factor) is a key part of purchasing decisions.

  • Use your tv as a photo frame when it's not in use. In addition to family pics, pics from Nasa etc are great for discussions.

  • Use the likes of Google Powermeter to understand your data consumption

  • If building a house it is a good idea to put network cabling in up front. It is much harder later.

  • Run ducting instead of just cabling. This provides for additional future proofing.

Challenges of App development (and web development) for mobile (android / iphone / Symbian / J2ME / Blackberry / etc)


  • iPhone established early on how much you can put on a screen

  • Lots of different devices makes it harder for developers; different screen sizes, memory size etc. This is however reality so needs consideration

  • With a soft keyboard on many newer devices there's not a lot of the screen left anymore.

  • Web pages don't currently stand up to the performance of a native app on a mobile device.

  • In the Apple world there is a worry that Apple will come out with an app and revoke your app from their marketplace.

  • Know and understand the rules before starting an app for a closed marketplace. When doing dev for another company cover yourself and get their lawyers to check all is okay. Also rules may change along the way so monitor rules changes (& likely ones).

  • Identifying if a user is using Wifi or a more costly data connection is not easy on all devices.

  • Some apps have sensors, some have compasses; need to know what they have for some apps.

Tuesday, July 13, 2010

Why is my Powerpoint 2002/2003 file so big? How big (MB) is each slide? A solution...

I had an oversized Powerpoint 2003 presentation even after doing the tips and tricks I was aware of.  After a bit of searching I came across two excellent resources:
  1. Why are my PowerPoint files so big? What can I do about it?
  2. Bill's SizeMe Add-in
The first link contains myriad information that is useful.  Bill's SizeMe Add-in (works with PowerPoint 2002 (XP) and PowerPoint 2003) is easy to install with the excellent documentation on the website and the amount of information generated about each slide surprised me.

It does take a while to churn through the slides (and it's a good idea to use a copy of your original presentation), however it does result it a break down of each component on a slide.  The information can be viewed from within the Powerpoint itself or within Excel where it is easy to see where the bloat is coming from through the sorted raw data and graphs.

    Wednesday, July 7, 2010

    Online calendaring tools: Google vs Yahoo vs Microsoft

    I tend to always use my calendar at work (MS Outlook with Exchange at the backend) as my core calendar and then synchronise this with my mobile phone.  This works well for me but I thought I should check out the Online calendar scene.

    My requirements for an Online Calendar are pretty simple, but the caliber of the different tools was quite significant:
    1. Has a nice look and feel and is fast enough
    2. Works!
    3. Can handle recurring appointments
    4. Can synchronise with iPhone, Android and ideally Symbian OS
    5. Can synchronise / provide data to other calendar based mashups
    6. The company is highly likely to still be around in five years
    7. Reasonable availability, stability, data integrity and security
      Online Calendars
       Google Calendar

      None of the other Online calendar came close to matching the slick usability of Google Calendar.  The look & feel of this calendar is excellent.  Nice stand out features also include having both public and private URLS (supporting XML, iCal and HTML), support for multiple calendars, quick add by typing natural text such as "Dinner with Jane at Clooney 7pm tomorrow", delegated administration and additional lab features that could be enabled.  In terms of Mobile phone integration, support is provided for Android, BlackBerry, iPhone, Nokia/Symbian, Windows Mobile and Other.

      This was my preference of the calendars that I looked at.
      Yahoo! Calendar
      I quite like the Yahoo! web mail client which has a really nice and modern feel.  The Yahoo! Calendar on the other hand feels like an application that was built 10 years ago.  There are some good delegated administration sharing capabilities provided, but Google Calendar leaves this in the dust as an online calendar.  In terms of Mobile phone integration, there is an excellent looking iPhone application, and Blackberry and Android applications too.  

      Windows Live Calendar

      I was actually quite surprised with Windows Live Calendar; I had very low expectation of this.  It's look and feel is however very similar to that of the Google Calendar.  Support delegated administration and sharing, multiple calendars, public and private URLS (supporting XML, ics and HTML).  In terms of Mobile Phone integration this seems to be a bit vague, with Wikipedia noting "Windows Live Calendar does not support Microsoft's own Exchange ActiveSync protocol which is found in many of the major Smartphone  operating systems (including iPhone, BlackBerry  and Android). As such, users of Windows Live Calendar are unable to synchronise their appointments with the diary on their mobile phone".

      Calendar mashups and what their requirements are of tools / sites providing data is a scheduling application with synchronises with your existing calendar:
      • Eliminate double-bookings, time zone mishaps and the back-and-forth of finding a time to meet
      • Easily schedule meetings, inside or outside your organization
      • Invite others to schedule with you, without having to sign up
      This is a good example of a calendar mashup solution, so I was interested to see what they supported.

      Supporting iCal gives quite a bit of flexibility, but in terms of the main online calendars it came down to Google, Windows Live or Yahoo!.  It was interesting to see that TripIt and Plancast were also explictly listed as calendars to synchronise with.

      30 Boxed
      30 Boxes's 30 Boxed is another example of a calendar mashup tool.  30 Boxed lets you build calendars out of all sorts of information like photos and blogs, including your personal calendar data. This solution is quite flexible and supports link(s) to any blog, flickr photos page, or any ical/rss/xml data feed.

      Calendar Mashup Summary
      Assuming the above two mashups are reasonably representative of the calendar mashup space, this should not be a limiting factor in choosing any online calendar offering since iCal should be widely supported anyway.

      Overall Conclusion
      If you are after an Online Calendar, then Google Calendar would be my current pick of the bunch.

      Monday, June 21, 2010

      Exporting from Excel to a CSV with a delimiter other than a comma. It is possible!

      I was surprised today to find that when I had a need to export an Excel file out to a CSV file that there wasn't anywhere within Excel (that I could find at least) to change the delimiter from a comma to something else.

      The reason I needed to change the delimiter was that the text had commas in some of the fields, and although the text was put into double quotes by Excel this wasn't suitable for me importing easily via PHP into a MySQL database. I was initially wanting to import the xls file via PHP into MySQL but there was a lack of code available to support this, so I decided to stick with the CSV option.

      After a bit of searching I came across a blog post from 2005 that had the answers, and I thought it worthy to replicate it here for when I or others need it:
      To change the default on your PC to a pipe rather than a comma bring up your default options window by clicking Start -> Settings -> Control Panel -> Regional Settings.
      Click the “Number” tab and in the “List Separator” field, replace the current default separator with the one you want to use (let’s say a pipe symbol | ).
      Click “OK” to save the change and close the window. You can now save Excel files as pipe delimited files by simply choosing to 'Save As' CSV.
      In Windows XP there is an extra step involved:
      When you open the Regional settings window, you have to click customize next to the language choice drop down. That will bring up another window with “Numbers” as the first tab item. Change the “List separator” to whatever you want to use as a delimiter.
       Big thanks to the "Astrochimp: Export CSV with Any Delimiter" post.

      Sunday, June 13, 2010

      Issues, Risks, Assumptions, Questions and Decisions Register Template

      I have been using a spreadsheet that I have been slowly extending over the years for recording and monitoring Issues, Risks, Assumptions, Questions and Decisions. I tend to store this in a central repository and encourage team members to add and update entries. I also encourage the recording of entries to be in terms that somebody in another team (business or technically-oriented) could read and understand. We then review this regularly, particularly with how we are tracking with closing out issues.  Below is a link to the template that you are welcome to use and customise as you need.

      The template can be downloaded at

      Saturday, April 24, 2010

      Want to easily stream movies stored on one machine to another? Check out DLNA

      Digital Living Network Alliance (DLNA) has been around for ages, yet I have only looked into it in the last month.  I didn’t know it was so widespread and how useful it could be.

      Wikipedia’s entry for DLNA nicely summarises it’s purpose and how widespread it is:

      DLNA (Digital Living Network Alliance) is a standard used by manufacturers of consumer electronics to allow entertainment devices within the home to share their content with each other across a home network.

      As of August 2009 it is supported in more than 5,500 different devices and in 2008 over 200 million devices sold with it built in

      Home Network DLNA devices fall into the the following categories (Source:

      • Digital Media Server (DMS)
        • These devices store content and make it available to other devices (e.g. PCs and NAS devices) .
      • Digital Media Player (DMP)
        • These devices find content on Digital Media Servers (DMS) and provide playback and rendering capabilities (e.g. TVs, stereos and home theaters, wireless monitors and game consoles).
      • Digital Media Renderer (DMR)
        • These devices play content received from a Digital Media Controller (DMC), which will find content from a Digital Media Server (e.g. TVs, audio/video receivers, video displays and remote speakers for music).
      • Digital Media Controller (DMC)
        • These devices find content on the Digital Media Servers (DMS) and play it on Digital Media Renderers (DMR). 
      • Digital Media Printer (DMPr)
        • These devices provide printing services to the DLNA home network.

      What this means is that you can store media such as movies or music in one location (made available by a DLNA Server), and easily stream this to a DLNA player, like a DLNA-compliant TV, a PC running a DLNA player such as Windows Media Player, or a Games Console such as a PS3 or Xbox 360.  So chances are you already have a player setup and ready to go and didn’t even know it.  In fact Windows Media Player acts as a server so you may be fully setup.

      Different Servers and Players have different capabilities so you may want to try different combinations to see what works for you.

      In terms of how I’m using DLNA, I have setup a free DLNA Server (TVersity) on our Media PC that has recorded tv, movies, photos and music.  While writing this blog post on another PC connected wirelessly to the home network, I was able to watch recorded TV in another window using Windows Media Player and it was no more difficult than selecting a movie to watch on the local PC.

      So, when you’re buying your next TV or Stereo it would be worth checking whether it has DLNA support.  Some of the new Samsung TVs, for example, now have Wireless DLNA support.

      Tuesday, April 6, 2010

      Geocaching: What is it?

      craterJane & I started geocaching this year and have been thoroughly enjoying it.

      Geocaching is described nicely on the website:

      Geocaching is a high-tech treasure hunting game played throughout the world by adventure seekers equipped with GPS devices. The basic idea is to locate hidden containers, called geocaches, outdoors and then share your experiences online.

      I was surprised by the number of geocaches very close to my home, and in fact throughout New Zealand and the World (over 1 million!!!).  Type your address into the search box on the website to see how many are near you.

      first cache Inside a geocache you will find a log book to log that you have been there and depending on the size of the cache a pencil (for the logbook), items that you can swap out and replace with an item of equal value, a short overview of what geocaching is, and trackable items that tend to have a task associated with them that you can take out of a cache and help them on their journey.  Logging of finds, fail to find and the movement of trackables all occurs on the website.

      One of the most interesting things about geocaching is finding beautiful areas you would never have otherwise gone to, and getting some exercise along the way.


      <Cross-posted on>

      Thursday, March 18, 2010

      Tutorial: How to draw abnormal filled-in shapes in Visio

      This week I learnt how to draw abnormal filled-in shapes in Visio, and it is actually easy to do.  I’m using Visio 2003 so other versions may differ slightly.

      For my example I start with 6 boxes and want to draw a shape around the 4 orange ones.


      I start by using the Line Tool, which is part of the Drawing toolbar.

      2Line tool

      I then draw my first line segment and then continue it with a new line segment where the other one stopped, and continue until I get back to where I started.


      Changing back to the normal pointer once the shape is complete allows you to then tinker with it a bit.


      The first task I do at this point is to send the Shape to the Back.


      I then change the colour using a transparency of 80%.


      and finish by rounding off the line corners.



      You can actually also use the same technique with the freehand drawing tool too.  Thanks to for the tutorial steps.

      Friday, February 19, 2010

      Webstock – New Zealand’s Web Conference – Day 2

      I had a great day at Webstock on Day 1 and below is my synopsis of Day 2, which was also excellent. If you get the opportunity to attend Webstock, do it. Some of the key themes from the conference can be summarised as:

      • Build with love, use common reusable blocks, deploy quickly, deploy often, listen to explicit and implicit feedback from real users, understand what their needs are (not what they say they are), consider social and ethical impacts. Repeat.

      The Lean Startup

      Eric Ries (@ericries)

      • #leanstartup

      • Slides can be found at

      • Why build a startup?

        • Change the world

        • Build an organisation of lasting value

        • Make customers' lives better

      • Pivot: change directions but stay grounded in what you've launched

      • Speed Wins: If we can reduce time between iterations we increase chance of success.

      • In start-ups, it's all about the team

      • Shadow Beliefs:

        • We know what customers want

        • We can accurately predict the future

        • Advancing the plan is progress

      • If you're building a product that fundamentally no one wants, what does it matter that it's on schedule?

      • New plan (e.g. of a startup that worked)

        • Shipped in six months – a horribly buggy beta

        • Charged from Day 1

        • Shipped multiple times a day (by 2008, on average 50 times a day)

        • No PR, no launch

        • Results: 2009: profitable, revenue > $20MM

      • What activities are value-creating and which are waste?

      • The unit of progress with a waterfall process is getting to the next stage.

      • With Agile the Unit of Progress is a line of working code

      • Product development at lean startup unit of progress : Validated learning about customers ($$$)

      • Minimise TOTAL time through the loop: Ideas-->Build-->Code-->Measure-->Data-->Learn-->Ideas

      • Continuous Deployment

        • Deploy new software quickly

        • Tell a good change from a bad change (quickly)

        • Revert a bad change quickly

        • Work in small batches

        • Break large projects down into small batches

        • Cluster Immune System

          • Run test locally (Simple Test, Selenium)

          • Continuous Integration Server (BuildBot)

          • Incremental Deploy

          • Alerting and predictive monitoring (Nagios)

      • When customers see a failure

        • Fix, Improve your defences

      • Five whys route cause analysis: Ask “why” five times when something unexpected happens.

      Iterative Design Strategies

      Daniel Burka (@dburka)

      • “You're going to have an ugly baby” While you love your project, it could always be better, embrace feedback.

      • If you review your first site version and don't feel embarrassment you spent too much time on it

      • Take chances and release. Build with expectation of change. Listen and iterate.

      • “How buildngs learn: What happens after they're built” is a good book

      • With modular architecture you can build a castle in no time. This is key to rapid design.

      • Don't waste time trying to predict everything

      • Good Designers Redesign, Great Designers Realign e.g. don't dramatically change how people use a site.

      • Subtraction is iteration too. Try to remove as much as you add – don't be afraid to prune

      • Really listen to your users: Both explicit and implicit feedback are crucial

      • Digg success:

        • Get it out there

        • Add sophistication

        • Keep revising

        • Establish goals, Measure success, Set new goals

        • Customer focus group, Task analysis, Makes changes, Launch

        • Stay fit: adapt to survive and thrive - If iterative design isn't instinctual be convincing

        • People adapt well to seeing people struggling with a system. It can be used as a way to convince people a change is required.

      Double Click to Edit

      Amy Hoy (@amyhoy)

      • Sweaty Design: because genius is 99% perspiration.

      • Is consistency necessarily good? This can be a barrier to evolution. e.g. all blog readers look the same, n to-do list iPhone apps.

      • “To affect the quality of the day, that is the highest of arts”: Think about the effect your site/app has on others each day

      • Invisible design is a crock of shit. e.g. Who wants an invisible Lamborghini?

        • [sg] Some things should be invisible. This is really just semantics.

      • We don't need permission to do the best we can do

      • Greatness multiplies greatness

      • You're creating change: whether or not you want to

      • Understand how people use tools and what their needs are vs just copying what others are doing

      • If you can't feel the pain you can't fix the pain.

      When Your Idea Doesn't Suck: How to stop working for clients and launch a startup

      Mike Davidson (@mikeindustries)

      • Mike did not want anything to be tweeted, blogged or recorded so I respect that. Whilst his speech did have some good content I didn't think it warranted being so protected.

      Designing for Participation

      Bek Hodgson - Blurb, Etsy

      • Etsy – marketplace for homemade stuff

      • When designing layouts consider how the page will be displayed if little or lots of content (e.g.a user's profile)

      • Sets / Collections can be useful to group lots of content. Started with company providing taxonomy then moved to user driven folksonomy.

      A Baroque Aria – 10 Tips for Entrepreneurs

      Kevin Rose (@kevinrose) - Digg

      • 1. Go Build It!

        • Running ideas past others isn't always the best idea

        • You don't need anyone's approval

        • If you believe in something, work nights and weekends, it won't feel like work

      • 2. Build & Release

        • List out your features for six months, sort them by importance, and build 3-4 of them

        • Stop thinking you understand your users – learn from what they're actually doing on your site, not what you think they do

        • Build, release, iterate, and repeat.

        • Feature not working, how core is it? Kill it?

      • 3. High your Boss

        • “Get people on board that understand your vision and what you are trying to create”

        • Senior positions: Only hire people you'd personally work for – make sure they can help build your vision

        • Junior positions: Hire hustlers, people that will run circles around you

        • Demand excellence: Top 1%

      • 4. Raising money

        • Beg, borrow and steal for as long as possible

        • Don't just take the cash, can they add value?

        • Super angels (50-200k) no board seats

      • 5. Go Cheap

        • Shared servers to test the waters

        • S3, cheap, fault-tolerant

        • No office (8 months no office)

        • Shared cell phone plans

        • Shared apartments (3 digg employees)

        • Part-time A players (@dburke)

      • 6. Connect with your community

        • Start a podcast (it's OK not everyone listens)

        • Throw a launch party, then yearly/quarterly events – invite the press/influencers personally – don't tell the bar (tell them it's your birthday; cheaper)

        • Engage with the community

      • 7.Hack the Press

        • Invite only system (Pownce, Digg v3)

        • Talk to the junior bloggers

        • Attend parties for events you can't afford – network with influence, bring a demo

      • 8. Advisors

        • What technical problems are you going to have?

        • Advisors can be helpful in a whole slew of areas (marketing/hiring/bizdev)

        • Stock compensation, typically not a board seat, solid advisors help during fund raising

      • 9. Leverage your user base to spread the word

        • Facebook notifications is a great example of this (e.g. Farmville and helping out farm).

        • “Tweet to complete” - used by wefollow. This asks user if they want to tweet.

      • 10. Analyze your traffic

        • Install Google Analytics

        • Entrance sources (search?)

        • Paths through site

        • Surveys

        • Top exit pages

      Elements of a Networked Urbanism

      Adam Greenfield (@agpublic) –

      • What do people want from technology to improve their daily life?

      • Consider the social and ethical consequences of Ubiquitous computing

      • “By the end of 2012, networked sensors will account for 20% of non-video Internet traffic” (Gartner)

      • When you walk past a camera, assume it's on, you have no privacy any more in public spaces

      • Information persists

      • Real-time sensors are becoming more prevalent. e.g. Visualisation of night-time activity in San Francisco (

      • The likes of Foursquare can drive usage patterns e.g. people will return to places just to stay the mayor or get a badge

      How the Web Works

      Jeff Veen (@veen)

      • Disruptive innovation: From ice to refrigirators, From typography to CSS to ...

      • We need to be “native to the web”

      • Shipping code is the way to get consensus / converge

      • Get your site out there, then iterate. iterate, iterate

      • Speed of iteration beats quality of iteration

      • The Robustness Principle: Be liberal with what you accept... and conservative in what you produce.

      • Separate interfaces from engines

      • Prototype before polishing. Get it working before you optimise

      • Design for the future, it will be here sooner than you think

        • [sg] Need to be careful to not over engineer though

      Dense and Thick

      Mark Pesce (@mpesce)

      • Sharing makes something more valuable

      • The web is “All things to all people”

      • The genius of Apple's iPad design is its simplicity (it is not trying to be a computer). This will impact what the Web is about to become.

      • “Augmented Reality is about to make a transition. We will soon wonder how we lived without it.”

        • e.g. Pointing a phone at a book and getting information about it

          • The device becomes the focal point

          • The book is about to be subsumed by the network

        • e.g. Beef Mince

          • Traceability back to the animal, inc carbon footprint, feed…

          • These questions will need to be on-demand to minimise our footprint on the planet

        • e.g. Medicine

          • Get info about medicine, such as if it is a poison and how it complements other medicine you're using

          • An interface to ourselves is where we are moving to

      Thursday, February 18, 2010

      Webstock – New Zealand’s Web Conference – Day 1

      I had heard lots of great stuff about Webstock in previous years so decided to go along this year to experience it for myself. This is a very professional conference and has (mostly) excellent speakers covering a variety of Web related technologies.

      Here’s my synopsis of Day 1.


      Mike Brown (@maupuia)

      • You will fall in love with things that are made with love

      Web Design that grabs people

      Scott Thomas (@simplescott) – Design Director for Obama's campaign

      • Web and Print overlap in campaign

      • Deliver clear and concise messaging, focussed on the “We” rather than the “He”

      • Keep the message of hope while dismantling the notion of being aloof

      • Establish a consistency and balance to exemplify stability and experience

      • Persuading people was the mission of the home page therefore needed to be prominent, with localised information

      • Spend more time researching than design

      • Information architecture (inc. wireframes) is a key part of the design process but is often overlooked

      • The fold is dead

      • Recording speeches and putting up on Obama website with transcripts gave the power back to the politician not to major media.

      • The web is changing the way we interact, it is making the world smaller

      • Analytics are king. Track when people drop out of a process, how they are using a site etc.

      • No matter how complex or disorganised you think you are, understand that you can achieve great things when you have great people

      Brian does the Andrew Sisters

      Brian Fling (@fling)

      • “New Zealand is Yours Go there now” cheesy video clip

      • “Mobile Design and Development” O'Reilly book author

      • Context is important

      • Cost of supporting different mobile devices is high

      Designing for Diversity – Inclusive Design & the User Experience

      Liz Herrod (@scenariogirl)

      • Why are we segregating people?

      • Shallow personas are often used that don't take into account accessibility (poor sight, language barriers, poor hearing)

      • Why is disability intimidating?

      • Consider WCAG2 checklist

      • Work ethically; don't be lazy

      Building the Open Web

      Lachlan Hardy (@lachlanhardy)

      • Open Web 101: Check out OpenId, Microformats, Oauth.

      • WebFinger can connect your email address to an OpenId.

      • ActivityStreams extends Atom

      • Portable Contacts looks like a good way to access "who-you-know" information in a secure way; built around Oauth and vCard

      • URLs are important for usability. Apparently also good for SEO e.g.

      • APIs should be based on REST

      • Offer APIs (pref REST based) and relevant web feeds (ideally personalised) for your site that utilise Microformats

      Security-Centred Design: Exploring the Impact of Human Behaviour

      Chris Shiflett (@shiflett)

      • Ambience is an interesting concept to consider in design (e.g. ambient music when approaching a train stop, login seals)

      • Login seals (e.g. Yahoo) make phishing harder

      • Excellent example of Change Blindness given with switching between photos are trying to identify difference (hard!)

      • Password anti-pattern:

      • Accommodate users' expectation and tendencies; don't try to modify them

      • Be Humble. Arrogance attracts negative attention.

      • The Colour-changing Card Trick is awesome

      Fostering Personal Connection to Place

      Shelley Bernstein (@shell7) - Brooklyn Museum

      • Brooklyn Museum make things easy to find and make it easy to enjoy

      • Learn and adapt to feedback

      • Push comments up the page to foster discussion

      • With twitter be transparent about who is talking, good news and bad news.

      • Brooklyn Museum have kiosks that enable YouTube content to be uploaded from within the museum to capture public comments

      • Brooklyn Museum pulls back info from Foursquare and displays it on their website for the general public. Open APIs ftw.

      • They also worked with Foursquare to get a specific badge.

      • Use communities for moderation

      • Use crowd-sourcing to engage communities. Brooklyn Museum made a game to tag photos.

      • I like the concept of crowd-sourcing tagging of photos via a game. Crowd-sourcing has a number of opportunities

      StackOverflow: Building Social Software for the Anti-Social

      Jeff Atwood (@codinghorror)

      • Coding Horror blog

      • Know your audience

      • Social software for the anti-social: i.e. supports developers to ask questions and get answers

      • Voting works well with good info going to the top and allowing the person who asked the question select what they think is the best answer.

      • Have support to flag inappropriate content

      • User generated tagging enables related questions to be grouped

      • Reputation system unlocks abilities and people's answers are voted on

      • There aren't bad programmers, just programmers that haven't been taught how to write good code.

      • Work vs work ('Work' is what you're paid to do vs 'work' is what you do when you're interested and inspired)

      • Voting for new features

      • Badges are good to a) reward people and b) provide more context to others to evaluate context of answers

      • The faster your site the less friction it will have which which enable more participation.

      • No registration required: reduce barriers

      • Anybody can edit anybody's post.

      Please, Don't Let it be Interactive

      Regine Debatty

      The Word Wild Web


      • We fall in love with things made with love & some people refuse to fall in love with things that aren't made with love.

      • ASCII Storytelling/Poetry is quite cool and Rives is great at it

      • Check out for his TED talk on ASCII Poetry

      • Rives is great at Storytelling and Poetry 2.0

      Saturday, January 23, 2010

      Book Review of “Cloud Application Architectures”

      51F4MsOCQUL._SL160_Cloud Application Architectures: Building Applications and Infrastructure in the Cloud” by George Reese is more of an Amazon EC2 and S3 user manual than covering Cloud Application Architecture in general.

      Having said that I did find that it still did have some good content although in many areas it was very high level.  Some diagrams were also missing from my copy.

      There was a good Cloud Computing and Amazon Web Services overview.  Cloud ROI, Monitoring & Management, and reiteration that Laws need to be considered were also covered, as were development implications, and in particular multiple-server transaction management.

      If you want an overview of Amazon Web Services, EC2 and S3 then this book may be right for you.

      Friday, January 1, 2010

      Simple Motel services that make a difference & St Ives Motel

      We have been staying at the St Ives Motel in Hobart for the past few days and there are a number of small little touches that this basic but clean motel about 10 minutes walk from Salamanca Place has that would cause us to strongly consider returning.

      Broadband: Whilst the broadband is not free, it is very reasonable at 5 cents per MB download.  There is not wireless available, however there is an Internet connection point in our room and there is also a computer available for use down at reception (for no additional cost than the MB) and free printing.

      Mini Bar: Mini Bar’s are notorious for being ridiculously priced.  The prices here however are just what you would pay if you at the liquor shop, which is in fact right next door.

      Continental Breakfast: At AU$3 per person for a Continental Breakfast Pack that contains Bread for Toast, a spread for the Toast, a pack of Cereal and Milk, this is very well priced.

      Phone Calls: Local calls at 15 cents for the call, and International calls at 20 cents per minute to UK/USA/Canada/NZ Hong Kong is great.

      Washing Machine: Use of the communal guest washing machines is very reasonable at AU$2 and this includes the use of washing powder.  It is an additional AU$2 for use of the dryer.

      TV: Equipped with a large Plasma TV screen and a reasonable number of channels, other than one channel that the sound isn’t working on for us, the rest were great and many in HD.

      Well done St Ives Motel.