Remember when you first get started on an existing project, and you have to get your development environment setup?
"You need Postgres and Ruby", so you get that installed.
"Oh wait, we can't run 1.9.3, you need 1.9.2", so you change Ruby.
"bundle is failing? Oh yeah, that gems needs some native packages, better google it".
"Why isn't that feature working? Oh yeah, I just remembered you need to install wkhtmltopdf for that to work"; it's still not working, "oh, you didn't install that with the package manager did you, that one never works, you have to download a binary and install it manually."
In an environment with more than one project it's even worse, since you could be moving between different projects each with their own unique requirements. Vagrant allows you to configure what you need installed on your development machine and isolate it into a headless VM to use for development. In our consulting shop, a new developer can usually be up and running in about 15 minutes with a complete development environment and ready to start coding. And if you really manage to mess something up badly, you can just destroy the whole thing and rebuild it with a couple commands.
Amazon’s toolbox of services can be pretty intimidating at first, and there are many possible solutions for scalability and redundancy. We’ve combined those tools with the power of Ruby to build a decoupled highly-testable platform that is a developers dream. We’re going to share what we learned on this journey.
Actions are driven by ideas, and ideas are driven by philosophy. For a deep understanding of our actions, we have to go the whole way back to the philosophy that motivates them. So what's the philosophical basis for Object Oriented Programming? In this talk, [the speaker] will discuss Plato's theory of forms, its relationship to Object Oriented Programming, and its current relevance (or irrelevance) to modern philosophy.
Do you actually know how deliberately acquire, sharpen, and retain a technical skill? In this talk, I'll discuss common strategies to enable you to be more focused, creative, and productive while learning, by using play, exploration, and ultimately failure. You'll leave knowing several "Experiential Learning" patterns and techniques that can help you turn failure into success. When was the last time you failed in a spectacular fashion? Was it really so bad? If you want to succeed, you first need to take a little time to fail.
Slow tests got you down? As Ruby developers, we watch a lot of tests run in a given day. So why not make it more fun? In this talk, I'll take a light-hearted approach to introducing you to an array of test reporters including MiniTest's Pride, Fuubar, and my very own Nyan Cat Formatter. In addition, I will show how easy it is to make your very own test reporter for both Rspec or Minitest so you can have a more enjoyable testing experience.
Everyone draws inspiration and motivation from different sources. For most, it’s often frustration. We make life decisions, define new features, or refactor code when we get too annoyed by current circumstances. This is where [the speaker] admits they has a low tolerance for frustration. Having been frustrated a great deal during his career, [the speaker] will discuss several anti-patterns that they have seen in code and how to use the Dark Side of the Force (frustration, anger, and rage) to escape from them.
Solving a technical problem is relatively easy: there tends to be precedence, easily accessible data, black and white results, and a long list of knowledgeable developers to lean on. People problems are stickier; there are far more variables, no tests you can write, no debugger to use. In this talk, I’ll focus on our biggest issues as developers and community members. We’ll examine what’s broken, what works, and some useful people katas.
Out of the box, Rails does its best to help you secure your app. Unfortunately, without consistent application of secure development principles, practices and tools, it's just a matter of time before vulnerabilities creep in. The best time to start locking down your app now, not after your first close call (or worse). We'll walk through exactly what you need to reduce the risk of a security breach to your business, beyond the Rails defaults.
There are thousands of local Ruby groups worldwide. Sadly, many suffer along, become stagnant, some even die off. How can you make your local Ruby Group better and in so doing, improve the global Ruby Community? This talk focuses on the human side of getting a group together and making it successful so the members, as a group can contribute to the larger community. It is a universally useful guide to improving all parts of the ruby community, starting on a local level.
Robots. Unthinking. Unfeeling. Cold. Incapable of surprising us. Or are they? In this demonstration I'll be walking through how I use ruby to teach computers to surprise me with answers to problems I don't know how to solve. It draws heavily on testing to model behavior, stats, and rubies power to create domain specific languages; so hang on to your hats!
Formally, semiotics is the study of signs: how do they relate?, how do they structure meaning?, what rules do they follow? All these questions are important to understand how humans communicate and how we interpret the world around us, so it's no wonder that semiotics are related to the process of building software. We, as developers, create software that communicates not only to the end user, but also to other systems and even to other developers. A clear separation of each part of the ""final message"" is important to keep the code maintainable and more important, to control the meaning of our app. DCI is an elegant way to keep that separation clear, we can manage the "rules" (context), the "symbols" (data) and the "meaning" (information) of the message. During this talk I'll explore some concepts of semiotics which are important for DCI and how DCI uses those concepts to communicate. Part of the talk includes an overview of an app I'm building using grape, which allowed me to build from scratch an architecture based on DCI an experiment ideas and concepts I'd like to share with you.
You know the constraints: Day job, time for your family, urge to hack, visiting the local user group, and start a new project about the latest rocket science technology you need to learn. There is never enough time for all this stuff at once. This talk will present the time management method, called Pomodoro. Learn how to work time-boxed, get rid of distractions, focus on a single task for 25 minutes, and relax for couple of minutes to free your mind. We all love Open Source work and Pomodoro will help you to hack on your beloved babies in a time-boxed way to get more done in less time.
Why do we all know a developer who has been pounding out unmaintainable code for a decade or more? Why do people ""believe in TDD but I don't have time to write tests during crunch?"" How is it that we have an entire industry based around rescuing teams from acutely awful Rails apps? It's because on the job experience is a poor teacher, plateauing as soon as the developer is able to ship code that meets requirements. Schools teach Computer Science which is only tangentially related to being a developer and most kata's are approached incorrectly, giving no value at best, and reinforcing poor practices at worst. On top of all this, our pairs (for the lucky ones who pair program) probably have not shown us anything new in months. This presentation will give specific, concrete steps on how to slowly and steadily improve our game through practice and hard work. I'll identify what skill Rails developers should be focusing on and walk the audience through how to target and eliminate these weaknesses so that nothing but white hot joy streams out of our fingers and into our apps. There's no magic here, no secrets, and no hacks; just you and me working our butts off until we suck a little less.
So you consider yourself an Object Oriented developer? Ruby isn't limited to an OO style! See what functional programming can do for us, without learning any new language. These six principles of functional style apply in OO code. Some of these principles you already use; some express patterns old and new; all give us different ways of thinking about problems. Developers without expertise in functional programming will find new techniques for thinking and coding in Ruby.
Long the provence of specialists in the hermetic world of enterprise software development, business intelligence (BI) is increasingly important to smaller, more agile companies and startups who need access to near-real-time information to make critical business decisions. With its support for aggregation and reduction of massive amounts of data and its flexible schemas, MongoDB is a great choice for creating lightweight, denormalized data stores optimized for BI, with the added bonus of peaceful co-existence with transactional data stores. In this talk I will explore how Trunk Club captures and analyzes customer information, monitors user behaviour, feeds machine-learning algorithms for decision support, and delivers value to business stakeholders through simple querying and reporting interfaces.
Metaprogramming. It's awesome, right? Powerful? Maybe a little scary? Let's kick things up a notch. If writing code that writes code is powerful, what's hacking the life of the programmer writing the code? That's got to be an 11 on the meta-meter. At least. We'll talk about some of the bad assumptions we've made, lies we've bought into, and why we have the most awesome job ever.