Understanding ELF Binaries: Linux Executable Format
Every time you run a program on Linux, you’re executing an ELF binary. Here’s what’s actually inside.
Thoughts, tutorials, and insights on software development.
Challenged myself to write one blog a day
Every time you run a program on Linux, you’re executing an ELF binary. Here’s what’s actually inside.
Python is slow. C++ is fast. Combine them for the best of both worlds.
Ever wondered how an Android app works under the hood? Here’s how to peek inside.
I’ve learned Qt, Kotlin, TypeScript, and Kafka in the past year. Here’s my systematic approach.
Your portfolio is your technical resume. Here’s how to build one that stands out.
After 50+ technical interviews (both sides of the table), here’s what actually matters.
Production issues are stressful. Here’s a systematic approach to debug them quickly.
Automate your C++ builds, tests, and releases with GitHub Actions.
CMake is the de facto build system for C++ projects. Here’s how to use it effectively.
Breaking changes are inevitable. API versioning lets you evolve your API without breaking existing clients. Here are the strategies that...
Creating database connections is expensive (~50-100ms each). Connection pooling reuses connections, dramatically improving performance. HikariCP is the fastest, most reliable...
Event-driven architecture decouples services by communicating through events instead of direct API calls. Here’s how to implement it with Spring...
Compilers seem like magic, but they’re just programs that transform text. Let’s build a tiny compiler that turns simple math...
Memory leaks are silent killers. Your program runs fine in development, then crashes in production after running for days. Here’s...
You’ve optimized your algorithm from O(n²) to O(n log n), but it’s still slow. The culprit? CPU cache misses. Modern...
As a backend engineer comfortable with Java and Spring Boot, Android development feels both familiar and alien. The language is...
After shipping Qt applications on Windows, macOS, and Linux for the past three years, I’ve learned that “write once, run...
When building cross-platform desktop applications in C++, two frameworks dominate: Qt and wxWidgets. Both are mature, well-documented, and production-ready. But...
Every time your program opens a file, allocates memory, or creates a thread, it’s making a system call. System calls...
Garbage collection is often seen as “magic” that happens in high-level languages like Java, Python, or JavaScript. But at its...
Slow queries are the silent killer of application performance. A query that takes 2 seconds instead of 20ms can bring...
A thread pool is one of the most fundamental concurrency patterns in systems programming. Instead of spawning a new thread...
Best practices for maintaining code quality without hurting feelings or slowing down the team.
A Hello World tutorial in Assembly that explains registers and system calls.
Demystifying the stack, the heap, and why segmentation faults happen.
A journey from the moment you press the power button to the first line of C code in your kernel.
Understanding stateless authentication mechanisms for modern web applications.
A step-by-step tutorial on creating a production-ready Dockerfile for Spring Boot applications.
A pragmatic guide on choosing between monolithic and microservice architectures, using real-world project examples.
How to structure your SCSS using the 7-1 pattern to keep your styles maintainable, including the use of mixins and variables.
Transitioning from strict Java/Kotlin Android development to the JavaScript-based React Native interaction. Lessons learned and pitfalls to avoid.
A deep dive into when to use React's built-in Context API versus a robust library like Redux, with code examples and performance considerations.
Introduction
Introduction