Facebook: Keeping things between friends

One of the most visited posts on my blog is titled “FaceBook:Do you know who is watching you?” which details how to keep your Facebook profile out of the public eye. In light of the MI6 chief/Facebook scandal (his wife obviously doesn’t read my blog), I thought I’d update the instructions so you can avoid suffering a similar embarrassment :)

  1. Log in to Facebook and from the Settings menu (top right of the page) select Privacy Settings
  2. Now select the Profile section (alternatively click on this link: http://www.facebook.com/privacy/?view=profile&tab=basic)
  3. Set all the options to Only Friends and click on the Save Changes button
  4. Now select the Contact Information tab (or follow this link: http://www.facebook.com/privacy/?view=profile&tab=contact)
  5. Once again set all the options to Only Friends and click on the Save Changes. If you don’t want your friends to know your email then you can select No one as the option for your email address too.
  6. Click on the Privacy part of the breadcrumb at the top of the page and the select the Search section (or follow this link: http://www.facebook.com/privacy/?view=search)
  7. For the Search Visibility option you have a couple of choices. If you are completely a paranoid set it to Only Friends. If you are slightly paranoid then set it to Friends of Friends. If you don’t care then select one of the other options such as Everyone.
  8. In the Search Result section you can control what people can see when they do search for you. I would suggest leaving only the A link to add me as a friend and A link to send me a message options selected. You can also turn on My profile picture but it all depends on how compromising your profile pictures get :)
  9. Lastly in the Public Search Listing section uncheck the create a public search listing for me… option because you don’t want your profile showing up on Google.
  10. Click on Save Changes and you are all done.

Happy Facebooking…

99 Things You Should Have Already Experienced On The Internet

A work colleague just showed me this site (yep its Friday): Greg Rutter’s Definitive List of The 99 Things You Should Have Already Experienced On The Internet Unless You’re a Loser or Old or Something

Its a fantastic collection of Internet sites and videos. Check it out.

Here are some of my favourites:

YouTube Preview Image YouTube Preview Image

ScanPaste – My first app released to the Android Market

Last week I released by first Android application on the Android Market. It is called ScanPaste. The application lets you scan barcodes and then  copy the scanned data to the phone’s clipboard for pasting into web pages, emails etc.

I had been looking for a simple app to build, to test out the end to end Android Market publishing process and when I saw this blog post by about populating your Google books list using barcodes scanned with a USB scanner, I figured why not build an Android app to do it.

Now scanning barcodes with a phone’s camera is not that simple but luckily someone else has done all the hard work. The ZXing team have released an excellent barcode scanning application and library. Even better, using a cool feature of Android, integrating barcode scanning into ScanPaste was only a few lines of code!

In an Android application each screen is broken down into it’s own little task called an Activity. If an Activity is correctly “marked” it can be initiated not only by the application owning the Activity but by other applications. This is what the nice guys on the ZXing team have done and with their application installed, any other application can simply use the following code to scan and process barcodes:

...
// start the scan
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
startActivityForResult(intent, 0);
...
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
  if (resultCode == Activity.RESULT_OK && requestCode == 0)
  {
    Bundle extras = data.getExtras();
    String result = extras.getString("SCAN_RESULT");
    // do stuff with result here
  }
}

The rest of the app is pretty straightforward, a couple of buttons, a text field and some error checking. All up the application is less than 100 lines of code.

In all it took a few hours to put together and test. The bulk of the time was actually spent working on the icon :) The 1.5 Android platform has some pretty clear guidelines and I was trying to adher to them.

Building a signed app for upload to the Market was a snap, just a menu click and a step by step wizard. Actually publishing the application was as simple as uploading the signed .apk file, filling in a form and clicking on upload. Couldn’t be simpler especially when you compare it to the nightmare process of uploading an iPhone app to the iPhone App store and of course the Android Market doesn’t have a vetting process so as soon as the upload was complete the application could be downloaded by anyone.

One of the things that took me by surprise was that within half an hour the application had been downloaded 20 times. A week later it has been downloaded 1849 times and it has 1156 active installs! It also has a 4 1/2 star rating and all positive comments. From the comments it seems that many people are using the app to scan the barcodes of books that they are selling on Amazon.

Ok the bad stuff….

Firstly, a minor one,  in the developer console of the Market there is no way to see the comments about your application. You can see the rating and the number of ratings but that is it. Instead you need to look up the app in the Market application on your phone or view a 3rd party site like Cyrket (which apparently uses the Market’s own APIs so why the info cannot be surfaced in the developer console is beyond me).

Now for the killer…since I am in New Zealand I cannot sell any Android applications! I need to be in the US, UK or one of a couple of other countries to be able to sign up as merchant. What the heck is up with that? I see that as a major shortcoming of the Android platform and one that Google needs to rectify ASAP.

Hopefully with the imminent launch of the HTC Magic here in New Zealand this will change. Lets wait and see….

Its going to get bumpy

Just in the process of moving hosting providers so I expect things to get a little bumpy….

[Update] Ok everything seems to be up and running with my new provider !

[Update2] Well it was all going fine until I accidentally changed ownership /var. MySql, sshd all get very upset when you do that…. All fixed now (I hope)…

Review: Balsamiq Mockups

Ok let me start off by saying “I love this application”. It does exactly what it says on the box, it’s fast, easy to use and the results are impressive.

So what is it? Well it’s an application that lets you create mock-ups for websites, desktop apps and even iPhone apps.

For instance here are some mock-ups for the FDD tracking app that I’m working on. It took less then 20 minutes to put these together.


One of the best things about the tool is the “UI controls”. For instance if you drop a grid object on to your page and click on it, you get a text area into which you can type comma separated values. Each line of text becomes a row in the grid and each value becomes a cell. If you type [] you get a checkbox, [x] gives you a checked checkbox, [text] gives you a hyperlink of the word text. It couldn’t be easier.

Check out this video to see it action:
YouTube Preview Image

and some more examples.

Balsamiq Mockups is an Adobe Air application so it automatically updates when a new release is available. It also means that it runs on multiple platforms, I have seen it running on Windows and Mac os without issue.

Each screen that is created is stored in a separate XML based file. Most of the UI controls can be set to link to another screen, this along with the full screen mode, allows you to easily walk people through your mock-ups on screen.

You can also export your mock-ups as .png files. Unfortunately it does not export to PDF which would be nice.

The desktop version of the tool is $79 which gives you updates for life, which is not a bad deal at all. There are also versions for JIRA, Confluence and XWiki.

My only gripes are that sometimes it is tricky to select objects when they are layered on top of one another. Also there is no way to build your own smart UI controls although you can draw just about any GUI control using the supplied primitive objects.

If need to do any kind of mock-ups then I cannot reccommend this tool enough. Download an evalution copy and try it for yourself. You won’t be disappointed.

The Contact Protocol & my first RFC

About ten years ago I had a couple of interesting ideas but due to sheer laziness on my part I never did anything with them.

One of these ideas however keeps popping back into my head and so finally I’ve decided to do something about it.

The original idea is very very simple: wouldn’t be nice to have a URL that points to information about you ? You could give this URL to people and they would always be able to find you.

Now of course it’s 2009 and the idea is slightly more refined and so I give to you: the “Contact Protocol”… It works as follows:

  1. you give out a Contact URL which looks something like contact://host.com/xyz . This URL can be put on business cards, email footers, websites etc
  2. the URL can then be used to retrieve your up-to-date contact details. If your details change you simply update them in one place and anyone who has your Contact URL can retrieve them.

Now obviously you would be able to type the URL into a web browser to lookup someone’s details but that is only one use.

How about an email client ? Just add the Contact URL for someone into your address book and voilà your email client will always have right email address for them.

What about your mobile phone ? Add a contact URL for a contact and the device can use it to figure out which phone number to use when you call them.

Instant messaging, same deal…

Pretty nice… at least I think so.

So what the heck is an RFC and how does it fit in with your crazy idea I hear you ask ?

Well I want the Contact Protocol to be widely used and the easiest way to do this is to make it a standard. On the Internet standards are defined in request for comments or RFCs. This practice has been in place since the Internet was born.

The RFC process is looked after by the IETF (Internet Enginnering Task Force) and most RFCs are written by this group but anyone can write one and submit it for consideration so this is what I have started to do.

It is however not entirely straightforward, RFCs have specific format, language, style and content requirements. Check out the RFC style guide (formatted as an RFC itself). Luckily the IETF have provided the xml2rfc tool which takes an xml file and generates a correctly formatted RFC, this makes things much simpler.

So I’m currently enthusiastically hacking away on my xml file, I’ll let you know when I have something to look at.

Balsamiq Mockups is very cool

The nice people at Balsamiq have given me a copy of their Mockups tool to review (thanks Valerie).

I’m going to give it a good going over for a few days and then I’ll do a nice long write up. In the mean time here is short video to show you what it’s all about…

YouTube Preview Image

The downfall of Agile Hitler

Very very funny (if you are a developer)

YouTube Preview Image

All that SPARQLs on the web

A couple of months ago,  I watched Tim Berners-Lee’s TED talk on Linked Data in which he lays out his vision and explains why Linked Data will be the next major use of the web.

During the talk he mentioned the DBpedia project which is an effort to extract structured information from the content of Wikipedia. Currently it describes 2.6 million things with 274 million facts.

So how do you access all this  data? Well one of the ways is to use SPARQL (SPARQL Protocol and RDF Query Language).

For instance to find all the films directed by Peter Jackson you could run the following query:

SELECT ?director
WHERE { ?director dbpedia2:director <http://dbpedia.org/resource/Peter_Jackson> }

Click here to see the results.

You could use this query:

SELECT ?film_directed_by_pj ?budget ?runtime
WHERE { ?film_directed_by_pj <http://dbpedia.org/property/director> <http://dbpedia.org/resource/Peter_Jackson> .
        ?film_directed_by_pj <http://dbpedia.org/ontology/budget> ?budget .
        ?film_directed_by_pj <http://dbpedia.org/property/runtime> ?runtime
      }

to see if there is a correlation between budget and runtime for his films.

This query returns the list of countries in the Southern Hemisphere and their latitude and longitudes:

SELECT ?countryName ?latd ?latns ?longd ?longew
WHERE {
  ?c rdf:type <http://dbpedia.org/ontology/Country>.
  ?c dbpedia2:commonName ?countryName .
  ?c dbpedia2:latns ?latns .
  ?c dbpedia2:latd ?latd .
  ?c dbpedia2:longd ?longd .
  ?c dbpedia2:longew ?longew .
  FILTER REGEX(?latns, "S", "i").
}

Of course DBpedia is not the only source of data, this diagram (created by Chris Bizer) shows what sources are currently available on the web:

Open datacloud

Click here for an interactive version.

This is all pretty interesting stuff and you can see why Tim Berners-Lee and others are so excited about the concept of Linked Data.

Want to know more ? Here are some links:

mPass article on NZ Herald

My Google Alerts just turned up this very nice article about mPass on the NZ herald site.

It is always nice to get good press about things you have worked on.

I like the comments too:

I downloaded the Air New Zealand mPass a couple of months ago and have used it successfully a number of times. It is a fantastic application and has sped up the already fast check in process with Air NZ. its great to see “our” airline is right up there with technology and has made the whole tiresome process of checking in simple and enjoyable. PS – the iphone rocks. just a shame about the data charges.

and

Excellent idea ! Keep it up, Kiwi’s – show the world we can make things better, faster and more convenient.