Notes From Brighton Ruby Conf 2015

July 20th saw 200 Ruby developers descend on the fabulous city of Brighton for the second ever Brighton Ruby Conference. It was an all round brilliant day spent in the heart of the North Laines at the Brighton Dome - no talks were dull and the atmosphere was very friendly. The conference was hosted by Andy Croll who did a great job organising and looked very happy when it was finally over.

I took some notes which have been quickly compiled and posted up into this blog post. Hopefully it will be useful for others attendees in jogging those lovely talk memories. For non-attendees, you will have a better idea as to what you missed!

The talk videos will be posted over the course of (I think) the next year on the Brighton Ruby website. The date has already been set for next year (8th July!!) in the big room which can hold up to 800...

sarahallen

Making Software Fun - Sarah Allen

What is fun? Trick (17th Century), environment of fun/foolish

Children learn by playing

Epic Win/extraordinary outcome

Children proven to subordinate their own needs to go along with the rules

Sports - Rules become a desire

Making a game: Starts simple, map to something you know how to do

Learn from other people

Visuals save people cognitive effort

Things that are NOT fun in the tech industry:

No one wants to play a game they will lose

Believe in someone and they will do better

Teacher was told there are 4 gifted school children in class but to treat them the same as the rest of the children… turns out it was a lie and they were never gifted (was all part of experiment) but they performed better

luca

Lotus and The Future of Ruby - Luca Guidi

Currently with Rails - Dependency hell

lotus.rb is a gem which is a 'Complete web framework for Ruby'

Small, HTTP end points

Modular first approach

Non monolith

Focuses on maintenance

Explicit is better than magic

‘Eat your vegetables development’… you eat a burger… nice immediately but feel bad and sluggish after

Project is open source - please try it out and contribute

elle

Just in Time - Elle Meredith

Timezones in Rails

3 UTC - System time, Application time, Database time

Time.now in timezone of application

Time.now time on machine

Use Time.current and should match the db

Time.zone.today

Always work with UTC

Use Time.current and Time.zone.today

Helpers to freeze time on tests

same

Does One Really Need That Gem? - Sam Phippen

Bundler is good

Lock file - specified all versions of gems

Powerful guarantee that everyone on team will have same version

When we install rspec we also get 6 other gems installed - these are known as Transitive Dependencies (when gem declares dependency on other gem)

Do you trust the author of these?

When adding dependency we often just go for the first thing

Ruby Toolbox is your friend

Most gems understaffed but remember people have a lot of other things to do

Less PRs is probably better

Semantic Versioning gives project maintainers a way to talk to others about gems

M.mp (major.minor patchlevel)

Patch - fixed one or more bugs

Minor - one or more features added , no existing apis broken, should be safe

Major - broke one of the major apis… upgrade could be painful

0 version of gem - experimental, api not confirmed. Release a 1.0 to show it is stable

4 digits deviates from community standards

Vendoring - Taking code out of a gem and putting in app

No shame in vendoring if it is a small piece of the gem

Saves adding whole gem and its dependencies

Lightning talks!

There were many and all were great but I have just written up one:

tatiana

Onboarding Juniors - Tatiana Soukiassian

1. Write Code, get feedback

Pair programming

Guided solo programming

Code review

Mentorship

2. Freedom

20% project, 1 day a week

3. Team Integration

Ok to ask questions

Encourage initiative

Freedom, feedback, faction (team integration)

rob

Mini Munging: The Joy of Small Data - Rob Miller

Joy of small data

Mash until good

Underrated tool kit:

Shell - powerful programming environment

Devs ignore shell’s power

Pipelines are powerful - use to hook up output of one process to input of another

Each performs discrete transformation to data

Combine unix and Ruby in pipes for fast results

nadia

Playing Games in the Clouds - Nadia Odunayo

Game theory - Strategic interaction between rational agents

Bargaining - How surplus is split between agents

Can use Game Theory to think about how resources are allocated in distributed systems

Computers are better off with lighter loads

Auction theory

3 bidders:

Sally £25

James £5

Lauren £10

Even though Sally wins she pays only the amount bidded by 2nd highest bidder (in this case £10)

Uses the dominant strategy to bid truthfully

Computers should not deviate from true memory value

Can use to optimise job placements

Can use Game theory to break down simple problems and increase profit as reduces cost

tadej

Command and Conquer: Red Alert - Tadej Murovec

Alerts 184 a day

What is actually important?

Define symptoms that add value

Alert on symptoms not causes

Pair review alerts

Under monitoring > over monitoring

Notifications to prevent alerts

kinsey

The Struggle to Stay Technical - Kinsey Ann Durham

56% of women leave the tech industry

Why they leave?

Lack of flexibility

No work life balance

Biased evaluations (having to prove themselves)

72% of women sense bias

“Abrasive”

Women get pulled into less technical roles

Mid level devs pulled into management roles

Isolation

1% of open source contributions from women

Little things build up

All related to company culture

What can I do?

Recognise our biases

Open, casual conversations

Equal maternity and paternity problems

Invest in learning

Why?

Gender diverse teams perform better

Future of innovation in the world would perform at twice the rate

avdi

The Soul of Software - Avdi Grimm

Spiritual Origins of Ruby

Determinism

Order

Logic

Hermematic - Informal School

Study of the meaning of texts

Meaning = Something humans create in the world

Reality construction:

Brain suppresses data

Brain erases evidence of data being suppressed

‘Friendship’ does not exist in objective reality

Shared constructive meaning

Money only has value as we have a shared construction

Realities modelled in software

Realities modelled in money

Realities modelled in political boundaries

Structural lessons

Unquestionable fabric of reality

fnords

Tech/OSS is a meritocracy

Reality = socially constructed

OOP learnt from a formalist

Alan Kay - Father of OOP - ‘Inheritance is a side issue’

Formalist - focused on inheritance and hierarchy

What does it mean in Ruby for it to have an attribute “full_name”

The alternative?

Informalist

Human and social endeavour (software)

Not about trying to model the world

Software is another venue for us to construct reality

Software reflects back up into the lives of people

“Impacts are clearly negative”

Facebook:

Effects moods

No such thing as a neutral algorithm as algorithms have consequences

There was a Uni tour - some people had exposure to dollar signs during the tour… these people spent less time helping a person a pick up pencils than a group who didn’t see the $

Money on the mind makes people act more selfishly

Sex redefined - m/f = formalism

Cycle of received wisdom that we do not question

Carina C Zona - Talk

Software reflects realities back to society

Write code to shape the world, but will it be a better world?

Ruby - informal and very dynamic

More human reality

look at the mirror not just monitor

Perspective is the key rationalism of human values