All Hands on Deck
1 month ago, slack

Photo Credit: https://unsplash.com/@efeyagizsThis story speaks to the process behind incident response at Slack and uses the May 12th, 2020 outage as an example. For a deeper technical review of the same outage, read Laura Nolan’s post, “A Terrible, Horrible, No-Good, Very Bad Day at Slack”Slack is a critical tool for millions of people, so it’s natural when Slack going down can feel as stressful as when our power goes out, when the internet stops working, or when our smartphone runs out of batt...

A Terrible, Horrible, No-Good, Very Bad Day at Slack
1 month ago, slack

This story describes the technical details of the problems that caused the Slack downtime on May 12th, 2020. To learn more about the process behind incident response for same outage, read Ryan Katkov’s post, “All Hands on Deck”.On May 12, 2020, Slack had our first significant outage in a long time. We published a summary of the incident shortly after, but this story is an interesting one, and we’d like to go into more detail on the technical issues around it.The user-visible outage began at 4:45...

The App Sandbox
1 month ago, slack

Image courtesy Markus SpiskeThe latest release of the Slack desktop app features this curious entry in the notes:Batten down the hatches! The app sandbox is now enabled for all web content. This is a fancy way of saying we’ve dialed up the security of the app. It wasn’t unsafe before, but it’s double safe now.What is the “app sandbox,” what is it protecting against, and why does it matter? This post attempts to answer those questions, and provides a technical guide for Electron developers that w...

Scaling End-to-End User Interface Tests
1 month ago, slack

By Kavita Chodavarapu and Bryant UngPhoto: Joshua SortinoAt Slack, Quality is a shared responsibility. The Quality Engineering team is focused on creating a culture of testing, increasing test coverage, and helping the company ship high-quality features faster. We encourage all our developers to write and own end-to-end (E2E) tests. In turn, Quality Engineering (QE) is responsible for the frameworks used and provides best practices for writing reusable, scalable, and maintainable tests.In this p...

Prototyping at Slack
2 months ago, slack

Photo by Khara Woods on UnsplashOver the years at Slack — usually during periods of high growth — teams have defaulted to working in a waterfall where an idea is proposed and researched, then designed or spec’d, then built, in that order. It’s not the most efficient way to work and as a company grows — with more people involved at each step — it only gets slower.There is an incredibly high cost to going backwards; if you realize you got it wrong during the build phase, going back to the drawing ...

A Day in the Life
2 months ago, slack

6:28 amContinue reading on Several People Are Coding »...

A Day in the Life of a Frontend Foundations Engineer at Slack
2 months ago, slack

Sunset in San Francisco | Photo by Utsav Shah6:28 amFirst alarm rings. Snooze.6:30 amSecond alarm rings. Snooze.6:34 amFinal alarm rings and I know this is the last one, so I hop out of bed and immediately play some music. Music really has a way of waking me up, and I typically play Sofi Tukker or Rufus Du Sol radio on Spotify. I start getting ready to head to the gym for a morning workout. I’m not a morning person, but I’m a morning-workout person. I love working out before work because I arriv...

Happiness is… a freshly organized codebase
2 months ago, slack

Photo by jesse orrico on UnsplashStarting From the TopImagine joining a new team at a new company and you finally get access to a codebase.Slack iOS Xcode File Hierarchy 2017Where do you add a source file for your team’s project? Great question. Your new team has three source directories for you to add files to, and oh, you’ll have to figure out which one you want to use, which one your teammate uses, and where you’re going to find the files that need refactoring.The Slack iOS team lived in thes...

Development Environments at Slack
3 months ago, slack

Kaboompics from PexelsIn this article, development environments refer to sandboxes where you can test your code changes before deploying, and should not be confused with integrated development environments (IDEs) like Eclipse or Microsoft Visual Studio.Dev environments have always been a mystery to me. Despite learning about them on my first day at Slack, and using them almost every day for the last three years, I have never understood how they truly worked.Half a year ago, I set a goal to under...

A Day in the Life of a Mobile Product Engineer at Slack
3 months ago, slack

Ah, Vancouver | Photo: Lee Robinson6:45 amMy alarm is set for 6:45 but I often wake up before it goes off. I tend to wake up earlier during Vancouver’s long summer days, when the sun is up from 5:10am to 9:10pm and already peeking through my blinds, but it sometimes happens in the winter when it’s still dark out. Every morning starts with a hot refreshing shower before getting ready for work. I recently became a morning person and found that showering in the morning goes a long way in preparing ...

Hacklang at Slack: A Better PHP
3 months ago, slack

How and why Slack migrated to Hack, the benefits it gave us, and things to consider for your own codebase.Continue reading on Several People Are Coding »...

A Day in the Life of a Backend Product Engineer at Slack*
3 months ago, slack

Photo by Josh Wilburne on Unsplash*Prior to the COVID-19 outbreak and our current shelter in place orders in San Francisco.7amI’m definitely not a morning person, so when my alarm goes off, I can’t help but stay in bed a little while longer. I have two cats, Stella and Orion, who are especially cuddly in the mornings, so it’s hard to leave them and get out of bed. My cats are well known by my teammates as well as they make guest appearances in meetings whenever I’m dialed in and working from hom...

Deploys at Slack
4 months ago, slack

Photo by Ankush MindaBy Michael Deng and Jonathan ChangDeploys require a careful balance of speed and reliability. At Slack, we value quick iteration, fast feedback loops, and responsiveness to customer feedback. We also have hundreds of engineers who are trying to be as productive as possible. Keeping to these values while growing as a company means continual refinement of our deployment system. We had to invest in greater visibility and reliability in order to accommodate the amount of work be...

How Big Technical Changes Happen at Slack
5 months ago, slack

Photo by Farzad Nazifi on UnsplashKeith Adams and Johnny RodgersMost new things in technology turn out to be fads: patterns of talking and doing that come and go without leaving a permanent mark. Microkernels; EPIC architectures like IA-64; object request brokers; and 1990s’-style neural nets are gone, and will not return. Sorry for the deep throwbacks; only time proves which things are fads, so for uncontroversial examples we have to reach pretty far back.While it is hard to imagine today — at ...

A Day in the Life of a Frontend Product Engineer at Slack
5 months ago, slack

From Soraya García on Unsplash6:45amThe sound of coffee grinding wakes me up 15 minutes before my alarm. I’m not a morning person, but I always stumble bleary-eyed into the kitchen for some toast and coffee with my partner, which is my favorite daily ritual. I sit down, listen to my morning news podcasts — The Daily and AM Quickie — and check my phone for any Slack messages I might have gotten from coworkers in other timezones.8:08amI run out the door to catch the Transbay bus, one of the more p...

Reliably Upgrading Apache Airflow at Slack’s Scale
6 months ago, slack

Photo by Matt Duncan on UnsplashApache Airflow is a tool for describing, executing, and monitoring workflows. At Slack, we use Airflow to orchestrate and manage our data warehouse workflows, which includes product and business metrics and also is used for different engineering use-cases (e.g. search and offline indexing). For two years we’ve been running Airflow 1.8, and it was time for us to catch up with the recent releases and upgrade to Airflow 1.10; in this post we’ll describe the problems ...

Introducing Nebula, the open source global overlay network from Slack
8 months ago, slack

M16, the Eagle Nebula, from the public-domain NSSDCA Photo Gallery“What is the easiest way to securely connect tens of thousands of computers, hosted at multiple cloud service providers in dozens of locations around the globe?” If you want our answer, it’s Nebula, but I recommend that you read the rest of this short post before clicking that shiny link.At Slack, we asked ourselves this very question a few years ago. We tried a number of approaches to this problem, but each came with trade-offs i...

A Day in the Life of a Backend Foundation Engineer at Slack
8 months ago, slack

Photo by Casey Horner on UnsplashA day in the life of a Backend Foundation Engineer at Slack6:00 amWhile it’s not always easy to get up before seven, particularly when the sun hasn’t risen yet, being able to get a head start on the day before most of the city begins their commute makes it worthwhile. I sneak out of bed and get ready for work. I’m typically out the door, down the four flights of stairs, and walking to the BART by 6:50. I’ll pop in my earbuds and boot up the latest podcast in my q...

Gantry: Slack’s Fast-booting Frontend Framework
9 months ago, slack

Photo by SpaceX on UnsplashBy Anuj NairAt any given time, Slack has many product teams working on different features. This allows us to build in parallel and quickly release new features reliably. But it also means the architecture of our applications can differ. And it’s not always easy to share the knowledge gained and the tough lessons learned across teams.An important lesson we’ve learned over the last five years of developing Slack is to align on both what we create and how we create it. Ea...

Client Consistency at Slack: Beyond Libslack
9 months ago, slack

Photo by VanveenJFTwo years ago, I wrote a post about Libslack, Slack’s shared C++ client library. That post described how Slack used the Libslack library in its mobile applications to encapsulate shared business logic, and to handle syncing and caching of data.In the intervening time, we decided to move away from using a shared C++ library in its clients, but we haven’t discussed that decision publicly. We were spurred to write an update when Dropbox published this post about why they also deci...

Next