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.
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.

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.
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:
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.

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.
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.
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.