Hi, I’m Ata. I write about things I find interesting: programming, security, and whatever else I’m tinkering with.
Posts
-
Building a passive Ethernet tap
#hardware#networking#security
Ata Kuyumcu
I saw this cool ethernet tap and thought it would be cool to see how chatty my “smart” TV is. But I didn’t want to pay €39 for it. So I made a clone on mini breadboards.
-
Generating coding puzzles with LLMs
#programming#vibecoding#ai
Ata Kuyumcu
I have been working on this daily coding puzzle site dailyprog. It’s like Wordle for programming problems. Each day you get one puzzle with a short narrative, a function stub, and a set of visible test cases. You write a solution, run it locally against the visible tests, then submit to verify against hidden tests on the server. There are four languages (JavaScript, Python, C, Go), visual output for some puzzles, and a share link so you can signal your competency to your friends.
-
Revisiting server hardening
#devops#security
Ata Kuyumcu
Two months ago I wrote down my baseline for hardening a fresh Linux install. Non-root user, SSH lockdown, UFW, fail2ban, unattended-upgrades, the Docker firewall hole. It was fine as far as it went. But it didn’t go far enough. Last week I spun up a new VPS (Debian 13 this time, not Ubuntu) and found six I’d missed the first time around. Post-quantum SSH is also ready and takes one config line.
-
Rebuilding my blog with machines, for machines
#culture#web#vibecoding
Ata Kuyumcu
I rebuilt this blog recently. Not a redesign. The old posts are still here, same URLs, same markup. What changed is that every page now carries a full structured data graph and every element is annotated with microformats. Structured data that pulls its weight Every page gets a JSON-LD block in the <head>. Not a plugin. A 120-line Hugo partial that builds a @graph depending on what kind of page it is. The partial is mostly a big conditional: if .IsHome does one thing, if .IsPage and .Section "posts" does another, if .IsSection or .Kind "term" does a third. Each branch appends its nodes to a slice, then the whole thing gets serialized and dropped into a <script> tag.
-
Autopsying a SanDisk Extreme SSD
#devops#hardware
Ata Kuyumcu
I was planning a backup setup and dug an old SanDisk Extreme Portable SSD out of a drawer. Plugged it in, nothing. Well, not nothing. dmesg saw a USB device. sg_inq got a polite response from the bridge chip, but the kernel logged “Media removed, stopped polling” and the block device reported zero bytes. The USB-to-NVMe bridge chip was alive and as chatty. The SSD behind it was gone. The SanDisk Extreme has a reputation by now. You probably know it if you follow hardware news. I didn’t just want to read about the failure though, I wanted to see it.
-
Balancing an MMO economy with a black market
#games
Ata Kuyumcu
Albion Online has a cool design constraint that sounds absurd when you say it out loud: every item in the game is player-crafted. There are no NPC vendors selling gear. The world produces nothing on its own except raw resources. The whole sandbox is built on top of that constraint. But Albion also has mobs that drop loot. You go fight a heretic, you sometimes get a T4 bag. So somebody has to have crafted that bag. Where does it come from?
-
Hardening a fresh Linux install
#devops#security
Ata Kuyumcu
I’ve been running a small Hetzner VPS for a while now and every time I spin up a new one I find myself re-deriving the same baseline. This is that baseline, written down so I stop re-deriving it and so you can steal it. It assumes Ubuntu 24.04 LTS on a Hetzner VPS, but most things hardly change over the years, or between platforms. None of this is exhaustive, there’s no AppArmor profiling, no AIDE, but it gets you to a point where you won’t be embarrassed if someone runs nmap at you.
-
Building custom commands in Bevy
#rust#games
Ata Kuyumcu
Historical context This post was written for Bevy 0.4 in February 2021. Bevy is now on 0.15+ and the APIs have changed significantly. The extension trait pattern is still valid Rust, but the specific Commands, Command, and Bundle APIs in Bevy have evolved since. For current documentation, see bevyengine.org and docs.rs/bevy. Bevy is an ECS-based game engine built in Rust. Extension traits are a pattern in rust that allows you to add methods to an existing type defined outside of your crate. You can probably guess where I’m going with this.
-
Setting up remote backups with Restic
#devops
Ata Kuyumcu
Restic is a program that greatly simplifies the process of encrypted, incremental backups. Backblaze B2 is a pretty cheap cloud storage service that restic happens to support as a data storage backend. The first 10 GB of storage is free, which is plenty for storing configuration files and some source code.
-
Working through the SICP exercises
#plt#lisp#compsci
Ata Kuyumcu
I started reading through “Structure and Interpretation of Computer Programs” and thought it would be a good idea to publish my progress here. Here are my solutions for the first ten exercises in the book.
-
I did a few things at STM CTF 2018 Prelims
#security#python
Ata Kuyumcu
Here are a few challenges I chose to write about from the preliminary for STM CTF 2018 which will take place in Ankara at Oct 31. I want to thank the STM team for a fun and smooth CTF experience. I started competing in CTFs about half a year ago and I heard good things about STM CTF 2017. I hope I can attend this year :)
-
I did a thing at Harekaze CTF 2018
#security#cryptography#python
Ata Kuyumcu
I participated in DKHOS alongside bloodlust (formerly yubitsec) this year but this post is not about that. While we were waiting for DKHOS to start at midnight, we decided to warm up with another CTF that was going on at the time. That CTF was Harekaze 2018.
-
I did a thing at TU CTF 2017
#security#cryptography#python
Ata Kuyumcu
It was called “The Neverending Crypto”. I don’t remember what difficulty level it was listed at, probably the lowest :) Here is how it went. You are presented with an address and a port number. When you connect, you are asked to enter a string. The string you entered is encrypted and sent back to you. After a few tries, I realize it’s encrypted with a Caesar cipher.