About 0x1RIS¶
The Short Version¶
Mahmoud , also known as 0x1RIS
Backend engineer by trade , security obsessive by nature
I build backend systems that happen to be hardened because I physically can't write code that ignores edge cases , doesn't sanitize input , or leaves crypto as "future work" That "future work" is where breaches happen , and I've seen enough of those to know better
Security isn't my job title - it's a habit that got out of control somewhere around 3AM when I was deep in an RSA-4096 implementation and realized I'd been reading NIST SP 800-56B for fun
The Long Version¶
Backend Engineer With a Security Problem¶
Here's the thing - I don't wake up and think "today I'm gonna be a security researcher" I wake up and think "this API endpoint needs proper rate limiting , the DB pool is misconfigured , and who the fuck left the debug endpoints exposed in production" The security part is just... what happens when you actually care about the systems you build
I've been writing production code across the full stack for years - FastAPI , React , Flutter , Rust , whatever solves the problem without adding technical debt I don't chase frameworks I chase correctness Security is just correctness under adversarial conditions
What I Actually Do¶
I ship software that works in production , not just on localhost I handle the full lifecycle - from schema design to deployment , from auth implementation to audit logging , from "it works on my machine" to "it survived a 48-hour no-internet stress test in an Egyptian warehouse"
When I pick a stack , it's because it solves the problem , not because it's trendy When I pick a crypto algorithm , it's because I've read the source , understood the threat model , and verified the implementation doesn't leak timing information
Projects¶
1. SMail - Zero Trust E2EE Email System¶
The one that got out of hand
Started as "let me build a secure email client" and spiraled into a full-blown academic research project with 8 chapters of documentation , architecture diagrams , and a crypto layer that would make most enterprise solutions look like toys
Stack: * FastAPI (Python 3.13) on the backend , Flutter on the frontend * SQLite for local dev , PostgreSQL for production , SQLAlchemy ORM managing it all * RSA-4096 for legacy compat , X25519 for key exchange , AES-256-GCM for data * Argon2id for password hashing , PBKDF2 as fallback * Hybrid post-quantum key exchange because "quantum-safe" isn't a buzzword when your threat model includes state actors
Architecture * Zero Trust - no implicit trust , every request verified , every session reauthenticated * Perfect Forward Secrecy - compromise today's keys , yesterday's emails stay encrypted * Client-side encryption/decryption - server never sees plaintext , never could
Features that took way too long: * Gmail bridge with IMAP sync - because migrating is hard , meet people where they are * Encrypted attachments with streaming AEAD * Audit logging with hash chains - tamper-evident , cryptographically linked * Anti-spam that doesn't suck , 2FA that actually works offline * 30+ REST endpoints spanning auth , email , keys , folders , the bridge
The Numbers: * Solo developer , entire system from crypto layer to Flutter UI
2. Online POS - Car Parts Shop¶
The online version for a specific use case - car parts inventory management with QR codes
Stack: * Vite + vanilla JavaScript (no framework fatigue here) * NeonDB for serverless Postgres * bcryptjs + JWT for auth * QR code scanning via html5-qrcode * XLSX export/import for inventory management
Deployment: Vercel-ready , zero-drama CI/CD
The QR scanning feature was a fun rabbit hole - getting html5-qrcode to work reliably in low-light warehouse conditions took longer than the entire auth system
3. FerroWA - Encrypted WhatsApp Desktop Client¶
Because typing zeroize in Rust code is satisfying as hell
Stack: * Tauri 2 with Rust backend * WebSocket bridge for WhatsApp Web protocol * Native Linux notifications (because I live in the terminal , but I still want to know when you message me)
Crypto (the fun part): * ChaCha20-Poly1305 for config encryption - fast , authenticated , modern * Argon2 for PIN hashing - memory-hard , ASIC-resistant * HMAC-SHA256 for integrity verification * jemalloc allocator - because the default allocator leaks under heavy WebSocket traffic * zeroize on drop - secrets don't persist in memory , ever
Features: * Tray icon with native OS integration * WebKitGTK cookie access for session persistence * Enterprise CSP that blocks everything not explicitly whitelisted
Role: Solo developer , systems programming in Rust , learned Tauri 2 from scratch because why make life easy
4. Great Society - Website¶
Property management for a real community , not a startup pitch deck
Stack: * React 19 , Material UI 7 , Radix UI primitives * Supabase for backend with MySQL in the host (auth , DB , storage) * Vite for build tooling
Features: * Property management with featured listings , search , filtering * Contact notifications with real-time updates * Image uploads with JPEG compression at exactly 0.75 quality - tested it , that's the sweet spot * Super admin dashboard with full CRUD * Arabic-first interface - RTL isn't an afterthought , it's the default
Deployment: Hostinger for the main site , Vercel for previews and testing
The Philosophy¶
Security-as-Habit vs Security-as-Job¶
Most "security researchers" treat it as a 9-to-5 I treat it as "this SQL query needs parameterization because I'd rather not explain a data breach to my client at 2AM"
The difference is subtle but it's everything
When security is your habit , you don't think about it - you just write the audit log before the transaction , you hash before you store , you encrypt before you transmit It's not extra work It's the default
What I Believe¶
- "Good enough" security is an oxymoron Either you control the threat surface or you don't
- Crypto isn't magic - it's math with strict proofs and harder implementations
- Documentation isn't optional - your future self at 3AM debugging a production issue will thank you
- Academic-grade documentation is fun Fight me
- If your threat model doesn't include "adversary has physical access" , your threat model is incomplete (looking at you , SMail crypto layer that I spent 3 weeks on)
Tools I Actually Use¶
- Python for everything that doesn't need to be fast
- Rust for everything that does
- FastAPI because Flask feels like 2015
- Flutter because native mobile dev takes too long
- Odoo because ERP shouldn't require a mortgage
- Tauri because Electron is a crime against memory
- ParrotOS because it's been my second home for years now
Tools I've Watched Explode¶
- Burp Suite freezing mid-scan on a critical engagement (thanks Burp , very cool)
- Nmap lying about closed ports because of rate limiting I didn't notice
- Docker eating all my disk because I forgot to prune
- That one time I spent 6 hours debugging a crypto issue and it was a typo in a hex string (still not over it)
Let's Connect¶
I don't do LinkedIn motivational posts or Twitter threads
I ship code , write docs , and occasionally break things to understand how they work If any of that sounds useful to you , reach out
Links: * LinkedIn 0x1RIS - I check this when I remember * GitHub 0x1RIS - Actual code lives here * Telegram 0x1RIS - Fastest way to reach me
How to reach me: * Business stuff -> LinkedIn message * Technical questions -> GitHub issue or Telegram * Friends -> carrier pigeon , whatever works * Vulnerability disclosures -> encrypted comms , don't make me regret saying that