Ozgur Guzeldereli

thinker, problem solver, omnivore, synthesist, researcher, writer

Hi, welcome. I'm a computer science undergraduate at UCL, and essentially a solver: I think about a problem, generate a lot of ideas, then build and try enough of them to find which one holds. So far that is compilers, secrets management, embedded firmware, and small studies on how language models and people actually behave.

Still going up: the writing and notes are not here yet, and some of this text will change soon.

Work

all 14
2026– repo

Weave

A language for stating what must be true of a system, and a compiler that refuses to let you break it. Declare data, behavior, seams, and closures, and a deterministic checker proves on every keystroke that nothing reaches a sealed resource except through its gateway. Ships as a command-line compiler and a desktop IDE.

TypeScript Electron Compilers

2025– repo

Luma Auth

An open-source OAuth2 and OIDC server: complete enough for a real application, small enough that you can read the authorization endpoint and know what it does. PKCE, refresh rotation, introspection, revocation, pushed authorization requests, passwordless flows, and a full consent UI.

ASP.NET Core OAuth2 OIDC PKCE Razor

2025– repo

Synccl

A local-first secrets manager, on the premise that secrets belong next to the repository that uses them. Per-repo vaults, AEAD encryption bound at rest to the device through the TPM, Secure Enclave, or Linux keychain. Export is a portable file, passphrase or public-key encrypted.

Cryptography TPM Argon2id X25519

2023–24 repo

TaraOS

An experimental x86-64 operating system in C and NASM, from the first sector the BIOS loads to a shell prompt with nothing borrowed in between. Bootloader, 64-bit kernel, bitmap allocator, paging, task switching, drivers, interrupts. Every abstraction has to be built before you can use it.

C NASM x86-64

Does an injected date shift an LLM's preferences?

A pre-registered study of whether putting today's date in a system prompt shifts a model's answers on questions the date is irrelevant to. 39,200 generations. Mixed: irrelevant questions reach significance with tiny effects, and the bigger lever is date versus no date.

Python Statistics LLM APIs

Neural quadrature

A small network that learns a quadrature rule from data, mapping a function and its bounds straight to the value of its integral. Fixed bounds are exactly linear, variable bounds genuinely nonlinear, and wide bounds break naive training until inputs and targets are log-compressed.

Python PyTorch SciPy

AI image detector

A compact CNN classifying images as real or AI-generated, trained on Defactify across five generators, small enough at 1.7 MB to run on CPU. The part that matters is the holdout experiment: train with one generator withheld, then report per-generator recall, so the number is transfer rather than memorisation.

Python PyTorch CNNs

Intent and code

An empirical series on whether an author's why can be recovered from what the code does. You cannot read a purpose off code when several purposes fit it equally well. Checking a declared purpose beats guessing, but dies when the honest declaration already justifies the behaviour.

Python Statistics LLM APIs

Tension

An operator that deliberates across several cheap passes, stays silent while unsure, and decides for itself when to answer. Adaptive compute worked but is essentially PonderNet. The orthogonal-synthesis geometry is the one result both new and better, extrapolating well outside its training range.

Python PyTorch

Skimmilk

A reading tool for dense academic papers. It clarifies jargon in place, contextualises citations so a reference is a claim you can weigh rather than a bracketed number, and reorganises the text for comprehension while keeping full access to the original.

TypeScript React FastAPI Electron LLM APIs

2025–26

Mole Simulator

An accessible game where the input device is the player, built on UCL's MotionInput and recognised for accessible gameplay with the National Autistic Society. Marching Cubes terrain with chunked SDF streaming and custom triplanar shaders. Gesture input constrains the terrain and the pacing far more than it constrains the input code.

Unity C# HLSL MotionInput

Shiplog

Turns commits, PRs, and issues into release notes people actually read. Reads real history from any public repository, throws away merge commits and dependency bumps, rewrites each change as a benefit rather than an echo of the commit subject, and groups it sensibly.

Next.js TypeScript BYOK LLM

AI image detector, one-class

A one-class detector trained only on real images, scoring how atypical an image is in feature space. The hypothesis was that it would generalise to unseen generators better than a discriminative classifier. It did not: the baseline won, including on the held-out generator. A negative result cleanly obtained, with a distributional explanation.

Python PyTorch Mahalanobis

Pain point survey

A multi-page survey built around the group most surveys discard: the people who leave halfway. Every completed step upserts into Supabase against a session ID, and the final submit clears a partial flag, so an abandoned response is still a response. Turnstile and rate limiting are both optional.

Next.js TypeScript Supabase Zod

Writing

all 1

What is an essay and how should we write one?

On the essay as an attempt at thought, why school essays defeat their own purpose, and what honest essay writing asks of you.

writing thinking education