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.
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.
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.
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.
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.
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.
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.
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.