Last week, I attended and spoke at Android Summit, in Tysons Corner, VA, just outside of Washington, DC. This was my first time at the annual event, which was celebrating its 4th anniversary.

The conference had two development tracks, a design track, and a testing track. During the introductory remarks, Michael Jones reiterated the message that apps are made collaboratively by people in different disciplines, and encouraged us to mingle and attend sessions from different tracks.

This year, proceeds from the event went to Women Who Code, and, with an intentional reduction in swag, Android Summit was able to donate over $8000 to this not-for-profit.

I thought the conference was really well run, with lots of dedicated volunteers staffing the registration table, herding attendees between the two floors of the hotel, and ensuring the A/V was set up for the speakers. The venue is directly connected to a really large mall which had an enormous Italian restaurant where we had the speaker dinner. Nearby, I was within walking distance to a 24 hour grocery, several restaurants, and a Metrorail station.

Keynote

Claire Slattery opened the conference. She is the Director of Performance at Speechless, which performs shows to help people become better presenters. Her keynote was called, Creative Release: Why Improv Thinking Matters for Development. The title refers to applying techniques from improv theatre, such as listening with curiosity, making others look and feel good, and taking care of yourself, etc. to our work.

Speechless' scientist-in-residence is Charles Limb, who has studied what happens to our brains when musicians improvise (TEDx talk, PRI podcast). She encouraged us to work on changing the "volume" in our brains, by turning up our self-expression and creativity, and turning down the voice of our self-critic.

IMG_20180816_095818

Claire led us through a number of small group, stand-up exercises, where we practised celebrating mistakes, listening actively, building presence, and creatively connecting our work and our interests.

Positive Sum — Developing Mobile Apps with Privacy as a Baseline Need

As I am transitioning to a new discipline soon, I decided to attend mostly non-development talks. This talk, on privacy and GDPR, was given by Noble Ackerson (@nobleackerson).

Noble went through a few "privacy by design" principles: consent (asking for permission to collect data), agency (allowing users to control their data), progressive disclosure (collect data as you need it, not all up front), governance (being able to monitor what's collected).

While it may be a burden to be careful with data, privacy principles align with good UX in most apps, so that we can gain trust from our users by being transparent with how their data is being used.

During the Q&A, I learned of several people to pay attention to who are very involved in privacy:

Excellence Principles that Produce Quality Mobile Solutions

I went from the design track over to the testing track for my 2nd talk of the day. This one was given by Elvin Rakhmankulov, Head of Mobile Competency at EPAM.

As a developer who has worked on teams practising varying levels of "process", it was interesting to hear from a seasoned veteran. Elvin breezed through a few list-heavy slides with best practises accumulated after working on dozens of client projects.

Some things I learned about were:

  • the C4 Model for describing software architecture. I've struggled with trying to balance between high-level vs. detailed diagrams of how the pieces of an app fit together, so this framework looks helpful.
  • architectural katas, practice exercises for software architects
  • a "continuous inspection" dashboard for software quality called Sonarqube. It presents the results of a lot of static analysis tools on your code and revision control usage.
  • a nicer way of describing using your own apps (which Wikipedia attributes to Jo Hoppe):

drinking your own champagne

Kotlin Multiplatform

This topic is a perennial favourite amongst mobile developers, as it deals with how to build apps for iOS and Android from one codebase. Kevin Galligan, from Touchlab (and organizer of droidconNYC) sped through the state of Kotlin Multiplatform. It was based roughly on this post.

Not only can iOS (native) and Android (JVM) be targeted, but Kotlin multiplatform can render to JavaScript as well. Kevin went on a bit of a rant about a lot of the unhelpful discussion around cross-platform development, that often compares apples to oranges, missing the more nuanced reality.

IMG_20180816_132942

His own contribution to the field is knarch.db, an implementation of SQLite for iOS/macOS that is similar to the Android API, written in Kotlin/Native. In general, at this point in time, library support is what's missing, so this is a good area for open-source contributors to get involved in. Still, there's enough support available, that he built the Droidcon NYC app for Kotlin multiplatform.

Material Design Interactions

I went back to the design room to watch Amanda Legge, Principal Experience Designer at Capital One, do a live demo using Principle. In around a half an hour, she built three animated and interactive components that you would find in modern Android apps.

Her demos included making a circular progress spinner with in/out animations, replicating a parallax effect from Google Calendar, and a complicated drag interaction that modified text opacity and scaled another element.

IMG_20180816_142425

One significant limitation of Principle is that it does not directly output files (e.g. XML layouts, drawables, animations) that can be imported into Android projects. By contrast, Zeplin can now generate resources and snippets for Android.

You can find more Principle tutorials on Amanda's YouTube channel.

How the Command-Line Can Give You Superpowers

I spent the next time slot polishing my slides, before giving my talk. I've uploaded the slides and the video recording will be available soon.

IMG_20180816_144047

Ghost in the Machine

My colleague, Etienne Caron, discussed ARCore and his experiments with 3D printing and augmented reality.

Inspired by the android-robocar project, Etienne started with a Junior Runt Rover. He used Fusion 360 to design a frame, and a low-cost 3D printer to realize it. This allowed him to strap on a steroscopic camera and other components.

Then, he wrote an Android app to calibrate the vehicle's motion and track it via a marker. Then, he could tap at a point on the phone's viewfinder, to make the car roll to that spot!

IMG_20180816_165716

The source code for this project and other VR and AR experiments can be found at https://github.com/kanawish/mixed-reality-toolbox

Closing Keynote

Nitya Narasimhan (@nitya) closed out the conference with Self Care for Developers: Defense Against The Dark Arts (slides), a serious topic presented with analogies from Harry Potter. Due to technical difficulties and delays, she had to accelerate her already-rapid speech and compress her talk into 20 minutes!

She shared a report from the APA titled Stress in America which highlights that uncertainty about the future, and work, are major sources of stress for Americans.

The connection to Harry Potter was interesting: J. K. Rowling was diagnosed with depression, and her illness inspired dementors. Nitya contrasted various evil powers in the books, with their defenses, and made analogies with how we can protect ourselves against sources of stress.

IMG_20180816_175624

She outlined various strategies for combating stress. First, knowing the enemy is key: some acute stress makes you more resilient, but episodic or chronic stress wears you down, and the cumulative wear and tear on your brain reduces your ability to cope with future uncertainty.

Stress triggers come in many forms: environmental, physiological, physical, social. She suggested we remove time-based triggers by spending 30 days to set new habits, whether it be spending time to eat regularly, getting more sleep, or exercising more. For space-based triggers, declutter your environment (whether home, work, or online) by discarding, hiding, or blocking those sources.

By refocusing, we can cultivate habits to slow down. For Nitya, sketching and food preparation were tasks that helped her to calm down. Another good tip was to "ally-up": finding people who know you, who can cheer for you, or to run interference for you.

One practical tip to help build self-appreciation was to practice saying things to reinforce your sense of self-worth, e.g. when congratulated, just say "Thank you", without following up with any disclaimers or self-deprecating remarks.

Finally, she gave a constraints-based analogy to help us devise our own self-care strategy: think of a suitcase as holding all your mental baggage. If someone makes a stressful request of you, think about whether you have room to spare in your suitcase. If not, just say, "I don't have space for your request".