DHH introduced 3 interested things to Rails 5:
- The inclusion of rails-api to Rails
- Turbolinks 3 (partial updates of a page)
- ActionCable (a websocket layer for Rails)
Don't be a hero: Sustainable Open Source by Lillie Chen
This was a talk about tips on how to collaborate/maintain on open source project without burning out on the process. I think there are some couple of points you can apply on every project:
- Delegate responsibilities.
- Guide your team understand the problems/issues needs to be solved.
- Do your planning including your team.
Riding Rails for 10 years by John Duff
I found this talk to be very interesting. John explained how Shopify have been growing with Rails over the last 10 years. They have never rewritting the app but they do have been updating it to every release up to 4.1. He shared some code of the first versions of Shopify and he mentioned that seems the start, even when the implementation wasn't quite right, we can see that the design patterns and testing were established seems early versions of Rails. He also mentioned that Rails have a tendency to package the cool stuff everyone use on their next release so you don't have to worry about that anymore.
He also talked about the challenges you face when you want to keep your app up-to-date to latest Rails version, especially when your app is big and you have a big team working on it. Some of the things they do to minimze impact is:
- Update and realease code as soon as possible, so others don't have to redo their code.
- Minimize dependencies
- Test on separate production servers (especially paying attention to performance regression)
- Encourage your team to learn the new features/practices on the latest version of Rails.
Breaking Down the Barrier: Demystifying Contributing to Rails by Eileen Uchitelle
This was a lab session where she shared how to setup your environment to contribute to Rails, how to run the tests and guidelines to open an issue and PR. Also we practice some git commands and I learnt about a cool command
git reflog. This command basically records the updates on the
HEAD of each branch in the last 30 days and it can be really usefull when you need to recover to a previous state.
On how to get the enviroment ready here
Microservices, a bittersweet symphony by Sebastian Sogamoso
This was a well explained talk on the pros, cons and how your team should prepare if you're considering using microservices. Reasons to use microservices: you need indepence between parts of your app because some of them need more scaling/deployments than others or some parts needs to be easily replaceable or some service needs to be done in an another technology. Reason to not use microservice: your code is not easy to understand, maintain or fix.
Some of the considerations to have when using microservices:
- Basic monitoring
- Ability to do quick server provisioning
- Ability to do quick deployments to minimize downtime of the service
- Try to have integration to have better visualiation of the logs from the different services
- Have good test coverage with clear specifications on the behavior of the service
- Have ways to handle failure/unavailability of the services
- Avoid sharing databases between app and services
Processes and Threads - Resque vs. Sidekiq by James Dabbs
This was probably the most technical talk I went on the 1st day but the speaker explained everything clearly . He talked about the different between Resque and Sidekiq and the considerations you should have in each case.
- Resque uses procesess wich means not need to worry about thread safety but on the bad side means more memory needs
- Sidekiq uses threads wich means less forks and memory, lot of options included. But on the cons your code needs to be thread safe.
Fireside Chat with Tom Dale and Yehuda Katz
This was an unofficial event but it was really enlightening to watch. They responded to multiple questions doing emphasis on how they expect EmberJS grow as a framework.
Aaron Patterson's keynote
This was a really good talk that I think is worth watching, he talked about what is working to imporve Rails performance during the last year. One of the things he mentioned is he working on made controller tests to be an integration test framework under the hook, eliminate the controller test framework and optimize integration test framework. So we can expect faster controller tests in Rails 5. Also he is attempting to have the ability to do parallalel testing. Also he is working on cached compiled views.
What’s happening in your Rails app? Introduction to Introspection features of Ruby by Koichi Sasada
Great talk on how to trobuleshoot performance issues and memory consumption issues on your app. He mentioned two of the gems he developed GC::Tracer andAllocationTracer. There's also a demo where you can see how the information for this tools are shown.
Building RailsPerf, a toolkit to detect performance regressions in Ruby on Rails core by Kir Shatrov
Kir's talk was about catching performance regressions. He presented a case of study about when Discourse updated to Rails 4.2rc1. He explained that you should only optimize code when is really need it and for that you have to get metrics. He worked on an automated tool to do that called railsperf (demo) and he also uses rubybench.
AMS, API, RAILS and a Developer, a love Story by João Moura
He talked about rails-api, a slim version of Rails to build APIs. It will be shipped on Rails 5. He also talked about ActiveModelSerializer and made an introduction to AMS 0.10. Some of the new cool features is the new implementation of cache (allows partial cache) following Rails convention.
Video coming soon
This was a round of quick talks from different speakers. The one that stood up more for me was 5 ways we screwed up Microservices by *Gonzalo Maldonado. It goes on the same note that Sebastian's talk on Tuesday about microservices. Some of the others talks topics were teaching kids to program and tools you can use for that, Rails Camp a 'conference' weekend without internet where you work on a project.
Designing a Great Ruby API - How We're Simplifying Rails 5 by Sean Griffin
Sean's talk was focused on the changes made to ActiveRecord for Rails 5. He started with type casting and when Rails type cast the input and how an API should be simple and composable. Then he went on to explain how this way of thinking made obvious that many parts of AR can be described as an API. He remarked the importance on having good test coverage and how a change that seems really big can be done by doing it on small steps.
Sometimes a Controller is Just a Controller by Justin Searls
This was definitely a fun talk about how to have a good dev culture fit as individuals, teams, bosses and companies.
The World of Rails Security by Justin Collins
This is an informative talk about security in Rails and how you can integrate it to you development process. He also points out so unsafe defaults in Rails that you might want to be aware of.
Voila, Indexes! A Look at Some Simple Preventative Magick by Jamis Buck
Jamis with a simple example explain clearly the importance on having indexes on your database and of course, the right indexes. I also have to add his slides are beatifully illustrated .
Nothing is Something by Sandi Metz
As you would expect from Sandy this talk was one of the best. She explains her points so clearly that is hard not to understand. She talked about Null Object pattern and Composition to inject the object with the behavior you want. Definitely a must watch.
Closing keynote by Kent Beck
The keynote wasn't technical. It was about Ease at work.