Traveled by motorcycle (1300 miles roundtrip) from Boulder, CO to Kansas City, MO and back again.
- Keynote (Jeremy Daer)
- Didn't find this keynote to be of much value. It meandered and ran over allotted time.
- I Can’t Believe It’s Not A Queue: Using Kafka with Rails (Terence Lee)
- Would have liked this talk to have more practical setup and code examples.
- The "why" of Kafka wasn't fully explained.
- Multi-table Full Text Search with Postgres (Caleb Thompson)
- The Scenic gem is interesting but not sure I like the idea of managing an additional set of migrations for PostgreSQL views.
- The Rails Boot Process (Xavier Noria)
- It was mostly an overview but would recommend reading the Rails Guides for the details.
- 3x Rails: Tuning the Framework Internals (Akira Matsuda)
- This was excellent. Study the slides.
- Benchmark IPS is a good performance debugging tool to have around.
- You can use
GC.stat
before and after running Benchmark IPS to get a sense of what objects were collected. - Stackprof - A call stack (sampleded) profiler.
- Peek::Rblineprof - Investigate how much time each line of your app takes to process per request.
- Use TracePoint for debugging (see Ruby Tapas, Episode 327).
- Hamlit - If you must write HAML, then check out this gem. It has the fastest speeds of all renderers (even beat Slim).
- ActiveRecord creates a new object per attribute for each model. Be wary of models with lots of attributes.
- Avoid using Rails
#present?
method. It makes 85 method calls! See closed pull request for details. This appears to be related to AR only. - Don't add to
ActiveRecord::Base
useActiveSupport.on_load(:active_record) do...end
instead. Related PR. - Watch out for pry-* gems. Expecially, pry-doc as it adds a significant amount of time to app load time.
- Do not use
autoload
. Dangerous in forked processes. Also not recommended by Ruby Core team and eventually will be removed. - Do not use Database Cleaner as it is extremely inefficient. Use Database Rewinder instead.
- In 90% of cases, transactional tests are good enough. Database Cleaner is only needed when your database doesn't support transactions (mongo), or you need data in multiple processes (eg, the server that capybara runs in the background)
ActiveSupport::TimeWithZone
is slow and would be best to not load (not sure what a good alternative is). Benchmarks show that's 44x slower thanTime
.- Also generally not required. Somewhere in
config/application.rb
, just addENV["TZ"] = "UTC"
, and always assume times are UTC. Only do the conversions at the last second, in the view layer.
- Also generally not required. Somewhere in
- Use Fast Blank as it a C extension with much faster results than
Active Support's String#blank?
. ActiveSupport::Multibyte
is inefficient as it loads the entire unicode database.
- Storytelling with Code (Michael Rau)
- Didn't find this talk particularly compelling.
- AR vs Ecto
- Rather than a single object for each database table, Ecto has multiple objects to manage the data lifecycle. Queries return immutable Structs, then passed to another Query to update/save, etc...
- Makes it more obvious when you're querying or updating in the view...
- Tweaking Ruby GC parameters for fun, speed, and profit (Helio Cola)
- Didn't walk away from this talk with any additional knowledge (beyond what I know to use aleady).
- We should probably set some/most of these in our Heroku env, after tuning and getting some decent benchmarks.
- Keynote (Chanelle Henry)
- Enjoyed the talk. Watch the video when it is released.
- Precompiling Ruby scripts - Myth and Fact (Koichi Sasada)
- Slides
- Didn't realize you could do this in Ruby 2.3.
RubyVM::InstructionSequence
(a.k.a. ISeq) is want Ruby complies down to in MRI.- Will be experimenting with this more!
- Rails 5 Features You Haven't Heard About (Sean Griffin)
- BOF (Evan Phoenix & André Arko)
- Learned that Bundler will become part of RubyGems in the future.
- Need to refactor my open source work to not rely on Bundler.
- Was able to get some history and direction of RubyGems.
- Glad to know that I might be able to push for better standards.
- 5 Practical Ways to Advocate for Diversity (Tony Wieczorek)
- I think more people should have attended this talk.
- These are important issues to be thinking about.
- RSpec and Rails 5 (Justin Searls)
- Entertaining but not entirely useful in regards to RSpec.
- His points about the future of Ruby community and where it is going is important to be thinking about in terms of whether it is waxing or waning.
- video. One of my favorites.
- Lightning Talks
- Rails Camp looks interesting.
- Need to research GemStash.
- Not sure I need to support multiple zip formats but if I do MultiZip might prove useful.
- Learned of Ruby Book Club podcast and subscribed.
- Keynote (Aaron Patterson)
- Entertaining as always. Recommend watching the video.
- Build Realtime Apps with Ruby & Pakyow (Bryan Powell)
- Forces one to replace the entire Rails stack in favor of the Pakyow framework.
- Is an alternative solution to Volt.
- Can't say I'm excited to use this.
- Going Serverless (Jeremy Green)
- Covered use of AWS Lambda.
- Don't bother with JRuby.
- Ruby support is supposedly in the plans but unsure when it'll be fully supported.
- You can use Node.js to launch a custom Ruby build but it's not ideal.
- The Serverless Documentation might be of help to some setting up AWS Lambda for the first time.
- How to Build a Skyscraper (Ernie Miller)
- Entertaining. I guess you could use history's lessons to avoid overengineering and building for only what you need.
- Turbo Rails with Rust (Godfrey Chan)
- Rust seems like the perfect compliment to Ruby.
- Need to start writing Rust code.
- Don't have much computationally intensive work at Kapost, not sure how we could fit it in.
- Get a Whiff of This (Sandi Metz)
- One of our greatest presenters.
- Great talk on code smells.
- Recommend watching the video and spending time reading about how to identify know which pattern to use for solving code smells.
- Keynote (Paul Lamere)
- Best of the conference.
- Entertaining and insightful.
These are the talks, had I been able to exist at the same time in multiple places, I would have liked to have seen (will wait for these to be released on Confreaks):
- ActiveRecord vs. Ecto: A Tale of Two ORMs (Brad Urani)
- :thumbs_down:
- Riding the Latest Rails for Charity (Joseph Dean)
- How Sprockets works (Rafael Mendonça França)
- Testing Rails at Scale (Emil Stolarsky)
- Turbolinks 5: I Can’t Believe It’s Not Native! (Sam Stephenson)
- Secrets of Testing Rails 5 apps (Prathamesh Sonpatki)
- Managing Growing Pains: Thinking Big While Being Small (Jon Arnold)
- Saving Sprockets (Richard Schneeman)
- About taking over a project that the previous maintainer lost interest in. Pretty good for open-source maintainers.
- Can Time-Travel Keep You From Blowing Up The Enterprise? (David Copeland)
- don't forget the network: your app is slower than you think (André Arko)
- Finding Translations: Localization and Internationalization (Valerie Woolard)
- The State of Web Security (Mike Milner)
- Succession (Katrina Owen)
- Real World Docker for the Rubyist (Jason Clark)
- :thumbs_down:
- Memory Profiler - A tool for profiling memory performance that can also be used with Benchmark IPS.
- Yomikomu - For use with Ruby 2.3.x. Provides support for dumping and loading iseq bytecodes.
- Bootscale - "Speedup applications boot by caching file locations during require calls. Speed gain depends on your number of gems. Under 100 gems you likely won't see the difference, but for bigger applications it can save 1 to 3 seconds of boot time per 100 used gems."
- Heapfrag - Aaron Patterson wrote this but says to use with caution. It's a tool for dumping and visualizing your MRI heap. Might or might not be of help. BTW, Aaron had another gem he mentioned called "Binload" but couldn't find a link to it.
- Helix - A Rust crate that makes it easy to extend Ruby with Rust for improved performance where writing pure Ruby code might not be as performant. This looks very interesting and is worth checking out/keeping an eye on.
- The Railsconf Guide was a handy resource.
- Loved the Kansas City BBQ. Sad to have missed the Honeybadger BBQ tour on Tuesday evening.
- The Crowne Plaza beds are like rocks. Failed to get a comforatable nights sleep the entire stay.
- Happy to drink Buffalo Sweat again (since distrubution lines are prohibited in Colorado).
- Found Anthony Eden's DNSimple wisdom of starting/running a business to be educational.
- Enjoyed hanging out with the AppSignal folks.
FYI, you can paste a youtube URL directly into VLC, to enable watching videos at 1.2x or more.