My Software Toolsets

by glmotorsports

There’s really 3 major software stack categories that I find myself working in these days (well, more like 2.1 really, as it’s special as you’ll see). Thought I’d do a quick rundown on them after a couple recent discussions on development software. I’ve also read a number of articles and many forum questions from people that can’t possibly imagine the need for more than one (which is, of course, their favorite).

I’m currently spending most of my days in Java. That’s to be expected when working at Java shops! It’s a good solid language, with great libraries, and great (well, other than Apple’s, which is finally getting better now) virtual machines for cross-platform compatibility. The cross-platform stuff really does work. It’s an exceptionally rare occasion when I do something that isn’t cross-platform compatible. Even then, the majority of the time I find a way to make it compatible eventually (as in “I finally find a library routine that does what I originally wrote myself to call to the OS”). Most of the development time is in the Swing arena, since it’s primarily desktop apps and I dislike adding third party utilities unless necessary. Web side it’s in JSF, for the same reason as Swing on the desktop side. It’s all solid, reliable stuff. Not flashy perhaps, but gets the job done without the drama of going to a full-blown JEE app. Being able to drag and drop libraries/code between desktop and web side is also great. No real ugly surprises anywhere. One place where I have stepped outside of the pure Sun/Oracle environment is to add Clojure to my standard bag of tricks. It’s a really well done language, and running on the JVM makes it very useful. I’m not one to rewrite all kinds of crazy stuff in it though, I keep it to things that really make sense. In this case, it’s some occasional experimentation with ideas via the REPL and doing some of my more complex mathematical code. Really good IDEs are available as well. Eclipse is a bit bloated these days, but is still a good choice. Overall I prefer Netbeans right now as it’s still pretty fast and supports nearly everything I’ve ever wanted. All in all, a very good stack for common business use, especially where the OS may not be standard across desktops.

My .Net usage has been fairly limited, mostly just some quick updates on web sites that others have done, plus a couple mobile apps back the bad old days of CE, and a handful of small desktop apps over the years (including some recently). I’ve run into some weird library issues over the years, but other than that it’s also a very solid platform. C# is my favorite generic language in the family, but I’ve worked with the VB side as well. F# is also handy (for the same reasons as Clojure on the JVM), but just doesn’t fit me quite as well. Desktop, CLI, and web apps are all well supported here. The Visual Studio IDE is certainly usable, but I find it a bit clunky compared to Netbeans. With the current rate of improvement though, it may well surpass Netbeans in a couple years. I’m expecting to be doing more work in this stack in the future.

– Other (ADW Modula-2, MASM32, project specific & domain specific (SQL, etc))
Then, of course is my “random stack”. Actually just a collection of other pieces of development software that I still find myself using occasionally. C++ (via gcc) falls into this category even though my usage is pretty rare these days. I really haven’t had any time to work on the C++ based open source project that I’m involved with. About all I get the time to do is update, compile, and test! MASM32 has come in handy a couple times now recently (again, I used MASM a lot back in the day). Great for knocking out some quick code where you really need to see how the hardware/software calls are going. Combine it with OllyDbg and you’ve got a great setup for that kind of thing. I also went back to another language from the past, Modula-2. Needed to knock out a couple of quick 64-bit (so MASM32 would’nt work) Windows apps and didn’t have money to spend. After searching around for awhile, I ran across the (recently released as freeware) ADW Modula-2 compiler. Hey, I know (and like) that language! So, that became part of my toolkit as well. Obviously there also domains specific languages which fall into here (and also support above stacks as well). SQL, javascript, etc don’t need their own whole discussion, you know where they fit.

So, that’s it, just a quick rundown on the major toolset divisions I look at when I’m working with a project. What’s yours?