CS student, ITMO University, St Petersburg

I build systems that find what is hidden.

I'm building SpyScan, a hidden-camera detector that weighs evidence from several physical signals instead of one. Before that, I flagged fraud at bKash, Bangladesh's largest mobile-money service.

A camera is hidden in this room. Move the light to find it.

0 red returns0 white glints0.0 s time

V1 in progress

SpyScan

Cheap detectors only say “a signal is present” and miss cameras that record to an SD card. SpyScan is planned as one device that combines optical, Wi-Fi, RF, electromagnetic and thermal evidence into a single confidence score. V1 is already measuring real spy cameras: its passive Wi-Fi signature caught them in 9 of 9 runs, and a failed experiment made the optical method the primary detector.

Pick a version to read what it adds.

  1. in progress. Find lenses by the light they return, and streaming cameras by how their traffic answers a known stimulus.

  2. planned. Multi-angle LEDs and image features to tell a lens from screws, glass and glints.

  3. planned. Software-defined radio beyond Wi-Fi and Bluetooth, with direction finding.

  4. planned. Catch offline cameras: flash a known light pattern and look for an electromagnetic emission that follows it.

  5. planned. A thermal array as supporting evidence for powered electronics.

  6. planned. Every channel combined into one confidence score, plus whether the camera streams or records locally.

V1, in progress. Find lenses by the light they return, and streaming cameras by how their traffic answers a known stimulus.

Uplink traffic of three Wi-Fi devices over 61 secondsA hidden camera sends a steady 245 kilobytes per second upstream and is flagged as a video streamer. The router relaying the stream and the phone watching it show different patterns.cc:b8:5e:ad:5c:4a spy cameramean 245.5 kB/s upflagged: streamer (97% upstream, steady)5c:62:8b:66:67:d2 router, relayingmean 73.9 kB/s up72:3b:01:24:b7:c8 phone, watchingmean 0.7 kB/s up0 s61 s
Real capture from SpyScan, 9 October 2026: an ESP32-S3 in promiscuous mode logging every transmitter on one Wi-Fi channel while a mini spy camera streamed to a phone. Each row has its own scale; hover to read the values. The passive signature picks out the camera, and rejects the router and the phone even though they carry the same video.

Read the case study

In progress

Semester OS

A Telegram-first planner that knows which lab defenses you can still make.

Calendars show when work is due. They can't tell you that you have four lab defenses left and four labs to defend, so missing one session fails the course. Semester OS models requirements, defense sessions, grades and your free time, then answers one question in Telegram: what should I do now, and why.

Can you still pass?

The engine's first question, reduced to one rule: one lab per defense session.

At risk. No spare session: every remaining session has to be a pass.

  • 244 automated tests
  • 18 merged changes in 4 days
  • 10 written design decisions

TypeScript, Cloudflare Workers, Hono, Postgres with row-level security, grammY, React, MCP

Private repository, walkthrough on request.

Semester OS Mini App (Today)
Real screens from the app, with an invented semester. Tap the tabs.

Internal tool

Foto Sklad

Stock and sales for a camera shop that sells on Ozon, Yandex Market and in person.

43-second walkthrough of the real app, with demo data. Interface in Russian and English.

A marketplace shows how many cameras a shop advertises, not how many are on the shelf. Foto Sklad tracks every physical unit instead: its serial number, what it cost and when it arrived. Selling one is a search and a tap, and the profit is that unit's price minus that unit's cost.

  • Every camera and lens is its own record: internal ID, serial number, purchase price, intake date.
  • One search box for brand, model or serial number, from any screen with ⌘K.
  • A sale moves one unit from in stock to sold in a single transaction. Every purchase, sale, return and adjustment stays in an audit log.
  • Monthly reports split spend, revenue and profit by Ozon, Yandex Market and offline sales.

Next.js 16, React 19, TypeScript, Tailwind CSS v4, Supabase (Postgres, Auth, row-level security), Vercel

Private repository, walkthrough on request.

Profit is counted per unit

Three Sony A7 IV bodies, bought at different prices. Sell one for 189 000 ₽. Example numbers

  • INV-000014142 000 ₽
  • INV-000021151 000 ₽
  • INV-000027148 500 ₽

Pick a unit to sell.

Client project

CUNYServe

Built for the City University of New York

A volunteering platform built for the City University of New York. Scrapers collect events from three public sources every night, and students sign up, complete onboarding and find opportunities in one place.

Node.js, Express, MongoDB, Puppeteer, Google sign-in, Vercel

Read the case study

What runs every night

  1. 02:00Three Puppeteer scrapersOne for each public event source.
  2. upsertKeyed by source URLRunning a scrape again updates events instead of duplicating them.
  3. reviewAdmin queueNothing reaches students before a person approves it.
  4. liveStudents sign up and find eventsGoogle sign-in, onboarding, one list.

Small print

Coursework at ITMO, each one built end to end.

  1. RISC-IV-32 processor

    a five-stage datapath with memory-mapped I/O, designed by hand, plus assembly programs for RLE decompression and string reversal.

  2. Client-server collection manager

    Java: user accounts, PostgreSQL through HikariCP, a DAO layer and typed command requests.

  3. Area checker

    a Java FastCGI service behind Apache in Docker, with a written API contract.

  4. Fractal sets

    numerical experiments in Jupyter with a LaTeX report.

Where I've worked

Fraud checks at bKash, now hidden-camera detection. Same job: find what doesn't want to be found.

work study

  1. BSc Computer Science and TechnologiesITMO University2024 – now

    Computer architecture, algorithms, computational mathematics, software engineering.

  2. Foundation and Russian-language programmeITMO University2023 – 2024

  3. KYC & IVR Operations OfficerbKash Limited, Dhaka2021 – 2022

    Verified customer identity documents for account onboarding, flagged suspected fraud for review, and worked with the compliance and IT teams on voice-recognition IVR automation.

  4. Customer Service RepresentativebKash Limited, Dhaka2020 – 2021

    Resolved 100+ payment, transaction and account issues a day by phone, chat and CRM, and escalated faults to the technical teams.

Honours
National Champion, Scientific Project Display, Bangladesh Council of Scientific and Industrial Research, 2019 (covered in Samakal). Cadet Sergeant and platoon commander, Bangladesh National Cadet Corps.
Languages
Bengali (native), English (C1), Russian (B1), Hindi, Urdu.

The other side of the lens

On weekends I point cameras at people. On weekdays I build a device that finds the cameras pointed at them.

I photograph weddings, portraits and streets. Both jobs come down to the same thing: knowing how a lens catches light.

Editorial duo, studio lightBride on the staircaseRush hour from aboveTrain through the forestStreetwear in the corridorMatch lightSpiral stairNoir portrait with glassesMinor Mosque, Tashkent

Open the photography portfolio

Let's talk

Open to internships and junior roles, remote or in St Petersburg

--:-- in St Petersburg now

www.afifur@gmail.com

GitHubLinkedInTelegram

Hi Afi, I'm from . I'd like to talk about . You can reach me at .

Anything else:

Send by email

Booking a photo session? That's on the photography page