Joe Birch

Joe Birch

A collection of posts by Joe Birch

A collection of 32 posts

OverflowJul 12, 2024
How We're Preventing Breaking Changes in GraphQL APIs at Buffer — and Why It's Essential for Our Customers

As part of our commitment to transparency and building in public, Buffer engineer Joe Birch shares how we’re doing this for our own GraphQL API via the use of GitHub Actions.

OverflowDec 13, 2022
Highlighting Text Input with Jetpack Compose

We recently launched a new feature at Buffer, called Ideas. With Ideas, you can store all your best ideas, tweak them until they’re ready, and drop them straight into your Buffer queue. Now that Ideas has launched in our web and mobile apps, we have some time to share some learnings from the development of this feature. In this blog post, we’ll dive into how we added support for URL highlighting to the Ideas Composer on Android, using Jetpack Compose. We started adopting Jetpack Compose into ou

OpenMar 1, 2021
Hack-Week: Embedding Our Values and Causes in Our Product

Towards the end of 2020, the Buffer engineering team held a two-day hack event where the team explored ideas that aligned with both our personal and company values . Whilst we strive to bring our personal and company values into the things that we build, sometimes it’s good to take a step back and really focus on those things that are important to us. These two days of hacking allowed us to do just that, building out a collection of projects that clearly embedded

OverflowFeb 14, 2020
Migrating our component library to the Material Button

Header Photo byPearse O’Halloran onUnsplash For our Android clients we have a small component library which is used to shared common visual elements across the different Android applications that we work on. We recently updated our application

OverflowDec 20, 2019
Selectively running Android modularized unit tests on your CI server

Header Photo by Icons8 Team on Unsplash Modularizing your Android projects can bring a number of different advantages to your team. Some of these include reduced build times, a greater separation of concerns and t

OverflowSep 11, 2019
Getting Buffer Publish ready for Android 10

Android 10 is officially here! On 3rd September it began rolling out for pixel devices, so we wanted to be sure that our app was ready to serve our users who would have Android 10 installed on their device. When these OS updates come around, as developers we sometimes don’t know how many changes we’re going to need to make to our applications. When Android Marshmallow was released, permissions changes were quite a big thing for many applications. As we move our way through versions up to Android

OverflowJul 30, 2019
Library module navigation in Android Applications

Header Photo byAlexander Andrews onUnsplash When it comes to building android applications, there’s no doubt that we’ll need to include some form of navigation to move between the different parts of our app. With modularisation becoming more and more popular when it comes to andr

Video: Getting started with Go [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 8, 2019
Creating a custom video SeekBar on Android

Header Photo by Jakob Owens on Unsplash A new feature we’ve been building out required the use of a thumbnail picker for video files. After looking around for open-source implementations, it was clear that there wasn’t something that already existed which would fit in with our app – for this reason we needed to build our own video thumbnail picker component. This component, Thumby, can be found over on GitHub [ht

Video: Automate Everything – From Review to Release [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 f

OverflowJan 8, 2019
Digging into failed redirects within Android Webviews

Header Photo byThe Nigmatic onUnsplash Discovering the issue It was the 14th December and we were winding down ready for the Christmas break. Our code freeze had kicked in several days previously and we had shipped an update at that time to get a couple of priority bug fixes before

OverflowDec 20, 2018
Getting started with feature modularization in Android Apps

Modularization in android applications is nothing new – I previously outlined the different types of modularization and the advantages they bring over in this post , and in this article we’re going to be focusing on feature modularization. When thinking about about modularization, at first it may appear as a case of moving a collection of files over. But what about the Dependency Injection setup? Referen

OverflowNov 29, 2018
Fully Automated Continuous Deployment on Android with Bitrise

Deploying mobile applications tends to be a fairly different process than when it comes to web applications. On the web we can push updates and fixes regularly without the concern of versioning, and at the same time our users can access these changes almost instantly from within their browser. When it comes to mobile applications, things work a little bit differently. First of all, we don’t have the luxury of instant changes — for example, if we need to push a change to our android application

OverflowOct 26, 2018
Keeping check on your Android Libraries with Danger & Bitrise

When you’re working on large projects, sometimes it can be difficult to ensure that all of your libraries are kept up-to-date. Whilst we can periodically jump into our build.gradle file, this is a manual task and let’s face it, us humans can sometimes slip a little when it comes to this. We recently had a notice from a third-party SDK about a performance issue in the version of their SDK we were using – whilst this wasn’t a breaking change, it’s something that would have saved them (and us) time

OverflowSep 13, 2018
A brief look at Koin on Android

In my projects both at work and outside, I’ve always used Dagger for Dependency Injection. Not only am I familiar with it, but it’s a powerful tool that not only does everything I need it to but there is also a great community around it if I’ve ever got stuck or needed some help on something. I’ve been seeing Koin quite a bit online recently, and like any new libraries and frameworks I was curious to see what it was all about. For this reason I decided to take our existing boilerplate project an

OverflowAug 17, 2018
Exposing Notification Settings to the Android System

Have you ever looked at the Android System settings page for a specific application and wondered about the option to view “Additional settings in the app”? If you haven’t seen this before in your settings, or aren’t aware of it, this is what it looks like This option allows developers to essentially provide a link to a push notification settings screen in their application – this allows users to quickly and easily continue altering their notification settings for the chosen app directly from th

OverflowAug 9, 2018
Exploring Image Keyboard Support on Android

During a recent hack day we added a bunch of small but impactful features into our application, one of these being integration with the GIF input provided by the Google keyboard. This involved us making use of the Image Keyboard Support (IKS) functionality that was introduced in Android 7.1 (API level 25), this allows us to hook into the media functionality of keyboards and make use of the data that our application retrieves from t

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

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 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.

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/