I've written a lot of Scala over the past eight months.
It's not my favorite language, but it's up there, and it's done a lot to shape my view of software architecture and patterns in that time.
More recently, I've been writing Go.
As languages go, Go really could not be more different from Scala.
There's good and bad aspects to the choices each of the languages have made, but what I'm interested in today is design patterns, not language comparisons.
In fact, today's pattern is that old demon - the Singleton. Also, code generation with text/template.
I love the Rust Language.
The trade-offs Rust has chosen work really well for me.
I like static typing, powerful type systems, functional programming, and control over memory.
Those last two, in particular, often seem at odds with one another, and I really appreciate Rust's particular combination of theory and pragmatism.
I also like Google App Engine, and the general Google cloud ecosystem.
This wasn't true originally, but the more I've learned, the more I've grown to like it.
This blog is served statically from Google Cloud Storage, and I use GAE to back my consulting web-apps, when I choose the stack, at any rate.
While I find many things in technology quite interesting, server maintenance is not really one of them, so GAE's managed instances are perfect for me.
For my first real application in Rust, I'm writing the back-end to a Disqus-like commenting system for this blog, which I want to host on GAE.
Which means I want to run Rust apps on GAE, which is precisely what we'll do.
TLDR: New Section! Games!
I'm adding a new section to the site and planning on starting a new series of articles on game development.
Specifically, for now at least, I'm going to be writing about my own experiences writing HTML5 games.
In my copious free time (/s), I've gotten interested in learning to make games.
The combination of technical challenge and creative expression is hard to resist, although I'll still be positing about non-game related stuff; in particular I started working on a Discus-like commenting system in Go, even writing a multi-thousand word post describing it, and then dropped it in favor of re-writing in Rust because, honestly, I just don't like Go that much.
I'll post that development story once I've done the re-write, though it took a backseat to my recent game-endevor, some long days at the day job, and SXSW (ugh).
At work we use RoboVM to cross-compile Scala onto iOS for our iPhone app.
In theory this is great because we can keep the codebase in just Scala, limiting the required language knowledge to just Scala and preventing context-switching costs.
In practice, I'm skeptical of the benefits.
Maybe it's our collective lack of knowledge of Scala, I picked up the language explicitly for this job, but Java inevitable leaks into the project regardless, so there goes the 'only one language' part.
I don't think this is a necessary consequence of using a JVM language; certainly JVM details leak out much like machine architecture leaks into non-trivial C programs, but Clojure does a pretty good job of preventing major Java leakage.
In fact, it's worse, as I'm now keeping two language models in my head at the same time.