Most of what I build starts with a question I can't let go of: what is this actually doing underneath? That's what pulled me into building MaqOS β an operating system simulation in C++ where I hand-rolled scheduling and process lifecycle myself instead of trusting a library β and it's the same instinct behind SkyNet ATC, where every core data structure (hash table, min-heap, AVL tree, graph routing) is written from scratch instead of pulled from std::. Lately that instinct has pointed at computer vision: real-time hand tracking, gesture recognition, and background segmentation running at 30+ FPS, with a properly tested pipeline behind it rather than a notebook demo.
I'm a Software Engineering undergraduate at FAST-NUCES, and most of my time splits across four layers most people are happy to leave to a framework: systems (schedulers, process lifecycles, precedence graphs), computer vision (temporal modeling, gesture pipelines, real-time compositing), full-stack product work (the kind where a Redis TTL bug at 2am teaches you more about concurrency than a lecture ever will), and applied ML/data (cleaning it, modeling it, being honest about what the RΒ² actually means). AI is now a first-class part of that stack too β wiring Gemini into a real interview-feedback pipeline, or FLUX diffusion into a gesture-driven AR workspace, not just calling an API and calling it a day.
const abdullah = {
role: "SE Undergraduate @ FAST-NUCES",
focus: ["Computer Vision", "Systems Programming", "Full-Stack Dev", "AI-Integrated Apps", "Applied ML"],
currentlyLearning: "Design & Analysis of Algorithms β CLRS, cover to cover",
philosophy: "Understand the machine before you trust the framework"
};|
Gesture-driven AR workspace β track hands with MediaPipe, frame a region of your webcam feed with a two-hand gesture, then restyle it instantly with OpenCV or a cloud diffusion model. Stack: Python Β· OpenCV Β· MediaPipe Β· fal.ai (FLUX.2)
|
Full-stack airline management SaaS β booking, seat locking, payments, boarding passes, end to end. Stack: React Β· TypeScript Β· Node.js Β· Express Β· Sequelize Β· MySQL Β· Redis Β· Stripe
|
|
Grading and performance-tracking platform for teaching assistants, with separate TA, student, and read-only teacher views. Stack: HTML5 Β· CSS3 Β· Vanilla JS Β· Supabase (PostgreSQL)
|
Real-time air traffic control simulator where every core data structure is hand-rolled β no Stack: C++ Β· Qt
|
|
AI-powered mock interview platform β role-specific question generation, real-time feedback, and interview analytics. Stack: Next.js 14 Β· TypeScript Β· PostgreSQL Β· Drizzle ORM Β· Gemini Pro API Β· Clerk
|
Regression pipeline predicting UK resale prices for 17,966 Ford listings, shipped with a live prediction site. Stack: Python Β· Pandas Β· NumPy Β· Scikit-learn Β· Matplotlib Β· Seaborn
|
|
Real-time collaborative text editor with CRDT-based conflict-free sync, live cursors, and sub-50ms latency over WebSockets. Stack: React Β· TypeScript Β· Yjs Β· Django Channels Β· Redis
|
A UI/UX and enterprise-feature layer built on top of Flowise's open-source AI-workflow engine. Stack: React Β· TypeScript Β· Material-UI Β· React Flow Β· Node.js/Express Β· PostgreSQL Β· Redis
|
| Problem | Difficulty |
|---|---|
| Make Lexicographically Smallest Array by Swapping Elements | π‘ Medium |
| Spiral Matrix | π‘ Medium |
| Lexicographically Smallest Palindromic Permutation Greater Than Target | π΄ Hard |
| Lexicographically Smallest Permutation Greater Than Target | π‘ Medium |
| Valid Sudoku | π‘ Medium |
"Every system I build is an argument for how I think the world should work β clean, deliberate, and built to last."
βοΈ One-time setup: profile cards, snake animation & LeetCode auto-updates
GitHub Activity cards (04 section)
- Create a Personal access token (classic) with
reposcope: github.com/settings/tokens. - In this repo, go to Settings β Secrets and variables β Actions, add a new secret named
SUMMARY_GITHUB_TOKENwith that token as the value. - Create
.github/workflows/summary-cards.yml:
name: GitHub-Profile-Summary-Cards
on:
schedule:
- cron: "0 */12 * * *"
workflow_dispatch: {}
push:
branches: [ main ]
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
name: generate-github-profile-summary-cards
steps:
- uses: actions/checkout@v4
- uses: vn7n24fzkq/github-profile-summary-cards@release
env:
GITHUB_TOKEN: ${{ secrets.SUMMARY_GITHUB_TOKEN }}
with:
USERNAME: muhammad-abdullah-nova-dev
BRANCH_NAME: "main"
UTC_OFFSET: 5
AUTO_PUSH: true- Commit, then run it once manually from the Actions tab (GitHub-Profile-Summary-Cards β Run workflow). It writes SVGs to a
profile-summary-card-output/folder committed tomain, which the04section reads directly β no more live third-party API calls that can go down or rate-limit. - Swap
github_darkin the three image URLs for any other theme name if you want a different look.
Snake animation (05 section)
- In this repo, go to Settings β Actions β General β Workflow permissions, select Read and write permissions, save.
- Create
.github/workflows/snake.yml:
name: Generate Snake
on:
schedule:
- cron: "0 */12 * * *"
workflow_dispatch: {}
push:
branches: [ main ]
permissions:
contents: write
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: Platane/snk@v3
id: snake
with:
github_user_name: muhammad-abdullah-nova-dev
outputs: dist/github-snake-dark.svg?palette=github-dark
- uses: crazy-max/ghaction-github-pages@v4
with:
target_branch: output
build_dir: dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}- Commit, then run it once manually from the Actions tab (Generate Snake β Run workflow) so
outputbranch exists immediately instead of waiting for the next scheduled run.
LeetCode stats card (06 section)
Replaces the leetcode-stats-six.vercel.app live API (unreliable/frequently down) with a card generated by your own workflow β same pattern as the other two.
- Add
generate_leetcode_card.pyto the repo root. - Create
.github/workflows/leetcode-card.yml:
name: LeetCode Stats Card
on:
schedule:
- cron: "0 */12 * * *"
workflow_dispatch: {}
push:
branches: [ main ]
permissions:
contents: write
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install requests
- run: python generate_leetcode_card.py
env:
LEETCODE_USERNAME: FZiFbWTBhC
- name: Commit if changed
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add leetcode-stats-output/card.svg
git diff --staged --quiet || git commit -m "chore: update leetcode stats card"
git push- Commit, then run it once manually from Actions β LeetCode Stats Card β Run workflow. It hits LeetCode's public GraphQL endpoint directly and writes
leetcode-stats-output/card.svg, which the06section reads. - No secret needed β this one only reads public profile data,
GITHUB_TOKEN(already provided by Actions) is enough to push the commit.
LeetCode auto-updates (07 section)
Already set up β .github/workflows/leetcode.yml runs a custom update_leetcode.py script and has been committing updates on schedule. No action needed here.
The snake badge will look broken until its first successful run β that's expected on a new repo, not a sign anything is misconfigured.