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 on software development and the daily challenge of writing.
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, safely and legally, without bricking...
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 without making things worse.
Automate your C++ builds, tests, and releases with GitHub Actions. The key is to make the workflow reproducible, fast, and...
CMake is the de facto build system for C++ projects. The biggest shift in “modern CMake” is to think in...
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.
Frameworks are powerful tools that provide structure, reusable components, and built-in solutions for common problems. They can speed up development...
Programming skill is not defined solely by the languages you know, but by how effectively you use your tools. Developers...
Most developers have a folder full of abandoned side projects. The problem is rarely lack of motivation or skill—it is...
Every system design decision comes with trade-offs. Improving performance often increases memory usage. Reducing memory may introduce additional computation. Simplifying...
Good database design is the foundation of reliable and scalable applications. Poor schema decisions made early often lead to data...
Clean and maintainable C++ is not about clever tricks or advanced language features. It is about discipline, clarity, and using...
Most developers use Git daily, yet many treat it as a collection of memorized commands rather than a system they...
When building small-to-medium web applications, choosing the right backend framework has a significant impact on development speed, maintainability, and scalability....
C++ is a powerful and widely used programming language, but it has a reputation for being difficult to learn—and for...