My Ruby Conf 2019
Tags: ruby, rubyconf, gratitude, techtalks
Published: 2019-11-24 15:59:12

# Nashville Ruby Conf 2019

Conferences are a great time to reflect on past, future, and present work. This year’s Ruby conference was a great time that included lots of learning, reflection, and auspicious gratitude for my employment and my employer. I really enjoyed the diversity of people that I met at Ruby Conf this year. From the young ladies that had just finished a coding boot camp, to the people who worked at Shopify, a couple of people who work for Pixar, the young man from Sentry who was really interested in what the Libraries does, the excellent speakers, attendees that I merely talked to as we waiting for the keynotes to start, and even community members who worked in other University Libraries.  

## The Keynotes

Matz gave the opening keynote and started us off with some good insight into the future of Ruby including the features that will be added/removed from Ruby 2.7 and Ruby 3.0.  This discussion was even enhanced further by the third day’s Q/A session with Matz.  No matter how much Aaron Patterson wants an emoji-based pipeline operator, it will not go into the next release of Ruby (a joke probably better suited for those who attended the Q/A session).  The goal for Ruby in the future is to continue to grow as a community and add features that still make the language fun to work with, but also provide the functionality of the other popular languages (Haskell, Elixir, Python, JavaScript).
  
The other keynotes tended to be a bit political/socially driven, and less technical which seemed off-putting to me, except for the one delivered by Sandi Metz. While I was expecting a technical talk that hinged on object-oriented programming in Ruby; instead I was left floored by a talk about economic dispersity, government intervention in free market that lead to socio-economic inequality, student loan debt, housing loan debts, and an apology by a boomer who was sorry for not recognizing what needed to change.  This talk was very brave, passionate, and not a maligning to any one person’s political opinions.

## Metaprogramming

Metaprogramming was a very interesting topic that was included in a few topics.  Some suggesting metaprogramming for good some, others referencing the more sinister side of metaprogramming. One of the more interesting thoughts and practices with metaprogramming including creating monkey patches to trace bugs. I found this an interesting thought as you can write something that essentially tells you what the problem is in great detail and allows you to fix it in a much faster way than traditional debugging.  Another facet was in the ability to make gems for older and newer versions of Ruby by using it to create a “polyfills” for lack of a better term for newer Ruby functionality.  Another talk even referenced creating functionality achieved by functional programming languages in Ruby to do very terrible things (those naughty lemurs see functional programming for more).  

## Functional Programming 

There are some interesting things that can be done with functional programming in Ruby.  Ruby is an object-oriented programming language, but that is not to say you can use functional programming inside of Ruby.  One speaker demonstrated how well written functional programming and well written object-oriented programming tend to look similar because of the single responsibility principle which states that a function or method should only have one responsibility.  If you find that your functions do not look as they would in a functional language then you are probably breaking that rule.  There are even functions currently in Ruby (lazy, curry, recursive!) that lend a hand to functional programming.  Another speaker was very entertaining about his approach to functional programming issues telling a story of a curious lemur who uses concepts from other functional programming languages to do very bad and dangerous things within Ruby.  This was more hypothetical things you probably would not do in a serious project but could have merit in trying to find ways to speed up your program in some ways.  

## Memory Management 

A few talks spoke to memory management and parallel programming in Ruby.  It looks like things will only get better and better with Ruby moving forward and I’m really excited about performance boosts in Ruby 3. I was happy to get some good tips about setting an environmental variable to set the maximum number of GCC arenas in ruby that helps to speed up all Ruby/Rails applications.  `MALLOC_ARENA_MAX=2` Another talk leads me to believe that it would be better to use jemalloc to handle the garbage collection and RAM management, but that would require a little more work to get working properly.  

## Computer Science Concept
Without getting too technical here there were some common computer science problems that were discussed with Ruby examples.  Sorting algorithms, Big O notation, and other things that are known as “computer science common knowledge essential to programming”.  At the end of it there was a consensus of many of the speakers to say this is good to know, but not required for programming, however, you still get asked these questions in interviews.  Not really lumped in with computer science concepts but something really cool and nerdy in the computer science realm was a talk where a person worked to create Ruby on an Apple 2 computer using byte code or assembly language.  It was a really awesome interactive presentation that had a ton of work involved in creating it which really goes to show you how versatile programmers can be but also showcasing the passion Ruby developers have for wanting to use Ruby in a variety of platforms.

## Conclusion
This was a great conference and this writeup has gone way over my short succinct thought process of “giving the highlights”, but I still feel I have barely scratched the surface.  Hearing others having similar problems and struggles that you face with tools you commonly use is a really empowering thing to have to happen.  It helps to validate the inner thoughts most developers have at one point in a project such as “I’m not a total idiot” and “I’m on the right track”. 
 
## Side Note *(maybe ranting)*
Many people think that ruby is “dead”, “dying”, and “Just limping along”.  I say that is not that case, there are many new startups kicking off each year.  Rails continues to grow and gain traction among startups and people who need to create things quickly.  I'm noticing substantial activity around the integration with Webpack, React, Stimulus, and other frontend tooling and JS libraries. To illustrate how not dead ruby continues to be, here is a list of people who were looking to hire Ruby developers at Ruby Conf 2019.  
 
* ActBlue
* AdHawk
* Airbnb
* Anvyl
* Appriss
* BackerKit
* Bendyworks
* Braintree
* Cookpad
* CoverMyMeds
* def method
* Doximity
* E&E NEWS
* Envoy
* ezCater
* Finalsite
* Fleetio
* Flexport
* Fullscript
* General Dynamics
* Global Impact
* Gravitational
* Guild Education
* Hover
* Invoca
* Justworks
* Kenna Security
* Mastery Logistics Systems
* Movable Ink
* Nava PBC
* Nexmo
* Nikola
* OMBULABS
* OneMain Financial
* One Medical
* Optoro
* Planet Argon
* Privia Health
* RAMSEY Solutions
* ReviewTrackers
* Runtastic
* Shopify
* Simply Business
* Snapdocs
* SportsEngine
* Springbuk
* Street Easy
* Stripe
* Square
* Test Double
* thoughtbot
* Tidelift
* TrueCar
* Upstart
* Vimeo
* VisuWell
* Vynyl
* Zillow