Blog

I write about programming, music, and other things that interest me.

The Complete Guide to Web App Project Delivery: From Development to Client Handover

October 3, 2025

As a software engineers, we often excel at creating stunning applications but sometimes struggle with the business side of client delivery. This comprehensive guide covers everything we need to know about taking our web app projects from completion to successful handover while ensuring secure payment and professional client relationships.

Business
Read more

5+ Years of Programming: Critical Lessons Every Software Engineer Should Know

October 2, 2025

After more than a decade in software development, we've learned lessons that fundamentally changed how we approach our craft. These insights took us years to discover, but we're sharing them with you today—because we believe every software engineer deserves to know what really matters beyond the code itself.

Tips
Read more

Memory and Storage: Foundations for Backend Engineers

September 30, 2025

Backend engineering often revolves around how data is processed, stored, retrieved, and manipulated. To truly understand data structures and algorithms, it helps to grasp the underlying hardware and OS landscape: how the CPU, registers, cache, RAM, storage, and kernel interact to move and manage data.

DSARustFoundamentals
Read more

Understanding Hash Maps: The Indexed Warehouse of Backend Systems

September 29, 2025

For backend software engineers, mastering data access efficiency is paramount. Among the core data structures enabling fast lookup and dynamic storage is the **Hash Map**. This article dives into the inner workings of Hash Maps, using a warehouse analogy, technical explanations of Rust’s memory layout, and kernel-level insights to offer a comprehensive understanding fit for real-world backend applications.

DSARust
Read more

Linked Lists: Scattered Boxes with Direction Tags

September 28, 2025

Linked lists in Rust are like a chain of boxes scattered across a warehouse floor, where each box contains not only a product but also a pointer to the next box’s location. This design is ideal when warehouse shelves cannot be physically contiguous but still need an ordered sequence. This article explores linked lists through the warehouse analogy, presents Rust examples focusing on memory layout, and includes an explanatory Mermaid diagram, crafted for software engineers.

DSARust
Read more

Vectors: Expandable Warehouse Aisles

September 28, 2025

Vectors in Rust are like expandable aisles in a warehouse—built for flexibility, fast access, and dynamic growth. This article delivers a deep analogy between vectors and warehouse logistics, includes precise Rust code samples, and provides a **Mermaid diagram** to clarify structure and memory layout for engineers.[^1][^2][^3]

DSARust
Read more

Arrays as Warehouse Shelves

September 28, 2025

Think of a warehouse with a row of identical shelves, each slot numbered and just large enough to hold a single item type. Once these shelves are installed, the capacity is fixed — much like a Rust array, which has a type and a size determined at compile time.

DSARust
Read more

Data Structures as Warehouses: A Rust Perspective

September 28, 2025

When we think about data structures, it is often useful to map them to real-world analogies. One powerful analogy is that of a warehouse. A warehouse stores goods in specific ways to optimize retrieval, organization, and space usage. Similarly, data structures organize data in memory to balance efficiency, access patterns, and flexibility. This article explores how data structures can be thought of as different kinds of warehouses, and we’ll use Rust examples to connect the analogy to real memory layouts.

DSARust
Read more

When do you use threads?

June 25, 2025

This article explores the scenarios in which using threads can improve application performance and responsiveness.

Backend
Read more

Understanding Serde: A Deep Dive into Rust Serialization and Deserialization

June 5, 2025

Serde is a powerful framework in Rust for serializing and deserializing data structures. This article explores its features, use cases, and best practices.

BackendRust
Read more

Understanding Rust Memory Layout

June 4, 2025

Understanding Rust’s memory layout is key to writing safe, efficient, and idiomatic code. This post demystifies how Rust manages memory, from the stack and heap to smart pointers and trait objects.

Rust
Read more

Database Normalization Explained: 1NF, 2NF, and 3NF

May 30, 2025

Normalization of databases is an important concept in database design that ensures data integrity and reduces redundancy. It involves organizing data into tables and relationships to eliminate data redundancy and improve data consistency.

BackendDatabases
Read more

Synchronous vs Asynchronous Programming

July 6, 2024

An overview of synchronous and asynchronous programming paradigms, their differences, and use cases.

Backend
Read more

Understanding the Request-Response Model

July 5, 2024

An overview of the request-response model in web development.

BackendArchitecture
Read more

Load Balancing At Layer 4 Vs Layer 7

July 5, 2024

Understanding the differences between Layer 4 and Layer 7 load balancing is crucial for designing efficient and scalable network architectures.

BackendNetworking
Read more

The Gatekeepers Chronicle: Decoding Network Address Translation for Backend Architects

June 26, 2024

The genesis of NAT lies in the inherent scarcity of public IP addresses. With the explosive growth of the internet, the demand for these unique identifiers has far outpaced the supply. NAT emerged as a solution, allowing multiple devices within a private network to share a single public IP address, effectively conserving this precious resource.

BackendNetworking
Read more

The Network Alchemist: Decoding TCP Congestion Control for Backend Sorcerers

June 24, 2024

Delve into the intricacies of congestion control, the cornerstone of reliable data transmission. Join our wise wizard as he guides you through the principles of TCPs slow start and congestion avoidance algorithms, revealing the magic behind efficient and stable network communicat

BackendNetworking
Read more

The Evolution Beyond Classic Request-Response, Long Polling

February 11, 2024

Long polling redefines how we handle near-real-time communication in web applications, offering a refined approach when WebSockets or Server-Sent Events may be excessive. As software engineers, understanding long polling’s lifecycle—from memory allocation to kernel-assisted I/O—allows us to design more robust, efficient systems that scale elegantly across network conditions.

BackendNetworking
Read more

Short Polling: A Pragmatic Approach for Long-Running Requests and Asynchronous Notifications

January 31, 2024

Web applications demand responsiveness, but not all workloads fit neatly into the classic request-response model. When requests involve extended processing times or when we want the server to trigger updates asynchronously, short polling offers us a pragmatic and widely applicable solution.

BackendNetworking
Read more

Push Model in Backend Systems

January 30, 2024

An exploration of the push model in backend systems, its benefits, and implementation strategies.

BackendArchitecture
Read more

TLS: Understanding Transport Layer Security

January 23, 2024

Transport Layer Security (TLS) is a cryptographic protocol designed to provide secure communication over a computer network.

BackendSecurity
Read more

Domain Name System (DNS)

January 22, 2024

The Domain Name System (DNS) is a hierarchical and decentralized naming system for computers, services, or any resource connected to the Internet or a private network.

BackendNetworking
Read more

Unveiling The Anatomy Of A Tcp Segment: A Deep Dive Into The Nuts And Bolts Of Reliable Data Transfer

January 19, 2024

To delve into the inner workings of TCP, lets embark on a journey into the anatomy of a TCP segment, the fundamental unit of data transfer.

BackendNetworking
Read more

The Architects Chronicle: Mastering TCPs Sliding Window for Network Flow Control

January 19, 2024

Flow control plays a crucial role in preventing data congestion and ensuring that data flows smoothly between sender and receiver.

BackendNetworking
Read more

Adress Resolution Protocol

January 11, 2024

IP addresses are used by computers to identify each other on a network, while MAC addresses are physical identifiers assigned to network cards.

BackendNetworking
Read more

ICMP (Internet Control Message Protocol)

January 9, 2024

It is a critical tool for network troubleshooting and performance monitoring.

BackendNetworking
Read more

Navigating The Network Landscape: Decoding Ip Addresses, Subnets, And The Default Gateway

January 8, 2024

A comprehensive guide to understanding fundamental networking concepts including IP addressing, subnet organization, and the role of default gateways in network communication.

BackendNetworking
Read more

Navigating The Digital Highwar: Demystifiying Host-To-Host Communication.

January 4, 2024

Brace yourself for an exploration of the intricate world of host-to-host communication in the digital landscape.

BackendArchitecture
Read more

The Revolutionary Client-Server Architecture

January 4, 2024

This revolucionary model is a fundamental concept in modern software development, offering a scalable, efficient, and maintainable solution for handling large-scale applications.

BackendArchitecture
Read more

HTTP Request Processing

January 2, 2024

Journey of an HTTP Request: From Client to Server and Back

BackendKernelHTTP
Read more

AsyncIO Sockets

October 28, 2023

How to use AsyncIO sockets

PythonBackendConcurrencyMultithreadingMultiprocessing
Read more

Futures

October 25, 2023

Exploring the world of Futures, Tasks, and Awaitables in Python

PythonAsyncIOAsynchronous ProgrammingPerformance
Read more

AsyncIO 3

October 25, 2023

Asynchronous Programming with asyncio is a powerful tool for handling concurrent I/O-bound tasks.

PythonBackendConcurrencyMultithreadingMultiprocessing
Read more

Coroutines and Tasks in Python

October 25, 2023

A comprehensive guide to understanding coroutines and tasks in Python asynchronous programming model. Learn how to implement concurrent operations efficiently using async/await syntax, manage execution through the event loop, and improve application performance with practical examples and best practices.

PythonAsyncIOAsynchronous ProgrammingPerformance
Read more

AsyncIO-2

October 24, 2023

GIL explained in detail

PythonBackendConcurrencyMultithreadingMultiprocessing
Read more

AsyncIO-1

October 23, 2023

Explore the fundamentals of Python concurrency through processes and threads. Learn the key differences, use cases, and best practices for implementing multithreading and multiprocessing in your applications.

PythonBackendConcurrencyMultithreadingMultiprocessing
Read more

Hacking PythonAnywhere: Deploying Multiple Apps (No ASGI)

October 12, 2023

Deploying multiple apps on PythonAnywhere is a common requirement, but it can be challenging due to the lack of ASGI support. In this guide, we will explore a workaround for deploying multiple apps without ASGI.

PythonDevOpsCheat
Read more

Docker Python Setup

October 4, 2023

Docker is a great tool for managing and running applications in containers. In this article, we will explore some tips for setting up Python with Docker.

BackendDocker
Read more

Saving a Class to JSON File

May 31, 2022

What are APIs and why are they important in modern software development?

PythonCheat
Read more

Optimizing Beautiful Soup Performance

May 31, 2022

Beautiful Soup is a great tool for scraping web pages, but it can be slow when dealing with large pages. In this article, we will explore some tips to optimize the performance of Beautiful Soup.

PythonBeautifulSoupWeb ScrapingPerformance
Read more