Polyconf Experience Report

This year’s Poly­Conf is over and although it was my first time at this con­fer­ence and I didn’t know too many peo­ple going in I had such a great time and learnt so much I’ll def­i­nite­ly be back in the near future.

Record­ing of the talks are slow­ly appear­ing on their YouTube chan­nel, so keep an eye out the talks men­tioned below.



The con­fer­ence is host­ed at the Adam Mick­iewicz Uni­ver­si­ty in the heart of Poz­nan and the facil­i­ty is very mod­ern.
2015-07-04 09.35.26 2015-07-04 09.35.59

The weath­er was great and for­tu­nate­ly the audi­to­ri­um was very well air con­di­tioned and ven­ti­lat­ed giv­en the tem­per­a­ture (around 30 degrees Cel­sius for the entire dura­tion of the con­fer­ence)!



Cof­fee was served through­out, and although lunch wasn’t to my taste (maybe it’s my Asian palette) there were always fresh fruits and snacks around to keep you going.

Oh, and there was a con­fer­ence par­ty every night with plen­ty of local craft beer on offer 

2015-07-04 09.37.29


The for­mat of the con­fer­ence was very refresh­ing in that it has a sin­gle track and each of the talks is only 30 mins long. Hav­ing a sin­gle tracks means you no longer have to stress over decid­ing which talk to attend.

On day 1, the morn­ing was ded­i­cat­ed to work­shops and I real­ly enjoyed William Byrd’s work­shop on build­ing a rela­tion­al inter­preter in miniKan­ren.

The work­shops were fol­lowed by two and half days of 30-min talks with 10 mins of break in between. This for­mat caused some logis­tic prob­lems. Many speak­ers had to adapt their talks to fit into the short­er-than-usu­al slot and end­ed up tak­ing the full 30 mins so Q&A had to take place dur­ing the allo­cat­ed break time which pushed the sub­se­quent talks back or cut the breaks short and caused atten­dees to come back late for the next ses­sion and so on.


True to its goal of being a con­fer­ence ded­i­cat­ed to poly­glot pro­gram­ming there were a lot of dif­fer­ent lan­guages on show. Whilst Emo­jiL­isp might just be the funki­est lan­guage of the lot, my picks from the con­fer­ence have to be:


The high­light of the first day for me was def­i­nite­ly miniKan­ren.

I attend­ed William Byrd’s miniKan­ren work­shop and went through the process of design­ing and build­ing a rela­tion­al inter­preter that sup­ports a sub­set of Scheme in miniKan­ren.

What does ‘rela­tion­al’ mean here?

It means tak­ing code such as:

    let f x y = x + y

and instead of see­ing it as a func­tion that takes input (x and y) and returns an out­put, you treat it as a rela­tion between the val­ues x, y and out­put.

Giv­en this rela­tion, you can deduce the val­ue of a miss­ing part if you know the val­ues of the rest.

E.g. giv­en x = 3, and out­put = 5, y must be 2

If more than one part of this rela­tion is miss­ing, then you can still deduce the val­ue of the rest in terms of rela­tions to each oth­er.

E.g. giv­en x = 3, then out­put = 3 + what­ev­er val­ue y takes

Now, if you have an inter­preter that can eval­u­ate your appli­ca­tion code as a rela­tion to its out­put when exe­cut­ed, what might you be able to do then?

Per­haps, you’d be able to syn­the­size the appli­ca­tion code giv­en some desired out­put val­ue. For instance, you might be able to gen­er­ate 99 pro­grams that will out­put “I love you”.

Besides miniKan­ren there were also a cou­ple of oth­er good talks on day 1, I par­tic­u­lar­ly liked Woj­ciech Ogrodow­czyk’s Beyond Ruby talk where he used the Pira­ha peo­ple as exam­ple to demon­strate why it’s so impor­tant to be poly­glot. It’s one of the angles I used in my Tour of Lan­guage Land­scape talk at NDC Oslo too.

p.s. you can find all the code for William’s work­shop and talk on miniKan­ren here.



On day 2, Erik Michaels-Ober showed off Crys­tal, a new LLVM-backed, com­piled lan­guage that is inspired by Ruby’s syn­tax.

Based on the num­bers Erik showed and a cou­ple of his bench­mark tests (one of which was a sim­ple Hel­lo World web serv­er), Crys­tal can be very per­for­mant whilst retain­ing much of Ruby’s syn­tax.

In fact, the syn­tax of Ruby and Crys­tal are so sim­i­lar (which is by design) you can even com­pile and run Ruby code (e.g. by run­ning crys­tal xyz.rb) using the Crys­tal com­pil­er and get a free speedup! Of course, this only works if the Ruby code also hap­pens to be valid Crys­tal code.

Crys­tal also has some mod­ern lan­guage fea­tures such as type infer­ence and macros too.



Whilst I had been vague­ly aware of Rack­et as ‘anoth­er LISP’ I had no idea just how much exten­si­bil­i­ty you have at your fin­ger­tips via the #lang nota­tion. Sam Tobin-Hochstadt’s talk did a great job in illus­trat­ing this using a num­ber of exam­ples:

Typed Racket

You can intro­duce a grad­ual type sys­tem by extend­ing the lan­guage using a library and the #lang nota­tion. To give you an idea, here’s a screen­shot from the offi­cial get­ting start­ed guide: Screenshot 2015-07-08 02.51.21

Lazy Racket

Sim­i­lar­ly, you can also turn Rack­et into a lazi­ly eval­u­at­ed lan­guage (like Haskell) using #lang lazy

I saw a lot of impres­sive things at Poly­Conf but the abil­i­ty to ‘hack’ the lan­guage in this way might have just topped the lot.

Just for fun (since Emo­jiL­isp was intro­duced in an ear­li­er light­en­ing talk), Sam also showed how you can basi­cal­ly imple­ment Emo­jiL­isp in Rack­et with a few lines of code.

(on a side note, whilst not near­ly as pow­er­ful as Rack­et in this regard, you can also do some real­ly cool things with Elixir’s macro sys­tem. If you’re inter­est­ed in Elixir, then you would want to watch this talk by Chris Mccord at NDC Oslo too)


Final­ly, here are some of the best tweet dur­ing the con­fer­ence: 


So that’s it folks, anoth­er con­fer­ence down and anoth­er bunch of things added to my ever-grow­ing todo list!

Next, I’ll be speak­ing at the Cam­bridge F# User Group on the 20th July to talk about how Gamesys is using F# to build back­ends for games played by mil­lions of play­ers every month. Feel free to join us if you are in the area.

You’ll next find me at a con­fer­ence on Sep­tem­ber 12th, at the first ever Kats Conf in Dublin, orga­nized by Andrea Mag­norsky. Edwin Brady will be there to talk about depen­dent typ­ing and Idris, and I’m expect­ing to see an excit­ing line­up of speak­ers being announced soon!