Software engineer at Ericsson, working across data pipelines, backend services on Kubernetes, and the CI/CD that ships them. Magna cum laude Computer Science graduate from uOttawa, 2026.
Daily stack

$ pytest tests/integration -q
localstack s3 ready on :4566
wiremock stubs loaded
....................................
....................................
all passed, no cloud calls
$ kubectl get pods -n analytics
NAME READY STATUS
api-7c9d5b6f8a-klmno 1/1 Running
worker-8b6a5c4d3e-uvwxy 1/1 Running
scheduler-6f5e4d3c2b-zabcd 1/1 Running
$
About me
I'm Fahad, a software engineer in Ottawa. I started on the infrastructure side at two startups, then joined Ericsson as a software engineer, where the work runs the whole stack: data pipelines, backend services on Kubernetes, and the pipelines that release them.
The problems I like most are the unglamorous ones: a query path that is too slow, a job that fails silently, a release process that is still done by hand. The numbers on the right come from my own projects, where I am free to publish them.
Outside work I take on freelance builds, most recently Mrasem, a concierge booking platform for a client in Saudi Arabia. I also make my own iOS apps, Lapel and Mawaqeet, each with its own API and deployment.
Away from the keyboard
- Hiking
- Photography
- Competitive chess
- Football
University of Ottawa
BSc Computer Science
GPA out of 4.0
2026
Graduated
Results, and what produced them
0%lower p50 API latency
after moving a 27-module import graph behind a dynamic import, with control endpoints held flat. Lapel
0xfaster webhook lookup
by indexing a query that ran on every provider webhook, 40.5 ms down to 0.17 ms. Lapel
0tests behind a client delivery
XCTest, XCUITest and Vitest suites, including property-based tests, for a paying client's booking platform. Mrasem
0%less compute spend
after adding autoscaling and right-sizing the GKE node pools. HAMS.AI
Anatomy of a request
It starts with a click.
Someone opens a dashboard or taps a screen. The front ends I build range from React dashboards to native SwiftUI apps.
Experience
Most of it at Ericsson, after backend and DevOps work at two startups. Each number is tied to the change that produced it.
- Jan 2026 – Present

Ericsson
Software Engineer
- Backend services in Python and Java, and data pipelines in PySpark over Parquet
- Debugged reliability problems in asynchronous job processing and locked the fixes in with regression tests
- Containerised services and deployed them on Kubernetes with ingress, health probes and resource limits
- CI/CD pipelines in Jenkins, plus an integration test harness on WireMock and LocalStack that needs no live cloud services
- Feb 2026 – Apr 2026

HAMS.AI
DevOps Engineer
- Stood up production GKE for an AI voice-agent platform in Terraform, with VictoriaMetrics and Grafana for monitoring
- Cut compute spend 30% with autoscaling and right-sized node pools
- Aug 2025 – Dec 2025

Moneymoon
Backend & DevOps Engineer
- Containerised the backend on AWS under Kubernetes and built REST services with JWT auth and rate limiting; uptime reached 99.5%, API latency fell 20%
- Terraform modules for the OCI and AWS environments, with remote locked state
The stack
Grouped by where it sits in the system. Everything here has been in production, either at work or in a shipped project.
Languages
5 tools
Frontend & Mobile
6 tools
Backend & Data
9 tools
Cloud & DevOps
13 tools
Delivery, observability & quality
8 tools
Projects
Mrasem is a paid freelance build for a client in Saudi Arabia. Lapel and Mawaqeet are my own. All three run on an API, database and deployment I designed, so each is full-stack work, not just an app.
Client work
A freelance engagement: iOS app, admin dashboard and API for a Saudi concierge company.
Client work · iOS · Admin · APIA luxury concierge booking platform built as a freelance engagement for a client in Saudi Arabia: a SwiftUI iOS app, a Next.js admin dashboard for the client's team, and a Node.js REST API on Supabase. Phone OTP sign-in, QR tickets, and a bilingual EN/AR interface with full RTL layout.
Freelance client, Saudi Arabia
Four categories, one home screen
Season events, tours, fine dining and chauffeured cars, browsable from a single SwiftUI home fed by the Supabase catalogue.

Venues the client edits, not the code
Restaurant cards carry Michelin tags, ratings and cuisine filters. The client's team manages the whole catalogue from the admin dashboard; no release needed to add a venue.

Booking in three steps
Date, time, guests and add-on services become a request the client's team approves or declines from the Next.js admin dashboard.

A QR ticket for every booking
A confirmed booking issues a QR ticket with its own unique code, kept with the reservation in the app.

Design system
Every screen in English and Arabic
Drag to explore








Personal projects
Built in my own time, each with its own API and deployment.
An AI try-on app for iPhone. Take one full-length photo, add a piece from your closet or paste a link from a shop, and Lapel shows it on you, backed by a Supabase backend, authenticated edge functions and a provider-agnostic try-on pipeline.


Drag to compare · generated model, dressed by Lapel




One photo is the fitting room
A single full-length photo is cut out and stood on a plain background. No stand-in models.
Add by photo or link
Photograph what you own, paste a product link, or share into Lapel from any app via the share extension.
A closet that labels itself
Brand and category are recognised on upload, with garment masks segmented by Gemini.
A stylist that works from your closet
Daily looks, a style calendar and a Home Screen widget, never padded with things you don't own.
Private by design
The app never talks to an AI provider. Every generation goes through authenticated edge functions with RLS on every table.
Prayer times computed on-device from solar position across 12 calculation methods, a Qibla compass, a Hijri calendar with day correction, and English and Arabic with full RTL. Works with no network; a Node.js and Stripe backend handles support payments.


Prayer engine
ISNA & Umm Al-Qura calculation methods from solar position.
Qibla compass
CoreMotion heading with live direction to Makkah.
Hijri calendar
Maghrib-based date transitions with ±2 day correction.
Prayer tracker
Mark each prayer complete and review a 7-day trend.
Stripe + Apple Pay
Dockerised Node.js backend for support payments.
Arabic / English
Full localisation with right-to-left layouts.
How I work
- reviewgerrit · one change per review
- buildunit tests · docker image
- integratewiremock + localstack · no live cloud
- complylicence check · sbom
- releasebump version · publish · rollout
One change per review, nothing reaches a cluster by hand, and a release is not done until licence, SBOM and vulnerability checks have passed and the dashboard agrees.
Tests that don't need the cloud
An integration suite should run against WireMock and LocalStack instead of live services, so it finishes in seconds and can gate every merge.
Find the bottleneck before adding capacity
A run of job timeouts can look like a scaling problem. The last one I chased was serial work waiting on a downstream service. Retries and parallel I/O fixed it, and regression tests keep it fixed.
Baseline first, then change one thing
Take the measurement before touching anything, so the result is a number rather than a feeling. On Lapel that was 822 ms down to 503 ms at p50, with four control endpoints held flat to prove the change caused it.
Case studies
Four smaller web builds, each one deployed. Click through rather than take the screenshot's word for it.
Get in touch
Open to software engineering, DevOps and cloud roles. Based in Ottawa.



