Once a Maintainer: Stephen Ierodiaconou
An electrical engineer who came to open source for the community
Welcome to Once a Maintainer, where each week we interview an open source maintainer and tell their story.
This week we’re talking to Stephen Ierodiaconou, a freelance Ruby and JavaScript developer who has created several recent Ruby gems like vident and typed_operation.
Once a Maintainer is written by the team at Infield, a platform for managing open source dependency upgrades.
How did you get into programming?
I started out interested in electronics. I was building small circuits and stuff like that. At some point, me and some friends, we started going to the IT department computers, which back then were either DOS or Windows 95 and basically started messing around in QBasic. I mean initially we're just like building stuff with you know print
and choose your own adventure text-based games, right? But then we started getting some PC list magazines with listings at the back, copying those and it got us more interested in micro controllers and programming them so one thing sort of led to another.
By the time I was in my late teens, I got more into software, and I progressed through VisualBasic, a bit of C and C++. And of course I wanted to build a game. That kind of got me hooked and I got quite interested in the mix of hardware and software, CPU design and stuff like that. I even designed a tiny 4 bit CPU which was a bit rubbish, but it was interesting.
Was this an interest of your parents, or do you know where this interest came from at such an early age?
When I was in my early teens I was given one of those little science kits for kids. And to be honest, it's very simple. You just throw some wires together on some circuits that are already there. But the experience of actually seeing something working, it's magical. And then the combination with software was that it suddenly became so much more malleable, right? Because you build your circuit, that's fine. I see that there's a timer, it makes an LED flash fine, but there's not much more you can do with it until you start building another circuit. But with software, suddenly you can completely change what you were doing. And that means that the experience becomes so much more engaging.
When I went to university I decided to study electrical engineering because I still was really interested in electronics and I wanted to kind of stay in that realm. I elected to do a lot of the units that were sort of computer architecture, VLSI, microelectronics and that sort of thing. And then I went into academia and studied signal processing. But I never formally studied computer science.
Did you have any friends locally or community locally that you were talking through those problems with? Or were you using the Internet to share with anyone?
No, initially it was just me in a bubble. Well, I had one friend in school who was interested in the same stuff making little games and things. But I think actually the first thing that pushed me into open source was the fact that I didn't really have anybody else to work with on things, and I wanted to. I discovered that you could just go on SourceForge or the other alternative at the time and find like a million projects. And that really inspired me into actually taking those steps because I needed to have somebody else to learn off, right? I was essentially teaching myself through some books and the Internet.
Do you remember any open source projects at the time that you learned from?
One of the first projects where I saw a contribution opportunity and became part of the community was a project called Stendhal, it's a game written in Java. At the time, I didn't know any Java, so I didn't really know how I could contribute with code, but I joined the IRC channel. I just sort of chatted to people and eventually I realized that, you know, I could help with drawing up maps for the game world. I could triage tickets. So I was helping triage bug tickets and stuff on SourceForge, write documentation, proofread stuff, whatever. And I realized there were a lot of different ways that I could help out that wasn’t writing code. In fact, I don't think I ever wrote code for that project. But it was fun and I felt like part of the group and made friends.
It sounds like open source and the open source community was really part of your journey to being a professional software developer, where a lot of people come at it from the other direction. They go into some company, and maybe a mentor or someone at the company says, hey, we use open source, and they start contributing. And your story is instead this very organic kind of thing where open source has just been part of your blood for a very long time. So that's really interesting.
That was definitely part of it, looking for a community of people as well as working on problems I found interesting. I did go off the open source radar for a long time after I got a real job, which is not uncommon. My first full time job after academia was in startups and it was really startup style working late nights and everything. And with a long stint of years without contributing it really knocks you out of the space. If you have no cadence at all, if you don't try to at least do something every now and then, it feels like it's going to be way too hard to get back into it again. And that's what happened to me.
Really last year kicked it off again for me. I really like reading other people’s code and investigating issues and things like that. And being a freelancer, which I’ve been for a while now, I thought it would also be a great way to show off your work. It’s sort of like an online CV. As Hacktoberfest was coming up I saw a tweet or something where Richard Schneeman talked about his new book which is called How to Open Source. And I just thought, well, sounds perfect, I'll just get that. And it turned out to be great. It really helped me get back into it.
He has this framework to apply that he calls COIL. And I really took it word for word and applied it to a few projects during Hacktoberfest, to find an opportunity to contribute, to actually do the contribution, to get it merged. And that got the ball rolling for me again. I had a goal in my head as well, which was to try and get a contribution into Ruby the programming language itself, which I managed to do by the end of that year. So anyway, big thanks for Richard for his book.
I was going to ask, where does Ruby come into this? Because it didn't sound like you were programming in Ruby, you know, 10 years ago.
Yeah no, fair enough. My entry into the Ruby world came just because I got a job where they were built on Ruby. I’d never really seen or used Ruby or Rails before. And I think in the beginning it was a little bit of a love/hate relationship. My previous job was working with JavaScript and the server side, so it was kind of like jumping into a different realm.
When I went back to freelancing after that job, I actually went back to JavaScript and I worked for a while doing TypeScript. But then a project came up that was Ruby again and I took it and I don't know what happened it clicked for me this time, something I can’t quite put my finger on. I guess in a way Ruby as a programming language is designed with this in mind, right? It's to try and make you as a developer feel something about it that is nice to work with, productive, and makes you feel happy, right? Since then I've only been writing Ruby basically. I like the community as well. And I thought, you know, why don't I just dedicate myself to this only from now on?
How do you think about the community for your own gems that you put out there?
Well to be honest my projects don’t have contributions from the community, they're just very small projects that I've released myself in the last year. But I would love to get more people involved simply because it’s fun to bounce ideas off of other people and talk about problems.
One thing I’ve found about making your own gems is that you can take an application that you’ve already written, take a piece of the code, and make a gem out of it. Essentially you've already built something, you've already got code there, and as long as of course in my case I get permission from the client or whatever, but extracting a piece of code from an existing application and turning it into a gem is very easy because it's already written. That’s what I did. I sort of just threw them out into the wild. And once you do that you get inspired to improve it, partly because there’s this imposter syndrome which comes when you put something on the Internet and you know people can read it.
Who are some other people in the community you think are doing really interesting work?
One of the things I’ve enjoyed recently is Joel Drapper, the maintainer of Phlex, he’s been working on some gems that he’s experimenting with all the time, trying out new things and iterating on them. He’s got a Discord and it’s nice to chat with other people on it.
Also Maxime Chevalier-Boisvert and the whole YJIT team is doing some really amazing stuff. I think what they're doing is really cool because they're actually technically implementing a complex system inside Ruby, improving Ruby for the whole of the community.
The other project I’ve been interested in recently is Marco Roth’s TypeFusion project, which is basically sort of runtime type analysis. Or rather just gathering types at runtime from a running application about say a particular gem or piece of code and then pushing it up to gem.sh such that you're gathering statistics about the types that are being used in a particular gem. And from there you could, you know, generate RBS files, which I think is really interesting because one of the big problems of adoption for something like RBS is obviously having to write the RBS in the first place. So I think it's a really cool idea.
To suggest a maintainer, write to Allison at allison@infield.ai.
If you’re interested in learning more about how Infield can help your team keep its open source dependencies up to date, write to hello@infield.ai.