Julia Evans

PolyConf 2016

This year I went to PolyConf! PolyConf is about writing programs in any programming language! People come who write Clojure and Python and Erlang and C. Leandro Pereira gave a lightning talk about programming a light array in Forth.

First, the people at the conference were totally delightful. I knew only one or two people before coming, and so I walked into a room full of mostly strangers. Then I’d meet someone by the water dispenser and then learn all kinds of fascinating things from them.

There were a lot of people who are very interested in programming language design which was interesting because I don’t think about how to make programming languages very much.

Here are a few things I saw that I liked.

art and fun

Arne Brasseur gave a really fun demo of live coding music in Clojure during the lightning talks. This is one of those things that I’ve seen before, and every time I see it it’s THE BEST.

Szymon Kaliski talked (“Exploring The Universal Library”) about art and building tools to make art. One great example he gave was – he did this choose-your-own-adventure video project with a partner, and originally there are 8 videos and he was going to hardcode all the connections between them. Instead, he made a simple visual tool. Then the person he worked with actually ended up adding 200 more videos to the project and it became way more complex and interesting. It made me think about building small tools for yourself to use and how that can work really well!

programming languages

[Jack Franklin]() talked about Elm, a language that tries to make it easier to write frontend Javascript code. I liked that he didn’t try at all to explain the syntax – instead, he was like “it’s built for beginners! the documentation is good! there are great examples! here’s the way a starter Elm program is usually designed!”. I tested his claims by trying to write a tiny Elm program from start to finish (including installing Elm) on my laptop during the talk. The program worked! I got a heart to follow my cursor around the screen! I still don’t know if I’d write it or not but there are some nice things.

Elm seemed to be kinda a theme because [Yan Cui]() later did a live demo of coding a Snake game from scratch in Elm. He was incredibly well-prepared and I really liked it – it was really fun to see the development environment and how he built it up from scratch.

Rachel Reese gave a nice history of the programming languages that led up to F# (the ML family). I found out that one researcher would just find people in cafés and libraries reading type theory books and invite them to his reading group! This makes me want to have a reading group :)

ERLANG. Erlang is on my list of “what even is that??” so I was happy that Jan Stępień talked about his company’s first Erlang experiment (some slides). I think Erlang is more like an operating system than most programming languages are. He talked about how to build a request limiter. I think – I may have this wrong – that the way you do it is you write code to count requests and then this code supervises all the other server processes. If those processes do too many requests, the supervisor just kills them all. Somehow this ends up propagating back into a nice error message to the user. This is super different from the normal exception handling model and I don’t really know what to think of it yet. But it does make me want to learn more about Erlang.

I also learned that apparently every Erlang process / green thread has its own dedicated area of memory, and so one process definitely cannot corrupt the memory of another process. That is a new idea to me too!

talks that are critical

There was a lot of “hey! look at this technology! it is amazing!” at this conference. This is always nice because it’s great to be excited. But with programming things inevitably go badly sometimes, and sometimes I really like to hear about that.

Hans Hübner talked about his experience running Datomic (the time-travelling Clojure database) in production, and how they found that time travel meant that it was harder than normal to do database migrations and change their code.

I really like that we’re trying to push the limits of how we think about databases, but as we do that of course some things aren’t going to work as well as we hoped. Talking about it in public means that other people can learn from your experience instead of always having to start from scratch :)

I think about how to say negative things in a constructive way a lot – it’s appropriate to say “hey this is cool and I liked it!” about practically anything, but, when should you say that something didn’t work well? I think it’s incredibly important to talk critically about databases (for instance aphyr’s work on the Jepsen project) since it’s so hard to change your database, we all have a limited amount of time to experiment, and database integrity is so important. I was very happy to see a talk like this.

making http servers fast

Leandro Pereira talked about a high performance HTTP server he wrote from scratch over 4 years. I thought it was a really cool hobby project and it inspired me to learn about why we use the Linux kernel’s TCP stack?

On the frontend side of web performance, Guy Bedford talked about the future of Javascript packaging and distribution (“dynamic linking for the internet”). This is something I know basically nothing about so it was interesting to see. One of his core assumptions was that to make JS packaging work well, we need HTTP/2! Maybe I should be learning more about HTTP/2. Okay!

scheme & fun with compilers

Speaking of programs that someone has written over a long time – Andy Wingo gave this very lovely talk about his work on Guile Scheme. (which has the prettiest GNU website I’ve ever seen). I loved it because he started out talking about crafting and making things and raising chickens, and went into why he loves building compilers and then talked about some of the specific compiler features he is excited about building, how he likes making the language fast, and the kinds of speed improvements they’ve been able to get over the years.

I’m now inspired to read a bunch of his old blog posts. For example he’s written a bunch about the V8 Javascript engine.

i gave a talk!

I gave a talk called “systems programming is for everyone”. Lots of people said nice things and I think it went well. I came up with this extra section at the last minute called “programming experiments” about how I like to write small programs that don’t work to learn things, and I was happy I did. here are the rules:

rules of programming experiments

  1. it doesn’t have to work
  2. you don’t have to finish it
  3. you have to learn something

I will attempt to post some notes about the talk soon.

Arne added a 4th rule which i very much agreed with – “it doesn’t have to be good” :)

yay

I met like 10 new people who I really liked, saw a bunch of nice talks, and overall had a great time. What else could a conference be for? The organizers did a great job and I left feeling really happy and hopeful.

Why do we use the Linux kernel's TCP stack? Linux debugging tools I love