Compose :: Melbourne ran on Monday and Tuesday this week.
Over the last few years I’ve run a previous version of the workshop, but based on last-year’s feedback…
“Less Talking, More Typing!”
I reworked the content to…
- Be instantly accessible via the web, with no setup required
- Have no lecture material, being composed entirely of exercises
- Progressively teach concepts without requiring jumping around
- Be completely broken! Every exercise will crash, requiring debugging
The workshop went smoothly, and I’m happy that I was able to introduce Haskell to around 60 people, however what was really exciting was that the new format worked exceptionally well!
I leveraged Jupyter notebooks and the MyBinder platform to allow attendees to be up and running instantly. They jumped directly into exercises with no section introductions and got immediate feedback inline, without the requirement to install any tools.
The second interesting note about the format of the workshop is that the examples are broken by design. The flow of interaction is to run the exercise, look at the error, and work towards fixing the error, while considering the meaning, and the motivation of the exercise. This is a great way to learn for a few reasons…
- It prevents you from skipping through the code without reading
- It teaches you how to interpret the languages error messages
- It removes anxiety about breaking the code, since it starts broken
- It facilitates discussion amongst groups of attendees
- and finally, It forces the content author to consider the order of the introduction of concepts
This puts a greater burden on the author, requiring careful consideration and engineering of the exercises to have a natural progression of concepts. But alleviates the burden on the attendee. A great outcome!
The format does require a good set of instructors to help anyone who gets stuck with the exercises, however this is pretty standard for workshops in general anyway, so shouldn’t pose any additional strain on the organisers.
From a developer perspective I wanted to be able to run and edit the content locally, without jumping through too many hoops or requiring advanced system setup. I managed to get the outcome I wanted by having a single dockerfile and make harness. You get a server running that allows you to edit the notebooks in a volume mapped folder, and can check these into Git and push them to Github for MyBinder to load when you’re happy.
This format should be able to be used for many different workshops, not just Haskell, and I see this as a successful experiment. I’m very keen to try adapting it to Python, Machine Learning, and more in the future.
Have a play with the content yourself and tell me what you think!
I also took some photos of the talks on Monday. Enjoy!
Julie Moronuki – Keynote – The Unreasonable Effectiveness of Metaphor