· 5 min read · TypeScript, PHP, Laravel, Dart, Flutter, Python

The programming languages I enjoy working with, and why

TypeScript, PHP with Laravel, Dart with Flutter, and Python: what each language is good at, where I've used it in production, and how I choose between them for a project.

People sometimes ask which programming language is "best". I don't think there is one. There are languages that fit a problem well and languages that fight it. After shipping web platforms, admin panels, a mobile app and server infrastructure for clients in Oman, Pakistan and remotely, four languages have earned a permanent place in how I work: TypeScript, PHP (mostly through Laravel), Dart (through Flutter) and Python.

Here's what I like about each one, where I've used it, and how I decide which to reach for.

TypeScript: the language I use most

TypeScript is JavaScript with a type system on top, and it's the language behind most of my front-end and full-stack work in Next.js and React. This website is written in it.

Why I enjoy it

  • Types catch mistakes before users do. Rename a field, and every place that uses it lights up before anything is deployed. In a large application that's the difference between refactoring with confidence and refactoring with fear.
  • One language across the whole stack. With Next.js, the same language and often the same types describe the database record, the server logic and the component that displays it.
  • The types are documentation. Coming back to code months later, a well-typed function tells you what it expects and what it returns without reading its body.

Where I've used it

The Aer Lingus Virtual operations portal is Next.js and TypeScript with Supabase: role-based dashboards, conditional reporting forms with escalation rules, NOTAM acknowledgement and recruitment workflows. MCF, an investment platform with a 3D public site, an investor dashboard and an admin panel, is also Next.js and TypeScript. In an application that handles deposits and withdrawals, knowing exactly what shape your data is in isn't optional.

PHP and Laravel: fast, pragmatic back ends

PHP has a reputation problem that modern PHP doesn't deserve. Recent versions are fast, strongly typed where you want them to be, and pleasant to write. Laravel, the framework I use with it, is one of the most productive tools there is for building back ends and admin panels.

Why I enjoy it

  • Everything a business back end needs is already there. Authentication, validation, queues, scheduled jobs, file storage, email and database migrations all come built in and work the same way.
  • Validation reads like a specification. Laravel's validation rules are clear enough that a non-developer can almost read them, which makes data rules easy to agree on with clients.
  • It's everywhere. PHP runs on practically every host, which matters for businesses that start on shared hosting and grow from there.

Where I've used it

FilterCrossHub pairs a Next.js customer app with a Laravel administration panel over MySQL, with bulk CSV import tools, duplicate detection and an unresolved-search review queue across more than 7 million parts records. Earlier, for Eleciam LLC, I built an internal hotel booking platform with React, PHP and MySQL, with role-based access control and check-in and check-out APIs. It reduced booking processing time by 40 percent.

Dart and Flutter: one codebase, real mobile apps

Dart is the language behind Flutter, Google's framework for building mobile apps for iOS and Android from a single codebase. I don't use Dart outside Flutter, but inside it, it's a very comfortable language.

Why I enjoy it

  • One codebase, two platforms. For most businesses, building and maintaining separate iOS and Android apps isn't realistic. Flutter makes a mobile app practical on a small team's budget and timeline.
  • It feels familiar. Coming from TypeScript, Dart's syntax, types and async/await feel natural almost immediately.
  • Fast iteration. Hot reload means you see a change in the running app in about a second, which makes polishing interfaces genuinely enjoyable.

Where I've used it

For Bahria Food Street in Lahore, I delivered a production website, a Flutter mobile app with an Uber Eats-style browsing experience and Google Sign-In, and a central admin panel in six weeks. All three products share the same REST APIs, with WebSockets for live updates. Flutter is a big part of why that timeline was possible.

Python: the language for everything around the product

Python is the language I reach for when the job isn't the product itself but everything around it: scripts, data work, automation, and learning.

Why I enjoy it

  • Readable by design. Python code tends to look like the explanation of what it does.
  • A library for everything. Data processing, networking, cryptography, automation: someone has almost certainly written a solid library for it.
  • Great for learning and teaching. It's the easiest language I know for exploring an idea quickly and showing someone how it works.

Where I've used it

PyGuard Security Lab, on my GitHub, is built with Python, HTML and CSS: a social engineering simulator, a SQL injection lab and a real-time AES-128 encryption and decryption playground. Security is a recurring theme in my work, from remediating SQL injection in a legacy WordPress stack at Next Generation Solutions to enforcing role-based access in portals, and Python is a good language for learning how attacks and defences actually work.

How I choose a language for a project

I don't start with the language. I start with the project and work backwards:

  • A fast, SEO-friendly website or web app: TypeScript with Next.js. Server rendering, image optimisation and routing come built in, and it scales from a marketing site to a full platform.
  • An admin-heavy back end with lots of data rules: PHP with Laravel, often behind a Next.js front end.
  • A mobile app for iOS and Android: Dart with Flutter, sharing APIs with the website.
  • Automation, data scripts or security tooling: Python.
  • An existing system: whatever it's already written in. Rewriting working software in a fashionable language is rarely the best use of a client's money.

The languages underneath

Two more deserve a mention because every project depends on them. SQL, for MySQL and PostgreSQL, is the one language I've used in every serious project; designing the database well matters more than any framework choice. And Bash, for configuring Ubuntu servers and Docker deployments, is what keeps the applications above it running.

What matters more than the language

Honestly, the language is rarely what makes a project succeed. Clear requirements, a sensible data model, security from the start, and deploying early and often matter far more. A good language just makes those things easier, and these four make them easier for me.

Want to talk about the right stack for your project? Get in touch, or see how these choices played out in my case studies.

Keep reading