Skip to main content

Posts

LazyGit AI Commit Message

Having AI‑generated commit messages directly integrated into LazyGit If you use LazyGit every day, you already know how it turns Git from a chore into something you can actually enjoy. But there is one part of the workflow that still tends to feel a bit tedious: writing good commit messages. In this post, I show how to plug OpenAI models directly into LazyGit using a tiny one‑file BASH script, so you can get AI‑generated commit messages based on your actual diffs, without waiting for external tools to catch up with the new OpenAI Responses API . The result is a minimal, focused tool you can drop into your setup today: lgaicm . It behaves like a mini aichat that does exactly one thing: generate commit messages from Git diffs, optimized for LazyGit. Why AI‑generated commit messages in LazyGit? Commit messages matter. They are the stor...
Recent posts

Journey Samsung Devices

My Journey with Samsung Devices: From Galaxy S to the Ultra Era Over the years, smartphones have come and gone, but for me, one brand has defined more than a decade of my tech life — Samsung . It all started in 2010 . The Early Days: Galaxy S to Note 3 My first Samsung was the Galaxy S (2010) — the beginning of an era. It was sleek, fast, and years ahead of what other Android phones offered at the time.   In 2011 , I moved to the Galaxy S2 , the brown leather back edition . It felt premium — classy, even — and I remember thinking: this is what smartphones should feel like .   Then came 2012 , and I stepped into something new: the Galaxy Note 2 . I didn’t have the first Note, but the second one changed the game for me. The big screen, the stylus… it was productivity in your pocket. Unfortunately, it wasn’t waterproof (no “IP sixty-something” rating back then), and one sweaty day — literally — it died. In 2013 , I replaced it with the Note 3 , another fantastic upgrade. ...

Custom TMux configuration

This is how I configured my TMux The default TMux configuration misses two points I relly want: I need to be notified when I switch pane. More precisely: I switch pane with "Ctrl-b arrow", but sometimes I type it foo fast and it is not effective. So I need to know when it succeds (so I also know when it fails) I want more padding on pane name. It is too narrow for me. I need more space on the left and right side of the text! So, the configuration I made has the feature to blink when I switch pane, and put some right and left padding on pane names: # Enable focus events set-option -g focus-events on # Make the pane blink on focus set-hook -g pane-focus-in 'select-pane -P bg=colour247; run-shell "sleep 0.1"; select-pane -P bg=default;' set -g window-status-current-style "bg=grey,fg=black" set-option -g status-style "bg=black,fg=grey" set -g window-status-format ' #I:#W ' set -g window-status-curre...

My Git Configuration

My simple user level Git configuration Default configuration is even fine for me. But among the default configuration, I sometimes use "meld" as "difftool" and "mergetool". This is what I put in the configuration for that purpose: [user] email = mihamina@rktmb.org name = Mihamina [difftool] prompt = false [difftool "meld"] trustExitCode = true cmd = meld "$LOCAL" "$REMOTE" [diff] tool = meld [mergetool] prompt = false [mergetool "meld"] trustExitCode = true cmd = meld --auto-merge "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED" [merge] tool = meld

CopilotChat GlobFile Configuration

CopilotChat GlobFile Configuration Want to feed multiple files into GitHub Copilot Chat from Neovim without listing each one manually? Let's add a tiny feature that does exactly that: a file glob that includes full file contents . In this post, we'll walk through what CopilotChat.nvim offers out of the box, why the missing piece matters, and how to implement a custom #file_glob:<pattern> function to include the contents of all files matching a glob. Using Copilot Chat with Neovim CopilotChat.nvim brings GitHub Copilot's chat right into your editing flow. No context switching, no browser hopping — just type your prompt in a Neovim buffer and let the AI help you refactor code, write tests, or explain tricky functions. You can open the chat (for example) with a command like :CopilotChat , then provide extra context using built-in functions. That “extra context” is where the magic really happens. Built-in functio...

Asterisk Python Module Pyst

Using the Asterisk Python Module "Pyst" The Asterisk Python module "Pyst" provides a simplified way to interact with Asterisk, an open-source framework for building communications applications, including VoIP gateways, conference servers, and more. "Pyst" enables Python developers to automate and manage Asterisk functionalities, integrating them into Python-based applications. This document explores the history, features, and usage of the Pyst module. There was pyst2, then pyst3, and now it is pyst. The Short History The evolution of the Pyst module reflects the broader transition within the Python ecosystem from Python 2 to Python 3: Pyst2 : Initially, Pyst was developed to work with Python 2, leveraging its capabilities to connect and control Asterisk servers. Its initial iterations aimed at providing basic functionalities like call initiation, monitoring, and terminations. Pyst3 : With the advent of Python 3, "Pyst2" was updated and r...

Symfony test API

Testing Symfony APIs Effectively with PHPUnit When it comes to building and maintaining reliable web APIs, testing isn't just a bonus, it's essential. In the Symfony ecosystem, PHPUnit is the tool of choice, providing developers with the means for ensuring their APIs are robust, secure, and reliable. Today, we'll explore the best practices and nuances around testing Symfony APIs using PHPUnit—both from the unit test perspective at the method level and endpoint-level testing for API-only Symfony projects. Understanding Method-Level Unit Tests in Symfony Unit tests are the cornerstone of ensuring code quality. These tests typically are small, quick, and targeted exactly at the method you're writing. They validate isolated parts of your application, and Symfony encourages this style of isolated, efficient testing. Let's look at a concise example. Suppose we have a simple helper method within a service that calculates discounts: name...