Yan Cui
I help clients go faster for less using serverless technologies.
This year’s PolyConf is over and although it was my first time at this conference and I didn’t know too many people going in I had such a great time and learnt so much I’ll definitely be back in the near future.
Recording of the talks are slowly appearing on their YouTube channel, so keep an eye out the talks mentioned below.
Venue
The conference is hosted at the Adam Mickiewicz University in the heart of Poznan and the facility is very modern.
The weather was great and fortunately the auditorium was very well air conditioned and ventilated given the temperature (around 30 degrees Celsius for the entire duration of the conference)!
Food
Coffee was served throughout, 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 conference party every night with plenty of local craft beer on offer
Format
The format of the conference was very refreshing in that it has a single track and each of the talks is only 30 mins long. Having a single tracks means you no longer have to stress over deciding which talk to attend.
Single-track conferences free us from decisions, so we can use our brains to absorb information. ~ @mrchrisadams #PolyConf
— Jessica Kerr (@jessitron) July 2, 2015
On day 1, the morning was dedicated to workshops and I really enjoyed William Byrd‘s workshop on building a relational interpreter in miniKanren.
The workshops were followed by two and half days of 30-min talks with 10 mins of break in between. This format caused some logistic problems. Many speakers had to adapt their talks to fit into the shorter-than-usual slot and ended up taking the full 30 mins so Q&A had to take place during the allocated break time which pushed the subsequent talks back or cut the breaks short and caused attendees to come back late for the next session and so on.
Talks
True to its goal of being a conference dedicated to polyglot programming there were a lot of different languages on show. Whilst EmojiLisp might just be the funkiest language of the lot, my picks from the conference have to be:
- program synthesis with miniKanren
- Racket’s language extensibility
- Crystal’s performance
- generated functions in Julia
miniKanren
The highlight of the first day for me was definitely miniKanren.
I attended William Byrd‘s miniKanren workshop and went through the process of designing and building a relational interpreter that supports a subset of Scheme in miniKanren.
What does ‘relational’ mean here?
It means taking code such as:
let f x y = x + y
and instead of seeing it as a function that takes input (x and y) and returns an output, you treat it as a relation between the values x, y and output.
Given this relation, you can deduce the value of a missing part if you know the values of the rest.
E.g. given x = 3, and output = 5, y must be 2
If more than one part of this relation is missing, then you can still deduce the value of the rest in terms of relations to each other.
E.g. given x = 3, then output = 3 + whatever value y takes
Now, if you have an interpreter that can evaluate your application code as a relation to its output when executed, what might you be able to do then?
Perhaps, you’d be able to synthesize the application code given some desired output value. For instance, you might be able to generate 99 programs that will output “I love you”.
Besides miniKanren there were also a couple of other good talks on day 1, I particularly liked Wojciech Ogrodowczyk‘s Beyond Ruby talk where he used the Piraha people as example to demonstrate why it’s so important to be polyglot. It’s one of the angles I used in my Tour of Language Landscape talk at NDC Oslo too.
p.s. you can find all the code for William’s workshop and talk on miniKanren here.
Crystal
On day 2, Erik Michaels-Ober showed off Crystal, a new LLVM-backed, compiled language that is inspired by Ruby’s syntax.
Based on the numbers Erik showed and a couple of his benchmark tests (one of which was a simple Hello World web server), Crystal can be very performant whilst retaining much of Ruby’s syntax.
In fact, the syntax of Ruby and Crystal are so similar (which is by design) you can even compile and run Ruby code (e.g. by running crystal xyz.rb) using the Crystal compiler and get a free speedup! Of course, this only works if the Ruby code also happens to be valid Crystal code.
Crystal also has some modern language features such as type inference and macros too.
Racket
Whilst I had been vaguely aware of Racket as ‘another LISP’ I had no idea just how much extensibility you have at your fingertips via the #lang notation. Sam Tobin-Hochstadt‘s talk did a great job in illustrating this using a number of examples:
Typed Racket
You can introduce a gradual type system by extending the language using a library and the #lang notation. To give you an idea, here’s a screenshot from the official getting started guide:
Lazy Racket
Similarly, you can also turn Racket into a lazily evaluated language (like Haskell) using #lang lazy.
I saw a lot of impressive things at PolyConf but the ability to ‘hack’ the language in this way might have just topped the lot.
Just for fun (since EmojiLisp was introduced in an earlier lightening talk), Sam also showed how you can basically implement EmojiLisp in Racket with a few lines of code.
(on a side note, whilst not nearly as powerful as Racket in this regard, you can also do some really cool things with Elixir’s macro system. If you’re interested in Elixir, then you would want to watch this talk by Chris Mccord at NDC Oslo too)
Finally, here are some of the best tweet during the conference:
“We had reactive programming in Erlang 25 years ago.” —@rvirding, and I swear I didn’t put him up to it. #PolyConf
— Bodil Stokke (@bodil) July 4, 2015
When you get used to immutable data, ya kinda forget how to use mutable data in a sensible way. @rvirding #PolyConf
— Jessica Kerr (@jessitron) July 4, 2015
Freedom is not anarchy. The right constraints lead to better designs. @adambyrtek #PolyConf #immutability
— Jessica Kerr (@jessitron) July 4, 2015
“Don’t look for silver bullets… My pitfall was that I listened to people on the internet” #polyconf pic.twitter.com/fcOGZtIfd8
— Yan Cui (@theburningmonk) July 2, 2015
“Any sufficiently complicated Program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Erlang #PolyConf”
— Serge (@Creeonix) July 4, 2015
“No language is good at everything” @rvirding #PolyConf
— theadam (@theadam) July 4, 2015
Famous words from @gar1t #polyconf pic.twitter.com/sTmmkjI0ex
— Yan Cui (@theburningmonk) July 4, 2015
Principles for designer-developer communication #polyconf pic.twitter.com/u3mSeBhPfO
— Ilkka Laukkanen (@ilkkalaukkanen) July 4, 2015
Similarities in the principles of design and software #polyconf pic.twitter.com/MZCkJUn0vM
— Yan Cui (@theburningmonk) July 4, 2015
Good quotes seen at #PolyConf pic.twitter.com/dyYVzy1vCT
— Yan Cui (@theburningmonk) July 3, 2015
“A language that doesn’t affect the way you think about programming, is not worth knowing.” —Alan Perlis; #PolyConf @polyconfhq
— Orinthea Smith (@Orinthea) July 3, 2015
“PureScript – a better Haskell than Haskell, for JavaScript” – @bodil #PolyConf
— Yan Cui (@theburningmonk) July 3, 2015
“The DOM is extremely object oriented, in all the wrong ways” – @bodil #PolyConf pic.twitter.com/KnzxIAfZsM
— Yan Cui (@theburningmonk) July 3, 2015
“It’s our uniquely human talent, that we don’t really have to have proof to be sure about something” @jessitron speaks on types at #polyconf
— Joe Nash (@jna_sh) July 3, 2015
feeling so inspired at #PolyConf @theburningmonk mastering something does not need 10 k hours, you can do it in 20: https://t.co/RdEu1373JQ
— Silvia Pina (@shiruru9) July 3, 2015
“Learn a new paradigm, not a new syntax” words to live by! @theburningmonk #PolyConf
— Korneliusz Caputa (@elkornel) July 3, 2015
“bugs is a constant across langs given LOC, roughly 15 bugs per 1k LOC” – @sferik #PolyConf
— Yan Cui (@theburningmonk) July 3, 2015
Evaluating open source software: – is it alive? – is the community responsive? – is it welcoming? Alissa Bonas #PolyConf
— Jessica Kerr (@jessitron) July 3, 2015
“As Moore’s Law comes to an end, we are all going to be in distributed computing.” ~ @corbett #PolyConf
— Jessica Kerr (@jessitron) July 2, 2015
Will [demos relational interpreter]: Any questions? @rvirding: You give the answer, we’ll provide the question. @webyrd: 42. #PolyConf
— Jessica Kerr (@jessitron) July 2, 2015
#PolyConf @webyrd demos a relational interpreter: run arbitrary code backwards (given result, find args), and generate code that meets reqts
— Jessica Kerr (@jessitron) July 2, 2015
“Don’t treat your database as a generic tool. Commit to it, learn what it can do.” @HonzaKral #PolyConf
— Jessica Kerr (@jessitron) July 2, 2015
“generic tools are easy to start with, but with a very low ceiling, it does everything and does everything equally badly” #polyconf
— Yan Cui (@theburningmonk) July 2, 2015
So that’s it folks, another conference down and another bunch of things added to my ever-growing todo list!
Next, I’ll be speaking at the Cambridge F# User Group on the 20th July to talk about how Gamesys is using F# to build backends for games played by millions of players every month. Feel free to join us if you are in the area.
You’ll next find me at a conference on September 12th, at the first ever Kats Conf in Dublin, organized by Andrea Magnorsky. Edwin Brady will be there to talk about dependent typing and Idris, and I’m expecting to see an exciting lineup of speakers being announced soon!
Whenever you’re ready, here are 3 ways I can help you:
- Production-Ready Serverless: Join 20+ AWS Heroes & Community Builders and 1000+ other students in levelling up your serverless game. This is your one-stop shop for quickly levelling up your serverless skills.
- I help clients launch product ideas, improve their development processes and upskill their teams. If you’d like to work together, then let’s get in touch.
- Join my community on Discord, ask questions, and join the discussion on all things AWS and Serverless.
Pingback: Tokyo Experience Report | theburningmonk.com