Thursday, 28 July, 2016 UTC


Summary

Have you ever had a conversation with your friends which goes something like this?
You: Let’s go grab some burgers for dinner tonight!
Friend 1: Not burgers, anything else is fine.
Friend 2: Thai?
You: Meh 
Us too.
Food is something we’re very passionate about here at Algolia (along with coding). In fact, there’s an animated discussion about where we should go for lunch every single day – pretty much like the conversation described above.
So, in typical fashion we decided to build an app, aptly named Burger, that can help tackle this problem. And then took it to PolyConf 2016, held in Poznan, Poland.
What Did We do at PolyConf?
PolyConf, now in its eleventh edition, is a tech conference for programmers interested in a polyglot approach to software development. This year’s edition was held in Poznan and we had the chance to enjoy three intense days full of awesome talks about programming languages and technology. We also had the opportunity to host a workshop (more on that later)!
This edition was particularly focused on functional programming languages such as Clojure, Haskell, Oden, Crystal and Erlang / Elixir with a sweet spot for immutable data structures and a look at JavaScript’s interoperability with ClojureScript and Elm – both heavy sources of inspiration for Redux (In case you missed it we wrote a detailed blog post about Redux here).
Back to the workshop. With Algolia being a polyglot programming company itself (we have over 15 API clients!), it wasn’t very hard for us to work with a topic which could interest programmers with a large variety of skillsets. We decided to host a workshop which would teach participants to build a full-stack application using different technologies that we use in daily.
Introducing Project Burger
After a couple of discussions we decided to build Burger, an app which can be used to find lunch venues with people who have similar culinary tastes – a sort of meetup app for meals if you will; we wanted to mainly demonstrate how to integrate different technologies and languages to build a conceptual -yet plausible- app from the ground up.
Here’s a small demo of the App:
We implemented the app by using React, Redux and a REST API Service by using Scala, a JVM functional / Object Oriented language; we also indexed all the venues in Poznan by using FourSquare’s API in order make sure it had some Algolia magic.
That way we had all the ingredients for our workshop: a little bit of Back-end, with some Front-end, topped off with an overview of how to integrate these technologies with a 3rd party API such as Algolia. Et Voila! Burger was born.
If you’re curious you can find the complete app source code on GitHub and some slides we used for the workshop introduction.
What We Learnt Along the Way
It was our very first time organizing a 3-hour workshop and we learnt quite a bit along the way. Here’s a brief recap:
  1. Keep the scope small
We didn’t quite realise while building Burger that it would probably be a bit hard to build an entire app from scratch in 3 hours. We ended up almost running out of time and just about managed to cover all the topics we needed to in order to have a functional application at the end. This is also because we tried to cover too many topics without accounting for enough time for the participants to apply them.
If given the chance to redo it, we’d probably narrow the scope: go for choosing either of the two – front-end or back-end.
  1. Focus on concepts and material
We took for granted that most of the workshop attendants were familiar with React and JavaScript Development in general; in reality we had some people interested in Scala and some others in the Redux portion, and so, consequently, some of the participants didnt get a chance to explore their favorite part in depth.
If we could go back we’d probably spend more time preparing material and exercises to keep participants engaged and involved until the end without focusing too much on the implementation details.
Integration examples are great
Integrating a third party API into an application is something that every developer knows by heart; it’s a great example of how leveraging existing libraries can help achieve speed and productivity in such a short amount of time.
We wanted to demonstrate something similar in our workshop by wrapping our Algolia JavaScript client in a React component and use it for our app, saving the time and effort (out of the scope of the workshop) needed to implement an autocomplete component from scratch.
What Else?
PolyConf was a great experience for us and we were really lucky to find ourselves amidst coders with very varied skill-sets – in fact, after our workshop, we attended several sessions on functional programming and we found ourselves newly enriched with knowledge of Clojure and Elm – we actually hacked a possible first draft of an Elm Algolia Client!
Apart from the conference, we also got a bit of time to do some sightseeing and of course ate our fill of Burgers:
How could we not? 
Our Favorite Part
Organizing a successful workshop is no easy job but we believe we’ve learned some important lessons for the next round; we also hope that some of the attendees will try to apply the ideas we exchanged in their work or in their personal projects (and let us know, please!).
As developers, we absolutely loved PolyConf: interesting talks, nice food and a lot of ideas coming from different coder communities. It was a pleasant experience and we’d definitely like to thank the organizing crew, particularly Zaiste and Martyna. Thank you for making it happen! See you next year!