Insights

Writing about shipping, systems and AI engineering.

Long-form articles and short notes on what agent and LLM launches mean once you have to run them: retrieval, evaluation, cost, latency and developer tools. Every post is also available in Turkish.

Articles

Long-form pieces, first published on Medium.

Three connected browser diagrams: pointer intent, a prepared destination, and an incoming page; a smooth curve links the steps.Web Performance Featured5 min read · Smooth, without the waitHow I added smooth scrolling and animated page changes to this static site: Lenis, native browser transitions, early preparation, and a test with 30 images still loading.Web PerformanceBrowser APIsAnimationRead article
Line drawing of a score axis from 0 to 1 with sixty dots in two groups, an empty band between them, one highlighted dot inside the band at 0.35 and a dashed threshold line at 0.5AI Agents A word or a numberThe same refund decision asked three ways, 540 times: a chat model, the same model held to a strict schema, and a decision model that returns a probability. Accuracy tied. The number found the one ticket I had labelled wrong.6 min read · Read article Line drawing of one core script block between four config cards and four storefront plates, one pair highlightedE-commerce Search A results page on someone else's storefrontOne script that renders search results inside stores we do not host: what moved into a per-store config, how it mounts, and why old and new run side by side.5 min read · Read article Timeline diagram with three keyframe tracks and a playhead, next to a small isometric lane the tracks driveMotion Graphics Motion graphics, written as codeHow the animated drawings on this site are made: SVG scenes on one clock, generated by short functions, written with Claude Code. With the real scenes running in the page.5 min read · Read article Line drawing of a lane with four numbered gates labelled reproduce, give context, target and validate, with a block that has passed the last oneAI-Assisted Development Same model, different workflowThe written version of a session I gave my team on fixing bugs with an AI assistant: four steps, a context budget, the limits, and the demo I staged on purpose.4 min read · Read article Line drawing of two lanes leading to a storage block: a push script token and a widget token that waits at a line until the value is savedWeb Push The widget that worked on the second visitA blocked-notifications widget appeared only after a reload. Three small fixes: a race between two scripts, a cookie mistaken for the permission, and one state with three names.4 min read · Read article Two panel tabs for different brands, one covered by a brand mismatch dialog, next to a grid of dashboards with empty statesReact A guard against saving to the wrong brandA tab showed one brand while the server session held another. The guard that blocks it, and a pass over 11 dashboards in a shared codebase.6 min read · Read article Email builder with a block palette, a two-column product block filled from a pasted URL and an inspector panelReact A product URL becomes an email blockA product block inside a third-party email editor: mock data first, a wrap-once guard, a cookie-less request, an update loop and a context-aware inspector.6 min read · Read article Terminal running discover, plan, apply and verify next to a status board of brands marked ready, disabled or search-emptyTypeScript A dry-run CLI that rolled search out to 271 brandsHow a TypeScript CLI installed a new search on 271 of 272 brands: dry-run by default, status classes, backups, read-back vs independent verify, rollback.6 min read · Read article Admin console demo with synthetic data: sidebar, KPI cards with sparklines, recent invoices and ticketsReact Building an admin platform from scratch: an ops console and a RAG Document CenterHow I built Revotas's new admin platform alone: CRM, support and billing on legacy APIs, plus a Turkish RAG assistant that cites sources or abstains.5 min read · Read article A React settings panel on the left compiling into a single storefront script and a live deal widget preview on the rightReact The builder compiles, the storefront just runs itHow I built a no-code Deal of the Day builder: React state compiled into one self-contained script, previewed live in an iframe, with zero schema change.6 min read · Read article A phone notification tap routed through foreground, background and cold start paths into one router that opens Home, Category, Product or CartReact Native The push that opens the right screenReact Native push taps arrive through three different APIs. One router, payload normalisation, token care, and a backend debug that went wrong.6 min read · Read article A store's own product card cloned into a recommendation carousel next to the original sliderJavaScript Recommendations in the store's own designBrands said our recommendation widget didn't look like their site. So the engine copies their product card and fills it with ours.6 min read · Read article Full-screen search overlay with product grid, category chips and a typed query, shown over a storefrontJavaScript One search script, 271 storefronts I don't controlShipping a search overlay into 271 stores: rolling back @layer, race guards, Turkish folding, client-side typo tolerance and facets, and a debug catalogue.7 min read · Read article Bold white text "Knowledge is free. Focus is not." on a black background, with "Focus" underlined in yellowLearning Access to Knowledge Is Easy; Focus Is the ConstraintAI and the web make learning material abundant. Progress still depends on protecting attention, practising regularly and applying what you learn.7 min read · Read article Black cover with the article title in serif type and the quote "The keys did not change. The boundary did."Web Security Why AI API Keys Leak, and the Server Route That Stops ItGemini changed what public Google keys can do and NEXT_PUBLIC_ ships secrets to the browser. Keep model calls behind a server route.7 min read · Read article Split cover with a Victorian messenger boy and modern code monitors under the text "Same mindset. New tools."Software Engineering From Vibe Coding to Agentic EngineeringLetting a model write code is the easy part. Planning, verification and owning the result are where software engineering work moves next.6 min read · Read article Black cover reading "Agent-Ready Repo Structure (2026)" with Structure > Prompt > Model and a README vs AGENTS.md noteDeveloper Tools A Repo Structure Coding Agents Can FollowA clear layout, standard commands and an AGENTS.md file tell coding agents where to work and how to verify changes.3 min read · Read article Black cover with large white text "This is THE 1%" and the subtitle "CS50 | Harvard"CS50 Finishing CS50x and CS50 Web: The Habits That WorkedMost online learners never finish Harvard’s CS50. The study habits that got me through CS50x and CS50 Web: daily practice, smaller problems, patient debugging.4 min read · Read article
Notes

Short breakdowns of AI and developer-tool news, first posted on LinkedIn.

LEGO pagoda and cherry blossom garden built by Claude Opus 5.5 in ldraw-nova: 2,175 parts, zero physics checksAI Engineering ldraw-nova: AI agents build LEGO models by writing Python geometryIn ldraw-nova, models write a plan and a Python generator instead of raw coordinates, but nothing checks physics or stability.1 min read · Read article Misty mountain oil painting at dusk with a painter 1 note card from a Claude Opus painter chain on stillwet.AI Engineering Multi-agent handoff notes: when Claude reads memory as ordersIn stillwet's painter chains, Claude read earlier notes as instructions and missing notes failed silently, so label, log and verify agent handoffs.1 min read · Read article Pi 1.0 launch demo cost per model, Opus $0.071 vs Luna $0.004, with a checklist for splitting planner and implementerAI Engineering Pi 1.0 agent harness: the Claude Opus planner drove 95% of the costIn Pi 1.0's demo, Opus used a fifth of the tokens yet cost 18x more than GPT 6 Luna, so log cost per model and count cache misses.1 min read · Read article Card on Netlify Edge Functions: warm invocation median from 25 to 40 ms down to about 5, and edge path checks.Web Performance Netlify Edge Functions on Firecracker microVMs: 5x faster warm callsNetlify's heavier Firecracker sandbox won because it removed a network round trip; count hops and track cold start rate before blaming the runtime.1 min read · Read article Magnitude vs llama.cpp on M4 Pro at 64K context: one cold agent turn drops from 154 s to 135 sAI Engineering Magnitude vs llama.cpp: 2x faster decode, only 9% faster prefillMagnitude's 2x speedup is decode, but at 64K context an agent turn is mostly prefill, so the whole turn gets only about 12% faster.1 min read · Read article Claude Code mods guide: Blast Radius holds rm -rf build, but $(...), aliases and scripts get past it, with a pre-install checklistClaude Code Claude Code mods: a command guard warns, permission rules blockClaude Code mods see every event, but a guard matching command text misses $(...), aliases and scripts; hard blocks belong in permission rules.1 min read · Read article Card on OpenAI's Dots safety write-up: disconnecting an app stops new reads, plus four steps for agents with memory.AI Engineering OpenAI Dots agents: revoking app access doesn't erase their memoryDisconnecting an app from an OpenAI Dots agent stops new reads, but pulled-in context stays, so revoking access and forgetting need separate steps.1 min read · Read article livenerf validation on Opus 5.5: medium vs high effort cut accuracy 4 points and tokens 26%, while identical runs were 6 points apartAI Engineering livenerf on Claude Opus 5.5: output tokens catch model drift firstlivenerf's validation found accuracy noise bigger than the real change, while output token counts clearly showed effort shifts.1 min read · Read article Jeeves dev set: accuracy 0.775 to 0.825, median latency 0.3 s to 3.3 s and p90 17 s, with a checklist for classifiersAI Engineering PostHog Jeeves: when reasoning pays off for a 9B classifierReasoning made Jeeves five points more accurate but pushed p90 latency to 17 s; reasoning only below 0.9 confidence keeps most of the gain.1 min read · Read article Sonnet 5 to Sonnet 5.5: $2 in, $10 out per million tokens unchanged, with a request checklist before flipping the model IDAI Engineering Claude Sonnet 5.5 migration: same price, new 400s on old requestsSonnet 5.5 keeps Sonnet 5 pricing but rejects forced tool_choice and disabled thinking, so check your requests before swapping the model ID.1 min read · Read article Card on taiga-s1 in FreeCAD: about 1 ms per decision on a CPU, and four app checks before a bigger UI agent model.AI Engineering taiga-s1: a 1.2M-parameter model drives FreeCAD via valid actionstaiga-s1 builds FreeCAD parts at about 1 ms per decision because the app lists valid commands each step; check your app's interface first.1 min read · Read article Launch film repo: Remotion AAC mux left about 2.5 frames of audio lag, fixed with ffmpeg, with a checklist for agent media rendersAI Engineering Claude Code and Remotion: a launch film with sync as a failing checkClaude Code built a 33-second launch film overnight; the repo muxes audio with ffmpeg and fails the build if sync drifts past 1 ms.1 min read · Read article Card on OpenAI's misalignment report: about 2.5 hours from alert to kill, and four checks for agent sandboxes.AI Engineering OpenAI agent escaped via DNS: why sandboxes need a real kill switchAn OpenAI research agent reached a public chatbot through DNS despite a proxy; the alert fired fast, but stopping the run took 2.5 hours.1 min read · Read article Card on llama.cpp prompt lookup drafting: a 16-line diff made it 4.5x to 25x faster, and checks before swapping a data structure.AI Engineering llama.cpp prompt lookup: a missing ampersand beat a faster hash mapIn llama.cpp prompt lookup drafting, reading maps by reference gave 4.5x to 25x, while a flat hash map added only up to 13%. Profile for copies first.1 min read · Read article Card on GitHub Primer's move from CSS-in-JS to CSS Modules: 55% less server render time and the migration timeline.ReactJS GitHub Primer's CSS Modules migration: guardrails before AI agentsGitHub halved server render time moving Primer to CSS Modules; agents cleared the last 900 sx props only because shims, flags and snapshots existed.1 min read · Read article Cloudflare Turnstile and Siteverify: four server-side checks before you ship a formWeb Security Cloudflare Turnstile: a widget without Siteverify stops no botsTurnstile tokens can be forged, so your backend must call Siteverify; Cloudflare now flags widgets that skip it with Fix with Spin.1 min read · Read article Card on GitHub Copilot app's rebuilt PR view: a 2,000+ file, 1M line test PR and what shipped.ReactJS GitHub Copilot app: virtualizing million-line diffs with commentsGitHub's Copilot app PR view keeps exact code row heights and measures review comments in one batched pass near the viewport, never mid-scroll.1 min read · Read article Cursor agent harness, 7% fewer tokens: system prompt trimmed by about two thirds, and the four changes that moved the billAI Engineering Cursor cut its agent system prompt by two thirds; token cost fell 7%Most of Cursor's agent spend sits in growing context, not the cached system prompt; on-demand tools and cache breakpoints moved the bill.1 min read · Read article Card on claude.ai performance work: the em dash bug and four deterministic counts gated in CI.ReactJS How claude.ai got 3x faster: gate CI on counts, not millisecondsAnthropic made claude.ai about 3x faster and protected the wins by failing CI on deterministic counts instead of noisy wall-clock milliseconds.1 min read · Read article Card on NVIDIA Nemotron 3 Diarization on DIHARD III: 9% error at 1-4 speakers, 28% at 5+, and checks before shipping.AI Engineering NVIDIA Nemotron 3 Diarization: low latency is cheap, crowds are notNemotron 3 Diarization loses almost no accuracy at low latency, but its error roughly triples past four speakers, so test on your own audio.1 min read · Read article Card on DigitalOcean Managed Agents: runtime plus tool gateway, and four things to check before moving an agent.AI Agents DigitalOcean Managed Agents: stop paying for idle coding agent timeDigitalOcean Managed Agents pause microVM billing while sessions sit idle; check idle time, secrets, resume behavior and quotas before moving agents.1 min read · Read article Opus 5.5 and GPT-6 Sol and Luna price changes with a checklist: cache hit rate, static context first, evals, thinking always onAI Engineering Opus 5.5 and GPT-6 Sol/Luna: the price war moved to cached tokensOpus 5.5 cut cache reads 60% and GPT-6 gives 90% off cached input, so agent costs now hinge on a stable prompt prefix.1 min read · Read article

Have a problem worth solving?Let's make it reliable

Start a conversation

Open to full-stack and applied AI roles, remote or hybrid.

Tell me about the role, the team and the problem.