# The Log — Emre Yakut > Emre Yakut’s working log. Metering systems, CRM, customer portals, mobile apps, simulations and servers — named, linked and measured. A record of what I actually built through 2026. Author: Emre Yakut — Technology and Digital Systems Manager, Brunata ZENNER — Part of Minol. Language: English. Address: https://emreyakut.com/blog/en/ Other language: https://emreyakut.com/blog/ ## The rule of this log Every entry comes from real work and names the project. Numbers are measured; where a measurement could not be made, it says "not verified". This is a working record, not marketing: what was built, how it works, what broke, and what the root cause was. ## Systems - **Brunata ZENNER CRM** — https://crm.brunatazenner.tr — The backbone of heat and water cost allocation: site/block/unit records, meter inventory, readings, the billing engine, accounts, field service and HR. PHP, one code base, period-scoped databases. - **app.brunatazenner.tr** — https://app.brunatazenner.tr — The resident portal. You see your bill, your daily consumption against the weather, and how it compares with the building average. A separate panel for site managers. PHP 8.3 + FastRoute + Twig, written from scratch. - **BZT Service Console** — https://service.brunatazenner.tr — The licence and log server for field reading terminals. No framework — a PHP 8.3 micro-framework with a console-themed admin. - **ZENNER Meter Reader** — The reading application in the field technician’s hands (.NET). Reads meters over an optical head and wM-Bus radio, decodes the telegram, fetches its licence from the server. v4 “Aurora” ships over ClickOnce. - **READERP** — https://readerp.com — A conversational layer over a commercial ERP. A manager asks in plain language, the system builds the right query, and every number comes from the database carrying its source. - **Fly4cast** — https://fly4cast.com — A flight-decision app for drone pilots. Web + Android + iOS. Wind by altitude, geomagnetic activity, no-fly and GPS-jammer maps, camera/ND recommendations and a flight-log decoder. - **Mutfaksim** — https://mutfaksim.com — A recipe system that tells you what you can cook with what you have. Scaling, a technique library, membership, and a channel that publishes itself to social media. - **ArenaSim** — https://arenasim.com — A deterministic match simulator. You build a squad, the engine plays the match; the same seed produces a bit-for-bit identical match anywhere. - **QuantDesk** — A crypto trading engine that decides on its own. It classifies the market regime, gates four strategies by regime, and refuses any trade that fails an expectancy test. Node engine + PHP dashboard. - **Globya Radar** — A diagnostic engine that scans an address and produces evidenced findings and a transparent score: SEO, AI visibility, security, DNS/email, technology + CVEs, privacy compliance. - **NEO** — An always-on voice assistant at home. It listens, separates speakers, recognises faces, drives home devices and writes code. Its brain is a Claude Code session. - **StageLightning** — An engine that analyses a track and turns it into a light show. DMX and Philips Hue output, a show engine that is a pure function of time, and a room-acoustics measurement tool. - **emre-vps + WireGuard** — A personal server and VPN. Personal projects moved off client hosting; PC, phone and a Quest headset come in over the tunnel. - **fsn1 — paylaşımlı sunucu** — Operating the server that hosts dozens of client sites: mail, firewall, bot traffic, PHP-FPM pools, and a root-cause log. - **Haustech Mekanik** — The corporate site of a mechanical contractor and authorised Siemens partner. 90 pages, TR/EN/DE, generated from one source. - **Haustech Shop** — E-commerce for Siemens products: catalogue, a compatibility engine, cart and checkout, a Google Merchant feed and a help desk. - **Termolab** — https://termolab.com.tr — The site of a heat-meter inspection laboratory. Accredited scope, documents, and a request wizard that finds the right inspection type without asking you to know the regulation. - **Mekanik Garaj** — A draft site and technical audit for a luxury and supercar service in Maslak, Istanbul. - **Essen Tekstil** — A draft site for a home-textile manufacturer in Bursa. The product tree was extracted from a 77-page catalogue PDF. - **Balaban Oto — AOP** — A dealership operations platform: vehicle stock, processes, sales, service, used-car listings and a public showroom site. Layered architecture, multi-tenant. - **arminefe.com** — https://arminefe.com — A game platform I built for my son. Backgammon, okey, card games, hangman and a robot-combat RPG — all multiplayer. - **emreyakut.com** — https://emreyakut.com — My own site. Two modes: the professional narrative and “Inside My Mind” — a thought simulator, a groovebox that runs in the browser, and this log. - **DiskClean + MailLens** — Two tools that tidy my own desk: a disk analyser that reads the NTFS master file table directly, and a mail tool that strips closed conversations out of an inbox. ## All entries (newest first) - 2026-09-15 — [Why almost everything I build has “sim” in the name](https://emreyakut.com/blog/en/my-habit-of-simulating-everything/) — Fly4cast, Mutfaksim, ArenaSim, QuantDesk, StageLightning. They look like different projects. They are not. All of them try to say what will happen to something that has not happened yet. - 2026-09-14 — [If it cannot be measured, it says “not verified”](https://emreyakut.com/blog/en/if-it-cannot-be-measured-it-says-not-verified/) — Globya Radar — I ran the same technical audit by hand for every client: two hours, missing something each time. I turned it into an engine. The hard part was not the scoring formula — it was deciding not to produce a number. - 2026-09-13 — [What can you cook with what you have — and a site that publishes itself](https://emreyakut.com/blog/en/a-site-that-publishes-itself/) — Mutfaksim — Mutfaksim tells you what comes out of whatever is in your fridge. Then moving its content to social media by hand felt absurd, so the site started publishing itself — along with three bugs. - 2026-09-12 — [“Will this fit instead of that one?” — a compatibility engine](https://emreyakut.com/blog/en/will-this-part-fit-instead-of-that-one/) — Haustech Shop — In a technical product shop the most common question is not price. It is “my model is discontinued, what can I fit instead?”. I built an engine to answer it — and shipped it switched off. - 2026-09-11 — [Things that get solved by a fire](https://emreyakut.com/blog/en/things-that-get-solved-by-a-fire/) — I did not make my best architectural decisions at a screen. Most of them arrived somewhere with no phone signal, by a fire, while doing nothing at all. - 2026-09-10 — [“The site won’t open” and “the payment isn’t showing”: two root causes](https://emreyakut.com/blog/en/the-site-wont-open-two-root-causes/) — Haustech Shop — Two complaints in one week. One was “the site never opens, but I can get in”; the other “the customer paid and it isn’t in the system”. Both had causes in places that produce no error. - 2026-09-09 — [Don’t walk the disk, read its ledger — and two tools that tidy my desk](https://emreyakut.com/blog/en/dont-walk-the-disk-read-its-ledger/) — DiskClean + MailLens — I wrote a disk analyser. Walking folder by folder took nine minutes to scan 1.4 million files. NTFS already keeps a record of every one of them in a single table. - 2026-09-08 — [The watchman said “all clear”, because it was counting the wrong stage](https://emreyakut.com/blog/en/the-watchman-was-counting-the-wrong-stage/) — fsn1 — paylaşımlı sunucu — There was a mail loop on the server and my monitoring script had been reporting “bounces = 0” for a month. The number was correct. What it measured was wrong. - 2026-09-07 — [Who spoke, where from, what now — three separate questions](https://emreyakut.com/blog/en/who-spoke-where-from-what-now/) — NEO — NEO is an always-listening assistant at home. My first mistake was treating those three as one question. Splitting them raised accuracy and made it visible where the system was going wrong. - 2026-09-06 — [Settings that are silently ignored, and 8.9 seconds becoming 1.8](https://emreyakut.com/blog/en/flags-that-are-silently-ignored/) — NEO — My voice assistant’s brain was far too slow. I was passing settings as command-line flags and all of them appeared to be accepted. Reading the start-up event showed the truth: none had been applied. - 2026-09-05 — [I built my own server and put the house behind a tunnel](https://emreyakut.com/blog/en/my-own-server-and-tunnel/) — emre-vps + WireGuard — My personal projects had lived on a client server for years. I separated them: my own VPS, my own VPN. PC, phone and a VR headset now come in over the same tunnel — and the reason was not technical. - 2026-09-04 — [I wrote a trading engine that decides on its own](https://emreyakut.com/blog/en/an-engine-that-trades-on-its-own/) — QuantDesk — QuantDesk watches the market around the clock, decides which regime it is in, enables the strategies that suit it, and rejects any trade whose expectancy cannot pay the fees. Its most valuable part is not the strategy — it is the measurement. - 2026-09-03 — [I wrote my own captcha — five layers, four of them invisible](https://emreyakut.com/blog/en/i-wrote-my-own-captcha/) — ArenaSim — I did not want an off-the-shelf bot shield: it exposes the user to a third party, does not work in some countries, and image puzzles tire humans as much as bots. - 2026-09-02 — [The root of determinism: the language’s own randomness](https://emreyakut.com/blog/en/the-root-of-determinism/) — ArenaSim — In ArenaSim the server and the browser had to play the same match. I gave both the same seed and got different results. The culprit was not my code. - 2026-08-31 — [The spreadsheet was right, the system was wrong](https://emreyakut.com/blog/en/the-spreadsheet-was-right-the-system-was-wrong/) — READERP — Automating a cash-flow report, the ERP and the hand-kept spreadsheet disagreed. My reflex was to distrust the spreadsheet. Going line by line, my assumption collapsed. - 2026-08-28 — [I have no Mac, and an iOS app](https://emreyakut.com/blog/en/i-have-no-mac-and-an-ios-app/) — Fly4cast — I wrote Fly4cast’s iOS build on Windows, compiled it in the cloud and shipped it to TestFlight. The hard part was not the code — it was signing. Signing is not a build step, it is a chain of identity. - 2026-08-25 — [I caught a hallucination live, and it became a product rule](https://emreyakut.com/blog/en/catching-a-hallucination-live/) — READERP — We were building a conversational layer over an ERP. The model proposed an endpoint that does not exist — fluent, plausible, entirely invented. That moment produced the product’s most important rule. - 2026-08-24 — [My instrument mistook silence for reverb](https://emreyakut.com/blog/en/my-instrument-mistook-silence-for-reverb/) — StageLightning — I wrote a tool to measure my room’s reverberation time. It produced sensible numbers. Then I made the room completely silent and it kept producing the same numbers. - 2026-08-22 — [render(t): no accumulated state, so it can rewind](https://emreyakut.com/blog/en/render-t-a-pure-function-of-time/) — StageLightning — The light show had to rewind together with the track. What made that work was not a complex synchronisation scheme but a single rule: no effect may remember the previous frame. - 2026-08-21 — [Nobody answers anybody on a DMX cable](https://emreyakut.com/blog/en/nobody-answers-anybody-on-a-dmx-cable/) — StageLightning — My lighting interface refused to talk to any software. I swapped its driver, wrote raw bytes at it, and the lights came on. Why a forty-year-old protocol is still standing. - 2026-08-20 — [Send fewer commands to make the lights faster](https://emreyakut.com/blog/en/send-fewer-commands-to-make-lights-faster/) — I wired my bulbs to the music. A colour command on every beat. The lights fell behind, then stalled, then started flashing at random. The fix was not sending faster. - 2026-08-19 — [Scanning my home network: six minutes on the wrong layer](https://emreyakut.com/blog/en/pick-the-right-layer-arp/) — I wanted to list the devices on my own network. I scanned with TCP — six minutes later it was still at 18%. Then I dropped one layer and it finished in three seconds. - 2026-08-17 — [Decoding a flight log: same extension, two different worlds](https://emreyakut.com/blog/en/decoding-a-flight-log/) — Fly4cast — The .txt a drone leaves behind is not plain text. Older versions you can decode on your own machine; newer ones require a key from the manufacturer’s server. One version byte decides which. - 2026-08-13 — [Ninety pages, three languages, one source](https://emreyakut.com/blog/en/ninety-pages-three-languages-one-source/) — Haustech Mekanik — A mechanical contractor’s corporate site came to ninety pages — Turkish, English, German. I did not write ninety files. I generated ninety files. - 2026-08-09 — [Sixteen cells vanished: the generic class name trap](https://emreyakut.com/blog/en/sixteen-cells-vanished/) — emreyakut.com — The sequencer cells in my site’s groovebox went invisible one morning. No JavaScript error, nothing in the console. The cause was two CSS classes with the same name in two different files. - 2026-08-05 — [Press the button before you write the proposal](https://emreyakut.com/blog/en/press-the-button-before-you-write-the-proposal/) — Mekanik Garaj — I was preparing a draft for a luxury car service. I opened their site, clicked “Book an appointment”, and PHP errors poured onto the screen. That became the subject of the whole proposal. - 2026-07-28 — [“Can I fly?” is a decision, not a score](https://emreyakut.com/blog/en/can-i-fly-is-not-a-score/) — Fly4cast — The hard part of Fly4cast was not fetching weather data. It was saying what the wind measured at ground level will be at 100 metres — and not collapsing that answer into a single percentage. - 2026-07-23 — [From a 77-page PDF to 68 products](https://emreyakut.com/blog/en/from-a-catalogue-pdf-to-68-products/) — Essen Tekstil — A home-textile manufacturer’s only decent digital asset was a 49 MB catalogue PDF. I extracted the product tree out of it — and walked into two traps. - 2026-07-12 — [How I actually work with AI — a terminal, not a chat box](https://emreyakut.com/blog/en/how-i-actually-work-with-ai/) — I shipped several times more this year than in previous ones. Not because I work more. I moved AI out of a chat window and into the projects, the file system and the terminal. - 2026-07-08 — [Let them fill in the decision, not the form](https://emreyakut.com/blog/en/let-them-fill-in-the-decision-not-the-form/) — Termolab — Writing the request form for an inspection laboratory, I realised something: people do not know the answer to “which inspection type do you want?”. They do not need to — the system can work it out. - 2026-07-06 — [Rakı has no mathematics, but it has an order](https://emreyakut.com/blog/en/raki-has-an-order/) — One measure of rakı, two of water, ice last. That is not tradition, it is physics — and it is exactly the class of bug I had been chasing all week. - 2026-07-03 — [Twenty-nine commits in a day: building a dealership platform from the bottom](https://emreyakut.com/blog/en/nine-layers-in-one-day/) — Balaban Oto — AOP — I built a car dealership’s operating system from scratch. I started at the schema, not the screen, and finished nine layers in one day — each one working on its own. Not out of haste; the opposite. - 2026-07-02 — [I taught my site to think](https://emreyakut.com/blog/en/i-taught-my-site-to-think/) — emreyakut.com — I put a “thought simulator” in the middle of my own site. You drop in a concept — “Billing” — and the system decomposes it into what it needs. Eight steps later you arrive at “sleep”. - 2026-06-24 — [Watching how the system is actually used](https://emreyakut.com/blog/en/watching-how-the-system-is-actually-used/) — Brunata ZENNER CRM — Thirty people work inside a CRM. Which screens are really used, where does someone get stuck, which three steps repeat every single day? Nobody knew. I built a panel — then I gave that data to an AI. - 2026-06-18 — [I wrote an admin panel without a framework](https://emreyakut.com/blog/en/i-wrote-a-console-because-a-panel-was-needed/) — BZT Service Console — A server was needed to issue licences to field terminals. Instead of installing a framework and pulling 40 MB of dependencies I wrote six classes. Under 900 lines, and the same code still runs. - 2026-06-11 — [Moving two thousand invoices into the background](https://emreyakut.com/blog/en/moving-two-thousand-invoices-into-the-background/) — Brunata ZENNER CRM — At period close somebody has to press “render all invoices to PDF”. The server carries it for four minutes, then the browser gives up and nobody knows what happened. First I measured where it was actually stuck. - 2026-06-02 — [Moving a ten-year-old system without forking it](https://emreyakut.com/blog/en/moving-a-ten-year-old-system-without-forking-it/) — Brunata ZENNER CRM — The CRM ran on PHP 5.6 and had to reach 8.3. The classic route is to branch a copy and modernise that — which had already been tried here and died at 85%. This time I did not make a copy. - 2026-05-21 — [“A DN20 clamp-on ultrasonic water meter” — searching a catalogue in a sentence](https://emreyakut.com/blog/en/searching-a-catalogue-in-plain-language/) — Brunata ZENNER CRM — A salesperson describes the product but does not know the code. The catalogue has 4,000 items. I closed the gap with AI — without ever letting the AI invent a product. - 2026-05-09 — [How a heating bill is actually calculated](https://emreyakut.com/blog/en/how-a-heating-bill-is-actually-calculated/) — Brunata ZENNER CRM — Everyone in the building has their own meter read. Then they see the bill and say “I did not burn that much”. Both are true — because half the bill comes from your meter and half from the building’s total. - 2026-04-22 — [I rewrote the portal that shows the bill](https://emreyakut.com/blog/en/rewriting-the-resident-portal/) — app.brunatazenner.tr — Someone living in a flat wants to see their heating bill. Sounds simple. But the bill lives in another system, the meter in another table, and a tenant who moved out must have their history frozen. That is why I rewrote it from scratch. - 2026-03-14 — [I built a game platform for my son](https://emreyakut.com/blog/en/a-game-platform-for-my-son/) — arminefe.com — I started it as a surprise for my nine-year-old. Backgammon, card games, hangman and a robot-combat RPG. All multiplayer, all on a real server — and the games were not the hard part. - 2026-02-18 — [Three ways to read a heat meter](https://emreyakut.com/blog/en/reading-a-meter-optical-head-and-radio/) — ZENNER Meter Reader — The meter on the radiator knows how much heat a flat used. There are three ways to get that number out of it: by eye, with an optical head, and over radio. I wrote all three — and each is a different world. ## Topics ### Simulation - [Why almost everything I build has “sim” in the name](https://emreyakut.com/blog/en/my-habit-of-simulating-everything/) - [What can you cook with what you have — and a site that publishes itself](https://emreyakut.com/blog/en/a-site-that-publishes-itself/) - [I wrote a trading engine that decides on its own](https://emreyakut.com/blog/en/an-engine-that-trades-on-its-own/) - [The root of determinism: the language’s own randomness](https://emreyakut.com/blog/en/the-root-of-determinism/) - [render(t): no accumulated state, so it can rewind](https://emreyakut.com/blog/en/render-t-a-pure-function-of-time/) - [“Can I fly?” is a decision, not a score](https://emreyakut.com/blog/en/can-i-fly-is-not-a-score/) - [I taught my site to think](https://emreyakut.com/blog/en/i-taught-my-site-to-think/) ### Systems - [Why almost everything I build has “sim” in the name](https://emreyakut.com/blog/en/my-habit-of-simulating-everything/) - [If it cannot be measured, it says “not verified”](https://emreyakut.com/blog/en/if-it-cannot-be-measured-it-says-not-verified/) - [What can you cook with what you have — and a site that publishes itself](https://emreyakut.com/blog/en/a-site-that-publishes-itself/) - [“Will this fit instead of that one?” — a compatibility engine](https://emreyakut.com/blog/en/will-this-part-fit-instead-of-that-one/) - [Don’t walk the disk, read its ledger — and two tools that tidy my desk](https://emreyakut.com/blog/en/dont-walk-the-disk-read-its-ledger/) - [Who spoke, where from, what now — three separate questions](https://emreyakut.com/blog/en/who-spoke-where-from-what-now/) - [I built my own server and put the house behind a tunnel](https://emreyakut.com/blog/en/my-own-server-and-tunnel/) - [I wrote my own captcha — five layers, four of them invisible](https://emreyakut.com/blog/en/i-wrote-my-own-captcha/) - [I caught a hallucination live, and it became a product rule](https://emreyakut.com/blog/en/catching-a-hallucination-live/) - [Ninety pages, three languages, one source](https://emreyakut.com/blog/en/ninety-pages-three-languages-one-source/) - [How I actually work with AI — a terminal, not a chat box](https://emreyakut.com/blog/en/how-i-actually-work-with-ai/) - [Let them fill in the decision, not the form](https://emreyakut.com/blog/en/let-them-fill-in-the-decision-not-the-form/) - [Twenty-nine commits in a day: building a dealership platform from the bottom](https://emreyakut.com/blog/en/nine-layers-in-one-day/) - [I taught my site to think](https://emreyakut.com/blog/en/i-taught-my-site-to-think/) - [Watching how the system is actually used](https://emreyakut.com/blog/en/watching-how-the-system-is-actually-used/) - [I wrote an admin panel without a framework](https://emreyakut.com/blog/en/i-wrote-a-console-because-a-panel-was-needed/) - [Moving two thousand invoices into the background](https://emreyakut.com/blog/en/moving-two-thousand-invoices-into-the-background/) - [Moving a ten-year-old system without forking it](https://emreyakut.com/blog/en/moving-a-ten-year-old-system-without-forking-it/) - [“A DN20 clamp-on ultrasonic water meter” — searching a catalogue in a sentence](https://emreyakut.com/blog/en/searching-a-catalogue-in-plain-language/) - [How a heating bill is actually calculated](https://emreyakut.com/blog/en/how-a-heating-bill-is-actually-calculated/) - [I rewrote the portal that shows the bill](https://emreyakut.com/blog/en/rewriting-the-resident-portal/) - [I built a game platform for my son](https://emreyakut.com/blog/en/a-game-platform-for-my-son/) ### Metering - [If it cannot be measured, it says “not verified”](https://emreyakut.com/blog/en/if-it-cannot-be-measured-it-says-not-verified/) - [I wrote a trading engine that decides on its own](https://emreyakut.com/blog/en/an-engine-that-trades-on-its-own/) - [The spreadsheet was right, the system was wrong](https://emreyakut.com/blog/en/the-spreadsheet-was-right-the-system-was-wrong/) - [My instrument mistook silence for reverb](https://emreyakut.com/blog/en/my-instrument-mistook-silence-for-reverb/) - [“Can I fly?” is a decision, not a score](https://emreyakut.com/blog/en/can-i-fly-is-not-a-score/) - [From a 77-page PDF to 68 products](https://emreyakut.com/blog/en/from-a-catalogue-pdf-to-68-products/) - [Moving two thousand invoices into the background](https://emreyakut.com/blog/en/moving-two-thousand-invoices-into-the-background/) - [How a heating bill is actually calculated](https://emreyakut.com/blog/en/how-a-heating-bill-is-actually-calculated/) - [Three ways to read a heat meter](https://emreyakut.com/blog/en/reading-a-meter-optical-head-and-radio/) ### Debugging - [What can you cook with what you have — and a site that publishes itself](https://emreyakut.com/blog/en/a-site-that-publishes-itself/) - [“The site won’t open” and “the payment isn’t showing”: two root causes](https://emreyakut.com/blog/en/the-site-wont-open-two-root-causes/) - [The watchman said “all clear”, because it was counting the wrong stage](https://emreyakut.com/blog/en/the-watchman-was-counting-the-wrong-stage/) - [Settings that are silently ignored, and 8.9 seconds becoming 1.8](https://emreyakut.com/blog/en/flags-that-are-silently-ignored/) - [The root of determinism: the language’s own randomness](https://emreyakut.com/blog/en/the-root-of-determinism/) - [The spreadsheet was right, the system was wrong](https://emreyakut.com/blog/en/the-spreadsheet-was-right-the-system-was-wrong/) - [I have no Mac, and an iOS app](https://emreyakut.com/blog/en/i-have-no-mac-and-an-ios-app/) - [My instrument mistook silence for reverb](https://emreyakut.com/blog/en/my-instrument-mistook-silence-for-reverb/) - [Send fewer commands to make the lights faster](https://emreyakut.com/blog/en/send-fewer-commands-to-make-lights-faster/) - [Scanning my home network: six minutes on the wrong layer](https://emreyakut.com/blog/en/pick-the-right-layer-arp/) - [Sixteen cells vanished: the generic class name trap](https://emreyakut.com/blog/en/sixteen-cells-vanished/) - [Press the button before you write the proposal](https://emreyakut.com/blog/en/press-the-button-before-you-write-the-proposal/) - [Moving a ten-year-old system without forking it](https://emreyakut.com/blog/en/moving-a-ten-year-old-system-without-forking-it/) ### Portals - [“Will this fit instead of that one?” — a compatibility engine](https://emreyakut.com/blog/en/will-this-part-fit-instead-of-that-one/) - [I rewrote the portal that shows the bill](https://emreyakut.com/blog/en/rewriting-the-resident-portal/) ### Life - [Things that get solved by a fire](https://emreyakut.com/blog/en/things-that-get-solved-by-a-fire/) - [Rakı has no mathematics, but it has an order](https://emreyakut.com/blog/en/raki-has-an-order/) - [I built a game platform for my son](https://emreyakut.com/blog/en/a-game-platform-for-my-son/) ### Servers - [“The site won’t open” and “the payment isn’t showing”: two root causes](https://emreyakut.com/blog/en/the-site-wont-open-two-root-causes/) - [The watchman said “all clear”, because it was counting the wrong stage](https://emreyakut.com/blog/en/the-watchman-was-counting-the-wrong-stage/) - [I built my own server and put the house behind a tunnel](https://emreyakut.com/blog/en/my-own-server-and-tunnel/) ### Protocol - [Don’t walk the disk, read its ledger — and two tools that tidy my desk](https://emreyakut.com/blog/en/dont-walk-the-disk-read-its-ledger/) - [The watchman said “all clear”, because it was counting the wrong stage](https://emreyakut.com/blog/en/the-watchman-was-counting-the-wrong-stage/) - [Nobody answers anybody on a DMX cable](https://emreyakut.com/blog/en/nobody-answers-anybody-on-a-dmx-cable/) - [Send fewer commands to make the lights faster](https://emreyakut.com/blog/en/send-fewer-commands-to-make-lights-faster/) - [Scanning my home network: six minutes on the wrong layer](https://emreyakut.com/blog/en/pick-the-right-layer-arp/) - [Decoding a flight log: same extension, two different worlds](https://emreyakut.com/blog/en/decoding-a-flight-log/) - [Three ways to read a heat meter](https://emreyakut.com/blog/en/reading-a-meter-optical-head-and-radio/) ### Sound & light - [Who spoke, where from, what now — three separate questions](https://emreyakut.com/blog/en/who-spoke-where-from-what-now/) - [My instrument mistook silence for reverb](https://emreyakut.com/blog/en/my-instrument-mistook-silence-for-reverb/) - [render(t): no accumulated state, so it can rewind](https://emreyakut.com/blog/en/render-t-a-pure-function-of-time/) - [Nobody answers anybody on a DMX cable](https://emreyakut.com/blog/en/nobody-answers-anybody-on-a-dmx-cable/) - [Send fewer commands to make the lights faster](https://emreyakut.com/blog/en/send-fewer-commands-to-make-lights-faster/) ### AI & Claude - [Who spoke, where from, what now — three separate questions](https://emreyakut.com/blog/en/who-spoke-where-from-what-now/) - [Settings that are silently ignored, and 8.9 seconds becoming 1.8](https://emreyakut.com/blog/en/flags-that-are-silently-ignored/) - [I caught a hallucination live, and it became a product rule](https://emreyakut.com/blog/en/catching-a-hallucination-live/) - [How I actually work with AI — a terminal, not a chat box](https://emreyakut.com/blog/en/how-i-actually-work-with-ai/) - [Watching how the system is actually used](https://emreyakut.com/blog/en/watching-how-the-system-is-actually-used/) - [“A DN20 clamp-on ultrasonic water meter” — searching a catalogue in a sentence](https://emreyakut.com/blog/en/searching-a-catalogue-in-plain-language/) ### Mobile - [I have no Mac, and an iOS app](https://emreyakut.com/blog/en/i-have-no-mac-and-an-ios-app/) - [Decoding a flight log: same extension, two different worlds](https://emreyakut.com/blog/en/decoding-a-flight-log/) - [“Can I fly?” is a decision, not a score](https://emreyakut.com/blog/en/can-i-fly-is-not-a-score/) ### Field - [Press the button before you write the proposal](https://emreyakut.com/blog/en/press-the-button-before-you-write-the-proposal/) - [From a 77-page PDF to 68 products](https://emreyakut.com/blog/en/from-a-catalogue-pdf-to-68-products/) - [Let them fill in the decision, not the form](https://emreyakut.com/blog/en/let-them-fill-in-the-decision-not-the-form/) - [I wrote an admin panel without a framework](https://emreyakut.com/blog/en/i-wrote-a-console-because-a-panel-was-needed/) ## Other resources - [Work](https://emreyakut.com/blog/en/work/) - [Main site](https://emreyakut.com/) - [RSS](https://emreyakut.com/blog/en/feed.xml) - [Sitemap](https://emreyakut.com/blog/sitemap.xml)