Ready to upgrade your dependencies?

If you are a seasoned developer, you have probably made it into a second nature to pin the versions of all your dependencies, and you make sure that no library, SDK or other alien code can sneak up a quiet version upgrade into your production bundle without a lot of red flags rising up.

Odds are that you have experienced first hand the horrors unleashed by letting versions float freely…

And if you haven't, let me tell you about this little adventure we had today at Gofrendly. Bare with me. Be ready for pain. And tears. And crushed kittens.

Gofrendly’s backend ecosystem

Gofrendly’s…


So you got this amazing list of email addresses that your marketing team is literally drooling over, but you can't feed it into mailchimp/sendgrid/{insert-your-favorite-mass-mailer-here} because THAT LIST IS ON PAPER.

There you think: "WTH? Printing a list of emails on paper? Who does that?"

Obviously someone did, since one day I got face to face with 200 pages of dead tree covered with finely printed email addresses. That was the input. Expected output: a csv list of email addresses in an actual computer file.

This article shows the steps I took from input to output.

The secret sauce: Popper for…


Python is my language of choice for backend programming. Python is slow. Python is not statically compiled. Python has dynamic typing, with all the runtime sluggishness that implies. But it does not matter.

To build Gofrendly's backend, we could have chosen Java, Kotlin, Go or Node or anything else really. As long as it comes with a stable and generous ecosystem of third party libraries, and as long as coding time from idea to working prototype is fast enough (Bye-bye Java).

But the speed of the language itself was never important. And this is why:

Profiling Gofrendly's backend API

The screenshot above shows you…


Gofrendly is a social app for women. Its central feature is a realtime chat, very similar to what you find in Facebook Messenger or WhatsApp.

With realtime chats being such a central part of so many apps, you would expect them to be relatively easy to build by now. They are not. There are some approaches and tools that simplify the task, but none that fits perfectly.

This article is a discussion about various realtime chat implementations that we have tried at Gofrendly over the years.

Solution One: outsourcing your chat

Ideally, we would have liked to let someone else handle the chat infrastructure completely…


About Gofrendly and justifying a mad journey of technical debt cleansing

This article describes the process of rewriting Gofrendly's backend from a monolithic architecture based on PHP and mysql running on single virtual machines, to a dockerized Flask application with no-SQL databases and autoscaling in a GKE kubernetes cluster. Without a single user noticing it (almost).

Gofrendly, a friendship app for women

Gofrendly is a Swedish friendship app for women. Its goal is to help you find friends and get you out of your couch and into a real life full of social interactions and new experiences.

Ever moved to a new town and found yourself…


At the core, I am a software developer. Have been since the age of 12 when I got a pocket calculator with a 30 characters display, a few kilobytes of memory and a Basic implementation.

But while writing code has always been my comfort zone, I have long felt a craving for more, a longing to build a product, a team, a company culture. To become truly economically independent. So like many, when the time felt right, I took the jump and started my own company. And failed. And started again. And again.

This post is about the tough journey…


When implementing a REST api, a particular area of focus is endpoint speed optimisation. This is especially important in a social app like GoFrendly, where user experience will be profoundly impacted by slow backend calls.

Ideally, you want a REST endpoint to respond within 500 milliseconds. Longer than that and users will experience the app as slow, loose patience and move away, ultimately impacting your retention.

GoFrendly’s backend relies on two no-SQL databases:

  • Google Datastore, to store documents such as user profiles, activities or chat messages,
  • and Elasticsearch, in which some of the Datastore documents are mirrored, and in which…

Erwan Lemonnier

CTO at GoFrendly. Fullstack developer turned entrepreneur. Ex-employee of Spotify and Trustly. Author of the PyMacaron microservice framework.

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