Abstractions II conference retrospective

Abstractions (abstractions.io) is an inclusive, cross-discipline software conference in Pittsburgh, USA. I’ve followed Abstractions since 2016 having been impressed with how they designed the conference for inclusivity and how they made art central to the conference. The first event held in 2016 featured Joe Armstrong as a keynote. He is one of my heroes in tech who recently passed away, making it special for me to attend and speak about his technology - the Erlang virtual machine.

Why I was there

I spoke in the morning of the first day on how learning different programming models and paradigms can help you solve problems more effectively in your main programming language – in this case, learning the unique programming model of Erlang. Doing this develops different mental models which allows you to see programming problems from another angle. As respected Computer Scientist Alan Kay said “A change in perspective is worth 80 IQ points”.

This is important because one of a developers main responsibilities is to defend and maintain the conceptual integrity of the codebase – something Aslam Khan once said and has stuck with me ever since. This is achieved in part by the developer defining clean abstractions for real world data and concepts needed to build the system.

Aslam Khan

PHEW, my talk is over. After a power nap in my hotel room, I can now relax and enjoy the rest of the conference. Here are a few presentations that stood out to me during my visit.

Building with privacy as a basic need

Noble Ackerson shared that privacy is a human right, and as developers of applications in healthcare, it got me thinking about how we at Ctrl Group build applications around this fact.

Here are some questions to ask yourself to test if you have built your application with privacy in mind:

  • Do you think about data privacy into your design process, i.e. using progressive disclosure but for information required from the user?
  • When collecting user input, do you have an option to explain why this information is needed and what you do with it? This can be especially useful if it’s personally identifiable information, or personal health information.
  • Good privacy allows users control over their data, does your interface allow users to view, edit, and remove their data?
  • Good privacy explains data usage with context, does your interface explain how your users data is used?
  • Good privacy respects the right to privacy, does your interface display an understanding of this right?
  • Do you know what Differential Privacy is? It is used by Apple for usage data and Google in deep learning data. (See Apple’s overview to Differential Privacy and Google’s article on deep learning with Differential Privacy for more information.)

Performance testing

In his talk, Piotr Murach, the author of several fantastic open source tty Ruby gems quoted Craig Mod on the fact that “speed is [often] the most valuable, least valued asset” for application developers.

Craig Mod

I agree, and believe performance forms a crucial part of the user’s experience of a software product. As with most things, there is always a tradeoff to make. There’s always a tension and balance to be found between a system’s Correctness, it’s Speed, and it’s Design. Following the 80/20 rule, avoid the urge to performance test everything and only test the features that have a strong performance requirement.

If you’re a software developer and new to performance testing, start with the following assertions you can make in some automated tests of your code: ips (iterations per second), object/memory allocations, big-O classification, and relative performance assertions that compare the difference between two different implementations of the same behaviour.

For more information see Piotr’s rspec-benchmark gem or if you use minitest, see Minitest’s BenchSpec module.

Prototyping with Gatsby

A talk by Adekunle Oduye reinforced that prototyping a feature with an interactive user interface that uses real data gives you the best chance at getting deep enough feedback to make effective course corrections during the product development cycle.

Adekunle shared his workflow using Gatsby.js and Netlify to develop interactive prototypes using production data, allowing him to have feedback conversations focused on utility and usability instead of aesthetics.

Health-tech and friends

Abstractions II was a good opportunity to be inspired by interesting Open Source projects, learn about some health-tech businesses in the USA and meet new friends.

Over the course of my visit, I met Rupert and more of the dev team from CoverMyMeds and ScriptHero, conference friends who kept me company while out of town – thank you! I also learnt about the Open Source Mental Illness organisation for mental health in tech, a nice parallel to our work here at Ctrl Group.

Themes in data and AI at CogX 2019
Interested in working with us? We’d love to hear from you.