GDG Devfest London is one of the largest—if not the largest—community-driven developer events in the country. It’s a place for developers of all backgrounds to come together and exchange ideas, network and learn about the latest developments across four main developer tracks, Cloud, Web, Mobile & Hot Tech, each with expert speakers introducing new development paradigms throughout the day.

As soon as I saw the schedule I knew it was going to be difficult to make every keynote I wanted to see, so I immediately decided not to venture as far as the longer Codelabs and Workshops and opted to grab the resources to follow along on my own later—I’ve shared these at the end of the post for those who couldn’t make the event.

To prevent writing thousands of words I’ve limited myself to covering only my top five updates from this year’s Devfest, which were…

 

Machine Learning, Geospatial Information Systems, Clusters & More: BigQuery’s New Features

BigQuery is an awesome piece of kit, and over the past decade or so has grown to become quite possibly the best Data Warehouse on the market today. Felipe Hoffa, GCP Developer Advocate (and BigQuery magician) gave attendees a whistle-stop tour of some of the best new features available to BigQuery users, some of which are likely to be game-changing.

 

Machine Learning in BigQuery

My favourite new feature in BigQuery is the ability to directly create and execute models on data directly, using standard SQL queries. Creating models is as simple as using a CREATE MODEL statement, which will then be trained on data provided by a standard SELECT statement. Models can be selected or built from scratch, or even imported from elsewhere—including from external libraries in JavaScript or Python. If you’re a TensorFlow user you can also import your TF Models directly and train them on terabytes of data, and all of these features are available on the fly, in-browser.

What does that mean in layman’s terms? If you wanted to run a linear regression model, from start to finish, on a dataset that contains as much information as the entire US Library of Congress (OK, less with compression), on the runway before your flight takes off, you now can.

 

GIS in BigQuery

Geospatial Information Systems, or GIS, were born from a need to store, sort and analyse location data at scale. Location is hugely common in Data Warehouses, and building GIS into BigQuery means that this information can be analysed and visualised, again, all with standard SQL. This has a wealth of benefits for a huge range of industries, logistics tracking, campaign monitoring and store management to name only three.

Felipe took us through a slightly more accessible use case—his travel data for the past few years. While we watched, he sorted the data and presented his travels on a global map, highlighting each city he had visited, before going on to show further details of the new GIS features by selecting a secondary weather dataset and pulling the hottest and coldest locations he’d been to.

A fluffier use case, perhaps, but given the talk was under half an hour, it was particularly impressive to see how quickly these features could be used.

 

Clusters in BigQuery

Another new feature within BigQuery is the ability to create clustered tables with standard SQL. These features enable developers to group data based on specific columns, such as by time or location, with Felipe using these features as part of the analysis of his travel data.

These new features offer considerable speed improvements when working on clustered data, but perhaps more importantly, clustering large datasets drastically reduces the amount of data BigQuery needs to process, which can reduce monthly data costs significantly.

For data teams, the level of flexibility and speed offered by all of these new features mean that more time can be spent interpreting data and outputs, and less spent importing, exporting, installing and training. Thanks to support for REST APIs, Jupyter and CLI, everything can be quite trivially integrated within existing workflows without a lengthy migration process.

 

Conversational Interfaces with Google Dialogflow

Google Developer Expert, Martin Hawksey, gave possibly my favourite keynote of the day, showcasing custom-built conversational interfaces for use with GSuite applications. He also won the award for cheesy (and insightful) quote of the day, “voice is the future of a frictionless world”.

He has a very valid point. 22% of children 6-16 have used a voice assistant, and 41% shared their intention to shop through them then they get older. Much like tablets before them, voice assistants are seemingly the best interfaces for the youngest and the eldest in our society, who would be less comfortable with the size and complexity of phones and laptops.

Martin shared another key take on these nascent input types—voice assistants as trojan horses. These devices are somewhat convenient, enable some useful functionality and double up as interesting novelties, but their primary purpose is seemingly not to sell speakers.

Device sales, if they haven’t all ready, are predicted to peak soon. Conversational interfaces that they introduced, however, will not peak with them. Much like the Mother of All Demos, smart speakers are simply an interesting way of introducing technologies that are likely to vastly change how we interact with computers, but they are not the innovation in and of themselves.

Dialogflow, then, is the technology that these new interactions will be based on, and can be used to quickly create conversational interfaces which work across platforms and services. Hawksey’s example was of particular note—a voice integration with Google Sheets that understood and actioned demands, such as “highlight all rows with a value over £1”. I’m sure everyone who has spent an afternoon setting up complex conditional formatting can see the inherent value of such interfaces.

 

From Native to Web App with WebAssembly

Florian Rival, who has helpfully shared his slides for the talk, covered a lot of ground during his session, introducing GDevelop as a popular, visual platform for the development of native games and applications, but marred with difficulties for new users and issues stemming from reliance on ageing technologies.

The answer, as it so often is iccn this industry, was JavaScript to begin; Florian selected React as his framework of choice, using a combination of Node and React to handle all on-screen elements. Behind the scenes, rather than relying on C++, WebAssembly was used for core classes, objects, textures, etc. Thanks to Node and Electron, the entire application, even built from traditionally web-centric technologies, can be run natively—and even make use of system-wide APIs to maintain a consistent user experience across devices and platforms.

Rival went on to introduce Emscripten, a compiler for C and C++ which builds Web Assembly code rather than binary files which can be run on the web, either in-browser or with electron, at near-native speeds with minimal changes to existing code aside from exposing classes and being aware of how certain features (such as iostream) will work in-browser.

There are limitations relating to memory management and garbage collection, and the output wasn’t perfect at this stage, but the combination of these technologies still represents a considerable positive step forward for developers. The approach promises far faster end products than traditional Javascript-based web applications running in electron, and we can expect to see considerable growth in this area as WebAssembly matures and becomes more prevalent as a technology of choice among the development community.

 

What’s New in TensorFlow 2.0

Another deep dive into a particular technology came from Luiz Gustavo Martins, who showcased the wealth of new features recently introduced in TensorFlow 2.0, of which, there are absolutely loads. To save on time, I’ve picked some of the highlights, but I would strongly advise checking out the documentation if you’ve yet to start taking advantage of it.

 

TensorFlow & Keras

Version 2.0 makes use of the Keras API Specification which, for those unfamiliar with Keras, is a high-level, python-based API focused on providing tools for rapid prototyping and development of neural networks, both convolutional, recurrent, or some mixture of the two. The primary benefit of this integration out of the box is twofold; prototyping is much faster thanks to an added level of abstraction, but this increase in speed does not come at a cost to customisability. For those already using Keras, there is pretty much no migration needed. TensorFlow 2.0 will work using your existing Keras code. There were plenty of happy audience noises with this news.

 

TensorFlow.js

TensorFlow.js is Google’s answer to the age-old development question of “why don’t we do all of this work again, but with JavaScript?”. Compatible with both browsers and NodeJS, this new library means that TensorFlow models can be built and trained on the browser, on the server, or inside a ‘native’ web app. This enables a lot of work to be offset to user devices rather than relying on a monolithic approach, with the example provided being abuse detection on forums—if abusive messages follow a specific and predictable pattern, these can be detected within the web application that is loaded on client devices, blocking negativity from being submitted before the network payloads are even sent. I wonder when we’ll see TensorFlow in WebAssembly with WebGPU?

 

TensorFlow Lite

Another awesome innovation is TensorFlow lite, which is an extremely lightweight implementation of the TensorFlow library that’s small enough to run on mobile devices, and even on embedded devices, being compatible with ARM chipsets. This removes the requirement for a network at all and enables apps, phones, POS, satellites, fridges, lightbulbs and pretty much any device imaginable to train models. These models could be as simple as removing the background from images or emulating portrait mode, or as complex as the device being developed for has the processing power to handle.

Accessibility of Machine Learning appears to be a key focus, with TFLite & TF.js both far more compatible with the types of devices commonplace in developing markets, and the introduction of an extensive library of ready-to-use models meaning even introductory development training is enough to get building. For those who followed TensorFlow World none of this will be news, but it was a much-welcomed intro to a lot of complex new additions for those of us who didn’t.

 

Levelling the Playing Field: Practical Data Science for Everyone

Where the bulk of the keynotes discussed instruments in detail, Marc Cohen’s talk concerned those wishing to take the role of conductor and was segmented into five constituent parts: reducing complexity, project definition, gathering data, data analysis and finally visualisation.

This introductory session focused on reducing complexity, which is where Cohen recommended —and for good reason—the use of Google Cloud Platform to reduce barriers. Complexity creates two such barriers to data science: barriers to learning and adoption for new data scientists, and barriers to completing tasks for those in the industry. Ultimately, the goal is to be in a position where the only technical problem to solve is the problem we set out to solve in the first instance.

From here, Marc went on to outline how he automated the process of loading the full Wikipedia page view dataset into BigQuery, which is provided split into many constituent parts on account of its huge size. To do so, he set up a series of server instances and made us of piped shell commands (curl, gzip, etc.) to process each sub-archive in kind and deliver these to BigQuery as one dataset, clocking in at several terabytes before clustering.

Making use of the new BigQuery features outlined earlier, Marc went on to quickly provide comparative visualisations of multiple pages’ traffic data, comparing the popularity of bands such as Radiohead and Oasis to highlight the granularity of data available, and the speed at which such huge volumes of data can be accessed and indexed. All of this took place within the space of around half an hour, with most queries happening in under ten seconds. Not bad performance by any stretch of the imagination.

While the dataset itself wasn’t hugely exciting, and the queries were quite straightforward, the session was a great insight into how quickly these technologies can be leveraged by those completely new to them now, with detailed tutorials, guides, models and more available free of charge and ready to work directly from the browser.

Should I Go Next Year?

I’ve been to a lot of conferences and I have to admit, Devfest is up there as one of the best I’ve attended—particularly as a community-driven affair. The talks were engaging, interesting and covered a huge range of technologies that I was personally interested in learning about.

If you plan to go next year, do be aware that the talks are particularly short, and at times the more popular sessions did tend to be standing room only, which was fine given their length but may prove slightly more tricky for those with specific accessibility requirements. Speakers were passionate about their subjects and sessions felt (aside from one or two) like far more than simply platforms from which to advertise their work and tools.

The main theme I found across the entire event was the clear love attendees had for the subject matter, and their willingness to share their insights and knowledge, and provide helpful pointers built from their own experience. As a community, it seems we’ve come a long way from trance-laden notepad tutorials on YouTube, and it’s fantastic to see.

Should you go next year? I can’t answer that for you, but I can’t see myself skipping this one any time soon.

 

As promised, the Codelabs:

Android Codelabs:

Build Your First Android App in Kotlin (https://codelabs.developers.google.com/codelabs/build-your-first-android-app-kotlin/) Navigation Codelab (https://codelabs.developers.google.com/codelabs/android-navigation/) Android Room with a View (https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#0)

Assistant Codelabs:

Build Actions for the Google Assistant, Level 1 (https://codelabs.developers.google.com/codelabs/actions-1/) Build Actions for the Google Assistant, Level 2 (https://codelabs.developers.google.com/codelabs/actions-2/) Build Actions for the Google Assistant, Level 3 (https://codelabs.developers.google.com/codelabs/actions-3/)

Cloud Codelabs:

Detect Labels, Faces, and Landmarks in Images with the Cloud Vision API (https://codelabs.developers.google.com/codelabs/cloud-vision-intro/) Classify images of clouds in the cloud with AutoML Vision (https://codelabs.developers.google.com/codelabs/cloud-automl-vision-intro/) Run a Big Data Text Processing Pipeline in Cloud Dataflow (https://codelabs.developers.google.com/codelabs/cloud-dataflow-starter/)

Firebase Codelabs:

Cloud Firestore Android Codelab (https://codelabs.developers.google.com/codelabs/firestore-android) Cloud Firestore Web Codelab (https://codelabs.developers.google.com/codelabs/firestore-web) Cloud Functions for Firebase (https://codelabs.developers.google.com/codelabs/firebase-cloud-functions/) Firebase Web Codelab (https://codelabs.developers.google.com/codelabs/firebase-web)

Flutter Codelabs:

Write Your First Flutter App, Part 1 (https://codelabs.developers.google.com/codelabs/first-flutter-app-pt1/) Write Your First Flutter App, Part 2 (https://codelabs.developers.google.com/codelabs/first-flutter-app-pt2/#0) Firebase for Flutter (https://codelabs.developers.google.com/codelabs/flutter-firebase/)

TensorFlow codelabs:

TensorFlow for Poets 2: TFLite Android/iOS (https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/, https://codelabs.developers.google.com/codelabs/tensorflow-for-poets-2-tflite/, https://codelabs.developers.google.com/codelabs/tensorflow-for-poets-2-ios/) End-to-end Machine Learning with TensorFlow on GCP (https://codelabs.developers.google.com/codelabs/end-to-end-ml/) TensorFlow, Keras and deep learning, without a PhD (https://codelabs.developers.google.com/codelabs/cloud-tensorflow-mnist/)

Web Codelabs:

Beautiful, interactive, canonical AMP pages (https://codelabs.developers.google.com/codelabs/amp-beautiful-interactive-canonical/) Migrate your site to a Progressive Web App (https://codelabs.developers.google.com/codelabs/migrate-to-progressive-web-apps/) Adding a Service Worker and Offline into your Web App (https://codelabs.developers.google.com/codelabs/offline/)

Steve Clark - Head of Organic

Author: Steve Clark - Head of Organic

Steve joined us as an exec in 2016 and now heads up our Organic team, who specialise in Web, SEO, UX and Social. Outside of the office, Steve is a huge fan of music, programming and languages.