Takeaways from PolyConf 2016

The PolyConf conference took place in the end of June. It unites polyglot programmers focusing on new as well as functional programming languages.

This is my overview of its most interesting ideas.

Rib: Requests in Batches

Jan Stępień presented his experience on implementing an inter-dependent batch HTTP requests handler called Rib.

Clients need to fetch complex data structures in order to display the application content. They usually make several API requests to achieve that. GraphQL and Falcor are the most popular ways to solve it by providing a way to request only the data that the client needs in a specific form. This sounds awesome, but comes with a cost - one has to define how to retrieve the data.

If you just want to batch your requests - Rib helps. The client sends a single request specifying what requests should be made. Rib returns all the responses. If any request fails - it returns a failure response.

Dependent requests are supported as well - read more here.

The service allows you to achieve the result fast, but it puts a load on your clients. This may become difficult when you have applications for several platforms.

Watch the video.

Why System Programming is for Everyone

Julia Evans shared her magical tricks on how to debug any kind of systems. Once you face a performance and looking at the code fails to give you a clue of what’s wrong - think outside the box. Check what system is telling you about memory and CPU consumption, disk writes, as well as networking stats. Linux tools she recommended are strace, dstat, tcpdump + wireshark, perf.

She encouraged us to experiment following these rules:

  • It doesn’t have to work
  • You don’t have to finish it
  • You have to learn something

Read more in Julia’s blog post.

Watch the video.

Elm for JavaScript developers

Jack Franklin introduced us to Elm - a statically typed functional language that strives to make web development fast. It provides easy to use abstractions and ensures, at the compile step, that there will be almost no runtime exceptions. It compiles to JavaScript to run on browsers. Currently it is a language-framework. But it might be separated into a general purpose language and framework/libraries for building web applications.

Watch the video.

Yan Cui took us through process of creating a snake game with Elm in his talk “My adventure with Elm”. It was fast and entertaining. The nice part ways that it was easy to follow. I like the way Elm structures web applications’ development. We saw how the code organization principles help the compiler to spot runtime exceptions during development. It looked great.

If you are excited about Elm - give it a try. Play around and learn. It will change the way you think about web development.

I would not recommend running it in production yet. The language is very young, lacks an ecosystem and might have a backwards incompatible evolution.

Watch the video.

The Seif Project

Douglas Crockford gave us an update about the Seif project’s progress. It focuses on creating a secure-by-design web. There’s a lot we’ve learned from the Internet’s evolution and there are a lot of legacy features which complicate security issues. Douglas created a new protocol to change the way we communicate. The project is open-source.

It is a bold idea which will face a lot of challenges - technical, political and social ones, but it may succeed.

Watch the video.

Kemal

Serdar Dogruyol talked about Kemal - a fast micro web framework written in Crystal. I would not use it for big projects yet, but it might be a very good fit for small performant micro-services written in ruby-like language. Speed and expression combined - that’s a rare thing.

Watch the video.

Overtone and shadertone

Arne Brasseur entertained us with music generated in real time and visualizations in overtone and shadertone. Teaser - he has a good taste in music.

Watch the video.

Git commands

Krzysztof Gogolewski made a short demo on some rarely used cool git commands:

git diff --compaction-heuristic # better diff
git diff --color-words          # highlights single line changes
git push --force-with-lease     # don't override if not most recent

All videos

There’s a lot more fun and useful stuff - check out all the videos on YouTube.