All in all our trip to StrangeLoop 2016 and St. Louis was fantastic and personally I will be looking into going again next year. Thanks to Alex Millar, the whole StrangeLoop team, and the StrangeLoop community for making such a friendly and welcoming conference, thanks to Red Badger for letting us have such a great time with our training budgets, and thanks to my friends, Anna and Viktor for putting up with me when I’m grumpy, jetlagged, and decaffeinated.
Wednesday 14th September – Sunday 18th September
This September, Anna, Viktor, and I were lucky enough to attend StrangeLoop conference in St. Louis USA. Although getting there and back involved four flights, a lost bag, six border controls, and some excessive immigration questioning, we thoroughly enjoyed the conference itself. There was a welcoming and inclusive atmosphere, open culture, and fantastic talks. What follows is our account of both the pre- and main conference.
The pre-conference day consisted of 13 different, 2 hour workshops held at St. Louis Union Station, a grand 1890s train station and hotel repurposed and renovated into a hotel and conference centre. Anna and I both signed up to workshops and our opinions of each are below:
Anna: Practically Functional Programming - Brian Lonsdorf AKA Dr Boolean
Have you heard about Professor Frisby’s Mostly Adequate Guide to Functional Programming? If not, it’s worth reading. I got further proof that the author Dr. Boolean knows what he’s talking about at this workshop. He took us through creating a great functional JS library, and mentioned monads and functors only twice by the way. I'm not sure I can claim to be more wise on what all the fancy terms mean now, but I’m much more familiar with the idea of maybe, nothing, just, left, right, boxes, and… oh, you know, the functional stuff.
Me: Deploying and scaling applications with Docker - Bret Fisher
An excellent explanation and walk-through of deploying and scaling applications with Docker using Docker swarm, including docker registry versioning and zero-downtime deployments. The notes for Bret’s workshop are available here. The workshop itself was a shortened version of Jérôme Petazzoni’s "Docker orchestration workshop" and it felt like 2 hours was not enough time to go over all of the features of Docker swarm.
Viktor: Coding Dojo: Rust with Nicholas Matsakis and Llewellyn Falco
While Anna and Andy were in their workshop I decided to join the Coding Dojo. It promised two sessions in the afternoon - one on Rust, one on Haskell. Not having been in a Coding Dojo before, I had no idea what to expect and I got a little confused when the session started by identifying kinds of birds. With our brains thoroughly primed (I was very surprised at how good I got at telling two types of sparrow apart in a very short time), we went on to the Dojo itself - an exercise in mob programming. I quite enjoyed the format - a group of people doing proper test-driven development together, suggesting ideas and taking turns through the roles of driver and navigator - and was surprised at how quickly we got up to a decent speed solving the problem. With Nicholas’ hints, Rust seemed really easy to pick up. What slightly disappointed me was how the group immediately chose a mutable object oriented approach to the solution, as in Rust, a functional approach with immutable data would work just as well, if not better.A gentle reminder that I live in a bit of a special bubble at Red Badger.
Coding Dojo: Haskell with Rebecca Skinner and Llewellyn Falco
After meeting up and hearing Viktor’s review of the previous coding dojo Anna and I decided to join him at the third and final dojo of the day. Viktor had not spoiled the experience for us, and initially, as in the previous dojo, it was a very odd experience. All three of us are now very good at telling the difference between a song and house sparrow on sight. We then began coding. A group of ten people, none of whom has written Haskell before, mob programming on some Haskell code and rotating every eight minutes to make a game of minesweeper. One person driving the keyboard, another telling them what to type, and the other eight discussing what to code. Rebecca Skinner was there as our Haskell expert to ask questions as and when needed. The mob programming itself was something that all three of us enjoyed, focussing on communication and testing. Since we’ve been back at work we’ve pushed for this kind of mob programming at Red Badger.
The main body of the conference itself was held in the magnificent Peabody Opera House over two days. Aside from the four keynote talks, which took centre stage in the main theatre with no coinciding talks, five talks ran concurrently throughout the day. The three of us picked the talks we were most interested in and managed to find a way to divide and conquer, rarely finding ourselves in the same room but meeting during breaks and in the evenings to discuss our experiences. Below are the talks that we personally label as the “one’s to watch”. Of course this doesn’t mean that other talks at StrangeLoop weren’t fantastic!
Probably the best network security talk I’ve seen. It uses lessons from history to teach us how to defend ourselves best in the modern world.
Failing (and recovering) asynchronously: a saga – Daniel Solano Gómez
As a company that uses redux-saga quite often, I thought it might be interesting to understand what these sagas were all about. Saga is a pattern that was made over 40 years ago and is definitely useful when writing async code.
Practical data synchronization with CRDTs – Dmitry Ivanov
Syncing offline and online data has been always hard. Instead of using an algorithmic approach, why not try using some clever data structures.
African Polyphony & Polyrhythm – Chris Ford
Programming and music are closer than it might seem. Especially when it comes to African music that follows models just like any app.
How to bring open source to a closed community – Abigail Cabunoc Mayes
Abigail’s experiences of attempting to bring open source to the scientific community, a traditionally very closed area. Useful if you want to get some tips on successfully building an open source and attract contributors.
Modelica: Component Oriented Modeling of Physical Systems – Michael Tiller
If you're interested in declaratively modelling physical systems, this talk is a good overview of a different language, using component based models. The language is quite different from what we’re used to in general purpose programming and it was very interesting to see how seamlessly it switches between typing code and equations in text on the lower levels (e.g. individual electrical components) and connecting components together graphically on the higher levels (e.g. modeling a robotic arm).
One of the less practical and more just _interesting_ talks from this years StrangeLoop. David showed how lambda calculus programs can be executed by series of substitutions and how coupled with compiling functions to combinators (this is where I started getting a bit lost) you can make such execution efficient. Worth watching if just to expand your horizons.
One of my favourite talks from this conference. Amar introduced the concept of tacit, point-free programming and mechanical techniques to transform expressions so that they can be made point-free. It sounds very dry, but trust me, it was a very amusing talk. The main point to take home was you can take tacit programming to the extreme and it doesn’t always make your code more succinct and easy to understand.
Commander: Better Distributed Applications through CQRS and Event Sourcing – Bobby Calderwood
Probably my favourite idea of the entire conference. While event sourcing and CQRS are not new ideas, combining them with an immutable action log, you get a really nicely decoupled distributed system architecture which should provide a lot of flexibility in building large scale systems in big organisations. I’m very interested in trying this one for one of Red Badger projects.
Tezos, decentralized cryptographic governance through self-amendments – Arthur Breitman
I must admit this talk fairly quickly got to a point where it went over my head. The general idea is nevertheless very interesting: What if you included the rules of verifying new blocks in a blockchain in the blockchain itself and included a process of changing those rules. You then get the ability to represent decision systems similar to representative democracy, for instance. If you’re interested in cryptocurrencies or crypto-ledgers, this is right up your alley.
How would a Panda program computers? – Jonas S Karlsson
I originally went to this talk because I found the question in the title amusing. What I got, was a peek into what I think is the future of programming, or at least certain kinds of programming. Panda is a toy language (I don’t mean that in a condescending way) that solves a lot of problems we need to deal with manually all the time - the difference between synchronous and asynchronous calls, operating on individual items vs. collections, etc. I can’t really do it justice in a short description, you will need to watch the video, but let me try anyway with an example: in Panda, you can fetch all headlines from a wikipedia article and present them as a HTML list with a single command “sentence”.
Government Hacking and Human Rights: The Why and the How – Amie Stepanovich
A shocking overview of how many of the world’s governments are involved in hacking, how it started, how it is spreading at an alarming rate, and how it is affecting our human rights.
An interesting idea about how building tools to help read and understand code. Using program slicing to cut away code that is not used and leave only the specific key path in order to better understand the code’s purpose.
Systems programming as a swiss army knife – Julia Evans
Putting forward the idea that you don’t need to know a specific language to help debug a difficult problem. Using debugging tools such as Strace amongst others to follow what your code is actually doing rather than looking at the code itself.
End-to-end encryption: Behind the scenes – Martin Kleppmann & Diana Vasile
Fantastic explanation of encryption methods and man-in-the-middle vulnerabilities. Live demos with real people, no Alice and Bob here.
Humanities x Technology – Ashley Nelson-Hornstein
Personally my favourite talk of the entire conference, aimed at making us think as technologists about what our role should be, evoking emotional responses to our work.
Notes on StrangeLoop
Things StrangeLoop does well:
- Wi-Fi – Both the pre-conference and the conference venue themselves had fantastic Wi-Fi. For the number of people at the conference and the amount of space that was covered I don’t remember an instance when I didn’t have a fast and reliable internet connection.
- Community – It seemed as though everything organised at StrangeLoop was designed to be inclusive. Slack just for the conference, meal types for various dietary preferences, somewhat confusingly named “fitted t-shirts” ( as a guy you get weird looks when you pick one of these up), a github repo for the conference, opportunity grants (free tickets for people who wouldn’t be able to attend any other way). There was even live captioning of the main theatre’s talks for hearing impaired individuals. It seemed like everything was looked after or would be if you asked. Feedback on anything and everything was welcome and there was a true sense of community based around the conference. Almost everyone I talked to had been to StrangeLoop at least once before and continues to go back every year.
- Open – Although this could really be covered by community, this was especially noticeable to me. Everything was about sharing, open source as much as possible, talks, people’s notes on talks, “unsessions” after talks on the first day to discuss things that the community voted to talk about.
- Talks – Some talks are so obscure that you have no idea what’s happening when you enter, but by the end you will understand something, other talks are on something you know well and will gain a new way of thinking about. The talks at StrangeLoop were incredibly varied and will contain something for everyone. Personally, my favourite talk did not have one line of code in it, not one technology mentioned.
Some things StrangeLoop could improve on:
- Food and Drinks – Although there was a great deal of choice, this was one of the few things at the conference that I thought could be improved. The vast majority of the food was very sweet, and the conference coffee wasn’t great. To be honest that was kind of the only thing I could find wrong with the entire conference.
Notes on St. Louis
Here's what we would suggest you do if you ever find yourself there.
Fantastic BBQ with least ten different flavours of bbq sauce including an inspired yet slightly confusing coffee flavoured version. I would suggest their pulled pork sandwich with a large coating of sriracha BBQ sauce.
I’d never had a proper deep dish pizza before but this one was spectacular.
City Museum and StrangeLoop Party
St. Louis City Museum was the location for the conference party. We arrived to see what looked like a school bus balanced on the top of a building, pieces of airplane held up with metal gangways, and a 4 storey slide amongst it all. There was a massive ball pit, slides connecting floors and tunnel mazes connecting more rooms. It felt more like a playground than a museum, but a playground for fully grown children.
Before we had got to St. Louis we were told that we had to go to Bogart’s. After doing a little research on it we had found that it was nationally renowned as one of the best if not the best BBQ in the USA and it did not disappoint! I would go back to StrangeLoop next year just as an excuse for more.
We couldn’t leave St. Louis without going to see the Gateway Arch, an iconic monument that dominates the St. Louis skyline; the views from the top, and the engineering feat that it represents are truly stunning.