Monday, 12 December 2011

Android - Could not find HelloWorld.apk! - fix

So my first experience of Android development left me frustrated after getting an error trying to launch the  simple Hello World example!

Simple fix - basically when I set up eclipse I forgot to set the JAVA_HOME path variable.

The symptoms are this in the console:
[2011-12-12 22:37:05 - RoryHelloWorld] Android Launch!
[2011-12-12 22:37:05 - RoryHelloWorld] adb is running normally.
[2011-12-12 22:37:05 - RoryHelloWorld] Could not find RoryHelloWorld.apk!

The fix is simple. Open up your machines environment variables (in Vista it's Control Panel -> System -> Advanced System Settings -> Environment Variables).

In System Variables add a new variable JAVA_HOME set to where your JDK is installed, e.g.

JAVA_HOME=C:\Program Files\Java\jdk1.6.0_12\

Then add JAVA_HOME to your Path variable. I added:

%JAVA_HOME%\bin;%PATH%; to the end of mine

Restart eclipse for the changes to take effect, then the next time you run your app it should work!

Tuesday, 6 December 2011

10 Billion Android App Downloads - Missed opportunity?

So Google has announced that there have been 10 Billion apps downloaded on Android devices since its inception a few years ago - which is a staggering amount which clearly highlight it as a major competitor to the iPhone (Google announcement).

One billion is a pretty big number by any measurement. However, when it’s describing thespeed at which something is growing, it’s simply amazing. This past weekend, thanks to Android users around the world, Android Market exceeded 10 billion app downloads—with a growth rate of one billion app downloads per month. We can’t wait to see where this accelerating growth takes us in 2012.

Again this has got me thinking, am I missing out on something here? I have an android phone (HTC Desire) and yet I've still not tried to make myself an app yet.

My mission for this festive period is to have created my own app - the search for ideas starts now! I think I'll start using this tutorial and work it up from there. I'll try document my progress as I go.

P.S. if you are reading this and have anything you want developed you think would be useful then leave a comment!

Monday, 5 December 2011

How To: Publish a ClickOnce application in Visual Studio 2010

Ever wanted an easy way to deploy an application and then publish updates/patches to it with no fuss? If so then look no further than ClickOnce applications. Here's the simple steps you need to do to get your app out there!


You need to run Visual Studio 2010 as Administrator. For instructions on how to see this please see Run Visual Studio as Administrator.

Step 1

Right click on your project file, and choose Publish... from the options. You will be presented with the following screen:

You can publish to a file path, or a server or to a website. In this instance I'll just choose the default and press Next >.

Step 2

The next stage in the wizard asks you whether you want allow the user to run the program offline (i.e. they run it locally from their own machines) or whether you want it to run from the publish location.

In my example I'm publishing my MediaPlayer, so I want people to run it from their local machine without a connection to the Internet needed.  Press Next >.

Step 3

The final stage in the wizard is to press finish on the confirmation screen. This just shows a summary of the previous steps.

Press Finish.

Step 4

Once you have clicked Finish your application will be published. In my example I am shown the web page where the application has been published to. Now, anyone who wants to install the app just needs to click Install.

Note that it shows the pre-requisites required, and also handles the Version numbering for you - pretty neat!

Publishing updates

So you have deployed your application and you need to circulate a fix? Worried you will need to uninstall/install the application everywhere again? Fear not, you just follow the steps above again and it will release the new version to everyone the next time they launch the application.

The user  then just presses ok, it downloads the new version and away you go - job done!

Version Numbering

If you want more control over the version numbering, then you can also do this. Simply right click on your project and choose Properties. Now navigate to the Publish tab and you will see the Publish Version numbering down the bottom. Now you also have an easy way to version your software.

Each time you publish you can automatically increment the version number too.

Thursday, 1 December 2011

YaCy - Can anything replace Google?

Reading an article from the BBC ( about the newly launched YaCy search engine got me thinking about whether a search engine will ever replace Google as the dominant search engine. My immediate reaction to YaCy was "no chance" - it relies upon people downloading software and installing it in order for it to advance its indexing powers, something that Google just seems to do. No matter how much effort this is for people to contribute to it, it is more than it "just working".

I look at other search engines such as Yahoo and Bing and think to myself over the last 5 years I have never used them, I always use Google. "Googling" something has become part of normal language, you don't search the Internet you "Google" it. It's just the same as vacuum cleaners are called Hoovers. In a bizarre way Dyson's are seen as the best kind of Hoovers these days!

With the simplicity of Google, the neat features it has gradually added to it like blogs, email, Google Reader etc I just can't see anything replacing Google as the de facto standard for searching the Web.

Tuesday, 29 November 2011

Are programming reference books a thing of the past?

Something that struck me while working today was the C# reference book which currently acts as a monitor stand on my desk. Pro C# 2008 and the .NET 3.5 Platform (Windows.Net) by Troelsen is no doubt a very good book, but it has served no use other than to help my posture! In saying that, this book is at least more useful than the ones gathering dust on my bookshelves at home.

So it does beg the question - are these types of book a thing of the past? Do we really need them? My response would be no - I have not needed one in 2 years so the likelihood of needing one is very low. Whenever I need to know something it is far quicker for me to use Google which will list examples of its use which can even be copied and pasted than it is to open up a book, check its index or contents. The same can be applied to finding out information outside of programming.

What are the implications of this? Does it lead to a poorer understanding of the material, and ultimately poorer code? Probably. When using classes or controls or components it is easy to dive in and use it, rather than to look at how it should be used, what the consequences are, what the better options are. Perhaps if you had to take more time to find out the information, you would make a more informed choice.

A good example of this can actually be found in my post yesterday about the MediaElement control (WPF MediaPlayer with interaction). When using it I did a quick Google, found some examples and was able to create something in a matter of hours. However, my final product kinda defeated my original goal which was to replace Media Player with a lightweight alternative, as it transpired that the MediaElement actually uses Media Player behind the scenes.

Does this mean I have learned my lesson? No! Personally I don't have the patience to search through books when the information is at my fingertips, and I can run through examples within a couple of seconds. For me, this type of reference book has become a thing of the past.

Monday, 28 November 2011

WPF Media Player with interaction

To work around the fact my laptop is getting old and can't seem to handle multiple programs open at once i.e. Visual Studio or other dev environment and a media player I thought I would have to write my own lightweight version of one of them. The obvious thing to go was the media player which had so many features packed into it which I never used so I set about creating my own media player.

Having recently installed Visual Studio 2010 I was keen to try out Windows Presentation Foundation (WPF) so I had a play about with it and within a few hours I was able to knock up something quite cool thanks to some good tutorials on the net.

Aesthetically it is pretty shocking but it does the job nicely and even has some integration with in order to get an image of the artist and to suggest to me some related artists. Additionally clicking on any of the artists, albums or tracks brings up the relevant page in if you fancy finding out more about them.

As mentioned, the effort involved in setting this up was incredibly small - the ability to play the tracks is all handled by the MediaElement class, which I believe also handles playing video so I'll maybe enhance it to do this. The only downside to this is that it is using Windows Media Player behind the scenes so there is a requirement for this to be installed.

The interaction is through simple web service calls - the list of calls that can be made can be found published on the site

I'll maybe post more specifics of how the player operates or share out the source code if there is any interest, but my first impression of WPF is that it's pretty cool and powerful; however I doubt in the long term it will replace Windows Forms Applications.

Sunday, 27 November 2011

Paintable - Multi-touch table

As I have only recently become a project manager I have been thinking back over previous projects I have worked on and my only experience before of being a project manager was in my masters year at the University of Strathclyde. With a team of 7 people, a load of Java code, a budget of £2000 and 12-weeks to do it (along side our dissertations and other classes) we managed to pull together something quite remarkable - a multi-touch table.

Using the reacTIVision software toolkit (, a Mac mini,a projector, a piece of perspex and a table from Ikea we produced an extensible framework from which the university could add new applications.

The following Youtube links show the table being used as a paint application , and also a simple checkers game.

Paintable - Multitouch interaction:

Paintable - Checkers game:

Not perfect but the concept is there! Oh and before anyone comments about it I do know that my .NET blog's first proper post contains Java and no .NET at all!

Where to start...

Hi and welcome to my blog! I'm going to use this space as a place to bounce any new ideas I have, share any tips and tricks I have picked up around coding and project management, and also maybe write about things I have done in the past.

Android Studio - How to change app icon (ic_launcher)

Changing your applications icon (ic_launcher) is a common occurrence when developing your android application. Here's quick steps on how...