Ruby & Rails Community in Pittsburgh, PA

by Brittany Martin


Every week, I get an email from a junior developer requesting my thoughts on the Ruby and Rails scene in Pittsburgh, PA. As a working RoR developer/RoR mentor and a loud and proud Pittsburgher, I love to see Ruby and RoR being utilized by the community. 

With the exciting announcement of Railsconf landing in Pittsburgh in 2018, it was time to pour as much as I know about the Ruby and Rails community here into one place. 

Pittsburgh is still an enterprise programming language town. When I asked a local recruiter which languages he sees the most demand for, he quickly answered, ".NET, Java and C". It is difficult to be a junior developer in Pittsburgh but even more so if you are only comfortable with Ruby. I was fortunate that I had progressed to the intermediate level before I moved back. Ruby still has an imprint here, as you can see for the list below. 

Note: I'm absolutely sure I will miss something so please comment below or tweet at me (@BrittJMartin) with any edits you would like to make. 

Companies that Use Ruby

Companies that Use Ruby & Rails

Local Programs that Teach Ruby or Rails

Meetups for Ruby Developers

I hope you find this unofficial list helpful. Long live Ruby and Rails in Pittsburgh! I'll see you at Railsconf April 17th - 19th, 2018 (▼∀▼)


How to Add a Slack Notifier with Slack-Notifier and Sidekiq

by Brittany Martin in


Recently, my boss had the brilliant idea to route the request to a private Slack channel when our Ruby on Rails website processed a customer's contact form. It's ideal for spotting specific website issues and to stay tuned to our patrons interacting with our site.

I came across the excellent slack-notifier gem. I bundled in: 

gem "slack-notifier"
gem "json"

Time to add in a custom incoming webhook in Slack. Incoming Webhooks are a simple way to post messages from external sources into Slack. They make use of normal HTTP requests with a JSON payload that includes the message text and some options. Once you have the Slack URL, I added it to our Figaro application.yml as SLACK. 

Next step is to add an initializer for Slack in config/initializers/slack.rb.

require 'slack-notifier'

SLACK = Slack::Notifier.new "#{ENV['SLACK']}"

We're already proud Sidekiq users. Processing the Slack message was ideal for a background worker so let's build a SlackNotifierWorker. 

require 'json'

class SlackNotifierWorker
  include Sidekiq::Worker
  queue_name = "default"
  sidekiq_options queue: queue_name

  def perform(hash={})
    notification = {
        "username": "csibot",
        "icon_emoji": ":loudspeaker:",
        "fields": [
            {
                "title": "Organization",
                "value": "#{hash['org']}"
            },
            {
                "title": "Path",
                "value": "#{hash['site_id']}"
            },
            {
                "title": "Category",
                "value": "#{hash['category']}"
            },
            {
                "title": "Notes",
                "value": "#{(hash['notes'])}"
            }
        ]
    }

    SLACK.ping notification
  end

end

Remember to set the queue (default since it is not critical), emoji icon (important!) and to utilize Slack's nifty message formatter

Our last step is to trigger the SlackNotifierWorker during the flow of a user submitting a contact form. 

SlackNotifierWorker.perform_async(org: @org, notes: @notes, category: category_string, site_id: site.id)

That's everything. Special thanks to Steven Sloan and Mike Perham for making this so easy to implement. 

 

 

 


#TryPod : Try Podcasts!

by Brittany Martin in


During the month of March, a movement called TryPod is being celebrated. The idea is to tell a friend who normally doesn't listen to podcasts to try one out. Podcasts are an integral part of my learning, entertainment, weirdness and immersing myself into the various communities I love. 

Without much further adieu, here are my recommendations: 

Coding

  • Changelog - A weekly podcast that covers the technology and people of open source. It's about the code, the people, and the community.
  • CodeNewbie - Stories from people on their coding journey.
  • Ruby on Rails Podcast - A weekly conversation about Ruby on Rails, open source software, and the programming profession.
  • The Bike Shed - Hosts Derek Prior, Sean Griffin, Amanda Hill, and guests discuss their development experience and challenges with Ruby, Rails, JavaScript, and whatever else is drawing their attention, admiration, or ire this week.
  • ShopTalk Show - An internet radio show about the internet starring Dave Rupert and Chris Coyier.
  • AWS Podcast - Simon Elisha discusses various aspects of the Amazon Web Services (AWS) offering. Each podcast include AWS news, tech tips, and interviews with startups, AWS partners, and AWS employees.
  • Learn to Code With Me - Coding is tough, but rewarding. Get weekly motivation with this podcast.

UX

  • User Defenders - Inspiring interviews is UX superheroes. 
  • Tentative - All about digital product design. Hosted by thoughtbot Chief Design Officer Kyle Fiedler & Reda Lemeden.

People Behind Code

  • Giant Robots Smashing Into Other Giant Robots - A weekly podcast discussing the business of great software products. Hosted by Ben Orenstein and a rotating panel of fellow developers and entrepreneurs, we delve deep behind the scenes of thoughtbot's SaaS products.
  • Greater Than Code - A charming podcast about how #peoplematter in tech. 
  • Request for Commits - Exploring different perspectives in open source sustainability. It's about the human side of code.

Entertainment

  • Missing Richard Simmons - On February 15, 2014, fitness guru Richard Simmons disappeared. He stopped teaching his regular exercise class at Slimmons, cut off his closest friends, and removed himself from the public eye after decades as one of the most accessible celebrities in the world. Nobody has heard from him - and no one knows why he left. Filmmaker Dan Taberski was a Slimmons regular and a friend of Richard’s. It is Dan’s search for Richard - and the deeper he digs, the stranger it gets.
  • Hell Yeah Roller Derby - An awesome podcast that details a new passion of mine: roller derby. 
  • Anna Faris is Unqualified - A hilarious podcast where not-so-great advice comes from unqualified Hollywood types.
  • Women of the Hour - a podcast hosted by Lena Dunham and produced by BuzzFeed, will feature conversations with women about love, sex, work, bodies, friendship, and more.

Weird at Last, Weird at Last

  • Welcome to Nightvale - a twice-monthly podcast in the style of community updates for the small desert town of Night Vale, featuring local weather, news, announcements from the Sheriff's Secret Police, mysterious lights in the night sky, dark hooded figures with unknowable powers, and cultural events.
  • Alice Isn't Dead - A truck driver searches across America for the wife she had long assumed was dead. In the course of her search, she will encounter not-quite-human serial murderers, towns literally lost in time, and a conspiracy that goes way beyond one missing woman.
  • The Orbiting Human Circus (of the Air) - Atop the Eiffel Tower, a lonely janitor stumbles into a series of alternately surreal and comic adventures as he becomes part of a mystery: what is the secret behind the wildly popular, bizarrely impossible live radio variety show being broadcast from the tower’s top?

That should give you plenty to choose from! If you're new to listening to podcasts, Ira & Mary give a wonderful explanation on how to get started here. I personally enjoy the iTunes podcast app on my phone and SoundCloud at work. 

Podcasts are near and dear to my heart. Please let me know if you decide to give them a try. Thank you dear readers and good night. 


git init derby

by Brittany Martin in


Lead jammer. Grand slam. Cherry popper. My sister has won me over and I'm giving Roller derby a go with the Pittsburgh East Roller Villains (PERV).

pow

As I'm trying to jam roller derby rules into my head, it occurred to me that I have felt this way before: when I was learning to code. As a coding mentor for Bloc, it is beneficial to be placed back in the beginner's mindset. There are clear parallels that can be drawn from learning roller derby to learning to code. 

Time

Roller derby is incredibly time consuming, and on top of practice, I need to spend extra time on my core skating skills. Roller derby can completely take over your life, and what’s more, I bet I will gladly let it. When I was learning to code, I remember waking up early, going to bed late and trying to sneak any available downtime to study.

A funny paradigm exists when you are experienced. Training is recalled as being fast and easy when a lot of of commitments were sacrificed so you could practice. 

Grit

You have to be able to get hit, and get back up quickly. If you can’t take being hit, sometimes illegally, this is not the sport for you. As the famous philosophers of Chumbawamba chanted, "I get knocked down, but I get up again. You are never gonna keep me down".

When I took on an assignment I couldn't solve during my coding apprenticeship. it felt like I have been smacked back to square one. When we were young, we were bad at everything we tried but didn't care. As adults, we have few opportunities to be bad at a new interest. Embrace that learning to code is going to be more stops than starts at first.

Attitude

I've already gotten frustrated and had a bad derby day. But if you can’t shake it off and approach learning with a positive attitude, you’ll hurt your team’s morale. I love PERV's attitude around this:

Everyone is welcome regardless of abilities. We all are here to have fun! No negative Nancys allowed. Laughing is strongly encouraged!

The normal experience of programming is to try to solve something, get frustrated, try harder, pause, have an epiphany (for me: overnight or at the gym) and suddenly my code will work. Feeling frustrated is completely normal, and will never completely go away since you will just choose harder problems to solve. In some ways, the frustration makes the success that much sweeter. 

Athletics

Roller derby is a real sport and the training is hard. If you’re not interested in being an athlete, this is likely not the extracurricular sport for you. The same goes with being a developer. You're inevitably going to crash your program in production. Dust yourself off, learn from your mistakes and deploy again. 

Expense

I'm privileged to have the financial resources to pursue my interests. Roller derby is not a cheap hobby. Depending on your league, dues alone can be between $25 - $50 a month. Purchasing a lasting pair of skates and thick safety padding can add up. Before you commit to joining a league, ask a current skater (hi, sis!) about what kind of expenses you will need to budget for. 

A full-time developer bootcamp will typically cost $10,000-$20,000, but there are a lot ways to learn the fundamentals of web development through a self taught regimen. Don't forget to purchase a robust computer and invest in a strong wifi connection. 

Conclusion

Roller derby is hard and time-consuming but I know I'll get to do something really fun and rewarding with an incredible group of skaters. Learning to code was the one of the best decisions I have ever made. I love my job(s), developer community and the opportunities coding has opened for me.

Remember, it’s hard to be a beginner. It’s scary, embarrassing, overwhelming, and intimidating to try new things but we've got this!