Day 2 fell on a Saturday, so there were a lot fewer people in attendance than on Day 1. My talk was on this day, so I was nervous and editing my slides right up until my time slot.
I still made time to attend the talks, so here are some of my thoughts:
Machine Learning with Google APIs
He noted that a lot of machine learning algorithms have been around for decades, but that the compute power wasn't available to execute them. Since 2012, many significant advances have been made and we are now enjoying them in Google apps every day.
Bret rattled off a list of Google apps that use ML in some way: improving Search results, recommending songs in Play Music, transcribing speech to text for OK Google, synthesizing realistic voices, OCR and translation in Google Translate, and classifying images in Google photos.
On this latter point, he demonstrated an example of the difficulties faced by image classification algorithms:
He also showed examples of the responses that come back from many of the ML APIs that Google makes available, including identifying facial features and expressions in photos, and recognizing spoken text.
I highly recommend this talk. Bret was entertaining and the material is quite dazzling.
I'm Not Sure I Belong Here
The main auditorium seated hundreds, so it wasn't the best venue for this panel, especially as the hosts wanted the audience to engage in dialogue.
Jessica pointed out that in most other fields, for example, accounting, there are plenty of mediocre people who get hired and can get a job done. Why is it that, in software and other tech disciplines, we're always looking for rockstars (or some other ridiculous, hyperbolic noun)? This leads to more junior developers putting others on a pedestal, contributing to an inability to recognize their own accomplishments and accumulated knowledge.
Something like code reviews can trigger imposter syndrome, if the reviewer isn't cognizant of how they are delivering feedback to the author. Coding is fundamentally a human endeavour, done by people who put time and effort into it, and who have feelings and lives outside of work. The process should be empowering for the author, with feedback that is constructive, and a goal of teaching.
Some tips the panel had for battling imposter syndrome included recalling praise you've received in the past, seeking out an empathetic mentor, and "faking it until you make it".
Most of the audience discussion was around feelings of insecurity as a junior developer, when collaborating with more senior developers. Due to limited time, I wasn't able to raise the issue in the other direction: senior developers who feel like they should have accomplished more. This is a topic I haven't seen much discussion about.
Kotlin for Android Developers
I first heard about Kotlin from a paper that Jake Wharton authored a while ago, recommending the language for new Android projects. Since then, I haven't really paid much attention to it, but I feel I should now that it's really starting to gain traction.
There's a lot of support for writing Android apps using Kotlin, including language support to eliminate boilerplate and "ceremony" (e.g. remembering to call
apply() after modifying
SharedPreferences), calling API-specific code, declaring layouts in code via Anko, Android extensions to import XML layout IDs as Java variables, and much more.
Mike suggested getting your feet wet, by converting your tests into Android, or converting your data POJOs into Kotlin ones. Two learning resources he mentioned include the Kotlin Koans, and a free LeanPub book, Kotlin for Android Developers.
Set Course for Notifications… Engage!
This was the talk I gave! Videos were not being filmed in the smaller rooms, so I made my own recording. I'll write a post about how I did that later.
Google Tag Manager
The point of Tag Manager is to allow you to manage all of these JS snippets from a console, by embedding a single JS snippet into your website source that dynamically loads what you've configured.
Building Real-Time Reactive Apps for the Modern User
She began by describing the "table stakes" for apps these days: responsive design, offline support, real-time updates and reactive (auto-updating) UX. For full stack developers, there are many decisions to make about the libraries, frameworks and platforms you will use. Many of these choices are not directly user-facing, and users don't know or care about what your technology choices are. The part they see and interact with is the client.
Her current suggestion for building a modern app is combining Firebase with React. After giving a detailed introduction to both platforms, she then proceeded to live code, by modifying the Firebase sample chat codelab, to use React instead of vanilla JS.
I found this talk pretty fast-paced, but a good intro to two big platforms that can provide a solid foundation for your app.
Building 10X Solutions
Katy Kasmai (@KatyKasmai) is the founder of Team Exponent and Exponential Education and ran an all-day Exponential Sprint, which is a "a first-hand experience on what’s like being a part of a high-impact team". Participants this year looked at climate change, and they presented to DevFest DC attendees at the end of the day.
The problems and solutions presented were really interesting, including:
- Drone-based terraforming to improve habitability of degraded land
- A biodegradeable canopy that would protect Earth from varying heat patterns
- Modular floating city
- Collect and store energy by harvesting it from every available surface
- Thousands of partially transparent, city-sized solar panels
- Encouraging more adoption of smart pellet biofuel, and adapt to air conditioners