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 given my past challenges with Jekyll, I decided to explore other options. That’s when I discovered Hugo, a static site generator built with Go. I went ahead and created the site under GitHub Pages at pgbench.github.io, and the difference in speed was immediately noticeable. ...

May 10, 2025 · 2 min · Özkan Pakdil

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 handled static content. The e-commerce platform, Turkcell Shop, was my responsibility—where a single GC pause during peak traffic could mean thousands of failed transactions and angry customers. ...

May 4, 2025 · 3 min · Özkan Pakdil

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 login, someone will try to get in. ...

April 13, 2025 · 2 min · Özkan Pakdil

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: ...

March 13, 2025 · 2 min · Özkan Pakdil

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 public CompletableFuture<String> asyncMethod() { // Call external API return CompletableFuture.completedFuture("Result"); } WebClient with Reactor Spring WebFlux’s WebClient allows for reactive programming, making it easier to handle multiple API calls. ...

February 20, 2025 · 2 min · Özkan Pakdil