Ramblings of a Tampa engineer
Photo by Ben Griffiths / Unsplash
đź’ˇ
If you are looking for a technical driven blog post on why PHP is cool - this is not it.

A decade or more ago a bunch of friends sent me the article "PHP: a fractal of bad design" and joked at me for programming in PHP. The article had some valid complaints, but PHP was a language that started so long ago it naturally had rough edges all around that with a bit of knowledge you could avoid. Of course with 15~ years since that post PHP 7 & 8 made some major improvements to the language and I still very much enjoy working in the language.

However around that time (2012) I felt it was difficult to get websites live with a server side language without PHP. I remember a ton of online forum friends were more involved in the Microsoft realm of languages, but if I wanted to host a website using ASP.NET I pretty much needed to use Windows Server with IIS at that point in time.

My comfort around 2007/2008 was more passing around desktop applications and downloading software instead of using a website. While the present Halo game has a stat website known as Leaf my earlier iterations of it were Visual Basic applications.

An old "Halo 3 Stats" tool I built in VB.net

I wanted leaderboards and interactive features that a desktop application with no API could not solve. I was young and still exploring technologies so I gave Java a shot because the "write once, run anywhere" was such an interesting tagline. Of course in a web server model you only need your server to speak HTTP so the run anywhere wasn't really relevant as it only needed to run on whatever my server operating system was.

This was a challenge for someone jumping into the web world because I was immediately presented with Apache Tomcat and .war files. I could write a little Hello World Java application, but then I needed "ant" and some commands to build a file that Apache Tomcat would understand.

I needed something different and stumbled upon PHP as I could see it was preinstalled on my small free VPS I obtained. I struggled initially because I was trying to figure out the difference between mod_php, php-cgi, suphp and more. I didn't fully grasp how the web server and language worked together but I knew once I picked a specific one in cPanel it just worked. My mind was blown when I changed a file and refreshed my web browser and the change was live. I wasn't struggling to compile and upload a package like Java I just changed a file on the server and it worked.

Printing out manuals of PHP to learn.

At this point in 2007 I knew PHP was for me, but I knew next to nothing about it. So like any not normal programmer I printed out a variety of PHP manuals and just started reading. It was an odd way to learn, but it helped establish a form of memorization for all the parameters, functions and more that existed in the language. I was slowly learning all the features of PHP to help my projects and understand my forum software (IPB & phpBB3) a bit better.

https://getcomposer.org

Skipping the history lesson and jumping forward to 2025 - PHP is just wonderful to develop in. NGINX pairs excellent with php-fpm and the language enhancements that come with every PHP release are a delight. I started thinking that we only have one package manager (composer) that the entire ecosystem supports which is also great.

I use Laravel for all my PHP projects (and at work) and an opinionated framework that enables support from any hire or contributor with little onboarding is amazing to me. I remember my first few experiences working in a home grown no framework PHP project and boy that required some serious time to understand how it worked internally. As I've aged I've started to appreciate conventions, patterns and opinions over frameworks that leave the interpretation up to you.

I've had the chance to join projects working with Python, Node and Ruby and my experience there hasn't come close to the positive experience I have with PHP & Laravel due to a few things.

Photo by Growtika / Unsplash

In the Node land I see a few really odd things that detract from the developer experience. The CommonJS/ESM module system is a pain as it tries to unify to one when you have to figure out what a project is based on filenames or a type:module in the package.json. Trying to run TypeScript without a bundler (Vite/Webpack) or unofficial launcher (bun, deno, tsx) or experimental Node parameters (--experimental-strip-types) is annoying. Finally bringing in any package and next thing you know you have 50,000 packages brought in via either npm, yarn, pnpm or bun.

In the Python land I'm surprised to still see so many tools suffixed with 2.7 or 3 showing that major breaking changes in a language is disastrous still 15 years later. I've joined projects where the requirements.txt file is missing versions or the project lacks any lock files. Did no one learn in the past 20 years of the benefit of lock files for your dependencies? Even once that is resolved struggling to find an entry point as there is just hundreds of .py files scattered in the root is a new problem. Thankfully it seems Astral is taking the entire Python ecosystem and making it sane with its own registry, package manager, linter, type checker and more.

Finally in the Ruby land its like the Bundle package manager just compiles Linux kernels on the side for how much compilation goes on. The amount of times I've tried to just run bundle install and found my Ruby version was an issue or some package is trying to bootstrap a native compilation and failing for some cryptic ffi issue is too many.

So when I sat at Laracon listening to people explain Laravel & PHP and its features I think about the people who didn't know the power of Laravel. The people who struggle to find a package for a queue system in Node when its native in Laravel. The people who are tired of setting up a build environment just so bundle can run without an error. The people who use Next.js and can't tell me if their project is a static site or not. The people who are still using pip in 2025 and not locking their dependencies.

PHP is cool and Laravel makes it cooler. Even after seeing more and more of other web design stacks around and I keep being drawn back to PHP.

You’ve successfully subscribed to Connor Tumbleson
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Success! Your email is updated.
Your link has expired
Success! Check your email for magic link to sign-in.