EW S8E4 Transcript EPISODE 4 [INTRODUCTION] [00:00:00] SM: Hey, all. Sundi here. I’m excited to announce that, here at SmartLogic, we’re hiring for mid-level Ruby on Rails or Elixir developer, a product designer, and for a staff engineer. Come join our team and enjoy working from home with great benefits, flexible hours, a work from home stipend, and professional development opportunities. Alright, now here’s the show. [EPISODE] [00:00:25] SM: Welcome to Elixir Wizards, a podcast brought to you by SmartLogic, a custom web and mobile development shop based in Baltimore. My name is Sundi Myint, and I’ll be your host. I’m joined by my co-host, Owen Bickford. Hey, Owen. [00:00:36] OB: Hey, Sundi. [00:00:37] SM: And my producer, Bonnie Lander. This season's theme is Elixir in the Polyglot Environment, where we talk about how Elixir works with other languages. Today, we are joined by special guest, Sanne Kalkman from CodeSandbox. Hey, there. [00:00:49] SK: Hi. Thank you for having me. [00:00:51] SM: Yeah, thank you for being here. Where are you calling us from today? [00:00:55] SK: I am just outside Amsterdam in the Netherlands. [00:00:59] SM: Oh, my gosh, that is so cool. I think Owen, you had some immediate questions about living in Netherlands. Was that correct? [00:01:05] OB: Oh, yes. I’m apartment and house searching. So yeah, is there like a sales pitch for the Netherlands? How's it like living there? [00:01:14] SK: I mean, I grew up here. I'm born and raised in Amsterdam. So, I don't know anywhere else. But I like our weather even though it's really rainy. It changes all the time. I like Amsterdam. I like that you can bike everywhere. [00:01:25] OB: That's a big point. [00:01:26] SK: I don't know how to drive and other than when I want to go to the hardware store, I don't need to. So, yeah, it's great. I like the infrastructure. I like that it's a small country. You can get anywhere in like, two hours. It takes four hours to get to Paris, and you can go anywhere. [00:01:45] SM: Oh, my gosh, what a dream. We were just talking about it. SmartLogic is Baltimore based. But we're remote, we’re everywhere. I think, Owen, you're in – why am I forgetting the name of the – yeah, Michigan. But I was trying to think of the city. But anyways, yeah. So we're all over the place, and so we were just talking about how some of us would take like a 20-hour train ride to get to Baltimore. Others would have a four-hour train ride. Some people are on the west coast. So yeah, we’re spread out. But it's nice. I see the appeal of a small country for sure. You also said you wanted to talk about your current favorite TV show. [00:02:20] SK: Yes, definitely. I've recently been watching Our Flag Means Death, which is on HBO Max. It's just so lovely. It's a romantic comedy about pirates about Stede Bonnet, who was a real person, a gentleman who decided to become a pirate, and Blackbeard who most people have heard of as a famous pirate. But it's in fact a romantic comedy and they fall in love and it's lovely. It's just such a breath of fresh air, when so often TV shows hint at gay romance, but don't actually let it happen. This show is just so, I don't know, like optimistically diverse. There's a non-binary character and it's not a big deal. Everybody just goes, “Okay, cool. You’re Jim. That's fine.” And it's just so nice compared to lots of other TV shows. So, I would wholeheartedly – [00:03:11] SM: You’re currently binging this one or you’re finished? [00:03:13]SK: I finished. It's only 10 episodes, but I may have watched it two or three times already. [00:03:20] SM: That's a good sign. If you've immediately got back to watch it again. I usually need to digest a little bit before I go back, but that is amazing. [00:03:29] OB: I've seen the first episode. It was really good. Yeah, the humor, so it’s most of the same team that – what was the show in New Zealand, my minds blinking. [00:03:38] SK: The one with the vampires? [00:03:41] OB: The show they made back in the day. That's got Rhys Darby. Conchords. Yes. So, it's the same team as Flight of the Conchords and some other actors. Leslie Jones makes an appearance, haven't gotten to yet but that's going to be a great episode I'm sure. Are these 30-minute or 60-minute episodes? [00:04:02] SK: They’re roughly 30 minutes. So, it's not that much of an investment. [00:04:07] OB: Right. Not a huge commitment. [00:04:08] SK: No, but worth it for sure. [00:04:10] SM: Cool. When I encountered TV shows that I know can talk about it all day, but when it's something I don't know, I'm like I really don't know it, not even vaguely know it. Never heard of it. Never heard of the actors in it. I'm like a left or right kind of person when it comes to that. But we love when we ask for hot takes and things that are happening right now that are important to you. And somebody's like, “I got a TV show for you.” We love that. Amazing. Sanne, can you tell us about yourself. You mentioned you're born and raised in Amsterdam, but how did you find yourself in tech? What are you up to right now? Can you tell us more about CodeSandbox? Lots of questions there. You can start wherever you want. [00:04:47] SK: Alright, let's start at the beginning. I used to be a high school English teacher that is also what I studied. My degree is in English. But I was always interested in programming, from making my own little websites, customizing my MySpace page as a teenager, and everything. But I also really liked reading. For some stupid reason, I thought that computer science or math would be too hard, so I studied English instead. But even though teaching was fun, I wanted to do something else because the kids were lovely. But the workload was so high. I mean, it's probably the same in the US, very high workload, abysmal pay. Unfortunately, I decided to look for a change of career. I did a lot of self-teaching and learning. Eventually, I did a boot camp in the Netherlands, because it proved really difficult to get that first job without a job. And yeah, that's how I rolled into tech, five or six years ago, roughly. For the past two years, I've been at CodeSandbox, which is an online development environment is the simplest description, mostly JavaScript focused. Recently, we released CodeSandbox Projects. Well, by released, I mean, it's in private beta, so you can sign up for the waitlist, and we're gradually letting people in to make sure it doesn't immediately break under the strain of everybody's enthusiasm. [00:06:11] SM: I'm very curious, what was the first language that you entered the code space with, when you switched from being an English teacher? [00:06:19] SK: When I was learning on my own, I mostly did JavaScript with a little bit of Python, a little bit of Ruby. But Elixir is actually the first language that I've really worked in professionally, and kind of the only language I've worked in professionally so far. That sort of happened completely by accident. I was working for a consultancy agency, and they had a bit of trouble placing me as a very junior developer, which is understandable. And there was a telecom company in Amsterdam who were switching from Ruby to Elixir, and they specifically wanted somebody junior on their team who they could train up, et cetera. So I had never heard of Elixir. I barely knew any Ruby. But I started on that team. The whole team took an Elixir boot camp, and yeah, and here I am I still doing Elixir. [00:07:07] SM: Was it a public facing Elixir boot camp? Or was it internal? [00:07:11] SK: It was public facing. The five of us, and then a few other people coming from different places. [00:07:18] OB: Is it still running? Is still something that people can sign up for? [00:07:22] SK: I am not sure. I don't think it has had any occurrences recently, mostly due to the pandemic. But I'm not sure. I haven't heard of it running again. If there's interest, let me know, and I'll see if we can make it happen again. [00:07:38] SM: Yeah, for sure. I mean, we've seen an uptick in Elixir boot camps, I think generally speaking. I know, Dockyard is sort of doing something similar and I personally have gone through trainings with Groxio before. A lot of people are interested in learning Elixir, more remote. So these kinds of virtual boot camps, two, three days, or if two, three weeks are starting to pop up all over. We're always interested to hear about boot camps that people have gone through, that they liked. This one was in person? [00:08:06] SK: Yeah, this was five days in person and it was really nice. I think they struck a nice balance between it being useful for the more experienced programmers who were just new to Elixir. While it was also still very easy to follow for me who, I mean, sort of knew one language, but not even really that well, at that time. [00:08:29] SM: Yeah. How do you think about JavaScript now that you learned another language? If you have to look at it now, what kind of patterns can you acknowledge after being in another language for a little bit? [00:08:41] SK: So my JavaScript knowledge is very rusty. I will say that to begin with. I tried doing Advent of Code in JavaScript this year to kind of see if I could fresh it up, and it turned out quite difficult. I got bitten by mutability a lot, especially by array.slice and splice. I'm still not sure which one is which. So, yeah, I think it helped me understand things like the more functional JavaScript paradigm better, obviously. But I don't really use JavaScript that much. But I appreciate that you can do a lot of functional stuff with it, because I don't think I could do object oriented programming anymore, if I really properly learned it in the first place. [00:09:24] OB: When you're working on JavaScript, is it mostly like client side JavaScript in the browser? Or are you doing a little bit of node back end JavaScript? [00:09:32] SK: At the very rare occasions that I do use JavaScript, it's mostly React, where it's just like a small UI change that I don't want to bother somebody else with. But nine times out of 10, I will in fact, ask somebody else, mostly because we also use TypeScript and I always end up in fights with TypeScript, which is probably me and not TypeScript. [00:09:55] SM: You mentioned a little bit about this CodeSandbox Project. Is this the one that was announced last month, the VS code connection? And this is what you said, you might be able to hook us up with beta. That's what she said, right? [00:10:08] SK: So, to immediately dampen your enthusiasm, currently, it only supports JavaScript and not yet Elixir. I'm hoping that we will soon because I personally would like that very much but, for now, it's mostly aimed at JavaScript projects. The idea behind it is that we noticed that a lot of people were kind of outgrowing the sandbox part of CodeSandbox. The old CodeSandbox is really good if you want to quickly show something or do an interview or build a quick example of your library and stuff like that. But for real big projects, it just didn't cut it, and that's why we went back to the drawing board based on what we've learned in the past and almost completely rewrote a lot of the core logic to really enable full project development. You can take your home on a repo, very big, import it, and have live collaboration. The thing that I think is the coolest about it is that every branch gets a running container behind it. If I'm working on something, and I need your help, or I want you to review my PR, and actually see it running, you don't need to check out the branch, install the dependencies, update, restart, whatever. You just get the link, and you're right there live with me in my branch, where I'm working with the whole running preview. So, yeah, I think that is the coolest part of it for me is that that collaboration is just really nice. [00:11:33] OB: Sounds really nice. My understanding of CodeSandbox is so the app itself allows you to mostly code in JavaScript, but the backend is mostly or entirely Elixir. How does that break down on the backend? [00:11:45] SK: Yeah, so the Elixir part is basically the API server. It's a Phoenix application, and it's the data layer, it handles all the updating, reading, basically every crud operation and the authentication and any interfacing with other external API's. We have a lot of other micro services, but like the Elixir server is kind of the central source of truth for that kind of stuff. [00:12:10] OB: Okay. And they talk over a REST or GraphQL? [00:12:13] SK: We have a little bit of both going on. Eventually, we'd like to kind of make it one or the other. But just historically, we have a bit of REST, and a bit of GraphQL. We mostly have REST for some older routes, but also for things that just really cleanly map to a post or a put or whatever. Whereas we have GraphQL queries for the things where the client might want lots of different related data, to make it easier for the client to choose what they want, without me having to add a field every time. [00:12:44] SM: Can you speak a little to the language that you're building this all out with? Is it an Elixir project? You said you're supporting JavaScript right now, but are you building out the project in a particular language or framework? [00:12:56] SK: Yeah, so most of it is TypeScript, a good core of it. The Elixir part wasn't really rewritten for this. We just added functionality. But the core rewrite was TypeScript. We mostly built this new, kind of like a central thing that takes care of all, the code execution and syncing all the changes and the collaboration and stuff like that. So that is also what allows you to work in VS Code while still working on CodeSandbox. So, I could be working in a branch in VS Code, you could be working in the browser, and it would still real time sync our changes and update the preview, et cetera, and that is like the core pre-write. [00:13:36] OB: Right. So, is that like an extension that gets installed on VS Code, and then kind of connects with your Sandbox account? [00:13:42] SK: Yes, exactly. If you want to use it in VS Code, you install the CodeSandbox extension, you log in with your CodeSandbox account, and then magic. I'm sure it's not magic, but I didn't build it. So, it seems magic. [00:13:53] OB: Feels like magic when you use it. That sounds really nice. You’ve talked a little bit about this new beta, for projects. It's more advanced version of the existing CodeSandbox, a new feature. I'm curious, we've been talking to people a little bit about using Elixir with other languages. So, you're tying TypeScript in with Elixir. There may be some other languages on the backend. Of course, we're all writing SQL at some point. Is there a kind of a polyglot situation? Do you count yourself as a polyglot? Or CodeSandbox is a polyglot environment? [00:14:27] SK: I do think as an environment, we are a polyglot environment, but I do not consider myself a polyglot. I wish I were, but time is limited, and I just have not had the chance to dive into many other languages to the extent that I would like. We do also have a little bit of Rust in the Elixir codebase, mostly to really improve the performance of some string operations. In the old version of CodeSandbox, we took care of all the live collaboration on the Elixir side, but that became quite slow and quite memory intensive, so we rewrote that, just that little part in Rust, which is much better and faster at the big string operations that were required to – if I type A and you type B, how do we resolve that and make sure that something sensible comes out? [00:15:21] OB: Sounds easy. [00:15:23] SK: Trivial. [00:15:26] OB: Basically, you're outsourcing some costly operations to Rust, because it's more efficient at those things, and that was string parsing or manipulation in some way? [00:15:37] SK: Yes, it was the operational transforms, which is like an algorithm to – I think Google Docs might also use it or have used it in the past, where you kind of reconcile two or multiple different changes that happen at the same time. You kind of apply them in the correct order and make sure that the result should be what is intended. For V2, we moved that logic to the new TypeScript project, where we're also handling it in a slightly different way. But I did not implement that, so I'm less certain of exactly how it's working these days. [00:16:12] SM: Do you have a dream combo of languages, frontend, backend that work together really well, just generally speaking for when you're personally working on things? [00:16:21] SK: When I'm personally working on things. I like to stick with Elixir where I can, because like I said, I wish I was a polyglot, but currently I'm not. I like Elixir. I would love to try more Live View for the frontend as well. But I haven't really had a chance. [00:16:38] SM: When you say Elixir, you're talking more like traditional Elixir and regular Phoenix kind of thing? [00:16:42] SK: Yes, with Live View. [00:16:45] SM: Yeah, for sure. I know Owen is really into Live View right now. [00:16:49] OB: I’m the Live View guy. [00:16:50] SM: Yeah, you are. Well, everyone needs one Live View guy. No one can see this, but Owen is wearing one of his colorful shirts today, and I'm just thinking of the Live View guy trademark, being the colorful shirt person. I don't know. It's a fun mental image. [00:17:08] OB: Like the Six Flags guy? There was a skit on SNL, with the Six Flags like the old – the guy that did the dance with the theme song. [00:17:15] SM: Oh, my gosh. [00:17:15] OB: If I could become that for Live – if I could do that for Live View, then I will have accomplished something. I don't know if it would be good or bad. [00:17:26] SM: I feel like there's probably like six Six Flags in the US, and that's where the Six Flags comes from. I don't think it exists anywhere else. So, Sanne, you might not even know what we’re talking about. [00:17:34] SK: I was going to say, this is not quite a reference that makes sense to me as a European. We do have an amusement park that used to be Six Flags for a while, but I think it got bought by somebody else again, and now has a different name. So, I do know that Six Flags is an amusement park, but the Six Flags guy did not make it over here, I believe. [00:17:54] SM: I barely remember this. [00:17:56] OB: I can tell you some, at least – so, I would need to do some fact checking. Internet, don't hold me accountable on this. But my understanding is that Six Flags started in Texas and the name comes from like Texas, had six different flags of nationality. [00:18:11] SM: Oh, I do feel like I've heard that the Six Flags in Texas is the Six Flags. [00:18:17] OB: Well, there's like multiple. There's probably six Six flags in Texas, alone. [00:18:21] SM: Oh, my god, how many times we’ll we say that in five minutes span. Amazing. [00:18:26] OB: They're getting some free advertising. [00:18:27] SM: Do you have any super fun amusement parks in Amsterdam, that is like a famous thing that you all like to go to? Or you’re not an amusement park land? [00:18:36] SK: We have a few. So we have the one that used to be Six Flags that's now called Walibi. That's like the main rollercoaster park. It's the one that has good rollercoasters. I'm not much of a rollercoaster person. The most famous Dutch one is probably the Efteling which has some rollercoasters, but also has a kind of creepy fairytale forest kind of thing. It has little characters that are called Laffan, and they're honestly terrifying. There's this whole village full of them. So, you go there as a kid. I can't remember last time I've been there. But supposedly these horrible creepy dwarf creatures are still there. [00:19:15] SM: Oh, my gosh, that is the stuff of nightmares. But also, this is not the first time the word Walibi has been said on this podcast. But maybe it was the first time we weren't talking about a testing environment. [00:19:26] OB: Right. Yeah, I think I know where I want to go for vacation next year. [00:19:31] SM: Oh, my gosh. Speaking of European vacations, we have always wanted to go to the Code BEAMs that happen in other places, but you are already in one of the Code BEAMs in other places that are non US. So, can you tell us about upcoming Code BEAM talks and stuff that you might be excited for? [00:19:48] OB: Yeah, definitely. I am very excited and honored to give the opening keynote at the upcoming Code BEAM in Stockholm. I will be talking about hiring and onboarding and building Elixir teams. So, I'm really nervous about it, because there's a lot of work still to do on the talk, but the general idea is there. Yeah, I'm really excited to finally be at an in-person conference again. It's been a very long time. So, I hope that we’ll go well and be reasonably safe. I'm also really looking forward to the other keynote by Quinn Wilson and Robert Virding, about the early days of Elixir – Erlang, I mean, sorry, and kind of its roots in prologue, which I don't know anything about. But sounds really interesting. [00:20:34] SM: I completely forgot that they were doing that together, and I need to go. [00:20:38] OB: I’ve got FOMO, so bad. [00:20:39] SM: I can’t miss that. I completely forgot. That's like a once in a decade event. Oh, my gosh. [00:20:47] OB: I already wanted to go to Stockholm, and like, I just needed a reason. [00:20:53] SM: Code BEAM is on May 15th, did you say? 14th? I don't want to quote this wrong. [00:20:59] SK: It is on May 19 and 20. I am pretty sure, the Thursday and Friday of that week. [00:21:08] SM: Gotcha. So if you're hearing this before Code BEAM, and you're in Stockholm, please go. If you're hearing this after, please check out these talks. They're going to be great. [00:21:21] SK: I'm pretty sure it is a hybrid event. So, there are also tickets available for a live stream. However, it might not be quite American timezone friendly, especially the morning talks. [00:21:33] SM: Yeah, these timezones, they're going to get us. I'm so bad at European geography. Is the location kind of close by? Do you have like long commute to get there? Are you just going to hunker down on site and hang out with everybody? [00:21:49] SK: I'm going to fly there. I'm going to fly to Stockholm and be there for a few days, because I think it's about a two-hour flight. So, it's close, but not quite commutable to go back and forth on the same day. [00:22:02] SM: Yeah, for sure. Well, I'm so excited for you. Is there any particular sneak peek, little tips or tricks from your talk? I know, you said you haven't finished it yet. I'm also a due tomorrow, due tomorrow kind of person, but anything you want to share? [00:22:19] SK: Well, I mean, I’m definitely the kind of person who needs like that stress and that pressure to really get going. I'm starting to feel it. But not quite yet. But I think one of the main things that I do want to talk about is how it's so hard to expect to have seniors and to hire senior developers when nobody wants to hire junior developers and train them up. I'm living proof that you do not need to be an experienced programmer to learn Elixir. It is totally possible to have that be your main first language, and be perfectly competent at it. I'd like to think I'm perfectly competent at it, at least. [00:22:56] SM: Yeah, for sure. This is something that's been on my mind, too, a little bit of a deviation from the theme, but we've talked about this a lot in previous seasons as well. Your top tip for helping juniors succeed at your organization, I would love to hear it. [00:23:10] SK: That's a good one. I think right now, as a small startup, we kind of still struggle with that, to really be equipped to help juniors and provide them with the support that they need. But for me personally, when I was starting on the job, I really appreciated having a few coworkers who both had absolute faith that I could do it, while still being willing and available to help me out with questions and model asking questions. I'm definitely the person who always asks the perhaps dumb or obvious questions, but I'd rather ask a dumb question that somebody else was too scared to ask. If that makes me look silly, then so be it. [00:24:01] OB: I have the same kind of attitude, it looks like. I've been in so many meetings at this point where you can just kind of feel that like everyone has the same question, and no one wants to ask, and it feels kind of like a dumb question. But then once you say it, you kind of feel everyone kind of exhale, or like someone come up to you afterwards, “I'm so glad you asked.” But yeah, that's a huge, huge advantage, to be the one who can ask the question, especially when you're asking in a group, everyone gets the same knowledge at the same time. You have to kind of go back and coordinate with everyone afterwards. So, this isn't the first talk you've given at Code BEAM, also. You're a great communicator, you've given a couple of talks. The one I watched was ‘Who Takes Out Your Trash’, and that was very interesting. I heard some about how garbage collection happens in Erlang and Elixir. I recommend everyone, we'll put a link to that talk in the show notes, but is there like a TLDR of garbage collection in Elixir? [00:24:57] SK: So I think the TLDR is, most of the time, you don't have to think about it. Because whenever a process is done, it'll just clean up after itself. And each process has its own little bit of memory. One thing that did bite me once in the past though, is the fact that larger binaries are like larger strings. They get one big shared piece of memory, and then each process just has a reference to that one big string, instead of having to copy it over to each process. Sometime last year, we had some out of memory issues, and we had a process. We had so many more processes than we normally have. Those two things were definitely related. Because it turns out that we had some processes that never shut down. I don't remember exactly why this happened. But we just kept these processes running and running and running, and these processes were also the ones that did big string operations. So, you can kind of see where this is going probably. These long-running processes that shouldn't have been long running, kept holding on to their references to these larger binaries, which meant that those could never get garbage collected, until everything crashed, because it was out of memory. This talk definitely helped me debug that. I was like, “Oh, wait, I know, big strings. Those are the culprits.” [00:26:24] OB: So, Elixir is your first language, learning a lot on the job, definitely relate to all of this, and then you're like, “Alright, let's jump into garbage collection.” When did you realize that you needed to think about or understand garbage collection? [00:26:36] SK: So I think it was kind of the other way around. I wanted to learn about it before I needed to learn about it. I've always been interested in like how stuff works under the hood, and this was one of these topics where I found it really difficult to find accessible, simple information about how garbage collection works in general, but also specifically in Elixir and Erlang. I figured, well, I used to be a teacher, maybe this is a good talk topic. Maybe I can be that simplified, accessible source of information. Only later, it came in handy when I had to debug some memory issues. [00:27:18] SM: Yeah. That is kind of funny. I do feel like, usually, if I have a really cool talk idea, it's because I just solved something or was in the middle or am in the middle of solving something in the way that I take notes. When I look back at it, I'm like, “Oh, that's like 10 seconds away from being a talk or a blog post. So, maybe I should work on these notes a little more.” That's usually how it goes. But it's interesting that it went the other way for you. That's pretty cool. Very rapid left turn. Really wanted to ask you about your Twitter avatar. Is there a story behind that one? It’s really cute. [00:27:49] SK: There's not really a story behind it. My partner commissioned a little family portrait of us and both our cats from this artist, and it was so cute, that we asked her if she could also just split it into two separate icons, so we could use it as our avatar. There's not really a story. It's just really cute and that's why I've been using it. [00:28:11] SM: Yeah, I think a popular trend that we saw in the last few years was because everyone had an out of date headshot, or maybe didn't want a headshot with their lack of haircut, were getting portraits made. I got mine done at Covatar, but I know some people, some entire companies got them commissioned from Etsy artists and stuff, which I thought was super awesome. [00:28:35] SK: Yeah, I think that's really nice. I've seen that at conferences too, that all the speakers get like a little illustration of themselves drawn, which I think is really nice. [00:28:43] SM: Yeah, that is a cute way of not making people pose for a headshot, but also normalizing the thing. It's fun, for sure. I have an art background and I just kind of love thinking about how the fact that this may be in one field, artists are hopefully getting more work thrown their way because there's more of a demand for this kind of thing. I know what we do for our stickers when we make our custom stickers for SmartLogic is we try to find an artist either on Instagram or Etsy and get them to make amazing little portraits of our pets, and then that's what people get at the Elixir conferences. [00:29:18] SK: Oh, that's so nice. [00:29:20] SM: Yeah, so I saw your avatar and I was like, “That kind of looks like an Covatar," but I haven't looked at it in a while. [00:29:28] SK: No, it's really nice. She was so good because, even before she did the colors, I could tell which cat was which, even before she colored them in. She just captured their facial expression somehow, even though it's such a simple style of art. So, that was really impressive. [00:29:43] OB: When I moved into this house that I'm in currently, my mom wanted to do something special. So she took three cats. She took pictures of each one or I sent her pictures of each one, and she painted each of them and exactly what you're saying, the face. Somehow she captured the personality and expression of each of the cats. You immediately see what was on their mind? I'm also kind of curious, your Twitter mentions “all around crafter.” So when you're not crafting Elixir, TypeScript, collecting garbage, what are you crafting? [00:30:14] SK: Well, that's just like a nice way of putting it that I have way too many hobbies. But my main hobbies are sewing and knitting and other related things. I've been sewing especially clothing for, well, since I was a teenager, so for about 20 years by now. It's my favorite thing when I'm not working. I like that it takes me away from the computer. It's creative, but still kind of technical, especially if you're creating your own sewing patterns. Yeah, and in addition to that, anything kind of sewing, fiber related, I do or have dabbled in at some point from knitting, crocheting, embroidery, shoemaking, although I have yet to finish a proper pair of shoes, but I dabbled in it. [00:30:56] OB: Shoemaking, that has to be – okay. I've seen shoemaking kits to learn how to do it, and briefly, for four hours, was interested in it and then I forgot until just now. So that sounds really fun. At SmartLogic, internally, we do a side project club where we try to help everyone who's interested in a particular project, keep ourselves accountable to something, and when I first saw it, I was like, “Oh, gosh, I never have any side projects.” But it's usually not even technical. It's one person doing an embroidery. Other people are doing quilts or knitting or weaving. I can't even keep up with everything. I mean, Owen, you've probably got the only technical side project inside SmartLogic right now. [00:31:34] OB: Right. [00:31:37] SK: Yeah, that's really nice. We also have – I made a thing channel in our Slack, and most of the time, it's tech projects and I just go, “I knitted a hat. There you go.” [00:31:45] SM: I like that. I always like hearing about people's non-technical hobbies. I think, again, just like humanizes a person, you are more than the code that you write. I had somebody at my apartment the other day and they were like, “Oh, you have a piano here. Do you play?” And I was like, “I can't even say yes to that right now. Because no, I haven't played in a long, long time. But I like/liked to, I just have so many hobbies.” This just doesn't happen. I have to like rotate them in and out. [00:32:12] SK: Yeah, definitely. They come and go. Sewing is the only constant for me. Everything else, I buy a lot of stuff, do it for two months, put it away. And then a year later, I go like, “Oh, embroidery. Yes, I have things for that.” And I unpack it all again. [00:32:27] SM: Absolutely. I think my consistent hobby is probably bullet journaling. But they also need that. I need that to function. But I don't have to make it pretty. I bought a lot of washi tapes, and that that makes it pretty for me. [00:32:39] SK: See, that's where I get stuck with the bullet journaling. I get too focused on, “Oh, it has to be pretty”, and then one page isn't pretty, so I give up. [00:32:47] SM: Yeah, my hack now is I get really pretty washi tapes that I just pull out, stick on, and then all of a sudden the whole page is pretty because the tape is art itself, and I just don't have to do anything else, and I just go ahead, go on with my life. I got my book right here. So much easier. It is interesting, though, that you refer to sewing as technical though, because there's a technical aspect to it. I don't personally do any sewing or patterns or anything because it looks too technical to me. I can't do like the math part of cooking when I'm cooking, and I feel like there's a lot of math in sewing. So when you describe it as technical, do you feel like there's any coincidences or any kind of pattern matching? Could be double entendre here, but literally patterns between sewing and your code writing? [00:33:33] SK: Yeah, definitely. I think one of the things is like, do you see where you want to go, and you kind of have to figure out the steps to take to get there. It's different in some ways. But if I see a fancy dress in a store or whatever, then there's so many things that you have to keep in mind to make a dress like that. What kind of fabric? What's the style? Should it be tight or loose? What sewing techniques do you use? I do think that actually, that step by step thinking that I already knew has made it easier when I was learning how to program, to break things down into like small steps. [00:34:12] OB: So, I'm just having flashbacks. I think last year I was watching a show. The only reality shows I will watch are like drag race, RuPaul’s Drag Race or there was a show, Next in Fashion. And through that show, I was like, “You know what, if I needed another hobby, I would probably start learning to design patterns and stuff.” I've developed a taste for like, very loud shirts. I can imagine the problem solving you get from engineering. There's a lot more problem solving than I kind of was aware of through watching the shows, especially Next in Fashion, they're talking about – of course they're doing things under the wire, like they have almost no time to put things together. They're working with all these different materials and leather is very different from vinyl, which is very different from all the different kinds of fabric, and that all affects maybe the design of the thing, and also how it comes together, and whether or not it actually looks right. [00:35:06] SK: Yeah, definitely There's also quite a few people are doing really cool work at like the intersection of sewing and code. For example, what's really cool is there's an open source project called FreeSewing, and they create made to measure custom sewing patterns based on your measurements, just in the browser. It's a super friendly community. I've done some very small contributions in the past, not as many as I would like. Because once again, time is always an issue. But it's really cool. If you want to check out sewing and code, it's really worth checking out because people aren't standard sizes. A sewing pattern usually doesn't fit anybody perfectly out the box. Just when you go to like a store, it might be your size, but there's always, maybe you're tall or you're short, or I don't know, your legs are long. So, this is a really cool project that I would encourage anybody with some sort of interest in sewing or crafting to check out. [00:36:07] OB: If you don't want to hand thread everything, is there like a sewing machine you recommend starting out with? [00:36:14] SK: Oh, I've been sewing for so long that my machine isn't really a beginner machine anymore. But most well-known brands are fairly sturdy. I personally have a refurbished machine from the ‘90s. It's really old and sturdy and heavy, which is what I like. You don't need the fancy computerized bells and whistles, et cetera. You really only need two or three stitches. So, a sturdy mechanical machine is what I would recommend, and my favorite brand is Pfaff, which is a German one. But it's a little bit on the pricey side, generally. [00:36:46] SM: I really want to take this moment to shout out SmartLogic developer, Bilal, our resident developer and fashion designer, which I didn't ever think we would have. But I mean, we have resident everything at this point, literally drove 12-ish hours to go pick up his sewing machines. I was like, “Could you not have bought?” Oh, I guess he couldn't buy them because like they were custom to him, and like he had done them up himself and they were his. [00:37:13] OB: They were like industrial grade. [00:37:16] SM: Yeah, like I can totally – I could say the same thing about my figure skates. It would probably be easier to go to into a rink and buy figure skates than to drive across the country to get my figure skates. But they're my figure skates and I need that. [00:37:28] SK: Exactly. [00:37:30] SM: But yes, shouting out Bilal right now, because I didn't realize we would go here. But we do have – it's a crossover intersection that apparently happens more than once; developing and sewing. So, this was the fun thing and I loved it. [00:37:42] OB: Yeah, I've seen neon lights that people will – not neon, neon, but like glowing lights that people will kind of thread into costumes, I'm imagining, with Nerves and Elixir, you could have like a tiny little Raspberry Pi, that could be networks and your whole like clothes could be Internet connected in some way. [00:37:59] SM: I have 100 percent seen that in person before, not with nerves. But I have seen Raspberry Pi connected to a designed t-shirt where every time somebody tweeted the particular hashtag, the t-shirt lit up. It was kind of wacky, but it was a cute experiment. I think college students in their senior year of electrical engineering were like wiring that up, and it was fun to witness. The intersection of art and tech is definitely something that I love talking about and exploring more. Sanne, I would love to know, you mentioned that you specifically kind of work more on the Elixir side at CodeSandbox, but do you all do, specifically, do teams specialization for people who are on the TypeScript side? People who are in the Elixir side? Or do you kind of crossover every once in a while? [00:38:42] SK: We don't crossover as much as I would maybe like or as much as we could do. Because in a startup, it's all like fast, fast, fast. So, even though we probably could take the time to like learn and crossover more, nobody does as much as we could. But sometimes, some people dip their toes into the Elixir code base. Or the other day, I tried implementing a feature start to finish, I ended up needing some help on the TypeScript side. People are always willing to help out and pair to help somebody get into a different codebase. But mostly in practice, we're pretty specialized. Recently, we have started to introduce, I don't remember what we called it, but every Friday, everybody is encouraged to work on what they think is important or what they feel like they should work on a one to work on, regardless of like the roadmap and like product focus, et cetera. So I'm hoping that that will also give people more opportunity to dive into different codebases and learn more things when they're specifically time for stuff like that. [00:39:47] SM: Yeah, I love that. So we do PD Day, Professional Development Day. I know Docker does like Docker Fridays, which kind of sounds similar. So, that's really cool to hear you get to do that, and I think that's a really good learning experience and also probably another thing that helps juniors get more comfortable with different pieces without the pressure of whatever deadline or roadmap they feel like they're following. We are all admiring Sanne’s cat right now, what a magnificent creature. [00:40:14] OB: And demanding. [00:40:16] SK: This is the cat who is also in my Twitter avatar. [00:40:20] SM: Oh, my gosh. It's moments like these where I'm sad that we did not record video. Alright, well, on that note, would you like to give any final plugs or asks for the audience? Where can people find you on social media? Is there any support that you need? Are you hiring? All that good stuff? [00:40:37] SK: Yeah, you can find me on Twitter @sannekalkman, which is probably easier to click a link in the show notes than to spell it. Yeah, we are currently hiring at CodeSandbox for a frontend developer. Later this year, I'm expecting that we'll be expanding the Elixir team, but I don't have a timeline on that yet. One little plug that we didn't actually get to talk about is last year for Spawn Fest, I started a little library called Sketch, which was meant to bring generative art to Elixir. I kind of got stuck on that because I need to learn OpenGL and work with OpenGL from Elixir. Speaking of being a polyglot. Anybody who knows OpenGL, has experience with that in Elixir, who wants to help me out, even just chat to get me started on that, please reach out because this poor project has been unloved for the past seven months because I couldn't really figure out where to start. [00:41:31] OB: We'll get a link to that repo and put it in our show notes. I know there are people working with OpenGL and Elixir in the community, and I've got a little bit of interest and experience with three.js, probably can’t help you with getting two loads to the metal there. But yeah, we'll get that link in the show notes to get you some help. [00:41:46] SK: Yeah, that was the biggest thing that I realized, like if you want to write a library, instead of use it, you do need to know how it works under the hood, which I did not and did not have time to learn in one weekend. [00:42:00] OB: Just to do a little Live View plug here, if you do some Live View hooks with JavaScript, that might allow you to use three.js if you're not doing something outside of the bounds of three.js. [00:42:11] SK: That could be promising. [00:42:15] SM: What we're saying is, a few months after this airs, this project will be done because everyone will have piled in to help you, which is what we love about this community. [00:42:24] OB: So many PRs. [00:42:25] SM: Maybe next year’s Code BEAM, I can announce Sketch 1.0. [00:42:31] SM: Amazing. Well, thank you again for being here. This has been so good. We have talked about every language, I feel like, under the sun, and lots about sewing. So very important episode guys. Yeah, that's it for this episode of Elixir Wizards. Thank you again to our guest, Sanne Kalkman, for joining us today. Elixir Wizards is a SmartLogic production. Today's hosts include myself, Sundi Myint, and my cohost, Owen Bickford. Our producer is Bonnie Lander and our executive producers Rose Burt. Elixir Wizards is the SmartLogic production. Here at SmartLogic, we build custom web and mobile software. We work in Elixir, Rails, React, Flutter, and more. Need a piece of custom software built? Hit us up. Don't forget to like, subscribe, and leave a review. Your reviews help us reach new listeners. You can find us on Twitter @SmartLogic or join us at the Elixir Wizards discord. The link is on the podcast page. See you next week for more on Elixir in a Polyglot Environment. [END]