
CIS-Hardened Debian 12 AMI with Packer and Ansible
As part of my infrastructure hardening and automation efforts, I built a CIS-hardened Debian 12 AMI using Packer and the ansible-lockdown/DEBIAN12-CIS Ansible role. For reference or reuse, Iβve made the AMI publicly available: AMI ID: ami-0ded45c1c47569084 Region: us-east-1 This post documents how I did it from scratch. π οΈ Tools Used Packer Ansible Ansible Lockdown Role AWS EC2 Debian 12 (Official AMI) π Project Structure cis-debian-ami/ βββ packer.pkr.hcl βββ ansible/ β βββ playbook.yml β βββ roles/ β βββ DEBIAN12-CIS/ # added via git submodule To add the Ansible role: ...

A Clean Naming Convention for Docker Build & Push Workflows
A Clean Naming Convention for Docker Build & Push Workflows In my development projects, I often need to build and push Docker images automatically using CI workflows. Depending on the project, the architecture, and the target registry, the workflows can vary quite a bit. Sometimes I use Gitea Actions, sometimes GitHub Actions, and in some projects, even both. As the number of workflows grew, I realized that my workflow file names were getting messy and inconsistent. So, I decided to come up with a simple, scalable naming convention β one that would work cleanly whether Iβm using GitHub, Gitea, or any other CI platform. ...

Prepare Git-Tracked Code for LLMs
When working with large language models (LLMs), itβs often useful to feed them the source code of a project for analysis, refactoring, or documentation assistance. However, simply copying folders is messy β you usually only want the text files that are tracked by Git, displayed cleanly, without non-text files or noise. To streamline this, I wrote a Bash script that: Ensures you are inside a Git repository. Lists all Git-tracked files. Filters out non-text files. Skips empty or unreadable files. Prints the content of each file, with a clean header showing the relative path. Perfect for quickly preparing a project snapshot to paste into an LLM. ...

Hello, World!
Hello, World! π Welcome to my corner of the internet. Iβve been meaning to set up a personal website for a long time β a place to collect my thoughts, document experiments, share the things Iβm building (or breaking), and simply keep track of what Iβm learning along the way. This site is not just a blog. Itβs also a vault where Iβll archive useful notes, procedures, configs, and ideas β things that I often end up writing down in scattered files or losing inside forgotten notebooks. Now, Iβll try to keep them organized here, both for myself and for anyone else who might find them useful. ...