Muhamad Ahmadjoni

Stack

What I build with, and how I work

Eight years of production systems. Nothing in the layers below is something I have only read about — what I am still learning is named separately, at the bottom.

Layers

Interface

JavaScript, React, Redux, React Router, Vue, jQuery, HTML5, CSS3, Bootstrap, DataTables

Data-heavy interfaces are the ones I am best at: long forms, tables that have to stay usable at scale, dashboards that senior people actually read. Responsive and mobile-first by default.

API

PHP, Laravel, Python, Django, FastAPI, REST design and optimization

I design endpoints that other developers consume, and I integrate systems that were never meant to talk to each other — including banking services behind a mobile wallet, where a wrong response is not a cosmetic bug.

Data

SQL, PostgreSQL, MySQL, Oracle, SQLite

Schema design, and the less glamorous half: untangling records that were collected twice because two forms asked the same question. Search and reporting over government datasets that have to answer in seconds.

Infra

Linux (Debian, Ubuntu), nginx, Apache, Caddy, Docker, supervisord

Deployment, TLS, packet filtering, intrusion banning, unattended security updates, container image scanning. My degree is in information security, which is why hardening is not something I bolt on at the end.

Practice

Git, GitLab, GitHub, Jira, Trello, Postman, Figma, Agile, Scrum

Code review as a habit rather than a gate. Estimates I am willing to be held to. Two DevOps teams assembled and run, which permanently changed how I think about what is reasonable to ship.

How I decide

The smallest thing that can go to production. Not a prototype, not a mock — something real and narrow that users can touch, then widened. The exporter portal started as one form that worked end to end.

Design for the worst conditions, not the office. I built systems for high-mountain regions where mains power is intermittent and the link to the capital is thin. Software that survives that is better everywhere else too.

Count the time removed, not the features added. Every result I put under a project is a duration that got shorter or a count that got smaller. That is the metric I argue for in planning meetings.

Refuse what cannot be supported. Having run the teams who carry the pager, I would rather cut scope than hand over something that needs a hero to keep running.

What I own in production right now

Two live systems run on infrastructure I configured and maintain myself, not on a managed platform:

The host underneath both runs a default-deny packet filter, fail2ban on SSH and on the web logs, unattended security updates, and container images scanned for known vulnerabilities before they go live. I mention it because infrastructure claims are easy to make and this pair is checkable.

Where I am honest about limits

Strongest
Data-heavy interfaces, forms and reporting, integrating systems that were not designed to cooperate, taking a manual process and making it self-service
Comfortable
API and schema design, Linux operations, deployment and TLS, leading a small team
Learning
React Native, building on the React work rather than starting over
Not my field
Native iOS and Android in Swift or Kotlin, machine learning, data engineering at petabyte scale. I would rather say so than pick it up on your project

See it applied   Full CV