The Perfect Programming Environment

I work with an extremely talented stable of engineers who have pushed my boundaries outward for months now. The work I am doing has been accelerated greatly by working so closely with them on developing new high-performance data applications. One of those boundaries pushed was the choice of language to do the work in. We chose Clojure as our language of choice. It is fantastic at what we are doing and has been a really incredible new skill to pickup. That said it isn’t without some drawbacks. I love Windows. Especially Windows 8 now. My work laptop is Windows 7 which isn’t bad at all. The problem is I am constantly running into low walls, easily circumvented usually, between me and getting momentum on full productivity. You see, the Clojure World is still dominated by people with Macs and Linux boxes. The problem is that a lot of the Window’s ports have several issues. They work, but not like they do on the other platforms and this leads to daily stumbles as I press forward trying to get things done. You can’t get much forward momentum if you are constantly getting your foot caught in tangled roots.

So after considering setting up virtual machines (I used Oracle’s VirtualBox) and dual boot on the same drive I finally concluded that both of those solutions had issues. With VirtualBox the issue was clear – I need all of the RAM and CPU I can get. Very few applications in the world need 4+ GB of RAM and will pin your CPU at 99% for extended periods. Analytics will do that, though. So, VM was a nice idea but it simply lacked the performance I really needed. Second, the whole idea of dual boot is excellent but I wanted to be able to move from various environments with ease. Mainly I need to be able to do research on STORMTROOPER, the machine I built at the end of 2011 but then bring the results to the office. I ended up concluding that the best way to do that was go to the nuclear option. STORMTROOPER has hot-swap drive bays. I also own a very nice Thermalstake BlackWidow eSATA/USB 2.0 docking station (see photo). With a tiny screwdriver or multi-tool I can move the drive with ease. On STORMTROOPER I can convert the machine from Windows 8 box to Ubuntu Server just by grabbing the drive modules and swapping them. It’s a great solution for what I want to do and for giving me the best ability to make it portable.

Other features of this system are Storm which we use to manage continuous computation. It makes running on multiple cores and on multiple machines easier to manage. We also use Datomic, which is in addition to our RDBMS for data storage. Datomic offers some interesting features. Time-based facts, fewer trade offs as seen with NoSQL and highly scalable  So far we have really been impressed with it. I would say this combination so far has beaten Hadoop and Percolator for our purposes and I hope we can realize fully more benefits from it. The fact that it even gives benefits running all on a laptop, has lightweight configuration management requirements and does the job the way we need it to means it beats pretty much any other combination of technologies to do the same things for us. Datomic and Storm are also Clojure projects so there is also that major bias.

This is not the Perfect Programming Environment. It is perfect for what we need though. I am really pleased with this setup and now that I have further portability with the capability of going from my ultrabook to my high end system means a lot for my ability to get stuff done. Best yet is that STORMTROOPER was designed to work for days at a time on hard computations. It’s heat management and durable components mean it can do the heavy lifting for a few days while my ultrabook is saved the misery and reverts back to being a Windows platform. YOur mileage may vary. Some settling may have occurred in shipping and handling. etc!

And before I get comments from Mac bigots – yes, I in fact do own a Mac and have for a couple of years. I even had an iPhone for the same length of time. I replaced the 3GS with a Windows 8 phone (Lumia 920) and besides the Linux and Windows 8 machine I have Windows 7 and I think a Vista laptop somewhere. So, I’m open minded. I just know what I prefer.


  1. Programmer says:

    I wonder if the situation of Clojure on Windows is a general issue with non-mainstream languages. I don’t want to say that Windows is a bad OS, but Linux (which I also use) is said to be the most programmer-friendly OS. And because there is not much love for non-mainstream languages on Windows, could that be the reason that there are only so few languages that are well known to many people? Windows is still the most used OS and many people produce software for it.

    So I wonder: If Linux should (for some reason) be significantly more popular, would this result in many more programming languages to be more popular?

    I don’t know how things are in the Apple-world. It appears to me that Apple tries to push Objective-C a lot but there also seem to be many clever people who work with different languages on that plattform.

  2. Great points. I wish Clojure had a .net version that worked with Visual Studio. I’m trying to set up a desktop environment (windows manager the Linux world) on Stormtrooper. I am actually responding to you via the default browser in gnome that I just setup. It actually highlights the problems I have with Linux and Mac. Gnome is running but when I select terminal it opens with no prompt. Something isn’t set right. I’m going to spend a bunch of time on fixing that instead of doing productive programming. I also tried Enlightenment. That was nice and lightweight but I could not get a terminal to work there either and a lot of stuff was missing (it probably depends upon Gnome and other things being installed first.) So the reason to choose Windows or Mac is you don’t have these issues. Stuff just works. Now the reason to pick Linux is that you can do anything and have total control. Once this machine is set up right I will know everything about it. Windows allows for that freedom to a lesser extent. Apple goes out of it’s way to force you into their way of thinking. That is ultimately made me give up on the Mac platform. Total Freedom, Just Works, Universal. Pick two.

    Some projects just simply have a preferred environment. Most of the other engineers are using macs, btw. (and btw editing this has been awful – the cursor keeps jumping around for no reason I can see. Just another bump in the road to fix.

    Thanks for your comments!

  3. Awesome, disabled the touchpad and the cursor is not bouncing anywhere. The terminal issue was …wait for it… black text on a black background. duh. *shakes head* anyway, I am much further along! Meanwhile, we just processed files via storm on a remote machine. Sweet. Very pumped about this.

Speak Your Mind