I build systems where a live signal has to become a decision: a microphone, an electrode, a camera frame, an accelerometer. The interesting part is never the sensor — it is what you are allowed to conclude from it, and how you behave when the answer is I don't know yet.
That question shows up everywhere in my work. An ECG monitor that prints -- instead of
a number when no electrode is attached. A rover that reports its position as a disc with
a growing radius, because it has no wheel encoders and says so. A dashboard that draws
simulated data in a different colour from measured data, so nobody can confuse the two.
Two rules I hold to across every repository here:
- A clean clone runs. No hardware, no trained model, no API key, no dataset.
- What cannot be measured is labelled, not faked. Simulated values are marked as simulated, in the UI and in the code.
| What it does | Run it | |
|---|---|---|
| 🎵 Aurora Signals · Graphics |
Real-time generative art. Live audio pitch, timbre and loudness drive a volumetric raymarching GLSL shader — every session is a one-time, non-repeatable artwork. | python main.pyno mic → simulation |
| 🧠 LetheFS Systems · Cognition |
An autonomous forgetting file system. Recall scores decay along the Ebbinghaus curve into a reversible quarantine you resolve from a live dashboard. Nothing is ever deleted silently. | python run.pysandboxed by default |
| ❤️ Cardia IoT · Signal Processing |
Single-lead ECG monitor. An AD8232 and an Arduino detect R-peaks on-device — adaptive threshold, refractory window, interval gating — and stream heart rate to a dependency-free dashboard. | cd web && python3 -m http.serverfalls back to a synthetic ECG |
| 🎯 BOZGUN Computer Vision · Robotics |
Colour-tracking turret. OpenCV maps a target's pixel position to pan/tilt servo angles over serial and marks it with a laser. Simulated hit, no projectile. | python bozgun.py --demono webcam, no Arduino |
| 🌸 Orchidia AI · Web |
Orchid identification and care assistant. A classifier reads the species from a photo, then checks environmental readings against that species' ideal ranges. | python app.pydemo backend, no model needed |
| 🧬 Helixir Cryptography · Desktop |
File encryption with a DNA representation layer. AES-256-GCM with scrypt; the ciphertext is rendered as an A/C/G/T sequence and exported to FASTA. The DNA layer is representation, not the cipher. | python run.pyPyQt6 desktop app |
Every command above is the whole setup. That is deliberate: a reviewer with five minutes should see the pipeline run, not fight an install.
- Test the decision, not the device. The logic that decides is this a heartbeat, is this a survivor, has this file been forgotten is separated from the hardware that feeds it — so it is testable on a laptop with no board attached.
- Document what exists. No roadmap sections, no planned features, no claims I could not defend in a technical interview.
- State the uncertainty. An estimate that reports its own error is worth more than a confident number that quietly lies.
Aksaray University, Software Engineering · Source code available on request for private work