Writing on software development, AI, and everything in between.

All of my long-form thoughts on web development, TypeScript, Python, AI agents, and more. I break down complex topics into easy-to-understand guides with real-world examples.

Using Discriminated Unions in TypeScript for Safer API Responses

Learn how to use discriminated unions in TypeScript to make your API response handling fully type-safe. A beginner-friendly guide that shows you how TypeScript automatically narrows types inside conditionals — so you never accidentally access a property that might not exist.

Hardening SSH on Ubuntu: Custom Admin User and Locking Down Access

A practical, step-by-step guide to hardening SSH on Ubuntu servers. Create a custom admin user, change the default port, enforce key-only authentication, configure UFW firewall, and lock down access — with copy-paste-ready commands and lockout prevention tips.

LangGraph from Scratch: A Beginner Tutorial for Python Developers

Learn LangGraph from scratch with this beginner-friendly Python tutorial. Master agent workflows, state machines, conditional routing, tool calling, and multi-agent orchestration — with runnable code examples you can copy and paste.

AI Agents: The Comprehensive Developer Guide

Discover what AI Agents are, how they work, and their impact on software. A technical guide for developers on autonomous agents, architecture, and future trends.

GIT — Conventional Commits

Conventional Commits are a set of guidelines for structuring and formatting commit messages in a consistent and standardized way. This specification aims to make it easier to read and understand commit messages, particularly in the context of automated tooling and workflows for GIT.

Django ORM: Efficient Querying with Query Expressions

Learn how to optimize your Django ORM queries using query expressions and avoid inefficient Python loops. Harness the power of Django’s F expressions for better performance and race-condition-free querying.

Django — Model Manager

Dive into Django Model Managers – Learn how to use default and custom managers to optimize database queries, handle model inheritance, and follow best practices for Django ORM.

Django Best Security Practices

Django has a pretty good security record. This is due to security tools provided by Django, solid documentation on the subject of security, and a thoughtful team of core developers who are responsible to security issues.

Djoser Setup Guide for Django Rest Framework

Learn how to set up Djoser for authentication in Django Rest Framework. This guide covers installation, configuration, and JWT setup to streamline user authentication processes.