Doug is a partner with Gaslight in Cincinnati. He is a lover of ruby, spread sheets, and internet space ships.
Market Analytics in EVE with Ruby
Ever wondered about market trading, analytics or algorithms but didn't want to lose your shirt experimenting? EVE Online is a Massively Multiplayer Online Role Playing Game (MMORPG) rich in data with a fully functional, player driven economy. Using some simple concepts and novel tools you can get access to this data and discover interesting I'll introduce you to market analytics and the cruel world of EVE Online.
Matt Aimonetti is an experienced technologist, entrepreneur, technical writer and active open-source contributor. Based in San Diego California, he currently works on his startup: Splice. Prior to Splice, Matt worked as a Tech manager/developer at LivingSocial, on video game development at Sony PlayStation and on many other things.
Wicked Bad Ruby
Can you tell the difference between good and bad code? What do you base your judgment on?
Over the years, the Ruby community has built a fairly strong notion of “the right way” of writing code. During his thought provoking presentation, Matt will show that things are not simply good vs bad, and that what we call “pretty” code might, in fact, just be lipstick on a pig.
Joshua has worked with Objective-C since 2002 and Ruby since 2004. He has built operating systems with Apple, local news websites with AOL, and somehow managed to finish a Ph.D. along the way. Currently, Joshua is Chief Scientist at Burnside Digital where he works with an amazing team of engineers and designers to solve problems for a wide range of clients. He works and lives in Ankara.
RubyMotion: Under the Hood
By now you probably know that RubyMotion is a new toolchain that lets you use familiar Ruby techniques to develop applications for iOS but do you know what makes it tick? How is RubyMotion different from toolchains such as PhoneGap or Titanium? What does it mean to say that RubyMotion is implemented "on top of the Objective-C runtime"? And how the heck do I debug RubyMotion anyway?
I will attempt to answer these questions, and more, by looking deep into the underpinnings of RubyMotion. Along the way, I'll give a bit of an overview of the history of RubyMotion, and maybe even a glimpse at its future.
Justin is a passionate Rubyist, hailing from the suburbs of Philadelphia. When he's not writing Ruby, he enjoys snowboarding and rock climbing with his wife, or playing StarCraft. Justin is also a budding programming-language geek.
Hacking Your Home with Ruby
15 years ago, Justin looked forward to the day when he could have a stack of expensive audio equipment with speakers in every room, lights that follow him around, and an intercom system so the family could page each other like Tim "The Tool Man" Taylor.
Ubiquitous networking, APIs for consumer electronics, and cheap computers like the Raspberry Pi have made it easier than ever to automate your home. We go over some popular technologies, see some code to glue it all together, and watch a live demo of some of Justin's favorite house hacks.
Joanne is a developer for thoughtbot, inc. in Denver, CO, happily writing code all day. When she's not writing code for thoughtbot, inc., she works on open source projects that benefit the state of Colorado and its citizens through Code for Communities . She was once a classical musician in training.
Creativity with Ruby-Processing
Ruby-Processing is a simple wrapper for the Processing framework that combines the visual-driven environment of Processing with the fun of writing R we'll go through the ways to "sketch" with Ruby-Processing with several live coding examples and create something together. Through creativity, we can increase the breadth of problems we can solve in our day to day jobs.
Mike began programming on his Tandy 1000 when he was 13 years old and has never looked back. His first job out of college was writing assembly language firmware for disk drives, where his primary debugging tool was an oscilloscope. Today he's a Software Developer at Openbay, where he tinkers with Rails and Backbone, quietly disrupting the auto repair industry. When he's not at a keyboard, you can often find him geocaching with his family up in Portland, Maine.
Rails Sojourn: One Man's Journey
Jason picked up Ruby while re-designing the Rosetta Stone website in 2005 and immediately fell in love with the language, the community, and open-source software. Later, he started committing to Why the Lucky Stiff’s RedCloth repo and the next thing he knew, he was the owner, with a sketch from _why to prove it! Jason enjoys helping others level up their skills, through RailsGirls, Philly.rb, and corporate training. He is an engineer at PromptWorks, a Ruby shop in Philadelphia, where he enjoys pair programming with his co-founders, Greg and Mike.
Writing DSLs with Parslet
A well-designed DSL improves programmer productivity and communication with domain experts. The Ruby community has produced a number of very popular external DSLs--Coffeescript, HAML, SASS, and Cucumber to name a few.
Parslet makes it easy to write these kinds of DSLs in pure R ou’ll learn the basics, feel out the limitations of several approaches and find some common solutions. In no time, you’ll have the power to make a great new DSL, slurp in obscure file formats, modify or fork other people’s grammars (like Gherkin, TOML, or JSON), or even write your own programming language!
As a freelancer I'm often tasked with creating high quality web applications quickly while keeping the budget razor thin. In my experience, the absolute best bang-for-your-buck style of development has been BDD from the outside-in via acceptance tests. With acceptance tests you can quickly and accurately determine the minimum code necessary to fit the requirements of an application while achieving high code coverage and resilience to refactoring. By their very nature acceptance tests are the the simplest kinds of tests to write since they are expressed in the language of an end-user. In this talk we'll implement a feature from the outside-in, explaining the reasoning behind every step.
Steven has over a decade of programming experience and has been a Ruby developer since 2008. His career consists of a wide-variety of development and production environments which have led him to create tools like RVM::FW to help ensure that development can be consistent in a multitude of circumstances.
PEACE: Programming Expertly Amid Corporations & Enterprises
Everyone casts the “Enterprise” as the most horrid place in the world to be a Ruby developer, and they used to be right. How does a Rubyist trying to stay current work in a confined and archaic environment with strict security restrictions? You do everything other Rubyists do, but you do it without sudo and from source. Together we'll identify the best open source self-hosted options for agile managment, provisioning, git hosting, error tracking, CI, isolated RVM, metrics, central logging, and security. As a bonus, you'll learn how to automate the setup of all these tools as much as possible without sudo privileges.
Based in Baltimore, Bryan Liles is the Senior Vice President of Thunderbolt Labs. Since 1993, Bryan has hacked into systems which he was then paid to protect; written more assembler than anyone should ever have to; worked with and against the government. Currently, Bryan is exploring the limits of Ruby and other trendy programming languages while building that next great product company. In his spare time, he trolls Twitter and grows miniature herb gardens.
Machine Learning with Ruby
Not sure where to cluster or where to classify? Have you seen a linear regression lately? Every wanted to take a look into machine learning? Curious to what problems you can solve? Using Ruby to become familiar with machine learning and data-mining techniques is great way to get acclimated before diving in with both feet.
I am the author of the postgre_ext gem, which adds ActiveRecord and Arel support for PostgreSQL datatypes, and contributed commits to Rails 4.0 that added PostgreSQL array support.
Supercharging ActiveRecord with PostgreSQL
You've been able to serialize Ruby objects with ActiveRecord in the past, but the database treats serialized objects as text. PostgreSQL has support for advanced data types, like arrays, hashes and ranges, natively, allowing the database to do the heavy work for you. You can query a table for records that contain an array with a specific element. You can build a reservation system in which the database makes sure that you don't double book a room. All of which happens in the database, preventing you from retrieving extra records and processing them in memory.
With Rails 4, ActiveRecord has been supercharged. The PostgreSQL adapter has been extended to support arrays and hashes, and was rewritten to make adding your own types easier than before. There are gems out there that allow you to leverage these datatypes in Rails 3 as well.
Sheena is a Go developer and Ruby enthusiast for ModCloth in Pittsburgh. She has never told a lie.
Rachel is a developer at GitHub and a long-time RailsBridge volunteer. When not hacking, Rachel gardens and plays soccer.
Understanding Ruby's Method Cache
How we call methods in a dynamic language like Ruby is complicated and fascinating. This talk dives into one slice of Ruby internals, the inline method cache. We'll walk through MRI's awesome but sometimes quirky method caching. And we'll go through some practical improvements we've made in our own work to avoid unintentionally invalidating the method cache.
Bloom: A language for disorderly distributed programming
Traditional programming languages use a model of computation where individual instructions are executed in order. However, when building distributed systems this model fails to match the reality of how your application code is actually executed. Bloom is a language which allows programmers to build applications as a series of unordered statements while also providing facilities for imposing a particular ordering of events when necessary.
During this talk we will explore building applications in Bud, which is a prototype of Bloom implemented as a domain specific language in Ruby. We will discuss the concepts of logical monotonicity, disorderly collections, the CALM principle which is the root of the Bloom language, and how to use he Bloom language to identify critical sections of your code where a coordiation library should be used to ensure consistency.
Mark Menard is the founder of Enable Labs, a boutique consulting firm, in Troy, NY, specializing in product development, business productivity and problem solving. Mark used to be a Java developer and caught the dynamic language bug when he started coding in Groovy and then discovered Ruby and Rails. Mark spends most of his free time with his wife Sylva and their two sons Ezra and Avi.
JRuby: Insights from Six Years in Production
JRuby is the primary alternative implementation of Ruby available. With support for native threads, excellent garbage collection, and the introduction of Invoke Dynamic it has grown into a formidable platform. So, what can JRuby do for you? Learn how JRuby differs from MRI, how JRuby supports parallelism, how to use Java libraries from JRuby, how to use Ruby from Java and more. Java no longer means just the language anymore, the JVM is an excellent place to host Ruby applications.
Sandi Metz has thirty years of experience working on projects that survived to grow and change; her book “Practical Object-Oriented Design in Ruby” is an outgrowth of this experience. Dealing with long lived applications has left her deeply biased towards practical solutions that produce working software that is easy to change. She believes in simple code and straightforward explanations.
Sandi worked for many years at Duke University and now independently consults and teaches. She lives in Durham, North Carolina, where her daily bicycle commute now consists of a loop that starts and ends at her house.
Sandi Metz Tells Your Future
Between dawn and dusk Mike can be found feeding his addiction to learning. In addition to technology, his interests include all things language, business, ancient and prehistory, and religion.
Securing Your Rails App
How can you know if your Rails app is safe? With potential vulnerabilities lurking in your app's code, in gems you depend on, in services you use, and in the Rails source itself, attackers have myriad vectors to gain access to your data, interrupt your service, and damage your reputation.
I'll cover the basics of securing your Rails app, evaluating and mitigating the risk inherent in live web applications, and strategies for keeping your app secure as new threats emerge.
Foy is a long time Rubyist now working as a venture capitalist at AlphaPrime Ventures . Having previously worked as a tech consultant, Foy now gets his kicks by helping portfolio companies roadmap projects and strategize implementation. Come to think of it, the only difference from his consulting days is that the startups stopped paying him and started taking his money.
Richard writes Ruby at Heroku at teaches Rails at the University of Texas. When he isn't obsessively compulsively playing Starcraft 2 he writes such gems as Wicked , Sextant , and oPRO . He's on the Rails issue team, and wants you to sign up for Code Triage . Before working as a programmer – Richard graduated from Space camp where he prototyped a perpetual motion machine that didn't work, and from Scout camp where he built trebuchets that did.
Dissecting Ruby with Ruby
Underneath the beautiful veneer of our Ruby libraries lies a twisted tangle of writhing guts. Maybe you're curious how the pieces fit together or maybe you're tracking down a bug, either way it's easy to get lost in the blood and bile that ties our code toget ou'll learn how to use simple and sharp Ruby tools to slice into large libraries with surgical precision. Turn your impossible bugs into pull requests, and level up your programming skills by Dissecting Ruby with Ruby.
Loren Segal is an SDKs and Tools developer at Amazon Web Services working on the AWS SDKs for Ruby and Node.js. In his spare time, Loren also likes to hack on open source libraries and tools like YARD, a Ruby documentation tool, RubyCorrect, a static analysis and automatic test case generation tool, and Seahorse, a web service API modeling library.
Towards Tooling; A Look at What is Missing From Our Toolbox
ActiveRecord is still magical
ActiveRecord is complex code and because of complexity it has edge cases. In fact lots of edge cases. We will take a look at a number of ActiveRecord features to see how it works and how to deal with some of the edge cases.
We will see how default_scope works. And why method “unscoped” removes default_scope from models but not from associations.
Do you know the difference between CollectionProxy and Relation ? Do you know why in a has_many through case "@physician.patients.create!" would work but "@physician.patients.where(active: true).create! would silently fail without creating the association record?
We will discuss why while patching Active Record you should run your tests against all three databases.
Guess which of these two obey :destroy option: @customer.orders.delete(@order) or @customer.orders.destroy(@order).
In Rails 3 when where conditions are merged then the last where condition wins. In Rails 4 all the where conditions are 'And'ed. But not defautl_scope. We will see how and why.
Will also discuss implementation detail of features like inverse_of, autosave and callbacks.
Mark Sobkowicz has been teaching physics and programming at Lincoln Sudbury Regional High School since 1995, and started using Ruby (and Rails) in 2007. He has taught students programming using Logo, Java, RealBasic, Objective C, and Ruby. He lives in Maynard, MA and spends as much time as he can in the White Mountains of New Hampshire, where he worked for the Appalachian Mountain Club when he was a younger man.
Ruby: The Next Generation
Introducing programming to young people is a balancing act. What language to use? Bore the quickest students, or leave some behind? Teach them style, or let them discover their own? At Lincoln Sudbury Regional High School, Ruby has helped us bring our Intro to Programming course to a new sweet spot, where students leave the one semester course with a bit of knowledge and a lot of enthusiasm, filling our upper level programming courses and learning more on their own.
As Rubyists we often pride ourselves on our elegant, terse, clever code. When we teach our students, we keep it simple. Simple conditionals, simple loops and iterators. This allows us to get more quickly to a place where students can express their creativity. And thats what gets them hooked.
Charlie is a passionate Rubyist from Melbourne, Australia. When he's not slinging C and Ruby for GitHub, he's relaxing by sitting back on the couch hacking on MRI with a cup of coffee by his side.
MRI Magic Tricks
Like any other software, MRI has bugs. In this talk, Charlie will dive deep into the internals of MRI and demonstrate how a few interesting bugs can be leveraged to do crazy things you never thought were possible in Ruby.
Seth is a long-time Ruby developer who landed in operations as a Solutions Engineer at Opscode. While his degree is in Information Systems from Carnegie Mellon, Seth specializes in Ruby development and system administration. But most importantly, Seth is incredibly lazy, which is why automation and DRY are two principles that are practiced in his daily life. An author or core contributor to projects such as fauxhai, chefspec, berkshelf, bootstrap_forms, powify, and more, Seth believes in the power of the open source and community.
Using Ruby to Automate Your Life
You probably use Ruby everyday, so why not use Ruby to automate some common tasks? What if you could spin up an EC2 instance and have it automatically configure your web server, database, users, and more? What if you could effectively capture and replicate your production environments reliably and consistently? What if you could then give developers production-like environments as Virtual Machines, with no additional work? What if you could set up your new laptop with multiple Ruby versions, your favorite software, and even change the desktop background - from a single command? The good news is - you can!
Chef is a configuration management and automation tool that solves these problems and many m you'll learn common just how easy it is to capture your infrastructure in Chef. Save time and money by using Chef's Ruby DSL to "define" your laptop.
How many times have you bought a new laptop and realize just how much stuff you installed over the years? If you're using Chef, run a single command and all your favorite Applications, Preferences, and even passwords are back in place. And the best part - because Chef is written in Ruby, you get to continue using the language you love!
Jon Yurek is a founder of thoughtbot. He spends his days trying to reach vim enlightenment and writing code solely to make his tests pass. Ever since he played with BASIC on his Apple IIe, he knew programming was for him. The rest of his time is spent camping and playing European-style board games.
Naming is Hard!
Coming up with a good name is one of the hardest things to do in programming. It's one of the least technical things we do, but it has one of the largest impacts on how understandable our code is. Ruby is a very expressive language, which makes it very suitable to naming things well and thereby making maintenance easier. This talk will go over more than just how to name variables and classes: it will show how to extract and name concepts, processes, and procedures from existing code in order to understand it better.