When is it okay to build an orbital laser to destroy an ant-hill?
Many cry "overkill" when design principles are applied to trivial problems. And for good reason: in the context of work, excessive embellishment gets us into trouble. Complexity costs us time and money.
This talk explores how stepping outside of the realm of work and applying outrageous engineering practices to toy problems can deepen our understanding of the trade-offs that we make. Comically simple problems provide the perfect ground for developing actionable heuristics which can be applied to those monstrous complexities that we face in the real world.
Exaggerate. Sharpen your skills. Kick ass.
Writing fast Ruby
Performance is one of the most important features of any application. Research has shown that every 100 milliseconds decrease in speed can reduce sales by 1 percent. Ruby is not known as a fast language but there are things we can do to optimize the performance of our Ruby code. This talk will show how to properly benchmark your Ruby code and discuss various techniques for making code faster and more memory efficient.
Building Better Web APIs with Rails
At some point every Rails developer needs to build an API, but what's the best way to do it and avoid the mess many run into when serving multiple client applications? In this session, we'll cover how to use Rails to leverage the HTTP protocol and build rock-solid web APIs. This includes fine-tuning route endpoints, content negotiation, versioning and authentication. We will also review common practices for keeping your code organized, clean and testable.
Peer into the dark and mysterious world of Ruby internals, delve to the point that the basic String becomes a complex web of optimizations, flags and peculiarities. The starting point for String Theory is the observation that immutable strings are more performant than mutable ones, and 23 character stings are more performant than longer ones. The how and why of these idiosyncrasies is where our journey begins. We'll pull apart the Ruby VM to explore how String is implemented in C, to fully understand String Theory we'll need to journey into Ruby memory structures and ultimately to the garbage collector. Get your spelunking gear ready as we discover how the GC has evolved, once we emerge from the darkness you'll see Ruby in a whole new light.
Coding and the Mozart Effect
Most developers code to music...some are even musicians themselves. Is it possible to streamline workflow by adjusting how we listen to music and what music we listen to?
Studies have shown that exposure to certain kinds of music can help to develop cognitive strength and improve performance of tasks. This talk will explore those studies and show what sort of things can be done to improve the listeners environment and help people to create better code.
Search Your Feelings: Multi-Table Full Text Search in Postgres
Easily searching across an application’s data is a pervasive need. If you are lucky, you can get away with simple sorting or searching on a single column, but it is more likely that you need full text search across multiple models, all from a single search. Thanks to the power of Postgres’ full text search, rolling your own search isn't too difficult. Following an actual feature evolution which I worked on for a client, we will start with a search feature that queries a single column with
LIKE and build up to finding results across multiple columns on multiple tables using database views, optimizing the query time with full text indices and representing the results as a polymorphic association on an ActiveRecord model in Rails.
Towards a better web development with Lotus
It's about a decade that we use Ruby for the web. Some of the products of these years have tons of messy code, slow builds and painful upgrades to deal with. If your application uses fat models AND fat controllers, you know what I mean.
Lotus is a minimal, but yet powerful framework that is focused on good object oriented design, testability and speed. You will learn about the patterns that it implements to solve these problems and to push Ruby performance to the limit. We need new ideas to evolve as a Community and as individuals. Good news are that you can apply them on today. Let's talk together!
Clean Code Cowboy
Have you ever had a fear of writing code? That maybe what you’re about to write makes no sense. Or maybe it’s not following best practices. Maybe it’s full of code smells? Or even worse maybe it doesn’t do what it’s supposed to do? You wrote something and you think “is this right and does it look OK!?”. Do you feel confident about your code? Are you happy with it? Programming is fun but it can be simply stressful - let’s just chill out, write a failing test and make it pass!
The Ruby ecosystem is known for its plethora of gems (and – sadly only a few – of its standard libraries), but the base interpreter itself is a treasure trove with small, beautiful jewels of pleasant syntax and fairly unknown, but elegant solutions that spring to help in the most surprising circumstances.
This talk covers some of the lesser known pieces of Ruby’s core (think ‘obscure, but highly-useful-when-applicable Enumerable methods’), syntax and general language ideas like callables and case matching. Come and see how Ruby can help you before the first require!
Everyone's in sales
Whether you like it or not you are doing sales all the time. Convincing your boss to use a new tool, applying for a job, and getting a freelance contract all require selling. If you work for a product company even if you are a developer when you talk about your product you are selling. When people think of sales they immediately think of the sleazy car salesman stereotype, but that is a very negative view of sales. Sales doesn't have to be done that way. The fact is everyone is doing sales all the time. Being aware of that fact and spending some time to learn a bit about how to do sales the right way will help you talk about your product and convince your boss to try something new you think will be good for the team.
Rails was born in 2004, the time of the "Ajax revolution". With the help of a little bit of prototype, scriptaculous and RJS, Rails made its mark in part because it facilitated creating beautiful and highly interactive web user interfaces in no time at all.
This talk will explore three approaches in two parts to build a front end for your Rails application:
1) In the first approach - "the Rails Way" - I exploit all the parts of the default Rails stack, as blessed by DHH himself. This includes jquery-ujs, Turbolinks and Sprockets. Fundamentally with this technique, most HTML is still generated server-side. Included in this part of the talk is a discussion if Progressive Enhancement makes sense, and a demonstration of the techniques involved.
2) The second approach is the "Angular Way", exposed together with the 3) third approach, the "Ember Way". With both perspectives, I show how to build "full" client-side web applications. Included in this part of the talk, in particular, are: a discussion about which of the two popular frameworks fits the Rails mindset best, and which brings the steepest learning curve, "to pipeline or not to pipeline": does it still makes sense to stick with Sprockets or is more meaningful to use a separate build toolchain (e.g. grunt and bower) in the front end?
Why Ruby must Go!
Pun intended! Ruby is an awesome language but can learn a lot from Go. In this talk, I profile and compare both languages and discuss what Ruby can learn from Go.
While Ruby makes us rethink Object Oriented Programming, Go makes us rethink the programming paradigm itself!
This talk covers some aspects of Go and why things are the way they are (and sometime should be). - Syntax sugar and importance of static data types. - No classes but interfaces and how it re-programs us. - No exceptions but only errors. - CSP and channels - an awesome way to communicate. - Concurrency and goroutines.
This is not an RTFM talk about Go. I plan analyse not what is there in Go but WHY it's there. For example, why do we get a random key-pair every time we iterate a Hash in Go and why Ruby should not have OrderedHash! This is just one example among the many in the talk.
This talk aims to make the open the eyes of the listener to some ideas that can help make Ruby even more awesome.
Ruby & You
On November 22, 2013, a devastating security exploit was publicized to the Ruby community: Heap Overflow in Floating Point Parsing CVE-2013-4164. There was no fixes provided for Ruby 1.9.2. In fact, Ruby 1.9.2 has never had a formal end of life announcement.
This talk is about my story joining ruby-core and how I've learned to interface with the rest of the core team. We'll walk through some steps and mistakes that I learned on my journey. You should care about the development of the language and I'd like to show you how you can engage without being an expert C hacker. We'll remove the opacity around being involved and having meaningful discussions. Help us make Ruby better.