I work where identity governance meets real software engineering.
- 🔐 IAM Consultant at Smpl ID, implementing SailPoint IdentityIQ for a leading Egyptian bank — provisioning workflows, custom BeanShell rules, AD/Exchange integration and LiveReports
- 🏗️ I also build and operate a production learning platform end to end — Spring Boot + React, six permission roles, device-bound auth, real-time updates, Dockerised deploy
- 🏆 ECPC Finalist (2022) · Honorable Mention, ICPC — Kafr El-Sheikh University
- 🎓 BSc Artificial Intelligence & Computer Science, Kafr El-Sheikh University
- 📍 Cairo, Egypt · 📫 devyoussefhassan@gmail.com · 📄 View My CV
The engineering habit is what makes the IAM work better — tracing a JasperReports failure on WebLogic to deployment-cache corruption is root-cause debugging before it's IAM.
Identity & Access Management
Engineering
🎓 SmplID Learning Platform — production LMS (Spring Boot + React)
A learning platform in daily production use, built and operated end to end.
- Access control: six roles (admin, course moderator, instructor, mentor, and two student types) enforced server-side on every request
- Exam integrity: device-bound student login via a companion Windows agent, single-active-session enforcement, watermarked course material, screen-capture detection
- Real time: notifications and messaging over server-sent events on a single shared connection
- Performance: cut the initial JS payload 64% (1.21 MB → 382 KB) with route-level code splitting; indexed 73 foreign-key columns Postgres leaves unindexed
- Delivery: GitHub Actions CI, images to GHCR, Docker Compose behind Caddy with automatic HTTPS, Flyway migrations applied on boot
- Stack: Java 21, Spring Boot 3, Spring Security, PostgreSQL 15, Flyway, React 19, Vite, Tailwind, Docker, Caddy, Nginx
Private repository — company product. Happy to walk through the architecture.
🌐 Social Network Backend — scalable and secure
- JWT authentication with token blacklisting via Redis
- Real-time messaging over WebSocket and STOMP
- Smart feed with personalised ranking and dynamic pagination
- Stress-tested at 1M simulated users; performance improved 79%
- Stack: Java 17, Spring Boot, Redis, JWT, WebSocket, Cloudinary
- GitHub Repo
🏫 School System Management Backend
- Secure REST API with role-based access control
- Dynamic reporting dashboards and a scheduling module
- Stack: Spring Boot, PostgreSQL, Hibernate
- GitHub Repo
💬 Real-Time Chat Application
- WebSocket-based messaging (Socket.io) on an Express backend
- Stack: React (Vite), Tailwind CSS, Express.js, Socket.io
- GitHub Repo
📖 E-book Web Application
- Interactive UI with animations and responsive design
- RESTful backend API using Node.js and Express.js
- Stack: React, Node.js, Express.js
- GitHub Repo
- 🔐 SailPoint Certified IdentityIQ Associate — SailPoint · Issued Mar 2026 · Expires Mar 2028
- 📜 Java Spring Framework 6, Spring Boot 3, Spring AI — Telusko, 2025
- 🏆 Finalist, ECPC 2022 — Egyptian Collegiate Programming Contest
- 🎖 Honorable Mention, ICPC — Kafr El-Sheikh University
- 📜 Mastering Critical Skills Using C — Mostafa Saad, 2023
- 📜 Principles of Writing Clean Code
Three games, all playable from this page. Click a move, an Action replies.
0x88 board representation, full legal move generation (castling, en passant, promotion), alpha-beta search to 5 plies with piece-square evaluation and MVV-LVA capture ordering.
| a | b | c | d | e | f | g | h | |
|---|---|---|---|---|---|---|---|---|
| 8 | ♜ | ♞ | ♝ | ♛ | ♚ | ♝ | ♞ | ♜ |
| 7 | ♟ | ♟ | ♟ | ♟ | · | ♟ | ♟ | ♟ |
| 6 | · | · | · | · | · | · | · | · |
| 5 | · | · | · | · | ♟ | · | · | · |
| 4 | · | · | · | · | · | · | · | · |
| 3 | · | · | ♘ | · | · | · | · | · |
| 2 | ♙ | ♙ | ♙ | ♙ | ♙ | ♙ | ♙ | ♙ |
| 1 | ♖ | · | ♗ | ♕ | ♔ | ♗ | ♘ | ♖ |
Your move — you are White (♙).
▶ Your legal moves (22) — click one to play
a1 → b1
g1 → h3 · f3
a2 → a3 · a4
b2 → b3 · b4
d2 → d3 · d4
e2 → e3 · e4
f2 → f3 · f4
g2 → g3 · g4
h2 → h3 · h4
c3 → d5 · b5 · e4 · a4 · b1
🏆 You 0 · 🤖 Engine 0 · 🤝 Draws 0
Move generation is verified with perft: the engine reproduces the published node counts for the starting position exactly (20 / 400 / 8902 / 197281), which is what proves castling, en passant and promotion are all handled correctly. Read the engine.
Not a toy. Bitboard position representation, negamax with alpha-beta pruning, a transposition table and centre-first move ordering, searching 9 plies. It will punish a careless move.
| ⬇️ | ⬇️ | ⬇️ | ⬇️ | ⬇️ | ⬇️ | ⬇️ |
|---|---|---|---|---|---|---|
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
| ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
Drop a disc with the ⬇️ arrows. You are 🔴, the engine is 🟡.
🏆 You 0 · 🤖 Engine 0 · 🤝 Draws 0
How it works: the board is two 49-bit masks, and a four-in-a-row is detected by ANDing the position with itself shifted twice — four shift-pairs cover all 69 possible lines at once. Read the engine.
Click an empty square. It opens a pre-filled issue — just press Create, and a GitHub Action plays my move and updates this board in about a minute.
| ⬜ | ⬜ | ⬜ |
| ⬜ | ⬜ | ⬜ |
| ⬜ | ⬜ | ⬜ |
Your move — you are ❌.
🏆 You 0 · 🤖 Me 1 · 🤝 Draws 0
Thanks for stopping by — let's connect.




