Computer Engineering student at Northeastern University. I work on the layer where software meets hardware: static recompilation, GPU backends, FPGA cores, PCB design.
| School | Northeastern University, Boston, MA — B.S. Computer Engineering, expected Aug 2028 |
|---|---|
| Looking for | Co-op and internship positions in embedded systems, FPGA/digital design, systems programming, or graphics |
| contact@canersaka.dev | |
| Links | GitHub · LinkedIn |
This page lists my projects with short descriptions. Each one has a More info page with details and, where I have it, video or image proof that it works.
Every project has a More info page and, where it exists, a GitHub link. The clip beside each one is a short preview.
A from-scratch implementation of the PlayStation 3's Cell SPU in SystemVerilog: an in-order, dual-issue, 128-bit SIMD core with 16 execution units, a 256 KB local store and an AXI4 DMA engine, running real compiled SPU programs on a PYNQ-Z2 board.
Tools
SystemVerilog, Vivado, Verilator, cocotb, C++, AXI4, Zynq-7020
ps3recomp is an open-source toolkit that statically recompiles PlayStation 3 games into native PC executables. I am its third-largest contributor, with 84 merged pull requests covering the graphics backends, SPU translation, a differential fuzzing suite and runtime fixes.
Tools
C, C++, Direct3D 12, Metal, HLSL, MSL, PowerPC, SPU, Ghidra
A native Windows port of the PlayStation 3 game Yakuza: Dead Souls, made by statically recompiling the original executable into C and replacing the entire PS3 system with a runtime written from scratch. It is ps3recomp's first playable 3D title.
Tools
C, C++, PowerPC, SPU, Direct3D 12, HLSL, CMake
A reverse-engineering utility I wrote for the RPCS3 PlayStation 3 emulator. It dumps all allocated guest memory and every SPU local store into a sparse image whose file offsets match PS3 guest addresses, with a JSON manifest of regions. Merged into RPCS3 and shipped in a tagged release.
Tools
C++, Qt, PS3 internals
A custom handheld that combines real Nintendo DS Lite hardware (so it plays actual cartridges) with a Raspberry Pi computer mode, sharing one display, one input controller and one USB-C power system. A physical switch moves between the two.
Tools
KiCad, RP2040, SystemVerilog, Tang Nano 9K, USB-C PD, Raspberry Pi
A personal AI clone that runs entirely on my own computers. It imports my message history, fine-tunes a small language model on how I write, clones my voice from my own recordings, and keeps score of how close each version gets to the real me.
Tools
Python, TypeScript, PyTorch, Local LLMs, Voice cloning
My take on AutoHotkey for the Mac, written in Swift. It records everything you do (keystrokes, clicks, drags, scrolls with momentum, trackpad gestures) and replays it from a hotkey, plus text expansion, image search, conditions, and an importer for real AutoHotkey scripts.
Tools
Swift, AppKit, CGEvent, Accessibility API
Smaller projects done for classes at Northeastern. Each one says which course it was for.
EECE 2140 · Computing Fundamentals for Engineers
A chatbot that handles the common stuff with plain rules first and only falls back to a local language model when nothing matches. Rule-based intent detection, a class that keeps conversation state, a summary feature, and an optional Ollama-backed GGUF fallback, all behind a Gradio web chat.
Tools
Python, Gradio, Ollama, Llama 3.1 8B (GGUF)
EECE 2160 · Embedded Design: Enabling Robotics
Controlling an 18-servo hexapod from the ARM side of a DE1-SoC through memory-mapped I/O. The course supplied the servo driver and a forward tripod gait; I added walking backward, turning left and right in place, and a smoother stand-up sequence so the robot no longer lurches upright.
Tools
C++, DE1-SoC (Cyclone V SoC FPGA), memory-mapped I/O, 18 servos
EECE 2150 · Circuits and Signals
An analog front end that picks up a real electrocardiogram from electrodes on a person, cleans it up and digitises it. Instrumentation-style gain in stages, a 0.54 Hz high-pass to remove drift, a 159 Hz low-pass chosen on the scope so the QRS spike survives, then an NI USB-6001 into MATLAB.
Tools
Op-amps, RC filters, oscilloscope, NI USB-6001, MATLAB
| Programming | C, C++, Python, MATLAB, Git, Ghidra, CMake, Wireshark, Linux |
|---|---|
| Graphics / low level | Direct3D 12, Metal, HLSL, PowerPC, x86/ARM64, RISC-V |
| HDL / FPGA | Verilog, SystemVerilog, Vivado, Quartus, Gowin, Verilator, cocotb, Tang Nano, DE1-SoC, PYNQ-Z2 |
| Hardware / CAD | KiCad, LTSpice, SolidWorks, AutoCAD, RP2040, Arduino, Raspberry Pi, SMT soldering, oscilloscopes |
| Languages | English, Turkish (fluent) |
| contact@canersaka.dev | |
| GitHub | github.com/canersaka |
| linkedin.com/in/caner-saka |