Published

All published posts

2604 posts latest post 2026-08-19 simple view
Publishing rhythm
Aug 2026 | 30 posts

Fix git commit author

I was 20 commits into a hackoberfest PR when I suddenly realized they they all had my work email on them instead of my personal email 😱. This is the story of how I corrected my email address on 19 individual commits after already submitting for a PR. Change the email for this repo Prepare for rebasing start the rebase 🛠 Fix First wrong Commit Fix all commits Done ReCap Change the email for this repo # stop the bleeding Before anything else set the email correctly! Prepare for rebasing # First thing is to find how many commits back this mistake goes. I opened up the git log, and saw mine went back 19 commits. I rolled back 20 just to be sure. start the rebase # Now I start the rebase 20 commits back from HEAD. THis will pop you into a text file with a list of commits, for this change simply replace all with. Note for the first commit # If you want to rebase back to the start of the repo use the flag. Run git log to see where we ended up. As expected we ended up on Kiyo’s commit. So we c…
3 min read

Designing a “Router” for kedro

nodes_global # I released a router-like plugin for kedro back in April 2020. This was not the first design, the idea actually came from one of the QB folks who taught me kedro nearly a year before. We were assembling our pipelines with something called. It worked fairly well but did have some issues around being set as a global variable. But… One thing in particular that it did not lend itself well to was being able to create a packagable pipeline that I could pip install and append into any of my existing pipelines. Something I am still trying to work out, maybe I don’t need this. I think I have it working for our internal pipelines and it seems like the way to go, but we don’t necessarily end up using it. Also… With this pattern all of the nodes needed to be importable by the module containing nodes_global. I find that this becomes a big hurdle for new pipelines coming from jupyter to overcome and can be most infuriating when their nodes aren’t getting ran after they added them. What…
4 min read
github has done a fantastic job with renaming. Highly recommend taking a look. Guidance for changing the default branch name for GitHub repositories

Reclaim memory usage in Jupyter

Today I ran into an issue where we had a one-off script that just needed to work, but it was just chewing threw memory like nothing. It started with a colleague asking me How do I clear the memory in a Jupyter notebook, these are the steps we took to debug the issue and free up some memory in their notebook. How do I clear the memory in a Jupyter notebook? Pre check the status of memory # There are a number of ways that you can check the amount of memory on your system. The easiest is not necessarily my first go to is free… literally. check for free space Generally my first go to is a bit more graphical, and not available on a stock stystem, but far more useful….. is a terminal process explorer that shows cpu usage, mem usage, and running processes. htop First step throw more swap at it # Often before going through the process of getting a larger instance underneath the notebook you can hobble home with a bit more swap file. It may not be pretty or fast, but gets the job done in a pinc…
3 min read

Strip Trailing Whitespace from Git projects

A common linting error thrown by various linters is for trailing whitespace. I most often use flake8. I generally have [pre-commit]( https://waylonwalker.com/pre-commit-is-awesome hooks setup to strip this, but sometimes I run into situations where I jump into a project without it, and my editor lights up with errors. A simple fix is to run this one-liner. One-Liner to strip whitespace # bash pre-commit is awesome I recently discovered the ✨ awesomeness that is pre-commit. I steered away from it for so long because it seemed like a big daunting thing to set up, but... Jun 5, 2020
tpope has done a fantastic job with vim-sleuth. Highly recommend taking a look. sleuth.vim: Heuristically set buffer options
actions has done a fantastic job with setup-python. Highly recommend taking a look. Set up your GitHub Actions workflow with a specific version of Python
checkout by actions is a game-changer in its space. Excited to see how it evolves. Action for checking out a repo
Just starred zk by sirupsen. It’s an exciting project with a lot to offer. Zettelkasten on the command-line 📚 🔍
deepyaman has done a fantastic job with kedro-accelerator. Highly recommend taking a look. Kedro-Accelerator speeds up pipelines by parallelizing I/O in the background.

Chrome Extensions I use

There are many useful chrome extensions out there. I probably have way too many installed, here are four that I am currently using. This post was inspired from Chris over at daily-dev-tips LastPass Stylus Vimium hypothesis LastPass # Love it or hate it passwords are hard to manage. Everyone needs a password manager to avoid the dreaded password reuse, and to be able to quickly rotate them with a service. I use lastpass, thus it’s browser extension is my most used extension. Stylus # Stylus is an extension that allows you to add your own CSS to style pages how you want. There seems to be a full community of folks that really use this to the nth degree to style all of their commonly used sites somewhat similarly or add dark mode to sites without it. Personally I mostly use it to add my favorite syntax highlighting theme to jupyter, onedark. I’ve long lost the original author, but have posted the CSS I use in this gist Vimium # Vimium adds vim-like keybindings to chrome. I don’t use it a…
2 min read

Creating Reusable Bash Scripts

Bash is a language that is quite useful for automation no matter what language you write in. Bash can do so many powerful system-level tasks. Even if you are on windows these days you are likely to come across bash inside a cloud VM, Continuous Integration, or even inside of docker. I have three techniques that help me write more composable bash scripts. functions Arguments positional arguments All Arguments Error Handling main script Functions # Break scripts down into reusable components Functions in bash are quite simple. They are something that I wish I would have started using long ago. They make your code much more reusable. I often use them in my aliases as well since they can simplify the process and allow more flexibility. syntax Source the file to load the function and run it from the terminal. run it outputs Arguments # Make functions a little more flexible Arguments and options are quite a bit more complex in bash. For now, we will focus on the basics which are not all that…