Top 10 tools that make me happy
2022-10-12#10. 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
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
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
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
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
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
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
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. 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. Muse
This is my favorite iPad app for design and thinking. It is an infinite canvas whiteboard that was designed with a unique philosophy. It has a minimalist interface, but it is packed with useful features. It's perfect for organizing my thinking because content is stored and presented spatially. It is fun to manipulate content in Muse using an Apple Pencil, and Muse also makes it easy to export that content for sharing. This app is worth every penny - there really isn't anything else quite like it.