Backend-focused software engineer interested in system internals, automation, and improving efficiency through tooling.
I like to understand how systems behave under real constraints and turn that understanding into clean, predictable implementations. My work is shaped by low-level programming, backend development, and automation, with a strong emphasis on correctness, reproducibility, and long-term maintainability.
I tend to approach problems end-to-end: from design and implementation to testing, tooling, and documentation.
Extended an open-source resume builder with ATS-aware tooling, including local PDF parsing, scoring, and format presets.
The project treats resumes as structured data rather than static documents, balancing visual clarity with the constraints of real-world applicant tracking systems.
A small Bash replica built around strict parsing, predictable process control, and automated parity checks to keep behaviour aligned with real shells under edge cases.
A raycasting engine written in C that renders textured scenes from declarative map files, with a strong focus on defensive parsing, predictable control flow, and tooling that makes correctness observable (custom testers, Valgrind-first workflows).
The 42 Common Core projects form a progressive systems curriculum focused on building reliable software under strict constraints.
They emphasize:
- low-level programming in C and C++
- explicit memory management and leak-free execution
- defensive parsing and error handling
- process control, concurrency, and IPC
- reproducible builds and evaluator-facing tooling
Most projects are developed with additional self-written testers and validation tooling beyond the required scope, using Valgrind, GDB, and automated test harnesses to make behavior observable and reproducible.
A complete list of projects, with scores, languages, and links:
- C, C++
- Linux / Unix environments
- Process control, signals, and sockets
- Concurrency (threads, mutexes)
- Memory management and debugging
- Python for backend services and tooling
- FastAPI for API design and data ingestion
- JSON-based data pipelines (IoT-style backends)
- Environment management with conda
- Code quality enforcement with ruff and black
- Makefiles and build automation
- Docker and Docker Compose
- Reproducible development environments
- CLI tooling
- CI-friendly workflows
- Debugging and profiling (Valgrind, GDB)
- pandas, scikit-learn
- Automated experiment pipelines
- Metrics-driven evaluation
- PostgreSQL
- MariaDB
- MySQL
- SQLite
Across projects, I consistently:
- write self-contained test suites to validate behavior and edge cases
- document assumptions and limitations explicitly
- favor readable, maintainable solutions over clever shortcuts
- treat tooling and testing as part of the implementation, not as an afterthought
I am currently completing the 42 Porto program, where the peer-to-peer learning model emphasizes autonomy, problem solving, and technical rigor, with a strong focus on low-level programming and systems design.

