I've still been enjoying Seattle and the sights the city has to offer, and am as always, coding away in spare time.
I spent a good chunk of the last year just really digging into breadth knowledge in languages / areas including C#, F#, did some iOS programming, looked through all of iOS 7, checked out new shiny parts of the latest android version, looked harder at Haskell with relation to Parallelism, went through and studied objective-c, checked out go, Got up to date on the latest OpenGL / OpenCL spec implementations and brushed back up on recent happenings in real time graphics.
At the end of that list I was much less biased towards any programming paradigm or type of language or specific platform than I've ever been. I had a long list of ideas accumulating of things i was passionate about trying and then a bunch of tech i had my hands on and it seemed like a good time to try to run with something new.
What I settled on were a couple core things I really wanted to experiment with and all of them needed a really performant, scaleable web component that would be able to run in a browser, on iOS, and Android but take advantage of the aspects of those devices hardware fully. (location services, OpenGL, Camera, Accelerometers etc) Its Impossible to provide a good performant app on all devices and platforms, that doesn't destroy a users battery life or drive them insane or interrupt how they are used to using their device etc without a native application for their platform. So trying to do everything through a web UI with special sites / styles for mobile was out of the question.
Having worked with big and small, distributed and centralized, simple and complex web application using Python, Ruby I knew there were some easy options there. I really wanted to see what i could do by pushing websocket communications and python / ruby aren't very performant for lots of simultaneous open connections. so I started looking around at other languages / frameworks. It was a fun search, in the end what I was considering was Node.js or Cowboy. Looking at number of active held open sockets each could sustain and in general what an application looked like in each of them Cowboy / Erlang blew Node out of the water.
I ended up choosing a stack that had Cowboy as its main backend. Angular for the web front end with AMD style script injection using RequireJs to lazy load logic / libraries. OpenGL ES on mobile and WebGL (for now through three.js but with eyes on moving towards a straight GLContext) Native apps for Android / iOS and then websockets for communication everywhere. I went with 0mq as a socket / networking library in both the erlang pieces and iOS / Android apps. I've been running with these things and using Docker Containers to deploy to wherever and develop along with gruntjs to automate compilation / unit tests and specs / documentation generation for most of the pieces and it has been going great!
I'm happy to see that another of Carmack's predictions about computer gaming and graphics has come true. He said a while back that one of the next big steps real time graphics will take is in using Volumetric textures to store more lighting information. Lately people have been using Spherical Harmonics and 3d Textures to provide better real time global illumination solutions!
On a less technical note, life has been great. I've managed to hold a few D&D sessions at work, i recently discovered the Aeropress which makes the best coffee, I still get time to learn some more guitar / ocarina every once in a while, my pet bird Kirby continues to grow to be a great companion, and Seattle's Nature / Culture never disappoint.
A very good friend from College Liam Thompson passed away a couple weeks ago and with his passing this world lost a wonderful human being. I can't think of another person I've met whose affected me in the same way he has. His life will be missed. Everything he did in the time he had is something i'm sure he's proud of and brings him joy as he did to everyone who knew him.