Top 10 tools that make me happy

By Sam Heuck
Workbench and tools

#10. Git git

Happy might be a bit of stretch with this one. So named because when you use it, it makes you feel like a git. But my developer age has granted me the gift of learning git just after it started becoming really popular for all kinds of programming work. I didn't need to learn cvs, bitkeeper, svn or mercurial. Writing code of any kind without git is like... taking a unicycle to the grocery store. I could probably make it work (and I have) but once I discovered the car, I sold the unicycle to the nearest circus performer. Okay this analogy may have fell apart a little bit.

#9. VSCode VSCode

Visual Studio Code is my editor of choice today. The reason it's great is the rich and mature extension store that enables it to work with just about any software stack you can manage to think up. I also get a lot of mileage out of the built-in terminal and native git integration. There are many useful built-in features for polyglot, multi-project development work like workspaces and a generic debugger that can hook into any language with the right extensions. I particularly enjoy using the extensions for remote container development because it allows me to keep projects completely isolated from each other without the challenges of setting up network file shares to get access to the code.

#8. tig tig

Gui tools are great, but sometimes it's just more convenient to look at something in the tool that is right in front of you. The terminal might as well be the computer for me, so when I find a tool designed for it that helps me get information quickly and easily... well that makes me happy! Tig is a command line tool that can visualize and explore git repository history and diffs right in the command line. It's great for jogging my memory on an old repository I'm coming back to, or for exploring what has been done recently in a project I am unfamiliar with.

#7. three.js three.js

There are more JavaScript tools in the world than I can count. But this one really impressed me. three.js enables a web browser to load and visualize CAD files using WebGL. This is a great way to feature that beautiful new product the designers just finished, add lighting effects, animations, and show a product in various environments. It is packaged with a lot of different modules, including Orbit Controls that enable a user to pan, zoom, fly and rotate around a design using their mouse. The library works with webpack and can be easily integrated into any website.

#6. runjs RunJS

JavaScript is widely used, across the globe. I imagine that I will never have a programming job that doesn't have me working with JavaScript, even just a little bit, at some point. That's why I like RunJS. Anytime I need to quickly bang out a couple of lines of js to reassure myself the code does what I think it does, I fire up RunJS. It's incredibly useful to have a REPL (read, eval, print loop) in the language you're using to test out ideas, remember syntax, write throw-away code, and do experiments. RunJS is feature rich too. It can even load dependencies from NPM so you can refresh your memory on that package API you haven't used for a while.

#5. homebrew homebrew

I would venture to say it's pretty much impossible to be a software developer on MacOS without using homebrew. It just works. It gives me access to a massive community of software people who are making and maintaining the tools that I rely on every day. It isn't a glamorous tool, but it is essential, and works perfectly.

#4. xsv xsv

If you work with CSV files everyday and you're not using xsv, you're missing out. xsv is a free tool that is ridiculously fast and full of features to read, analyze, and manipulate CSV files. I've personally thrown several GiB (yes, Gigs) of CSV data at xsv and I always get results quickly. This command-line tool beats the heck out of inspecting a CSV by opening it in Excel.

#3. zola the Static Site Generator

So long Jekyll! I hardly knew ye. Zola is my new favorite static site generator. This website is built with Zola and it makes blogging a breeze. Zola is written in Rust, and that means I have a nice little static binary that just lives right next to my website's content. As long as that binary can execute on my machine, I will always be able to build my website, even as the rest of the world chugs along its usual path of constant improvement and updates. It also comes with some really nice features built right in: code syntax highlighting, a link checker that warns of 404s before I deploy updates, and automatic compilation of sass to css.

#2. rust The Rust Programming Language

I haven't used the Rust programming language much yet, but so far, I'm really enjoying what I've learned. The reasons I like Rust are the well designed tooling for one. The built-in developer tool cargo does everything I need from fetching crates (aka open-source dependencies), running tests, which by the way are integrated directly into the language itself (no need for a separate unit-testing package), and serving as the build-tool for my project. It handles incremental compilation so that I don't have to think about it. The Rust language has really helped me learn and grow as a developer because it has forced me into good habits for writing memory safe and thread safe code. It's also incredibly fast, has a helpful compiler, and has great editor support in VSCode. Code-completion and documentation are available in the editor which is essential for being productive.

#1. ansible Ansible

You konw that feeling where you just sat down on the couch and you're settled in to chill out with your favorite show... but shoot I left my drink in the kitchen! Uugh I don't want to get up. If only there was a way to access my kitchen without getting off the couch. Well, that's where ansible comes in. Except your kitchen is all the servers you have to run updates on, or deploy apps to. I love ansible because I can run the same script on 10 servers if I want, and it can guarantee that each server will be in the same state when it's done, even if the starting state on servers 3 and 4 were different than servers 5 and 8. This is a fantastic tool and I rely on it from all of my homelab configuration management needs. And since it uses SSH to connect to all my servers, I don't even have to leave my desk!