.TH NASR 1 "2026-08-09" "nasr(1)" "Systems Engineer Manual" .SH NAME nasr \- systems and backend engineer — Casablanca, Morocco .SH SYNOPSIS .B nasr [\fB\-\-c\fR] [\fB\-\-cpp\fR] [\fB\-\-cuda\fR] [\fB\-\-java\fR] [\fB\-\-go\fR] [\fB\-\-python\fR] [\fB\-\-plsql\fR] [\fB\-\-docker\fR] [\fB\-\-relocate=eu\fR] [\fB\-\-sponsor\fR] .SH DESCRIPTION Software engineer at Oracle, working across enterprise backend systems and low\-level systems programming. .PP Most of what I build, I build from scratch. My training at 42 Network was project\-based and specification\-driven: rather than assembling frameworks, you implement the thing itself — a web server, a shell, a virtual machine, a renderer — in C and C++, from the RFC or the paper up. I would rather understand the layer beneath the abstraction I am using than treat it as a black box. .PP Professionally that has taken two forms. On Oracle's PGX Vector Database team I wrote C and C++ for GPU\-accelerated graph construction, where the constraints are memory layout, PCIe bandwidth and parallelism; the work brought HNSW index construction to roughly 8–9× faster than a parallel CPU baseline at equivalent search quality. In my current role I build Java microservices for high\-availability payment infrastructure, where the constraints are correctness, reversibility and uptime. Both are performance\-and\-reliability problems; they just live at different altitudes. .PP My interests sit where systems programming meets AI infrastructure — vector search, GPU computing, and the tooling around them. .SH OPTIONS .TP .B \-\-c, \-\-cpp Sockets, non\-blocking I/O, processes, signals, file descriptors, manual memory management. Debugged with GDB, Valgrind and AddressSanitizer. .TP .B \-\-cuda Kernel authoring, launch configuration and occupancy, GPU memory optimisation. NVIDIA CAGRA and HNSW in production research at Oracle Labs. .TP .B \-\-java Helidon microservices and REST APIs on high\-availability payment infrastructure. Maven, Docker. Working toward Oracle Certified Professional, Java SE. .TP .B \-\-plsql Stored procedures and queries carrying core business logic against Oracle Database. Schema evolution through Liquibase, safe and reversible. .TP .B \-\-go, \-\-python Backend services and FastAPI. Reproducible benchmarking tooling for latency, recall and scalability measurement. .TP .B \-\-graphics Ray tracing, Phong shading, bump mapping, ray\-surface intersection, computational geometry. Linear algebra implemented by hand. .TP .B \-\-web TypeScript, React, Next.js, NestJS, Node.js, Django, WebSockets, PostgreSQL. .TP .B \-\-practice Git, CMake, Makefiles, CI/CD, performance benchmarking, code review, Agile Scrum, Jira, AI\-assisted development. .SH HISTORY .SS "Oracle \- Fullstack Developer (2024\-08 → present)" Enterprise payment systems, where downtime and incorrect state are both unacceptable outcomes. .PP .IP \(bu 2 Develop and maintain Java microservices with Helidon exposing REST APIs consumed by multiple internal teams. .IP \(bu 2 Write and maintain Oracle PL/SQL stored procedures and queries carrying core business logic and data access. .IP \(bu 2 Manage schema evolution through Liquibase, where every migration must be safe and reversible against long\-lived legacy systems in production. .IP \(bu 2 Work in an Agile Scrum team across sprint planning, code review, incident response, and cross\-functional work with QA, infrastructure and product. .PP Stack: Java, Helidon, Oracle Database, PL/SQL, REST, Liquibase, Docker, Maven, CI/CD .SS "Oracle PGX Team \- Research Assistant, Vector Database (2024\-02 → 2024\-08)" Accelerating approximate nearest\-neighbour search. HNSW trades a small, measurable amount of recall for a large gain in query speed — but building those graphs is expensive. .PP .IP \(bu 2 Implemented HNSW graph construction on GPU in C and C++ using NVIDIA CAGRA, achieving roughly 8–9× faster index construction than an 8\-thread parallel CPU HNSW baseline — measured on GIST (960 dimensions, 1M vectors) and SIFT (128 dimensions, 10M vectors) — with equivalent search\-time and recall characteristics. .IP \(bu 2 Designed around a deliberately hybrid architecture: graph construction on GPU, where the workload is parallel and throughput\-bound; ANN search in C on CPU, where traversal is latency\-sensitive with irregular memory access. .IP \(bu 2 Minimised host\-device memory transfers — moving data across PCIe is frequently the real bottleneck in GPU pipelines rather than the computation itself. .IP \(bu 2 Built reproducible benchmarking tooling in Python measuring latency, recall and scalability across indexing strategies; presented recommendations that fed into the team’s indexing roadmap. .PP Stack: C, C++, CUDA, NVIDIA CAGRA, HNSW, Python, Linux, profiling .SS "1337 School \- Software Engineering Track — UM6P, 42 Network (2021 → 2024)" Peer\-to\-peer, project\-based curriculum with no lectures and no instructors. Progress comes from building projects to specification and defending them in peer review. .PP .IP \(bu 2 Systems programming, operating system internals, networking, computer graphics, algorithms and data structures, software architecture. .IP \(bu 2 Core projects implemented from scratch in C and C++ on Linux. .IP \(bu 2 Trains two things beyond the technical content: reading specifications and documentation directly, and learning independently under time pressure. .PP Stack: C, C++, Linux .SS "Faculté des Sciences Dhar El Mahraz, Fès \- Licence Professionnelle — Mechatronics & Embedded Systems (2018 → 2021)" .IP \(bu 2 Embedded systems, electronics, control systems, sensors, hardware\-software integration. .PP Stack: embedded, electronics, control systems .SH FILES .TP .B ~/1337/webserv HTTP/1.1 server written from scratch instead of nginx .PP Serves many simultaneous clients from a single thread using non\-blocking I/O multiplexed with poll(), rather than spawning a thread per connection. That choice is the architectural centre of the project: threads cost memory and context switches, and they scale badly under high connection counts. .PP Single\-threaded non\-blocking I/O introduces its own difficulty. TCP delivers a byte stream, not discrete messages, so a request may arrive split across several reads and a response may only be partially written before the socket refuses more data. Every connection therefore carries its own state machine tracking how much of a request has been parsed and how much of a response remains to be sent. .IP \(bu 2 Non\-blocking, single\-threaded event loop with poll() readiness multiplexing .IP \(bu 2 Hand\-written HTTP parser: request line, headers, body, Content\-Length handling .IP \(bu 2 Per\-connection state machines for partial reads and partial writes .IP \(bu 2 Virtual host routing by Host header .IP \(bu 2 CGI execution via fork/exec with piped stdin and stdout, and CGI environment setup .IP \(bu 2 Configurable routes, custom error pages, request body size limits .IP \(bu 2 Correct file descriptor lifecycle management .PP Demonstrates: Socket programming, I/O multiplexing, protocol implementation from specification, and the practical realities of stream\-based networking. .br Stack: C++, POSIX sockets, poll(), HTTP/1.1, CGI .br Repository: https://github.com/Nx21/webserv .TP .B ~/1337/minishell A Unix shell, rebuilt instead of bash .PP The parsing is the visible part; process orchestration is the substance. A pipeline like cat file | grep foo | wc \-l requires forking a process per command, wiring their standard streams together with pipes and dup2, and closing every file descriptor that process doesn't need. Miss one write end and the downstream reader blocks forever, waiting for an EOF that never arrives. Each child must then be reaped with waitpid, or it becomes a zombie. .PP Signals add a second dimension. When a user presses Ctrl\-C, the running child should die and the shell should survive — which means handling SIGINT differently in parent and child, and respecting the constraints on what is safe to do inside a signal handler. .PP A third subtlety: some builtins cannot run in a child process at all. cd, export and unset mutate shell state, and a child's mutations die with the child — so those execute in the parent. .PP The command line at the foot of this page is a small implementation of the same ideas: real argument parsing, quoted strings, a pipe operator between builtins, command history — over the content of this site instead of a filesystem. No process model to get right there, but the parsing problem is the same one. .IP \(bu 2 Tokeniser and parser handling single quotes, double quotes, escapes, and variable expansion .IP \(bu 2 Arbitrary\-length pipelines via pipe() and dup2() with strict fd hygiene .IP \(bu 2 Input, output, append, and heredoc redirections .IP \(bu 2 Process creation and control with fork, execve, waitpid, including exit status propagation .IP \(bu 2 Signal handling that isolates the shell from its children .IP \(bu 2 Builtins executed in the parent where shell state must persist .PP Demonstrates: UNIX process model, file descriptor management, signal semantics, and parsing. .br Stack: C, POSIX, system calls, process management, signals .br Repository: https://github.com/Nx21/minishell .TP .B ~/1337/dslr Logistic regression in C++, accelerated with CUDA instead of NumPy, PyTorch or cuBLAS .PP Layered deliberately. A Matrix library handles allocation and linear algebra. A Statistics library handles data analysis and feature scaling. A CUDA layer offloads matrix operations to the GPU. Gradient descent is implemented in multiple variants, and multi\-class classification is handled through a one\-vs\-rest strategy. .PP Writing matrix operations by hand makes performance considerations concrete in a way library calls don't. Memory layout determines cache behaviour on the CPU and memory coalescing on the GPU. Kernel launch configuration determines occupancy. And for small matrices, the cost of moving data across PCIe can exceed the compute time the GPU saves — meaning GPU acceleration isn't unconditionally faster, and knowing when not to use it matters. .PP This project is in active development. .IP \(bu 2 Custom modular Matrix library with hand\-implemented linear algebra .IP \(bu 2 Custom Statistics library for data analysis and feature scaling .IP \(bu 2 CUDA kernels for GPU\-accelerated matrix operations .IP \(bu 2 Multiple gradient descent variants .IP \(bu 2 Multi\-class classification via one\-vs\-rest .IP \(bu 2 Makefile\-based modular build system .PP Demonstrates: GPU programming, numerical implementation from mathematical definitions, library and API design, and performance reasoning. .br Stack: C++, CUDA, GPU computing, linear algebra, machine learning .br Repository: https://github.com/Nx21/dslr .TP .B ~/1337/miniRT A ray tracer built on vector math instead of a render engine .PP For each pixel, a ray is cast from the camera through the image plane into the scene and tested analytically against every object — solving the quadratic for sphere intersection, and the corresponding equations for planes and cylinders. The nearest positive root is the visible surface. .PP Lighting uses the Phong reflection model: an ambient term approximating indirect light, a diffuse term following Lambert's law from the angle between surface normal and light direction, and a specular term producing highlights from the alignment of the reflected ray with the viewing direction. Shadows are determined by casting a secondary ray from each surface point toward each light and testing for occluders — which introduces the classic shadow acne artefact, where surfaces self\-intersect at the ray origin, solved by offsetting along the normal by a small epsilon. .PP Bump mapping adds apparent surface detail without adding geometry. Rather than displacing the surface, the normal is perturbed from a texture before lighting is computed — so a geometrically flat surface responds to light as though it were textured. .IP \(bu 2 Analytic ray\-object intersection for geometric primitives .IP \(bu 2 Phong shading with ambient, diffuse, and specular components .IP \(bu 2 Bump mapping via surface normal perturbation .IP \(bu 2 Shadow rays with epsilon offsetting .IP \(bu 2 Custom scene description file format and parser .IP \(bu 2 Vector and matrix mathematics implemented from scratch .PP Demonstrates: Applied linear algebra, computer graphics fundamentals, and translating mathematical models into working code. .br Stack: C, computer graphics, linear algebra, ray tracing .br Repository: https://github.com/Nx21/miniRT .TP .B ~/1337/abstract\-vm A stack\-based virtual machine and its bytecode language instead of a language runtime .PP The machine is stack\-based: instructions push operands, pop them, and push results — the same execution model the JVM uses. The interesting design problem is type safety. Operands may be int8, int16, int32, float or double, are created dynamically at runtime from parsed text, and arithmetic between different types requires well\-defined promotion rules. Creating the right concrete type from a runtime string is a factory problem; performing arithmetic across types without losing precision or silently overflowing is a design problem. .PP Error handling is split by phase. Malformed bytecode is a parse\-time error caught before execution begins; stack underflow or division by zero is a runtime error. Each has its own exception hierarchy. .IP \(bu 2 Lexer and parser for a custom bytecode language .IP \(bu 2 Polymorphic, type\-safe operand system with promotion rules .IP \(bu 2 Factory\-based dynamic operand creation .IP \(bu 2 Stack\-based execution engine .IP \(bu 2 Separated parse\-time and runtime error handling with custom exception types .PP Demonstrates: Interpreter and VM architecture, C++ object\-oriented design, design patterns, and language processing. .br Stack: C++, interpreter design, OOP design patterns, parsing .br Repository: https://github.com/Nx21/Abstract\-VM .TP .B ~/1337/transcendence Real\-time multiplayer web application .PP Real\-time multiplayer breaks the request\-response model that most web applications are built on. The server must push state to clients continuously rather than waiting to be asked, and it must remain authoritative — a client that owns its own game state is a client that can cheat. WebSockets provide the persistent bidirectional channel; the server drives synchronisation on a tick. .IP \(bu 2 Real\-time bidirectional communication over WebSockets .IP \(bu 2 Server\-authoritative game state synchronisation .IP \(bu 2 Modular NestJS backend architecture with dependency injection .IP \(bu 2 User accounts, authentication, and match history .IP \(bu 2 Relational data modelling in PostgreSQL .IP \(bu 2 React frontend .PP Demonstrates: Real\-time systems, fullstack architecture, and stateful backend design. .br Stack: TypeScript, NestJS, WebSockets, PostgreSQL, React .br Repository: https://github.com/Brahim\-maaqoul/ft_transcendence .TP .B ~/1337/hypertube Video streaming platform .PP Streaming media that isn't fully available locally requires serving content through HTTP range requests, so playback can begin from the portion already retrieved while the remainder continues arriving. The platform pairs a Node.js and Django backend with a React frontend and full user management. .IP \(bu 2 Progressive video streaming via HTTP range requests .IP \(bu 2 Torrent\-based media retrieval .IP \(bu 2 User registration, authentication, and profile management .IP \(bu 2 REST API backend with React frontend .IP \(bu 2 PostgreSQL data layer .PP Demonstrates: Media streaming mechanics, fullstack web development, and multi\-service architecture. .br Stack: Node.js, Django, React, PostgreSQL, REST APIs .br Repository: https://github.com/Brahim\-maaqoul/Hypertube .SH ENVIRONMENT .TP .B $PWD Casablanca, Morocco — GMT+1 .TP .B $LANG Arabic (native) · English (fluent) · French (intermediate) · German (intermediate, preparing Goethe\-Zertifikat B2) .TP .B $RELOCATE Open to relocation — Europe .TP .B $INTERESTS systems programming · backend engineering · GPU computing · AI infrastructure .SH NOTES .IP \(bu 2 Preparing for the Goethe\-Zertifikat B2 German examination — October 2026. .IP \(bu 2 Working toward Oracle Certified Professional, Java SE Developer. .IP \(bu 2 Continuing development on DSLR (see FILES). .SH EXIT STATUS .TP .B 0 available for new roles .TP .B 1 requires visa sponsorship .TP .B 2 notice period: one month .SH SEE ALSO mail(1), github(1), linkedin(1), nasr.1, nasr(7)