Strange Loop has taken place every year since 2009 in St. Louis, Missouri (USA) and is highly considered among developers, covering a wide range of topics from programming languages, distributed systems, web development, functional programming, and socio-political implications of technology.
I had the chance to attend this year's edition of Strange Loop and would like to share the highlights. The first day was dedicated to workshops as well as two conferences in parallel: elm-conf and Papers We Love.
A workshop highlight for me was "Deploying and scaling applications with Docker" by Bret Fisher. Starting with running a sample app on a single node with Compose, we proceeded to scale it to a cluster of Docker nodes using Swarm.
The two following conference days were packed full of high quality talks, with a total of five concurrent tracks that were a little hard to manage. Since the videos were readily available on the day after, some of the talks I just watched on Strange Loop's YouTube channel, which you can access here.
"Systems programming as a swiss army knife" by Julia Evans was one of my favourite talks. It focused on strategies for debugging any kind of system using Linux tools such as strace, tcpdump + wireshark and perf. She showed how knowledge about kernels and systems programming can be used to help you become a better programmer, while being able to convey her enthusiasm in a very nice way, making the talk particularly appealing.
"Humanities x Technology" by Ashley Nelson-Hornstein was the ending keynote for the first day of the conference. The key takeaway from here is that technology just for technology’s sake just does not matter – rather, technology is for people, and as such it should be at the intersection of liberal arts. The examples used to convey this message were very evocative.
One of these examples was Tay, a chatbot that learned from Twitter users – within hours of coming online, it became extremely anti-human, showing how the Internet had turned an AI chatbot into a hate machine. Tay was based off of Xiaolce, a Chinese chatbot, which was more successful since it focused on the empathy of the users, not precise chat communications. Their technology was informed by their humanity, not pure science, like Tay. Another key takeaway is that we, as developers, are not the user, and that we possess blind spots when trying to understand people that we need to be mindful of. You can read Ashley’s notes on the presentation here.
"Building a Distributed Task Scheduler With Akka, Kafka, and Cassandra" by David van Geest showed how his team built a task scheduler using Akka, Kafka, and Cassandra, leveraging the strengths of these technologies. Some of the challenges they faced include dynamically adjusting for increased task load with zero downtime, ensuring task ordering across many servers, and making sure that the tasks still run if a datacenter goes down.
"Unlimited Register Machines, Gödelization and Universality" by Tom Hall, presenting a formalization written in Clojure for Universal Register Machines, used here to perform simple arithmetics operations (like sum and product), while encoding instructions as numbers themselves and performing a list of instructions that comprise a program. For those unaware, Gödelization means to formalize a simple system in math.
The whole presentation was carried by Tom's enthusiasm over his achievement, even if the result was to simply perform a simple addition. His passion for the topic is highly contagious and the talk is worth watching just because of this. You can also read his notes here.
"Kittens - datatype-generic functional programming with Scala" by Kailuo Wang, where he presented Kittens, a library built on top of shapeless and cats, which is meant as a proof of concept around combining generic and functional programming. Several examples that used this library were shown to illustrate its features and use cases.
"Reproducibility" by Gary Bernhardt focused on the importance of reproducibility, a feature that guarantees that given the same inputs, a tool yields the same thing. This is important because it aids in building clear mental models of the tool's behaviour, and his central thesis is that these mental models lead to tools we love whose designs are highly non-obvious. One example of this is git, which will produce the same hash for a file committed in two different machines. While the video of his presentation isn’t available, you can still access his notes.
The following talks received high praise and are on my "to watch" list:
- "Diocletian, Constantine, Bedouin Sayings, and Network Defense" by Adam Wick
- "Fold, paper, scissors - an exploration of origami's fold and cut problem" by Amy Wibowo
- "Languages for 3D Industrial Knitting" by Lea Albaugh
For me, the best part of Strange Loop is the inspiration that it brings me and the insightful conversations that I had with some of the other people attending, so I will remember this edition of the conference for a long time.
If you’d like to get in touch about my experiences at Strange Loop, find me on Twitter at @smourapina.