Ubuntu Server Hardening — Part 1: The Essentials
The three measures every public Ubuntu server needs within the first hour: a default-deny firewall with UFW, brute-force protection with Fail2ban, and automatic security updates.
read more →Writing
11 articles
The three measures every public Ubuntu server needs within the first hour: a default-deny firewall with UFW, brute-force protection with Fail2ban, and automatic security updates.
read more →Windows 11 ships with PowerShell 5.1 as the default shell — a version from 2016 based on .NET Framework. Learn why this matters, how to upgrade to PowerShell 7, and how to make it your permanent default.
read more →Stop committing .DS_Store, Thumbs.db, and IDE folders into every project. Learn how to configure a global .gitignore that applies across all your repositories.
read more →Harden your Ubuntu server's SSH access step by step: create and deploy an SSH key pair, add a sudo user, disable password authentication, and lock out root.
read more →A quick look at some of the React applications I've built in my free time, including my personal portfolio and gaming utility tools.
read more →Learn why Go is ideal for containerization and how to use multi-stage Docker builds to create minimal, secure production images.
read more →Implement Conway's Game of Life in Go from scratch — grid logic, toroidal wrapping, terminal rendering, and a working main loop with two classic patterns.
read more →A deep dive into Bounded Contexts in Domain-Driven Design, exploring how to define boundaries and manage domain logic effectively.
read more →An introduction to Event Storming: a collaborative modeling technique for understanding complex business domains and processes.
read more →Learn how to differentiate between static and dynamic linking in Go and use terminal tools to verify your application's portability.
read more →