I’ve used tmuxinator for years to spin up a tmux session with the windows and panes I want already laid out - editor, server, scratch, whatever the project needs. My problem was that I only ever had one config, ~/.tmuxinator.yml , and I’d hand edit it every time I switched projects. New repo, same dance - open the yml, rename windows, change the root path, remember what I changed last time so I…
For years and years, I have been practicing Test Driven Development (TDD) in various styles and with various languages with different levels of success. In some languages (Ruby I’m looking at you), I don’t really understand how people develop without TDD - there are too many gotchas. In other languages like Go or Typescript, I understand why TDD isn’t as widely adopted (though I think it’s easy to…
This post isn’t my usual topic on technology. With the holidays approaching, I’ve been organizing some ideas, and the top contenders are DIY projects that my wife and I can do with our kids—projects like building a musical instrument, an RC car, or a retro gaming console with a Raspberry Pi. But then, as always, I start thinking about the level of independence these gifts give our kids. If my wife…
Background In 2020, during the COVID pandemic I had moved into a leadership role at Braintree and it was the first time I really thought about trying to define “my leadership style”. My entire career, I’ve focused on “doing the right thing” and doubling down on whatever existing intuition I had built from watching others. But for this exercise, I tried to divorce my current style from one that I’d…
At Braintree it is no secret that we are big users of Ruby on Rails(RoR) . We are also big users of a component of RoR called ActiveJob . ActiveJob is an API abstraction on top of existing background job frameworks such as Sidekiq , Shoryuken and many more . In this blog post, I’m going to share how I was able to get a small feature merged into ActiveJob that stopped a persistent issue. Context We…
A quick post to document how I set up my yard documentation to use with Github pages. For an open source project I’ve been working on called switch_gear I wanted to host my code documentation on Github pages. Github has a few options for this. If you go to the repo settings, you’ll see the area in question: Here I’ve set this project to render a page from the /docs folder on the master branch.…
Six months ago I started a new job at commercetools and while I had written a few small node.js apps, I did not have anywhere close to the dev setup I had with ruby. With ruby, I had become an expert , no a master , rather I was reliant on pry for my day to day. Pry was so ingrained in my normal workflow that I set up vim shortcuts to put a binding.pry under my cursor whenever needed, via: " add a…
I’ve been going through the ‘Learning the bash Shell: Unix Shell Programming’ by Cameron Newham and ‘Classic Shell Scripting’ by Arnold Robbins over the last few months. I’ve learned a lot about the *nix way and I’m confident there is a tremendous amount more to learn. The books encourage you to think about repetitive tasks you make on your day-to-day and try to automate them. I find myself…
I have been using ctrlp with ag as my file fuzzy finder for well over 2 years now. It has been fantastic - it’s accurate, easy to navigate and mostly importantly fast. Whenever I open vim, I instantly hit <leader> f to bring up a file list. Here’s a quick screenshot: Using the fuzzy finder: Great - that is a joy to code with. If you see my post below on my vim shortcut to replace function ’s with…
I’m here to share the simplest of tips for vim users that are transitioning to ES6 fat arrows. It’s really common to still see examples on npm packages like this: sftp . open ( config . ftpPath + " / " + m_fileName , " r " , function ( err , fd ) { sftp . fstat ( fd , function ( err , stats ) { var totalBytesRead = 0 ; function callbackFunc ( err , bytesRead , buf , pos ) { if ( err ) {…
Git is so powerful and with such a rich feature set it can take a tremendous amount of time to learn. Over time, I’ve been trying to add to my git alias’ with useful commands that have improved my work flow. This is my first post on a series of commands I’d like to share. First up is git add . When I pair with a lot of other developers, I see the same work flow - git add . . Readers likely know…
I’ve been working on a project that is fairly large, around 300k lines of ruby code. We were asked to upgrade to Rails 4 early on and that work has yielded many subtle syntax changes, especially for ActiveRecord queries. Some of these issues I was able to solve with a gem ArelConverter which has been pretty good at locating 60-70% of deprecated syntax. One issue we learned when we had to convert…
Today I ran into an issue that had me spinning my wheels for a little too long. I’m making it a habit to write down these moments so a.) maybe someone out there might waste less time than I did and b.) I’m sure I’ll have to come back to this at some point! Today, I was ssh’d into a remote server and tried to yank something out of vim and into another vim running on my local machine. To clarify: On…