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.
in progress. Find lenses by the light they return, and streaming cameras by how their traffic answers a known stimulus.
planned. Multi-angle LEDs and image features to tell a lens from screws, glass and glints.
planned. Software-defined radio beyond Wi-Fi and Bluetooth, with direction finding.
planned. Catch offline cameras: flash a known light pattern and look for an electromagnetic emission that follows it.
planned. A thermal array as supporting evidence for powered electronics.
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.
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.





Stock and sales for a camera shop that sells on Ozon, Yandex Market and in person.
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.
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 studyWhat runs every night
- 02:00Three Puppeteer scrapersOne for each public event source.
- upsertKeyed by source URLRunning a scrape again updates events instead of duplicating them.
- reviewAdmin queueNothing reaches students before a person approves it.
- liveStudents sign up and find eventsGoogle sign-in, onboarding, one list.
Small print
Coursework at ITMO, each one built end to end.
- 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.
- Client-server collection manager
Java: user accounts, PostgreSQL through HikariCP, a DAO layer and typed command requests.
- Area checker
a Java FastCGI service behind Apache in Docker, with a written API contract.
- 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
BSc Computer Science and TechnologiesITMO University2024 – now
Computer architecture, algorithms, computational mathematics, software engineering.
Foundation and Russian-language programmeITMO University2023 – 2024
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.
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.








