My wife asked me "What are you most excited about at this year's conference?" That's a really tough question for me to answer, but I think the thing that I'm most excited about are the RailsBridge workshops...
Ruby: Where Are You Going?
OSS developer. Conference-goer. Maintainer of @Sinatra, full time dev on @TravisCI, was full time on @Rubinius, core team member of Rack, Tilt and many more.
A look at the past, present and future of web development in Ruby. How does Rails work internally? What is going to happen in Rails 4? What are the plans for Sinatra? Right now, there are at least two replacements for Rack in the makings. But it is the underlying technology used by Rails, Sinatra and nearly any other Ruby web framework out there. Yet, it's the framework authors pushing for the changes. So, what's wrong with Rack? And what does that mean for us as web developers?
Teaching Ruby for Fun and Profit!
Renée is the Chief Adventure Officer at a small RoR consultancy in Seattle WA USA called NIRD: Northwest Independent Ruby Development. She has been teaching Ruby, Rails, and everything else for the last couple of years to new programmers, experienced programmers, and sometimes to both at the same time! She is teaching the Ruby section of the University of Washington's Ruby on Rails Certificate program, and does RailsBridge workshops whenever she can. Her corporate trainings and paying clients take up the rest of the time that she's not traveling the world to speak at really cool conferences in really cool places!
How many companies are hiring Ruby developers right now? How many are finding qualified candidates? Why aren't workers swarming into our industry to fill up all these empty developer positions? Is learning Ruby really that hard? Why is learning Ruby so hard? Isn't it a language built by people for people? Shouldn't that be easy for anyone to pickup and use? Why isn't everyone building Ruby apps? I'm going to tell you. The good, the bad, and the goofy of trying to teach Ruby, Rails, and everything else we take for granted as RoR developers. There may even be a guest appearance from a real life Ruby Newbie to demonstrate!
Don't Be an A**hole
I realized I wanted to learn practical programming skills so once I found out about Ruby in college I immediately installed Locomotive on my Mac. Was extremely excited to find out I already had Ruby 1.8.6 preinstalled on my iBook G4 and started hacking on my first Rails project. I find teaching to be enjoyable and have been participating in the SF RailsBridge every so often. I'm still a level 1 whiskey/whisky drinker, but I'm working on that. Currently I am working at GitHub doing cool stuff.
Ruby is now 18 years old. It has become a very mature project and the developers that have been using it are a lot more mature now as well. Our community has long since crossed the chasm and we are in the early majority stage. This means that even though we have many people who are well versed in the language we are again having an influx of new people. I want to help those new people feel comfortable enough to believe they can learn and become just as mature as the oldies who are part of the community. Also, I want to educate the oldies on how they can better help out these newbies.
The Ruby community has become very much like any other close-knit community. We are very biased towards certain philosophies such as agile development, pair programming, and TDD. Some might compare our community to other close-knit organizations such as fraternities/sororities, athletic clubs and the freemasons. They all have very idealistic philosophies they run their organizations on. I want to show how we compare to these types of organizations. I want to highlight the good things we adopted from running our community this way as well as the bad. I want to show how we can improve and fix the bad habits so that we can create a more open community for new people to join and feel welcomed.
Hey Kid! Don't Copy That Floppy!
Aaron Kalin is a developer for Treehouse hailing from Chicago and has been programming for over 15 years. At night you'll find him hacking on game servers or experimenting with other programming languages. He's passionate about solving problems and enjoys giving back as much as possible. You'll sometimes find him dressed as a Stormtrooper to raise money for charity or cheering up sick kids in hospitals.
Software licensing sets up rules for everyone to follow when contributing or using code. Some companies have specific policies on what types of licenses are compatible with their code base. Other companies put rules on their developers on how they're allowed to contribute code to software. Do you license your software? This talk will review some popular open source software licenses and considerations you should make before contributing code. It's good to be aware of these rules before you end up on the wrong side of a Cease and Desist order.
Rack based web apps with JRuby and TorqueBox
Chris works at Mad Mimi where he spends his days toiling over features, scaling and performance. He's also actively involved in growing the local dev community and is the founder and organiser of Code&Coffee Jhb, as well as an organiser of RubyOnBeer
JRuby runs on the JVM to bring high levels of performance and parallelism to your long running ruby code. TorqueBox is a performant and scaleable application server that reduces the complexity and dependencies of rack based web applications. See how these two tools can be used to simplify your ruby web development while delivering excellent performance under heavy loads with some real world examples.
Dynamic Routing with Circuit
Lance has been a computer nut ever since his dad bought him a VIC 20 in the 80's. For a number of years he was working in Java for large companies such as CNN, Kodak and GE. Then one day about four years ago he did a self intervention and decided to end his addiction to heavy inheritance, static typing and coding without tests. These days he a committer on projects such as Adhearsion practicing clean Ruby living with lots of well-tested code, class composition and fun dynamic languages as a startup CTO and freelance developer. When he's not writing Ruby you will find him diving with sharks, trekking through a rain forest, wine tasting or freaking out his neighbors with his ARDrone.
Rails and Rack both have mechanisms to route requests. They are powerful, and offer some dynamic routing if you want to route within Rails. But what if you need to dynamically route requests to multiple Rack based applications? What if you want to control that routing dynamically with a database? Circuit allows you to do that. In this talk will explore the basics of Rack Middleware and Routing. Then we will show you how Circuit can help you to take Rack routing to the next level dynamically with lots of traffic.
Do It Yerself, Rube
Ruby since 2004. Rails since 2005. Programming since 1994. Or 1989. Or was it 1983? I forget...
Abstraction is like alcohol: a little is nice; a little more is a little nicer. A lot is a headache. Is it really worth writing one line when you can write 3? Or 8? As a consumer, when is finding the right gem harder than just writing it yourself? Some examples of over-gemmification and a few lines of code that do what you need. As a producer, what does it take to get your code ready to be released as a gem? It's turtles all the way down. Unless you make some assumptions for them to stand on.
ChatOps at GitHub
Jesse Newland does Ops at GitHub. Prior to GitHub, Jesse was the CTO at Rails Machine. There, he hacked on a large private cloud while managing, scaling and tuning several hundred production Ruby on Rails applications. He lives in Savannah, Georgia, and plays guitar and piano for fun.
Hubot, GitHub's open source chat bot, is completely revolutionizing how we do ops at GitHub. Automating deployment, graphing, monitoring, provisioning, tweeting, and many other things with Hubot has enabled and enhanced our culture of remote work. We're standardizing how we interact with the applications and servers that run GitHub by continuously expanding our library of Hubot commands that any GitHubber can run in multiple Campfire chat rooms. Interacting with Hubot in the middle other of conversations has increased our awareness of what other GitHubbers are working on and the speed at which new team members learn common practices. In this talk, I'll give examples of how we deploy and interact with github.com via Hubot, describe benefits we've seen from this approach, and describe how you can bring ChatOps into your daily workflow.
How pet projects can enhance your career
I'm the founder of FindFreeWiFi.co.za, JSinSA tech conferences, Broken Keyboards Software and others.
My claim to fame is I was once in a movie with Joe Penny (yes, the 80's star of Riptide), but it involved flying unicorns (yes, seriously) and child stars so I'd prefer if it wasn't mentioned.
Perpetually pursuing Mindfulness and I have a growing intolerance of corporate mediocrity.
We all know what pet projects are, but so few companies and individuals are leveraging off their great opportunity.
This talks illustrates the benefits of having pet projects; how to fit them into your daily workload; why you should have them and how they can improve your career.
In the end, it's all about having fun and making you happier :-)
Subprocesses, Threads and Fibers
Rory is a developer at Hetzner. He works mostly with Ruby and sometimes with PHP. He is hoping to get promoted to Chaos Monkey in the next year or two. His hobby is learning how to say "It's not my fault!" in all 11 official languages.
A brief presentation covering the primary mechanisms for achieving concurrency in Ruby. The differences and similarities of each will be touched on. At the end you may be lucky enough to understand which mechanism to use when (if you do, please be so kind as to explain it to the presenter :) ).
Reusing your frontend JS on the server with The Ruby Racer and/or Ruby Rhino
Performing regular wizardry through open source software
Writing modern web applications requires a ton of JS, and somewhere in that JS lies some application logic (we're not just talking DOM manipulations here). If you require that same logic on the server-side for say, generating reports, what do you do? I'll show you how ValuationUP.com pushes the single responsibility principle to the max by "embedding" V8 into our report generation code so the same JS that powers our Backbone.js frontend powers our PDF's generated by Prawn.
Thin wrappers, no duplication, practical IoC, ultimate SRP.
Unicorns die with bullets made of glitter
Vicent Martí used to make videogames, but he sold out because he likes to wear expensive clothes. Or any clothes at all. He now works full time as a systems engineer at GitHub, focusing on security and performance issues on the backend. He's also the maintainer of libgit2, the Git library that powers GitHub's backend and native clients. He takes long showers because he enjoys smelling nice.
This talk is about more than Unicorns. This is a scary talk about scary Ruby internals. Disregard the Unicorns, actually. There's a lot going on under the hood in MRI, YARV and Rubinius. The C and C++ layer that interacts with the OS is a tangly mess full of tricky bugs and arcane issues; the kind of issues that don't raise exceptions, but kill whole processes and make them bleed rainbows. Every time one of these "glitter bullets" kills a Ruby process, I shed a small tear: This is a talk about how we discover, tackle and fix these kind of issues at GitHub, to ensure our servers are always up and serving requests.
Developing multiple personalities to bootstrap your first product
Ready, set, launch, (...crickets...). The tale of many a developer-turned-product-launcher, including me. But after a false start, I launched Classroom 7, a learning management system for trainers, which is now well on its way to paying the bills. Bootstrapping a product requires a bit of a multiple personality disorder - you’ve got to be a dreamer, engineer, critic, bank manager and sales exec all rolled into one. In this talk I'll share some of the lessons I've learned during the product launching journey and talk about some of the pitfalls that should be avoided when launching a product. Everyone has the ability to bootstrap a successful product, you've just got to start out right. This talk will set you on the right path.
Applying RSpec Best Practices
Kevin is a Ruby on Rails developer at Platform45. He began his career as a C# developer, but made the switch to Ruby in 2011 and hasn't looked back since. He has strange obsessions with vim, code quality and guitars.
We all agree that tests are important. As a developer, coming into a new project with good tests makes you immediately feel more confident about making changes. But how do we ensure that our test suite consistently adds that value over a long project? We're going to look at best practices using RSpec and how applying a few simple rules and best practices can improve the overall quality of your application.
Side-effects are not your friend
Ryan is a Cape Town based software maker and coach.
He made very good friends with Ruby back in mid-noughties. Since then he's been exploring functional programming, and is starting to see what all the fuss is about.
Ryan loves to learn and to stoke the flame of learning in others.
Functional Programming is more than a set of language features. It's a style of thinking, a way of doing things.
Ruby gives us access to some aspects of the Functional style through lambdas, blocks, procs, and array iterators.
But the most profound way in which Functional thinking can change your Ruby day comes down to a core issue of Functional Programming: "side-effects". Ruby places no restriction on leaving side-effects - it comes down to the choice (and then discipline) of the Rubyist to refrain from doing so.
Side-effect-free code is more easily testable, and more predictable than side-effect-ridden code.
In this talk I'll show you some of the many ways in which side-effects cause you pain and suffering, and techniques and strategies of leaving less of them in your wake.
Living with Distributed Systems
Jacob is the world's foremost expert on Distributed Systems (within the subset of people who: work in Ruby for a living, surf the Pacific regularly, and brew sour beers). He does all these things in San Francisco California, while working at Engine Yard.
We all know the problem of the monolithic rails app, and we've all accepted the divine words of Service-Oriented Architecture. But what does your world look like once you get there? Or say, maybe, three-quarters of the way there.
Allow me to show you some of the mistakes we've made at Engine Yard on this path. It can be a bumpy road, but I promise you the destination is worth it.
`bundle install` Y U SO SLOW: Server Edition
Terence works at Heroku maintaining the Ruby stack and a slew of OSS projects such as Bundler and Resque, as well as helping with the Rails Girls movement. When he's not going to an awesome Heroku or Ruby event, he lives in Austin, TX, the taco capital of America.
(Terence loves Friday hugs, EVERY DAY OF THE WEEK! Give him a big one when you see him!)
If you've ever done anything in ruby, you've probably used rubygems and rubygems.org to search or install your favorite gem. On October 17, 2012, rubygems.org went down. A Dependency API was built to be used by Bundler 1.1+ to speed up `bundle install`. Unfortunately, it was a bit too popular and the service caused too much load on the current infrasture. In order to get rubygems.org back up the API had to be disabled. You can watch the post-mortem, http://youtu.be/z73uiWKdJhw, for details.
Members in the community stepped up and built a compatible Dependency API service called the Bundler API. Working with the rubygems.org team, we were able to bring the API up for everyone within a week. In this talk, I will cover the process we went through of extracting the API out into a separate Sinatra app that now runs on Heroku. I'll go over how the API works and how Bundler itself uses it. Since we don't have direct access to their database, we needed to build a syncing service to keep our local cache up to date. We'll discuss the original sequential implementation of the sync code and how we improved performance through the use of a consumer thread pool. The sync time down was cut from 16 mins to 2-3 mins. Next, we'll talk about the productization steps we took for visibility to make sure the app is performing well.
We're prototyping a replay service, to replay production traffic to different Heroku apps. With this we can compare the performance between the current MRI app in production and the same app running on JRuby. This will also allow us to test any changes/features against real production load. We'll go over how to set this up.
Not Quite Object Oriented
I'm a developer making peace with the fact that I dropped out of a Lisp class in high school because I figured that nobody in their right mind would ever write code like that. Nowadays, I spend my time cracking really hard nuts, not P=NP hard, just very complex hard. Sometimes, I contribute a bit to the agile software community by offering tissues at conferences to Scrum people who just realized that certification and time boxes were not all that it was cracked out to be. I also help insomniacs with my rather soporific blog at f3yourmind.net.
Since we are using these functional tools, we really do need to understand this world. So, what does this functional world look like? How are functional minds wired?
In this talk, I will take you on a whirlwind tour of functional programming concepts. You will see lots of code snippets in lots of different languages. My objective is simple - a tour guide view that will point out places of interest that you can explore at your leisure. In the end, I hope we will make smaller messes.
Abstracting a Service - A Case Study in Forward Thinking with SOA
Stuart is a Cape Town based developer who fell in love with Ruby in 2007 and has been his passion since.
Before then he was stuck in an unhealthy relationship with Delphi, and had courted PHP and C#. He is crazy about clean and minimalist design, photography and good beer.
In a past life he's pretty sure he wore a cape.
A brief case study on Service Abstraction. Taking a monolithic Rails app, separating concerns and growing out.
I will be discussing the decision behind the abstraction, how we approached it and where a handful of gems made the process a whole lot easier.
Outside of software development, my hobbies include finding new hobbies to pursue intently for 1 - 3 months, and selling equipment from abandoned hobbies on the Internet. I once wrote a quine in Ruby.
A look at how this obscurely named pattern works and why you'd want to use it.
Marc Heiligers @rubyfuza Welcome
Konstantin Haase @konstantinhaase Ruby: Where Are You Going?
John Anderson @djellemah Do It Yerself, Rube
Jesse Newland @jnewland ChatOps at Github
Chris Spring @autonomous Rack based web apps with JRuby and TorqueBo
Aaron Kalin @martinisoft Hey Kid! Don't Copy That Floppy!
Garren Smith @garrensmith Developing multiple personalities to bootstrap your first product
Lance Gleason @lgleasain Dynamic Routing With Circuit
Vicent Martí @vmg Unicorns Die With Bullets Made Of Glitter
Rory McKinley @rorymckinley Subprocesses, Threads and Fibers
Jacob Burkhart @beanstalksurf Living With Distributed Systems
Renée De Voursney @gigglegirl4e Teaching Ruby for Fun and Profit!
Simon Stewart @simonstewart How Pet Projects Can Enhance Your Career
Danish Khan @danishkhan Don't Be An A**hole
Stuart Corbishley @stucorbishley Abstracting a Service - A Case Study in Forward Thinking with SOA
Terrence Lee @hone02 `bundle install` Y U SO SLOW: Server Edition
Ryan Lemmer @ryanlemmer Side-Effects Are Not Your Friend
Luke Randall @luke_randall CQRS
Aslam Khan @aslamkhn Not Quite Object Oriented
Kevin McKelvin @kmckelvin Applying RSpec Best Practices
Kenneth Kalmer @kennethkalmer Reusing your frontend JS on the server with
The Ruby Racer and/or Ruby Rhino
Leave for Dinner
InstallFest The InstallFest is a set of step-by-step instructions for installing Ruby, Rails, and other important tools on Mac, Windows, or Linux computers.
Workshop A short introduction to using the Terminal and basic Ruby terminology. Begin project and learn about Git.
Workshop Continue with the project and learn about resources, CRUD and controllers.
Cape Town’s business centre is within easy walking distance from the Strand Tower Hotel.
The city’s many major tourist attractions, such as Table Mountain, Robben Island and the V&A Waterfront, are also within easy access from the hotel. Other notable landmarks nearby include the Cape Town International Convention Centre, which is just 2 kilometers away, and the Green Point Stadium, which was constructed for the 2010 FIFA World Cup. The stadium, which is 3.5 kilometers from the hotel, is now home to many other major sports tournaments.View Map Find accommodation
Mad Mimi is a simple, intelligent and powerful email marketing utility that anyone can use. Mad Mimi makes email marketing easy for the creator, and easier on the eyes for the receiver. With ground-breaking technology, Mad Mimi is the simplest way to create branded, well-designed newsletters and promotions. Sign up free today and get started with simple, lovely email marketing.Ruby-level sponsor madmimi.com
At Platform45 we believe software is essential to the advancement of human potential. All businesses will, if they haven't already, become software businesses.
We work with our clients to create custom web and mobile software that allows them to automate, innovate and ultimately engineer a better business.Ruby-level sponsor platform45.com
At Hetzner South Africa we are passionate about web hosting – it’s our core business and it’s what we do best. By consistently delivering excellent service and cost effective web hosting, dedicated servers and custom hosting solutions, Hetzner has exponentially grown its market share, making it the leading web hosting company in South Africa. Inspired by our brand promise ‘Trusted in Hosting’, we focus on providing efficient, sustainable business models, quality service and customer satisfaction. A key contributor to our success is our people. We aim for our teams to manage themselves rather than rely on several layers of hierarchy. We want to give our people the freedom to explore, innovate and create. We recognise that our customers expect reliability and good value from us and it remains our ongoing commitment to earn and retain their trust.Ruby-level sponsor hetzner.co.za
In 2006, Amazon Web Services (AWS) began offering IT infrastructure services to businesses in the form of web services -- now commonly known as cloud computing. One of the key benefits of cloud computing is the opportunity to replace up-front capital infrastructure expenses with low variable costs that scale with your business. With the Cloud, businesses no longer need to plan for and procure servers and other IT infrastructure weeks or months in advance. Instead, they can instantly spin up hundreds or thousands of servers in minutes and deliver results faster. Today, Amazon Web Services provides a highly reliable, scalable, low-cost infrastructure platform in the cloud that powers hundreds of thousands of businesses in 190 countries around the world.
We have open roles available in Cape Town for:
If you have a background in Computer Science and are passionate about cloud computing, send your CV to firstname.lastname@example.orgAWS Workshop and RailsBridge sponsor aws.amazon.com
ThoughtWorks is a company wholly devoted to the art and science of custom software. We make it, and we make our clients better at it. Our bottom line is to design and deliver software fast and predictably. But we’re also an amazing collection of humans, hired for our passion, integrity and special powers. The company was founded as a social experiment – what happens when you hire really smart, passionate people and set them loose on really tough problems? 19 years on, this collection of people has helped shape the IT industry. The problem we set ourselves now is to use software to improve humanity - becoming a role model for 21st century socially responsible companies.Sapphire-level and RailsBridge sponsor thoughtworks.com
A business consultancy turned software house.
What may seem a strange transition was a rather natural evolution that has spanned the last 8 years. Mpowered started as a BEE consulting service. A few years in, we began development on a scorecard calculation tool that grew to become our flagship software product. At the time we had little idea that inside of four years our business would fundamentally shift from selling consulting to selling software.
Today we develop web apps that help businesses track, measure and plan BEE compliance. We also enjoy exploring associated domains and other ideas that resonate with our techy hearts :)Sapphire-level sponsor mpowered.co.za
Unboxed Consulting build innovative and robust applications. We have a solid and well-honed development process that we are very proud of. Our first love is Ruby on Rails but we like to play the field as well. Based in Cape Town and London we work with large ambitious clients and also inspiring startups in both South Africa and the UK.Emerald-level sponsor unboxedconsulting.com
Heroku’s platform as a service allows your organization to build faster, deploy instantly and scale on demand without managing servers. Gain the flexibility to deploy any language any time and to any scale. Maintain control by isolating, running and monitoring independent processes. Heroku makes it effortless.Emerald-level sponsor heroku.com
Basho Technologies is the leader in distributed systems.
Basho's flagship software is Riak, an open source, distributed database used in production by 1000s of companies like Mad Mimi, Praekelt, Yammer, GitHub, and BestBuy. Riak is made to scale out (and in) with applications, be highly-available, and simplify operations at scale for developers and ops professionals.Emerald-level sponsor basho.com
Shuntyard Technologies specialises in web based systems using Ruby on Rails and related technologies. We are an innovative team with a proven track record in new development and the rescue of legacy systems. We love what we do and it shows in our work. We are based in Cape Town with clients as far afield as Brazil, China, Australia and New Zealand.Emerald-level sponsor shuntyard.co.za
African Stay is a reputable and reliable reservations company that arranges your accommodation in luxurious safari lodges, camps and exclusive hotels throughout Southern Africa.The accommodation we represent all offer unique facilities. Most especially, you will enjoy rare splendour and superb hospitality to make your visit unforgettable.Conference organization sponsor africanstay.co.za
Siyelo designs and develops bespoke web applications. We turn ideas into elegant applications through skill and a process that emphasizes collaboration and continuous refinement. Our team delivers profitable and enjoyable user experiences. We love our work and so will you.The Website siyelo.com
GitHub is the best place to share code with friends, co-workers, classmates, and complete strangers. Over two million people use GitHub to build amazing things together.
With the collaborative features of GitHub.com, our desktop and mobile apps, and GitHub Enterprise, it has never been easier for individuals and teams to write better code, faster.
Originally founded by Tom Preston-Werner, Chris Wanstrath, and PJ Hyett to simplify sharing code, GitHub has grown into the largest code host in the world.Drinkup sponsor github.com
My wife asked me "What are you most excited about at this year's conference?" That's a really tough question for me to answer, but I think the thing that I'm most excited about are the RailsBridge workshops...
Our keynote speakers are Konstantin Haase and Renée De Voursney. They will be leading the discussion on the Future of Ruby, both from the technical side of what we can expect in Ruby 2, Rails 4, Rubinius and so on, but also in the people side, on how we can introduce new people to Ruby, how to teach them and train them...