Skip to content
View mahir-hs's full-sized avatar
🕸️
🕸️

Block or report mahir-hs

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
mahir-hs/README.md
Darth Vader walking out of the mist: You lack conviction.

Mahir Hasan Sifat

I solve hard problems for fun, then build backends that keep them solved.

Dhaka, Bangladesh  ·  open to relocation and remote

LinkedIn Codeforces Email


The arena

I've been competing since 2020, on every judge I could get an account on. Here's the full count, de-duplicated across all of them.

Problems solved per judge: Codeforces 1,434, LeetCode 402, AtCoder 284, UVa 239, LightOJ 98, VJudge-only judges 88, Toph 77, CodeChef 44. 2,650+ in total.
  • ICPC Asia Dhaka Regional 2023: 61st. Also 7th at the IUBAT Collaborative Contest 2023 and a BUET IUPC 2023 team.
  • VJudge counts too. 45 Codeforces, 61 UVa and 36 AtCoder solves went through VJudge's own bot accounts, so they never show on those judges' profiles. They're all in the panel above, each problem counted once.

Codeforces CodeChef AtCoder LeetCode Toph LightOJ VJudge UVa


From the other side of the scoreboard

I don't only compete, I run contests. In 2023 I was Judging Director of the DIU Take-Off Programming Contest: a 241-person main round, two preliminary slots and a 722-person mock round. I set one of the hardest problems (F, solved by 4 people) and reviewed another, and across contests I've set and tested 15+ problems. The whole editorial, with problem analyses and reference solutions, is public: Take-Off-Programming-Contest-Fall-2023 →

Judging Director of TakeOff Fall-2023: 241 participants, 10 problems. Solves per problem from 172 down to 0, with problem F set by me (4 solves) and problem C reviewed by me.


Things I build

Every card links to the real repo, and Tetris links to a version you can play right now. Brain MRI is a private research repo, so that card doesn't link anywhere yet.

notif-guardian, Kotlin: fixes delayed push notifications on Xiaomi HyperOS Tetris in Go with a WebAssembly build playable in the browser
Lamplore, Kotlin: Android app for calm listening with 22,000 audiobooks, podcasts and bedtime stories Yomi, Kotlin: manga reader and anime player built on Aniyomi and Mihon
ParcelTrack, C#: event-driven parcel tracking microservices GPS-Tracking, Go: backend for 1,000+ devices over MQTT
db-migrator, Python: MSSQL to PostgreSQL migration tool EMS, C#: .NET 9 and Angular 18 over three databases
Brain MRI with graph neural networks: thesis, 98.78 percent accuracy over three seeds. Private repository. DRL Bounded Knapsack: thesis on deep reinforcement learning
WalletTopUpSystem, C#: wallet top-up service with a k6 load script Story Stream, Python: publishing platform API with Elasticsearch search

The story behind Notif Guardian: my Xiaomi phone kept delivering WhatsApp messages hours late. The usual advice is "enable autostart", and that wasn't the problem. On the device I traced it to HyperOS's Millet freezer cgroup-freezing Google Play services, the process that carries every push, the moment the screen turned off. It was missing from a system no-restrict list, and the OS rewrote that list whenever it liked. The app repairs it, and a tiny helper puts it back within about 20 ms each time the system wipes it. Full write-up →

More in the lab: Library Management (.NET API + Angular 19) · LeetCode (C++ solutions) · Code-Library (my C++ contest library) · aws-learn and ci-cd-learn (learning in public) · all repositories →


By day: making retries harmless

I work on payments, wallets and a large SQL Server to PostgreSQL migration for a travel platform. The recurring theme is making sure that doing something twice is the same as doing it once. Below is that idea in one loop: the first request goes through, the retry with the same key is stopped at Redis.

Animation: a request passes the Redis idempotency check, is committed to PostgreSQL with an outbox row, published to Kafka and delivered by FCM, while a duplicate retry is rejected at Redis

C# .NET PostgreSQL Redis Kafka Docker Go C++ Kotlin Python Angular

Competitive stats are read straight from each judge's data and drawn from the raw numbers.

Pinned Loading

  1. Code-Library Code-Library Public

    C++ 2

  2. LeetCode LeetCode Public

    C++

  3. EMS EMS Public

    C#

  4. assettrack assettrack Public

    Python

  5. Story-Stream Story-Stream Public

    Python

  6. Programming-Contest Programming-Contest Public

    C++