RSSAmplifier

Blog

Özkan Pakdil Software Engineer

Recent content on Özkan Pakdil Software Engineer

ozkanpakdil.github.ioRSS feed ↗126 posts

Latest posts

How to add NVIDIA free models to VS Code

NVIDIA offers free access to their powerful Nemotron models through their NVIDIA Build platform . In this post, I’ll walk you through how to get a free API key and configure it in VS Code to use models like nvidia/nemotron-3-ultra-550b-a55b directly in VS Code. Also you can choose any other model from here . Prerequisites VScode needs to be above 1.27 it needs to have customendpoint…

Beyond Functionality: Why Code Hygiene is Your Project's Immune System

In the world of software engineering, we often obsess over the “Testing Pyramid.” We pour resources into unit tests, integration tests, and E2E suites. These are critical, they tell us that our features work as designed. But there’s a shadowy category of bugs that traditional tests often miss: the architectural “anti-patterns” and “API misuses” that don’t…

Accelerating LLMs on Debian 13: Setting up Vulkan for llama.cpp

After setting up CUDA on my other laptop, I moved to a different(older) machine that doesn’t have an NVIDIA GPU. This one is an everyday laptop with integrated Intel graphics, but that doesn’t mean we have to settle for slow CPU-only performance. On this machine, I switched to the Vulkan backend for llama.cpp and the results were even more dramatic than I expected. Machine Hardware…

Accelerating LLMs on Debian 13: Setting up CUDA for llama.cpp

Setting up NVIDIA CUDA on Debian 13 (Trixie/Sid) to run Large Language Models (LLMs) can be a bit of a journey, especially if you’re transitioning from the default open-source drivers to the proprietary stack required for GPGPU workloads. Over the last few days, I’ve been working on getting llama.cpp to run with CUDA on my laptop to see how much of a difference it makes compared to…

Tuning Podman on macOS to Match OrbStack Performance

Note: These are suggested optimizations I have not personally tried yet. I’m blogging them as I’m planning to test them throughout this week. OrbStack is highly optimized for macOS, using a proprietary, high-performance networking stack and a custom VirtioFS implementation with aggressive caching. Podman, while being open-source and standard-compliant, can be tuned to significantly…

Atlassian MCP

I have been using Atlassian MCP with internal Confluence and Jira, and it has been wonderful. Finding internal information is often challenging and time-consuming. To be honest, searching through Jira or Confluence and locating the right information can be really difficult. Create Jira and Confluence API tokens from your internal site profile page. For example:…

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…

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…

Eclipse Collections vs JDK Collections: A Performance Deep Dive

Comparing the performance of Eclipse Collections against standard JDK Collections using JMH benchmarks. Spoiler: EC is slightly faster!

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

A minimal, runnable client–server example that fixes PKIX issues in OpenFeign with mutual TLS and adds application‑level identity/authorization via Spring Security X.509.

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…

How to solve macos hdmi sound control problem

So I got my Mac Mini M4 from Amazon for £500 and started using it. I had so many problems with the shortcuts I normally use even Ctrl+A wasn’t working, I had to use Win+A, and many other shortcuts were different. One of the biggest problems was using the sound keys on the keyboard. On Linux they worked fine: sound up and down controlled the output volume. But on macOS it didn’t work. Very strange…

MacOS on debian QEMU KVM

From Frustration to Breakthrough: Running macOS on KVM For years, I chased the dream of running macOS in a virtual machine . On Windows, I tried VMware and VirtualBox countless times with different tutorials and blogs. Each attempt ended in frustration: crashes, unsupported hardware, endless configuration rabbit holes. It felt like a goal always just out of reach. And finally I found…

Paint, a lightweight image editor for quick edits

Why I built Paint Whenever I wanted to make a very small edit on my Debian laptop, crop a screenshot, add a quick arrow, or block out a small area, the system only had GIMP for editing images. Powerful, but heavy and slow for tiny, frequent tasks. I wanted something nimble: quick to open, easy to use, and focused on the common one-off edits people do dozens of times a day.

Java imperative vs functional in 2025 - revisiting a 2015 microbenchmark

Quick numbers (avg; smaller is faster) I (imperative nested) : 3.28 µs I2 (imperative freq-map): 1.93 µs F (streams grouping): 127.37 µs FP (parallel streams grouping): 599.28 µs Winner: I2 - imperative freq-map Note: These are sample numbers from the run below on my machine; yours will differ. I/F labels mirror the 2015 post for a simple visual compare. == 2015-style harness (I:/F: lines) ==…

The First Production Performance Problem I Faced (and How I Solved It)

A real-world example of diagnosing a slow form in a VB.NET/SQL Server app and fixing it with the right index.

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

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

How to use Testcontainers with PostgreSQL and SSL

Using Testcontainers with PostgreSQL over SSL/TLS (with client certificates)

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…

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…

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…

How to use Playwright MCP with Junie in Intellij

A comprehensive guide to show how to use Playwright MCP inside intellij with Junie

Enterprise SSL Certificate Creation for PostgreSQL: From Development to Production

A comprehensive guide to SSL certificate creation for PostgreSQL, covering everything from basic OpenSSL commands to enterprise-grade PKI practices used by major financial institutions and media companies.

PostgreSQL Distinguished Name (DN) Authentication: Beyond CN-Based Certificate Mapping

A comprehensive guide to implementing Distinguished Name (DN) based certificate authentication in PostgreSQL using pg_ident.conf for flexible identity mapping when CN doesn't match the PostgreSQL username.

Designing mTLS for PostgreSQL: Getting SAN and Hostname Verification Right

A comprehensive guide to implementing secure mTLS authentication for PostgreSQL with proper SAN configuration and hostname verification to prevent common SSL connection failures.

The Pagination Pitfall: A React + Spring Boot Cautionary Tale

Why using client-side pagination for unknown data sizes in a React Spring Boot app can backfire - and how to fix it with proper server-side pagination.

🔍 Ways to Monitor PostgreSQL Queries (Concise Overview)

1. pg_stat_statements Extension that tracks execution statistics for all SQL statements (execution count, total time, etc.). Here full docs 2. PostgreSQL Logging ( postgresql.conf ) Configure parameters like log_statement , log_duration , or log_min_duration_statement to log queries to a file. 3. auto_explain Automatically logs execution plans for slow queries , useful for performance tuning. 4.…

PostgreSQL Client Certificate Authentication: Complete Setup Guide for CN and one to one connection

Client certificate authentication in PostgreSQL provides a secure, passwordless way to authenticate users. Instead of relying on passwords, clients present valid X.509 certificates to prove their identity. What to Configure Server-Side Requirements SSL certificates : Server certificate + client certificates PostgreSQL SSL settings : Enable SSL and configure certificate paths Authentication rules :…

PostgreSQL 18 Beta 1 Summary

PostgreSQL 18 Beta 1 - New Features and Breaking Changes Source : GitHub - PostgreSQL 18 Beta 1 New Features Overview PostgreSQL 18 introduces over 200 new features and changes. This document summarizes all significant new features, improvements, and breaking changes introduced in the Beta 1 release. Meaning these features can disappear too, this is just a beta. 1. Highlights of Major New Features…

JetBrains Junie: Is It Better Than Other AI Coding Assistants?

My Journey with Junie: A Game-Changer for Developers Over the past three weeks, I’ve been extensively using JetBrains Junie, and I’m genuinely impressed with how it has transformed my development workflow. In this short period, I’ve successfully implemented three significant features with remarkable ease. Based on my experience, Junie offers capabilities that go well beyond what…

From Istanbul to Wrocław: A Journey of Growth, Grit, and Java Logs

In July 2015 , I packed my bags and left Istanbul for a new chapter in Wrocław, Poland , to join Credit Suisse . It was a hot summer. I couldn’t afford a direct flight, so I flew to Berlin and took a bus to Wrocław. I was excited-and nervous. It was my first time living outside of Turkiye, and I was about to work for a bank I had never heard of before.

Install debian 12 on old huawei matebook

I have an old Huawei laptop that was originally running Windows 10. Then moved to 11 With only 8GB of memory, the system was painfully slow, just browsing internet quite frustrating. I initially considered switching to Linux Mate, but then decided to give Debian 12 a try. I used Debian between 2004 to 2015 so I know how good it is. I downloaded the minimal USB stick image of Debian 12 from here…

Exploring Hugo: A Faster Alternative to Jekyll for Static Sites

For years, I’ve been using Jekyll to power my blog at ozkanpakdil.github.io . It has served me well in production, but setting it up on Windows for local testing has always been a bit of a headache. Even with WSL, the process is sluggish, making experimentation and quick iterations more cumbersome than I’d like. Recently, I started thinking about creating a PostgreSQL benchmark center website, and…

A Retrospective on High-Traffic Systems, Garbage Collection Battles, and the Rise of G1

Prologue: The Era of WebLogic and Apache Mod_WebLogic It was 2012. Turkcell, Turkey’s largest mobile operator, had 15 million subscribers, and the pressure was on. As part of the operations team for www.turkcell.com.tr , I managed a labyrinth of infrastructure: 10 strong linux servers which had Weblogic installed humming behind Apache mod_weblogic proxies, serving dynamic requests while Apache…

What is fail2ban why we all should use it if we have a server open to the internet

I am using Fail2Ban for around 12 years now, maybe more. It started back when ssh brute-forcing script kiddies were everywhere. Who are they? They are people or machines scanning all IPs on the internet, and if they find an open SSH port, they start doing brute force password attacks. They do this for MySQL, PostgreSQL, or basically any open port. If there is a possibility of username/password…

How to check which port are open for connection on remote server

Today I needed to check which ports are open on a remote server to ensure that the services I need are running and accessible. Here are a few ways to check which ports are open on a remote server: Telnet Telnet is a command-line tool that can be used to check if a port is open on a remote server. You can use the following command to check if a port is open:

Handling Concurrent API Calls in Spring Boot

When building Spring Boot applications, handling concurrent API calls efficiently is crucial to ensure optimal performance and scalability. Here are a few approaches to manage concurrent read and write operations: Handling Concurrent Read API Calls Asynchronous Methods Using @Async at @Service annotation and enabling asynchronous processing can help handle multiple API calls concurrently. @Async…

How to fine-tune PostgreSQL fill factor

Fine tuning and optimizing the fill factor in PostgreSQL can significantly impact the performance of your database. The fill factor is a parameter that determines the percentage of a data page to be filled with rows, leaving space for future updates to minimize page splits and improve performance on frequently updated tables. By adjusting the fill factor, you can optimize storage efficiency and…

What is Fill Factor in PostgreSQL

Fillfactor in PostgreSQL is a parameter that sets the percentage of a data page to be filled with rows, leaving space for future updates to minimize page splits and improve performance on frequently updated tables. If you are having a table with a lot of updates, you can set the fillfactor to a lower value to leave space for future updates. The default fillfactor is 100, which means that the table…

What is load balancing and how to do it on client side

“Load balancing” can be explained as maintaining any workload. For example if you have to serve 1000 breakfast in the morning you can divide the work among 2-3 or more caterers to lower the delivery/preparation time. In the computer world, same logic applies, if you want to deliver fast, you can divide the work, for example for a website we can have 5-10 webserver, this way website…

How to find java app hosting(ISP) or How to deploy Spring Boot website to Koyeb

Spring boot is the most famous java framework, and I have been looking for a simple way to serve a java app on a hosting service(not dedicated which is very expensive not AWS/Azure which are too complicated), Most shared hosting does not support java apps, they support php or asp or perl here is the table for godaddy webhosting supported tech. I will explain how to deploy from dockerhub to Koyeb,…

How to deploy old php website to koyeb

I have this side project with me since 2007, it is an one file php website with sqlite db and some pictures and js and css. I am keeping it just to monitor sometime how are the things at php side. Anyway when I first build up this site I was using shared hosting, and in time I moved to dedicated server and today I decided to move to koyeb.com which is a nice cloud provider.

How to containerize a rust warp app

I wrote this arti warp server for running whois via TOR network, Arti is CLI tool which has arti_client library inside for connecting the network, my main target to dockerize this for easy deploy to koyeb.com I used docker init to create Dockerfile and others and changed the implementation little bit because of some special dependencies ARG RUST_VERSION = 1 .82.0 ARG APP_NAME = arti_whois FROM…

JetBrains developer stats of 2024

Here is a summary of JetBrains developer stats of 2024 . Java and Javascript are going down and Typescript and Rust are going up most used lang %61 javascript Unexpectedly WebAssembly is growing strong Most popular db is MySql and second PostgresSQL 🥳

How to generate a Aurora Postgresql cluster with all auto explain enabled

PostgreSQL has query execution plans configured as extension, meaning they do not come out of the box we need to configure it, For on-prem or owning server you can check this link which tells how to configure it. Problem is there are so many steps. And it is confusing for AWS Aurora I wrote a small bash script Here just to make this work automatic. Here is powershell version SubnetGroupName -> AWS…

HashMap collisions and how JDK handles it

I was thinking on this question How does HashMap handle collisions internally? What changes were introduced in Java 8 for its implementation? and reading this blog says On a final note, from Java 8, the linked lists are dynamically replaced with balanced binary search trees in collision resolution after the number of collisions in a given bucket location exceed a certain threshold. Than I wonder…

FFM (Foreign Function and Memory) Stdlib Example

FFM is the new API trying to replace JNI and jep is here It is basically calling functions outside of JVM or accessing memory not managed by JVM. I wanted to test can FFM beat regular Java API, below you can find a simple test doing math sin with FFM and with regular Math.sin import java.lang.foreign.FunctionDescriptor; import java.lang.foreign.Linker; import java.lang.foreign.MemorySegment;…

How to disable win11 startmenu internet search

Whenever I search anything on the start menu it triggers an internet search at the back and brings some results and suggestions from web, I use browser to do internet things, when we start mixing that to regular windows programs that slows down the computer, and I do not like slow windows. Below you can find a way to disable that online search. @echo off :: Check if running as administrator net…

How to Use Lunr.js for Searching in a Jekyll Blog

I have been using Google Programmable Search Engine on my blog, but I found that it doesn’t work quite as I expected. First, I tried Bing and DuckDuckGo as alternatives, but none of them performed as desired. DuckDuckGo’s API is nice, but it lacks a ‘site:’ filter, which prevented it from working as needed. Here are the steps to set up a Jekyll search system using Lunr.js for GitHub…

Graalvm to run wasm from spring boot

Graalvm is AOT compilation advanced JDK, I am following the project since 2019, Project’s first target was AOT now lately I start seeing more about multi language support. It supports Python, JS, Ruby, Wasm more details here And WASM is getting popular day by day, WASM is a new binary file for web. There are many cool examples of WASM Doom game in the browser with graalvm Postgres database…