How to run the agent (generic Java) and where the metadata is used

GraalVM Native Image Agent - reachability metadata: how to run it, where files go

In short Run the app java -agentlib:native-image-agent=config-output-dir=./graalcnf/ -jar target/app.jar Copy the generated files from ./graalcnf/ to the project under src/main/resources/META-INF/native-image/<groupId>/<artifactId>/ Build the native image mvn -ntp package -Pnative -DskipTests TLDR Native Image needs reachability metadata so it can include dynamic features your app uses at run time (reflection, resources, proxies, serialization, JNI). The simplest way to get this metadata is to run your app on the JVM with the Native Image Agent and then use the generated JSON files during the native build. ...

September 16, 2025 · 2 min · Özkan Pakdil
Testcontainers with PostgreSQL and SSL

How to use Testcontainers with PostgreSQL and SSL

This guide walks you through running PostgreSQL in Testcontainers with SSL enabled and client-certificate authentication (verify-full). It explains: How to generate a CA, server, and client certificates. How to prepare certificate/key files and the right formats/permissions. How to configure PostgreSQL (postgresql.conf and pg_hba.conf) to require client certificates. How to wire everything up in Testcontainers. How to connect from Java (JDBC) and optionally from the psql CLI. Everything here is based on the code in this repository, particularly: ...

September 12, 2025 · 7 min · Özkan Pakdil
Pdf arrenger in linux is the best pdf tool

How PDF Arranger Made My ILR Passport PDF a Breeze

When it comes to preparing documents for important applications like the UK’s ILR (Indefinite Leave to Remain), efficiency and ease of use are everything. Recently, I needed to create a PDF from my passport pictures, and after some trial and error, I found a workflow that saved me a ton of time and frustration - all thanks to a fantastic open-source tool called PDF Arranger. The Struggle with LibreOffice Draw At first, I tried using LibreOffice Draw to assemble my passport photos into a PDF. Unfortunately, it was painfully slow, and arranging the imported images was a hassle. The interface just wasn’t built for this kind of task, and I quickly realized I needed a better solution. ...

September 9, 2025 · 3 min · Özkan Pakdil
Postgres index table bloat

Understanding and Monitoring Index and Table Bloat in PostgreSQL

PostgreSQL 🐘 is a robust database, but its MVCC (Multi-Version Concurrency Control) design can sometimes lead to a subtle issue: table and index bloat. If left unchecked, bloat wastes storage, increases I/O, and can slow queries down. In this post, I’ll walk through: What bloat is and why it happens Different ways to measure it How to keep an eye on it without killing your database A few habits to reduce or fix it What is bloat? 🧹 Table bloat: Every update creates a new row version, and the old one becomes dead. Those dead tuples sit there until vacuum cleans them. Index bloat: Even when dead tuples are gone from the table, their index entries may stick around until an index vacuum or reindex. Why care? ...

September 8, 2025 · 4 min · Özkan Pakdil
Kernel TLS and socket sharding

Kernel TLS, NIC Offload, and Socket Sharding: What’s New and Who Uses It?

Modern servers are expected to push hundreds of gigabits per second while keeping latency low and CPU use manageable. Two kernel-level innovations-socket sharding and kernel TLS (kTLS)-help make that possible. When paired with NIC TLS offload, the gains are even bigger. Socket Sharding Traditionally, only one process could accept() connections from a TCP socket. With Linux 4.5 (2016) and SO_REUSEPORT enhancements, multiple processes can share a listening socket. This “socket sharding” lets the kernel distribute connections efficiently across worker processes. ...

September 2, 2025 · 3 min · Özkan Pakdil