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:
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
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.
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
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.
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.
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.
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.
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.