My new keyboard

My WASD Keyboard next to the inspirational Amstrad CPC464

I spend a great deal of my time typing.  As a programmer that’s what I do.  So it’s incredibly important that I have a keyboard that helps me with typing.  I’ve had a few mechanical keyboards in the past, and I’ve been pretty pleased with them.  But the other day I decided to treat myself to a wasd keyboard. The main reason I went with them was due to how customisable your keyboard – and I have for ages wanted a keyboard that was a homage to my very first computer – the Amstrad CPC 464.

I chose to have Cherry MX Brown switched in the keyboard so that they were a bit less clicky, and less noisy – so my typing wouldn’t annoy people too much when I worked in shared spaces.

Its a total joy to type on the new keyboard – it’s amazing how the tactile and audio feedback can really help with typing.  I’ve noticed just within a day of using it that my typing speed has increased.

I use this keyboard with a mac, and Karabiner to map some keys, and here is a gist so that was needed to map the Backquote (`) to the Backslash (\) – as I’ve decided to keep the keyboard pretty much using the standard PC layout.

I’d urge anyone who does a lot of typing to invest in a decent keyboard – it’s so easy to pick up a cheap keyboard and then forget that when you’re typing away on it how horrible it really is.  If you’re using a tool every day then it’s sensible to have one that makes you more productive.

There are other companies that make great mechanical keyboards, but I have to say WASD Keyboards’ service was second to none!.


Why I’ve moved over to Atom Editor

I spend a great deal of my time typing.  I spend a great deal of my time editing text files. I’m a programmer – a text editor is essential.  My brain is too small for me to use Vi / Vim or Emac, I just can’t remember the key bindings.  But it’s essential for me to have a light weight editor that keeps out of the way but is extensible and has a rich eco-system of plugins / packages.

I used to use Sublime Text, I loved it – it was neat and it kept out of the way and let me edit files and program.  Then along came Atom . At first it was a bit clunky, and too slow – but over time the development cycle of it has made it as good as Sublime – and the package eco-system has grown with people porting their Sublime packages over to Atom.  I feel bad that I am no longer using Sublime Text (I paid for a license after all) – but the thing that got me worried was that Sublime Text was a proprietary product and it just wasn’t being updated.  Atom is rolling out patches and updates all the time, and as it’s Open Source (here is the source), it means that there is a good chance that even if Github decide not to actively support it in the future there will be enough people who want to carry on with the project.

It took me a little while to pluck up the courage to abandon Sublime Text – as I had got so used to it, but Atom is similar enough to Sublime to make the transition almost seamless.


Golang! Go Language.

Go Language or golang - is a relatively new language from Google.  It was created in 2009 – it’s essentially a system language. It’s statically typed and has some similarities to C and C++ (structure, and syntax to some degree).

I recently decided I wanted to do some system programming, or at least some command line tools. In the past I would have looked at C as the option, but I thought I’d give Golang a Go!

The task I set myself for the initial project was that of a simple ftp deployment helper. I currently have to do quite a lot of deployment of development work, and currently this involves a lot of ftping different files. This can be a real pain, making sure the correct files have been uploaded – especially if they’re in different git repositories (essentially I want to set up our servers so we can deploy via git, but that’s another project!). So what I wanted to do was create something simple so I could just type :

iri deploy config.json files.json

And it would do the hard work for me.

I started the development in my limited spare time, and found Golang very easy to get into – there are plenty of useful documents and plenty of help on the variety of forums out there. One great feature of golang is it’s ability to use code repository sites such as github to home packages and a lovely simple mechanism to install them – it’s as simple as typing

go get address_to_some_repository

And there are a whole host of packages listed at the GoDoc website.

My deployment project – code named iri – can be found over at github . It’s still early days, it doesn’t actually do what it should do as of yet – so keep an eye on it and I’ll make a proper post once the project is working properly.


Firefox OS :: ZTE Open

I recently (today) received the ZTE Open Firefox OS hand set.  This is a £60 hand set running Firefox OS.  I’ve been watching the development of FirefoxOS since it was called Boot2Gecko with great interest.  As a advocate of open technology, the idea of using HTML5 (HTML,CSS,JS) as a platform for developing mobile apps really interested me, so I was keen to support an OS that is essentially a web-browser.  Now this concept isn’t new.  Palm did it, Google are doing it (With their Chrome OS).  So I was incredibly interested when Mozilla decided to focus on what they do best (after all Firefox Web Browser is one of my favourite browsers).

I was suprised when opening the packaging.  The shell of the phone does feel a little flimsy and plasticy – not sure it will handle too much of a hammering, but the actual feel of the phone in my hand was nice.  The shocking Orange colour wasn’t too bad on the eye.  It was a breeze to set up – with a very nice and slick wizard that holds your hand all the way.  I havn’t found the interface at all clunky, or sluggish – which was a bit of a suprise as nearly all the articles I’ve read have indicated that it wasn’t a particularly nice experience.  But then I’ve recently been using a terrible HTC wildfire with Android 2.2 which is a pig.

I’ve not spent a great deal of time with the phone, played with a few apps (FirefoxOS allows apps to be either hosted, or installed – hosted apps are essentially just short cuts to web-sites that run the app, installed are ones that you dl and keep on your phone).  I’ve made a few calls and the sound quality was good, and the dialler app worked as expected. From my experience so far things seem to be quite nice actually!

Firefox OS main emphasis is to focus on the emerging markets (China, India), so they want an OS that will run on low end handsets – and to be honest so far so good.  I fully anticipate some teething problems, after all this is an OS in its infancy (well the very foundations is GNU/Linux – so not too infant) – but at the moment I am pleased to be supporting Mozilla and their Firefox OS.

I’ll add some more posts as I continue to use this new handset – my main reason for getting it was to do some development work on Firefox OS and also to move away from Google / Apple products.


Beware the cloud!

The Cloud – the latest buzz word in technology circles.  What does it really mean?  Well essentially it means remote storage and using the “internet” as a means to run applications, using your computer – and quite often – a web browser as a means to run these applications.  With the rise in mobile devices, this all seems like a logical thing to do.  Keep your data in one central place so that you can retrieve it where ever you are.  This is very similar to the old mainframe model that was used in the past, with a users having a dumb terminal and all data and applications running off of a central computer.  The difference being that these days the device you connect to the “cloud” isn’t as dumb.

At first I felt that the concept was quite interesting, although straight away I realised it’s similarities with the old mainframe / dumb terminal way of thinking.  But over the last year or so of thinking about it, I’ve come to the conclusion that it’s some what sinister from a privacy / personal level.  Personally the hardware is not what I feel is important when it comes to computing.  It’s the tool for me to do my work, and create.  The real important aspect is the Data.  As such I feel it’s important that I have full control over my data, and that I don’t hand over my rights to a third party company.  From a legal point of view you get into situations where a government agency (the Police for example) would need a search warrant to obtain your data if on your personal computer, but if your data is held on a server owned by a third party organisation then it might be the case that due to legislation and company policy you find that your data is no longer protected by such a basic right.

I feel that slowly people are allowing their personal data and personal lives to become open to all levels of intrusion.  A lot of it seems innocent at first, but when you start to look at incidents such as that of the iPhone logging location data (with out the user knowing) and then ponder the usages of this data (which would most probably be for marketing reasons), I have to start to become more wary of what I allow to be stored, and by whom.

On a separate level, a lot of Cloud computing concepts also go against the Free Software Definition.  This is due to the fact that the applications that you are using are not running on your machine (as it were) and you are unable to see exactly what is going on with regards to the programming.  Many online apps (Google Docs for example) are free to use, but they are not FREE.  Also you are overly relying on the services of a third party, and if those services for what ever reason is not available then you are no longer able to continue using it.

I am all for technological advancement, but I have always felt that technology should be there to empower us as individuals and groups.  It should be there so we are able to use it as we please, and use it for a positive reason.  I find the continued expansion of the “cloud” as a means to lock people into services, and essentially hold their data to ransom.  A careful look at all terms and conditions is important when using these services, as it’s not uncommon to find that the data you presume is yours, when stored on these third party servers, actually becomes someone else.

Not all clouds have a silver lining.


20three generative work 2002

During 2002 we started experimenting with generative graphical concepts. The notion was to create small algorithms with simple rules that would generate different images time and time again.

The general process for these generative experiments was that of using a single image, and then manipulating that image by rotating, stretching, skewing and duplication.

The real goal was to use as simple an algorithm as possible, and then from this set of simple rules allow complexity to emerge.

At the time we were using Flash and ActionScript 2 for the development of the images, this was chosen as it’s a nice simple language, and allows for rapid development.


All the above examples can be seen live by clicking here

After experimenting with generative images that move and rotate, we decided to experiment with images that just create instances of static images.  The reasoning behind this was so images could be generated that then could be translated into a palette for design.

As well as being featured in the 6th Generative art Conference in Milan (organized by the Generative Design Lab) we also managed to use these generative experiments for several commercial projects. The most successful application was a collaboration with React snowboards. We created a set of visuals based on our generative programming and one design went into production – the results of which can be seen below. We also used the same generative programming to create downloadable screensavers and graphic assets for Adam Freeland’s 2002 version of the Marine Parade record label (no longer live).

React Snowboards, 2002

React Snowboards, 2002

React Snowboards, 2002

gh & op


GNU – for those who don’t know anything about GNU then GNU stands for Gnu is Not Unix.  GNU was the brain child of Richard Stallman, pretty much 25 years ago.  He thought that people should have an operating system that was Free, that was free in the sense that the users and the community had control over it, and had the ability to do with it as they please (so to speak).  In this current times we have two huge multinationals running the show when it comes to operating systems – that being Apple and Microsoft.  Both have a license and both make it quite clear that they own the operating system, and it’s hands off for the user.

Why Free Software

I am going to quote directly from the GNU site on this :

Free software is a matter of the users’ freedom to run, copy, distribute, study, change and improve the software. More precisely, it means that the program’s users have the four essential freedoms:

  • The freedom to run the program, for any purpose (freedom 0).
  • The freedom to study how the program works, and change it to make it do what you wish (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help your neighbor (freedom 2).
  • The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

This was taken from here

GNU/Linux is the Operating System.  Linus Torvalds in 1990 (or there abouts) creates the kernel Linux that would be used as one of the kernals for the GNU Operating System.  There are many flavours of GNU/Linux out there, and not all of them adhere to the philosophy of free software, on the GNU web-site they list the distro’s that do.  But, it’s a good step in the right direction for anyone to ditch the main OS and move towards the open source / free software OS.

I have recently been exploring different distro’s – using Sun’s Virtual Box to run different virtual machines so I can try them out before I decide to make a permanent change.  My current trial is that of gNewSense – I’ll make a report on this version as soon as I have had a proper play.  It’s based on Debian (which is great), but sticks more truly to the GNU philosophy.

This post has become somewhat of a ramble, and really all I wanted to do was get peoples interest in the Free Software concept and philosophy.

Let’s take a control back of our machines!


Wiring ::

For quite some time I have wanted to do a little more with my programming than just creating web-applications or stand alone apps.  I’ve always had an interest in electronics, but the depth of my knowledge is pretty shallow – and I’ve found the field of electronics to be some what of a beast to get into.

I’ve been aware of Wiring for  a good few years now, and have been watching it develop.  It’s a sister project to Processing – so the language is very similar, the difference being Wiring is designed to allow you to create programs that run off of a electronic board, and micro-controller.

Here is a quote from the site

Wiring is an open source programming environment and electronics i/o board for exploring the electronic arts, tangible media, teaching and learning computer programming and prototyping with electronics. It illustrates the concept of programming with electronics and the physical realm of hardware control which are necessary to explore physical interaction design and tangible media aspects.

A friend of mine was selling some wiring boards, and on an impulse I bought one.  The next step was for me to try and  get it working on Linux – and I have to say Hernando Barragán (the guy behind wiring) was a star and helped no end – so that I could get it working on my distro of Linux.

I’ve had an interest in tangible computing for a long time, but never really done anything practical.  So I am looking forward to a new hobby!  The only thing that is holding me back is what I want to do first with it! – so any ideas then please feel free to comment.  I was toying with the idea of creating some sort of novel device for interfacing sound exploration.  At present I am not sure – I’ll be exploring the language, and what it can and can’t do before I come to any firm conclusions on what I want to “create”.  You never know it might just be a system that uses various sensors to keep track of conditions in my green house!  That’s the great thing about it all, I can now start to explore using sensors and other devices to get information from the real world and feed it back into the machine.

I’ll post any developments as and when!


Wordagon: A Kerb iphone app

I have not posted work from the agency I work for before on this blog, (Kerb – website due for a face-lift soon) but thought I would make an exception in the case of our iphone game Wordagon, mainly because it is a project we produced internally – it is not attached to a client, therefore not trying to ‘sell‘ anything – and it’s free.

The visual design was produced by Kerb designer Will Weaver. There are still a few tweaks to be made: some re-working of some of the interface elements, extra work laying out the instructions (and re-writing them too) and a little bit of colour correction. We are also going to implement a global high score table with the next Wordagon release – and we will possibly then start to charge for the app.

With absolutely no promotion apart from Kerb employees spreading the word, Wordagon has managed over 900 downloads with a user rating of 4+ (as of Febuary 2010).

Some screenshots:

From the itunes store description: (please excuse the excessive use of exclamation marks!)

Wordagon is a game of high pressure and mental agility. Battle against time and space… and by space, we mean words!

With each letter tile having a value, the bigger the word, the more points you score! The longer it takes it to find a word and submit it, the closer you get to falling foul of the onslaught of new letters taking their place.

Before you get trapped beneath an alphabet avalanche, you need to find words and remove them, but as you progress through the levels, the words you must come up with keep getting longer!

  • Key features:
  • Bonus tiles for letters
  • Bonus tiles for words
  • 5 levels of difficulty
  • Highscore table to allow you to challenge yourself or your friends

Get it for free from the itunes store here