RSSAmplifier

Blog

slaptijack

AI-enabled developer productivity, build systems, and engineering leadership

slaptijack.comRSS feed ↗100 posts

Latest posts

Switching From iTerm2 To Ghostty: What Changes In A Mac Developer Workflow

Move from iTerm2 to Ghostty without losing a productive Mac development workflow by preserving shell habits, validating terminal compatibility, and changing only the parts that improve daily work.

How To Place Home Wi-Fi Access Points Without Guessing

Place home Wi-Fi access points from a simple coverage map and real measurements, so work areas get reliable service without treating signal bars as a design plan.

How To Choose an Ethernet Switch for a Home Network Without Buying a Rack

Choose a home-network Ethernet switch by sizing ports, power, uplinks, and management features for the devices you actually own instead of importing data-center hardware into a closet.

How To Use 6 GHz Wi-Fi at Home Without Sacrificing Coverage

Get useful 6 GHz Wi-Fi capacity at home by matching compatible clients to well-placed access points, retaining 5 GHz coverage, and measuring the rooms where the network actually matters.

How To Measure Home Network Latency Before and After a Change

Measure home-network latency with a small, repeatable baseline that separates idle delay, loaded delay, packet loss, and local Wi-Fi problems before and after a network change.

A Practical Home Network Upgrade Order: Fix Coverage, Backhaul, Then Router Features

Upgrade a home network in the order that improves real reliability: measure the problem, fix coverage, add a wired path, then choose router features that solve a remaining constraint.

Wi-Fi 7 Mesh Networks: When Multi-Link Operation Helps—and When Wired Backhaul Still Wins

Decide whether a Wi-Fi 7 mesh will improve a real home network by separating client-side Multi-Link Operation benefits from the enduring value of placement and wired backhaul.

How To Diagnose Bad Wi-Fi Before Buying a New Router

Use a repeatable Wi-Fi diagnosis sequence to identify coverage, contention, wired, DNS, or latency problems before spending money on a new router.

Wi-Fi 8 vs. Wi-Fi 7: Why Reliability Matters More Than Another Speed Claim

Understand what Wi-Fi 8 is trying to improve, why it is not a buying reason yet, and how to make a better Wi-Fi 7 decision today.

Promotion Readiness Is Not The Same As Being Good At Your Current Job

Learn how to turn strong current-level execution into credible evidence that you can create impact through the judgment, scope, and leverage expected at the next engineering level.

How To Build Scope Without Becoming The Team’s Escalation Queue

A practical way for senior engineers to grow organizational scope by creating durable leverage instead of becoming the default owner of every hard problem.

How Engineering Managers Can Coach Senior ICs Without Turning Them Into Managers

A practical coaching system for engineering managers who want senior ICs to grow their scope and influence without treating people management as the default next step.

The Difference Between Staff Engineer Impact And Senior Engineer Output

The difference between staff engineer impact and senior engineer output is not that staff engineers stop writing code. The difference is that output describes what you personally produced, while impact describes the useful change that persists because you were involved. Senior engineers need both. They are expected to ship difficult …

Why Senior Engineers Stall Before Staff Engineer

Many excellent senior engineers stall before staff engineer for a simple reason: they keep optimizing for the job that made them successful. That is not a character flaw. Senior engineers are usually promoted because they can take hard work, make it concrete, and get it across the finish line. They …

How To Write Agent Prompts That Produce Reviewable Pull Requests

An AI coding agent does not need a clever prompt. It needs an assignment that a reviewer could recognize after the fact. That distinction matters. “Fix the flaky test” may be enough for a human who already knows the service, its constraints, and the team’s habits. To an agent …

How To Decide When A Build Tool Wrapper Has Become A Platform

Most build tool wrappers start as kindness. Someone notices that the "real" command is too long, too easy to forget, or too different between local development and CI. They add a Make target, a justfile recipe, a shell script, a package-manager alias, or a small Python helper. Now the team …

What Actually Changes When You Move From Senior Engineer To Staff Engineer

The move from senior engineer to staff engineer is not just a promotion with a bigger title and more meetings. It is a change in the operating model. Senior engineers are usually rewarded for strong execution inside a meaningful scope. They can take ambiguous work, turn it into a plan …

How To Review CI Failures With AI Without Turning Off Your Judgment

AI is very good at making CI failures feel less lonely. That is useful. A large CI log can be hostile terrain: thousands of lines of setup output, dependency chatter, repeated warnings, retry noise, test framework boilerplate, and one real clue hiding near the bottom. Asking an AI tool to …

How To Keep AI Coding Agent Changes Small Enough To Review

AI coding agents can produce more code than your review process can absorb. That is the useful part and the dangerous part. The same agent that can trace a bug across five files, update tests, adjust documentation, and clean up a few nearby rough edges can also turn a small …

How To Make Build Failures Reproducible Before They Become CI Mysteries

Build failures become expensive when they stop being reproducible. The first failure is usually just a problem. The third person saying "it only happens in CI" is when the problem starts turning into folklore. Someone reruns the job. Someone else clears a cache. A third person changes an unrelated file …

How To Design CI Output That Humans Can Actually Debug

CI output is part of your developer experience. That sounds obvious until you look at the average failed build. A pull request goes red, the developer opens the CI job, and the first thing they see is a scrollback landfill: dependency installation noise, folded shell wrappers, progress bars, warnings from …

When To Trust AI Coding Agent Refactors

AI coding agents are very good at refactors until they are not. That is the uncomfortable part. The same agent that can rename a helper across a repository, split a giant function, update tests, and clean up repetitive call sites can also make one tiny semantic change that hides inside …

How To Debug Bazel Remote Cache Misses Without Guessing

Remote cache misses are where build-system optimism goes to get humbled. The sales pitch for remote caching is simple: someone already built the thing, so you should not have to build it again. In a healthy Bazel setup, that can be beautiful. CI writes reusable outputs. Developers pull the same …

Making Local CI Commands Boring Enough for Humans and AI Agents

Local CI commands should be boring. That sounds like faint praise, but boring is exactly what you want from the command that tells a human developer, a coding agent, or a pull request bot whether the repository is healthy enough to trust. The problem is that many repositories make this …

Reviewing AI-Written Tests Without Fooling Yourself

AI-written tests are dangerous in exactly the way good-looking tests are always dangerous: they can make you feel safer without actually reducing much risk. That is not an argument against using AI coding agents to write tests. I use them for test scaffolding, edge-case enumeration, fixture cleanup, and regression coverage …

When Remote Build Caching Is Worth It

Remote build caching is worth it when the cache saves more engineering time than it costs in build discipline, infrastructure, debugging, and trust. That sounds obvious, but it is the part teams skip. They see long CI times, slow local builds, and a build system with the word "remote" in …

Designing Guardrails for AI-Generated Pull Requests

AI-generated pull requests are not a new category of code. They are pull requests. That sounds obvious, but it is the first thing teams forget when the novelty arrives. A pull request created with an AI coding agent still changes production systems, test behavior, user workflows, security posture, operational load …

Bazel vs. Make vs. Just: Choosing Build Tools for Real Engineering Teams

Build tools are one of those engineering choices that look small until they are not small anymore. At first, you just need a way to run tests. Then you add code generation. Then there is a Docker image. Then CI needs the same steps as laptops. Then one team needs …

How to Use AI Coding Agents Without Losing Engineering Judgment

AI coding agents are useful in the same way junior engineers, build scripts, and sharp shell aliases are useful: they can remove friction, accelerate boring work, and occasionally surprise you with a clever path through a problem. They are not a replacement for engineering judgment. That distinction matters. The strongest …

Migrating from WORKSPACE to Bzlmod Without Making Your Build Weird

Bazel's old WORKSPACE model had a long run. It was powerful, familiar, and occasionally the place where every build-system shortcut in the company went to hide. But the center of gravity has moved. Bazel 8 disabled WORKSPACE by default, Bazel 9 removed support, and the modern dependency story is MODULE …

Bazel 9.1.0: What Changed and How to Think About the Upgrade

Bazel 9.1.0 is not the kind of release that should make an engineering team drop everything and schedule a build-system migration party. It is a minor LTS release in the Bazel 9 line, published on April 20, 2026, and most of the changes are incremental. That is good …

The Staff Engineer's Path Review

The Staff Engineer's Path by Tanya Reilly is a career book for engineers who have discovered that senior technical work does not automatically become clearer when the title gets bigger. That is the quiet problem with the staff engineer track. Earlier engineering levels usually have a visible center of gravity …

A Philosophy of Software Design, 2nd Edition Review

A Philosophy of Software Design, 2nd Edition by John Ousterhout is a small book with a large target: the everyday design judgment that determines whether code stays understandable after the original author moves on to the next problem. That sounds modest until you remember how much software work is not …

Designing Data-Intensive Applications, 2nd Edition Review

Designing Data-Intensive Applications, 2nd Edition is the kind of software book that should make an experienced engineer slightly uncomfortable in a productive way. Not because it is obscure or needlessly academic, but because it reminds you how many "simple" backend decisions are really distributed systems decisions wearing a product feature …

Bazel 8.0.0: What Changed and How to Upgrade Without Surprises

Bazel 8.0.0 was not just another build-tool release. It was the release where Bazel stopped politely suggesting that teams should modernize their dependency management and started making the new world harder to ignore. The headline changes were Bzlmod becoming the default, WORKSPACE being disabled by default, and more …

Building a Full-Stack LangChain Prototype for Natural Language Developer Queries

Natural language developer queries sound like a toy until you watch someone spend ten minutes answering a question the platform already knows: "Who owns the checkout service?" "Where is the Terraform for staging Redis?" "What changed before the payments incident?" "Which services still point at the old Kafka cluster?" "Where …

Bringing AI to Backstage: Building an LLM-Powered Developer Portal

Backstage is already where many platform teams want developers to go for service ownership, docs, APIs, runbooks, and operational metadata. The problem is that developers do not always want to navigate a portal. Sometimes they just want to ask a question: "Who owns checkout-service ?" "Where is the runbook for restarting …

Beyond Git: Using LLMs to Power Your Internal Developer Portals

Git is usually the first place developers look when they need to understand a system. That makes sense. The code is there. The commit history is there. The pull requests are there. If you are lucky, the README is not lying too badly. But Git is only one layer of …

Explaining Bazel Build Failures with OpenAI: Automating Log Summarization

Bazel is fast, reproducible, and battle-tested at scale — but when something breaks, good luck deciphering its logs. Between action cache messages, output groups, and 500-line stack traces, figuring out why a build failed often feels like solving a riddle wrapped in a C++ binary. In this article, we’ll build …

AI-Assisted Log Analysis: Building a Git Hook That Explains Your Build Failures

CI/CD build failures can be brutal — especially when the logs are long, noisy, and cryptic. Developers often waste precious time parsing through thousands of lines of output just to find the root cause. What if your tools could summarize the problem in plain English? In this article, we’ll …

How to Write Secure Prompts for AI-Driven Developer Workflows

Secure prompts are not magic words. They are operating instructions for a system that is about to read code, logs, tickets, diffs, infrastructure settings, and possibly the occasional thing that should never have left a developer's laptop. That is why prompt security matters in developer workflows. The prompt is not …

Building an AI-Powered Pre-Push Policy Validator with OpenAI

Pre-push hooks are your last line of defense before questionable code hits the remote repo. Traditionally, they’re used to enforce tests or linting, but they can be brittle and overly rigid. What if, instead, your push triggered a context-aware AI that reviewed your code against team policies, security best …

Post-Merge Git Hook: Summarizing Changes with OpenAI

Merges often bring in massive changes — sometimes dozens of commits and hundreds of lines of code — and the first thing developers ask is: “What just happened?” Wouldn’t it be great if Git could summarize what a merge brought in, in plain English, right after you run git pull or …

Auto-Generating Changelogs with Git Hooks and OpenAI

Keeping changelogs up to date is one of those development chores that everyone agrees is important… and everyone forgets to do. Manual changelog curation often falls behind or gets skipped entirely. But what if your Git workflow could automatically generate changelog entries, summarize diffs intelligently, and update your CHANGELOG.md …

Creating a Downloadable Git Hook Template Repo for Your AI-Powered CLI

Now that you’ve got a fully functional, Python-powered Git hook CLI backed by OpenAI, the next step is sharing it — the right way. A downloadable GitHub repo template helps your teammates (or the open-source world) clone, customize, and integrate the tooling into their own workflows with minimal friction. In …

Packaging Your AI-Powered Git Hook as a Python CLI Tool

Building a local Git hook with Python is great, but if you want others on your team (or across multiple repos) to use it, you’ll want to package it as a reusable command-line tool. In this article, we’ll turn our AI-powered Git hook into a proper Python CLI …

Beyond Bash: Writing Intelligent Git Hooks with Python and LLMs

Git hooks are one of the most powerful — and most underutilized — features in the Git ecosystem. They allow you to automate actions at key points in your Git workflow: before committing, before pushing, after merging, and more. Traditionally, these hooks are implemented using shell scripts, but that’s limiting in …

Building Your Own Git Assistant with OpenAI and Python

GitHub Copilot is impressive, but what if you could build your own AI-powered Git assistant tailored to your workflow? In this article, we’ll walk step-by-step through building a command-line Git assistant using Python and OpenAI’s API. It will explain diffs, write commit messages, generate .gitignore files, and even …

AI-Powered GitOps: Automating DevOps Workflows with LLMs

GitOps has already transformed how we think about infrastructure: declarative, auditable, and version-controlled. But as infrastructure-as-code (IaC) adoption grows and systems become more complex, even GitOps can feel overwhelming. Enter the next wave: AI-powered GitOps . By integrating large language models (LLMs) into our CI/CD pipelines, infrastructure management becomes not …

Git Rebase vs. Merge: Choose a History Shape Deliberately

Rebase and merge are not rival moral systems. They create different commit graphs, and the useful choice depends on who already depends on the history. Choose the shape that makes collaboration, debugging, and recovery boring—not the one that wins an argument in a pull request. The graph is the …