Overflow - Page 3

How we ship code, delight customers, and build a team where engineers flourish. The Overflow blog covers all the latest work and learnings from Buffer’s engineering team.

OverflowApr 10, 2017
Keeping data fresh in Buffer for iOS with AsyncDisplayKit, IGListKit & Pusher

Ever since Pull Down to Refresh was introduced on iOS we’ve had it implemented as the main way to keep data fresh in our iOS app. With updates going out from your queue throughout the day, the update collection view within Buffer can change pretty often. These update collection views are used for our Pending, Sent, Contributions and Content Inbox, which makes up quite a portion of the app. Since v6.0 we’ve been using AsyncDisplayKit to do all of our

OverflowApr 6, 2017
The Buffer Retreat App Version 2: Migrating Tech Stacks, New Features and More!

As a globally distributed team at Buffer, our company retreats are a key part of our identity. We’re meeting coworkers for the first time in person, putting our heads together to shape the future of Buffer and making sure we put aside time to laugh and hang out with one another. There’s a lot going on with these retreats, and they’ve only become bigger in both scale and attendance with each one. As we recognized last year, we needed a solution to help us coordinate. That’s when we created the B

OverflowJan 16, 2017
Tracking our Android test coverage with Sonarqube

We recently shared about our transition from legacy code to clean architecture, where we’ve also begun to introduce testing to our project in the form of both Unit and Instrumentation tests. The introduction of these tests will help us to build a more stable product, boosting our confidence in the features that we ship. But why are we talking about coverage? Well, not only does this help us to measure how thoroughly tested our code is, but it’s also helping to act as a way to track our pro

OverflowDec 22, 2016
On the Journey from Legacy Code to Clean Architecture: Rebuilding the Buffer Android Composer

The composer is the heart of our app — it enables our users to craft social media updates and schedule them to post to the social networks at custom times. It’s been part of the Buffer Android app since the very beginning. And it had reached the point where we needed to rebuild what we had in place. So grab a cup of coffee (or your beverage of choice) and let us take you on a journey through our learnings of going from legacy code to clean architecture. ☕️ A brief history of Buffer on Android

OverflowDec 5, 2016
Building The Buffer Links Service

On the surface the Buffer link counting service is pretty simple. Its job is to keep track of the number of times someone has created a Buffer post with a given url embedded into it. An Example Link { "url": "https://buffer.com", "created_at": "1480431305", "update_id": "123456", "profile_id": "654321" } Behind the scenes this is what powers the Buffer Button counts. As we’ve recently shared, Buffer is moving towards a Service Oriented Architecture [https:/

OverflowNov 16, 2016
How We’re Implementing Service-Oriented Architecture at Buffer After 6 years of Technical Buildup

As Buffer is well into its sixth year of existence, we’ve evolved a lot as an engineering team. When I joined the team in early 2014, we were six engineers, four of whom worked on our main web application and API specifically. We’re now a larger team of 27 engineers, many of us still pushing more code into a single large repo every day. Over time our workflows have evolved to try to keep the development and deployment

OverflowOct 4, 2016
Smooth Scrolling in Buffer for iOS: How (and Why) We Implemented AsyncDisplayKit

Each year after Apple’s World Wide Developer Conference we switch most of our focus onto a bigger update to our Buffer iOS app to build out support for the newest iOS features and changes. This year was no different, but this time we also focused a bunch of time on performance and future proofing. New version of iOS = new changes to Buffer iOS app During the time after WWDC, we typically will run through the app and adjust our minimum target to the previous iOS release. In this case, it

OverflowSep 26, 2016
How We Rethought our Complete Package Structure for Buffer on Android and the Awesome Effect It’s Had on Our Workflows

For the past five years, our Android project has maintained a similar package structure from when it was first created in 2012. There have been a few changes here and there, but the general structure has remained the same. When most applications are created, the class count is small. However, as the app grows and features get added, it can be easy for packages to become bloated, potentially to the point where it makes a workspace feel unorganized and difficult to navigate. This was starting to

OverflowAug 18, 2016
Introducing Android code style guidelines at Buffer

Whenever you’re working solo on a project, chances are you’re writing in ‘your’ style – which often makes it easy to make all your code look and feel the same (but not necessarily clean). And when there’s more than one team member contributing to a project, it can be difficult to ensure that code is kept both clean and readable. Chances are that everyone has their own way of doing something, even when it comes down to things such as the way variables are named or the ordering of methods within a

OverflowMar 31, 2016
How We Saved $132k a Year With an IT Infrastructure Audit

Over the last year and a half, the Buffer team has tripled in size, from 25 teammates to 80. And our technology stack has ballooned as well, from a simple setup with just the basic AWS components to a much more fully utilized set of AWS and other external services. There are now so many pieces that make up the whole of the application: from how we store our data in mongo using compose, to how we run the application in an Elastic Beanstalk, to how we manage our data warehousing using Redshift. T

OverflowMar 28, 2016
Building Slack /slash commands with AWS Lambda

When AWS Lambda came out last year I was amazed.  The thought never occurred to me that web development doesn’t need to be complex, instead it can be about purely accomplishing the task at hand.  While they’re relatively early still, I think AWS Lambda and AWS API Gateway, are great examples of where web development is headed. If you haven’t experimented with AWS Lambda yet, I’d definitely recommend doing so.  Essentially it’s a model of web development in which

OverflowMar 11, 2016
Transparency Through Data: Building an MRR Forecasting Tool in R

At Buffer we really value transparency. Defaulting to transparency is one of our core values , and we’ve been fortunate to have been involved in some incredible discussions about transparent company cultures as a direct result. For a quick sampler, you can check out our salaries and revenue here, and you can read about the rewards and challenges of building a fully distribu

OverflowFeb 29, 2016
Optimizing for Slow Motion Video in iOS

When Buffer first introduced video on our platform, it was quite clear that the feature would be a perfect fit for our mobile users. We know that videos can be an important part of a social media strategy, so making sure this rolled out to our whole audience was important to us. Fortunately, we were able to get things moving quite fast on mobile. Uploading videos to Buffer o

OverflowFeb 22, 2016
Working Remotely: How we develop Buffer over 10 different timezones

At Buffer, we’re a fully distributed team. We recently closed our office in San Francisco and now have a team in 12 different timezones . One of the frequent questions we receive is, “How do you work as a remote developer with so many timezones?” It’s such a great question and helps me reflect on some the unique aspects of working as a full-time developer at Buffer. It’s been such a fun journey working remotely for over t

OverflowFeb 11, 2016
Slack meet Looker. An experiment in bringing data to the team.

A while back I read a pretty inspiring blog post, Serving Analytics the Right Way It’s a great read by Kevin Teh, a Data Scientist at OpenDoor. Like at Buffer, they also use Looker as an analytics platform. One part of the post I really liked was the idea of ‘Bringing data to the Team’. “all of the data is updated in real time without requiring an analyst to do any repetitive manual work. However, t

OverflowFeb 8, 2016
From Idea to App in 45 Days: How We Built a Mobile Tool for Our Remote Team’s Retreat

Solving the challenges we face at Buffer has always brought us to some unique places. From trying many different forms of management to recovering from a serious hacking incident, we are always learning valuable lessons along the way. Recently, we just wrapped up our 7th Buffer retreat. As our distributed team from corners all around the globe prepared to meet up in Hawaii, we thought one thing that we could improve would be a way of letting everyone on the team know where things are happening

OverflowJun 26, 2015
We Built a Diversity Dashboard for Buffer; Here’s How You Can, Too

This post is co-written by Julian. At Buffer, we’re trying hard to be mindful of diversity within our team, as well as doing as much as we can to improve diversity of people in our industry. In an effort to understand diversity across our team as well as people who apply to work at Buffer, we started started collecting diversity data via questions in an anonymous survey. Once we had some data trickling in, we starting graphing some of the data and eventually decided to write a dashboard to sha

OverflowDec 2, 2014
Why We Prioritize Culture Fit Over Technical Interviews In Hiring Developers

In the year and a half that I’ve focused on hiring at Buffer, I’ve received more than 2,000 applications for engineering roles. Of those applicants, 70 have gone on to interviews, and we’ve grown from a team of 2 to 10 engineers. Learning how to hire great people is one of the toughest challenges I’ve ever faced. I’ve iterated on our process for hiring engineers and I’m glad to have the opportunity to share my lessons. Here’s my first post on our hiring process and why we no longer have the tra

OverflowOct 31, 2014
Buffer’s New Data Architecture: How Redshift, Hadoop and Looker Help Us Analyze 500 Million Records in Seconds

Up until recently at Buffer, we had a big problem: we were drowning in data. Buffer is a data-driven company. So many of the decisions we make hinge on data that we collect and analyze. We track and measure analytics data for all kinds of things – user behavior, how our A/B experiments are running, as well as system-generated data such as API logs. As outlined in this post by Sunil, we have built a pretty robust platform for tracking and measuring data, all powered by Amazon’s SQS and MongoDB.

OverflowAug 21, 2014
How We Stay Lean While Doing Performance Improvements

As our CTO Sunil has explained previously , we make all our product decisions based on metrics, meaning that we try to launch features early and measure how they impact all our metrics in order to decide which path to follow. We had the intuition that our current analysis tab in the Buffer for Business area could be tweaked a bit to make the user experience better. And last week Niel, one of our awe

OverflowAug 18, 2014
Buffer’s Content Suggestions: From Lean Experiment to 20,000 Shares a Day

It’s always a pleasure to see something grow. Especially when it starts out small. Content Suggestions at Buffer has enjoyed this interesting journey from small to growing, and in the span of eight months, it has quickly become one of our core services. We love helping people share to social media, and content suggestions started out with this idea in mind. How can we help users share? The Experiment One idea was to help people find fresh content. The first implementation started in the mid

OverflowJul 9, 2014
How Buffer Uses MongoDB to Power Our Growth Platform

At Buffer , every product decision we make is driven by quantitative metrics. We have always sought to be lean in our decision making, and one of the core tenants of being lean is launching experimental features early and measuring their impact. Buffer is a social media tool to help you schedule and space out your posts on social media networks like Twitter, Facebook, Google+ and Linkedin. We started in late 2010 and thanks to a keen focus on analytical data, we have now

OverflowJun 16, 2014
How We Built Daily by Buffer in Two Weeks

Daily by Buffer is Buffer’s new content suggestion app available for iPhone, allowing you to add content suggestions to your Buffer each day through a simple interface. This is how it was built. While updating Buffer for iPhone for iOS 7 we launched content suggestions within our web app, which give users a variety of posts each day that can be added to their Buffer queue to help it stay topped up. Towards the end of developing the iOS 7 update a few of us developed the idea of building a simil

OverflowJun 12, 2014
My Ideal Day as a Remote Programmer: Taking Charge of Your Daily Routine

I wrote previously about why programming is a part-time job, where I extolled the virtues of having breaks to allow time for my brain to think about problems I am working on. It seemed to resonate pretty well with people, and it is definitely relevant to fields other than programming. In fact, it’s probably valuable for all knowledge workers to have quality thinking time. But how do you make the time to step away from the computer? How can you force yourself to think about things without commit