CodeMesh 2018

Once again I have been lucky enough to attend this year's codemesh conference, but this time I was not only attending but also presenting with my friend Yann Schwartz , speaking of something we have been working on for a few months and thinking of for a few years: How to leverage the power of those billions of lines of logs our systems generate?

I only attended the first day of the conference so the following notes reflect only a fraction of the conference. Rumors have it that the second day was much better than the first, unfortunately.

The first keynote was given by Carl Hewitt, of Actors fame, and titled Ultraconcurrency for the future. This was some kind of research program or vision statement about the future of computing systems and different technologies and paradigms, from actors to citadels through inference and planning systems would led to Scalable Intelligent Applications. I must admit the talk was hard to follow...

Carlos Baquero Moreno then talked about Convergent/Commutative/Conflict-free Replicated Data Types of which he is one of the original creator. His talk was an introduction to CRDTs and it succeeded in giving a good intuition of some of the basic data structures you could build and the principles underlying both state and operation based CRDTs. Of special note was his use of a beautiful isochronous map drawn by Galton in the XIXth century coloring various parts of the planet according to the time it takes to reach them from then the Center of the World, London.

I was both excited and intrigued by the next talk, entitled Verifying a distributed system with combinatorial topology, so I was sorely disappointed when I realised it was a 40 minutes long rant about how inane current development practice of distributed systems are, and how mathematics, and more precisely combinatorial topology, could help solve our problems, without any single fact or even vaguely enlightening example to support this claim. Given that Maurice Herlihy recently published a book on this subject, I am 100% sure this is an interesting topic from which us practitioners could get deep insights, but this presentation failed to convey any useful intuition.

Coroutine explained was a great overview of this sometimes confusing construct which can appear in various guises: Cooperative threads, asynchronous computations, first-class continuations. Coroutines are useful to simplify cooperative multitasking code, alleviating the pain of callback hell or even chain of promises, and removing context-switching overhead. It was interesting to see how async/await computations, and in general coroutines, are "compiled" to state-machines. I learnt about the difference between stackful and stackless coroutines, Lua being a representative of the former while JS implements the latter. The presentor highlighted some caveats when working with coroutines, liek painful stack traces, convoluted debugging and hard to maintain thread safety when using both coroutines and multithreading.

The last talk I attended was given by Heather Miller and aimed at providing a 10000 feet view of the state of research in distributed systems support from programming language theory. This talk was really awesome and treaded quite a lot of ground, from different consistency guarantees on data structures, to Heather Miller's own Function Passing, through Session Types. This URL is supposed to host a collection of references to the various work cited: Can't wait to see it filled.