Origins.fm: Developer Origins

In this episode, I sit down and chat with Sabine, the community-proclaimed Queen of OCaml. We trace her journey through academia, a sewing SaaS, and finally to her current work with OCaml.

You can find Sabine on the internet here:
- X (Twitter)
- Twitch
- GitHub

What is Origins.fm: Developer Origins?

A podcast that explores the inspiring origin stories of developers from across the community. Tune in for insightful interviews that dive into the journeys, challenges, and successes that shaped their careers.

[00:00:00]

Sam Huckaby: Thanks for coming on and talking to me.

Sabine: Well, thanks for having me

Sam Huckaby: Yeah, it's always great to someone that you've like interacted with a bunch, but never gotten to like talk to face to face. So this is

Sabine: same, same, uh, I've seen your tweets and, uh, especially around, um, around building web framework, you know, camel, maybe,

Sam Huckaby: Oh yeah.

Sabine: and these things that it's, uh, such interesting projects, such so much potential.

Sam Huckaby: Yeah. Hopefully. We'll see. Uh, Teej is actually working on a bunch of stuff around building web framework stuff with OCaml right now. I'm excited to see where he

Sabine: Yeah. I think this is awesome. Um, so following TJ's. It's like a very good idea because he's good and he, he builds stuff that is really useful. So I'm looking forward to try, try what he builds.

Sam Huckaby: All right, so for of my get go question uh, how old were you, or where was sort of the [00:01:00] first place that you interacted with computer programming?

Sabine: Um, pretty much around when I was seven years old in first grade, um, but not through school. So it went something like that. I got into school. I told my mom on the first day, mom, I'm so bored. School is awful. Why do I not learn anything? And off she went and, um, got me enrolled in like extracurricular activities.

And, um, so we got a, we got a 286 computer from my dad's work for free because they were like, uh, decommissioning them and he got one of those. Um, so I had a computer really early that I could actually use and try things on. And I remember doing a. A class in QBasic, uh, for kids, like [00:02:00] kids programming class in QBasic, which was very fun.

Like they were making us build a, like a, a musical keyboard in QBasic. So where you could press keys on the actual computer keyboard and it would make sounds and you could record and play back something. I didn't understand that. So, I mean, I understood parts of it. Um, considering I was, I was pretty much just a kid.

Um, I understood how to make the sounds. I understood how to draw things on the screen. So after that class, it was all about making noises and drawing, uh, drawing characters on the screen and clearing the screen and making little kinds of. Um, videos out of that where, um, where you would have these frames that draw another frame, make a bit of sound, draw another frame.

Um, yeah, that was fun. That was, [00:03:00] um, yeah, and we had computer games, so computer games, uh, kept the computer interesting for very, very long.

Sam Huckaby: yeah. Did you ever attempt to like make any games

yourself, Oh, yes, totally. I made so many attempts and failed so many times because I did not have the ambulance to push through or finish anything. I think there's one thing I finished, but it's actually a very sucky game, so from a gameplay perspective, it was so, so bad. Just really bad. But I finished that one.

Sabine: Yeah, but the gameplay was so bad. I think it's really embarrassingly bad.

Sam Huckaby: I mean, finishing one game is still more games than

Sabine: No,

Sam Huckaby: So,

Sabine: it was just, if you can't even call it a game.

Sam Huckaby: mean, you called it a

Sabine: Yeah, as a kid, I would have called it a game. Yes.

Sam Huckaby: Okay. So you said that you got your first computer because your dad's work decommissioned one, so you kind of got one that way. Did either or [00:04:00] both of your parents, like, do stuff with computers then, or was it just your dad?

Sabine: Um, my mom has studied physics and she, she knew computers from there. So that was the time where if you used a computer and in a research lab, you would like wait. A lot of time. So you would bring your knitting needles and then you would knit while you waited for the computer to, to become responsive again.

Uh, but to a six is obviously so, so much faster than what she, she used. And so, yeah, we were a computer household basically. Uh, none of my parents worked in the, in the it industry. Um, so my dad was in, uh, energy in the energy sector doing, uh, uh, Yeah, working for public energy infrastructure companies. Uh, and they happen to have these computers to, to just decommission at some point.

There was an IBM computer even.

Sam Huckaby: so you said it's, you kind [00:05:00] of would say your mom was the one who sort of pushed you to learn more about computers

then. Your dad kind of

got the computer before no, no, no, not really. So my dad knew a lot about this stuff. So he's just very interested as a, in a hobbyist way. It's been very interested in a hobbyist way. So he always like got the new programs for the computer, but my mom was always very supportive in bringing us to possible, uh, activities. Um, which also involved computers, not, not only computers, but without my mom driving places and bringing me there, I would have been exposed so much less, um, since that's been before the internet.

the

internet.

Sabine: Yes. Yeah. I mean, I mean, just for, for the audience, I think a large part of the audience can't imagine the time before the internet.

Sam Huckaby: No, for real.

Sabine: Uh, so, so yes, before the internet, you, you couldn't just open the browser and get all the information. You kind of [00:06:00] had to have either books or people who would tell you.

Sam Huckaby: Yeah, Literally. man, those were the days. Those books were so good back then.

Sabine: Yeah. I had a wonderful book about C 10 centimeters thick and I carried it everywhere.

Sam Huckaby: Yeah, I'm

Sabine: At some

point,

Sam Huckaby: trying to remember. I

had, I had,

Sabine: not when I was seven.

Sam Huckaby: I had one that I really liked too.

Sabine: Which one did you like?

Sam Huckaby: Yeah, maybe Hot 7. can't for the life of me, I just remember. name started with like an L or an S. It was a bright yellow C book, and it was really thick. Anyway, so, get your first computer, you're learning programming, doing some QBasic, you've made some attempts at video games. Do any programming before like university or and do you do you do like a traditional computer science

Sabine: I actually did a traditional computer science degree, but obviously a lot of this experimenting I did before. Um, so I had tried [00:07:00] C uh, Turbo Pascal, QBasic, uh, um, and a bunch of others as well. Having trouble just remembering Delphi, Delphi and Visual Basic.

Sam Huckaby: It's always visual

basic.

Sabine: Yeah. Yeah. But for, for me with windows, it was mostly a C plus plus. So visual C plus plus, and then making these little forms and, um, making a library, like in your DLL to, um, to put the assets for my games that I never finished. So I started so many, but I never finished.

Sam Huckaby: So tell me more about your experience doing a computer science degree. Like what were, what would you say was like the highs and lows of getting a computer science

Sabine: Well, I very much remember like the, the first, first time I sat there in the lecture hall and they were just giving this kind of introductory speech and saying like, Oh, wait, you [00:08:00] guys, there's like 200 of you sitting here. And, uh, after the end of this, this year, there will only be half of you left, uh, just based on the statistics that they had there, um, after, um, after the first, first two semesters.

Uh, like 50 percent of the people would drop out, um, might have something to do with the university having relatively high standards, I guess, or, or people, um, facing something they didn't expect. Uh, either way, they started out with standard ML as, as a programming 101 class, basically. So putting people through a functional language just right away from the start.

And I hadn't used one of those, not ever. Um, which was good because it meant that, um, I had to learn something and, and I, I, I went to school hoping I would learn something. [00:09:00] So, uh, going to university and actually being put to, to the test of learning something that I did not know or try before. That was awesome.

Sam Huckaby: How would you say that you approached learning a language prior to university? Like, when you started doing C for the first time, was it just all books?

Sabine: Open the book and try things, mostly try things with QBasic. I mean, I had the QBasic experience and I did not have a QBasic book, but it just happens that QBasic had an IDE that had documentation built in. So you could, uh, for every keyword of the language, you had a little documentation entry with an example, how to use it.

So it was all about. Putting in the example, modifying the example, trying it out. And I didn't know English very well. So whenever QBasic said syntax error, I was like, Oh, I don't know what this is, but okay, it's probably the error, the kind of stupid error you will make on Sundays when you're like tired and sleepy.

So, [00:10:00] so because I just didn't understand, I, my English was very, very, very bad. Um, so I just tried things and sometimes. When you're lucky, someone else would show you something. And then from there you would just go and try more things. the surface of the language through, through the docs. And docs were not something that was widely available, really.

Sam Huckaby: so I grew up only speaking English,

Sabine: Yeah.

Sam Huckaby: that's always never, that's never been a thing for me. What was it like? Is there there a lot of resources available in German at the time or was it

Sabine: Oh, there was books. Yeah. There was plenty, plenty enough books. Um, so there was, there were always translations of books or, yeah. Or even books written directly in German, so there was not a shortage of that, but, but the programs, um, didn't always come in German. So you had to use the English version of the program because you just had the English version, for example, [00:11:00] or because it was not, not internationalized.

Sam Huckaby: Gotcha. So then would you say when you get to university that it's maybe easier to learn languages in university than on your own?

Sabine: Uh, Probably, I mean, yes, in a way. Yes, because it's all so much more optimized, uh, in, in a way of showing you basic building blocks first, and then showing you how to build bigger things with that, and also just going in a more principled fashion. learning, learning more from the abstraction side instead of just throwing mud at the wall to see what sticks.

So it's, uh, it's definitely, uh, not, not a bad thing to do, um, to do university in that regard, unless you have already had the opportunity to learn a lot with good resources online nowadays. So all nowadays, I don't know if, if there's a big need, but back then university was really, really nice. The internet existed

at that point, [00:12:00] but, um, there wasn't always content for everything, especially not videos and not a lot of great blog posts.

So

Sam Huckaby: still pretty young. People don't realize that. I think that, and I've heard a lot of people that I've interviewed have told me that they use YouTube for

learning yes, awesome.

that was never my experience.

Like I'd never used YouTube for There's awesome stuff on YouTube nowadays. Like there's awesome, awesome, like video, video, well not blogs, but it's like video, video courses. There's awesome video courses on YouTube, often even, even for free. And, um, there's, there's just great stuff out there and people make so, uh, such a big effort to create good content, like life coding content or coding and explaining and, uh, and showing things, how, showing how to do things.

Sabine: Uh, it's pretty, pretty great. So I, I like YouTube a lot. Like, and I like the people who put stuff on there.

Sam Huckaby: [00:13:00] Okay. So you're going through your , university degree, what are sort of like the core languages? Did it stay pretty much standard

Sabine: No, no, no, no. It was just this one lecture, just this one lecture doing standard ML. And then we had Java and we had C and we had Python. Um, so yeah, the, the usual suspects. Uh, I think these are still kind of the usual suspects in a way. So especially Java and Python. Um, Oh yeah, we did, we did cool stuff. We did fun stuff like, uh, having a lecture on computer graphics, doing a ray tracer in C That was a lot of fun.

Um, it's, it's the kind of thing that nowadays you would just do as a side project and you would go on something like FreeCodeCamp or, or other sites that would walk you through such a project. But back then, um, university was, was a good source for this content because the internet just didn't have so much to offer.

Sam Huckaby: Yeah. What would you say was the most memorable? Project you worked on

Sabine: [00:14:00] Most memorable project? Uh, I don't know. Um, But there's one project that was very memorable to me because I was usually a person who never cheats. And, and there's one thing where I, um, I said like, oh, well, Java, I have really huge prejudices against Java for some reason. I don't know why, but I had so many prejudices, so much prejudice against Java that I, that I decided, wait, no, I'm not going to do the Java project, but it's a group project anyway.

So the other guys did, uh, did the code and, um, everyone did in the end, the test explaining the code, we all passed. Um, so, so that was memorable in a way, because I usually just like, more the person who obeys every rule to a tee.

So,

Sam Huckaby: but this time

Sabine: but this time, this time now, apparently I had had very strong convictions there. Um, I don't have those anymore. Um, but, but past me [00:15:00] is, is, has been funny in some ways.

Sam Huckaby: That's awesome. All right. So you finished with your degree. I'm assuming, do you just do undergraduate, just a bachelor's, or did you

Sabine: Uh, no, no, I, I did a, did a bachelor's, a master's, uh, and then a PhD. Um,

Sam Huckaby: Okay.

Sabine: so the way that happened was, um, When I entered university, I did not have, have a degree that would permit me to, to go to university. So, uh, I actually just snuck, snuck into universities through, through a program for, uh, high school students or not German.

It's not high school. It's like, um, it can't translate this. It's like secondary school students who, um, who already, um, want to study a bit because they are so good. I was not a secondary school student. I was a dropout. Um, but, [00:16:00] uh, but I managed to get into that program, which allowed me to get to get credit for, for the lectures I attended.

That allowed me to, to do the exams and get credit and get graded. So at some point I just had enough, uh, enough credits to complete a bachelor's, but I was not immatriculated. So I was not actually. Uh, actually eligible to do a bachelor's, but since I, since I did very well at the classes and wrote good grades, they put me in a gifted program that they just this semester had created from scratch.

Um, And a professor decided like, wait, now you, you have all the credits. You have a bachelor, bachelor thesis written with me. So we're going to fix that somehow and find a way to enroll you. And so from there on, it led to another master's [00:17:00] degree there and, and then to a PhD at the same chair. Um, which I don't know.

I just don't know. I mean, people, people saw something in me. Because I fit into the system and I managed to, to deliver inside the system.

Sam Huckaby: Yeah. That's huge. That's like, Someone just took a chance on you and was like, we're gonna make this happen,

Sabine: Yeah,

Sam Huckaby: it

Sabine: pretty much, pretty much. And same, same from my side. I took a chance just doing all these, all these lectures because I wanted to, uh, and not knowing if I, if I can ever get a degree this way or whether I will have to go back to school for two years to get a, get a diploma that would allow me to, to enroll.

I mean, I could have done that probably, except I didn't want to. I absolutely did not want to go back to school. Yes.

Sam Huckaby: So, what made you pick computer science [00:18:00] as the degree to chase down?

Sabine: Um, primarily, um, the fact that I like computers and I like programming and that there was this program that allowed students to enter the university and take lectures and get credit, even though they are not eligible to properly enroll.

Sam Huckaby: Oh, so that, that program only applied to

Sabine: That applied exactly to computer science. Yes.

Sam Huckaby: Okay, okay.

Sabine: So, uh, it's, it's kind of like a string of chances, string of random chance.

Sam Huckaby: Awesome. Okay. So, you get a bachelor's. Finally. Awesome. You continue on, you get a master's

Sabine: Yeah.

Sam Huckaby: More awesome. Then you get a

PhD. Yeah. Mostly because I didn't know what else to do. And because the professor had plans, like he saw, he said like, Oh yeah, come on, you join the research project. We do, we do a PhD [00:19:00] with you. And in Germany, a PhD is a paid position in computer science. At least at this university, they had enough resources to pretty much fund every PhD student with a full time, um, position as a grad student.

Sabine: So

Sam Huckaby: So this is essentially like your first

Sabine: yeah, kind of, kind of, yeah,

Sam Huckaby: a PhD.

Sabine: kind of just that it does not really resemble a traditional job. It was PhD and, and, uh, teaching assistant duty.

Sam Huckaby: What were some of the things that you worked on in your PhD?

Sabine: that was about a formal verification. Uh, of multi core operating systems and hypervisors. Uh, actually I think the work I did in my, in my master's, um, bachelors was, was closer to this in a way because there are actually verified code, but in the PhD, this was in a bigger research project with a chair [00:20:00] of computer science grad students.

Like, I think there was like 11 or 12 of us, so quite a lot of people actually, so maybe even more. I'm not very good at remembering exact, but, but yeah, this was about specifying, uh, specifying what does a hypervisor even do? So we were working with Microsoft research, trying to verify the Microsoft Hyper V hypervisor after the fact.

Of implementation. So it was already implemented, finished, shipped, and now they wanted to, to do a project, uh, seeing, can we verify that? And Microsoft research, they developed a formal verification tool using the Z3 SAT solver. And we, we tried to be better users for that tool. So we were writing specification for, for these, uh, hypercores, which are like the, the system calls of, of the hypervisor and, [00:21:00] um, And just sorting out, like, how would you make a mathematical proof about that in the context of optimizing compilers and all of these super, um, complex, uh, things that, um, to actually formally verify this, you would take.

a lot of time. So I was more on the side of like seeing how could this even, even be done. So in my PhD, I've wrote down semantics for, for the C dialect we were formally verifying. yeah, I don't know. I'm, I'm not, not proud of that because it's been so, it's been so driven by the project basically.

It's, uh, it's like, um, many places people do PhDs and they get to choose a topic or something. You know, I did not get to choose the topic. Um, it was interesting [00:22:00] in a way, but it was also like not aligning with, with what I What I found interesting.

Sam Huckaby: Gotcha. So you're in this PhD, you're doing this work. It's not necessarily the work that you want to be doing, but it is it's

Sabine: yeah,

Sam Huckaby: Uh, you're getting, you're getting the job done. You finish your PhD.

Sabine: finish the PhD with a baby on my lap. So yes.

Sam Huckaby: So do you go straight from PhD a career,

Sabine: No,

Sam Huckaby: a further

Sabine: at all. So after, after I finished the PhD, I, I had a baby basically. So well, I had a baby finished the PhD and then, uh, spent, I don't know, a year, half, no, spent, spent months or a year at home and then went back to, to the PhD. Now postdoc position, but not, not seeing, so this is something where you can't stay.

So if you have done a master's degree and a PhD at the same university, you have to go [00:23:00] somewhere else to stay in academia. So I applied, I wrote a proposal to apply for, for, uh, research funding, uh, which actually was granted. But then I decided, no, I don't want to do this. So I don't want to do three years in the United States at Carnegie Mellon.

It would have been super prestigious, but

Sam Huckaby: it would have been very

Sabine: very much so, especially because, because Edmund Clark agreed to host me. Um, and that would have been like, like awesome, but I could not see myself going there with a, with a one year old and putting them in daycare, like the entire day. Um, to, to satisfy the, the idea of, of work ethics the, the U.

S. has in terms, in terms of research. Um, the people, though I think I would have, I wouldn't have been so bad, like in retrospect wouldn't have been so bad because I came with funding. [00:24:00] So I, I was in a very good position. So I was funded for three years, but, but for some reason I'm, my, my, my brain decided that like, no, stop, we're, we're not going to doing this.

I don't want to want to teach people. I don't want to write papers. Um, It's not my thing. I want to build something. So I dropped out to build, um, and to, to try like the, my hands are being a, a struggling solo. Bootstrapper. , uh,

Sam Huckaby: All right. Tell me more about

Sabine: yeah,

Sam Huckaby: want to know all about this.

Sabine: Yeah. This is, this one is actually pretty awesome. Awful because I, I started out like there's a typical idea guy of entrepreneur type.

I had done no web development. Before, well, the last time I had done web development was like when I was around, I don't know, 12 years old and we just wrote HTML to dump it into our, um, our home [00:25:00] network and say like, okay, no home network shared folders in windows. And, and then we would say like, oh yeah, this is our, our private internet.

So, so that was the extent of web development I had done. Um, and I, I decided, oh, okay, I'm, I'm going to build a, build an application, uh, for people who saw, and this application should generate patterns to measurements of the user. And as I learned, this is a very difficult and involved topic, especially if you want to have a UI for the design, for the, for the sewing pattern designers to, to actually input these kind of rules to generate the patterns.

So I didn't get very far on that. And I also didn't get, get a lot of interest from users on that. Um, But I didn't stick to that long, so I basically had this short phase of validating and trying to understand what, what [00:26:00] would need to be built for that to work and to, to be viable, um, talk to a bunch of people even.

So I did cold outreach for the first time, uh, writing to random, no, not random people, but people in that space who, who sometimes answered me back, um, I had never done this kind of thing before. I was very scared of people in general. Um, but then I came across a blog post that set me off in a different direction.

And that blog post was, um, asking why is there no Ravelry for sewing? So Ravelry is a social network for people who knit and crochet, and it's primarily a database and project website where there's information on all the patterns, on all the yarns, uh, And on the projects that people make by using those.

And it's all very much linked up, very semantic, web like in a way, where you have everything connected and you, [00:27:00] you have all this information beautifully arranged and searchable. So obviously I, I saw like, Oh yeah, this is the thing that would be actually fun to do, like build databases and make it searchable and collect all the data and let people enter all the data, because what really surprised me about this was that.

The community over there, they had entered like, I think at this point, 500, 000 patterns into the database. And nowadays it's like a million or 2 million or something like that. Um, so that's very impressive because the, the owners of the site, they could have never done this, uh, on their own entering all this data.

So they actually had a kind of Wikipedia like model where there are editors and super editors who would. Watch over this database and enter data and correct data and make sure it's all good and working, what people put in there. And so I figured, Oh, I'm going to do the [00:28:00] same thing, but for sewing. I really fell onto my ass with that one because I, I started with Python and I'm not a very organized person at all.

So I'm actually quite chaotic and, uh, not having a type system really got me. so I was writing, um, Python, uh, and I was using the Django web framework. So that was an awesome experience. Just getting, getting started writing Django and, um, building a lot of things very quickly. But when I, when I put, put this to test and showed it to users, a lot of the things I built didn't really make sense.

Sam Huckaby: Hmm.

Sabine: So, so I got, got my, my proper share of building something and, and they will complain, uh, so rightfully so even because of what [00:29:00] I built, so because their, their critique made sense. Like there was a lot of very, very useful constructive critique and I, I tried Um, just that I was very often not able to see what people really needed and how it should work in a UX way.

Sam Huckaby: Were you doing like a lot of sewing at this point? Like

Sabine: I had, I'd done a bit of sewing, but I discovered that, Oh, well, sewing patterns just fit me as badly as the clothes in the store.

Sam Huckaby: So is that, is that kind of what made you, like, that sort of the reason why you sort of chose sewing? Is this sort of avenue

Sabine: Yeah, yeah, exactly. Because it was interesting to me. And because I felt that, Oh, if I had like a, a, um, site where people shared their projects and what patterns they have used, and I could find a bunch of people who are similar kind of body shape and then look at their notes, I could so much more easily learn what would I need to do in order to get stuff to fit.

Um, At least that was the idea. [00:30:00] I never really got to that because it was so much more fun, um, building databases, uh, um, and programming stuff.

Sam Huckaby: Did you end up launching your app like at all? You

Sabine: Uh, I had, I had users, um, within the closed, uh, confines of the site, but just a few, and I had, had a lot of people interested in giving feedback. I had one person who, who entered over a thousand sewing patterns into the database. Just because she, she likes to do this, like, which, which is very, very, very amazing.

And a bunch of other people who, who shared projects, it wasn't, it wasn't a lot of people, but there were people who were very strongly interested in, in this idea and in this happening.

Sam Huckaby: Okay. does this site still

Sabine: No, I took it down because at some point the server became a [00:31:00] security, uh, risk and I would have needed to, to do another full upgrade of Django and the rest of the stack. to keep it running safely. So I had, I had it running, I think, until earlier this year, or was it late last year? So I had it running for, for a long time without getting, getting compromised.

Um, but at some point it just became too much of a hassle.

Sam Huckaby: Do you know what the, like, final count on total patterns you got before you had to

Sabine: We had something like 3, 700 patterns in the database. Um, I don't know. A bunch of those were scraped. So I had scraped the, uh, the pattern company's websites or a big pattern company's website for data. Um,

Sam Huckaby: that's still, I mean, still a pretty decent number.

Sabine: half of them were [00:32:00] manually entered in a, in a good shape, which was a lot of tags and, uh, and metadata that was. Um, for the search, I had used Elasticsearch, which, um, I don't know, it's a pretty heavyweight solution in a way, um, but it was able to do these kind of nested queries, um, that I wanted to do without having to use special indexing tricks.

Um, I don't know, I would not use Elasticsearch, uh, for this project again, just, just because of the, the operational complexities and, um, just the configuration alone is daunting.

Sam Huckaby: Yeah, yeah, it's a pretty big, yeah, it's like using a, I don't know, like a big backhoe or something to, like,

Sabine: Yeah.

Sam Huckaby: for

Sabine: Yeah. Yeah. Exactly. Exactly like that. And it, it felt just, uh, just so huge. Uh, it always has these [00:33:00] three instances running by default, these, uh, in order to, to, to

to have redundancy. So, so yes.

Sam Huckaby: Gotta have

Sabine: Yeah.

Sam Huckaby: Okay, so you've created your, you've taken your stab at sewing social

Sabine: Yeah.

Sam Huckaby: It hasn't, hasn't really worked out. You've kind of, it kind of just drifted

Sabine: Yeah.

Sam Huckaby: at what, where did you go next? Like,

Sabine: Oh, well, I, I had, I had a kid. So, so I focused on the kid and, um, and I also figured that, well, the major reason why I could not see myself working out all these kinks and changing all, all the things and improving all the things was because I was struggling and hating on Python now. Um, because every time I fixed something, I would introduce more bugs, which I would only find at runtime because, um, my laptop was so slow that running the tests from Django was so much of a [00:34:00] pain that I just skipped it, which I shouldn't have, obviously.

So, uh, and I felt that it, I should not have to be writing tests for these kind of simple things to just know that. The code fits together and, and it's, it's consistent in itself. So, so then I tried, uh, other languages with, with type systems. So, um,

TypeScript, um, but I could not see running Node. js on the back, back end.

Um, that was relatively young at that time too. Um, But I still don't really see myself running Node. js on the backend. Um, I tried Elm, I tried Haskell, I tried PureScript. Yeah. These kinds of things. Like over, over a bunch of years, I tried these and mostly focused on a kid. Had a second child. Um, yeah. Until, until at some point I figured like, oh, I'm such a damn loser.

I just keep [00:35:00] building these prototypes for, for social network databases. Um, In different languages now, I really need to get a job or do something and I just happened to come across a job advert asking for like women to apply for functional programming job. And I figured that, well, uh, I guess that's an opportunity.

Sam Huckaby: all right? I mean, fits the

Sabine: Yeah, it, it just, it did fit the bill and, and happened to, to be a match. Um, and, and I got, got hired to, to work on OCaml

Sam Huckaby: Okay. So

Sabine: without having

explicitly used OCaml before. So a closest I got was Haskell and put a, put a template Haskell library that I've wrote onto my GitHub and that's the closest I got to OCaml other than running the Mirage OS hello world, which I ran sometime in, in 2006, 16, 17, around that [00:36:00] time. I ran that and then I didn't know what to do with that.

Sam Huckaby: Okay. So you've now have a job. writing OCaml that you've never done before. How do you, how do you go about learning OCaml?

Sabine: I, um, I only really learned OCaml at the point when I started working on ocaml. org in September 2022. Um, and I don't know, I just started writing OCaml. Um, it's, it's, it's, it's, it's basically after you know Haskell or PureScript or Elm. So, so with Haskell, Elm and PureScript, you, you get put in front of OCaml, you, you basically just write OCaml.

So you read OCaml and then you modify it, you write it, you run into a bunch of errors and you have to get adjusted to, to the syntax. But other than this, you basically know how, how, how a functional programming language works. The module system was new to me. So [00:37:00] I eventually had to learn something there, but, um, actually I could be, could be doing stuff very quickly, especially since I was just starting by fixing the templates, which mean, which meant like fixing the CSS styles to, to get the website into a usable state where you don't run into weird layout issues all the time.

Sam Huckaby: So what's been, now that you're working in OCaml, what's been the most interesting thing that you'd say that you've worked with in OCaml?

Sabine: Um, so.

Good question. Um, so we do have, we do have a documentation pipeline that builds all the, um, all the documentation for OCaml. org. And, um, in there we run a documentation generator called ODOC. Which is essentially just generating the docs for, for any OCaml package. [00:38:00] And one of those things I, I had to fix was, was a bug report.

So there was a bug report about missing data from, from these generated docs. So that was, was a pretty, um, pretty nice investigation. Looking at why do we not have this. piece of content that was missing. So I had to go upstream, uh, and look at how are we even generating the HTML here? How are we, how are we taking the HTML into OCaml.

org and how are we integrating this? And there I introduced a new output mode for ODoc to generate, um, the HTML content blocks together with the metadata. Because before we had not Done this. We had just cut out the content block and the metadata had to be recreated by other means. Um, so that simplified things [00:39:00] quite a bit downstream and also, uh, still seems quite useful upstream.

In order to just formalize at some point, like what is the metadata we use to generate the page and just output that into, into a Jason document that, that has the, the HTML content blocks and the metadata, I don't know, just made it, made it a little, little easier to integrate into oCaml. org. I don't know.

There is, um,

I didn't get to write that much code, actually, I was, I was, uh, put, put into, um, well, I was offered, offered the opportunity to, to, uh, act as a team lead relatively soon for the new OCaml. org team. Which in the meantime is disbanded again because the work on OCaml. org came to an end again. Um, so I don't know, I haven't actually written anything like really memorable in, [00:40:00] in OCaml.

I have my own little side project. Um, for BobConf I've wrote, well, not for BobConf, uh, well for fun, for fun, I've wrote a, um, A specification language for HTTP APIs, where you generate the client bindings, uh, and the server side endpoints in a type safe fashion. And I gave a talk on that at Bob Conf, um, earlier this year.

Um, so originally I had written that for my prototype of the social network that I had in Rust and in SvelteKit. So I was generating, uh, endpoints, uh, for Rust and, uh, TypeScript client bindings to use on the, on the SvelteKit side for the front end. Uh, I have written this API spec language in TypeScript.

So I ported this to OCaml. And, and I found that in [00:41:00] OCaml it was so much shorter. So that's the thing I liked. I liked a lot to see that it was so much shorter in OCaml and, um, not different, not much different in terms of type safety, but just so much shorter.

Sam Huckaby: right. So this brings us to the part of the interview that's harder to

Sabine: Okay.

Sam Huckaby: Um, so just kind of thinking back over everything you've done so far, I mean, it seems like you've always kind of had this drive to like, somewhere and do something and learn

Sabine: Absolutely.

Sam Huckaby: So what would you say, where do you want to be in like 10 or 20 years from now?

Like, what's like the goal if everything

Sabine: I'm running, I'm running something that makes millions. Uh, I'm, I'm happy with millions, um, because I don't want to manage a lot of people. So if, if anything, it should be [00:42:00] something that is a small team that a small team can handle. But I don't really know, know what, because the sawing, sawing, a database community app, that's already nowadays being done by some other guys who are doing this in a, in a pretty decent way.

I think they will make it. There's been plenty who tried and failed on this idea. Implementation is a difficult part on that idea. And it's a lot of work. Um, and now there's, there's a bunch of guys who are doing this. Um, so I'm not, not exactly tempted to go back into that. Um, No,

Sam Huckaby: Yeah. So do you see yourself more as a programmer in

Sabine: absolutely.

Sam Huckaby: as like a leader?

Sabine: I mean, probably both. Uh, if I want to scale that to a point that it runs or, or as a solo bootstrapper, like, like the levels IO kind of lifestyle, that would be fine.

Sam Huckaby: Yeah.

Sabine: But this is

Sam Huckaby: Would

Sabine: hard to pull off.[00:43:00]

Sam Huckaby: Yeah, for sure. Do you feel like you would have more fun being a solo bootstrapper or having a small team of people?

Sabine: It depends on the people entirely. So, so it depends very much on the people. So there's, there's, there's some people on Twitter where I would say, yes, I would enjoy to do this a lot more together with the people. But, um. Depends. I mean, I also like doing things alone a lot. So

Sam Huckaby: That's fair. Yeah, definitely. It definitely has to be the right people to do any sort of like group project, right? Like you want like people that enjoy karaoke and not people that are like that angry guy on Twitter.

Sabine: yes, that would be, that would be nice. Yes. Yes. It's not mandatory. I mean, karaoke is like orthogonal, but just have people who are, who are open to life and happy and, uh, and who, who don't make themselves and others unhappy, like on incidentally or [00:44:00] intentionally. Um, and also who, um, who have a similar level of motivation.

Um, or, or energy to bring into or like have a system so that everyone can contribute at a different pace at different times. And in the end sort out like how, how, how to do, do the slicing of the pie kind of thing.

Sam Huckaby: Yeah. There's definitely like, there's definitely like people that I want to hang out with. But I know that they're not going to get any real work done. And there's people that I want to work with because I know that they'll get

Sabine: Yeah, yeah, yeah, exactly that and, and there's people where, where I just have to say a few words or a few sentences and they get the idea and they expand on the idea and then there's people where I have to write like entire paragraphs and they still don't understand it. So, um, it is what it is. Uh, it's, it's like maybe a matter of [00:45:00] compatibility and, and like, communication styles or something, or ways of thinking.

Um, I don't know.

Sam Huckaby: Gotcha. So the really, the next question, logically, I think, is what are you working on today? That's going to help you reach some of those goals.

Sabine: Well, I've just extremely recently been appointed developer relations, uh, at the company I work at and a developer relations for OCaml. So a big part of that, that job is, um, like. enabling the community to, um, yeah, to have a good experience with OCaml, um, to remove roadblocks from, um, adopting OCaml and to help foster growth in the ecosystem.

And especially this growth in the ecosystem is basically what I need in order to do a, uh, a [00:46:00] levels IO style kind of business, um, money machines in OCaml. Because you really just want to want to have a template for like software as a service where you can start off and you have the important parts like billing, um, uh, sign up, log in, uh, or, or ready to go.

And, uh, so, so that will be a thing that I definitely want to see happen while I'm employed.

Sam Huckaby: Okay. Yeah, that'd be that. Make sense that you got to have those those sort of tools in your tool belt. Have you ever tried any Programming languages outside of ogamal to build a sass with since your Python days like have you tried something like Laravel?

Sabine: Uh, I've not touched PHP after my university days, maintaining the, the chairs website. Uh, it was so awful. Um, another time I had touched PHP, uh, in the context of WordPress, which was also quite awful. And so I [00:47:00] have to admit, I have not tried Laravel. Laravel is something I should try because they, they obviously do a lot of things right and have a lot of, um, a lot of good scaffolding, a lot of good libraries there in order to help people ship things really fast.

So no, I have not done the SAS thing. Um, otherwise I might not even be here because maybe I would be making money, uh, and doing whatever I want. Um,

Sam Huckaby: That's fair. I think I think you would probably you might like Laravel There's definitely some aspects of Laravel that I think fit really well with sort of your like vision.

Sabine: I'm sure I would.

Sam Huckaby: went to I went to Laravel's, uh, US conference in August, and I, I was very, I was very upfront with people. I was just there to steal ideas for OCaml.

Sabine: Yes.

Sam Huckaby: Um, but yeah, there, there's definitely a lot that they get right that we can definitely be stealing for OCaml in the

Sabine: [00:48:00] Oh, yes. Yes, we can. And, um, um, you, you know, Leandro would agree. You've seen his tweets about Laravel, I think. So, so if building a web stack on Riot in the spirit of Laravel and other, uh, leading frameworks, um, I think we would have something really, really good.

Sam Huckaby: I think the biggest, the biggest thing that I need to do for my studies is I need to learn how to use Melange

Sabine: Mm. Mm hmm.

Sam Huckaby: I've never used it. The only reason I started OCaml was because I didn't want to do JavaScript anymore. And so the very idea that I was going to write OCaml to make JavaScript was just abhorrent to me.

Like. I hated that.

Sabine: Oh, but Melange,

Sam Huckaby: you worked

Sabine: Melange, I have not worked with it, but people tell me that the, um, integration of the JavaScript ecosystem in Melange, like the, the interop with JavaScript ecosystem is so much nicer in Melange. So, um, seems to, it seems to be a [00:49:00] thing. Um, Ahrefs is using Melange a lot. So they have an entire web stack, you know, camera, uh, using reason and milage.

It's pretty cool.

Sam Huckaby: Have you, you worked with Reason much at

Sabine: No, actually, actually no, because I, I don't, uh, think the syntax is better. , uh, I, I, I mean, I knew Standard ml, I knew Haskell. I knew MI knew Pure Script Script. So I was fine with cured syntax with very few, few decorative braces or like . Um, uh, and, and, and I, I was kind of, kind of mad at JavaScript too, so, um.

So, so in a way, uh, I, I just find the OCaml syntax not to be a problem versus introducing another, another tool into the stack. Uh, however, I know that, um, the reason syntax is very useful for some people who, who have never used [00:50:00] a OCaml syntax. A, a Lisp like language.

Sam Huckaby: Yeah. I've had several people tell me that I should try Reason,

Sabine: Yeah.

Sam Huckaby: again.

Sabine: Why not? Why not actually? Because Reason, so there's good packages there in this ecosystem. So when you look at Reason as an ecosystem, uh, you can use the Reason packages in OCaml just interchangeably. I mean, it's just, just a syntax. It's just an alternative syntax. But when you go into, into the Reason ecosystem, you find a lot of web focused, um, packages and when you search on GitHub for Reason packages, you'll find It's, it's a good, good place to find stuff that's useful on the web.

Sam Huckaby: So I think my last question that I've got then is, what can you tell me about Fun O'Camel?

Sabine: yes.

Sam Huckaby: It just happened. I haven't heard any of the

Sabine: Oh, yeah. Well, it was pretty fun. Um, so, so you saw the photo, did you? Yeah. So, so I, I actually did in the evening put on a dress, um, and run, go, go from table to table. So we had the [00:51:00] venue until midnight. So like a classic, like fairy tale story, we have the venue open until midnight at midnight, all have to leave.

So I walked from table to table to ask people like, Oh, are you scared? And I showed around the old camel sort. But, but for a serious matter, you know, Final Camera was a real conference with actual talks and it has a very normal event, uh, during the, the regular, um, kind of work hours. Uh, just now we also had, had a mission of, of having a nice evening with, with people, giving them space to do different things, to work on projects, or just hang out together, have fun together, play, uh, which we actually did.

Um,

Sam Huckaby: Of course.

Sabine: yeah, no, no, no, not of course, but it was quite a, quite a story. It was, it was a luggage traveling through, from, from the west side of Germany to the northeast of Germany. Obviously an entire karaoke set in my [00:52:00] luggage.

Sam Huckaby: Oh, you brought your own

Sabine: I bought my own karaoke set for Farno Camel, yes, it's a business expense.

Sam Huckaby: Got it. I'm in the wrong business

Sabine: Well, I'm technically now in the, in the software development and event management business, you could say, at least for tax purposes.

Sam Huckaby: for sure. So was your experience? Like, like setting up

Sabine: Um,

Sam Huckaby: What

Sabine: Yeah. So that is

Sam Huckaby: Yeah,

Sabine: origin, the idea originally came up like, um, 15 months before, um, actually final camel happened. So in, in June, uh, 23, and that was around the, the company offsite event where, where all the company, uh, came together in Paris to, to spend some time together. People like, what if there was a Zuri [00:53:00] Hack event for OCaml?

So something like Zuri Hack, I don't know. Do you know Zuri Hack? So I might need to give some context for the listeners anyways. So, so Zuri Hack is, uh, is, uh, an event from the Haskell community where there's three days of talks and hacking and workshops. Uh, and I attended this once. And it was very nice.

It was a wonderful event because they had a venue at the lake in Zurich and you could sit outside in the evening with people and just get to know so many people, um, which, which is great. Like having an event that's not, um, not like the doors close and everyone goes to a, to a bar. Because that's the kind of event I hate.

Like, the doors close, everyone goes off to a bar or to the hotel, because in that case, I tend to go to the hotel. And that's pretty boring and alone.

[00:54:00] So, yeah.

Sam Huckaby: definitely have.

Yeah. That's also been my experience. A lot of the, of conferences where you'll there's either everyone goes to the bar afterwards or. They stay at the venue, but then the lights are dimmed, and then the music's really loud, so you can't hear anybody, because my hearing's not, like,

Sabine: Yeah. Yeah, I struggle with understanding people in bars very much. I, I wish people had subtitles. Just like movies, that would be, uh, would be a thing. Um,

Sam Huckaby: Yeah.

Sabine: I mean, actually it's technically possible nowadays. Very easy, actually. You just would have to have a phone that shows the subtitles. It would just be, at this point, still be considered rude.

Just like wearing a Google Glass and being called a glasshole or something. Um, but, um, but actually having subtitles for people will be awesome. Anyway, so I decided that, well, if you're going to do this, it has to be an event that is open until late. And, and have like space where people can hang out who, who don't, who can [00:55:00] handle, uh, loud.

And, um, yeah, so it really started to happen at the point where, um, where someone pointed out to me that David Sancho was already planning an online conference. an online OCaml conference. And he already had like, like 10 or 12 speakers, a list of people who, who he thought would, should give talks. And so I reached out to him and said, um, Dave, um, I, I'm planning an in person event, um, in Berlin.

So I, I used BobConf as an opportunity to travel to Berlin and visit venues to check out like the spaces. Since due to the Olympics, Paris did not seem a good idea. I found a venue in Berlin and so I told Dave, uh, Dave, I am doing an event in Berlin, I have a venue, um, Where I think this could work, uh, and I hear you, uh, have been organizing an online conference or [00:56:00] working towards organizing an online conference.

Yeah, should we join forces and make this an in person event? And you, you take care of like the speakers and, um, and so on. And I, I just do the, the in person organizing stuff. And he said yes immediately. So he said, Oh, Ahrefs will also sponsor this. And, uh, from my side, I knew, um, Taredes would sponsor this.

Um, so, so we just decided to do it. We put up, um, um, a system for, uh, receiving these, uh, proposals. Please call for, call for sessions, call for presentations. Uh, and a month later, we opened a sign up, um. I signed a contract with the venue like me. I, uh, it was easy for me to do that because I was, I'm a registered, registered business in Germany, like a sole, sole proprietor [00:57:00] in Germany.

So it was very easy for me to, um, to sign a contract there, um, in a way that I would get value added tax back. And so, so yes. So that was pretty advantageous doing it in Germany.

Sam Huckaby: Yeah.

Sabine: Um, because it simplified so many things, um, yeah. And then there was just a lot of keeping up with the things we needed to do, like putting up a website for funnel camel and, um, making sure we had, had enough speakers, well, actually we had more sessions proposed than we had room for.

So we looked at the sessions and thought like, Oh, we don't, we don't really want to want to reject at this point. There's so many interesting sessions. So let's get another, let's book the big room with live streaming set up for another day. And, and let's host all of these sessions, but not, not, not exactly all of those, [00:58:00] but almost all of those.

And next year we will probably, um, have to select and make sure there's not too many workshops at the same time. Okay. So yeah,

Sam Huckaby: Nice.

Sabine: no, it's been a huge, huge success, I think. So at least for me, personally, I've never organized an event this big.

Sam Huckaby: So there is for sure going to be a fun OCaml 2025.

Sabine: We just don't, we haven't started, uh, fixing dates yet, but there is going to be Final Camera 2025. Some people, so after the event, some people even came up and said, Oh, this was the best conference I've been to. And, um, and they asked, like, can we do this twice a year? Seriously. Oh, wow. This is, uh, this is something.

I don't think we can do it twice a year, just in terms of like how much there is to organize. Um, and also in terms of like the people coming. So the people have to still [00:59:00] travel and find accommodation, even if we keep it free or, or very low cost. Um, so, Yeah, I think doing it once a year, that's, that's what it's going to be.

And yeah, and these two days they were, they were just, I don't know, I hardly slept at all. Um, it was, it was very fun though. Uh, very, very fun. And I did not listen to the talks either because I was always going and checking, Oh, is everything good? Is everyone fine? Uh, is there any emergencies I have to attend to in order to, uh, to make sure this all goes well?

Uh, and in the evening we, we did sing karaoke like till midnight on the first day and till 10pm on the second day. I was surprised at the second day at 10 PM. I still had like a lot of people out there in the, in the venue. Uh, well in there in the venue and, [01:00:00] um, and they were busy and doing stuff and I had to actually evict them saying like, Oh guys, we'd only have the venue until 10 PM.

It's such a shame. So they had just gotten like from the supermarket across the street, they had gotten like chocolate cups and we're, we're sharing drinks. It was so, so, so cute. Uh, but everyone was super well behaved. The venue was, was happy with us for being, being so civil, um, and, and so friendly. So I think they will let us, let us book again, if you want to go to the same venue again, also had a ping pong table as a table tennis and, and, uh, table soccer.

Sam Huckaby: Nice.

Sabine: I, I, yeah, it was actually cute. And people, people were making use of that to, to just play a chat and, um, so it was, it was super cute, super fun.

Sam Huckaby: Nice. That's awesome. I'm glad to hear it went well.

Sabine: Yeah,

Sam Huckaby: it's going to come back in next

Sabine: me too.

Sam Huckaby: Maybe next year I'll get to [01:01:00] make it. We'll

Sabine: Yeah. It's a, it's a far journey for you. It's quite a journey for you. Um, so.

Sam Huckaby: But Dylan

Sabine: Uh, Dylan, Dylan, he had a, he had an excellent strategy to go. Uh, I mean, he, Dylan, he, he, he was a speaker at React Alicante. So, and React Alicante pays for your journey. So he asked React Alicante, guys, can you send me to Berlin a week earlier?

And I will make my journey to Alicante from there. And they agreed. They say, bye. Booked him a flight to Berlin, uh, and he went to Farno Camel and spoke, spoke at Farno Camel, uh, hung out with us and then he took the train to Alicante, I think, or yeah, I think he took the train together with the AHRF people.

So it was really, really nice. And yes, this is, this is like the ultimate trick. Like go to a prestigious, more expensive conference. One that can afford sponsoring the speaker's travel. [01:02:00] Um, and then, um, have them book, uh, you, you need more accommodation, but you can treat it as like a longer kind of, kind of vacation ish journey.

Um, which is pretty cool.

Sam Huckaby: that is a good idea.

Sabine: It's, it's, it's the best idea. It's, it's really a proper strategy.

Sam Huckaby: Yeah,

Sabine: a stars aligned. Otherwise it might've been quite difficult for, for Dylan to come.

Sam Huckaby: Yeah. All right. Well that, that's all the questions I have. So thanks

Sabine: Yeah. Very cool.

Sam Huckaby: coming on and talking

Sabine: Well, thank you for having me. I. Uh, I don't know. There's always just so many things one can talk about in this space. I don't know.

Sam Huckaby: It was good talking about this. I was, I was really excited to hear your origin story and it did not, didn't disappoint.

Sabine: Well, it's chaos. It's chaos. Uh, I, I did a similar origin story on, uh, um, on the backend [01:03:00] banter, I think. So, uh, it, it should match up roughly.