Published

All published posts

2540 posts latest post 2026-06-16 simple view
Publishing rhythm
May 2026 | 58 posts

Quickly Change Conda Env With Fzf

Changing conda environments is a bit verbose, I use a function with fzf that both lists environments and selects the one I want in one go. Conda # [1] I have used conda as a virtual environment [2] tool for years now. I started using conda for its simplicity to install packages on windows, but now that has gotten so much better and it’s been years since I have run a conda install command. I’m sure that I could use a different environment manager, but it works for me and makes sense. What environment manager do you use for python? Conda environments are stored in a central location such as ~/miniconda3/envs/ and not with the project. They contain both the python interpreter and packages for that env. Conda create # [3] Conda environments are created with the conda create command. At this point, you will need to name your env and select the python version. conda create -n my_env python=3.8 After running this command you will have a directory ~/miniconda3/envs/my_env with a base...
3 min read

Vim Replace Visual Star

Replacing text based on whats in the current search register is a quite handy tool that I use often. I believe I picked this tip up from Nick Janetakis, check out his YouTube channel for some amazing vim tips. https://www.youtube.com/watch?v=fP_ckZ30gbs If there is one thing that I Like most about vim it’s the ability to hack on it and make it work well for you. Replacing text in vim # [1] Vim can often be a bit verbose, but that’s ok because we can hack on it, and make our own shortcuts and keybindings. For instance, finding and replacing text requires using a command at the vim command-line :. Replacing foo with bar looks like this :%s/foo/bar/g, the final g means all of the foos, not just the first one on the line. making it better # [2] I have a keybinding in my init.vim that will allow me to search for a pattern with the usual / character, page through them as normal with n and N, but when I press <C-R> it will populate the replace command for me so that all I need to do ...
2 min read 💬 3

Minimal Python Package

What does it take to create an installable python package that can be hosted on pypi? What is the minimal python package # [1] - setup.py - my_module.py This post is somewhat inspired by the bottle framework, which is famously created as a single python module. Yes, a whole web framework is written in one file. Directory structure # [2] . ├── setup.py └── my_pipeline.py setup.py # [3] from setuptools import setup setup( name="", version="0.1.0", py_modules=["my_pipeline", ], install_requires=["kedro"], ) name # [4] The name of the package can contain any letters, numbers, “_”, or “-”. Even if it’s for internal/personal consumption only I usually check for discrepancy with pypi so that you don’t run into conflicts. Note that pypi treats “-” and “_” as the same thing, beware of name clashes version # [5] This is the version number of your package. Most packages follow semver [6]. At a high level its three numbers separated by a . that follow the format major.minor.patc...
2 min read
Check out jameslittle230 [1] and their project stork [2]. 🔎 Impossibly fast web search, made for static sites. References: [1]: https://github.com/jameslittle230 [2]: https://github.com/jameslittle230/stork

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 # [1] Bash function to check if the shell is in a tmux session. in_tmux () { if [ -n "$TMUX" ]; then return 0 else return 1 fi } Using the bash function # [2] 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 if_tmux to ensure vim is opened in tmux. vim () { in_tmux \ && nvim \ || bash -c "\ tmux new-session -d;\ tmux send-keys nvim Space +GFiles C-m;\ tmux -2 attach-session -d; " } 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 in_tmux returns true and another if it returns faslse. References: [1]: #bash-function [2]: #using-the-bash-function
If you’re into interesting projects, don’t miss out on vim-commentary [1], created by tpope [2]. commentary.vim: comment stuff out References: [1]: https://github.com/tpope/vim-commentary [2]: https://github.com/tpope
I’m really excited about vim-fugitive [1], an amazing project by tpope [2]. It’s worth exploring! fugitive.vim: A Git [3] wrapper so awesome, it should be illegal References: [1]: https://github.com/tpope/vim-fugitive [2]: https://github.com/tpope [3]: /glossary/git/
The work on vim-surround [1] by tpope [2]. surround.vim: Delete/change/add parentheses/quotes/XML-tags/much more with ease References: [1]: https://github.com/tpope/vim-surround [2]: https://github.com/tpope
If you’re into interesting projects, don’t miss out on kedro-starters [1], created by kedro-org [2]. Templates for your Kedro projects. References: [1]: https://github.com/kedro-org/kedro-starters [2]: https://github.com/kedro-org

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 # [1] 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 q followed by a letter that you want to store the macro under. qq 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 # [2] Macros can be replayed using @ followed by the letter that you stored the macro under. @q Registers # [3] Registers are nothing more than a single character key mapping to a value of some text. As you yank, delete, or create macros in vim, it automatically stores text into these registers. When you hit...
3 min read 💬 3
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 # [1] I had to do a bit of searching and found a great post from vimcasts [2] that shows exactly how to get the live search and replace highlighting using inccomand :h inccommand # [3] 'inccommand' 'icm' string (default "") global "nosplit": Shows the effects of a command incrementally, as you type. "split" : Also shows partial off-screen results in a preview window. Works for |:substitute|, |:smagic|, |:snomagic|. |hl-Substitute| If the preview is too slow (exceeds 'redrawtime') then 'inccommand' is automatically disabled until |Command-line-mode| is done. Add this to your config # [4] I believe that this is a neovim only feature, add it into your ~...
khzaw [1] has done a fantastic job with vim-conceal [2]. Highly recommend taking a look. A vim plugin making use of vim’s conceal feature for additional visual eyecandy. References: [1]: https://github.com/khzaw [2]: https://github.com/khzaw/vim-conceal

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 help, ?, 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 # [1] 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 # [2] I installed with the reccomended snap for Ubuntu. sudo snap install newsboat Adding feeds # [3] super simple Running help for newsboat directed me towards their config files at the bottom. ❯ newsboat --help newsboat r2.22 usage: /snap/newsboat/3849/usr/local/bin/newsboat [-i <file>|-e] [-u <urlfile>] [-c <cachefile>] [-x <command> ...] [-h] -e, --export-to-opml export OPML feed to stdout -r, --refresh-on-start refresh f...

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 # [2] 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. git status If we are ready to begin work we should see a response like this. On branch main nothing to commit, working tree clean 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. git branch my-big-refactor grepr # [3] 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...
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 # [1] Activate your virtual environment [2] 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. pip install 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 # [3] When you install ipython you start out with no config at all. Runnign ipython profile create will start a new profile called profile_default that contains all of the default configuration. ipython profile create This command will create a directory ~/.ipython/profile_default multiple configurations # [4] You can run multiple configurations by naming them with ipython profile create [profile_name...
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 # [1] If you already have an ipython config you can move on otherwise check out this post on creating an ipython config. Ipython-Config [2] The Dream Prompt # [3] 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 [4] branch. - python version - active environment - git branch [5] This is my zsh prompt I am using for inspiration Basic Prompt # [6] This is mostly boilerplate that I found from various google searches, but this gets me a basic green chevron as my prompt. from IPython.terminal.prompts import Prompts, Token class MyPrompt(Prompts): def in_prompt_tokens(self...
3 min read
I’m impressed by vim-tmux-runner [1] from christoomey [2]. Vim and tmux, sittin’ in a tree… References: [1]: https://github.com/christoomey/vim-tmux-runner [2]: https://github.com/christoomey
I like fkromer’s [1] project awesome-kedro [2]. No description available. References: [1]: https://github.com/fkromer [2]: https://github.com/fkromer/awesome-kedro
Just starred machfiles [1] by ChristianChiarulli [2]. It’s an exciting project with a lot to offer. The dotfiles you see in all my videos References: [1]: https://github.com/ChristianChiarulli/machfiles [2]: https://github.com/ChristianChiarulli
Check out LunarVim [1] and their project LunarVim [2]. 🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven. References: [1]: https://github.com/LunarVim [2]: https://github.com/LunarVim/LunarVim