Overflow - Page 2

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.

OverflowJul 30, 2018
Exploring Android on Chrome OS: Optimizing keyboard navigation

Recently I managed to get my hands on a Pixelbook. If you haven’t got one, or even read to much into them, then you’ll be excited to know that they have the ability to run Android applications on them. That means that if you have an application in the Play Store, anyone on Chrome OS can download that app, install it and run it on their device. Whilst in most cases the applications will work out of the box, there are a bunch of things which you can do to improve the experience of your applicatio

OverflowJun 22, 2018
Manage subscriptions with ease using the Google Play Subscription Center

At Google IO this year there was a great session on some new Google Play features to make subscriptions and billing operations easier for both users and developers. The announcements here were also followed up by a blog post here on the Android Developers Blog. Whilst not everyone will be able to make use of all these new features, if you’re providing subs

OverflowJun 8, 2018
Video: Product-oriented GIT workflow [Bufferdevs Snackchat]

At Buffer we regularly hold what we call ‘Snackchats’. These are short & informal presentations of something that we want to share with our team which help to build on our engineering culture and help each other to grow as engineers. Anyone on the team has the opportunity to give these talks ? Once a discussion has been proposed, a day / time can be picked ready for people to grab a drink (and snack!) to take some time out of their day to learn something new. These have been happening at Buff

OverflowMay 31, 2018
Evolving Buffer’s Data Architecture

This post is co-written by David Gasquez . All the way back in late 2014, we wrote short little blog post about our first big redesign of our data architecture at Buffer. Back then, the data team consisted of 2 people, handling everything from data infrastructure to analysis and business intelligence (with some part time help from our CTO) within a company of just 25 people. We built out the initial

OverflowMay 23, 2018
Video: Let Kotlin Come To You [Bufferdevs Snackchat]

At Buffer we regularly hold what we call ‘Snackchats’. These are short & informal presentations of something that we want to share with our team which help to build on our engineering culture and help each other to grow as engineers. Anyone on the team has the opportunity to give these talks ? Once a discussion has been proposed, a day/time can be picked ready for people to grab a drink (and snack!) to take some time out of their day to learn something new. These have been happening at Buffer

OverflowMay 18, 2018
Google I/O: What’s new for Android

Last week we were lucky enough to be able to attend Google I/O in Mountain View, California. Between the two of us we managed to see a good handful of sessions – so we thought we’d both put together this short post about some of the things we discovered and where you can learn more about them. Android App Bundles App bundles are a new type of upload format for your applications that allows you to deliver a more optimized build to your users. Rather than uploading a generated APK to the Google P

OverflowMay 14, 2018
Video: AWS IAM Role on Kubernetes with kube2iam [Bufferdevs Snackchat]

At Buffer we invest heavily on Kubernetes. Since we use AWS as our cloud provider, getting services the right permission usually means having AWS keys/secrets in Kubernetes manifest files. In this SnackChat Steven walks through the steps of using kube2iam to eliminate the exposure of AWS keys/secrets. kube2iam: https://github.com/jtblin/kube2iam

OverflowApr 30, 2018
Building a GIF Booth for the Buffer Retreat

Last week the Buffer team descended on Singapore for our 9th Buffer Retreat. Ever since the first retreat back in San Francisco, I’ve tried to figure out ways to capture the special moments we share together as a team. Since we’re fully remote, these yearly get-togethers can be the only moments we share with others for another year. At our previous retreat in Madrid last year, I added a GIF Booth to the ever growing arsenal of ways to capture

OverflowMar 7, 2018
Bot or Not: Identifying Twitter Bots With Machine Learning

I recently happened across this Tweet from Mike Kearney about his new R package called botornot. It’s core function is to classify Twitter profiles into two categories: “bot” or “not”. Having seen the tweet, I couldn’t not take the package for a spin. In this post we’ll use try to determine which of the Buffer team’s Twitter accounts are most bot-like. We’ll also test the botornot model on accounts that we know to be bots. Data Collecti

OverflowMar 1, 2018
Video: Introduction to Clean Architecture [Bufferdevs Snackchat]

At Buffer we regularly hold what we call ‘Snackchats’. These are short & informal presentations of something that we want to share with our team which help to build on our engineering culture and help each other to grow as engineers. Anyone on the team has the opportunity to give these talks ? Once a discussion has been proposed, a day/time can be picked ready for people to grab a drink (and snack!) to take some time out of their day to learn something new. These have been happening at Buffer

OverflowFeb 27, 2018
Using Estimote Monitoring for Improved Presence Detection

Ever since iBeacons were introduced by Apple in 2013, I’ve been interested in using them in an app. So much so, I ordered some of the very first beacons in the form of an Estimote developer kit . I got them in hand and unfortunately didn’t come up with a project to use them on. However, recently I’ve been working on a side project that would benefit from the enter/exit features of beacons and geofences. Playpal and Beacons PlayPal

OverflowFeb 13, 2018
Leveraging Machine Learning in iOS For Improved Accessibility

Lately, every engineer at Buffer has been keeping a closer eye on accessibility. Regardless of the platform Buffer is housed on, be it iOS, Android or the web – we consider it part of our craft to ensure that anyone can use the things we make. Aside from the fact that it opens up Buffer to more users, we also subscribe to the belief that it’s simply the right thing to do. For iOS, that means it’s on Andy and I to recognize

OverflowFeb 8, 2018
Making Buffer for Android more proactive with Reactive-Pusher

When your application content reflects the state of data stored on a server, making sure you’re always displaying the most up-to-date state ensures a better experience for the user. Now, this can be achieved by the user themselves but it involves the manual refreshing of content. For example, the user may be required to pull-to-refresh in order to show the latest content in some form of content feed. In any app, this is probably the simpler method to implement, but it’s not the best experience f

OverflowFeb 1, 2018
Setting up Android projects on Bitrise CI

As you may have heard recently, BuddyBuild ended support for the Android platform as of March 1st. When we heard this news there was a lot to think about – after all, we were very happy with what BuddyBuild had been doing for us up until now. What CI will we go for? Does it handle UI testing for us? Will it handle automatic deploys for us? How difficult is it to setup for mobile projects? Does it cater for both Android and iOS? We narrowed our trials down to two platforms CircleCi and Bitrise.

OverflowJan 8, 2018
How I Hacked My Schedule To Get 3 Days Of Deep Work A Week

Over the last year my role at Buffer has changed from an individual contributor to a technical leadership role. While the amount of time I spend coding and doing architecture hasn’t changed much, the way I go about the tasks has changed significantly. Instead of being focused on a project from start to finish, I move around projects as needed. Sometimes a team will get blocked on a tricky problem or need to make a decision that could impact other teams or request technical mentor-ship to level u

OverflowDec 21, 2017
Do you even map though? Data model mapping in Android Apps

After the release of our boilerplate projects over on GitHub , one of the main discussions that I’ve noticed taking place and had with others is around the mapping of data models between layers. Now, this conversation hasn’t just occurred around our boilerplates – I’ve noticed that it is one that often comes up when talking about Clean Architecture or Android apps in general. And to be honest, it can be sometimes hard to kn

OverflowDec 5, 2017
Testing Android App Shortcuts with UI Automator

In case you haven’t used App Shortcuts in Android yet, it’s an awesome feature that allows us to provide our users with a way to quickly access parts of our apps from the home screen of their device. As developers, we can make these shortcuts either static (meaning they’re statically defined in an XML file) or dynamic [https://developer.android.com/guide/topics/ui/

OverflowOct 13, 2017
Package-by-Feature in Modularised Android Projects

A while ago we published this article on how we were trying to tidy up the Android project for the Buffer for Android app: /2016/09/26/android-rethinking-package-structure/ . However, our project is now moving towards a modularised approach – so our package structure is changing (but also staying slightly the same). We wanted to keep the package-by-feature approach in place so we can continue to benefit from its advantages suc

OverflowSep 29, 2017
From tiny side project to official festival app with 10k users

Two weeks ago I was fortunate to make my 3rd Above & Beyond Group Therapy milestone show at the magnificent Gorge Amphitheater in Washington State. Set over two days the celebration bought people from all over the world to the Gorge to celebrate the 250th Group Therapy Radio Show. Having attended both 100 in New York and 200 in Amsterdam I was blown away with how friendly the crowds were and wondered how I could get people even more connected. Inspired by the numerous apps for WWDC to show atte

OverflowAug 31, 2017
How Does Buffer Deploy Code to Kubernetes

History and Background Ever since Buffer started its journey with Kubernetes (k8s) almost 1 year ago we have embarked on a mission to streamline the deployment experience. The inherent nature of microservices differs significantly from a monolith application in many ways. For each deploy, a monolith application requires merging the changes and deploying to an environment that’s well defined, tested and proven p

OverflowAug 18, 2017
Exploring Test-Driven-Development with Android UI Tests

Header image source: Émile Perron on Unsplash Over the last year on the Android team at Buffer, we’ve talked a lot about cleaning up our project and increasing its stability. One of the factors here was the introduction

OverflowJun 28, 2017
Adding Drag & Drop to UITabBar

This year at WWDC 17, several promising new technologies, frameworks and APIs were revealed to eager developers. Each year Andy and I try to focus on not only the keynote, but the Platforms State of the Union session to get a sense for what we should prioritize for the upcoming iOS release among all the new things introduced. For iOS 9, Apple pushed multitasking. Last year, Message Extensions were quite prominent. This year, there was no doubt about what we really wanted to hone in on: The new

OverflowJun 14, 2017
Introducing Buffer for Android, v6.0

Over at Android on Buffer, we recently hit 1 Million downloads – so we’d like to take this opportunity to say a big thank you to all of our users for making this happen! This also came with great timing, as we’ve just launched a brand new version of our Android app (something we’ve been calling v6 internally for a short while) ? We made a bunch of changes to the app (both visually and behind the scenes) with the aim to make it easier to use, easier to maintain and also more stable for our users.

OverflowMay 10, 2017
Improving our iOS Share Extension Installation Guide

Since iOS 8, we’ve been able to ship our Composer as an extension which allows users to share from their favorite apps that make use of UIActivityViewController. We were super excited to be able to ship the share extension to replace the old Bookmarklet code we had in prior versions of the app for a similar effect. Installing extensions on an iOS device isn’t so easy for the end user. We’ve been through a couple of iterations of guides to walk users through the process of adding the Buffer butt