Published

All published posts

2717 posts latest post 2026-11-11
Publishing rhythm
Oct 2026 | 30 posts

If Tmux

I do much of my work from tmux, I love it so much that I want to setup some functionality that puts me in tmux even if I didn’t ask for it. Bash Function Bash function to check if the shell is in a tmux session. Using the bash function I often open up vim to do some quite edits, but before I know it I have several splits open and I need access to another shell utility, but I forgot to start in tmux. This function makes sure tht I start in tmux everytime. Using to ensure vim is opened in tmux. I am not quite sure if this is proper use of the and, let me know if you have a better way to do one thing if returns true and another if it returns faslse.
I’m really excited about vim-fugitive, an amazing project by tpope. It’s worth exploring! fugitive.vim: A Git wrapper so awesome, it should be illegal

Save Vim Macro

If you are like me, you have created a macro or two that is pure glory, and you forget how you made it after a day or so, or you immediately want to store it away as a custom keybinding. As with most things with vim, it’s easy to do once you understand it. Creating a Macro One of the earliest things we all learn to do in vim is to create macros, custom sets of functionality stored in a register that can be replayed later. To create a macro, get into normal mode, then type followed by a letter that you want to store the macro under. Note: a common throw-away macro register is q because it’s easy to hit qq from normal mode to start recording. Replaying a Macro Macros can be replayed using followed by the letter that you stored the macro under. Registers Registers are nothing more than a single character key mapping to a value of some text. As you,, or create macros in vim, it automatically stores text into these registers. When you hit paste it’s simply pasting in the default register. Y…
3 min read
Live Substitution In Neovim

Live Substitution In Neovim

Replacing text in vim can be quite frustrating especially since it doesn’t have live feedback to what is changing. Today I was watching Josh Branchaud’s Vim-Unalphabet series on Youtuve and realized that his vim was doing this and I had to have it. https://twitter.com/_WaylonWalker/status/1346081617199198210 How to do it I had to do a bit of searching and found a great post from vimcasts that shows exactly how to get the live search and replace highlighting using:h inccommand Add this to your config I believe that this is a neovim only feature, add it into your file. You can see it in my dotfiles as well. See it in Action example live substitution The Video that inspired this Check out Josh Branchaud’s great series on the Vim-Unalphabet. https://www.youtube.com/watch?v=5jMiYtXz2QA
khzaw has done a fantastic job with vim-conceal. Highly recommend taking a look. A vim plugin making use of vim’s conceal feature for additional visual eyecandy.

Newsboat

Web browsers are a black hole of productivity. I try to use them as little as possible when it is time to focus. I try to use,, or with ipython, or –help at the command line as much as possible. What about that time I am trying to see what my online friends are posting on their sites? I used to used google reader quite heavily before that was taken down. Newsboat I am going to give a terminal rss reader a try for a bit and see how that goes for me. I have really struggled to get into an rss reader since google reader died. installation I installed with the reccomended snap for Ubuntu. Adding feeds super simple Running help for newsboat directed me towards their config files at the bottom. I just need to edit its urls file. The Urls file is just a list of urls to rss feeds. Adding mine in allowed me to see all of my posts. Config I took most of my config from a blog post that I found by Evan Travers. It set some sane defaults to the reading width and vim keys. GUI Browser No matter how…

Large Refactor At The Command Line

As projects grow patterns that worked early on break and we need to change things to make the project easier to work with, and more welcoming to new developers. git Before you start mucking up a project with wild commands at the terminal check that you have a super clean git status. We may make some mistakes and need a way to undo 100’s files and git makes it really easy if you start with a clean history. If we are ready to begin work we should see a response like this. It would also be wise to do this inside of a branch. The minute you try to do something wild in your working branch someone will walk by and ask you to do a five-minute task, but your deep in refactoring and haven’t left yourself a clean way back. grepr Time for the meat of this refactor replacing text across our project. I often will pop this bash function into my terminal session and tweak it as needed. This function is called for then. It will recursively search for a given pattern inside your working directory, then…
4 min read

Ipython-Config

I use my ipython terminal daily. It’s my go to way of running python most of the time. After you use it for a little bit you will probably want to setup a bit of your own configuration. install ipython Activate your virtual environment of choice and pip install it. Any time you are running your project in a virtual environment, you will need to install ipython inside it to access those packages from ipython. You are using a virtual environment right? Virtual environments like venv or conda can save you a ton of pain down the road. profile_default When you install ipython you start out with no config at all. Runnign will start a new profile called that contains all of the default configuration. This command will create a directory multiple configurations You can run multiple configurations by naming them with This command will create a directory startup Inside the profile there will be a startup directory. Ipython will execute each of the files in this directory on startup. This is part…
2 min read

Custom Ipython Prompt

I’ve grown tired of the standard ipython prompt as it doesn’t do much to give me any useful information. The default one gives out a line number that only seems to add anxiety as I am working on a simple problem and see that number grow to several hundred. I start to question my ability 🤦‍♂️. Configuration If you already have an ipython config you can move on otherwise check out this post on creating an ipython config. Ipython-Config The Dream Prompt I want something similar to the starship prompt I am using in the shell. I want to be able to quickly see my python version, environment name, and git branch. python version active environment git branch Basic Prompt This is mostly boilerplate that I found from various google searches, but this gets me a basic green chevron as my prompt. The rest of this post will build off of this boilerplate and add to the method of MyPrompt Colors I mostly set the colors of my prompt throughout this post by guessing and trying different attributes under…
3 min read
Check out LunarVim and their project LunarVim. 🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.

Automating my Post Starter

One thing we all dread is mundane work of getting started, and all the hoops it takes to get going. This year I want to post more often and I am taking some steps towards making it easier for myself to just get started. When I start a new post I need to cd into my blog directory, start neovim in a markdown file with a clever name, copy some frontmatter boilerplate, update the post date, add tags, a description, and a cover. Todo List for starting a post frontmatter template Title slug tags date cover description create markdown file open in neovim Lets Automate this This aint no proper cli hot and fast As with many thing running behind the scenes on this site, I am the one and only user, I have limited time, so this is going to be a bit hot and fast. Let’s create a file called new-post. start the script new-post 👆 Works on my machine If this were something that had more users than me I would probably use something like click, but for this I want to get it done quick and avoid any need…

Windowing Python Lists

In python data science we often will reach for pandas a bit more than necessary. While pandas can save us so much there are times where there are alternatives that are much simpler. The itertools more-itertools` are full of cases of this. This post is a walkthrough of me solving a problem with rather than reaching for a for loop, or pandas. I am working on a one-line-link expander for my blog. I ended up doing it, just by modifying the markdown with python. I first split the post into lines with, then look to see if the line appears to be just a link. One more safety net that I wanted to add was to check if there was whitespace around the line, this could not simply be done in a list comprehension by itself. I need just a bit of knowledge of the surrounding lines, enter. simplified rendering function I have a function that will check to see if the line should be expanded, then render the correct template. Fist step is to check if the line contains no spaces and starts with, if it does…
1 min read
WaylonWalker has done a fantastic job with devtainer. Highly recommend taking a look. 🐳 (dotfiles) My personal development docker container base image