From the team

Blog

Practical guides on DevOps, Linux, Git and programming. Written by our engineers and co-authored with AI — the same way we build software.

AI co-authored

Installing Debian Trixie in WSL Using Docker

Build a fresh Debian Trixie WSL instance from a Docker rootfs, sidestepping the Microsoft Store's one-instance-per-distribution limit.

  • devops
  • linux
  • sysadmin
  • wsl
AI co-authored

Signing git commits with SSH keys

Sign your Git commits with the SSH key you already use for authentication — simpler than GPG, and verified on GitHub with an allowed-signers file.

  • devops
  • git
  • ssh

Using Git Tags: A Practical Guide

Lightweight and annotated Git tags, when to use each, and how to create, push, list and delete them for marking releases.

  • git
  • version-control
  • development
AI co-authored

Automating Tasks with systemd timers

Replace cron with systemd timers — writing the service and timer units, choosing between monotonic and calendar schedules, and checking they fired.

  • devops
  • linux
  • sysadmin
AI co-authored

Using journalctl

Query systemd logs with journalctl: filtering by unit, time range and priority, following live output, and controlling how much disk the journal uses.

  • devops
AI co-authored

Using git reset

What git reset actually does — soft, mixed and hard — with worked examples for undoing commits and unstaging files without losing work.

  • sysadmin
  • devops
  • linux
  • git
AI co-authored

Optional Chaining in JavaScript

How JavaScript's optional chaining operator replaces defensive null checks when reading nested properties, and where it stops helping.

  • programming
  • javascript
AI co-authored

Solving FizzBuzz in Python and JavaScript

FizzBuzz in Python and JavaScript, why interviewers still ask it, and what a clean solution looks like in each language.

  • programming
  • javascript
  • python
  • interview
AI co-authored

Is a string an anagram?

Two approaches to the classic anagram interview question — sorting and character counting — implemented in both Python and JavaScript.

  • python
  • programming
  • interview
AI co-authored

Running Traefik in Docker

Run Traefik as a reverse proxy in Docker Compose, with automatic Let's Encrypt certificates and container routing configured through labels.

  • traefik
  • docker
  • sysadmin
  • devops
AI co-authored

Installing Docker on Debian 11

Install Docker Engine on Debian 11 or 12 from Docker's official repository, including a clean-up path if a previous installation is in the way.

  • debian
  • docker
  • sysadmin
  • devops
AI co-authored

Securing SSH with ssh keys

Lock down an SSH server so it only accepts key-based logins: generating a key pair, installing the public key, and safely disabling password authentication.

  • sysadmin
  • devops
  • linux
  • ssh
AI co-authored

Using Python requests

Making HTTP requests in Python with the requests library — GET and POST, query strings, headers, JSON payloads and handling the response.

  • python
  • programming
  • devops
AI co-authored

Using Python logging

Replace print statements with Python's logging module: verbosity levels, handlers, formatters, and sending log output where you actually need it.

  • devops
  • python
  • programming
AI co-authored

Using Linux nftables

Configure a basic Linux firewall with nftables, the packet filtering framework that replaces iptables — tables, chains, rules and making them persist.

  • debian
  • sysadmin
  • devops
  • linux
AI co-authored

Using Python argparse

How to parse command line arguments in Python with argparse, including the improvements Python 3.11 brought to the module.

  • python
  • programming
  • devops
AI co-authored

Getting started with Git

A beginner's guide to Git — installing it, setting your identity, staging and committing changes, and understanding how distributed version control works.

  • sysadmin
  • devops
  • linux
  • programming