Skip to content

My toolbox 🧰 A list of tools I use on the job.

Notifications You must be signed in to change notification settings

nicolas-heinig/toolbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 

Repository files navigation

toolbox

This is my toolbox 🧰

In this repository I keep a list of various software pieces that I like to use.

Contents

Languages

  • ruby - My go to language and the one I do best. Focus on simplicity and productivity. Its elegant syntax is natural to read and easy to write, but I know about its limitations and started to look around into other languages.
  • go - And I found go. Its much more low level, which enticed me a lot. Did some experimenting and built some CLI tools, but I am still waiting production experience.
  • rust - But I also found rust. Similiar to go, only did some pet projects with it, but the ecosystem exites me a lot.
  • javascript / preferably typescript - The standard for web development. Always delighted how versatile it is. I prefer its statically typed superset typescript that brings safety and other features to the table.
  • bash - Adding it here for completeness, as I like to do a lot of shell scripting. I build short cuts, small CLIs to easy my day to day work. (But not advanced as in hacker-scripts

Frameworks

  • rails - My favourite ruby framework for many years. I use it every day on the job. Ran it at scale and for pet projects.
  • sinatra - When I want to try out smaller web applications, Sinatra is usually my choice. It's very lightweight, but can be enhanced with many many plugins.
  • hanami - Another framework that I experimented with. I like that it has some of my favourite tools baked in, for example rspec and the interactor pattern.
  • react.js - The web framework I am most familiar with (and also a very popular one). Started looking into it in 2017, rediscovered in 2024 and was suprised how mature it got. I feel free comfortable around it.
  • express.js - Minimal, flexible, node.js. Sometimes this is what you need.

Libraries

  • rspec - This is the testing framework of my choice. Whether I write unit tests or web acceptance tests with capybara, RSpec gets the job done. Effective Testing with RSpec 3 helped me a lot to get to know the tool.
  • interactor - When the business logic goes bigger, I like to organize it in interactors, so that I can keep my controllers slim and my models focused on DB interactions. The gem provides a common interface and other helpers.
  • guard - To automate tasks that should be run whenever I save a file, I use guard. It runs my specs and rubocop every hour at least 100 times while developing.
  • rubocop - The standard linter for the ruby world. It helps a lot to follow the Ruby Style Guide. After I worked in a project that ran without rubocop for 2 years, I know how much value you get from it.
  • shoulda-matchers - If I can use rails to write a one-liner validation, why shouldn't I be able to use a one-line test for that?
  • factory-bot - I use FactoryBot to generate model instances or their attributes for my specs.
  • faker - I am kind of bad when naming test data. Faker helps me to generate more sane names, adresses, movie titles and much more.

Data Stores

  • mysql - I am most familiar with using MySQL as a datastore.
  • postgresql - When I run own projects on heroku, I tend to use postgres, as the integration on heroku side is very advanced. Grown more familiar in the last months.
  • redis - For Caching purposes or projects where I don't need a full relation database setup, I use redis.

Terminal

  • zsh - My go-to shell is zsh.

  • oh-my-zsh - Enables easy customization of the shell. Below I list the top 5 of my favorite plugins.

    • git - Autocomplete and aliases for git commands.
    • docker - Autocomplete for docker commands.
    • rake - Reads out our Rakefile and tasks and autocompletes the command.
    • zsh-syntax-highlighting - Syntax highlighting in the shell. I like that it shows the command in red when it does not exist.
    • zsh-autosuggestions - Suggests commands from your history again. Very helpful if you are keen to smash the arrow up button over and over again.
  • iterm - The terminal replacement I use. I enjoy splitting the panes and getting notifications when a long-running command finally finishes.

  • thefuck - You did a small typo? No problem. Just type into the console what you might whisper to yourself and let the magic happen.

  • tldr - This nice command gives you a small summary of typical usages for the most commands.

Editor

  • neovim - I belong to the cult. My configuration is built from scratch, but hidden in my private dotfiles repository.
  • IntelliJ - Whenever I need to code on a JVM language like Java or Scala, I use IntelliJ.

Dev tools

  • git - Must have. I like to squash merge feature branches into the master for a clean history.
  • homebrew - I work on MacOS. Homebrew provides the necessary packages for everything.
  • docker - We run our infrastructure based on docker. But I also like to use it for development to run applications or backing services.

Monitoring

  • Grafana - Grafana is my choice for metric visualization.
  • Graphite - I use Graphite to store metrics for Grafana.
  • statsd - StatsD is a small metric collector that collects metrics as UDP packages and flushes them into Graphite. There are libraries for many programming languages.
  • Sentry - Simple free exception logging for various tech stacks.

Productivity

Security

  • 1Password - I use 1Password as my password manager. It stores not only the passwords for various websites, but also passwords that I share with my team inside a shared vault.

About

My toolbox 🧰 A list of tools I use on the job.

Topics

Resources

Stars

Watchers

Forks