What is a Rate Limiter? A rate limiter is a mechanism designed to control the frequency of requests or actions in a system. It ensures that a service doesn’t get overwhelmed by too many requests in a short period, protecting it from overuse or abuse. Imagine a bucket that holds a limited number of tokens […]
The importance of testing in software development
To test or not to test Testing is the bedrock of solid software development. It’s not just about squashing bugs, it’s about crafting a foundation that keeps your code dependable, maintainable, and a breeze to work with. From my own experience, I’ve noticed not every developer buys into testing. Some rock a YOLO mindset, thriving […]
Automating Redis cluster setup
Introduction This post serves as a companion to my repository, which provides an automated setup script for deploying a Redis cluster. Designed to streamline the process of configuring a clustered environment, the script enables users to quickly establish a functional Redis cluster with minimal manual intervention. In this guide, I’ll explain the purpose behind this […]
Judgement in software development
Judgment in software development is clutch—it’s what separates the code monkeys from the architects. (Grok) Role of judgement in software development In software development, judgment is about anticipating more than just today’s requirements—it’s about preparing for tomorrow’s unpredictability. You’re coding not only for current specifications but also for future challenges: will the system scale under […]
Notes from Docker Up & Running
Docker Up & Running Recently I was taking a deep dive into the workings of Docker with the help of Docker: Up & Running. These notes list useful commands and info for later use, covering ways to handle, check, and tune containers and images. Monitoring and Stats docker stats <container-name> This one shows a live […]
Coding challenge – HTML web server in PHP
I wanted to learn a bit more about concurrency and network programming, so I built two TCP socket servers in PHP as a coding challenge. It’s a practical way to practice and get a grip on managing multiple connections at once. I’m not going for anything complex—just experimenting and picking up the basics step by […]
Notes from Grokking Concurrency
Introduction I wrote this summary of Grokking Concurrency to take notes and help me remember the main ideas about parallel programming. The book covers things like multitasking and synchronization with examples and explanations that I want to understand better. It’s a way for me to keep track of what I’m learning so I can use […]
Setting up MySQL replication with Docker
Introduction Setting up MySQL replication is a powerful way to enhance the reliability, scalability, and performance of your database system. In simple terms, MySQL replication is a process where data from one MySQL database server (known as the primary or master) is automatically copied to one or more additional servers (called replicas or slaves). This […]
Thoughts on software architecture and decision-making
Recently, I read the book Software Architecture and Decision-Making by Srinath Perera. It contains a lot of content that is available in other software architecture books but offers some unique angles on certain topics. I think the author is right to point out that you need to design deeply things that are hard to change, […]
Removing bloatware from Android phones
Most Android phones come with many preinstalled apps that you might not ever use, but they do take up valuable space and clutter the interface. If you try to uninstall them the way you would any other apps you will find that it’s not possible. So is there a way to get rid of them? […]