Selected
Encrypted ICMP covert channel
2025
A client/server tool in C that transfers files hidden inside ICMP and ICMPv6 Echo packets. Files are AES-encrypted over raw sockets and reassembled on the receiving end using a custom framing protocol for fragmentation and integrity.
C · OpenSSL · raw sockets · Linux
Secured SOHO network
2025
A complete small-office network on a single VPS: router with NAT, Traefik reverse proxy with TLS, AdGuard DNS, Mailu mail suite, WireGuard VPN, and Authentik for centralised SSO. Hardened with UFW, Fail2ban, SSH key-only auth, and per-service Docker network isolation.
Docker · Traefik · WireGuard · Authentik · Mailu
Interpreter
2025
Two-stage implementation of a small object-oriented language. Python front-end parses the source using Lark and emits an XML AST after static semantic checks. A PHP back-end interpreter walks the tree with classes, methods, blocks, and full message-passing semantics.
Python · Lark · PHP · XML
Winery management system
2025
Full-stack web application for a winery — vineyards, grape varieties, harvests, production batches, purchases, and events with reservations. Role-based access control via Laravel Policies, shipped as a reproducible Docker Compose stack.
Laravel · PHP · MySQL · Tailwind · Docker
ESP32 heart-rate monitor
2025
Embedded heart-rate monitor using photoplethysmography on an ESP32. ADC sampling runs on a hardware timer, the signal is Kalman-filtered for noise reduction, and a threshold-crossing algorithm detects beats. FreeRTOS semaphores coordinate the ISR with the processing thread.
C · ESP-IDF · FreeRTOS · Kalman filter
Other coursework
Advance Wars clone
2026
Turn-based strategy game in JavaFX with grid combat, terrain costs, economy, two AI opponents, and a step-through replay mode. MVC + Command + Observer patterns, Dijkstra pathfinding, 93 JUnit tests. Team project — team lead.
Java 21 · JavaFX · Maven · JUnit 5
L4 port scanner
2025
TCP and UDP port scanner in C supporting both IPv4 and IPv6, written on raw sockets and benchmarked against Nmap.
C · raw sockets · IPv4/IPv6
IPK25-CHAT client
2025
Chat client in C++ implementing the IPK25-CHAT application protocol over both TCP and UDP, with authentication and channel semantics.
C++ · TCP · UDP
Library management database
2025
Oracle SQL project across four parts: ER model, relational schema, DML and queries, then triggers, stored procedures, a materialized view, and analytical queries. Team of two.
Oracle SQL · PL/SQL
Ski resort simulation
2025
Discrete-event simulation of a ski resort in C++/SIMLIB, analysing lift capacity, queue lengths, and throughput under varying skier arrival rates. Team of two.
C++ · SIMLIB
8-bit CPU in VHDL
2024
Synthesisable 8-bit CPU that executes a BrainFuck-like instruction set, simulated in ModelSim. Paired with a second INP assignment implementing the Vigenère cipher in MIPS64 assembly.
VHDL · MIPS64 asm · ModelSim
Signal processing in Python
2024
DSP assignment in a Jupyter notebook covering spectral analysis, digital filtering, and frequency-domain manipulation of audio signals.
Python · NumPy · Jupyter
Data structures in C
2024
Two-part algorithms course implementing linked lists, stacks, queues, recursive and iterative binary tree traversals, and hash tables from scratch.
C · data structures
Hash table library & Unix tools
2024
Generic C hash-table library with string interning, used to build clones of tail and wordcount. A second IJC assignment implements the Sieve of Eratosthenes on a custom bitset, plus a C-comment-stripping preprocessor.
C · Make
OS processes & shell scripting
2024
Operating systems coursework split in two: a Bash project for log processing and filesystem traversal, and a C program coordinating multiple processes through POSIX shared memory and semaphores.
C · Bash · POSIX IPC