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!.

gh

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.

gh

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.

gh

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.

gh

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.

gh

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.

Screenshots:

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