The Stack, Feburary 2015
This post was originally written February 2015. A lot of technologies have changed since then, and my habits have as well, but I find it interesting how the tools I use have been chosen. An updated version as of January 2020 can be found here.
This is a list of the technologies I use in my everyday work, whether it’s software I have installed on my computer, or tools that I use to start up new projects. Most of them are free, some of them are not. You can take them as a list of recommendations, but for the most part, these tools are simply what I found first and got used to. I have been developing for a few years, though, so evidently I think they’re robust, at least.
This list is for my stack as of February 2015. I might revise it in the future, as no doubt new technologies will emerge, and my preferred tools will change. Nevertheless, here it is:
The Stack
OS
Windows 8 for development. Not ideal, but I run a whole bunch of apps that require Windows, so I take what I can get.
Ubuntu 14.04 for deployments. If I coded exclusively, I’d probably use Ubuntu on my personal machine too. Unfortunately, most non-development software is severely lacking on Linux
General Development
Sublime Text 3 for my text editor. I’m competent with emacs, but Sublime has just been a great editing experience. I themed mine with the Numix Dark theme, and I use Monokai as my color scheme and Input Mono as my editing font.
Git Bash for my shell. I really like bash
, which Windows does not ship with by default. Between Cygwin and Git bash, the latter was a bit lighter to install, and I use git anyway, making it slightly more convenient for me. Speaking of which..
Git for version control. Predominantly because I’m active on Github, and back up my code with Bitbucket. Having version control is incredibly important, and git was simply the first one I picked up (and quite popular, as well.)
Web Development Backend
I do a lot of web work, and often use different technologies for different projects. Nevertheless, here are the ones I usually go back to, if I have the choice:
MongoDB as my preferred database. It’s the first database I learned, and I use it for prototyping apps, and in some deployed apps as well.
Node.JS for serverside code. I’m an unashamed Javascript person, and I can develop fastest on Node.
Express.JS as my web application framework.
I sometimes also use Kraken.JS to extend Express, which is much faster in terms of prototyping apps, and Kraken takes care of a lot of boilerplate code. It’s not quite as flexible as just chugging down into Express’s internals, though, and had a 1.0 release recently, so a lot of documentation is outdated.
swig (NOTE: link broken as of 2022) for HTML templates. This is much more personal preference than anything else. I might check out React in the future, as that sounds interesting, as well as the rumors about the Shadow DOM amongst other things.
Mocha for testing. Again, personal preference. I might take a look at Intern.js in the future, though.
Web Development Frontend
jQuery as my client-side Javascript library. It’s ubiquitous, and has a great API. I tend to abuse it, though, which probably slows down some of my apps. I don’t use any additional front-end scaffolding like AngularJS, as the excess boilerplate bothers me some.
Browserify to build my files. Being able to split my front-end apps into multiple files has been ridiculously useful, and is pretty much standard for any other language. RequireJS needs too much boilerplate for my liking.
Jekyll to write my static sites. I don’t write blogs on Jekyll usually, but having SASS support, layouts, and partials is really useful.
SCSS as my CSS preprocessor. LESS exists and I’ve used it, I just prefer SCSS. I’m not really familiar with Stylus, mainly because I like my braces too much.
Game Development
HaxeFlixel for 2D tile game development. I write most of my game development work in Haxe nowadays, and HaxeFlixel is the most well-documented engine out there.
Ogmo Editor for levels. Layers and grids are extremely useful. Sadly, it only works on Windows.
Writing
Not usually part of my code stack, but I do enough writing that it’s become a part of my stack, I suppose.
Sublime Text 3 for technical documents. I write them in LaTeX, or Markdown, and Sublime does well enough that I usually default to it.
Markline for timelines. Obscure timeline software, used to help me plot out some of my longer works.
CeltX for organizing my worlds and stories. I rarely use it for screenplay.
Microsoft Word for essays and novel-length stories. A lot of my work is too long for online editors, and so lags while I write. I can get away with using Word while I’m a student, but I’ll have to figure out another solution for the long term.
Everything else
Photoshop for everything design related. CS6 has great vector tools, so I use it for illustrations, designs, amongst other things.
FL Studio for music creation. It’s a great looking and very robust piece of software, with a pretty good price as well. Windows only, though.
Individual projects have their own technologies, far too many for me to list here. The web and app development frameworks I did list are simply ones I use most often, as I do quite a bit of development on the web, with Javascript. I might have left a few of them out as well; the list is long enough as is.
Finally, I would argue that the tools listed above serve their purpose well, but everyone’s needs and preferences are different. Almost everything has good alternatives (with the possible exception of Photoshop), and I’m the last person to say that anyone has to use any one technology.
These are simply the tools that work for me.