Contract PHP developer · Singapore

PHP developer in Singapore, available now

PHP has run through my whole career rather than a phase of it: agency work from 2005, the BBC’s children’s services, six years leading delivery at BB&P, and most recently the back end of a Yahoo! Sports platform through its migration to AWS. The page you are reading is PHP as well, a hand-written PHP 8 application with a single Composer dependency, and I am happy to walk anyone through the source. Twenty years, much of it in other people’s codebases, builds the habits contract work actually needs: read before rewriting, keep every change verifiable, leave the system easier to operate than you found it. The offer is straightforward. I join your team and help it ship, in your conventions and on your stack.

  • PHP in production from 2005 to now: agencies, the BBC, BB&P, Yahoo! Sports, and this site
  • Hand-written PHP 8: strict types everywhere, one Composer dependency, no framework
  • Billing, webhooks and back-office integrations that hold up under audit: Stripe, HubSpot, NetSuite
See selected work

Availability and engagement

Straight answers to the things recruiters screen on first.

Available now Singapore, on-site or hybrid Full-time contract engagements Fixed-scope projects Day rate on request

PHP

What I actually do with PHP.

Modern PHP 8

Strict types in every file, final classes and constructor promotion as defaults. It is the discipline this page itself is written with.

Payments & billing

Stripe trials that convert to annual policies, webhook retries, audit logging and sequential policy numbering finance can follow.

Legacy & migration

High-traffic platforms changed mid-flight, with the test path, certificates and connectors restored so every step can be verified.

Data layer

MySQL, MariaDB and PostgreSQL across twenty years of schema design, migrations and query work under production load.

Integrations

HubSpot sync, NetSuite export and Postmark transactional email: the back-office plumbing that decides whether ops trusts a system.

Forms & abuse control

reCAPTCHA v3 verified server-side on score and action, failing closed, with filesystem rate limiting. All of it is live on this site’s contact form.

Worked examples

Three problems and how they were solved.

Two from inside client teams, and one running under the page you are reading. Pick any of them and I will happily go deeper.

Seven-day trials that had to become real policies

A point-of-sale insurance app for jewellery retailers: the customer starts a seven-day Stripe trial at the counter, and if they do not cancel it converts to an annual policy, which means the unglamorous machinery has to be right. Webhook retries, audit logging, sequential policy numbering, generated policy PDFs and Postmark transactional email, plus receipt photography with automated clarity checks so a blurry photo is caught at the counter rather than at claim time. Retailer analytics, HubSpot sync and a NetSuite export feed the business side, because a policy system that finance cannot reconcile is not finished. The lesson: in PHP, as anywhere, the product is the lifecycle, not the sign-up form.

Proving a platform still works mid-migration

Yahoo! Sports was moving a legacy, high-traffic PHP platform onto AWS, and my part was the back-end work that made the move checkable: the integration test path had rotted, so I rebuilt it, then brought certificates and database connectors up to date so the suite could genuinely run against the new infrastructure. Security requirements were agreed with DevOps rather than bolted on afterwards. None of that is glamorous, and all of it is the difference between a migration you believe and one you hope. The transferable lesson: on someone else’s legacy platform, restoring the ability to verify comes before the ambition to change.

One Composer dependency, on purpose

This site is a deliberate demonstration: PHP 8 with strict types in every file, every class final, constructor promotion, an exact-string router of static closures, and a hand-written PSR-4 fallback autoloader for hosts where Composer never runs. The only production dependency is PHPMailer; content lives in plain PHP arrays, and the FAQ accordion and its FAQPage schema are built from the same array so they cannot drift apart. It deploys to ordinary shared Apache hosting, with the contact form behind server-side reCAPTCHA that fails closed and filesystem rate limiting. Not every project should be built this way, but knowing what a framework is for is easiest to prove by writing carefully without one.

FAQ

PHP contracting in Singapore: common questions

Are you available for PHP contract work in Singapore?

Yes. Available now for full-time contract engagements, on-site or hybrid in Singapore. PHP roles here are often maintenance-shaped, and I am genuinely happy in that work: an inherited codebase with real users is a more interesting problem than a green field. Fixed-scope PHP projects can also run through The Digerati.

What is your day rate?

Day rate on request. The honest variables are engagement length, on-site expectation and how much of the system I would own. Give me those and you get a number the same day.

Do you work with Laravel, Symfony or WordPress?

I work in what you already run rather than proposing a rewrite. Twenty years of PHP predates most of today’s frameworks, so the machinery they package (routing, templating, data access, queues) is machinery I understand from underneath; this site is that machinery written by hand. If you run Laravel, Symfony or WordPress, I fit into your conventions rather than importing mine.

Can you work on a legacy PHP codebase?

Yes. That is where PHP contracting mostly lives, and I do not treat it as beneath the interesting work. The pattern that works: get it running locally, restore whatever test or verification path exists, then modernise in slices while the site keeps shipping. The Yahoo! Sports engagement was exactly this shape. What I will not open with is a rewrite proposal.

Is PHP still a good choice?

It runs a very large share of the web and an even larger share of the systems companies actually depend on, which is the only sense of the question that matters for hiring. Modern PHP 8 is a genuinely pleasant language: typed, fast and stable. The readable, boring style this site is written in is available to any team that wants it. Whether to start something new in it is a different question, and I would answer that per project rather than defend the language reflexively.

Do you also do the front end and the database?

Yes. Most of my PHP history is full stack: MySQL from 2005, MariaDB and PostgreSQL at BB&P, and the JavaScript in front of all of it. On the insurance app that meant everything from the Stripe integration to the receipt-photo capture in the browser. I am at my most useful where the job crosses those boundaries.