Welcome to Once a Maintainer, where each week we interview an open source maintainer and tell their story.
This week we’re talking to Jordan Hollinger, Principal Software Engineer at Procore and creator of multiple ruby gems, including occams-record, otr_activerecord, and idlemailer. We talked with Jordan about his inclination to build things for Rubyists “off the rails” and some of the emerging ecosystems, like Elixir. Jordan is based in Kentucky.
Once a Maintainer is written by the team at Infield, an app that helps engineering teams keep their open source dependencies up to date.
How did you get into programming?
I kind of started early, and then stopped for a while, and then started again late. When I was 13 or 14 a family friend knew I was good with computers, and they gave me a copy Visual Basic 5 which even at the time was old. That was my first exposure beyond writing like some simple HTML. I found that very interesting.
I went to college for graphic design, but I realized kind of late that I was not great at it. I saw the people who were great in class, and I was not them. I knew I needed to find what I’m good at, and that turned out to be programming, so I kind of self-taught later in college and then got my first job right after that.
When you say self-taught, the way that people teach themselves now is probably very different than the way that you taught yourself. So how did you teach yourself?
Yeah, it is different. Someone suggested to me I should learn PHP, so I found a PDF online that taught me PHP and MySQL and that was my boot camp I guess. But I just fell in love with it.
My first job was actually at the college I went to. They let students work in their IT department, and I met some people and eventually was offered a job when I graduated. It was a bunch of green screen programming, like stuff from the 80’s. Mostly they had a very old in-house ERP kind of system, it was internal tools used by maybe hundreds of people. They said, “We've been thinking about rewriting something in Rails, would you be interested?” And I quickly signed up for that. It was very small scale stuff back then.
So how did you end up getting into open source coming from that kind of, I imagine, bureaucratic setting?
Yeah, I didn't stay there long. I took another job that was in healthcare and that was a much, much larger scale thing. But I think the first contribution was at that university. It was a bug fix to a part of ActiveRecord that used this database that no one's ever heard of called Informix. I think they're owned by IBM now and it wasn't working quite right. And so I think that was my first open service contribution, just to get that working for, you know, the one institution in the world that could use that feature. But at my next job we started to, as everyone was doing in the mid-late 2000’s, look at microservices and we were also a Ruby shop and the whole Rails stack felt heavy for what we were doing. And so we wanted a way to just run ActiveRecord just straight on top of Rack, just very thin, very low memory and that kind of led to my otr_activerecord gem.
I was going to ask about some of your gems because they seem to have this theme of exactly what you just said, which is I want to write something in Ruby or use something in Ruby without using all of Rails. Where did that desire come from? Was that more like a personal interest of yours or was it more top down?
That's interesting. I hadn't considered that theme, but you're right, that's definitely how it looks. I just want to say that I don't hate Rails at all. I think the otr gem, that was just because we wanted something lighter weight than our giant monolith, but we still wanted to use some familiar tools like ActiveRecord. Some of the other gems were more memory or performance-oriented, which is something not every app hits. Sometimes you're doing things with very large data sets. And Rails and Ruby can handle that, but they just need a little nudge to get there. I guess that's kind of been my goal to keep using these tools but find some little performance tweaks or different ways to use them so I can still use them because I really do love Ruby.
It seems like as an outsider, some of the things you've done may have been incorporated into Rails later, or now are more decoupled from Rails - you can use ActiveRecord without Rails, ActionMailer with or without Rails, and so on. How do you see that shaking out overtime?
Yeah, I know that on paper you can use these components independently. At least back when I was starting, it was possible but not easy. I think when Rails 6 or 7 came out, I was kind of looking ahead to see what they're working on. I found a one line bug they introduced where you could not use ActiveRecord alone anymore just because it used the rails global keyword in it. And I just opened a little issue and said “Hey is this intentional?” And they were like “Nope, sorry.”
How do you think about maintaining these packages once you put them out into the world? Do you consider them complete and you know, here it is, or are you thinking about ongoing maintenance?
I have a couple that are done. I have a couple that I'm embarrassed I ever put out there, and yeah otr_activerecord and occams-record are done until the next feature idea hits or until the next version of Rails hits. I don't have any grand road map for them. It's mostly to be useful to me, and if it's useful to other people that's icing on the cake. And you know I have gotten some interesting feature requests, like occams-record supports cursors now. I hadn't even considered that. Someone said hey, the sequel gem supports cursors. Could you? So yeah, I guess I could. Just hadn't occurred to me.
How should we kind of think about getting more people into open source?
Right. I think the first thing is to not be afraid to push out a library that in five years you'll be embarrassed that you made.
The big challenge is getting involved with a large thing like Rails, and that's a nut I haven't cracked either really, beyond my one meager contribution 12 years ago. There are certain programming language communities that are very encouraging to people who are getting started. I think Ruby was one of those. I think Elixir is another one. The easiest way to get started is to find Elixirs. It's not brand new anymore, but compared to Ruby or Node, there are still packages libraries to be written for languages like that. So that could be an interesting way to get started I think. Find an emerging ecosystem and write some of the packages that haven't been written yet.
What about packages that you’re using today or you just find interesting?
Yeah, one of my favorites is the Ruby gem grape. It's API DSL, so if you're writing a lot of complicated APIs, it's the first tool I reach for, for sure.
What about people-wise? Who do you think is doing something interesting?
There's two: José Valim, who is heralded as the creator of Elixir. Brilliant man. A long time ago he wrote this horrible gem (it was inherited_resources). In his words, it was a complete disaster. It was awful, but like, he wasn't afraid to put that out there. And actually people thought it was good, but it had a lot of hidden costs later on. It was popular for a while and then he realized it was a mistake and then I guess he went and created Elixir to make up for it.
The second is Julia Evans. She's prolific on Twitter and on her website. She just wonders how does DNS work, she figures it out, she makes a cute little zine about it. She does that about everything. It's very enjoyable to read.
To suggest a maintainer, write to hello@infield.ai or find us on Twitter.