Hi, I’m Abdulmumin

A quiet builder of tools, tales and tangents.

Keep It Simple: A Python Design Dilemma

While building an AI agent with Git capabilities, I found myself repeating the same logic: checking whether the agent’s working directory was a Git repository before attempting any Git operation. This check appeared inside every Git-related tool that I made available to the agent. For example, if I wanted to commit a Git message I would have written something like this: def commit_git_message(working_directory, directory=None, message): """ This function checks if the given directory is a Git repo and executes a git commit operation """ # get the absolute path of the given directory abs_working_dir = Path(working_directory).resolve() if directory: target_dir = abs_working_dir / directory else: target_dir = abs_working_dir # check if target directory is inside the working directory if not target_dir.is_relative_to(abs_working_dir): return f'Error: Cannot work on "{target_dir}" as it is outside the permitted working directory' # check if the working directory is indeed a directory if not target_dir.is_dir(): return f'Error: "{target_dir}" is not a directory' try: # the following command returns "true" if the directory is a Git repo or inside a Git repo check_git_dir = subprocess.run( ["git", "rev-parse", "--is-inside-work-tree"], cwd=str(target_dir), capture_output=True, check=True, ) if check_git_dir.returncode != 0: return f'Error: "{target_dir}" is not a Git directory' except subprocess.CalledProcessError as e: return str(e) ### test of the logic Now imagine this logic repeated inside every Git tool like some boilerplate code. Not very DRY. ...

July 2, 2025 · 7 min · Abdulmumin

Linux Shell Tricks To Speed Up Your Workflow

As engineers, we obsess over speed (code and machine). Yet the slowest part of our workflow is often… us. We live in the terminal, navigating directories, manipulating files and running various commands trying to get work done. Being a text-based environment, terminal operations sometimes can slow us to a crawl with long commands and typos. There are tricks (with a bit of a learning curve) that we can incorporate that speed up our interactions on the command line. You may argue that plugins such as Oh My Zsh or fish shell features make navigation and autocomplete easier. But these tricks are baked into bash itself, meaning that they work everywhere. They will work on your lightweight servers, Docker containers and any other system where you don’t have access to your preferred setup. Plus they’re reliable and fast. ...

May 27, 2025 · 7 min · Abdulmumin

Go Dev Diaries: How an Empty JSON Broke My Workflow

An Important Context I recently contributed to an open source tool called AutoCommit1. The tool solved a problem I had considered solving myself. AutoCommit leverages AI to generate descriptive conventional commit messages based on the input git diff2. Pretty neat and handy for those times when you struggle to come up with commit messages for code changes you made. It is also going to be super helpful with collaborations. So, instead of jumping straight to possibly reinventing the wheel, I decided to see if AutoCommit could just work out of the box. And it would have, if it didn’t attempt to force money out of my already sparse wallet. ...

May 7, 2025 · 9 min · Abdulmumin

There is no magic: Only Abstractions

“Magic is just an abstraction you don’t understand.” I came across a post from Preston Thorpe, a brilliant, incarcerated software engineer. He wrote an article about how he became a professional software engineer from the prison. No, you aren’t hallucinating. Prison! Truly inspiring, but I digress. I then checked out another of his posts titled “Magic isn’t real.” While this is already beautifully written and packed with lessons and nuggets, it made me reflect on my own journey, and I thought to share. ...

January 24, 2025 · 5 min · Abdulmumin

Introducing LiteLookup: Your Terminal Assistant

Quick question: How many browser tabs do you have open right now? How many of them are due to needing concise information about some random concept? As a software engineer who practically lives on the command line, I’ve always been frustrated by the idea of switching to a web browser for quick references and simple explanations. Whether it’s a syntax issue, programming concept, or system command, I want to be able to access information directly from the terminal—without the hassles of window-switching and tab-juggling. That is why I created LiteLookup ...

November 25, 2024 · 4 min · Abdulmumin