Okan Binli

Ruby on Rails Expert & Technical Leader | 7+ Years Building Scalable Applications

 

Full-Stack Developer specializing in performance optimization, team leadership, and end-to-end product ownership. Experienced with modern tech stacks, global remote collaboration, and delivering high-impact solutions.

 

You can find my social media or resume below.

CGNAT's Sticky IP and Türk Telekom's DPI: The Zapret Fix

A few days ago I needed to access a Cloudflare R2 bucket from home and the TLS handshake kept breaking with: 1 * ssl_handshake returned: (-0x7200) SSL - An invalid SSL record was received I walked through every workaround I could think of on my OpenWrt router, and most of what the internet recommends turned out to be useless. Here’s what happened and what the actual fix is. The setup Router: OpenWrt on a Raspberry Pi 5, PPPoE WAN on eth0.35 ISP: Türk Telekom WAN address from PPPoE: 100.112.3.164 Public IP from ipify: 78.190.232.58 Zapret installed and running in autohostlist mode The first thing that matters: 100.112.3.164 is not your public IP. It’s an address inside Türk Telekom’s carrier-grade NAT pool. When client-side attacks didn’t work, I checked this and realized most advice about “getting a new IP” doesn’t apply here. ...

August 14, 2026 · 4 min · 702 words · Okan Binli

Fixing RTL8153B USB Ethernet Adapter Stuck in CD-ROM Mode on Raspberry Pi 5 (OpenWrt)

If you’re running OpenWrt on a Raspberry Pi 5 with a USB-to-Ethernet adapter based on the Realtek RTL8153B chipset, you may have noticed that the adapter stops working after a power outage. It works fine after a manual unplug/replug, but never comes up on its own after a cold boot. Here’s why, and how to fix it permanently. The Problem Many RTL8153B-based USB Ethernet adapters (including models from TP-Link, Ugreen, and others) use a dual-mode design. When first plugged in, they present themselves as a USB CD-ROM drive (product ID 0bda:8151) containing a Windows driver installer. A special kernel driver called r8152-cfgselector is supposed to intercept this, switch the device to Ethernet mode (product ID 0bda:8153), and hand it off to the r8152 network driver. ...

February 15, 2026 · 7 min · 1329 words · Okan Binli

Fixing Intel iGPU Passthrough for Frigate After Proxmox Kernel Upgrade

After upgrading Proxmox from version 8 to 9 (or after a kernel upgrade), Intel iGPU passthrough for Frigate running in a Docker container inside an LXC container suddenly stopped working. OpenVINO would detect the GPU but hang indefinitely when trying to use it, forcing fallback to CPU inference. System Configuration Hardware: Intel NUC12WSHi5 (12th Gen Alder Lake with Intel UHD Graphics) Host OS: Proxmox 9 with kernel 6.14.11-4-pve Setup: Frigate running in Docker container inside LXC container Goal: Hardware acceleration using Intel iGPU (OpenVINO + VAAPI) Symptoms OpenVINO detects GPU but can’t use it Critical kernel errors in dmesg FFmpeg VAAPI errors Root Cause The kernel upgrade broke the i915-sriov-dkms module that enables Intel iGPU virtualization and SR-IOV support. DKMS modules need to be rebuilt when kernels are upgraded, but this didn’t happen automatically, leaving the GPU driver in a broken state. ...

October 29, 2025 · 3 min · 537 words · Okan Binli

How I Fixed My Kobo Forma USB Finicky USB Connection

How I Fixed My Kobo Forma USB Connection on Arch Linux When I first tried connecting my Kobo Forma to my Arch Linux setup, it was a nightmare. The device would charge fine but either never show up, or it would disconnect after 20–30 seconds, usually in the middle of copying files or installing KOReader. After hours of trial and error, I finally pieced together a reliable workflow. Here’s a complete guide to help anyone else who runs into the same Kobo + Linux headaches. ...

October 15, 2025 · 3 min · 497 words · Okan Binli
Tailscale banner

Tailscale banner

Exposing Local Development Servers Securely with Tailscale Serve

Exposing Local Development Servers Securely with Tailscale Serve As developers, we often need to expose local services to other devices—whether that’s for testing on a phone, sharing work-in-progress with a teammate, or running an integration test across machines. Tools like ngrok have been the go-to solution, but there’s a simpler, more secure option if you already use Tailscale: Tailscale Serve. In this post, I’ll walk through how you can use Tailscale Serve to make a local Dockerized Rails + Ember setup available from your laptop, without editing your docker-compose.yml. ...

September 24, 2025 · 2 min · 420 words · Okan Binli