Bath Ruby 2016 summary

Two years ago I worked in marketing. If you had told me back then to take a day off, buy a train ticket to Bath and go to a marketing conference, I would have… Well, I don’t even know how to finish this sentence to adequately express how ridiculous this suggestion would have been.

How things have changed! Today I took a day off, bought a train ticket to Bath and went to a Ruby conference. On top of that I took notes and have decided to summarise the day in this blog post to help me recap what I’ve learned.

Bath Ruby is a single-track conference with several half-hour long talks and lots of lightning talks mixed in. Here’s a summary of the longer talks.

Xavier Riley on Sonic Pi

Sonic Pi is a Ruby-based environment for making music. It comes bundled with the Raspberry Pi.

Xavier started off his presentation by asking us all to remember the feeling when we got our first ever programme working and reminded us that this feeling is a very important motivation for learning how to code. That’s why he’s using Sonic Pi to teach coding to secondary school students - it gives immediate feedback and you can have that sweet feeling of success very quickly.

He took us through the Sonic Pi API and showed us how easy it is to get started with it. Apparently the creators of Sonic Pi have a rule which says if a 10-year-old can’t understand it, it won’t be built into the API.

Xavier taught us how to play Frère Jacques and how to use different synthesisers and include samples (.wav files).

Interestingly you can have several threads running at the same time which are in timing with each other. Quote from Xavier: “it is a multi-threaded application that actually works!"

He concluded his presentation with a live coded DJ set. Very impressive!

Coraline Ada Ehmke on Neo4J

Neo4J is a graph database and Coraline talked us through what it is and why we would choose it over a relational database (which is more common in the Ruby community). She showed us some example queries and how she uses Neo4J for her side project: creating an AI with Ruby.

If I’ve understood it correctly, a graph database supports context and relationships between data much better than a relational database. There’s no need for foreign keys and join tables as we know them from relational databases.

Neo4J apparently has much better performance than relational databases. It is schema-less, which means that it can flexibly adapt to any requirement changes and no database migrations are necessary.

To make a query, the language Cypher is used. Coraline highlighted that the Cypher syntax almost looks like ASCII art because it uses things like arrows -> to point to the location of data. Neo4J has a browser environment which shows a graphical representation of the data when you make a query (it kind of looks like a mind map).

This was my first time learning about graph databases, so I was a mixture of confused and impressed after this presentation. But on the train back to London I had an interesting conversation with a friend who actually uses Neo4J at work and his opinion was that it’s not the best thing since sliced bread. To him the graphical browser doesn’t really have much value and to make the queries really fast it’s better to use Java rather than Cypher with its ASCII art. He also said that in his experience performance isn’t that much faster than that of relational databases if you optimise them properly.

It was really interesting to have a second opinion but I don’t feel like I know enough yet to form my own opinion on this.

Courteney Ervin on open-source contributions

I really enjoyed this presentation. Courteney was full of energy and seems like a really cool person. Shame that I had to rush off after the conference, otherwise I would have liked to hang out with her for a bit.

The purpose of her presentation was to take away any fears around open-source contributions and to encourage people to do it. She started contributing to open source very early in her developer career when she had very little experience and was too naive to be scared of anything. She just did it!

She referenced the confidence and self-love movements that are currently en-vogue and said that we should start loving our code and feeling that we’re good enough to contribute. Because there are a lot of lonely open-source project owners out there (Courtney is one of them) who are desperately looking for help.

She made her presentation a bit interactive whereby we in the audience had to make eye contact with a stranger and give them permission to contribute to open source. I met a young man from Sheffield who had never contributed to open-source before. His reason was that his work doesn’t allow him to open-source his code. And when I suggested that he should do it at the weekend he wasn’t too impressed. Hahaha!

My only open source-contributions so far are non-code contributions, for example notes from presentations or improving coding tutorials. I definitely want to make some real code contributions soon! Although Courteney also emphasised that it doesn’t always have to be code.

She gave us some potential reasons why someone would want to contribute to open-source and then made us write down our reason (e.g. learning a new technology, having your own code in the public domain to show for job applications, creating a side project, creating a specific tool that you’ve always needed…).

Courtney listed some resources for finding an open-source project to contribute to:

Janet Crawford on gender inequality and cognitive bias

This was the after lunch slot… Poor Janet. Although she presented well and with much enthusiasm which hopefully helped people stay awake.

However, for me this presentation was yet another one on women in tech, how difficult it is for them (I mean "us") because of society’s ingrained expectations on gender roles and so on. I don’t know… I’ve heard so many of these over the last year since I’ve started working in the industry. Yes, probably because I seek them out specifically, follow minorities on Twitter, am a member of different diversity meetups and so on. But surely this issue has been raised quite a lot in general. Or does a self-respecting tech conference these days have to have a presentation slot for this topic?

Maybe I just feel a bit tired of hearing women talking on this topic. I don’t feel like it changes anything if minorities themselves discuss this over and over again.

It would have been nice if a man had presented on this for example. I mean there’s a room full of men, listening to this lady who is not even a developer (physicist, fair enough, she’s pretty legit but still it would have been nice to have a programmer). I feel like maybe it would have made more of an impact if one of their own had spoken to them.

That said, I would have been interested in how many people in the audience actually learnt something new from her. Maybe I am in the minority here (pardon the pun) and most of the developers at the conference hadn’t heard about this topic at all? I should have tried to find the young man from Sheffield again and get his opinion.

Zach Holman on firing people

Zach was one of the first employees at GitHub and was fired after having worked there for five years. His talk was about what employees and companies can learn from his personal experience of being fired and how the process can be made less unpleasant for both sides.

"How a company off-boards their employees tells you a lot about the company itself." That was one of his first statements and I thought yes, I totally agree! This is going to be an interesting presentation! Having worked in an organisation where almost half-yearly redundancies had become the norm, I definitely feel like this process can be improved a lot. Let’s see what he had to say.

Unfortunately his presentation turned into a talk about himself. How he had such a great track record at GitHub and still got fired. And all the unfair things that GitHub did to him. And how he really had no idea whatsoever why he was fired. And how brave he was for doing a presentation about this emotional time in his life.

I’m sorry for him that his ego was hurt but I didn't feel like I learnt a lot from his presentation.

On top of that he massively overran which meant that Aaron Patterson started late and I had to leave before his presentation was finished.

Aaron Patterson on how method calls work in Ruby

True to form, Aaron started with some puns about Bath and jokes about England vs America. It was so funny! Bubble sort was invented in Bath. His hotel room only had a shower. Everybody was on the floor laughing. But for me the funniest thing was how Aaron laughed about his own jokes. He genuinely thought they were hilarious. That made it even funnier for me (weirdly it makes me happy when people genuinely laugh about their own jokes).

Before starting with his actual presentation topic, he reminded everyone that beginners should never feel afraid to ask questions. And that experienced programmers should always be nice to beginners and answer their questions.

Then he dived into showing us how method calls work. Firstly he started with a reminder of how Ruby’s VM works. It is stack based and the byte code is a two-dimensional array. He described how method calls are executed in the VM and which data goes onto the stack and gets popped off after which code runs.

The pointer finds the method on the stack by checking each item on the stack to see if it is the correct method. This process always has the same speed, no matter if a method has 10 ancestor or 10,000. And that is achieved by inline caching. All method call sites contain a cache.

I don’t think I fully understood everything he explained but I kind of got the gist of it.

Aaron noticed that case statements were slower than if-else statements even though under the hood they do the same thing. But the cache is missing in the case statements. He promptly told us to hold off changing all our case statements to if-statements because he’s working on dropping a cache into the case statement code.

Then he went on to explain how to resolve a missing cache. Apparently method calls in rspec lead to a missing cache. And singleton class access breaks the method cache at runtime for that instance… But that’s when my understanding of his presentation got a bit hazy… Very hazy in fact. And I had to rush off to catch my train back to London. I’ll watch the recording of his presentation once it’s up.


Overall, it was a really fun conference with lots of nice people to chat with and interesting speakers to listen to. It was also a good reminder for me that there is more than just the London tech community. I have to admit that I was briefly surprised that some people I spoke to had come from Leeds or lived in Reading… Not London? Crazy!

I hope I can go again next year and stay for the after-party.

Read more:

Blog posts

Today I learnt