Discover more from Once a Maintainer
Once a Maintainer: Robby Russell
Creator of Oh My Zsh and the popular Robby on Rails blog on how music, stickers, and Craigslist changed the course of his life
Welcome to Once a Maintainer, where each week we interview an open source maintainer and tell their story.
This week we’re talking to Robby Russell, founder and CEO of Planet Argon, a Portland, Oregon based software developer agency with a focus on Ruby on Rails applications. Robby is also the creator of the popular Oh My Zsh, an open source framework for customizing your terminal shell.
Once a Maintainer is written by the team at Infield, an app that helps engineering teams manage their dependency upgrades.
How did you get into programming?
I did not take a very conventional approach towards it, I suppose. I grew up around computers. My father works in IT and hardware, so we always had PCs around the house. I got my very own first personal computer when I was 5, which was basically my dad's computer that he passed to me. I grew up in the world of doing stuff in DOS, playing video games on a computer. And my dad was always trying to encourage me. He'd buy me a book on how to program in games. If you write all this code in this editor thingy, you can run it and then play it. And I said, “Someone already did that. Can’t I just play the game? Why would I want to write the code?”
I never showed any real interest in software programming, because it seemed boring to me as a kid. It's kind of funny how it comes back around over the years, but I was more interested in what I could do with them that I could what I can make them do. When I started figuring out how to make my own web pages, that's when it really started to get interesting. I think I used some web page building software. I made my own web page and put it on the Internet and then I'm like, that's kind of cool. In parallel I was also really interested in the local music scene, in the San Francisco-Berkeley area. So I started a zine. It was a paper zine that I would make photocopies of, then I thought, how do I make a web page to do that?
Then I started wanting to sell stickers on the Internet, and we used mail order. People would order stickers and send me a couple dollars in the mail and I would literally just send them stickers. So I was like, how do I make a web page that people could submit an order on? How do I make forms that collect some data? That was my first dabbling in software. I relied a lot on being able to find example code like people sharing their Perl scripts or what have you, and I’d modify it. It wasn't doing anything sophisticated.
In parallel, I dropped out of high school. I had no intention of thinking I was going to work in computers because I thought I would end up in a cubicle in Silicon Valley like my father did. The rebellious part of me was like, no thank you.
Those were the real Dilbert days.
Exactly. I didn’t want to do that. Having said that, I did end up going to community college and attempted to take some computer programming classes. I did not pass those classes because I didn't do the homework. It was really boring.
A couple years later, I moved to Portland and I needed to find a job. I found a job where they let me help fix computers. I would show people how to do things and train people on how to de-dupe things in Excel, skills that I didn't think were super complicated. But then I started finding myself answering a lot of similar questions from people, and they gave me a computer that I could, you know, run some Linux stuff and run Apache and some PHP scripts. And I found some open source PHP project. This is probably like 2000-2001. I got more interested in like, how do I make new features or new modules on this thing? Then the company noticed and said, do you want to join our web department and actually do this? Because you're already doing it? This was all Microsoft .NET at the time. It was brand new. So I switched over and joined the department and really learned how to program.
In the evening I would get into open source. In 2002 I realized that people would pay me to work on these projects, and that's when I set up Planet Argon. At work there was no way they would touch it because there was too much concern about open source being potentially easy to hack because all the code is out there. I was very much a strong advocate for open source early on during that area and kind of sneaking it into the ecosystem.
When you got that first day job after your reluctance to work in a corporate environment, with the cubicle and all, how did you work within that system? It sounds like you used open source a little bit as an outlet for your more creative side.
It's true. I'm 20 and I find myself sitting in a cubicle working in technology. But I wasn't in Silicon Valley. I'd moved to Portland. At least it was a different city and I was on my own trying to figure out my way in the world, but I also found myself to be really useful, especially with doing desktop support type work. There were almost 200 employees at the company and it was a lot of spinning up new computers for people, setting up the operating system and the applications. Teaching people how to do things like set up an out of office reply that didn’t trigger an infinite loop because back then people's emails would just back and forth reply to each other until we ran out of disk space.
But eventually, yes. That environment did not work for me, and I was able to take another job at a four person company that worked specifically with open source stuff. The owner of the company wrote an O'Reilly book about PostgreSQL. This was 2002-2003. So I got out of the cubicle and worked in a loft warehouse kind of space and it was a lot more interesting to me. It was a consulting company and we worked with Perl and Python and PHP. But the consistent technology was PostgreSQL, which was open source.
Around that time I also helped start a Linux user group in Portland that was for all ages. There was a user group in Portland already, but it would always meet at a bar. And I knew there were younger people that were interested in open source technology. So we started one where we would meet in the coffee shop, and we could stay late and just talk with teenagers that were interested from local high schools and stuff like that. Even though a few of us were maybe in our early 20’s ourselves. We played a little bit of community builder in some ways on a really small level.
How did you meet the owner of the small four person startup?
Literally a Craigslist ad. One of the cofounders was leaving and they were hoping to bring in someone else that had a little bit more experience. I literally had like a year and a half, maybe two years of programming experience at that point. So I became like their new senior developer. Craigslist actually played an interesting part in a lot of little parts of my life - it’s how I got introduced to Ruby on Rails, coincidentally.
After working at that smaller company for maybe a year and a half I decided I'm going to be a freelance developer. I really wanted to work on my music, and I decided that I would take the plunge and try to just do my own client work. In my naive approach, I thought, I'll just be able to work 50-60% of the time and make just as much money as if I was just working for this person who's bringing in the work right? Which is a total fallacy. You learn you have to spend the rest of the time trying to find new work. But I was able to start doing Planet Argon full time.
Then towards the end of that year, I saw an ad on Craigslist for a company called CD Baby here in Portland, OR. It was the largest online independent music retailer at the time, and they're based here in Portland and they were looking for a software developer. I knew a few people that worked at the warehouse there. Bands would send a box of CDs to their warehouse, and they would do all the shipping and fulfillment for you. And then they would take all your songs and make them into MP3s so you could put them online. They were one of the first companies that fed so much music into iTunes back in the day. So I applied for that job and the owner of CD Baby, Derek Sivers, quickly wrote back and said he wanted to interview me. He had written all the software himself up to that point, it was all PHP and Postgres.
So he offers me the job, and then he goes away for the the holiday break. He goes skiing and gets stuck in a blizzard and he has a programming in Ruby book with him. He comes back and he's like, change of plans. I can't hire you yet because I want to redo everything in Ruby on Rails. It’s this new thing that's been around for like six months. I found some guy down in San Diego and I'm moving him to Portland but if you can pick up this technology and start working with it, I'll hire you in a few months. So I was like, damn it, I'm not going to get the job. I can get the job, but I have to learn this new thing. What the hell is Ruby?
So I watched the DHH video about making the blog and I was like, this is interesting. I started playing around with it and got really excited, made some little fun side projects. I started a blog called Robby on Rails and started sharing what I was learning. There were very few people writing about what they were doing, and very little documentation at the time. This was 2005. Within a few months, people started contacting me asking me to work on their projects. I also started offering shared hosting for Ruby on Rails developers because there weren’t a lot of hosting platforms. If you didn't know how to set up servers, it was kind of expensive, and you had to go rent a server and pay $100 a month or whatever. So I would do that. I would rent those servers. And then give access to like 50 people to put their blog or their little Ruby project on there.
So a handful of months go by, and I start getting job offers to come work at startups. And I'm like, oh, this is a complete shift from where I was a year ago, when I was responding to Craigslist ads. Eventually Derek reaches out and he's like, so how's it going? Are you interested? And I'm like, I think I want to see where this goes for a bit. I got approached by a book publisher because I was writing so much stuff about it, and Ruby on Rails is this hot new thing. So I went through the process with one publisher and I was kind of like, wow, they accepted the book idea. Maybe I should shop this idea around a little bit more. So I went to O'Reilly and I pitched the book to them and they accepted it and offered me a better deal. So I got a book deal.
Anyhow, that changes everything. All of a sudden I start getting lots of business inquiries for my company. We were getting a lot more work than we could handle ourselves and not many people were hiring Ruby on Rails developers. We went from like two of us to 12 working in our attic office space pretty quickly, and then we got an office. I never finished the book because running a business and writing a book are hard to do at the same time. But that's how I got into Ruby on Rails, because I had a job offer rescinded. Totally motivated by rejection.
I love it. So you're focusing on Planet Argon, and what led to Oh my Zsh . . . I don't know if I'm pronouncing that correctly.
I wrote a pretty long article about how I accidentally created this project, but the shorter version is that I started using Z-shell because some of my peers in the Rails community were using it when git was kind of a new thing. People started experimenting with like changing their prompts a little bit. And I would just sort of like collect all these little ways to customize my terminal prompts, and have useful little aliases and shortcuts to make it easier to remember how to do things without remembering a big long command.
Then, when I'd pair with one of my coworkers at Planet Argon, they might still have their default bash. So when we’d sit at their computer, some of those shortcuts weren't there. And I was like, you know, it would be great if you would consider using this thing that I use. And some people would be happy to take that digital config file and just copy and paste it and use it. Other people were like, I don't understand what all this does, I don't want to do that.
So I decided maybe I should document my configuration file a little bit, because there were things even I didn’t really understand. As I was going through that process I was like, oh, I'll put this in a git repository and save my changes. And maybe I could better organize this, or split this up into multiple files, have like a little bit of a directory structure and have like a little README to tell you what it does. And here's some shortcuts you can use. And here's how to install it. So I decided to give it a name, make it look more official, and then I shared it with my coworkers that were reluctant and they immediately installed it and set it up because they're like, OK, this seems more legit now.
You productized it.
I did. I called it Oh My Z-shell (Oh My Zsh) because me and one of my coworkers had a little side project we were working on called Oh My Science which was a Twitter-related thing where we’d say “thank science for laundry machines” and things like that. I didn't really think about it being used beyond my company, but I put it on my blog, on Robby on Rails.
And then pretty quickly, my coworkers wanted to make changes to their configuration, to their prompts. And I was like, well, I disagree with the color choices you're making, but how can we make this work so I can use mine, you can use yours. I guess this is like a theme maybe. And so I created the concept of a theme where like, Carlos had his and Gary had his and Allison had hers. And I'm like, we'll just put those in a theme directory. And it just kind of snowballed from there, and people started contributing. Eventually we had to stop when we had over 120 themes. It was mostly in the Rails ecosystem, but it sort of leaked itself out there over time. Now it’s funny seeing photos of people giving talks at conferences that are not Ruby on Rails, where they might be showing you how to do something, and I’m like oh they’re using Oh My Zsh. That's crazy.
You mention in the blog post and on your website the Oh My Zsh stickers, and it sounds like stickers have been your calling card from the very beginning. You started the mail order sticker business. So did you feel like, I have this popular open source project, of course I need to make a sticker that goes with it?
I was always really interested in creating physical things. Like my dream till this day is, you know, I've always wanted to run a sticker company. There was this guy that I looked up to as a teenager that ran a sticker company and sold them for a dollar each. And I'm like, I want to be that guy. Yeah.
We were always printing stickers for Planet Argon-related things. We like to play around with our logos and cryptographics and people stick them on their laptops and things like that. Then I have my band, and we've got tons of stickers. It's just like stickers galore. We get orders almost every day for stickers or t-shirts. And part of it's more exciting to me than actually running the project to be honest. Just knowing that there are stickers going out to people and people hopefully are sticking them somewhere, I love that.
It sounds like you're very self aware and you know your own strengths and your interests have been very consistent throughout your career. Your personality comes through in your work. It's something that I hope more people in the community grab onto, because I think sometimes people are afraid to embrace themselves in a way in their work and do what makes them happy and what makes them good at their job anyway.
That’s nice, I appreciate the observation. I don't strive for happiness. I strive for being content. What resonates the most about open source for me is the fact that I get to interact with a group of people and collaborate on something. I am not a solo developer. I would never call myself self-taught. All those things that I needed to look up in the early days was relying on other work people shared on the Internet or on some BBS that I was able to download and access. It was all about connecting with people, sharing ideas, building off of those, and then sharing what I'm doing too.
To suggest a maintainer, write to firstname.lastname@example.org.