From the artistic heritage of the Netherlands, Amsterdam Cees-Jan Kiewiet is a Senior Software Engineer at MomentiveAI. Cees-Jan has been a part of WyriMaps, ReactPHP, PHP-FIG, highly interested in asynchronous programming and generic maniac. We’re delighted to have him with us today as he talks about his background, his PHP journey, and much more.
Shahzeb: Hello Cees-Jan, thank you for taking time out for this interview. Before we start, how about you tell our readers a little bit about yourself?
Cees-Jan: Hi my name is Cees-Jan, the C is pronounced as a K, and I’ve been doing PHP for years. As long as I’ve been programming I’ve always ran my own servers to host my projects/websites on. As a result of that I have more recently transitioned into becoming an SRE, and now I’m doing PHP, TerraForm, YAML, and anything that crosses my path.
Shahzeb: So, when and how did you start your career with PHP? Any interesting stories that you would like to share about your journey? What were the challenges you faced in the beginning, and how did you overcome them?
Cees-Jan: Career or when I started learning PHP? PHP itself was learning it around version 4.2 – 4.4, when I was still in school. And it’s just pure random luck it became PHP because the script I found for a toplist was in ASP, and there were no free hostings offering ASP, PHP however was offered by plenty of hosting companies. This was nearly 20 years ago, 5 years or so later I started my first job doing PHP. Two days into the job my direct boss had quit and I was the sole PHP developer.
That job taught me a lot, especially that what your code’s users say does not parse what they want. And that what they want is not possible, per se. Communication skills are something to foster and build throughout your career. Learning how to say no without saying “No.” is an artform that took me years to master, but turned out to be very important. Also giving your users a choice between two options might mean they will go for the third option.
For example, on my first job, I created a cronjob that created an Excel sheet with an image graph in it. Now this was around the time Excel switched from the .xls to the xlsx format and the exporter I used supported both. However, there was a catch – the .xls format supports only .bmp images and those are bigger, which will fill up email boxes. The .xlsx format also supported .jpg images which are nice and small, but required the user to click Ok with a warning. When giving the user the choice between those two, they went with option 3: Small images without the warning. That project was shelved the next day.
Shahzeb: You have also co-maintained projects and packages such as ReactPHP, php-api-clients, and reactive-apps. Could you tell us a bit more about these packages? Who can use these packages and how does it help developers and PHP users?
Cees-Jan: About 8 years ago, I joined ReactPHP to build the filesystem package. Since then, I’ve been working on pretty much every package we maintain, and more recently the `react/async` package which will bring fiber support from 8.1 to our ecosystem.
ReactPHP is a PHP implementation of the reactor pattern to bring non-blocking programming to PHP. This allows PHP developers to build long running application services that handle more than one HTTP request simultaneously using a single PHP process. Both other projections you mention are built on top of it, php-api-clients are a set of API clients using ReactPHP. And reactive apps is the previous iteration of the personal framework I’m developing to run my applications on.
Shahzeb: Do you like to share some tips and tricks for those who are just starting to use PHP?
Cees-Jan: For PHP specific:
- You don’t need a webserver to run PHP, from the console is perfectly file to fiddle around with scripts.
- Use composer from the start, it makes live better in many ways.
For programming in general:
- Never stop learning.
- You will make mistakes, and you will learn from them.
- Once you’re good with one language learn another, I’m currently learning TerraForm to managed my kubernetes clusters with (including the one I’m building at home).
- Nobody should or does expect you to also code outside of the job, you’re free to have any other hobbies. Personally, my wife and I have picked up building LEGO sets over the pandemic. To the point that I’m working on an enclosure for my kubernetes cluster with lego.
Shahzeb: Can you tell our readers more about some of the best PHP projects you’ve worked on?
Cees-Jan: Too many. I contributed to many projects including composer, PHP itself, frameworks, and countless packages. Most of them are great, some awesome. But each and everyone was a learning moment.
Shahzeb: You have an excellent overall rating on Github. What’s your secret? What tools and dev flows do you use for your web projects?
Cees-Jan: Writing code makes me happy. Starting something new gets me excited, do that often enough and you have a ton of packages and code on GitHub. GitHub Actions has been instrumental in improving my package workflows. Releasing a new version at this point is a matter of closing the milestone and a workflow will generate the changelog and tag a new version + release it. Back in the days of TravisCI, I had a simple workflow that would only run unit tests, but these days I use makefiles to define and check a package pass before considering it ready to release, and my workflows pick the list of checks up and run each of them on CI.
Shahzeb: What type of web hosting would you prefer? In your opinion, what are the benefits of hosting a site on a managed solution provider rather than conventional shared hosting?
Cees-Jan: When I started doing my own projects on their domains everything was shared hosting. Which was great because you got your own allocated resources like storage and bandwidth without anyone else that could use that unless you gave them access. (Of course, enough shared hosting providers did overbooking, but the idea was solid.) These days, everything I run is on Kubernetes. Kubernetes looks a lot like shared hosting, a) you get a defined set of resources (CPU, RAM, and disk space), b) you’re restricted to your namespace, c) no one can enter unless you grant them access, and still d) someone else manages the hardware.
For me, managed hosting is about the convenience of having someone else managing all the hardware upgrades, getting woken up when servers go down and transferring customers to new servers without downtime, and preferably without them knowing until the postmortem about the incident. It doesn’t matter if it runs on managed hosting, cloud hosting, or managing their own iron.
Shahzeb: What do you think about managed hosting solutions like Cloudways that provide an optimized PHP stack with features to deploy their web apps?
Cees-Jan: My current job as an SRE involves just that, we maintain the platform for our own developers to build and deploy their services on. That includes providing or aiding them with the tools and environment to deploy. And Cloudways does that for external clients, instead of our own developers/internal clients. There is an enormous amount of value in that for clients that can’t or don’t want to set up their own OPS/SRE team to manage that to the specific needs of their developers.
Shahzeb: What do you look for in a PHP host? In your opinion, what are the benefits of using cloud-managed hosting over conventional shared hosting?
Shahzeb: It’s really important to balance your personal and professional life. How do you spend your time when you’re not working?
Cees-Jan: Mostly play games or write code on my personal projects. Having a healthy separation between home and work, for me, means working in an office.
Shahzeb: Who do you suggest we should interview next and why?
Cees-Jan: It’s hard to pick just one name:
Renato Mefi – for guiding me into the SRE role I’m in now.
Christian Luck – for maintaining ReactPHP together and shaping the future of non-blocking PHP.
Shahzeb: To inspire our readers, I would appreciate it if you could please share some snapshots of your office space or your current workstation.
Shahzeb: Thank you once again, Cees-Jan Kiewiet!
Start Creating Web Apps on Managed Cloud Servers NowEasy Web App Deployment for Agencies, Developers and E-Commerce Industry.
Shahzeb is a Digital Marketer with a Software Engineering background, works as a Community Manager — PHP Community at Cloudways. He is growth ambitious and aims to learn & share information about PHP & Laravel Development through practice and experimentation. He loves to travel and explore new ideas whenever he finds time. Get in touch with him at [email protected]