cubecul asked: Hi Richard. I love your videos; thanks so much (times a million!). I have a bit of a bigger question to ask. I'm just about to be a junior in college. I'm not studying anything technical. I've fallen in love with programming over the last month and a half. Previously, I just wanted to go into consulting: prestigious and great opportunities ahead. I enjoy that subject matter quite a bit. How can I decide if a career in software is for me? What is the career path/stability/future job titles/etc.?
Happy you’re enjoying them :)
As you may know i’m not a programmer by degree, I have a mechanical engineering BS from georgia tech. You don’t need a degree to get a job, but it is harder to get your first job without one. Not because people care about credentials, just that companies really stink at hiring programmers and may ask you a bunch of horribly lame CS questions in the interview that don’t have anything to do with modern web development.
I spent ~3 years programming Ruby/Rails in college and through my first job before I got my first Rails gig. While everyone is hiring now, it is difficult to find a position looking for junior or new devs. Then if they don’t have the right mentoring programs and experience in place, you may hate working there. For my first job in rails: Gowalla, i got around any interview questions by demoing a fully functioning site (now offline) that did some cool stuf. Then I showed them the repo, and we talked about some of the code. I also gave them ~8+ hours of me giving Rails tutorials…so that helped :)
For consulting: i’ve never done it but I have friends that have. Get involved at a local meetup group. See if you can find other consultants and ask how they got into it. Many that I know share work with one another. I.e. they never turn down a job (lest a door shut) but they might farm off the work to another developer. Look around for a consultant who might be willing to give you a hours of their work a week for a low hourly rate in exchange for pairing/mentoring sessions. 1-on-1 instruction is the fastest way to level up your skills. Go talk to a consultancy agency, they may have a program like this in place already.
If you’re into programming for the money, i say don’t. It’s a lot of time and effort and energy and if you’re not in love with it you will get burned out after a few years making the $$$ even out in the end. Go for it if only you enjoy building, creating, and maintaining meaningful projects. I never meant to learn to program, it just happened that I needed programming to build the things I wanted. The best way to see if this applies to you is to program more and then do the shower test. When you’re taking a shower before your day and getting excited about what you’re going to do, does thinking about programming get you more or less excited.
For career: consultants make tons of money (think 2x what a salary dev makes) but their work is not stable. Typically when a company hires a consultancy it is to do something that no-one at their company wants to do, so you might not be doing the most rewarding work in the world. Salary developers have more ownership and control of what they work on, but there can be little to no variation in the type of projects depending on the size/focus/scope of the company.
For promotions: consultants just raise their rates as they get better. The range I know of right now is anywhere from $80-200 per hour depending on skills and knowledge. Keep in mind they might work 5-80 hours a week depending on how busy they are. Salary workers: you will typically need to ask for a raise like any other job. Titles are typically meaningless. You can be a “senior” engineer at most companies fairly quickly. Other companies have a “flat” architecture and the only difference between engineers is salary. After being a programmer you can go into project management for programmers. While the pay is good here keep in mind a good PM does everything a programmer doesn’t want to: think email…lots of email. If salary isn’t your thing, you can always ask for more vacation, or for extra company time spent working on open source work, or whatever. Most long term programmers make good money, but care more about building and shipping good products than titles and cash.
Ok, so this got a little long. Hope that helps. Try to make community contacts to help with some of these questions, even if you don’t go into consulting…being well networked can only be a good thing. When in doubt go to a Rails meetup. Good question by the way.
iamakimmer asked: You have the best lesson on Rails hands down. Coming from enterprise Java development..I felt that there was so much magic in Rails that other videos tend to skip over. Your through explanations and the Reddit on Rails project really helped to explain many of the details I was really confused about. Thank you!
Glad you enjoyed the lessons :)
mikeholley asked: Hello Richard, I was curious after you worked at Gowalla and used PostgreSQL and now work at Heroku which has MongoDB as an option for users. If you were going to do an app that has data like places as well as user data like posts, checkins which would you use today? Thanks for your response.
Heroku just announced support for postGIS https://devcenter.heroku.com/articles/postgis which helps give you geo location features in your DB. I’ve never used Mongo, so I can’t compare the two. I love postgres though :)
kylegracey asked: Hey man, I just wanted to say thank you for putting the UT rails course online. Seriously. I've tried a couple of different courses, and this is the first one that explains everything clearly and teaches in a way I *understand* and actually *learn* from. So yea, anyways, thank you x1000. If for some reason I ever run into you in the real world, I owe you a beer or three.
Happy to help :)
janezli asked: Dear Richard, I stumbled upon your videos after searching for a way to learn RoR online. Unfortunatey, I have no programming experience at all, and I was completely lost in the second video of week 2 (ActiveRecord). I didn't even know where to start to follow along. Is this intended for beginners with no database/programming knowledge? Finally, I noticed you also have a set of videos in beginner-to-builder-2011. Am I supposed to watch those videos before doing the UT Rails 10 wk course? Thanks!
The course is intended for an audience that has some programming background such as understanding variable assignment and flow control (if/else). If you’re just getting started in any kind of programming i recommend codecademy, either start with Javascript (http://www.codecademy.com/tracks/javascript) or Ruby (http://www.codecademy.com/courses/ruby-beginner-en-MxXx5/0/2).
If you get lost in my course i recommend skipping ahead to the exercises, a good amount of the lecture for the first 1-2 weeks is theory that isn’t used until later.
Git Minutes Podcast Interviews Schneems
Had a delightful time talking to GitMinutes about workflow, Rails issues, and more. Have a listen and tell me what you think.
Heroku Engineer Engaged to Ruby
It was a long day when @schneems typed $ git push heroku master, opened his website, and exclaimed “I love Ruby!”. Then as if inside of Pee-wee’s Playhouse he heard a voice say: “If you love Ruby so much why don’t you marry her?”. So on December 25th, he got down on one knee with his Grandmother’s engagement ring and proposed to Ruby Ku. She said yes!

You might think that to be the end of the story, dear readers, but it’s just the beginning. Fast forward to March, our young protagonist sits weary on a plane bound for Austin, Tx. He’s been away nearly a month, and has the jet lag to prove it. As he descended the airport escalator, destined to touch foot in the city he calls home, he heard a strange sound. As he lowered, the sound grew, and one-by-one: faces of his friends appeared at the base of the moving steps. As he stepped out he looked for his bride to be, but couldn’t find her. Then his friends part like sea from sky and suddenly…
Did you watch the video?
How are you still reading? Aren’t your eyes filled with tears, and you cheeks cramping from smiling? (I know mine were).
Ruby steps forward holding cue-card style signs. Then, in-time to the boom-box soundtrack, she drops the cards explaining one-by-one why she is in love. As the last card falls she drops to one knee, and with a bottle of 12 year old scotch - proposes to Richard (that’s me). He said yes!
The Couple
Richard met Ruby at a meeting of Austin on Rails when she was learning enough programming to make Hourschool.com. After many awkward moments, false starts, and months of waiting: he stole a kiss after a midnight social (bike) ride. She launched her company, while his got devoured by Facebook. They moved in together, he got a job at Heroku, her company won a design award from core77, and they found the light of their life: Cinco Dog. She sometimes teaches at Austin Center for Design and He sometimes teaches at the University of Texas. They are both massively addicted to coffee, sunny days, and dachshund kisses.
After their mutual proposals, Ruby and Richard will be married on an urban farm in Austin, Tx on April 27th, 2013. Cinco dog remains single and ready to mingle.
The Journey Begins
Tomorrow brings another sunrise, another sunset, and another day of Richard loving Ruby.
Open Source in your Inbox: Code Triage
“I don’t have time to contribute to open source”. But who does? We’re too busy shipping products and open source is so daunting and time consuming. Sure tools and technologies are our livelihood, but there’s just so much there. Even if you’ve got the time - where do you start?
What if giving back wasn’t so overwhelming, so time consuming, so vast and soul crushing? What if you could get bite-sized open source tasks delivered right to your inbox? You could work on them when you get some free time, while learning more about the underlying guts of the code you depend on. Well now you can with: Code Triage.
What is Code Triage?
Code triage sends you one issue a day from your favorite repos:
These issues come in one at a time and it could be anything: from a feature request, to a bug report, to code attached to a pull request. It’s up to you to figure out if you can fix, give feedback, or grab someone with more experience. The more you can help, the more free time the software maintainers have.
Do you want:
- To have your name in the commit log of famous projects?
- To gain a better understanding of the libraries you’re using?
- To use less buggy software?
- To be a better developer?
- To be a better person?
Then Code Triage is for you.
Maintainers: Increase your Firepower
You’ve got open source libraries? Add your repos to Code Triage and subscribe to them. I’ve a few of my own libraries: Wicked and Sextant to triage. On the rare ocasion when I have issues pile up, I make sure I can work them off at a sustainable pace.
If you know someone interested in your project, suggest that they sign up to triage the repo. Also consider putting a link on your README.
It has already worked well for me. When I first launched Code Triage into Beta, @neilmiddleton helped so much on issues that I gave him commit bit to the github repo. Now he works on the project and sometimes fixes issues before I even get a chance to take a look at them.
In fact it has worked out so well, Neil ended up asking me to co-author a Heroku book. Legal Disclaimer: Code Triage cannot guarantee you co-authorship of an O’Reilly book.
Programmers: Make a Difference
Open up your favorite editor, click “Recently Opened”, and then find a project. Take a good hard look at your dependencies, pick one, and then sign up to triage. It’s really that simple.
The era of “too busy”, “too novice”, and “too lost to start” are over. Now is the time to solve bugs, merge good pull requests, and prevent maintainer burn-out. Together we can do it.
Go make an impact: one issue at a time Code Triage.
Anatomy of an Exploit: An In-depth Look at the Rails YAML Vulnerability
Exploits happens, and this month the Rails and Ruby communities have seen no shortage. From a major exploit in Rails to a slightly different Rubygems.org attack, there has never been a better time to brush up on software security.
Maybe you’re wondering why these vulnerabilities happen in the first place, why they weren’t caught in the first place, or maybe you just want to know the specifics of this attack. We’ll start off by taking a look at the anatomy of a security exploit, and then dive into the gory details of the YAML issue.
Continue Reading…
Use GIFs in your Pull Request for Good, not Evil
This weekend I made my OVER 9000 pull request to Rails, that features a demo of the functionality in GIF format. I’ve had a number of people ask the same question “what is your GIF workflow?”. For the detail oriented of you in the crowd, here it is.
The Content
I filmed my screen using Screen Flow, which I used to do all my work on UT on Rails, it’s not free at $99, but does editing, exporting, and managed to completely displace Final Cut Pro from my workflow. I recommend it. Another user suggests using quicktime which can do screen recording for free.
I took the video and then cropped it down to 560x315 and exported using H.264, this produced a teensy 619kb .mov file.
The GIF
Once I had a video I opened it up in Photoshop and used Save for Web to save as a .GIF. You can do this, or I’ve since learned that there is a free way to do this using FFMPEG and Image Magick that actually produces a smaller file. First install FFMPEG:
$ brew install ffmpeg
Then navigate to the correct directory, and assuming your file is named ScreenFlow.mov you can run this to produce a GIF:
$ ffmpeg -i ScreenFlow.mov -pix_fmt rgb24 output.gif
You’ll notice the output.gif is huge-normous, tipping the scales at over 100mb. To cut this down to size you can use image magick:
$ brew install imagemagick
Then run:
$ convert -layers Optimize output.gif output_optimized.gif
Thanks to this poster on super user for the shorthand. Here is a shell script to do that same thing, and if you’re looking for more vibrant results this user had some helpful tips.
Now you just need to post your amazing creation.
Posting
Now we’ve got a GIF sitting pretty around 182kb or so, but we need to put it into our PR somehow. You could drag and drop it into Github or you can upload it somewhere publicly accessible for re-use later. Use your favorite cloud storage service here, I like Cloud App. The service allows you to drag files to your menubar and share them. Make sure you’ve got the direct link (it should end in a .gif).
Once you’ve done that just add it as a markdown image  and put it in your pull request, so this:

Becomes this:

Enjoy
Submit your PR, kick back relax and enjoy the GIF you’ve bestowed upon humanity. Remember with great GIF power comes great GIF responsibility. Don’t post useless or unnecessary GIFs just because you can. Remember that maintaining a project is tough enough without having to look at looping cats all day long. So only add them when they truly benefit the conversation and when it is tasteful. If no-one abuses this functionality, then Github won’t have reason to disable gif support.
Thanks for sticking around, hope you learned something. Now go out and contribute to open source so you can feel like this:
