Systems room

Lucid Lattice

3D Game — tap cubes, flip neighbours, restore the signal.

Decision journal

At this new threshold where AI takes the code, the real value is setting the right boundaries and architecture.

  • Automating everything is not the aim. What matters is handing repetitive, error-prone work to the machine, and keeping the exceptions that still need a human touch.
  • Machines favour repetition; people carry the exception. Sound architecture draws that line at the outset, without confusing the two.

Log · 10

· Changelog

We fed forty real WhatsApp payment texts to two readers — one simple, one smart

A clinic coordinator pastes a WhatsApp line: “Ahmet paid 500 euros for the implant, send receipt to Ayşe.” Verimaya has to pull out who paid, how much, and which currency — without someone retyping it.

We ran forty messages like that from real use (not toy examples). A simple pattern matcher got the currency right on about six out of ten. It guessed the people involved on roughly one out of ten.

A smarter reader did better: about eight out of ten on currency, six out of ten on people. But on nine messages it refused to draft anything at all. The simple matcher always produced something — sometimes wrong.

So both stay: smart first, simple as backup when smart gives up. We also learned why “match the name in the message to someone in the list” fails when the list is random codes and the message only shows “Ah***”. Next step: numbered person tags both sides can read.

Kırk gerçek WhatsApp ödeme mesajını iki okuyucuya verdik — biri basit, biri akıllı

Koordinatör WhatsApp’tan bir satır yapıştırıyor: “Ahmet implant için 500 euro ödedi, dekontu Ayşe’ye at.” Verimaya’nın kim ödedi, ne kadar, hangi para birimi — bunları birinin yeniden yazmadan çıkarması lazım.

Böyle kırk mesajı gerçek kullanımdan aldık (uydurma örnek değil). Basit kalıp okuyucu para birimini yaklaşık onun altısında doğru buldu. Mesajdaki kişileri ise neredeyse onda birinde.

Akıllı okuyucu daha iyi: para biriminde yaklaşık sekiz on, kişilerde altı on. Ama dokuz mesajda hiç taslak üretmedi — “okuyamadım” dedi. Basit okuyucu her seferinde bir şey üretti; bazen yanlış.

İkisi de kalıyor: önce akıllı, akıllı pes ederse basit yedek. Bir de öğrendik: mesajda “Ah***” yazıyor, listede rastgele kodlar var — eşleştirmek mümkün değil. Sıradaki adım: her iki tarafta da okunabilir numaralı kişi etiketleri.

· Changelog

A small lights-out puzzle landed on the personal site — tap a cube, flip neighbours, fix the grid

4×4 grid of cubes. Tap one and its cross flips on or off. Goal: all lights on. Every board we generate can be solved; mobile works.

Linked from the Systems room on this site. Not a portfolio flex — a tiny rule you can feel with your thumbs when you need a different kind of thinking.

Kişisel sitede küçük bir ışık bulmacası — küpe dokun, komşuları çevir, ızgarayı düzelt

4×4 küp ızgarası. Birine dokunursan haçındakiler yanar veya söner. Hedef: tüm ışıklar açık. Ürettiğimiz her tahta çözülebilir; mobilde de oynanır.

Bu sitedeki Sistem odasından bağlı. Portre flex değil — başka tür düşünmek istediğinde parmakla oynanan küçük bir kural.

· Decision

Automate the boring repeats — keep the cases where a human still has to judge

The goal is not to automate everything. Paste the same payment message fifty times — a machine should read amount and names. A patient calls angry about a borderline case — a person should decide.

Machines love sameness; people carry the odd case. Good software draws that line on purpose instead of smearing both together.

When you decide early which steps are mechanical and which need judgment, both sides stay sharp: the bot does not pretend to care, the team does not drown in copy-paste.

Tekrar eden işi makineye ver — insanın hâlâ karar vermesi gereken yerleri ayır

Her şeyi otomatize etmek hedef değil. Aynı ödeme mesajını elli kez yapıştır — tutar ve isimleri makine okusun. Hasta sınırda bir durum için kızgın arıyor — kararı insan versin.

Makine aynılığı sever; insan tuhaf vakayı taşır. İyi yazılım o çizgiyi bilerek çizer, ikisini birbirine bulandırmaz.

Hangi adım mekanik, hangisi yargı gerektirir erken seçilirse iki taraf da keskin kalır: bot sahte empati yapmaz, ekip kopyala-yapıştırda boğulmaz.

· Decision

Dikte still runs on your machine by default — cloud is the second path, not the replacement

Hold a shortcut, speak, release — text lands in the window you were typing in. That shipped as a fully local loop: your voice never had to leave the machine you already trust.

We then added a second option: words appear while you are still talking, not only after you stop. The microphone and cleanup services run on a small server we operate; your laptop never stores those provider keys.

Default stays local. Cloud is a setting for people who want speed and are fine with audio going through our server. Same shortcut, same paste — two trust levels, one app. No accounts or billing yet; built so phones and other clients can use the same server later without changing that rule.

Dikte varsayılan olarak hâlâ kendi bilgisayarında — bulut ikinci yol, yerine geçen değil

Kısayola bas, konuş, bırak — metin yazdığın pencereye düşer. Bu tamamen yerel döngü olarak çıktı: sesin, güvendiğin makineden çıkmak zorunda değildi.

Sonra ikinci seçenek ekledik: konuşurken kelimeler gelmeye başlıyor, sadece sustuktan sonra değil. Mikrofon ve temizleme hizmetleri bizim küçük sunucuda çalışıyor; dizüstünde o firmaların anahtarları durmuyor.

Varsayılan yerel kalıyor. Bulut, hız isteyen ve sesin sunucudan geçmesine razı olanlar için bir ayar. Aynı kısayol, aynı yapıştırma — iki güven seviyesi, tek uygulama. Henüz hesap ve ödeme yok; telefon ve diğer istemciler aynı sunucuyu kullanacak şekilde kuruldu, kural değişmedi.

· Changelog

Hold a key, speak, release — Dikte pastes words into the window you were typing in

You are in an email. Hold a shortcut, talk, let go. Dikte records on your machine, turns speech to text locally, trims false starts and “um”, copies to clipboard, and pastes into that same window. No upload for the default path.

First build targeted Linux desktop; Mac package landed the same day. The point: write at talking speed on hardware you already trust, not another cloud mic app.

Kısayola bas, konuş, bırak — Dikte yazdığın pencereye yapıştırıyor

E-postadayız. Kısayola bas, konuş, bırak. Dikte makinede kaydeder, konuşmayı yerelde yazıya çevirir, yanlış başlangıç ve “ee”leri temizler, panoya alır, aynı pencereye yapıştırır. Varsayılan yolda yükleme yok.

İlk sürüm Linux masaüstü; Mac paketi aynı gün geldi. Amaç: güvendiğin cihazda konuşma hızında yazmak — bir bulut mikrofon uygulaması daha değil.

· Decision

TickPort looks finished — so we paused the big budget until the boring checklist is done

Everyone who reviewed TickPort said the same thing: the screens look done, but that is not the same as safe to run for real traders. Passwords and API keys still scattered, nightly jobs not proven, nobody has restored a backup on purpose, errors vanish unless you know where to look.

So the twelve-month budget and hiring stay closed until that checklist is green and a small trial group shows at least one person upgrading from free to paid. Finish the dull work before scaling the pitch deck.

TickPort bitmiş gibi görünüyor — büyük bütçeyi sıkıcı liste bitene kadar kapattık

TickPort’u inceleyen herkes aynı şeyi söyledi: ekranlar bitmiş gibi, ama gerçek trader’lara güvenle açmak başka mesele. Şifreler ve API anahtarları hâlâ dağınık, gece çalışması gereken işler denenmemiş, yedeği kimse bilerek geri yüklememiş, hata olunca bakılmazsa kayboluyor.

On iki aylık bütçe ve işe alım o liste yeşile dönene ve küçük bir deneme grubundan en az bir kişi ücretsizden ücretliye geçene kadar kapalı. Sunum dosyasını büyütmeden önce sıkıcı işi bitir.

· Decision

RoasMate and Verimaya became one product — not two brands to feed

We had two names: RoasMate (ads and compliance tools) and Verimaya (clinic operations). Two homepages, two storylines, two places for bugs to hide.

RoasMate was strong on ad maths and rule checks but weak on patient records and cash. Verimaya had the ops panel but needed honest “did this ad actually pay?” numbers. Same customers, split across two tabs in their head.

Decision: fold the ad tools into Verimaya. One product, one login, one roadmap. Stop paying twice for marketing and engineering attention.

RoasMate ve Verimaya tek ürün oldu — beslenecek iki marka değil

İki isim vardı: RoasMate (reklam ve uyumluluk araçları) ve Verimaya (klinik operasyonu). İki ana sayfa, iki hikâye, hataların saklanabileceği iki yer.

RoasMate reklam hesabında iyiydi ama hasta kaydı ve kasada zayıftı. Verimaya’nın operasyon paneli vardı ama “bu reklam gerçekten para getirdi mi?” sorusuna ihtiyaç vardı. Aynı müşteri, kafasında iki sekme.

Karar: reklam araçlarını Verimaya’ya göm. Tek ürün, tek giriş, tek yol haritası. Pazarlama ve mühendislik dikkatini iki kez ödemeyi kes.

· Changelog

Before Verimaya could host many clinics, each clinic’s data had to stay in its own box

Verimaya is one product sold to many health-tourism offices. Clinic A must never see Clinic B’s patients or payments — not “we hope the code remembers”, but enforced at the database.

This release put that wall in place: separate organisations, login that knows which office you belong to, and database rules that reject cross-clinic reads. Deploy and backup notes sit next to the code so it is not folklore.

Without that base, “multi-tenant” is a label on a shared spreadsheet. With it, every feature we add later inherits the same fence.

Verimaya birçok kliniğe hizmet vermeden önce her kliniğin verisi kendi kutusunda kalmalıydı

Verimaya tek ürün, birçok sağlık turizmi ofisi. Klinik A, Klinik B’nin hastasını ve ödemesini asla görmemeli — “kod umarım unutmaz” değil, veritabanında zorunlu.

Bu sürüm o duvarı kurdu: ayrı organizasyonlar, hangi ofise ait olduğunu bilen giriş, klinikler arası okumayı reddeden kurallar. Yayın ve yedek notları kodun yanında — sözlü gelenek değil.

O taban olmadan “çok kiracılı” ortak bir tabloya yapıştırılmış etiket. Onunla sonraki her özellik aynı çiti miras alır.

· Changelog

TickPort’s whole front end now lives in one codebase, not two

TickPort used to split the trader app across two frameworks. We moved the feed, portfolio, scanner, login, and the rest into a single SvelteKit app. Shared trading logic stayed in one core library so numbers do not diverge.

www.tickport.com now ships from that one tree. Not a rewrite for sport — one place to fix bugs, one deploy, one version traders actually see.

TickPort’un tüm arayüzü artık tek kodda — ikisi değil

TickPort trader uygulamasını iki framework arasında bölüyordu. Feed, portföy, tarayıcı, giriş ve geri kalanını tek SvelteKit uygulamasına taşıdık. Ortak işlem mantığı tek çekirdek kütüphanede — rakamlar ayrışmıyor.

www.tickport.com artık o tek ağaçtan çıkıyor. Spor için yeniden yazım değil — tek yerde hata düzelt, tek deploy, trader’ın gördüğü tek sürüm.

· Decision

Each client site keeps its own words — the shared design lives in one package

We run many client sites from one repo. The rule: a site holds that clinic’s text and photos. Buttons, colours, and layout live in a shared theme package every site imports.

Copy-paste a button into one site and you fork forever — twenty sites, twenty fixes. Import the package and one design change rolls out on the next build for everyone.

Themes are named on a simple scale (epigram through epic) so the folder tree reminds you: content here, chrome there.

Her müşteri sitesi kendi yazısını taşır — ortak tasarım tek pakette

Bir repodan birçok müşteri sitesi çıkıyor. Kural: sitede o kliniğin metinleri ve fotoğrafları. Buton, renk ve yerleşim her siteye import edilen ortak tema paketinde.

Bir butonu siteye kopyalarsan sonsuza fork — yirmi site, yirmi düzeltme. Paketi import edersen tasarım değişince bir sonraki build’de herkes alır.

Tema isimleri basit bir ölçekte (epigram’dan epic’e) — klasör ağacı hatırlatır: içerik burada, görünüm orada.

© 2026 Atalay Yörükoğlu. All rights reserved. A brand of Albion Signature Group Limited