- why MIT requires freshman to take their classes pass/fail
- how Christine accidentally avoided interviewing for her first jobs
- why and how you can start contributing to open source software today!
For the full text transcript see below the fold:
Max: Welcome all! Today we have the pleasure of Christine Spang joining us. Christine is CTO and co-founder of Nylas, a tech company that provides APIs for email, calendar, and contact data. We’re in SoMa, San Francisco at the moment.
As we’ve done previously, we’ll be talking about how Christine got into coding, into programming, what her first experiences were, the trials and tribulations that you deal with on a regular basis doing engineering and managing an engineering team.
For the audience that doesn’t know you, do you mind introducing how you got into programming?
Christine: It was only when I got to high school that a bunch of things happened that helped me refine my idea of what I wanted to get into.
I went to a pretty typical American public school. That school didn’t have any computing classes at all. I think, you could take a keyboarding class if you wanted to. But that was learning to touch-type, where they would put the box over the keyboard so you couldn’t see the keys.
But we didn’t have any “computer” classes, so there was no way for me to get involved in software computing at school. My hobby in my spare time ended up being playing around a lot on my parent’s computer.
This was back in the days where computers were still these desktop towers from CompUSA or whatever–I don’t think Best Buy existed yet.
I’d spend so much time on my parent’s computer in my basement playing games. Eventually they got really annoyed and got me my own computer and put it in my room.
But, you know, I was a teenager! I didn’t have any money. So I tried to download games online and just find whatever free stuff I could. I really tried to find games that were very unstructured. That included the original Warcraft game and then StarCraft and Age of Empires.
I kept trying to push the boundaries of wanting less structure to just explore and not have as many rules, which eventually led me to playing RPGs. First, graphical RPGs which had a story and were more constrained.
Then I discovered these things called MUDs or multi-user dungeons or domains, which were these text-based worlds that you could explore and, you know, it would say: “You’re in a dungeon. On your left is this thing.” And you could go from room to room. Some of these games got pretty complex. There’s a small subset of really, really dedicated people who are really into these games.
So I started playing one of these games that was Lord of the Rings themed because I was really into it in high school.
After maybe a year of playing it, the people that actually had to build and run the game reached out to me. So I started helping run the game!
But one thing that you couldn’t do if you were just an administrator was change the actual mechanics of how the game worked. In order to do that you had to learn to program in order to be able to make modifications for the game itself.
Because I was working on this game, I decided that I wanted to learn to program.
And, of course, the game was written in C–just the worst possible language you could try to learn as your first language.
So I started trying to learn C in order to be able to work on this game. And the game would only run on Linux and I had a Windows PC at the time because everything came pre-installed Windows. I remember my brother having a CD, or maybe three CDs or something like that, which had Debian.
So my brother helped me install Linux on my Windows PC–so I got Linux up and running and I started learning C.
There’s this famous book about the C program language called the “K&R” C book. And it’s pretty straightforward up until you get to the chapter about pointers. I have this vivid memory of rereading the chapter about pointers three times, trying to understand what the hell a pointer was.
I would say that I was not that successful at learning C. I got okay at it but I never made any huge changes to this game. I have this habit or pattern of following curiosity to the extreme where, if I start doing something and I’m really into it, I’ll eventually end up in charge of it.
I started playing the game and then a year later I was “running the game,” and had installed Debian and I was…I got curious how…where’s this thing come from? Like, wait–what? It’s built by volunteers? From where? Everywhere?
So I started reading this blog aggregator that aggregated the blogs of all of these contributors to Debian Linux. Through that, I saw this blog post by a person named Hanna Wallach. And she wrote a blog post advertising this new group that she and another person had formed called Debian Women, which was (is) a group to try to get more women involved in helping make Debian. When I saw that, I was like, “Oh, that’s cool. They’re trying to get people like me involved!”
It was a pretty powerful call to action. So I joined their IRC channel and started working on random Debian packaging.
Max: This was in junior, senior year of high school?
Christine: Yeah. I think I would have been a junior at that point.
Max: So while other people were maybe using AOL Instant Messenger, you’re in IRC channels chatting about open-source operating systems?
Christine: I did have an AOL screen name, but I don’t remember that much about it. I remember more about IRC.
Max: Not a whole lot of open-source development happening on AOL Instant Messenger :)
Christine: I was just really proud that I, for a while, had the username Christine on FreeNode.
Which just goes to prove how few women there were on this IRC network. This is 2005 and no one’s picked my first name.
Max: So you got some programming and open-source contribution experience that you developed before going on to college.
Once in college–you told me an interesting story about your first internship. I think people would love to hear about what your first professional “getting paid to code” experience was.
Christine: The major reason that I wanted to go to MIT as my first choice school was because I had learned about free and open-source software through working on Debian. I probably wouldn’t even have applied if I hadn’t gotten cheer-leaded by Hanna who was like, “You can do it.”
So I ended up going to MIT and I never really…I never applied to a job until I was after college because of my connections from Debian, actually.
Max: That’s amazing.
Christine: Which is super cool, especially since I wouldn’t say I was really confident as a programmer or even a person at the time.
You know, I was like 17-years old and just starting at college and…a lot of change going on right there and you’re living on your own for the first time. But it was really cool that someone had heard of me by reputation just because I was involved in Debian, which I guess makes you stand out amongst a sea of incoming freshmen.
Like, “Oh, you know, she worked on a Linux project.” So someone had heard of me through the grapevine and came and offered me a job at their company, which was this company called Best Practical which was based in Somerville, MA which is this town right up the road from MIT.
This company was…it was definitely a non-traditional company. It was maybe 10 people, but only 5 of them were in the Boston-Cambridge area. The rest of them were all over the world–I feel like the first people that proved that you could have really effective remote collaboration were open-source communities.
Christine: That blew my mind in high school, that…a thousand volunteers from everywhere somehow managed to release a working operating system every two years.
It turns out that some of those people made companies that build software as well in a very different manner from a more monolithic company like Microsoft or whatever. I never even considered going and applying to the big software companies because I had a bit of a bad opinion of them because I don’t feel like they were really making the world a better place.
Max: You were effectively indoctrinated by the open-source community :)
Christine: I met all these interesting people, and, you know, I was convinced that free and open-source software were superior. It was really cool that I got a job through this.
It’s also cool that the job was very flexible about location. I spent two summers working for them and both summers I actually spent living in Europe which I definitely wouldn’t have been able to do without that.
Max: So their offices were in Somerville but as a summer intern they let you work from Europe?
Christine: Yeah, I felt pretty lucky.
Max: I think our audience should take note of the other upsides to being an active member of open-source communities, that you get to work for or with companies that have this type of attitude about working environment and not caring about “butts-in-seats” type of output.
Christine: People who have been involved in these kinds of communities don’t even think twice about the fact that it’s possible to collaborate in this manner.
Companies like Wordpress.com, they’re distributed all over the world. I have worked at a bunch of different companies at this point and started a company–I have experience with different modes of collaboration and I think there is a time and place for all being in the same place at the same time. But there’s also plenty of companies that it doesn’t really matter.
Max: So after graduating MIT as an undergrad, you started a Master’s program in Computer Science, is that right? I know your story has taken you down a number of start-ups since then.
Christine: Yeah. So at MIT, they have this thing called the “MEng” program or Masters of Engineering which you can only do if you were an MIT undergrad. It’s typically a year or a year-and-a-half of an add-on Master’s degree to your undergrad.
The only things you need to qualify for it are a minimum GPA of whatever and then you have to find an adviser in a thesis project. When I was just starting at MIT, my grades were not very good but they got better over time because the classes became more interesting and there were more things that I was really excited about. In the beginning it’s a lot of core curriculum, basic physics, math, differential equations, all that stuff. But by my junior or senior year I was taking stuff like Gerry Sussman’s crazy scheme class.
Max: A couple things that you’ve told me about MIT that I found really interesting–things I had not known previously–one, which was, as a freshman your classes are pass-fail which can be a good thing or a bad thing depending on how you look at it.
Christine: It’s actually pass/no-record which means they wipe it from your record if you fail.
Max: Even better.
Christine: Which is kind of good because it’s a little bit shocking to people when they get to MIT because every one of these people was in the top 1% of their high school. Then they all get thrown together in the same room and the classes are way harder. So there’s an adjustment period and I think that’s a good thing.
Max: Did you pass all your classes in your freshman year?
Max: This is helpful for people I know!
Christine: I definitely…I’m trying to remember which class I failed in my first semester. I can’t remember. But in my second semester I failed differential equations and I almost failed freshman physics. Part of that was the adjustment and part of that was also the upperclassman in my dorm would joke around and be like, “Oh, you’re on pass/no-record. You guys don’t need to study,” which is really bad advice.
It turns out, you do need to study. And there’s lots of tempting distractions when you’re living on your own for the first time.
Also, MIT’s tradition of people going and exploring on top of buildings and playing pranks, which involves staying up really late at night. So I wasn’t necessarily getting a lot of sleep all the time. It turns out that sleep is very necessary for doing well in school!
I figured this out by mid-sophomore year and kind of got my shit together. It was definitely a pretty rough transition–I failed one class a semester for three semesters but managed to keep it just above the line where they start getting mad at you for it. And luckily it didn’t affect my graduation, grades or anything like that.
Max: The second thing that you told me about MIT that I hadn’t known about before was how the graduate classes are easier than the undergrad classes, in some ways.
Christine: Definitely amongst the undergrad population, at least in EECS, people have the general sentiment that the graduate classes are easier than the undergraduate classes.
I had a few things going for me as time went on. One, you got through all the really boring core curriculum and start taking more CS classes.
That was what I was really interested in. And also, junior and senior year, I started being able to take grad classes I was interested in.
My favorite class in all of MIT was the operating systems class. Every week you would do these labs which were in C. So I had a head start, but you would effectively be building little parts of an actual, very minimal operating system, which is really interesting and super satisfying.
I had a ton of fun in that class and that is what led me to almost become a operating systems grad student. Instead, I dropped out of the grad program and worked for my friend’s operating systems/Linux start-up.
Max: I realize I’m jumping a large portion of the timeline here, but I’m curious about…is whether you use Debian today?
Christine: Yup, I do.
Max: Is it used here at Nylas? Do you guys use it on your servers?
Christine: We do. I keep telling people that if they wanna switch to Ubuntu, it’s totally okay with me, but they haven’t. We’re in the midst of upgrading all of our servers from the version of Debian that was current when we launched to the now current version, which is two major versions. I’m like, “I don’t care what it is. You can use the latest version of Debian. You can use the latest version of Ubuntu. I just really don’t want you to use Red Hat,” because I think that’d be a big learning curve for a lot of people here.
I don’t know if they’re just passing deference or they actually don’t care, but they’re sticking to using Debian. I’m also one of only two people in the office who runs Linux on their laptop.
Max: Speaking of learning curves, I think of open-source development as a kind of a pool. When you say, “Contributing to Debian in high school,” I think of jumping in the deep end of the pool. Although, I guess, you could say you walked in–you waded into the pool by getting into it initially through the motivation of contributing back to the MUD games that you were playing at the time.
For people getting into it in 2017, which is a good decade later, how can people wade into the pool like you did? In terms of finding initial open-source projects that they can get their toes into?
Christine: That’s a good question. I used to have a really good answer to this and it was this organization called OpenHatch. I don’t know if they’re active these days.
Max: They’re Boston-based. Is that right?
Christine: Yeah, OpenHatch.org. I’m not sure of the activity of the project right now, but the whole point of the project was to find bite-sized things for new contributors to get involved in existing open-source projects.
I would say there’s lots of open-source software out there and the best thing is find a project that you use and go find their website–like their source code repo. They probably have some sort of chat room and just kind of, like, show up.
There was this big Renaissance in the last 10 years of organizations and software communities getting much better about writing down the unsaid tribal knowledge for contributing, which I think has made a big difference. Obviously it’s unevenly distributed but I think things are in a lot better place than they were 10 years ago.
Max: For sure. Something you just said just made my eyebrows raise: it was “just kinda show up.” I think that’s totally… A) that’s totally true, but B) it might be helpful for us to explicitly draw the line for our audience about how contributing and learning how to contribute to open-source projects meant that you didn’t have to search for a job.
Selfish reasons aside about career growth, contributing to open-source is a really great career move, in general.
Christine: Also, one thing I’ve learned over the last decade is that the amount of free time you have is monotonically decreasing as you get older.
So the best time to contribute to open-source is high school, college, early career–because responsibilities later on don’t allow you so much time.
Max: Certainly. Since we were both in high school around the era you first picked up a C book, the market share of server-side applications has just swung so much from Microsoft to Linux. It’s overwhelming.
Christine: I feel like I hit a wave in a very lucky way. We’ll see what the next 10 years brings.
Max: Speaking of the next 10 years, I think a large portion of our audience aren’t familiar with Nylas’ product–although they might be using applications and software that are backed by your guys’ product.
Your guys’ product is not unique in that you guys are open-source, but you guys are kind of unique in which open-source license you guys use to license the software that Nylas built.
For people who aren’t familiar with what exactly Nylas does or how your guys’ license has an effect on your business model, do you mind sharing for the layperson what exactly it is that Nylas does?
Christine: Yeah, for sure. The main product that Nylas has is a really nice, modern REST API that allows developers to build features into their applications that integrate with email and contacts and calendar. There’s different ways that you can explain this.
Some folks may have of things like the Gmail API. You can kind of think of Nylas as being the Gmail API but for every email provider–the same consistent API across all email providers. One thing that is tricky when building email features into a professional product is that there’s a lot of heterogeneity in the email ecosystem.
There’s the Gmail ecosystem and then there’s the Microsoft ecosystem and there’s also this long tail of hodgepodge IMAP servers.
Making products that are compatible with all of those is really tricky. The whole reason for Nylas existing is to make that a lot easier, especially since email has been around for longer than the web. So it’s 40+ years at this point and there has been different new features that have been added over time that have layered on complexity.
Nylas is a fresh take in that we abstract over all of that complexity and make it so that developers can just work with the sort of modern APIs that they’re used to when they’re learning to program these days.
Max: So for any of our audience members that are raging at their phone’s email app, whether iPhone or Android or checking their emails on their laptop or whatever–Nylas provides the service for building email apps that can be used by any customer, irrespective of whether they use Gmail or Yahoo or Hotmail. That’s it, right?
Christine: Yeah. A lot of our customers are building in-line email features into some app that is a database for their customers. They wanna have this really seamless experience where people are not juggling between an email app where they’re sending emails and then having a copy-paste or link them to kind of these databases. A lot of these databases are storing metadata on people or organizations and they wanna link to the communication that’s happening.
So Nylas allows that to happen really easily. But you were asking about licensing.
Christine: I think one thing that’s unique about how we went about launching the company was that we actually launched an open-source repo before we even launched our product.
That was in summer of 2014. The first press we ever got was GitHub, switching the private bit to public on our main source code repo which was all the code we had written till that time, which is really scary, actually. We were kind of terrified to do it because…I think there’s a little bit of ego thing in there where you’re worried that someone will criticize your code and stuff like that but…
Max: But nobody did?
Christine: Literally nothing happened. It turns out that if you build it no one will turn up unless you then spent a lot of time telling them about having built it.
So we flipped the bit in January and for six months no one ever saw it–because it was one of millions of repos on GitHub.
Then in the summer, we did a press release about what we were building, with trying to push email forward and from there launched the first actual version of the API product in the fall. The first thing we released was actually our source code. And at that time, it was all of our source code. We were just directly committing to that repo, every day.
So there’s a few things that you have to think about when thinking about licensing.
There are two different categories of source code licenses and one is called “permissive” licenses. Permissive license means I release source code–you can take it, modify it, keep your copy of it private even if you’ve made changes to it. You can do whatever you want pretty much.
Then the other category is a family of licenses that are typically derivatives of this thing called the “general public license” which was created by the Free Software Foundation. The key piece of this license is that if you take software licensed under the GPL or its derivatives and you make changes to it and you let someone use software that is based on this changed version, you then have to release those changes to your users.
Companies like the permissive license a lot more for some pretty obvious reasons in that they don’t wanna have to release their changes back because it restricts their options for how they can structure their own kind of licensing and how they build software.
Max: And it makes them less attractive software to resell. So this is a very key portion to why somebody can’t come along and take Nylas’ AGPL-licensed code?
Christine: Right. So we specifically chose the more restrictive licensing because, as a company, it grants us more protections if, for example, someone wanted to use our product or our code and make changes to it and not release those, we could still grant them a commercial license to the code because we own the copyright on it. It also deters people from wholesale stealing our code and trying to replicate the service because whatever changes they made to that code they would also have to release.
My roots are as a total free software hippie and I feel like over the last 10 years, through working at one start-up that was doing open-source things and starting a company that has contributed a lot to open-source and also used a lot of open-source, I’ve learned a lot about the fine line you have to walk just because of the way the world is structured.
It’s pretty hard to build a true open-source business unless you’re selling pure services which is a harder business to build, because you can ship software to a million people for not that much more work than you would ship it to a thousand people.
If you wanna scale a consulting and services business then you essentially have to train your workforce linearly for the number of customers you have. If you’re building a business as a software company, you really need to think hard about what kind of company you wanna be.
Unfortunately, it is the case that if you release all of your code and you give it a permissive license, if you’ve built something really valuable then someone will rip it off. So we have this AGPL version of our Sync Engine and API. But we did eventually start building proprietary parts to the service which is another thing that is all part of this balance of “how do you build a sustainable business.” I’m not 100% happy with it, but I feel like it’s a compromise due to the way the world works.
So we have some proprietary pieces as well as the open-source code at this point.
Max: For our audience that might be job seekers or might be potential Nylas customers, I figure we should take a little bit of time to plug any roles you guys are hiring for or just getting your guys’ message out there as an employer or as a salesperson.
Christine: For sure. We are hiring for a bunch of different roles right now, actually. We’re hiring for generalist, full-stack software engineers to join the team, not people that are straight out of school but people with a couple years of experience. We’re also looking for someone to do “developer success” here. That’s helping people use our APIs and build the things that they’re trying to build. We’re also looking for someone with some experience with distributed systems for security because we are growing the product pretty rapidly and scaling is always challenging–it’s really important to us to keep people’s data secure. So it’s important for us to keep investing in those areas.
Max: For the people in our audience who might not be eligible candidates for some of the roles that you just mentioned, I know you guys contribute back to and support various open-source libraries that you yourself use.
If you guys are curious about getting your toes in the water with open-source contributions, you should check out Nylas’ organization GitHub page and check out some of the open-source libraries they’ve got on there.
Christine: We haven’t been super great about integrating with an external community in terms of contributing because it’s really difficult to set up an open-source project in a way that’s giving people outside the company everything they need to be a good contributor. But it’s a great example of a production-level code base that’s written in Python.
Part of becoming a really good engineer is reading as much code as you write, hopefully reading more code than you write! So I definitely recommend checking out our codebase and try to run it yourself. We also have built some Python performance instrumentation tools which we have a blog post about.
We have a few more interesting blog posts about how we’ve scaled our database which should be a good thing for folks interested in production systems.
Max: Agreed. We’ll absolutely link those in the video notes and on the transcript. But, otherwise, this has been tremendous! Thanks for joining us, Spang.
Christine: For sure.
Max: We’ll talk again very soon.
Christine: Appreciate the invitation.