Faheem Saleem — Portfolio / 2026

Faheem
Saleem

Computer science graduate based in Manchester. I build mobile, embedded systems and AI projects, shipped my mobile app to 50K+ downloads and spent a year at Thales working across testing and software development.

Edu
High First-Class BSc Computer Science · 82% · placement year at Thales
Next
MSc Artificial Intelligence at University of Manchester · starting Sept 2026
Open
Open to graduate roles, internships & freelance work · Manchester or remote

Scroll

My internship at Thales

SI&T Intern MMCM project 12-month placement

I worked on MMCM, a mine countermeasures programme for the French and Royal Navies — starting in SI&T, then moving into software engineering to test the system and fix defects.

400+ test procedures completed
200+ test cases executed
100+ defects resolved

Life of an intern

Two MMCM unmanned surface vessels on sea trials off the south coast
MMCM unmanned surface vessels on sea trials · © Thales / Shaun Roster

What I did

  • Ran 400+ test procedures and resolved 100+ defects, tracked in Jira and Doors.
  • Fixed 8+ software bugs and shipped a UI feature for dynamic screenshot naming.
  • Built a Grafana/Prometheus monitoring dashboard, provisioned via Ansible playbooks.
  • Refactored a core module to accept multiple image formats, configurable via Ansible.
  • Ran 12+ rig updates — Linux, PXE boot, GPU driver fixes — and mentored two junior interns.

Skills & Proficiencies

Technical
Linux, Python, Kotlin, Java, Bash, YAML
Tools
Jira, Doors, VMware, Excel, Squish IDE, Ansible
Engineering
Testing, integration, QA, UML, configuration control
Soft skills
Communication, problem-solving, initiative, mentoring
Thales-branded underwater vehicle mounted on an MMCM unmanned surface vessel
The uncrewed underwater vehicle I helped test · © UK MOD / Crown copyright

The same equipment behind every test procedure and defect above — a towed sonar array and ROV, deployed from the USVs pictured earlier.

"A genuine, obvious enthusiasm for working with computers and software is a real asset. Clearly someone who has built a reputation in a short time of being a reliable asset to the project."

- Line Manager

"I was really impressed with what you did with the app development and see that you could be (are) a really good software developer. I think that software development will be where your future in Thales belongs"

- Matrix Manager

"Friendly quick learner that quickly integrated and became one of the main points of contact for the SI&T team, building a wide network amongst interns, developers and graduates."

- Apprentice

"Faheem has fitted into the team and interfaced with other teams very well. I would be happy to work with Faheem in the future should the opportunity arise."

- A cool guy :)

Statics — VALORANT companion app

Kotlin MVVM Material 3 Expressive Firebase Riot API

A companion app for VALORANT I've built solo since 2021 — live matches, rank, store and loadouts, plus its own chat and widgets, for PC and console. 50K+ downloads across the Play Store and GitHub.

50K+ downloads to date
v5.21 latest release
10+ languages supported

Free · Android · grab the latest APK straight from GitHub Releases.

  • UI

    Material 3 Expressive

    Dynamic colour per account, drawn from your equipped player card.

  • Social

    Statics Social

    Global chat, a "looking for game" board, profiles and friend requests.

  • Live

    Live match tracking

    Agents, ranks and party info the moment you load in, with a round-replay minimap.

  • Loadout

    Loadout studio

    Equip skins, sprays, cards and buddies, and save presets.

  • Home

    Home-screen widgets

    Your shop, friends and rank, right on your home screen.

  • Shop

    Daily shop & wishlist

    Wishlist a skin, get alerted the second it hits your store.

  • Lineups

    Lineups library

    Thousands of lineups by map and agent, with inline video.

  • Cross-play

    Built for every platform

    PC, Xbox and PlayStation, with multi-account switching built in.

Nature vs Nurture — teaching Pac-Man to generalise

Python PyTorch NEAT-Python Gymnasium Pygame Reinforcement Learning

My final-year BSc dissertation (85%). Most AI agents that "beat" Pac-Man just memorise one maze — this one tests whether an agent can handle mazes it's never seen, and whether how it learns changes the answer. I built the game and a Gymnasium environment from scratch, then trained DQN and NEAT under identical conditions and tested both on 100 unseen mazes.

37% NEAT win rate · unseen
26% DQN win rate · unseen
100 held-out test mazes

Built from scratch in Python & Pygame · DQN trained on an RTX 4060, NEAT evolved across 12 CPU threads.

Game built from scratch

Maze, pellets, power-ups and four ghosts — Python and Pygame, no pre-built RL environment.

Procedural mazes

A fresh maze every episode, BFS-validated so memorisation is impossible.

Two minds, one arena

A Dueling DQN vs. a NEAT population evolving weights and topology — same 29-D environment.

8-stage curriculum

No learning signal from scratch, so difficulty ramps across 8 stages, each gated by a rolling win rate.

Four ghost AIs

Blinky chases, Pinky intercepts, Inky flanks and Clyde switches by distance — all via A* pathfinding.

Measured, not vibes

CSV logging, fixed-seed benchmarks and Mann–Whitney U testing to compare both approaches honestly.

ROYA رؤية — an intelligent Quran companion

.NET MAUI 9 C# MVVM ONNX Runtime SQLite Material 3

ROYA (Arabic: رؤية, "Vision") is an offline Quran companion I built with .NET MAUI. One app — Quran reader, AI verse search, prayer times, a Qibla compass and a verse scanner — running on Android, iOS, macOS and Windows from a single codebase. It started as a university project and turned into something I actually use.

6,236 verses, fully offline
On-device AI verse search
4 native platforms

Built with .NET MAUI · one codebase across Android, iOS, macOS and Windows.

Offline Quran reader

The full Quran with three Arabic scripts, three English translations and eight reciters — downloaded once on first launch and read entirely offline.

AI semantic search

Ask in plain English like "patience in hardship" and get the most relevant verses, ranked on-device with a MiniLM sentence-embedding model and cosine similarity.

Prayer times

A daily Salah schedule with a live countdown to the next prayer, cached by date so it keeps working long after the first fetch.

Qibla compass

A real-time magnetometer compass that points towards Mecca, with live bearing, distance and alignment feedback as you turn.

Quran scanner

Point the camera at a physical page or screenshot and it detects the verse reference and jumps straight to that ayah in the reader.

Saved ayahs

Bookmark any verse with a single tap, stored locally in SQLite with a timestamp and ready to jump back to in context.

Themes & personalisation

Four themes including an OLED black default, with app-wide font sizing and switchable Arabic script, translation and reciter.

Offline-first by design

A one-time first-launch download builds the database and the on-device AI index — after that, the whole app runs without a connection.

Bee Network 219 — Live Bus Tracker

Python DfT BODS (SIRI-VM) Raspberry Pi Tkinter REST API

I wanted genuinely accurate arrival times for my local bus, so I built a live tracker for Manchester's Bee Network 219. It pulls the DfT Bus Open Data Service's raw GPS feed and combines it with the published timetable to model each bus's live delay, instead of guessing from distance and speed. It ran as an always-on service on a Raspberry Pi, tracking both directions of the route, and logged every prediction against what actually happened so it could prove its own accuracy rather than just claim it.

~1 min median ETA error, self-measured
58% vs 36% on-time %, Manchester- vs Ashton-bound
34,000+ real arrivals logged

Deployed as a systemd service on a Raspberry Pi · served over a REST API to a Tkinter departure-board GUI.

Live GPS via BODS

Pulls the DfT Bus Open Data Service's SIRI-VM feed — raw live positions for every 219 vehicle, the same open data Bee Network's own app reads.

Timetable delay modelling

Matches each bus to its scheduled journey and measures its live delay against the timetable, instead of guessing ETA from distance and an assumed speed.

Self-measuring accuracy

Logs every prediction against the bus's actual arrival, so the model reports its own real accuracy — around a 1-minute median, 90% within roughly 3 minutes.

Found and fixed a real bug

Live-traced a data-quality issue in the upstream feed that was corrupting over a third of raw delay readings, then fixed it at the source.

Both directions tracked

Runs the outbound and return legs of the route from a single shared feed fetch, not double the API calls.

Missed-bus detection

Compares elapsed time since the last arrival against the timetable's expected headway to flag a likely no-show.

Self-updating timetable

Re-discovers and re-downloads the published timetable automatically whenever the operator supersedes the dataset.

Raspberry Pi service

Ran as an always-on systemd service, serving live predictions over a REST API to a Tkinter LED-style departure board.

A few other things I've built

A selection of side projects across AI, hardware and the web.

Timeline

Where it all began

When I'm not coding

Sim racing wheel, pedals, the lot
Badminton weekly smashes
Rubik's cubes sub-minute, on a good day
Collecting cars and editing them
Ducks it's a whole thing
Flying the drone FPV from up high
Biking clears the head
Arduino & electronics LEDs on everything
Chess losing on time, mostly

Contact

Open to roles, collaborations or just a conversation. Email is the quickest way to reach me, but I'm around on these too.

faheemsaleemsq@gmail.com
LinkedIn GitHub Discord