Innovate, disrupt, code the future. đŸ’»đŸ”đŸš€

Patch etcd and Verify the Recovery Path

The 23 July etcd patch release fixed a watch authorization problem that could disclose events outside a user’s RBAC key range. The fix is available in v3.7.1, v3.6.14, and v3.5.33. This is a good reason to patch, but the release is also a useful reminder that an etcd maintenance window should prove more than a new binary starts.

This guide is for an administrator of a self-managed, TLS-enabled three-member etcd cluster. The finished result is a patched cluster with a verified endpoint health check, a recorded member view, and an off-node snapshot whose integrity has been checked. The commands are documentation-verified examples, not output from a production cluster. Replace the certificate paths, endpoint addresses, service name, package method, and backup location with values from your own installation.

2026-07-25

Hardening GitHub Actions Checkouts for Pull Requests

A pull request workflow often needs two things that should be kept separate: untrusted code to test and trusted repository credentials to comment, label, publish, or update a status. GitHub’s June 2026 actions/checkout changes made one dangerous combination harder to enable by accident, but they do not turn every pull request workflow into a safe deployment workflow.

This guide builds a review workflow that tests pull-request code with the least useful token possible, then shows the narrow case where pull_request_target is appropriate. The successful result is easy to inspect: a pull request runs the contributor’s code without repository write permissions, while a trusted follow-up job can add a label without checking out that code.

2026-07-24

Adding GPS Signal Fix Status to Grafana with Telegraf and InfluxDB

If you’re running a Raspberry Pi-based time server or GPS-equipped system and want visibility into the GPS signal status (2D, 3D fix, or no lock), you can use a simple Bash script and Telegraf to bring that data into your InfluxDB time series database — and visualize it in Grafana.

In this post, we’ll walk through how to:

  • Create a lightweight GPS fix monitoring script
  • Use Telegraf’s inputs.exec plugin to ingest the data
  • Store it in InfluxDB
  • Visualize GPS lock status in Grafana

🚀 Why Monitor GPS Fix Status?

When using GPS for time synchronization (especially with chrony or ntpd), it’s useful to know whether the GPS module actually has a signal lock:

2025-04-02

DNS Exfiltration With Python

In this post, we dive into the mechanics behind a DNS exfiltration tool written in Python. This project demonstrates how data can be covertly transmitted via DNS queries. I built this client‑server system to study DNS exfiltration techniques in a controlled, educational environment. Below, I detail the architecture, key design decisions, and provide annotated code snippets from both the client and server implementations.


1. Overview and Architecture

The project is divided into two main components:

2025-04-01

Understanding Dependency Injection in Python

Dependency Injection (DI) is a software design pattern that helps create loosely coupled, testable, and maintainable code. Instead of having classes create their own dependencies, those dependencies are “injected” from the outside. This blog post will walk you through a concrete Python example that demonstrates DI, along with alternate techniques like the Service Locator and Factory patterns.

What Is Dependency Injection?

At its core, dependency injection involves passing (or “injecting”) an object’s dependencies rather than instantiating them internally. The main benefits include:

2025-03-30

Stratum‑1 NTP Server on Raspberry Pi 5

This guide explains how to transform a fresh installation of Raspberry Pi OS into a stratum‑1 NTP server. The project leverages a GPIO‑based GPS module with PPS, the PTP hardware timestamping capability of the Ethernet interface, Chrony for NTP synchronization, and Telegraf with InfluxDB for monitoring.


1. Overview

In this project you’ll build a stratum‑1 NTP server using:

  • Raspberry Pi 5 as the host.
  • A GPS module (via the serial UART port) for an absolute time reference.
  • A PPS (Pulse Per Second) signal from the same GPS for sub-microsecond timing accuracy.
  • The PTP hardware timestamping on the Ethernet interface for improved precision on PTP packets.
  • Chrony for NTP time synchronization.
  • gpsd to interface with your GPS receiver.
  • Telegraf for monitoring various metrics (including Chrony statistics) sent to an InfluxDB backend.

2. Prerequisites and Required Hardware

Before you begin, ensure you have the following:

2025-03-28

Mathematics and Physics for Orbital Mechanics

Welcome to this interactive curriculum on the mathematics and physics behind launching and recovering space vehicles. In this notebook, we will build a comprehensive understanding of the underlying math, coordinate systems, and physics that allow engineers to determine launch windows, orbital trajectories, reentry paths, and landing coordinates for real-world spacecraft.

Overview of the Notebook

This notebook is structured to guide you step-by-step through the essential topics required for space mission planning. We begin with fundamental mathematical concepts such as algebra, trigonometry, and coordinate systems, and progressively build up to advanced topics like orbital mechanics, trajectory optimization, and reentry dynamics. Each section includes interactive Python examples and visualizations to help reinforce the concepts and illustrate how real-world physics is applied in space missions.

2025-03-26

Understanding the Crystal Ball Function

Exploring the intricacies of the Crystal Ball Problem as it applies to arrays, this piece delves into the challenge of predicting future elements based on current sequences. It underscores the significance of pattern recognition and algorithmic forecasting in computational analysis and real-world applications.

Introduction

The Crystal Ball Problem is a metaphor for predicting future elements or trends in an array based solely on its current sequence. Imagine you have an array of numbers representing data points over time—such as stock prices or weather data—and your task is to forecast the upcoming values. The “crystal ball” is our metaphor for the ability to foresee these future values.

2024-04-05

Track Dotfiles with Git

Version: 1.2

Store all DotFiles in a bare git repository

Setup

  1. git init –bare $HOME/.cfg
  2. alias config=’usr/bin/git –git-dir=$HOME.cfg/ –work-tree=$HOME'
  3. echo “alias config=’usr/local/bin/git –git-dir=$HOME.cfg/ –work-tree=$HOME’” >> $HOME/.zsh/aliases
  4. config config –local status.showUntrackedFiles no

Adding files

Manually add files to repository by using config add <filename>. Use this to add all your files manually, this way only updates to your tracked files will show

Add the github repository

  1. config remote add origin <remote-url>
  2. config push -u origin main

Restore files from github

  1. echo “.cfg” >> .gitignore
  2. git clone <remote-git-repo-url> $HOME/.cfg
  3. alias config=’/usr/local/bin/git –git-dir=<path to .cfg’s Git directory> –work-tree=$HOME'
  4. config config –local status.showUntrackedFiles no
  5. config checkout
2024-04-04