Daniel’s Space
2026
- GitLab Container Registry vs. Dependency Proxy vs. Virtual Registry: Which Should You Use?
Use the Container Registry for images you build, the Dependency Proxy to cache Docker Hub today, and watch the Virtual Registry if you pull from several upstreams
- Claude Agent Skills
Introduction to Claude agent skills
- Claude Code in Action: Takeaways
Takeaways from Claude Code In Action.
- Migrate from pnpm to Bun
Learn how to migrate your Node.js project from pnpm to Bun for faster installation and execution.
- Practical SQL
Practical SQL Concepts with examples
- Kafka Storage Internals
Understanding Kafka's storage architecture, segments, indexes, and lookups.
- Message Delivery Semantics
Message Delivery Semantics, Exactly Once and Beyond
2025
- Kafka Consumer Deep Dive
Kafka Consumer Deep Dive including Groups, Rebalancing & The New Protocol
- Kafka Core Concepts
An overview of the core concepts of Apache Kafka, including topics, partitions, producers, consumers, and brokers.
- Kafka Producer Deep Dive
Deep dive into the Kafka Producer architecture, internals, and best practices.
- Docker Performance & Troubleshooting
Understanding resource management, performance tunning and systematic debugging for dockers running in production.
- Introduction to Apache Kafka
A ground-up introduction to Apache Kafka — what event streaming is, and how topics, partitions, and brokers fit together.
- Docker in CI/CD
Building production-ready CI/CD pipelines using Github Actions using docker
- Docker Networking
Understanding docker networking.
- Docker Security
A guide covers practical security measures to harden the docker deployments for production.
- Docker Internal
Docker Internals - Understanding Containers from the Ground Up
- Docker Compose
Comprehensive guide on writing docker compose file
- Dockerfile guide
Comprehensive guide on writing production-grade dockerfiles
- Functional Interface
A comprehensive guide to functional interface in Java with practical examples
- Introduction to Scoped Value
A comprehensive introduction to ScopedValue which is a modern alternative to ThreadLocal
- Introduction to Java Virtual Threads
A comprehensive guide that covers virtual threads from the ground up
- Kafka Docker Image
The differences among Kafka docker images.
- Code Review: Advanced Practices for Effective Reviews
Quick-reference guide covering go-to resources, focus areas, communication patterns, review workflow, and Google’s standards for handling code reviews and feedback
- From Single Server to Distributed System
A comprehensive guide to scaling applications from single server to distributed systems
- `type` vs `interface` in TypeScript
The main differences between `type` and `interface` in TypeScript
- Memory Management in Node.js
Understanding memory sections in Node.js.
- Event Loop in Node.js
Understanding the event loop in Node.js.
- Using Biome for Code Quality
This project uses Biome for formatting and linting instead of Prettier and ESLint.
- Serverless Architecture on AWS
Overview of serverless architecture on AWS, including key services, benefits, and best practices for building scalable applications.
- Most used Vim commands for daily coding
A collection of commonly used Vim commands to enhance your coding efficiency.
- Pair Programming: Best Practices and Tips
Let's explore the what, why, and how of pair programming, including its benefits and best practices.
- My Neovim Keymaps (LazyVim)
A collection of my personal Neovim (LazyVim) key mappings for efficient coding.
- Effective Final in Lambdas
Understanding the concept of effectively final variables in Java lambdas and how they differ from instance
- Query vs Scan in DynamoDB
Understanding the differences between Query and Scan operations in DynamoDB - performance, use cases, and best practices for efficient data retrieval
- Back of the Envelope Estimation
Quick-reference for powers of two, latency and availability benchmarks, plus a worked Twitter sizing example to ground rapid system design estimates.
- Difference: SOAP vs REST vs GRAPHQL vs gRPC
Comprehensive comparison of API technologies - SOAP, REST, GraphQL, and gRPC with use cases, examples, and recommendations for modern applications
- Create a pull request template
Learn how to create effective pull request templates to ensure consistency, improve code quality, and streamline the review process
- Code Review: What and Why
A comprehensive guide to effective code reviews - building better software through systematic examination, constructive feedback, and team collaboration
- Introduction to ADR
Learn about Architecture Decision Records (ADR) - documents that capture important architecture decisions with context and consequences
- Channel buffering in Go
How buffered and unbuffered channels differ in Go, and when a channel send blocks versus proceeds.
- The difference between `time.After` and `time.Sleep`
Why `time.After` and `time.Sleep` are not interchangeable in Go, and how each behaves with channels and goroutines.
- Choose an IaC tool
How to choose among AWS CDK, Terraform and Plumi
- Migrate from NPM to PNPM
The process to migrate a project from NPM to PNPM.
2024
- The Mac apps that I like
Some MacOS apps that I recommend.
- 6 Ways to Deploy Your Node.js Application to AWS
Explore the different ways to deploy a node.js Application to AWS.