Akın Aydın

Software Engineer

This is the technical side of akinaydin.com: how my projects are built, with diagrams and code from the repos.

  • Co-founder and technical lead at FitEscala
  • MSc Artificial Intelligence (Machine Learning), Liverpool John Moores University. Taught-module average 78.8%; result pending.
  • Liverpool, United Kingdom

Architecture diagrams

Architecture console

No diagram yet

Architecture console, idle.

Ready. Type `help`, or tap a command.

Tap a command, or type one. Try “ls” for every diagram, or “source” to see the console's own code.

Project write-ups

Six projects in depth. Each one covers the problem, how it is built, the decisions that mattered and code from the repo.

A neural net in your browser

A small neural network, written from scratch in TypeScript with no machine learning library. It learns to separate two interleaving half-moons, using only your browser's spare time. Press Grad check to compare its hand-written gradients with a numerical estimate.

Neural net, 1218 parameters

Layers 2-32-32-2 · tanh and softmax · SGD with momentum

Step
0
Loss
n/a
Train acc
0.0%
Params
1218
Budget
Idle frames only

Training idle at step 0.

Smaller projects

Client sites, experiments and university work, a few sentences each.

Websites for clients

  • Anamaria Andrei

    Concept

    Four online shop concepts for a maker of hand-poured candles in Oxford, each a different direction. One has a 3D candle you can light.

    HTML · Three.js · GSAP · Lenis

  • Yağız Cem Yılmaz

    Live

    A multi-page portfolio for a music teacher, stage musician and choir leader in İzmir: a three-part scroll story, moving type and an optional WebGL scene, with all content in one checked profile file.

    Next.js 16 · React 19 · Motion · anime.js · React Three Fiber

    yagizcemyilmaz.com
  • Tiyatro Fısıltı

    Live

    A PHP site and admin panel for the theatre company at Kuluçka Kahve Sanat, a café and stage in İzmir: programme, plays, blog, team and gallery, with event data for search engines. The panel has session auth, CSRF protection, rate limiting and an image upload with a MIME allowlist. It deploys to shared hosting with no build step.

    PHP · SQLite or MySQL · JavaScript

    kuluckakahvesanat.com
  • CIBES Research Centre

    Live

    The research centre's public site, plus the conference ad campaigns on the Meta Marketing API that the first note below is about.

    React · Vite · Tailwind · Meta Marketing API

    cibesresearch.org
  • Phinova Clinics

    Demo delivered

    A demo that rebuilds a clinic's one-page site as a platform in nine languages: treatment and clinician pages, a guided care navigator with consent, ticket references and a WhatsApp handoff, plus hreflang, a sitemap and JSON-LD.

    Next.js · Tailwind · Resend

  • Ogün Aslan

    Built

    A site for a music producer, stage musician and teacher: production, stage and lessons pages, plus a Turkish blog with structured articles, built from the producer's CV and interviews.

    Next.js · TypeScript

  • Maske Sanat Tiyatro

    Built

    A site for a 50-seat independent theatre and café in Bornova. Every fact is traced to a source in a research file, so the programme can be checked again before publishing.

    Vite · HTML

  • Emir Özeren

    Offline

    A personal academic website for an associate professor, with a CV, publications and notes. It is offline now.

    Astro

Products and experiments

  • Anı Defteri

    Made for a real wedding

    A wedding guestbook web app. Guests scan a QR code and leave a note and up to three photos. The couple choose what goes on the shared wall and into a PDF book they can download.

    Next.js · Supabase · React PDF

  • Charisma AI

    Retired

    A full SaaS I ran live for a while as a side project: a selfie and a questionnaire go in, a charisma profile scored by Gemini comes out, with a coaching plan, daily check-ins, an AI coach to chat with, Stripe plans and reminder emails. I took it down on purpose; its billing and scoring patterns moved into later products.

    Next.js · Supabase · Gemini · Stripe · Resend

  • YouTube Automation

    Shelved

    One prompt in, a published video out: script, scene images, a voiceover with word-level timestamps, video, a Remotion render, SEO, thumbnail and upload. Each step writes its output to disk, so a failed run resumes from the step that failed. It worked; I shelved it because it took focus from the real products.

    TypeScript · Gemini · fal.ai · ElevenLabs · Remotion · YouTube API

  • Tatil Radar

    Built

    Works out what a night on the İzmir coast really costs (hotel, dinner, beach and going out) by area, and compares one hotel across 13 sales channels. Every hotel link is checked, and anything unchecked is labelled as such.

    Next.js · TypeScript

  • Hands-Free Chords

    Working prototype

    The webcam tracks both hands. Each hand gets a radial menu, root note on the left and chord type on the right, and a pinch plays the chord into a DAW over a virtual MIDI port. A web version is in progress.

    Python · MediaPipe · OpenCV · mido

  • MOKOKO

    Built

    A three-round Turkish word game in the browser, with the game logic and word rules covered by unit tests.

    React 19 · Vite · Vitest

  • LinkedIn content pipeline

    In use

    A brand file, a research list and a content queue. Claude drafts two versions, I approve one, and it is published through the official LinkedIn API. Nothing goes out without my approval.

    Claude · LinkedIn API · Markdown

  • HorrorGuess

    Built, not live

    A Turkish horror guessing game made with a friend in two days. The model writes a ghost story under must, can and cannot rules with a schema-enforced output, and the player guesses which of twenty creatures it describes.

    React · Vite · TypeScript · OpenAI

  • Chordinia

    Paused

    A chord and lyrics assistant with a real music theory core in pure Dart (chord parsing, key detection, one-tap transposition, live pitch analysis), plus song recognition and lyrics. Paused while Pistochia ships.

    Flutter · Supabase · ACRCloud · Genius API

  • Kuluçka Vampir Köylü

    Retired

    An app for Werewolf game nights at a café: players join with a QR code and get tap-to-reveal role cards, night actions resolve on the moderator's screen, and live votes sync to every phone. Who sees what is enforced in row-level security, not in the app. The café's nights ran fine on paper cards, so it was retired.

    Next.js · Supabase Realtime · Row-level security

  • aifindsit

    Workflow built

    An Instagram DM bot built as an n8n workflow: a message comes in through a webhook, the product is looked up, and the reply carries a link to it.

    n8n · Instagram Graph API

University and open source

  • FlexFlow

    Capstone, retired

    My graduation project at Yaşar University, in a team of three: a fitness app that matches gym-goers with personal trainers, with workout and diet plans, nearby gyms on a map, an AI coach and calorie tracking. I built the mobile app; a teammate built the NestJS backend.

    React Native · Expo · Firebase · NestJS · PostgreSQL

  • Smart Bed

    Prototype, demoed

    A hospital bed built in mixed teams of Yaşar University and Penn State Abington students in three days (March 2024). Bed sensors and an AI camera watch the patient, and when the patient starts to get up, a wall unit alerts the nurse's phone before a fall. Demoed to Bordatech and covered by the university's news site.

    M5Stack · MicroPython · AI camera

  • Airline ticketing with an AI assistant

    Coursework, built in a pair

    A ticketing API (flights, purchase, check-in, JWT auth) behind an Express gateway with rate limits per IP, plus an assistant that answers in plain language by calling the same public endpoints as every other client. The repos live under my partner's GitHub.

    .NET 8 · EF Core · Azure SQL · Express · OpenAI

  • Hotel booking microservices

    Coursework, built in a pair

    Seven services behind one gateway (admin, search, booking, comments, notifications and a language agent), each with the store that fits it: Postgres for bookings, MongoDB for reviews, Redis for the cache and a message queue for email.

    Node.js · Express · PostgreSQL · MongoDB · Redis · RabbitMQ · Docker Compose

  • MiroFish, a fork with additions

    Contribution

    Additions to MiroFish, an open-source multi-agent prediction engine: a pluggable memory backend (Zep Cloud, or Graphiti with Neo4j on your own server), a live cost tracker in dollars that stops a run at a set limit, a watchdog for its processes and an emergency stop button. The engine itself is upstream's work; only these additions are mine.

    Python · FastAPI · Graphiti · Neo4j · Vue

Skills, by how much I use them

Not stars, just how often each one comes up in real work, and where you can see it.

SkillHow oftenWhere it shows
JavaScript, TypeScript and Node.jsDailyMost of what is on this site runs on it. Malton London Press
Next.js, React and SupabaseDailyResearchGo, Ürünereklam, Malton London Press, several client sites and both of my own sites. ResearchGo
SQL, API design, CI/CD and GitDailyUsed in every project. Migrations, database checks and deploy pipelines come up in the write-ups. Malton London Press
Python: data pipelines, scraping and machine learningIn productionThe FitEscala lead engine, the ResearchGo parsing worker and my MSc dissertation (classical, ensemble and transformer models plus explainability metrics). MSc dissertation: explainable detection of AI-written phishing
React Native and ExpoIn productionFlexFlow, my capstone on Firebase, and Pistochia, offline-first on SQLite with Supabase edge functions. Pistochia
WebGL and Three.js (React Three Fiber)In productionThe 3D letter on akinaydin.com, with a WebGL context that rebuilds itself when the GPU drops it. akinaydin.com
Meta Marketing API and ad campaignsIn productionA conference campaign taken from spending blind to a measured cost per lead. The story is in the notes below.
Playwright and browser automationIn productionThe LinkedIn content pipeline.
AccessibilityIn productionThe website of an EU co-funded project for people who use sign language, built for a special-education association in 2024 and 2025.
C, C++, C#, Java, Flutter and IoTOccasionalReal use, not daily: the smart bed ran MicroPython on an M5Stack, Chordinia is Flutter and the airline system is .NET.

Engineering notes

Things that went wrong in real builds, and what I changed.

2026.06

The ad campaign that could not see its goal

A conference needed registrations, so the ad account ran a conversion campaign. But no registration event was connected to the pixel. Meta optimises toward whatever it can see, and it could see nothing, so one lookalike audience spent most of the budget in three countries that produced thousands of clicks and no registrations.

A cleverer audience would not have fixed that. Switching to Meta's own lead forms gave the algorithm a real event to aim for, and the same account started bringing in qualified academics at a cost per lead well below the usual rate for EU B2B. The measured numbers are in the final report; I keep them off this page on purpose.

Since then, before I tune a campaign, I check that it can actually see the result I want.

2026.07

The reflections that crashed the GPU

akinaydin.com has a reflective 3D letter that picks up light from its surroundings. The first version re-rendered the environment and ran it through PMREM generation on every frame, so the reflections were always current. It looked fine on a fast laptop. On ordinary hardware the tab lost its WebGL context in the middle of a scroll, and the letter went dark.

Now the environment is rendered once, when the page loads. Contexts still get lost on real devices, so the page rebuilds the canvas automatically when that happens, instead of leaving a dead frame behind.

2026.07

Why the neural net trains slowly on purpose

The neural net on this page could train much faster in a web worker with no throttle. It doesn't, on purpose: someone scrolling past should never see a dropped frame because a network is training in the background.

So the trainer takes a few gradient steps only when the browser has spare time, in idle callbacks and small slices of a frame, and none when it is busy. The loss curve takes longer to fall, and the page stays smooth.