How’s your year going so far? Mine’s going really well.
Xander’s walking well and he’s getting closer to speech every day
which is fascinating and exciting to watch, my health has improved
massively over last year and I’m really enjoying work.
This year I’m
making an effort to do the things I’ve always meant to
do as a programmer; and playing with lots of new (to me)
tech in the process! I intend to cover a few of these topics in the coming
weeks/months, but here’s a summary:
I’ve started using Vim as my main editor (or more specifically
MacVim with the Janus vim distribution) and I’m
loving it. It’s a relatively steep learning curve, but
you don’t have to jump in at the deep end
- just start with
i to enter insert mode, use
it like a normal editor, and then to save press
<Esc> followed by
:wq<Enter> to save and exit (drop the
q if you don’t want to exit).
Slowly start learning new things and forcing yourself to start using
normal mode (where you type commands like
:wq) and as you use more,
you’ll want to use more. Once you’ve mastered the whole
count-verb-modifier-noun grammar of vim you’ll be using it for
everything and wondering how you ever managed without it!
Okay, so I’ve been playing with this for a while, but I’m using it for
more and more stuff now - pretty much
… CoffeeScript, which is bloody brilliant - especially
functions. This isn’t new either, but
functions for working with objects, arrays, collections and other such
things in a functional programming way without extending the native
objects. jQuery/Mootools use
$ for working with DOM nodes, Underscore
_ for dealing with everything else.
Backbone.js extends Underscore.js and is a great way of
keeping the code of your RIAs organised.
It’s very flexible and can fit to many different programming
methodologies, but I use it in a M-VC (Model, ViewController) manner not
dissimilar to iOS. Event are emitted from models when they’re added,
changed or deleted; hooking into these events allows your app to always
display consistent information without the need for lots of hard-coded
It seems everybody uses jQuery, and has done since its inception. I
refused to jump on the band-wagon and I’m glad I did - I coded
from articles across the web (especially sites such as
QuirksMode) and now have a very good understanding of how
different parts of a modern web browser piece together and the
faster/slower ways to go about doing things.
However, jQuery is a lot faster than it used to be, as are modern web
browsers, so my concerns are much less valid. It
reduces programming time significantly and adds flexibility
so I now use it (or
Zepto.js) in a lot of my projects and I really like it - it
doesn’t take long to learn and master, and it improves the speed of
Backbone development considerably.
Git, as you should know, is a brilliant version control software. I’ve
been using SVN for years but have had the itch to switch for ages, so
with some new projects that I’ve been working on (using the above
technologies) I decided to switch to using git where possible. It’s
brilliant - lightening fast and so flexible. The lack of the old
/tags/ layout makes me happy too - trying to
convince employees to use
svn switch was very hard, but with
they’ve got no choice but to do it the right way! I’m using
gitolite for our internal (private) hosting, and …
… I’ve started Open Sourcing some stuff I’m working on to GitHub.
First is my ec2-prune-snapshots script for
automatically deleting sensibly old EBS
snapshots on AWS, but
I intend to release much more in the coming year, and
possibly even retro-actively releasing some older software,
such as MythPyWii which currently sits on Google Code.
What Are You Using?
If you’re using some cool technology for web/mobile application
development that you think I might enjoy experimenting with then please
let me know in the cooments!