Toolbox

What tools do I use to program in 2017?

Editor

I use a weird combination of Vim sometimes and Atom sometimes else. It just depends on how I’m feeling. I don’t have a full fledged IDE at the moment, but I might like one if I got it configured right. I liked Sublime Text with the python plugin, and I’ve heard good things about Visual Studio Code on the IDE side but I still need to try it. Ideally I’d just setup better copy and paste for Vim and look up the window commands and just use that all the time. But Atom’s autocomplete and copy paste and tabs are just so convienient out of the box.

Source Control

Git. I use aliases like ‘gs’ for ‘git status’ and so on. It’s so easy to just init a repo when I start a project and commit when I get to significant parts, even when it doesn’t need to be on a remote server.

Scripting

Bash is nice for really short scripts, but if it gets to the point where I need if statements then it’s time for Python. The libraries are endless! Yeah, Python is really nice, I have a deep appreciation for it’s accessability, ease of use, and wealth of libraries. If I need to just hack out something, Python is the way to go.

Web

I don’t do a lot of web dev, but I have gotten my feet wet with some tech. PHP of course is present, and probably always will be. Though I probably wouldn’t start off a new project with it. Then there’s SQL databases, and Mongo databases, and Angular is a thing, and I can write basic Javascript sometimes. Then there’s Django for backend, or Node.js, or Rocket. I’ve heard of Typescript, so does that mean that regular Javascript only has objects but not types? I honestly don’t do enough web dev to keep up with all this stuff, but I know enough to maintain a club website, and maybe someday I’ll be qualified as a full stack dev.

Systems

Yay for Systems programming! Though Python is actually a pretty good language for this kind of stuff, especially for fast development, I almost always prefer to use more standard systems languages like C, C++, and Rust. C89 is unavoidable, and I don’t know any feature of C++ newer than C++98! I’ve been trying to learn Rust, and it’s slowly coming along, but since my homework assignments use C/C++, I have much more experience with that style. I’m still missing kind of the “anatomy of a Rust program”. As in I don’t know the best practices and common style for laying out projects. Just because I can get Rust code to compile doesn’t mean that it’s good Rust code. I haven’t forgotten about Java! I have a weird relatinship with Java. I don’t like it, but I respect it. I woudln’t choose it for a project, but I understand it’s benifits, and I’ve written a lot of it. Same goes for C#, but I’ve written a little less of it.

GUIs

I don’t write GUIs often – or ever – but just making a website seems like the natural thing to do these days. I’ve also used a really simple python package for the connect_four app. And of course there’s Qt.

Conclusion

So that’s what’s in my toolbox right now. It’ll be interesting to look back at this every year and see how my workflow has changed.

Written on February 15, 2017