It was /dev/summer at the weekend, where there were a few very interesting talks. Rather than going to the Clojure or Haskell tracks, this time I attended the double session on Go and a couple of sessions by Gleb Bahmutov .
The Go session took a little while to get going, with the first 45 minutes hardly touching the language after some questions around the directory structure of a Go project on the disc. This meant that we didn’t get to see any large examples, thought the witty presentation and insightful answers to the questions led me to come away with basic Go knowledge that I can now try to put into practice.
The presentations by Gleb were full of good interesting ideas. The first presentation looked at the issues around npm modules and their dependencies (though the ideas applied more generally), and how semantic versioning isn’t typically supported by the modules. The clever idea of the presentation was a tool that tests semantic compatibility by running unit tests against the old and new versions of the module. Failures in the tests imply incompatibility and by having users send their results to a central server it is possible to check how safe a module upgrade is going to be. The second presentation looked at using code snippets inside Chrome to get various metrics on the page such as load time and render time, and also showed us how to combine this with the various profiling tools. Having not used these tools before, this was a great introduction to speeding up a web application.
I also attended the lightning talks which were a useful and informative set on general open source and browser testing.
It was a little strange to come across these talks. I’d just been reading about module dependencies in the .Net Nuget world after the publication of this post which talks about some changes to Nuget to make it support the new CoreClr world where the number of profiles is too great to simply name profiles using an integer value, and package authors will instead need to declare their dependencies. It also links to the bait and switch technique. I was also doing some interesting reading on the new WebAssembly technology and came across this great interview with Brendan Eich that explains things well.
Two other interesting blog posts. A talk on cloud scale event processing using Rx, which mentions some of the changes required to scale from the desktop version to a server based version – features needed included a way to checkpoint a query. This post on Rust’s type system is also interesting.