/
Blog
/
What I learned at ReasonConf 2018

What I learned at ReasonConf 2018

I flew to Vienna with my bag filled with expectations for the amazing journey I had ahead. I usually don’t travel alone, so I was a bit concerned regarding what to do, who I would meet, and what I would learn, etc… You find yourself in a foreign city where you know no one, and don’t know any places, what would you do? And then, I saw this: https://www.reason-conf.com/attendees/.

Yup, the amazing organizers of this conference had compiled a list of places to see, eat, and have fun… absolutely everything was well thought out for the speakers and the attendees in mind! Can’t thank them enough for that! 🎉 (By the way the kebab was awesome! 🥙🤤).

I won’t bore you with more details, so here is the summary of what I learned across the three conference days!

Day 1: Workshops

The first day started (how could it start better?) with a great coffee ☕ and breakfast. All the volunteers, the attendees, the mood was so friendly that I was off for a great start! So we all seated in groups in the very convenient coworking space at ImpactHub, and we started to introduce ourselves. Turned out, I was sitting with 2 Russians, 1 local (Austrian), 1 Israeli and a German guy with his Chinese girlfriend, very mixed group and very international! But this wasn’t an isolated case, along the 3 days I socialized and met people from Sweden, Costa Rica, Panama, Portugal, France, Finland, United States and even from Australia!! All of them were awesome, and one of the main highlights for me of the whole conference was how polite, organised, respectful and silent everyone was!! 😎

Sean Grove giving the first half of the workshop.

After the presentations the first half of the workshop started, it was more of an introduction, to get your hands dirty with Reason and make you feel comfortable with the syntax and the language. I had tried Reason some months ago, but I immediately noticed that the whole ecosystem had grown and matured incredibly in such a short time. Everything from editor integration, auto-completion and error messages had become much better and beginner friendly! Here I learned that the List type in Reason (as opposed to the Array type) is actually a singly linked list, which surprised me a lot when I saw the compiled JavaScript code from BuckleScript. The whole fact that Reason enforces you to be immutable-first, mutable explicitly (and more uglily) second, made my functional self feel at home! 😌

The second half was an introduction to ReasonReact, which I had already played with, and also an explanation of BuckleScript bindings. Here are the ones I did as part of the exercise:


After the first workshop we had lunch. I can’t believe how lucky I was… the first meal of the conference was my favourite: curry! 🍛

Dojo Time!

In the afternoon we split into three different groups, depending on our interests. We could choose between:

- GraphQL in Reason

- Game development with Reprocessing

- Node, socket.io and GADTs with Reason

As I was very curious about GADTs (Generalised Algebraic Data Types) I chose the latter. It ended up being a very interesting challenge! We had to build a multiplayer Tic Tac Toe game with Node and socket.io in Reason, with some added difficulty as we had to use a branch from BsSocket that was modified to use GADTs... Here is the GADT we end up using to solve the exercise:

A GADT appeared in the wild!

I can’t lie to you, I don’t fully grasp the whole meaning of GADT’s yet, but it was a really nice introduction and the whole challenge kept us busy for 3 hours (and still some of us didn’t even finish 😅). The format of the workshop was quite interesting: small groups of 3~4 people with at least one person more or less experienced with Reason/OCaml and only 1 laptop, the less experienced one in the group had to do all the typing!!

Day 2: Conference

Cheng Lou giving the keynote!

So the conference finally started, and what a start! Cheng Lou himself (from the Reason team at Facebook) gave some exciting news about the language and some improvements on BuckleScript and refmt as well (now it respects empty lines and adds semicolons! yay!! 🎉). After that, Cristiano Calcagno showcased very nice demos on how things can sometimes be better solved with local state, and his talk showed quite a lot of examples with ReasonReact. Next talk was by Laura Gaetano about how to build inclusive OSS communities, which is quite a hard task!

After all this we had an wesome veggie lunch!! 🥗🤤 Here’s a pic:

Following the tasty lunch, Sander Spies talked about the WebAssembly backend for OCaml/Reason he is working on, and how this is being his particular rabbit hole. 🐇 A series of Lightning talks followed, all of them very interesting and unique!

- Javier Chávarri explained what’s the Status Quo of editor integration nowadays, and also talked very interestingly about rebind, an experimental tool he is working on that wants to alleviate the tedious work of making BS bindings for Reason. 🔧

- Roman Schiefer shared with us their experience of integrating Reason into a project in Accenture, a huge company that was also one of the main sponsors of the conference.

- Lance Harper compared Reason with F# (Microsoft’s version of OCaml, more or less) and showed a lot of code samples primarily in F#. This talk was quite interesting for me and made me want to give F# an opportunity!

- Maxim Valcke finally shared some of the latest changes to refmt, the built in formatter that Reason has and his experience contributing to it. I had the chance to have breakfast with Maxim before knowing he was a speaker, and he was a very nice guy whom had the chance to practice his Spanish with me (as he was learning 😜).

After the Lightning talks we had a short coffee break and then Sean Grove’s talk about GraphQL with Reason followed, this talk was very instructive and interesting, but also revealed that it was a bit tedious to do Reason with GraphQL right now until we get the optional (?) operator in Reason.

Next we had an incredible live coding session in OCaml with Vladimir Kurchatkin in which he coded add-ons for Node.js. The interesting part for me here was that even though he used OCaml, my Reason knowledge was enough to understand the syntax and what he was doing. So I am excited to believe that also learning Reason will be (maybe?) a softer path to learn OCaml along the way!

Another short coffe break followed and then Keirah Hodgkison started what was with no doubt my favorite talk for the conference :) She talked about the path to learn Reason coming from a non-functional background. I loved the talk not only because of all the cat pictures 🐈 and amazing gifs she used (very entertaining and nice to watch 😊) but because it also got me thinking about how can we introduce Reason to newbies. I had a functional programming background and a strong JavaScript and React background, but lots of the people I know don’t and I’d really want them to embrace Reason. I hope we find a nice learning path for all of them!

Last but not least, Jared Forsyth talked about how important it is to be consistent with versioning in software engineering. He shared his pain while migrating to newer versions of Swift and Android (pain I also felt very closely) and also praised the Reason team for being exemplary in this matter. No one wants to have breaking changes in their code, but if you have to, version it properly and if possible; provide a codemod to fix most of the cases, great talk indeed!

Day 3: Hackathon + Sight Seeing Vienna

I am not going to lie to you, the third day I was quite tired and a bit homesick (I also learned that I hate traveling without my wife 😭) but I managed to listen to a couple talks from the Open Mic Session, which gave the opportunity for attendees to talk about their experience in very short lightning talks.

At some point I got a bit bored and joined a couple of my new Swedish friends to finish the Tic Tac Toe (yes I was very obsessed with it over the whole weekend) in our particular and private Hackathon 😂. They helped me, and afterwards I even added Spectator Mode to the game with the counter and everything. You can check it in my GitHub fork of the project, if you are interested 😜.

At lunch time we had some amazing pizza! 🎉 (with optional veggie pizza as well) and then off we went to sight see Vienna by the hand of Max Stoiber, it was very nice to finally meet you in person Max! 😊 Vienna is awesome, very nice and antique, some buildings of the city center were incredibly old and beautiful, I really enjoyed the trip!

Wrap up

ReasonConf ended with dinner in a gorgeous vineyard house 😍 at the outsides of Vienna, it was hundreds of years old and they distilled their own white wine which was excellent! 🍷 It couldn’t have finished better!

Overall it was a great experience, and I want to take the opportunity to give special thanks to G2i for making this possible and allowing me to have this wonderful experience! For those who are unfamiliar, G2i is a hiring platform run by engineers that matches clients with pre-vetted React, React Native, GraphQL, and native iOS/Android focused engineers you can trust.

Hope to see you in the next one! 😉

Related Articles