README: Damian Boni talks PHP, AngularJS and his love/hate relationship with the world of WordPress


Hello. Welcome to README, our new blog series focusing on our ever-growing Engineering team. Check in every couple of weeks for dev chat, anecdotes, interviews and suchlike. We kick off with Damian Boni, who joined Kyan's Software Engineering team a few weeks ago. Welcome, Damian. 🍊


Tell us a little bit about your career before you joined Kyan.

I worked at a digital agency and my main focus was PHP, Laravel and WordPress projects, plus a few other content management-related projects like Craft CMS. I also helped with system architecture on .NET Framework projects.

Have you worked in Ruby a lot already?

A few years ago I looked at Ruby but have never used it professionally until now. I’m essentially grabbing it by the horns and running with it.

How does Ruby compare to other languages?

From a syntax point-of-view it bears some similarities to Python, which I know bits of.

Coming from PHP, I wanted to identify what the main differences are, because I was hoping I can transition some of the knowledge I have.

Right off the bat I found out that there are many similarities between Rails and Laravel. There are some peculiarities, like symbols, that Ruby does really well. The whole concept of symbols doesn’t even exist in PHP, so I find these very beneficial. It’s one of the of the extra toolkits you have in your arsenal and I think it’s a really interesting concept and something that PHP could benefit from.

Some of the methodologies and how we write code in Ruby are very specific and it takes quite a long time for someone new like me to essentially get my head around how we can code one thing in what we consider ‘best practice’ for a particular project or team.

One of the strong advantages of Ruby is that it’s fairly loose in that you can do many things in many ways. With PHP, “this is the way to do it” and that’s about it. So Ruby has an advantage here for anyone learning it because you can essentially do one thing with five different approaches. The downside could be that with these good practices in place, maybe only one of those options would be applicable in a particular scenario. Learning which one is the right or wrong one and learning which way fits with a certain situation can be hard. So the learning curve is greater.

But this is all in the community, so there’s nothing that sets these best practices in stone. But you can ask your teammates, they can peer review your code and they can advise on the wider context of your code.

Having a client for that many years is a great testament to Kyan's ability to maintain a healthy relationship and be able to adapt to customers' needs.

And that leads on us quite nicely; you’re on our Canada Life team, one of our longest client relationships at nearly 15 years. What are your first impressions of the team and the work you’re taking on?

It’s a really interesting team. Some people have been there since day one and others have come in a lot later in the projects. So it’s challenging in that sense because you may encounter a feature that someone implemented two or four years ago. And perhaps they’re no longer here, so I can’t ask them how we can bundle our features together.

But also because of the length of the project, it’s very well established. So there’s not much of the ‘unknown’, and there’s a lot of understanding, a good relationship with the client, and good communication all round. So it’s easy to clarify unknowns if any do arise. Having a client for that many years is a great testament to Kyan’s ability to maintain a healthy relationship and be able to adapt to customers’ needs. I am very proud to be part of Kyan.

What’s been your favourite project to work on and why?

My favourite has got to be the My Amazon Jobs website. It’s a site that helps Amazon build awareness of its products and services, and to boost recruitment.

I found it very challenging in terms of the timeframe that I was given to deliver the product. But also very rewarding at the same time, because other than having the prestige of building a website for Amazon, it was the whole aspect of what we were trying to achieve with the website, which is to help people find jobs. I think that is very rewarding.

Are you working on any side-projects?

Yes, I’m actually wrapping up the first release of a project I am doing for a friend of a friend. It’s a great idea around helping small businesses in London and beyond to find their identity and presence online.

It’s a fairly basic website, which takes the concept of what Google does right now in (search results, maps, reviews, comments, etc.) but moves it one step further so people can recommend each other. The review system is a lot more versatile, you can give directions to each business, and business pages themselves are greatly improved.

I strongly believe in a collaborative, open-source community and that we should share the work that we do.

You recently spoke at WordCamp London. Tell us about your talk and the overall experience for you.

My talk was about using AngularJS and APIs, and how we can use that with WordPress.

I met someone who told me I’d be a good fit for the conference. I was surprised that I got selected to talk, because I didn’t anticipate that the subject I chose to be that interesting.

75% of the talk was about technologies that have nothing to do with WordPress. But I found it very exciting for the WordPress community to be so open to other tech, and wanting to learn more about what can be done with WordPress other than its own package.

It’s a very unique community and I feel like other communities could learn from the way it operates. If you’re open-minded, chasing the technologies and constantly keeping up with what’s happening in the industry and in the world of web dev, you’re bound for success and you’re bound to produce a quality product. I feel like the WordPress community, especially in the last few years, shifted towards being more open-minded about what’s happening and how technologies can be implemented to make it better.

Having said that, I spent the last couple of years working with WordPress platforms, and I found myself with mixed views. I could say I hate parts of it. I can appreciate its advantages and the benefits it brings for many people. It’s a great platform and offers the basics for smaller businesses who can really benefit from spinning up a quick website with content management. But what happens often is that some people take it too far and demand too much functionality out of it. And that’s when it starts to lag behind.

Coming back to the subject of me going to Wordcamp, I was going there with that mindset. Part of me wanted to talk more about the untapped potential of WordPress. But at the same time I do identify and appreciate what it can achieve for developers and businesses. Developers like me have a willingness to enhance its functionality to make it more attractive to other developers.

So I used my own experience, experiences of my peers, and listening to the community. I also researched into up-and-coming, trending technologies within the web dev community in general. And one of them was the speeding up and accelerating of the front-end by using React and AngularJS to build your apps, and then using the API plugin to expose WordPress’ back-end to handle all of the business logic. I really like that concept, and coming from a strong background of back-end and using and building many APIs, I wanted to leverage that and figure out how we can use WordPress or other CMSs to create that relationship where you actually use CMS as your API back-end driven business logic, and then put something on top of it, which is the front-facing website built with one of the modern front-end technologies such as Angular or React.

Other than being a CMS, WordPress is a well-built library of methods, functions and structured databases. It’s very easy to add extensions/plugins, which makes it attractive for developers to quickly modify it and enhance its functionality. And if we stop thinking about it as a very slow or medium-level blogging platform and start thinking of it as a technology stack, you start getting the idea of its potential. And I think I helped the community understand that. You can, for example, turn the CMS into a fully-fledged API and start combining that API with whatever front-end technology stack you choose, and I think that’s fantastic.

At the same time I am trying to promote the APIs in general, because it’s essentially the Internet of Things. Whenever you develop something or I develop something, I want people to be able to use it, and reuse it. If you’re an end user and you go to a particular website and use a mortgage calculator for instance, I want you to be able to use it. But at the same time, behind this mortgage calculator is some business logic, like calculating repayment charges. There are broken-out functions that this calculator is made of and I would love to share that individual functionality with other developers. They may not reuse the whole thing but some aspects of the application may be useful and APIs allow you to do that. I feel like nowadays most of the APIs are closed off. But there are many that are out there, open, and free-to-use whenever you want to obtain information.

I strongly believe in a collaborative, open-source community and that we should share the work that we do.

What digital products or apps do you really enjoy using?

I use Whatsapp a lot and I think it’s great. I love that it’s (almost) free. I think it achieves so much in such a little package and it does it well.

I also like Spotify. I like how it can find recommendations based on your recent music or music you’ve liked. I love how you can click on any particular song and you can spin up a whole radio of similar songs to it. I think Spotify does that recommendation aspect very well.

I wonder what makes it work, what the functions are. How does Spotify identify the similarities between the songs? What makes one song similar to another?  I’m interested in how much human input they need and how much AI and automation is used in the process. I am really into that kind of AI.


Check back soon for the next README. Follow us on Twitter for regular updates.