Author: Lukasz

Debugging connections with strace and packet analysis

Debugging TCP Connections: Tools and Techniques This post explores tools and techniques for debugging TCP connection management, focusing on strace, tshark (Wireshark’s CLI counterpart), ss, and comparisons with alternatives like tcpdump and netstat. We’ll analyze single-threaded and multi-threaded servers, as well as a Vert.x-based server-sent events (SSE) setup, to understand TCP behavior, system calls, and […]

10 Essential Strategies for High-Performance API Design

API Performance Optimizations: Techniques and Insights Optimizing API performance is critical for delivering fast, scalable, and reliable services. Below I summarize key strategies with practical insights to enhance your API’s efficiency. Server-Side Caching Caching reduces server load and accelerates responses by storing frequently accessed data. Cacheability determines which responses can be cached based on their […]

My Coding Philosophy

Not long ago, someone asked me about my coding philosophy. I mumbled something semi-coherent at that time, but the question stuck with me and got me thinking – what is my coding philosophy? Having a clear credo to guide me through crunch times would be invaluable. After some soul-searching, I boiled it down to five […]

Ace Technical Arguments with S.O.F.T.W.A.R.E.

Technical disagreements are a fundamental part of a programmer’s role. Whether debating frameworks, architectures, or the eternal tabs vs. spaces dilemma (spaces, clearly), these discussions can feel like high-stakes battles. However, programming is a collaborative effort – no one owns the codebase unless they’re single-handedly building the next unicorn in their garage. For those craving […]

Rate limiter experiments

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 […]