I’m a software developer with over 20 years of experience, primarily designing, developing, and deploying web-based applications; mainly in PHP but recently in Golang. In addition, I’m also an experienced online educator, technical writer, and trainer, having written over 150 articles, published 3 books and 6 online courses, and launched two podcasts in the last ten years.
I’ve been developing web-based software since 1999 and just love writing it, any chance I can get. It might seem strange, but I just love to write and debug code because it’s both personally satisfying, and because I’ve seen how much well-designed and developed applications have helped people.
When I’m not writing software, I regularly share what I know — and what I’m continuing to learn — about web development on the blog, my YouTube channel, podcast, and products. What’s more, I’ve delivered a number of talks at international conferences and user groups.
The path that my web development career took happened almost by accident. I studied C and Java at university and loved the way that they worked, and imagined that that’s what I’d be doing till my career ended.
However, very early in my career, I was working for an engineering firm in a small town, and the boss asked if I knew anything about PHP and MySQL. I said that I’d not heard of PHP, but that I did had worked with MySQL. After that came: “Well, are you keen to learn them better — because no one else is!”
I said “yes”, and then dove in and learned all I could about them. And with that, my life changed. Bear in mind that this was the time of PHP and MySQL 3.x.
Since then, it’s been a rich and rewarding journey of creating all manner of web-based software, primarily with PHP, in three countries: Australia, the United Kingdom, and Germany.
I’ve written web-based apps and services, largely in PHP, against all manner of databases, including MySQL, PostgreSQL, Oracle, and MSSQL Server and queuing, caching, and logging servers (both self-hosted, and cloud-based), to name just a few technologies.
I never realised at the time that the decision I had just made would lead me to where I am today. Like many others, I saw a world of possibility open up the more I discovered and embraced open source.
I’ve had the good fortune to learn about and use a rich tapestry of tools and languages, including Docker, Python, Java, IPTables, Apache, NGINX, Fail2Ban, Snort, ELK, Bash and Zsh, Curl, and so many other fantastic tools.
So many options. So much freedom. So many possibilities!
When not creating software or talking about it, I love spending time with my wife and family, and trying to make the most of German weather. I miss the warmth of sunny Queensland, Australia.
My first two computers were Apples; the first was an Apple IIc and the second was an Apple IIe. Yes, you can program on those. My second computer I bought for myself was shortly after Windows 95 came out — and cost me over AUD $5,000. It was, seemingly, a lame duck of a computer that, when combined with Windows 95a, crashing, what seemed like, constantly.
From that experience, I went, desperately, looking for something stable, something that worked. I found Linux (specifically, Red Hat 6.0 (Hedgewig)) (which you can see in the screenshot above), and have never looked back. I discovered all manner of software available for free, including compilers (including Python, C, and Java), text editors, office suites, you name it.
My first (after getting back in to software development) most satisfying experience and fond memory of software development was a small networking client/server app that I wrote on Linux, using a custom protocol. Sure, it didn’t do a lot, but it worked, gave me my first taste of network programming, continued to keep the flame of my love of software development roaring, and left my father wondering what I was so excited about.
Sure, it wasn’t the sleekest of desktop experiences, but it worked, the documentation was available in abundance, and I could just get on and get my work done. Since that time I’ve written code in PHP, Python, Java, Ruby, Kotlin, Bash, Go, Prolog (would you believe it?), C, C++, and a handful of other languages. Am I a master of any one of them? No. Do I need to be? Not so far. Would I like to be? Yes! However, I’m enjoying, progressively, getting better at them all, slowly but surely.
The first compiler that I remember using was Borland Turbo C++ on Windows 95a, for the short period of time that I used that operating system. After that I used open source compilers. I’ve built networks, setup DNS, DHCP, queueing, caching, logging, and web servers, configured firewalls, and done all manner of things in Linux, including starting down the certification track.
In addition to all these things, I love to write, mainly blogging, but also ebooks. I’ve been blogging for over 8 years, and have written for such sites as Sqreen, Twilio, PHP Architect, Codeship (now CloudBees), SolarWinds Loggly, and Pantheon.
I also love to walk, cycle, wander, explore other cultures, and try new foods. I love spending time with my young family, listening to good music, talking with friends and family until we all get too tired and have to go to sleep.
I’m a native English speaker, but am fluent in German, and have learned the basics of French and Czech (believe it or not). I’m intending to pick up those languages, just as soon as I’ve sufficiently mastered German.