Backend & automation developer in Kuala Lumpur building software for Malaysia.
Two apps in production on a Raspberry Pi in my room, and a set of open-source libraries
that get Malaysian rules right and cite where they come from.
Small, dependency-free Python packages. Each one takes a rule that every Malaysian codebase reimplements badly, does it from the primary source, and tests it against published figures. CLI, type hints, CI.
| Package | What it gets right | Verified against |
|---|---|---|
| gaji | Take-home pay: EPF, SOCSO, EIS and monthly PCB, including the s6A rebate most calculators forget. Reverse mode: gross for a target net. | KWSP Third Schedule, PERKESO band tables, LHDN YA2025. 209 tests |
| cuti | Public holidays for all sixteen states, Friday–Saturday weekends, opt-in replacement days. A subscribable .ics feed per state. |
The JPM gazette, row by row. 40 tests |
| sahih | MyKad, phone numbers, postcodes and plates, validated against the published rules, honest about what a number does not tell you. | JPN, MCMC numbering plan, Pos Malaysia. 80 tests |
| tnb | Your electricity bill line by line on the July 2025 tariff, including which lines SST and KWTBB actually apply to. | Six published bill totals reproduced to the sen. 15 tests |
| kwsp | EPF dividend history and a retirement projection on EPF's aggregate-balance method, stating the rate it assumed. | KWSP declared rates, three sources cross-checked. 20 tests |
| ringgit | Money as Decimal: BNM 5-sen cash rounding, SST by category, amounts in Malay words for cheques. Floats refused. |
BNM rounding mechanism, RMCD MySST. 47 tests |
| duitnow | Parse and validate DuitNow / EMVCo QR payloads: TLV, CRC-16, merchant fields. Builds valid payloads. | EMVCo MPM spec and its CRC check value. 10 tests |
pip install gaji cuti sahih tnb kwsp ringgit duitnow
| App | What it does | Link |
|---|---|---|
| TrafficMY | Malaysia public transport pulse: multi-source ingest, deviation detection, line board, journey planner. Refreshes every 15 minutes. | arifaqyl.me/traffic |
| Sah.Bukti | WhatsApp-first collections control plane for micro-sellers. Order to invoice to review-gated ledger entry. | arifaqyl.me/sahbukti |
Both run FastAPI + SQLite on a Pi 4 behind Cloudflare Tunnel with no open ports. pi-lab is the runbook: the real configs with secrets stripped, and what broke along the way.
| Project | What it does | Stack |
|---|---|---|
| aduanmy | TrafficMY's source: scraper gates, headway deviation engine, PWA front end | Python, FastAPI, SQLite, MapLibre, Playwright |
| sah-bukti | Sah.Bukti's source | FastAPI, SQLite, React, WAHA |
| threadterm | Threads in your terminal: Bubble Tea TUI + JSON CLI, cross-platform releases | Go, Bubble Tea, Cobra, goreleaser |
| whatsapp-assignment-dashboard | 24/7 academic assistant: VLE scraping, WhatsApp-to-Telegram bridge, daily agenda | Python, Playwright, Telegram API, WAHA |
| video-editing-automation | Long raw footage to watchable cut: Whisper transcription and dead-air removal on GPU | Python, faster-whisper, ffmpeg, CUDA |
| flight-fare-monitor | Fare history, threshold alerts, Telegram pings for cheap flights out of KL | Python, SQLite |
- Primary sources first. A gazette, a statute schedule, a published tariff. Then tests that pin the arithmetic to published figures.
- Python + FastAPI for services, SQLite for state,
Decimalfor money. - Automation: Playwright scrapers, Telegram bots, WhatsApp via WAHA, scheduled jobs that page on transitions, not on every run.
- Ship it: PM2, nginx, Cloudflare Tunnel, a Raspberry Pi that stays up.
- Go for single-binary CLI tools.
Software engineering student at UniKL MIIT. Open to software engineering internships, KL or remote.
- Portfolio: arifaqyl.me
- LinkedIn: linkedin.com/in/arifaqyl
- X: @mindofaqyl
- Email: hello@arifaqyl.me
Kuala Lumpur · MYT

