Dutch PHP Conference

On Friday the 24th of June our back-end team watched the Dutch PHP Conference online. To hold on to the inspiring talks and techniques we wrote down our notes and some takeaways from this conference.

Thanks to Jochem for co-writing and reviewing.

Use an API contract for testing and development!

— By Danny Verpoort

Danny did a walkthrough of creating an OpenAPI spec, generating a client from it, publishing it with GitLab, and using it.

With swagger-ui he created an HTML representation of the OpenAPI spec. The client was generated with openapi-generator-cli.

He finished with interesting recommendations which we will look up next week:

Love Your Monolith

— By M1ke

Mike gave an opinionated talk about monoliths, he admits that right in the beginning. Not that monoliths are great/suck or that microservices are great/suck talk, but an interesting view on software architecture. At GRRR we regularly discuss microservices, on other moments we discuss event sourcing, domain driven design, and software architecture. This talk combines the two. He says it’s possible to apply the learning from microservice (decoupling, split systems by business domain, …) to monoliths. Replace API calls with function calls and use static analysis (@psalm-internal) to ensure the domain boundaries are respected. A very refreshing view.

Creating satellite microservices around your monolith could be a nice improvement. It doesn’t cost a lot because it gives some benefits of microservice architecture, but prevents the authentication and dependency problems a full-blown microservice setup gives. Sending emails and analytics were two examples he gave. Concrete and relatively easy services to create, but leave the rest of the application in the monolith.

For us, the talk showed we are doing things right, but we can improve our monoliths.

Bugfixing your career

— By Diana Scharf

After two technical talks, it’s time for a non-technical one. And it was an inspiring one. Diana points out that she won’t use bullshit quotes. She kept that promise. Honest stories about the challenging moments in her career.

Diana comes up with indicators to monitor your work happiness. When an indicator gives a negative value you have to do something. What? She can’t give that answer, because that means bullshit. Her indicators aren’t your indicators. You have to come up with your own. We liked the honesty.

The talk was not completely non-technical, and I quote, “Your career is a codebase: it has bugs and performance issues. Create small PR’s to fix it.”.

Building Recommender System in PHP8

— By Mihailo Joksimovic

Now we know what vectors are, or we think we know it. After some math, Mihailo dives into machine learning with PHP. We all thought, that for ML you need Python or R, but it turns out PHP has good libraries for it: Rubix ML and PHP-ML. After some examples, we just wanted one thing: an experiment. So the next thing on our todo-list: find a dataset.

Scaling: from 0 to 20 million users

— By Josip Stuhli

Interesting talk about a company that grew from 0 to 20 million users. Josip explains the growth of their infrastructure and shows the challenges they encountered. Starting with a simple cPanel server up to a worldwide Kubernetes cluster.

His takeaways:

  • Be stateless where possible
  • Queue everything that is slow
  • Monitor everything - Optimize something
  • Know how users interact with the application
  • Cache
  • Recognize the right tool for the job and change if necessary

For us, the last takeaway was an inspiring one: not being afraid to replace a solution with another one.

How to lead brilliant developers

— By Bryce Embry

An inspiring talk about helping talented people work together in a team. Bryce defines three personality types:

  • The idealist: making the best system possible, but not taking time into account. Role model: Steve Jobs.
  • The tech-focused: comes up with brilliant solutions but lacks communication skills. Role model: Thomas Edison.
  • The dissenter: Someone who is not afraid to have a different opinion. Role model: Galileo Galilei.

He explains how a manager can use the strengths of personality types to let developers flourish in a team.

An idealist has ideas to make a product great. But when time is limited it’s not possible to implement every idea. Capture those ideas in tickets, so the idealist won’t have to be afraid these will be lost. When the time is available it’s possible to implement those ideas.

The tech-focused type comes up with brilliant solutions but lacks communication skills. Bryce explains you can help tech-focused people by avoiding ambiguous responses, being precise in your language, and being predictable.

And the last personality type. Dissenters are developers who challenge common wisdom. As a leader, you can facilitate that by encouraging disagreement, finding compromises, and focusing on mutual purpose; everyone wants success for the whole team.

In the real world, the types aren’t that strictly divided, but it’s an inspiring way to characterize people.