Welcome to Özkan Pakdil’s Blog

👋 Hello! I’m Özkan Pakdil, a software engineer with professional experience since 2004.

  • I specialize in Java development and C# but consider myself a full-stack developer with expertise in backend, database, server-side development, UI, and UX.

  • My technical journey spans various technologies including Spring Boot, Kubernetes, React, and many more. I’m a Linux enthusiast since 1999 and enjoy optimizing system performance.

  • This blog contains articles about technologies I use and my experiences in software development. Feel free to explore my projects on GitHub.

Real-time File I/O Heatmap with eBPF and Java 25

Building a Real-time File I/O Heatmap with eBPF and Java 25

Have you ever wondered exactly which files are being hammered by your Linux system in real-time? While tools like iotop or lsof are great, sometimes you want something more visual, custom, and lightweight. In this post, I’ll walk you through how I built a Real-time File I/O Heatmap using the power of eBPF for data collection and Java 25 for a modern Terminal UI (TUI). What is eBPF and Why Use It? eBPF (Extended Berkeley Packet Filter) is a revolutionary technology that allows you to run sandboxed programs in the Linux kernel without changing kernel source code or loading kernel modules. ...

January 21, 2026 · 4 min · Özkan Pakdil
Bun Microservice Framework Benchmark Results

Bun Joins the Microservice Framework Benchmark: Surprisingly Fast JavaScript Runtime

Introduction Today I’m excited to announce the addition of Bun to our microservice framework benchmark suite. The results are nothing short of remarkable . Bun has proven to be one of the fastest runtimes in our entire test suite, competing directly with Rust frameworks! What is Bun? Bun is a modern JavaScript runtime built from scratch using Zig and JavaScriptCore (the engine that powers Safari). It’s designed to be a drop-in replacement for Node.js with a focus on: ...

January 10, 2026 · 4 min · Özkan Pakdil
Eclipse Collections vs JDK Collections Performance Comparison

Eclipse Collections vs JDK Collections: A Performance Deep Dive

The Spark The other day I came across a fascinating post on Substack by Skilled Coder about Java data structure performance. The post showed some eye-opening numbers for 10M operations: Get operations: HashMap.get() → ~140 ms TreeMap.get() → ~420 ms ArrayList.get(i) → ~40 ms LinkedList.get(i) → ~2.5 s Insertion (10M elements): ArrayList.add() → ~180 ms HashMap.put() → ~300 ms LinkedList.add() → ~900 ms This got me thinking: how do these numbers compare to Eclipse Collections? And more importantly, how can we calculate these numbers ourselves using open source tools? ...

December 29, 2025 · 3 min · Özkan Pakdil
PKIX errors to a clean mTLS + Feign + IAM demo

From PKIX errors to a clean mTLS + Feign + IAM demo

Why this post I started this mini‑project after seeing a common roadblock: PKIX path building failed when calling HTTPS services with OpenFeign. The goal was to create a tiny, runnable example that eliminates guesswork, shows how to configure client certificates and trust properly, and layers basic IAM policies on top. Reference: https://stackoverflow.com/questions/79835509/unable-to-configure-ssl-context-for-open-feign-client-getting-pkix-error What’s inside the example Two Spring Boot apps: Server: HTTPS on 8443, requires client certs (mTLS), and recognizes/authorizes callers with Spring Security’s X.509 support. Client: Spring Cloud OpenFeign calling the server via Apache HttpClient5 with a custom SSLContext. A one‑command cert toolchain (local CA → server/client certs → PKCS#12 keystores/truststores). An automated test script that runs a positive call (expected 200) and a negative call with an unauthorized client (expected 403). Project (ready to publish here): ...

December 5, 2025 · 3 min · Özkan Pakdil
Golang and Express.js Benchmark Cover

Adding Golang and Express.js to the Microservice Framework Benchmark Suite

Introduction Test results for this benchmark run → Over the last two days, I’ve expanded our microservice framework benchmark suite to include two new contenders: Golang and Express.js. This addition allows us to compare performance across a broader spectrum of technologies, from compiled languages like Rust and Go to JVM-based frameworks and Node.js. New Additions Golang (Go 1.24.10) Go was added using the standard library only - no external frameworks. The implementation uses net/http package which is known for its excellent performance and simplicity. ...

December 3, 2025 · 4 min · Özkan Pakdil