I was recently invited to attend the Twitter Flight conference in San Francisco! While this conference is clearly focused around Twitter products, this year included mobile and data tracks which covered the Fabric mobile SDK and the GNIP enterprise API platform. Overall they did an amazing job creating the conference, giving me a great opportunity to meet new people and attend some engaging talks.
Some of the conference sessions were focused on general software engineering and developer workflow, which were particularly interesting to me. Many of the speakers at the conference have significant experience building platforms to scale, so their perspective on building for slow and unreliable networks, building and testing production code in non-production environments, and building faster content-driven websites was particularly insightful.
On the topic of building for slow and unreliable networks, Twitter improved their mobile app user experience by automatically retrying when sending a tweet failed. A good take away from this talk was trying to manage network interactions so that they just work magically for all users without their continued interaction. In many ways this reminds me of some of the tricks used by Instagram, where they immediately upload an image, even before the user has applied the various filters and effects, giving the impression of an application that is very fast and robust with minimal user interaction. This talk also led me to watch another talk, Breaking the 1000ms Time to Glass Mobile Barrier, which covers some of the difficulties of mobile network and device performance.
Building and testing production code can be difficult when your development environment is using a different operating system than your production environment. Many bugs or issues only manifest themselves in a particular environment. A simple example is switching from a case-insensitive file system during development with Mac OS X or Windows to a case-sensitive Linux environment in production. This talk went over how to use Docker to containerize your development into running on the same environment as you run in production. At a high level, you separate different parts of your application, e.g. one container runs the web server and another runs the database. Containerizing is a popular technique in many areas of development. For example, if you wanted to use Docker with StrongLoop and Node.js, there’s a tutorial for that. Or perhaps you want to learn the containerizing approach for apps using MongoDB, Express, Angular, Node.js, and AWS?. The talk also introduced a useful tool to help you manage all your Docker containers called Galley that can make it easier to run containers that have dependencies on other containers.
The final session I attended was a lightening talk about Accelerated Mobile Pages (AMP), Google’s proof of concept about making a faster mobile web, encouraging publishers to provide content faster to mobile devices. AMP is a spec for a subset of HTML that has greater control of images and various amp widgets such as ads and embedded tweets. Also, watch out for videos from the SF HTML5 meetup on AMP.
Conferences are a great way to explore ideas outside of things you typically use on a daily basis, especially when the quality of talks and attendees is high. And if that wasn’t enough, there was a DeLorean in celebration of Back to the Future Day!