The company I work for is a data-driven company. It is necessary for us to make the best decisions and aim for our core value: being customer-centric.

Image for post
Image for post
AB tests are not for experimenting things, but to measure them.

Naturally, when we iterate on a feature, we study the data to define how to improve it. And because we can’t improve what we don’t measure, we measure the results of our new version with the previous version.

To do this, we almost systematically perform AB tests that we couple with our events database.

And since it’s HacktoberFest, we published one of our tools in open source here:

Next part of this article is to start your first AB test, like changing the subject of an email when a new user registers. …


Lets see how this great piece of PHP engineering is working!

The Doctrine Project is a very big project, used and integrate in many PHP projects or libraries. It’s a set of package, whose the best known is probably the ORM build on top of the DBAL package. But there’re also many great packages like the Annotation, the Collections or the Cache. They are standalone and can be installed with Composer. So whatever is already used in your project, you can pick whatever you need in.

Let’s go deeper in a very small but very important doctrine project: the Instantiator!

A small, lightweight utility to instantiate objects in PHP without invoking their…


Keeping your projects documented is very important. Everyone want to have it, but it must be simple, efficient and well maintained.

API Blueprint is another specification for describing REST APIs. It written in a Markdown-flavored syntax, but not exactly. It’s based on on the element names, order, spacing, and other details. If you describe your API with API Blueprint, you will find a lot of tools that support it.

API Blueprint is simple and accessible to everybody involved in the API lifecycle. Its syntax is concise yet expressive. With API Blueprint you can quickly design and prototype APIs to be created or document and test already deployed mission-critical APIs.

The API Blueprint ecosystem is very big, there’re plenty of tools in every language. …


Why creating another monitoring service when there are new monitoring services every day?

I love this comic, because it definitely apply to monitoring services:

Image for post
Image for post
http://imgs.xkcd.com/comics/standards.png

Here are the 5 reasons why creating a new monitoring service:
— Need something simple and fast to configure
— Wan’t to have distinct information about our deployment impact
Powerful configuration that could be updated by an API
— Errors reports useful for our ISO-27001 compliance audit report
— Plan affordable for companies not part of Nasdaq

And here happen PepperReport.io 🌶

Configuration is a pain!

Too many service are made to manage 10 or 20 checks. But If I need more, it became complicated to navigate or find them.
I don’t like to have too many things to configure by clicking everywhere, and when a service provide all the option I need, I’ve to create many many many monitoring checks. …


How to monitor thousand of endpoints every minutes.

A one line CURL command could monitor any http endpoint with the same effectively that PepperReport does it.

But when you want to do this for thousand of endpoints, every minutes from many location in the world, with a history queryable in a fraction of second and detect even tiny Apdex trend, you will face many issues.

Image for post
Image for post

Creating this with a viable SaaS vision also add more new constraints:
It should be launched quickly and with a small cost per month infrastructure. It have direct incidence on how the service should be designed. For example there’s no money for renting many servers around the globe. …


Using the Validator component of Symfony

Before launching our SaaS project, we’ve plan a closed beta for few selected users, to retrieve our first feedbacks.

We decide to allow new sign up with an invitation secret code.

The main idea was to generate secret code that will allow sign-up form validation and we doesn’t wan’t to manage the storage of those codes. At least, we should be able to identify already used code to avoid duplicate sign-up.

Image for post
Image for post
Our sign-up form

Validation is a very common task in web applications. Data entered in forms needs to be validated. …


Last month I’ve made a small presentation for the Golang Marseille Meetup.
It’s about one of my medium article:

That’s a feedback of my very first lessons during the creation of a SaaS product with Golang. It’s about routing, middleware and Let’s encrypt.

Image for post
Image for post

How to update your postgres version without updating all your Symfony project deps.

Symfony 2.8 is a long term support version with security fix until november 2019. That’s why we still have in production projects using this version of Symfony. Perhaps, just like me, your stack architecture with micro-services may require a new version of Postgres, like the 10.5.

And so you have an issue like this when trying to update or validate or create a schema diff with doctrine:

SQLSTATE[42703]: Undefined column: 7 ERROR: column “min_value” does not exist
LINE 1: SELECT min_value, increment_by FROM “collection_user_id_seq”

This is a well know issue referenced in this issue (https://github.com/doctrine/dbal/issues/3139) and fixed there: https://github.com/doctrine/dbal/blob/83b72c1d85ce4dbe12525b646b1794ddfaa2c140/lib/Doctrine/DBAL/Platforms/PostgreSQL100Platform.php


Let’s create a UI to install and configure our Symfony open-source projects.

Image for post
Image for post

I’m planing to release the forum application used by forumforall.com. A Php7/MySQL/Redis project powered by Symfony 3.4. I’ve already try to release it with a open source version many times in the last years, but every attempt failed.

One of the difficulty, is to make installation easy for non IT people. You can’t ask them to use composer to bootstrap the project, even install composer or using command line. Mostly, the maximum you can require is to unzip a folder and move it to a FTP location.

For ages, a lot of CMS or Forum software have create UI to configure and install a project. …


During my free time, I manage different sides projects. One of them, and the oldest one, is ForumForAll.com. A forum hosting service. I’ve create it in 2003, when nobody have ever heard the “SAAS” terms.

Image for post
Image for post

It’s still open and in use, hosting more than 100k forums, totaling more than 6 million messages by something like 500k users. It’s powered by php 7.1, Symfony 3.x, Redis, Socket.io, nodeJs, MySQL and secrets recipes. But the metrics I really enjoy from this project, are the respond time and the cost of the infrastructure: 15.99€/month.

About

Thomas P

Symfony lover, Gopher and opensource enthusiast. Ex-firefighter 🚒, I miss cuting out cars 🚙.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store