Simultaneous TranslationBuy your ticket
Every day, knowingly or not, we create and follow algorithms. From deciding what route to take home from the office to following a recipe as we cook or bake, life is made of patterns. These patterns take on special meeting when they need to be interpreted by a computer. No matter who interprets …algorithms—whether human or machine—they must be efficient in both speed and resource consumption. Come and learn the principles and best practices of crafting, evaluating, and refining algorithms in Ruby. We will work our way through a real world example of creating the core algorithm of a fantasy combat game. Step by step, we will translate a complex system of rules into a robust and efficient Ruby algorithm. You will walk away with a better understanding of how to create optimal algorithms and refactor existing algorithms in your own Ruby code.More
The Rails framework contains a set of useful features for every Web application, but not every feature is well implemented and bug-free.
During this talk we will walk through two very old Rails features—Active Record’s scopes and HTML sanitisation—and explain how they work …under the hood. Also, It will be presented the current issues we’ve been facing and how they can be improved.More
Database was always one of our first bottlenecks when trying to scale Shopify in multiple servers. Nowadays, NoSQL databases are getting pretty popular, specially because they scale out of the box. At Shopify, we decide to not use a NoSQL database as our canonical source of data and, in order to scale that properly, we had to create custom solutions …to shard its data. I will be talking about how we did it using Ruby and Rails, and when you should shard a big database.More
Considering getting a new dog? Here are some name suggestions: fluffmuffin, peppercorn, monkeybreath.
Just kidding, those aren't dog name suggestions—those are a few of our users' plaintext passwords. …
Don't like any of those? Don't worry—I have 80,000 more, and it only took me 87 seconds to gather them from our customer database in a white-hat attack.
In Act I, we'll cover the history of secure password storage, examine the hack, and mitigate the threat. Act II will address the difficulties of working on libraries with complicated dependencies (like bcrypt-ruby, of which I'm now a maintainer). In Act III, we'll celebrate the power of global collaboration via OSS.
A few years ago, a lot of people said that Rails did not scale. Nowadays, there are a lot of big applications in Rails that show that this is not true. But when your project grows, to which point is it worth to keep everything in a single application? … In this presentation, I will show details of a service distributed architecture, highlighting the advantages and drawbacks of this approach. The case of the Globo.tv (http://globotv.globo.com/) will be presented as an example. In this project, we use this architecture to allow different teams to work together.More
We should be evaluating whether the traditional username and password is the best form of authentication. I think there is a better way. I've open sourced something called Handshake.js that implements an email only authentication mechanism. …
Come see a talk on the strengths and weaknesses of this new approach as well as a live coded demo on implementing this into your next Ruby application.More
The Ruby world has been protagonist of a new era of entrepreneurship in the technology market. There are many techniques, new specifications and conventions that are designed to facilitate and enhance the development of applications, especially on the web. …
But this new context completely changes the way we were used to develop. Currently, the role of the Ruby developer goes beyond programming, and progresses within the product creation process, innovation, and effective participation in decisions that may determine the success or failure of an application. In this talk, I will demonstrate how you can expand the mindset from application development to product development.More
Over the years we've learned to pay attention to the importance of a number of highly desirable qualities in software: readability, maintainability, adaptation to change. We've accepted these values as good and actively pursue them yet we consistently ignore what is probably the best method of achieving …these qualities, it's staring us right in the face now.
Slowly but steadily the philosophy of embracing simplicity in software design by carefully calculating and minimizing unnecessary complexity is gaining traction in our community, and for a good reason: it organically pushes us to the best software practices we all know and love, it both embraces all the core principles the Ruby community has developed over the years while rejecting many of the common practices we carry based on inertia but which directly contradict these values.
In this talk I explore my journey on this shift in perspective from certain fragments of our community and how thinking about simplicity as one of our core values can push us to be better developers while producing better quality of software. We don't need our crutches anymore, let's drop them together!More
Domain Driven Design is a software development process that focuses on finding a common language for the involved parties. This language and the resulting models are taken from the domain rather than the technical details of the implementation. The goal is to improve the communication between …customers, developers and all other involved groups. Even if Eric Evan's book about this topic was written almost ten years ago, this topic remains important because a lot of projects fail for communication reasons.
Relational databases have their own language and influence the design of software into a direction further away from the domain: entities have to be created for the sole purpose of adhering to best practices of relational database. Two kinds of NoSQL databases are changing that: document stores and graph databases. In a document store you can model a contains relation in a more natural way and thereby express if this entity can exist outside of its surrounding entity. A graph database allows you to model relationships between entities in a straight forward way that can be expressed in the language of the domain.
I want to look at the way a multi model database that combines a document store and a graph database can help you model your problems in a way that is understandable for all parties involved.More
Due to the success of Rails, many successful organizations find themselves with a Rails application that needs partitioning. Many organizations have chosen to largely abandon Ruby during this transition, yet the reasoning is often reactionary. …
This talk explores the approach Yammer has taken, comparing Rails and the Java-based Dropwizard framework. Both have the mantra of getting decision-making and repetition out of the way so you can get things done. Dropwizard takes a slightly different approach by putting emphasis on "production-ready out-of-the-box."
In this talk, attendees will gain insights into the options Rubyists have for replicating Dropwizard's ops-focus in Rails. Attendees will also come away with an understanding of why Dropwizard's focus on operations and metrics makes it appealing to organizations tearing apart their monolithic Rails application. By assembling similar toolsets for Ruby and Java services, we'll be better positioned to choose between them on the merits of the stack and language.More
Distributed systems are big, in every sense of the word. From the biggest social networks and search engines to the simplest web or iOS application, distributed software causes problems, stemming from its greatest feature: the system should continue working even when parts break. …
Client applications without network connections still want to capture data, backends with a failed service or two shouldn't break the entire application, and the app should still mostly work even when the big datacenter (you know the one) goes down.
How do you grow a simple monolithic Rails app into a distributed system? What does it take to make your UI save data for a network connection later? How do you even test all this stuff? I'll be presenting a survey of concepts, architectures, and experiences, with a few tools that make distributed systems less obtuse.More
There has always been room in the Ruby community for developers to express themselves through minimalism. They use very simple tools to solve complex problems, and in this presentation I will showcase some of those tools and elaborate on the principles guiding their design.
Ever had that bug that happens "only in production"? Ever heard someone say "but it works on my machine"? Ever said it yourself? Wouldn't it be nice if you could write all your code directly in production-so that when it works for you on your machine, it also works for everyone else?
In this workshop we will build a virtual environment which replicates a production environment from scratch using configuration automation and virtualization through lightweight containers. With our trusty tools-Vagrant, Docker and Chef-we will proceed step by step to build a local development environment. …
With this, we hope to highlight the benefits of being able to see locally how code would actually work in production-helping catch design issues quickly and eliminate entire classes of bugs. Plus, to be honest, it also gives us a chance to play around with some really fun tech.More
We use Chef to manage a large and rapidly growing infrastructure at Shopify. Our cookbooks are open to development not only by our Operations Team, but by all 200+ developers at the company, and we manage to maintain …an environment of continuous delivery and continuous improvement for our infrastructure. In this workshop, I'll discuss our goals and motivations, some of our workflows, internal tooling, and security considerations when operating at our scale. We'll also spend some time setting up a similar environment and discussing sustainable infrastructure strategies.More
In this workshop, we'll explain what a Service-Oriented Architecture is, its advantages, and the reasons why developers should think about it when starting an application. I'll go into how complex and expensive it is to move to SOA when applications reach a specific code base size, traffic load, and will argue that using a SOA in an early stage of development is a feasible solution. We'll build a set of services and front-end applications to put into practice all the theory discussed in the workshop. We'll give parts of the workshop in Portuguese and English.