To switch or not to switch, part 3

This entry is part 3 of 3 in the series To switch or not to switch

Continued from Part 2, we’re down to 41 languages that you could potentially build a modern, database-driven application with. I’d like to knock another 10-12 more off the list before I get into trying the language themselves, but I’m running out of black-and-white rules to do it with.

Concurrency is a big part of scaling, but that’s a tough characteristic to pin down. Any JVM-based language is going to have access to a great threading model, but people have been able to scale languages that lack threads at all, like Python (Edit: Python has threads) languages that have poor or difficult threading, to decent volumes as well, so clearly threads are not a requirement.

I spend much of my time writing web software, so robust support of that, like Java’s Servlet specification and third party additions like Spring MVC, is nice to have as well. Ruby and Python have made many of their gains based on the strengths of their web frameworks. However, an otherwise good language could add a web framework relatively easily, so again it’s not a requirement.

The way a language handles text is important when working with users, databases, web services, etc., but this can be addressed with libraries. Object orientation can be nice too, as can other models. Interpreted vs. compiled, machine code vs. byte code, exceptions, static typing, dynamic typing, the list goes on with important details that aren’t actually important enough that I can’t really live without them. I certainly prefer static typing, checked exceptions, painless threading, garbage collection, run-anywhere bytecode, running in a virtual machine, but I know smart people who can make valid arguments against every one of those, and maybe I just haven’t given the alternatives enough of a chance.

What is really important to me about a language is its community, leadership, and, for lack of a better term, motive. For this reason I’m going to knock the Microsoft-led CLI languages off the list. I know that CLI is a standard, and that the open source implementation is not beholden to it, but I’m simply not going to program in the Microsoft ecosystem. I think they just don’t care about open source and independent development. This eliminates:

  • C#
  • Boo
  • Cobra
  • F#

It’s kind of a shame because F# looks interesting and is something I’d like to tinker with some day. I also think C# is actually a pretty good language, and, while it initially seemed like Java Jr., it evolved to have some powerful features, moreso than Java in some ways. Unfortunately, even with Mono in the picture, it’s still a Microsoft product to me.

It should definitely be noted that I’m not exactly happy about Oracle owning Java now either. Due to Java’s inertia, I haven’t seen any Oracle decisions affect me yet, and I’ve probably got a number of years before I have to deal with that if and when they decide to do something bad. They could kill it entirely and people would still be using it for a long time.

Along similar lines, Objective-C’s fate seems to be tied closely with the whims of Apple. I don’t see any interest in using it for non-Apple OS projects, so it is bumped off the list as well.

  • Objective-C

Also some of these languages have such a small community or slow pace of development that they don’t seem worthy of investing in:

  • ALGOL 68
  • Clean
  • Dylan
  • GameMonkey Script
  • Mirah
  • Unicon

Three of these languages are active, but the community (and therefore the language) are solving very different problems, Processing with its graphics and visualizations, Scratch with its introductory/training aspects, and Vala is tied closely to GNOME applications.

  • Processing
  • Scratch
  • Vala

This leaves 27 languages moving on to part 4, most of which I’m definitely looking forward to learning more about:

  • Ada
  • Clojure
  • Common Lisp
  • D
  • Eiffel
  • Erlang
  • Falcon
  • Fantom
  • Factor
  • Go
  • Groovy
  • Haskell
  • Io
  • Java
  • JavaScript
  • Lua
  • MUMPS
  • Pike
  • Pure
  • Objective Caml
  • Python
  • Ruby
  • Scala
  • Scheme
  • Squeak
  • Tea
  • Tcl

Ubuntu: See you in 2012

As a follow-up to my previous post, I’ve just finished moving off my Ubuntu VMs. I don’t necessarily blame Ubuntu for this, but it’s just a little too laggy in a VM. I bet it’s only a few ms most of the time, but it’s noticeable and it’s frustrating when you’re in a good flow. Perhaps next year, if there have been improvements on both the Linux and VMWare side.

I did try VirtualBox, which seemed slightly more responsive but was very flaky, it would randomly lock up in strange ways. I also tried Virtual PC, which isn’t really an option since it lacks real multi-monitor support, but didn’t offer any improvements anyways.

Another issue which may seem minor but any programmer will tell is definitely not is that my code font, Lucida Console, doesn’t work the same on Linux. I’m not familiar enough with font mechanics to say how, but I tried everything including fractional font sizes to going through probably 50 other fonts, and it just doesn’t have the right density. Fonts on Linux are getting better though, I did enjoy the Ubuntu font in the OS UI.

Alternatively running Windows 7 in VMWare so far has been almost completely transparent. I haven’t done it enough to say it’s a total success but I’ve already gotten confused when I’m in full-screen, which is a good sign. Of course the downside is that licensing issues are tricky and expensive, but since these are for paying projects, I can recoup the $200 fee. I may try an OEM license for the next one, it appears to be legal and about half the cost.

Vista: Day 1

So, after finally calling it quits in my battle against my MacBook Pro, I retreated to Microsoft. You basically can’t buy a Dell without Vista now, so I figured I’d give it a shot. There’s been a fair amount of hype by Microsoft in favor of it, and a tremendous amount of anti-hype against it by basically everyone else. After my first day, I’ll say that neither side has much to stand on.

The system is what I’d consider an average developer box these days. Grand total with tax was less than $1150.

  • Dell E521
  • Athlon Dual-core 5000+
  • 2GB RAM
  • 250GB hard drive (no raid)
  • ATI X1300 video card
  • 20″ Dell 4:3 LCD
  • Windows Vista Home Premium

I hooked it up to my pre-existing 24″ LCD as primary monitor. I had bought a Radeon 9250 so that I could run the second monitor on DVI, but ATI doesn’t have Vista drivers for that, so I hooked it up to the VGA port until I return that card for a newer one.

Here’s what I installed:

  • JDK6 – No problems
  • Eclipse 3.3M4 – No problems
  • Jetty 5 and 6 – No problems
  • JettyLauncher (eclipse plugin) – Only works with JDK 5, not sure if this is a Vista thing, so…
  • Subclipse (eclipse/subversion plugin) – No problems
  • JDK5 – No problems
  • MySQL 4 – No problems
  • Firefox 2 – No problems
  • Yahoo IM – Crashed once, but it does that on XP too often too.
  • AIM 6 – Crashed once after I first started it, ran fine through several conversations later on.
  • Windows Mail (pre-installed, I configured for POP and SMTP over SSL) – no problems.

So the big complaint by the hordes has been performance. For a mid-range machine, with full Aero enabled on two monitors at 1920×1200 and 1600×1200, I see no lag at all. Aero is actually decent. It’s only major flourish is the new “flip-3d” where the windows stack up like something you would see on a Mac, but its really kind of useless, and I prefer alt-tab. The live previews when you over over the task bar are actually kind of nice, though not very useful. The transparency is fancy, but not overdone, the fade/shrink when you minimize is quick and nicely done. I haven’t disabled any of it yet after 7 hours of use, which is about 6.9 hours longer than the ridiculous XP theme lasted.

Programs launch and run faster, though it does seem like installers go slower and hang for a while. It also comes with a ton of nice fonts, I’m curious if we’ll start seeing those show up in CSS files. I set most of my stuff up for familiar 8pt Lucida Console, I’ll have to go through and see if they’ve added any other nice monospace fonts.

Microsoft seems to have adopted the unix idea of security when it comes to “sudo”. Whenever you do anything that affects the OS, it prompts you to allow it to proceed. If you want to do something like edit your hosts file, you’ll need to run your editor as an administrator, which is as easy as a right click. It’s all a bit annoying, but probably just because I was tweaking it alot. We’ll see how it plays out after a period of normal usage. The worst part is that when the box comes up, the whole screen flickers and takes on a lightbox type effect. Seems to be overkill and poorly implemented.

Other than that, I hate to break it to the Microsoft PR squad and the throngs of haters, but it’s really just good old Windows. The paths are a bit different, things are called slightly different names, but from my perspective, it’s all trivial stuff. Unless I come across something tragic or wonderful, I see no reason for people to upgrade, or to resist upgrading.