Pet projects, Node.js, and Scala

My post yesterday implied that all I'd be blogging about would be OpenStudy and what we're doing. This isn't entirely true, as I'll be trying to blog about the cool technology stuff I get around to playing with in my spare time. Next on the radar is definitely the ever-increasing hotness of Node.js -- if only out of curiosity. If nothing else, it feels like a nice homecoming back to some of the Ruby world's approaches to things, which is rather refreshing.

The one thing I've gotten tired of when using Scala is the compile times. It's entirely possible that as developers we ultimately gain time by having a compiler that will help us avoid type errors, and Scala's type system is beautiful and extremely powerful. For comprehensions are some of the nicest syntactic sugar I've seen in a while, and the layers that Lift's Box class adds on top of them are even nicer.

That said, I can't help but feel like the compile times slow me down. Even though this may be all perception, and I may actually develop effectively faster, the mind gets discouraged when it thinks it's getting less done, not just when it's actually getting less done. In addition, the pain of recompiling every time a change happens makes even continuous iterative testing feel like a slowdown. No longer can you just code and wait one second for your test to run -- you have to change gears after waiting for your code, wait for the compile, and then see the results. This seriously cramps the iterative test-driven process, since adding a test, waiting for it to fail, and then adding the code to make it pass becomes a much longer cycle.

The Node.js experiment is to find out about some of the various apparent positives it offers, including the ability to use Javascript on both client and server. There are a lot of goodies in Lift and in Scala that are enticing, however, so it'll be a tough fight.