What happens when your little Rails app makes it big time? What would you learn about your system if you had to double capacity every three months? How do you scale the human side to keep up with the success of the business? There are all questions we've been forced to answer at Groupon and we'd like to share some of our success with you. In this experience report we'll talk about the technology and process behind Groupon and how Rails is scaled in the fastest growing company ever.
Sometimes we forget the ability we coders have to build useful products which other people can only dream of coming up with. This is made even easier for us by languages such as Ruby and frameworks such as Rails and Sinatra. There are plenty of people in the world for whom simple and effective technical solutions are very difficult to achieve, especially those doing charitable work in developing countries. That's where us coders come in: with some really simple solutions and a bit of time we can be a lot of help.
In this talk you will hear about how we've been using Ruby and Rails to help a children's charity in Cambodia. We'll talk about the unique challenges you face working with a charity, and over such a long distance. We'll talk more about how you can help and what other opportunities exist for coders to use their skills to make a real difference.
The Ruby community's passion for open source is unparalleled with respect to other languages, however it comes at a price. In this talk some extremely opinionated ideas will be presented in the hopes of sparking some great conversion around the following areas:
Code quality vs time to market in the OSS world, flexible project infrastructure, outside in to inside out testing, locking down your API and design, leveraging the community for resources, proper open source etiquette, and effective and noneffective design and refactoring techniques
I will talk about the lessons we've learned keeping a reasonably sized rails app available in nine different languages. I'll cover the main problems to look out for, our solutions to those problems and mistakes we made that you should avoid.
In this talk, I will aim to address some issues about the low number of women in the field. I will base my discussion on current research trends, mainly from the field of Psychology, to discuss why there arenâ€™t more female programmers and what can be done to successfully recruit/retain more women. I will provide real-world examples of what women experience and pair those with simple solutions that men (and women) can employ to decrease the gender imbalance.
There are more smart people building software now than there have been at any point in the past, which means that it's more important than ever to stay on top of new developments, libraries, frameworks, and everything else. To really take advantage of this wealth of innovation, however, you've got to look beyond your normal community -- what's going on in Python? And how can we use that to make our Ruby lives easier? In this session, we'll explore that question. We'll look at actual examples of code and concepts borrowed and reimplemented to form a better idea of when it's appropriate and when it'll fall flat.
PCI DSS is a vague and horrific standard that anyone that has anything to do with taking or processing payments by card has to adere to. Luckily, it has as much to do with common sense as it does with security and is not as insurmountable a challenge as some would have you believe.
I'll talk about what you need to know to become PCI DSS compliant, why you should care about it and how you can save tonnes of money using free software where possible based on my first hand experience at PCCL where myself and Nasser Khan designed and implemented our PCI Compliant infrastructure from scratch.
We are inundated with copious amounts of data day in and day out. We manage volumes of the stuff. We Produce it, archive it, throw it away, and sometimes, if we are lucky, we look at it and we find a story.
This talk is about examining and visualizing data to teasing out its story, or lack of one.
One important part of the DevOps movement is infrastructure automation, especially if you are running your application on top of services like Amazon EC2.
Everybody's dream is to be able to bootstrap and deploy hundreds or even thousands of machines with a few simple commands. This talk will tell you how you can do this using Open Source tools like Chef and mcollective. Chef manages your servers configuration using a nice Ruby DSL while mcollective orchestrates and commands all your nodes.
Rong is a client-server Pong implementation written in Ruby that hopes to take a whack at your office productivity. Though Pong itself is a relatively uncomplex game, it allows a variety of interesting game programming problems to be illuminated when constructing the game in a robust manner. We'll talk through the structure of the implementation, the involved libraries, and the cross-platform opportunities of various client front ends.
Ruby is â€˜known to be slowâ€™ â€“ but what does that exactly mean, does it really matter, and â€“ more importantly â€“ what can we do about this?
This presentation, based on hands-on experience of using Ruby for scientific computations, shows how to profile Ruby applications (including webapps), how to interpret the results and what to do with the bottlenecks â€“ from algorithmic optimisation through using dedicated libraries to rewriting them (in place!) in â€˜fasterâ€™ languages.
The Domain Name System provides the foundation of the Internet, but how well do you understand it? This talk will help improve your understanding of DNS and how you can query it and control it with Ruby.
Beautiful, performant and all Ruby inside! MacRuby is a Ruby 1.9 implementation built on top of the core Mac OS/X technologies that allow you to build pure Mac desktop applications using your favorite language.
We think about the software we build as _doing_ things, test it to ensure it does the right thing, and hope we can easily change what it does. We forget that we _write_ software; that we read code, our own and that of others; that our software is as much a written text as a working artifact. Literary critics read for a living - maybe as programmers we can learn something from them, both how to be a good reader and how to think as we conjure up code at our keyboards.
If you've ever wondered what style is, or why Domain Driven Design is like Madame Bovary, or how to write code that writes itself; if you're curious as to what a literary critic actually does all day, or how complicated you can make 'Hello World', or why you would care about a novel that doesn't use the letter 'E'; in short - if you want to know the answer to the burning question: "Can code be art?" then this is the talk for you.
Modern web apps developers, we have it easy, right? A lot of the infrastructure and functionality of our apps can be farmed out to cloud based services, allowing us to focus our time and energy on the stuff that makes our apps stand out. But there is a dark side to the cloud, including latency, evolving APIs and good old network failure. At 55degrees we have learned a few tips, tricks and caveats when making robust apps which live in the cloud eco-system, and we would like to share them with you!
I'll tell three stories about the building of our web services Panda and Pusher. Three interesting problems which we solved simply and elegantly using eventmachine and Redis. I'll show you real code, talk about writing elegant evented code, and hopefully inspire you to solve problems simply using these great tools.
While JRuby makes all kinds of sense as integration glue for enterprise Java applications, introducing Rails into an existing application without doing any significant rewriting may not be obvious. We'll present and demonstrate several strategies for incrementally moving portions of the application to Ruby and taking advantage of the productivity of Rails in a legacy Java environment.
"Self employment can be wonderful. You get to work half days. You just have to decide is it from 12pm to 12am or 12am to 12pm. " This was some of the first advice I received from someone and I laughed. Little did I know how right he would be. Why do we go into business for ourselves? Sometimes it is money, sometimes a fe
Software engineering as itâ€™s taught in universities simply doesnâ€™t work. It doesnâ€™t produce software systems of high quality, and it doesnâ€™t produce them for low cost. Sometimes, even when practiced rigorously, it doesnâ€™t produce systems at all.
Thatâ€™s odd, because in every other field, the term â€œengineeringâ€ is reserved for methods that work.
What then, does real software engineering look like? How can we consistently deliver high-quality systems to our customers and employers in a timely fashion and for a reasonable cost? In this session, weâ€™ll discuss where software engineering went wrong, and build the case that disciplined Agile methods, far from being â€œanti-engineeringâ€ (as they are often described), actually represent the best of engineering principles applied to the task of software development.
Ruby has a thriving testing ecosystem which is leading the way in many ways. But innovation in testing is not limited by language. Lots of interesting ideas are evolving from outside our comfy red world. Itâ€™s time we expanded our horizons and learn about some of the testing ideas evolving around other languages. Come to be inspired by new ideas, see how language changes the way we think about testing and discover what life is like in other testing lands.
To many rails applications suffer from ActiveRecorditis in their models. We expose the api of our domain to the other layers of the application (controllers and views) offering methods that have nothing to do with the domain we are modelling. Our problem?
The language we use is not the language our customers use!
In this talk I will be talking about the issues of naming and how you can (and should) avoid translating your customers language and write applications that map to your customers view of the world creating so a rich domain model which leads to simple to understand code without translating the language of your customer avoiding so The Towel of Babel.
Ruby cultivates happiness by making it easier to implement our ideas, reducing the mental friction that some languages impose. We'll explore concepts and practical techniques to help you feel all warm and fuzzy inside when developing with Ruby.
It's unanimously decided: SQL is out, everything else is in. Well, that's what everyone is saying at least. If you pick your data store based on the bullet points of their website, this talk is for you. Companies like Amazon, Google, and Yahoo! have been building these systems for years, releasing papers along the way. Lot's of thought went into these systems, and lot's of thought needs to take place when choosing one of their clones. Let's talk a bit about what it means to be eventually consistent, why you should care about distributed systems, BASE vs ACID, and some of the other topics that make these systems stand out from their SQL counterparts. The goal of this talk is to give you some base knowledge that you can leverage when choosing the data store, helping you choose the right tool for the job.
When you're designing a new web application there are a lot of things competing for a limited amount of time. Whilst Security is important, it's only one of the factors that need to be considered for a successful application.
This presentation aims to cover practical and straightforward strategies that can be put into practice to improve the security of your applications.
Smalltalk is one of the forefathers of Object Oriented programming, and has a long history of being used in the field. One of the quiet players, many have heard of Smalltalk without having worked with it, but Smalltalk is indispensable in many industries including insurance, shipping, and finance. In this talk, you'll discover what Rubyists can learn from this grey bearded programming environment which inspired many of Ruby's best features.
At least since node.js everyone knows that real time HTTP responses are the next big thing. The secrets of handling incoming requests asynchronously with Ruby is not yet far spread among Rubyists, as the internals needed for such responses are neither specified nor documented and there is a lack of tools. Still, it is possible to use Server-Sent Events, WebSockets and akin with Rack today. This talk will demonstrate the underlying technologies and how to use them in your Ruby application