CodeMesh 2014 day 2

By: on November 6, 2014

So, I went to day 2 of CodeMesh this year, James having taken day 1. Here’s a brief round-up of what I saw.

Chad Fowler – Keynote “Tiny”

An entertaining talk, talking about how the concept of “seven plus or minus two” applies in all sorts of categories of things (although Chad definitely leans towards the minus two end): team members, methods in a class, and, and … and … well, actually although the impression he gave was that this was true practically everywhere, it isn’t and he said as much for some cases.

Five employees? Five classes in an application? Five functions in an API? Five apps in your infrastructure? Five teams in an organisation? Actually, for teams and employees, Chad missed a bit of a trick. He brought out the “150 people in an organization” meme, but did not point out that this is pretty close to 5 x 5 x 5, which would equate to five departments of five teams each, each with 5 members.

Still, a fun talk and a useful reminder whenever you are tempted by the “big re-write” or the “big do-it-all class” (not that you’d get very far suggesting that at LShift).

Mandi Walls – Chef

I realized I should not have gone to this one. I have no experience of Puppet or any other infrastructure-as-code project, and spent the entire time thinking “well this sounds lovely, but what’s it like in practice and how does it compare to the competition?”.

The one thing that got me a bit excited was the mention of Serverspec, which is a tool for testing your deployed infrastructure that is not dependent on the use of Chef, Puppet or whatever. I think I could use that in my current project.

Bodil Stokke – PureScript

Bodil had a bunch of technical issues that really ate into her slot, so we didn’t get as much as we should have. I think it is very brave coding in front of a live audience, but she made it work. A language has to be terse yet understandable for that to work; it was for me, but then PureScript is almost indistinguishable from Haskell. Bodil coded up a quick game with scrolling ground and a jumping pony, with the PureScipt compiled down to JavaScript and instantly hot-swapped into a live web page. PureScript looked really good.

There was no time for questions but later I asked her why PureScript when twice she mentioned how great Elm is (which is another Haskell-a-like that compiles to JavaScript). I was expecting an answer along the lines of how much nicer the compiled code of PureScript is, but in fact her main objection to Elm was that it required a runtime, and that for her tiny browser ad-based games she cannot afford to be deploying a runtime with her code. Fair enough.

I will definitely be investigating Elm. Just as soon as I can persuade my Haskell installation to behave itself.

Daniel Egloff – Taming GPU threads with F#

Like Mandy’s, another selling thing (Alea), and again I found myself wishing I knew about the alternatives. However, it seemed clear that this is at least aiming for exactly the right thing. You get an F# macro that converts (restricted!) F# code into GPU kernels, and Daniel claimed close-to-and-sometimes-surpassing the code speed you could achieve with CUDA C.

A dataflow model is in the works that does automatic assignment of tasks between the CPU and GPU and all the scheduling. Sounds great.

Dan Macklin – Launching Products at Scale

I met Dan before this talk, and he had a lot of interesting things to say. In the actual talk, he sounded much more like a manager, and I thought I was glad to have met him before the talk!

His message was a little confused, but it was an entertaining description of an attempt to do some really big projects at bet365. The message, if I may boil it down to a single sentence, was this:

“Do it in Erlang, but watch out for your team falling too much in love with it”! Oh yeah, and his final comment about Riak: “Embrace sibling resolution”.

Joe Armstrong – Connecting Things Is Really Difficult But Could And Should Be Rather Easy

This is the one I wanted to go to. So did everyone else. But he was in a tiny room, and people were stacked up inside and outside it to beyond audibility, so I had to settle for the giant mostly-empty hall that was hosting…

Tom Hall – A Little Process Calculi for the Working Programmer

If this talk can be summed up in a sentence it is this: “Just as lambda calculus exists, and propositional calculus exists, so too does pi calculus and you might be able to reason about your concurrent programs with it.”

Tom’s nervousness in giving this talk to a giant auditorium was palpable, and he got a lot of stuff right, but walking through proofs is not a good idea and practical applications is a really good idea.

John Hughes – QuickCheck evolution

Selling Quvic (free to OpenSource projects). I’m a big fan of Haskell QuickCheck. I recently did a lightning talk at LShift that was going to be about how great it is and how everyone should use their language’s version of it, but once I saw all the other versions of it I changed the talk to how QuickCheck really needs typeclasses or there’s no point.

Anyhow, with Quvic’s tech, you write your tests in Erlang (I still don’t really like the way such code looks, compared to the same thing in Haskell) and you can test anything that Erlang can call (but that’s just Erlang and C, right?). There’s a CI service called quickcheck-ci, again free to open source. This looks truly amazing. It finds inputs that fail, shrinks them to minimal examples, remembers them as regression tests, shows you code coverage and even shows you the code coverage for a single run of a failing test, so you can limit your bug-hunting to only the green (covered) code.

Random Schmooz: Neil Mitchell

In general the schmoozing was poor at CodeMesh, probably because the WiFi was so good, but I still nabbed Neil Mitchell and a few others. Neil gave me this insight:

“F# is strictly better than C#. There is no excuse for using C#. You can and should re-write your C# in F# piecemeal”. So there you have it.



Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>