Calm Engineering Posts

CI/CD with Jenkins using Pipelines as Shared Libraries

Calm we have developed pipelines as shared libraries for our CI/CD which has increased developer velocity and reduced DevOps shoulder taps. Jenkins pipelines are not new and they have become a staple for many teams that use Jenkins for their CI/CD needs. Today we are going to discuss how we @calm use predefined pipelines that complete the expected tasks based on input from local config for our continuous integration and deployment needs across different repositories.

Read More >

Working Groups that Worked

Many of Calm’s most compelling products and ideas come from organic collaboration. We see success when we collaborate across orgs, across experience levels, and across backgrounds. This commitment to openness is where we started talking about working groups.

Read More >

Zero to Launch Ready with Performance Testing

How exactly do you scale to launch tens of millions of users with a timeline of just a few days? Here is the approach we took to make our systems able to support a massive launch on a short timeline at Calm. We hope you will find it valuable to learn about how we introduced performance testing and used latency data to guide how we chose to optimize our codebase and scale up resources for the launch.

Read More >

RDS Postgres Migration with Zero Downtime

Have you ever wondered what it would feel like to change planes while it is in flight? I for sure do not want to be on that flight, but that is exactly what we had to do at Calm!

Read More >

M.I.C.E: Adding Motion to the I.C.E. prioritization framework

When I joined Calm in early 2017, we were drastically behind our main competitor in terms of key metrics like revenue, brand awareness and money raised. In the next two years, with a team that was a tenth of the size of them, we managed to overtake them in most metrics and also to become the first mental-wellness unicorn. We were amazingly still only a team of about 25 people a couple months before we signed term sheets on the valuation.

Read More >

Cleaning 12k Helm 2 Configmaps

If you’ve ran helm in a development cluster for over a year and wasn’t aware of TILLER_HISTORY_MAX, you’re not alone 🤣🤣

Read More >

Moving Calm to Microservices

Moving a large backend application from a monolith into microservices is a hugely complex undertaking. It’s been done many times by many teams, but it’s never done quite the same way twice, and the details are always super interesting. I’m excited to tell you about this journey we’re on at Calm. We hope you find some of our decisions and learnings valuable in building your own distributed software applications, and that you’re able to see a bit more “behind the curtain” of the magic that makes Calm’s products tick.

Read More >

How Apple’s 2017 App of the Year Transformed in 2018

As we enter 2019, I’m grateful to reflect on an incredibly rewarding and productive year at Calm. Join me in exploring our iOS app’s evolution since our v3.12 release on January 2nd, 2018. Sometimes it’s hard to imagine Calm existing any differently than it does today, but know that we are always growing, always changing, and always testing new ideas. Our roadmap is infinite and our dreams flow with the breeze. Awesome ideas come from everywhere and everyone, and our goal is to streamline these inspirations into a beautiful experience that is continuously improving. Let’s get into it:

Read More >

Internationalization With React-Intl

There’s a lot to keep in mind when it comes to internationalization of a project, but most companies don’t want to think about supporting multiple languages right from the start. In fact, most companies shouldn’t localize right from the start. It’s faster to develop when not thinking about translations.

Read More >

Flexible Mobile Content Layout

When we were facing this challenge last summer, we had an API that was “dumb” in the sense that it just sent down a list of sorted `Program` models to the mobile client. The client was responsible for all decisions about layout — visual cell style, grouping of cells into sections, section titles, section scroll behavior, and the action to take once the cell is tapped.

Read More >