Happy 2011 !
The new year has begun and I wanted to use the opportunity to review 2010 from my perspective. A lot of changes have happened in the past year. One has been switching from one fantastic employer to a new fantastic employer. This change means that I will
- continue making software in scientific research, an area that fascinates me
- work on Open Source software projects full-time
For me this is a killer combination, because I can use cutting edge technologies in a cutting edge application domain and do not have to worry about whether I will be able to share the code – I am always in “Open Source mode”.
Last year also meant a radical change in my tool chain, which used to be centered around Java (the language). In 2010, I managed to entirely switch over to Scala, with the implementation of ZMPP2. I haven’t regretted the decision so far and while my code is still quite Java-ish, I am learning new ways every day and adapt my style accortingly. Last year has certainly not been the best one for Java overall with all the politics creating a very uncertain climate. Scala is the main reason that I stay with the JVM, I have looked at a lot of different languages last year and for me there is currently no real alternative for the projects I am working on.
Another change was that I now do almost all development and text editing tasks in Emacs. This had two rather large consequences:
- Due to less context switching, I feel that my whole workflow is much more efficient. IDEs don’t really work well for me, I don’t rely on Intellisense-like tools so much (which would probably be different if I worked in C/C++ every day) but instead like good user interface responsiveness.
- Only a week after the change, I started to get symptoms of tendonitis. This was due to the increased typing amount and especially because I had to type the Control key with my pinkie much more often. If you own a MacBook, you know how small that key is.
I found a solution by following Steve Yegge’s advice of remapping the Caps/Lock key to Control, which by itself probably would have been sufficient. In addition, I changed my Mac to use the Colemak keyboard layout and bought a typing software to learn touch typing. While neither typing speed nor accuracy has significantly improved, now being able to really touch type and use a more economical keyboard layout feels incredibly satisfying while I type – I can feel how my fingers have to move much less than before while typing the same amount of characters.
There is one drawback with Scala: because the compiler has to do more work, compilation times are much slower here. As the ZMPP code grew larger over time, compilation with maven takes around a minute on my MacBook Pro. I was able to streamline my turnaround times by using sbt instead of maven, at the moment ZMPP can be built with either buildr, maven or sbt, but sbt is my personal preference after working with all three in parallel for a couple of weeks.
What’s planned for 2011 ?
First of all: TADS3 support in ZMPP is coming. I looked at the image format briefly last summer while I was working on the Glulx part and started to do real work on it recently. “Real” work means at the moment putting in a couple of minutes here and there when I find the time. But progress is surprisingly good, at a slow, steady pace. I’ll write some more about it in a future post.
For mobile platforms, I will probably entirely focus on Android. Yes there is the Oracle lawsuit (did I say there have been better years for Java as a platform ?), but as a technology, it’s the one that appeals to me the most. I recently got myself a nook color, because it has a backlit touchscreen (trade-off power consumption vs. being able to read in the night without a lamp), is great at PDF’s but mostly because it runs Android, which I think is the perfect ebook-reader platform. I’ve never read as much as in the past month.
I have a couple of plans for ZMPP and IF interpretation in general, researching performance improvements is one thing, among others. Let’s see what the schedule will allow.