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:
Vim
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!
Node.js
Okay, so I’ve been playing with this for a while, but I’m using it for more and more stuff now - pretty much anything that needs scripting I now do in JavaScript, or more specifically…
CoffeeScript
… CoffeeScript, which is bloody brilliant - especially if you have a strong understanding of how the underlying JavaScript functions. This isn’t new either, but I’m now using it for ALL my JavaScript programming
Underscore.js
Underscore.js is a light library of helpful JavaScript
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
uses _
for dealing with everything else.
Backbone.js
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 callbacks.
jQuery
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 everything in JavaScript from scratch using native methods and help 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
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
/trunk/
, /branches/
, /tags/
layout makes me happy too - trying to
convince employees to use svn switch
was very hard, but with git
they’ve got no choice but to do it the right way! I’m using
gitolite for our internal (private) hosting, and …
Open Sourcing
… 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!