Back to Community

Learn to code by telling the story of a program

Rebecca Mark works for Unison Computing, where her mission is to make learning the Unison programming language as fun and accessible as can be.

Watch on Youtube
LENGTH 39MINS

Jonathan: Rebecca, welcome to the Exercism podcast. It's fantastic to have you here. I'm very privileged to be able to have a chat with you. What, at 7: 30 in the morning on your side and now it is 4:30 PM on my side. Welcome. Whereabouts exactly are you in the world?

Rebecca: I am located in Seattle, Washington, so I'm calling you right and early over.

Jonathan: Nice one and I gather the coffee has been poured and you are you've got the refill on the go and it's warm and ready for the day.

Rebecca: Oh yes, right next to me. I've got an extra Chemex and my day is gonna be well fueled.

Jonathan: Okay. Brilliant. So Rebecca, welcome. I know a little bit about you from your involvement with Exercism, specifically with the Unison Track itself, but before we get onto digging into that a little bit I'd love to just find out a little bit about yourself and how you ended up in Seattle. A little bit of it is Seattle. I did say Seattle. Am I Right. in saying, Yeah, I did. Yeah. I thought for a second I had a memory, like a fish and I'd forgotten where you live, but it is Seattle. I'd love to find out a little bit about how you ended up there. A little bit about yourself, a little bit of your story and then how you ended up in tech and what sparked you to go down that road in your life.

Rebecca: Yeah, so my family actually immigrated directly to Seattle six generations ago. So it's been a really long time. Immigrant family here in Seattle. And I love it here. I went to school around here and it's actually a pretty integral part of how I got into tech because Seattle is a really big tech city. But I didn't actually study programming at university. I studied English with a focus on poetry, and so it might seem like it is. Yeah. It might seem like it's an odd fit, but I think it's relevant in some ways. I went to school here at the University of Washington. I was in Portland working in higher education for my first career. So working with students, trying to reduce the achievement gap for folks and keep people in college. That was my, my, my job as an. Life coach for students. And that was amazing. But I worked with a lot of online colleges and I saw the ways in which my students really struggled with the technology platforms, the ways that technology was also enabling them to have better experiences and to transform their lives and. Reduced generational cycles of poverty or oppression. And I wanted to be involved in that in a hands-on way. And, perhaps selfishly, education is really hard for a lot of reasons. It's really lovely, but it's also really challenging and in technology you do get to feel like you make progress every week. And it. Sparked up a problem solving aspect for what I wanted for my career. So I changed paths and applied to a school called ADA Developers Academy, which is located back in Seattle. So that's what brought me kind of full circle and ended up moving back and doing the year long program there.

Jonathan: So hang on. So you grew up in Seattle and then you moved away to work to start your career. Where did you leave to go from Seattle? What

Rebecca: I went to Portland. So just like a little bit south of Seattle. Yeah.

Jonathan: I see. Okay, cool. And then so now you did languages, poetry, English literature. I did that as well but in high school I loved English and all of that kind of stuff, so I was like, Woohoo. Another English literature student. Tell me about the fire. The process of going from your, seeing all of these problems being solved in front of you in terms of technology and all of that, deciding to take the leap. How did that process, how did you decide to like, okay, I need to leave and break the career pathway and move into something completely different. What was that like?

Rebecca: It was a little bit. It was a little bit of luck because I had been feeling like, Wow, I see my students, either doing really well or really struggling with this, and I wanna be involved. I'm not sure what other than what I'm doing right now, and I know, it's not feeding a part of what I want in my daily workflow. And so just halfway out of boredom, I started learning HTML CSS for lunch. And I would just like practice making little websites or little web forms. And I did completely free learning materials at the time. And it was just self studying and being like, What is this whole, internet thing

Jonathan: Yeah. Yeah.

Rebecca: Which is still a question I ask myself. But yeah it's just I don't know, I just fell in love with programming. It felt the closest thing to magic in, in some ways to like, make the little turtle, like move around on the screen or make a square show up. Yeah, and I just figured, okay, I like this and I also like the mission of this and how do I bring those two things in conversation and just. Formed a career out of asking myself that question over and over again.

Jonathan: Cool. And so the process then of. To code and go from a well, learning how to conceptualize and frame what was going on the computer, but have a mental model for it. One of the things that's interesting when I talk to a lot of people and I would actually say is true of my own experience with development, cause I'm slowly encroaching on that space piece by piece. Was having a mental model for what's going on and being able to generate. In your mind it is a huge part of learning to code. So how did you do that? What was the, how did you find out about how you learned, if that makes sense. You're looking at c html and you're like, Okay, cool. How did you start to order that information in your brain? If that makes any sense

Rebecca: Yeah, no, that's a great question. How did I formalize that? I think one of the things that was drilled into me from my education in literature was, you read carefully. And you read between the lines and you pay attention to the form of things. And I think a program has a form. I worked in type languages, and so there's very specific, there's ways in which you can write a truly non-com compiling thing. I

Jonathan: Yeah, exactly. Yeah.

Rebecca: When I program I like to think about okay, what's the sort of structure of the goal, What's the narrative? And I know that may be atypical, a sort of very atypical way of imagining, what a computer is doing or putting, a, a and b together. But yeah I've always just thought about, okay, what if I imagine the computer as a, as my protagonist, what's, what is it doing at points A, B, and C? And how does it achieve the goal that I want it to do? And it may not be as interesting a story as Finnigans wake, but opinions vary about that. But that's the model I've.

Jonathan: That's fascinating. What you talk about now, I can totally place that onto a program or code. Like you have your scenes, you have your characters, which you could say are like variables, or you have then the plot, which is kind of fun. We could go down a huge rabbit hole and maybe you're gonna come across some form of English lit students who actually become developers. But I think the reason I ask that is because, Rewiring and a lot of people learning to code, actually having to come from a new career or from an old career, excuse me. And actually learning to swap around and find ways to re engage mentally. And so I was speaking to Bobby Towers, one of our other contributors. You, you might know him, but. He comes from a musical background, like a highly musical background, and he's developed like his own one handed keyboard to be able to type one handed because he'd had an accident with his other arm. And I'm sure he won't mind me sharing that, but it was really interesting having a conversation with him about how he understands music and the patterns and the things that are very typical of music and how they translate into development. And I think what's exciting about these conversations is I'm realizing that everyone has their own unique way of. Taking the information that's out there in documentation, very pragmatic information and scientific information and bringing it a flavor of their own. So that's really interesting. So you've started like learning how to code css, html starting to frame things, starting to build a narrative with your, in your mind you could say, how did you then, Deepen that knowledge and what happened when you hit like a roadblock mentally, where you found it really hard to push through and see the wood from the trees. How did you find those obstacles and how did you overcome them?

Rebecca: Yeah. Yeah. That's a great question. I think I encountered obstacles all the time. Like I'm definitely, continuously running up against the wall. And the thing that has really helped me, I think in those moments is to draw on a network of people. It's really been community and friendship and mentorship that have helped me. When I've encountered hard challenges or even just things that are new. For example, when I did my internship right after my programming school I had a really good friend going through. Through it with me. And she was there to normalize, like if I was ever feeling like, Oh, I don't know this and maybe I should know it, I could go and talk to my friend and be like, Do you know this? And she'd be like, No. How would we know that ? The ability to

Jonathan: like, Oh yeah, I will. Made

Rebecca: yeah. I think having people around me helped normalize where I was in my journey and people. Have been really generous with their time and their support. And so my attitude always is to just pay that forward. Because yeah, it's been the community that's really held me afloat through hard times.

Jonathan: That's really cool. And so you did a year of like boot camp. Could you say, could you call it a boot camp or was it more like a specific school? Not that there's much difference, but

Rebecca: Yeah, I think it might be classified as a boot camp. The program ADA is, I think, unique in some ways because it's not that you don't pay to go to it, it does not have a tuition model. So as a student you apply and there's some pretty rigorous application processes. And then if you're selected, then it's companies who want an intern through this pipeline cuz they see the value in this program. That actually sponsored the whole school as well as grants and other nonprofit sources. It's really incredible, as a model because as a student, it's hard enough to go without an income for a year as you're learning. So the fact that I didn't have to pay additional tuition was really helpful for that.

Jonathan: Okay, So you essentially. Got sponsored prior to the, So did a company say, Yeah, we'll sponsor you and then you work for them at the end? Was that kind of how it worked or was it, you passed the test and then at the end there was like an opportunity that was given over to you to engage in, Is that

Rebecca: Yeah it's more the latter. So at the time what companies would do is they would sponsor, end number of people. And then the school would say, Okay so we can admit that many and then add up the midpoint of the year. You have this sort of shuffling where everyone kind of interviews with different companies and they're feeling out what could be a good match. And then they run an algorithm, an optimal match algorithm. And then you end up with a company. Yeah, they do .

Jonathan: actually did that, so it was,

Rebecca: Yeah. It's kinda like the match algorithm for medical residencies.

Jonathan: Okay. I see. Interesting. And okay, so now what did you study that year? Was it JavaScripts traditional? I'm gonna get a lot of hate now for calling JavaScript a traditional coding language. But what was the, was that the kind of, what was the curriculum like and yeah.

Rebecca: Yeah, so at the time the curriculum was a Ruby based curriculum and you would learn html, css, and then for sort of web application development you would use Ruby Rails, Sinatra for kind of web framework stuff. And then we also used an. For more front end development. Because that was a component as well. And it was a lot of teaching us about o API integrations, how to stitch together different parts of an application. And it was a really collaborative workflow as well, so they tried to mimic as closely as possible, what it would be like to work on a team together. So that was really cool too. So it was a really hands on practical education and software.

Jonathan: Okay. Wow. And, okay, so that's, I'm going through. I love just hearing the story of how people ended up, where they ended up. So then you work for Unison, which is a language now. How did that come about? Off the back of all of this, and maybe you can just explain a little bit about Unison. For everyone out there, just so that they have an understanding of what that looks like. And we'll put everything on the show notes anyway as well so that people can go and have a look. But yeah, explain, go for.

Rebecca: Yeah. Unison Computing is the company I work for and we're writing a new programming language called Unison. And the sort of core difference with this programming language is that your code base is not a mutable bag of text files. All your functions are hashed to an AST and they are content addressed. And that's a. Technical stuff. The benefit to you as a programmer, as a working programmer is things like distributing a computation programmatically becomes really simple. There's a whole class of issues around serialization and derealization of data that kind of goes away if your code could be programmatically addressed and retrieved. So we are really interested in improving them. The working workflow of programmers with our programming language and enabling people to write full scale distributed systems just with one programming language, not having to consider some of the costs operationally and intellectually of a fully realized production system. Yeah.

Jonathan: That be like the backend front end? And please correct me if I'm wrong, but would that mean you could write a full web application in one language across the board, front end, back end, all of the other stuff?

Rebecca: We're truly a backend.

Jonathan: Okay.

Rebecca: Yeah, we're truly a backend language. The real intervention there is that there's a whole set of like operational complexity around say, Managing a Kubernetes cluster or managing, a zookeeper cluster or even just a fleet of microservices that unison can describe programmatically and then run a program against without, you having to do all that work.

Jonathan: And what is it that you do for unison on a day to day basis? What is your involvement there and what are the pros and the things that you really enjoy and what are the things that maybe you find Oh, I wish this would be better or different? Like how's the day? How's the

Rebecca: Yeah.

Jonathan: today? I don't know.

Rebecca: Today, hopefully I have got a website deployment that I really wanna knock out. So I'm gonna be improving some of our documentation, like our language documentation. And the big goal this week has been I'm. Our distributed ecosystem, some of which might show up on Exercism. So check out our track. So my role

Jonathan: plug.

Rebecca: Yeah.

Jonathan: Yeah.

Rebecca: My role is to help people learn unison and to feel like they can step into the language and gain working proficiency and feel welcomed. Get the information that they need to realize whatever their goal is. So yeah, and any, that sort of a grab bag of activities is what it ends up being during the week because someone might need troubleshooting, or another person will be like, This link is wrong on the website. So it does vary. I think the hardest thing is, working in the context of the pandemic and working remotely, it's really hard to build a community. A lot of the conferences or tech events that might have been happening during this time have really taken a backseat understandably. I think that's something that I do miss is excitement around Oh, I'm gonna go present in Leon France this week, or something like that.

Jonathan: Set lifestyle of the tech industry. There we go. Come to a grounding hold

Rebecca: Yeah. I missed meeting new people, so I think, but I think that's set to improve hopefully in the coming.

Jonathan: So do you work remotely at this point in time, So your team is spread all over the place? All over the states. All over the world. Where is your team at the moment?

Rebecca: Yeah, we've got a lot of folks over on the East coast, so kind of Boston, Rhode Island area. But truly we're a fully distributed company Fittingly and so yeah, I'm over on the West Coast. Some folks are in the center. Part of America and yeah, it, we don't have an office at this point. We're fully in our little areas.

Jonathan: Okay, so how do you have the opportunity to go out and meet other people in the tech space at the moment? Or is it like you said, everything is ground to halt and it's a little bit good to wake up in the home office? Close the door, leave, go home up the corridor. You know what I mean? Is it, are you, how are you finding that as a whole? What are some of your challenges, like in terms of staying connected with work or how are you dealing with the situation currently? And yeah. What does the future look like for you in, in, in that and for unison as a team? Is it remote long term or is it kind of the goal to move into something a little bit more? In person.

Rebecca: I I think the goal is to stay remote. It works for a lot of folks. Who have duties outside of work or, and fundamentally I do really like it for some reasons. One thing is we have had an online conference this past year. And I hope that continues, as we continue to grow the community, maybe we'll even have an in person component for next year. And another thing that we're doing actually in the coming month is we're gonna have a company in person retreat. So we've rented this big, Yeah, we've rented this big mansion in like Boston and we're all gonna kind of swarm over there. And it's got all these cool rooms in a tennis court and we're just gonna work. Together and do more of the planning activities or sort of vision activities that would probably best be done in person. We are like bringing the crew together a little bit more. Now that, that's become more of an option.

Jonathan: Yeah, I think those, We had a similar meetup in Septe August with Ex Exercism beginning of August and found that was really good for just like team connection and especially moving the needle on. Some of those big projects that either needed to be finished or needed to be kicked off the ground. So I'm sure that'll be super fun. Now Rebecca, you've also been highly responsible for the ex for the unison, Exercism track and building that all out. Tell us a little bit about that experience and how you came across Exercism and what your hope is for that track going forward.

Rebecca: Yeah. Yeah, no, that has been a really fantastic experience. Exercism was initially serviced to me from my coworkers, St. Who is a big fan of the platform and has used it before. And at Unison, , I didn't have the resources to build out a full learning content management platform. We're a pretty small crew and we've got a lot of other objectives and so I was like, how do I get

Jonathan: years later, Rebecca's still like

Rebecca: Yeah. I'm still making

Jonathan: it.

Rebecca: the platform. Yeah. So we knew we needed to partner with a different organization too. Get the unison language out there for folks to try and, hopefully if there was a browser component, that would be really awesome because people could engage with the language in a really lightweight way. And so when we saw what Exercism was offering we were like, Okay this is a great community. It's growing, it's free. That's really cool. Our users would like that. So yeah we just decided, okay, this is gonna be how people can practice. The process itself for building out the track is a little interesting because unison is not a file based language, right? Like your code base sir is hashed and saved into a code base and most other languages operate with files on a file system. So there were some interesting technical challenges there.

Jonathan: Just expand on that a little bit. Like what? I'd love to, just. Speaking as a non-technical person, I'm sure Jeremy would laugh at me at this point for asking a very technical question, but just dig into that a little bit into some of the challenges and I'm sure people can pick up a little bit of what you're talking about if they're listening.

Rebecca: Yeah. So in unison you work in these things called scratch files and scratch files or anything suffixed with the dot U, and they're truly thrown. They're throwaway files. You write your little program, you might run it, in a rep-like experience or a notebook-like experience, but then you delete. the function from the file cuz you've saved it into, the unison code base itself. And so the unison code base is the source of truth, not the file system. And where that becomes interesting with integrating with Exercism is of course, The Exercism looks at the file, it's handed a file and runs a bunch of tests against it, and then says, Okay, the student has, passed the test or here's some issues. And it ended up working out okay, because every time you run the test, you basically get issued a new Docker container. There's some technical stuff that happens on the back end that is really clever.

Jonathan: magic wizardry.

Rebecca: Yes, there's some magic wizardry. Eric gets a bunch of snaps for what the platform does. Yeah, it ended up working okay. But the fundamental model of unison as a language is that it's not a file persisted code base. So if students want to save their work, run per run,

Jonathan: What do you do

Rebecca: Yeah.

Jonathan: You, where

Rebecca: Where

Jonathan: So that, So does that mean a student has to start, Technically would have to start at the beginning of every, like at the beginning of the curriculum. Pretty much every time. Because that's where my mind went was like, Oh, no saving. But then maybe that's just the silly way that my brain processes. But I was like, Oh, wow, I have to start again. at

Rebecca: So , the fortunate thing is the web interface saves the last run. So while we don't necessarily save the file system or save the file state, the Exercism platform itself. Saves the student's work. So that's really cool. That, that is, is really awesome, And then if a student is using the command line, then they have access to the full suite of the sort of whole unison experience, right? Cuz then they're actually downloading the UN and code based manager and working with it directly. Yeah, there's a lot of flexibility between the web based interface and working on the command.

Jonathan: Okay. That's really interesting. It's so cool cause every time I talk to a different maintainer or contributor on the X and platform, just the nuance of each language and the little, like intricacies and the stuff like that, it just blows my mind how many different ways there are of doing stuff across the board. Okay. So now you're at Unison. I think now would be a good opportunity to ask you the question that I hopefully prepped you enough beforehand for around this whole concept of the hill that you would die on in the tech space. Ultimately, what one thing are you like? This is my. My view and I think it's absolutely essential, and I wouldn't budge from this. I would fight if we don't use the word fight necessarily at Exam. It's more what would you wholeheartedly put yourself behind and say, This is a, this is something that I really wanna stand by. What, what thought? Or it could be like, put your functions before your css. I don't know. I'm just making something up, but it, I dunno what it could be.

Rebecca: Yeah. My, my hill that I will die on is that I think, ha, I think tech too long has accepted toxic personalities at the cost of, cuz they're technically brilliant. And I think that. Should be inverted. . I would much rather

Jonathan: it. I love it. Yeah.

Rebecca: would much rather work with 50 really competent, hard working people than one genius jerk. I, I don't, I have never really understood. The acceptance of like really toxic behavior. Just cuz someone is super smart that has always

Jonathan: I have a feeling that is changing slowly in, in tech as a whole. And I think the reason, and you can tell me if I'm wrong, cuz I'm ex's culture. I love it. I absolutely love it and I know what you're talking about. But in the sense that, The more people that are learning from lots of different backgrounds and cultures and experiences the more that tech becomes a thing, I think the more you will see that inversion, I think take place. And I think that makes me super excited. And I think just thinking about the tech space as an outsider, it actually at this point in time is really a transfer of wealth in a sense because you have a fairly small group of people who have knowledge. Because that knowledge, like even like understanding the command line or what the heck is going on with like your bash scripts and all of that kind stuff, I haven't got a clue what's going on under the hood, but the tr the knowledge is causing a lot of money and energy and finance to go into that space because that's who have the skill and the knowledge and in order to do that I think, I hope I'm right in this over time, over the next couple of years as people learn and people are able to push back and counter and come with different ways of understanding stuff that we will see that shift. I'm positive and I'm hopeful of that, but I think I agree with you on that. I think it's been really interesting. Ultimately, what I've experienced is you can have the genius, but actually the amount of energy required to manage that on an emotional level and plus the fallout with other people, plus the stress that other others have to handle with clients, for example, or with the team it actually balances itself off and I've not seen like a holy positive experience. Someone has to pay. In the system, someone is paying for that. So I'm very with you on that and I think that's something that you can apply that also to like tech solutions for things. It's This is the one way to do it. It's like, like, no, there's actually 20 ways and there's all trade offs. And actually the maturity is to say what is the trade off that you're willing to accept? Rather than being like, No, this is how it has to be done. Cuz it's always been done this way. Anyway, Penny's worth for me. But yeah,

Rebecca: Yeah.

Jonathan: I think I'm in agreement. Okay, cool. So I think we are both on the same page with regards to That whole hill. I'm realizing there's a lot of hills that I'm signing myself up for at this point in time.

Rebecca: Yeah, every time

Jonathan: Everyone I speak to, I'm like, Yeah, exactly. I'm like, wow. I, at the moment, I'm dying on seven hills at this point. At least. But no, I really like that. Rebecca, what for you in the next couple of years? What is it that you're hoping to learn or hoping to see f in your life? In tech as a whole? What's your kind of dream? What's your perspective on that?

Rebecca: I think I would love to see the unison community grow in a way that's really sustainable. Really welcomes people from different backgrounds into it. That's wholeheartedly, That's the reason I joined Unison was the opportunity to shepherd a community forward. But in the long run, I would also love to re engage with people at the very beginning of their tech journeys. People who were like me 10 years ago who just were. What is, how do we make the internet work? They're curious that they don't necessarily have the background and have different ways of thinking about tech. And I would love to do programming for poets, have

Jonathan: That would be amazing. Songwriters and poets. Some code. Yeah.

Rebecca: Yeah, so hopefully I do get to engage with folks at the beginning of their journey in tech. I think that'd be really awesome.

Jonathan: So then if you had 10 people walk into a room right now who all completely had no idea about coding and development and the world that is within, what would your top three tips be for them to get going And they had no choice. They had to learn. It was like, cool, you are here. There's no get out. You have to just get on with it. What would be your kind of, where would you start them and how would you go about it?

Rebecca: I would tell them that. They should look around the room and see everyone's success as their own. And then I would probably tell them to , I'd probably tell them to invest in learning how to test a system and check their work. I would tell them, Oh gosh. I would probably tell them about using a debugger for practical stuff. But I think the first point is really what I would tell them is to see everyone else's success as their own. Because on

Jonathan: You think I love you? Yeah. No, cuz I, That's a really interesting point. So we ran these cohorts just recently. I dunno if you know that we ran two 30 day learning experiences in the Alexa Track and in the go track. So we've done and we had 300, no more than three, 700 people sign up for the Go track. And we had about a hundred on the Alexa track. And it was so interesting because we were, we really wanted to do some experiments about how people would learn together. Because we realized that learning together is one of the most key aspects in terms of accelerating people's learning towards or, and achieving a goal. So the fact that you said, I really like that and I think I'm gonna have to talk to you more about that at some point about making each other succeed on their own, because I think, if I'm honest, that is such a powerful tool in, in, in terms of learning. We often operate, As individuals isolated. And actually one of the things we really feel is the acceleration comes from the community from getting another person's perspective. And actually I think I'm gonna have to poach that line and maybe ask you for it generally to make others a success,

Rebecca: Please

Jonathan: as a priority. Maybe we could do something around that. But that's really cool. I really like that. Thank you. Thank you for sharing that, Rebecca, Thank you for your time. I think it's been really cool just chatting and having a good time talking about coding and tech and all of that kind of stuff. So thank you for waking up early for brewing the coffee and for making time for me. This morning or in your morning and yeah. Appreciate it. And for everyone listening, check out unison language. I'll get the show notes rustled up and put into the blurb and the description for this podcast. But it's been great to have you. Thank you so much and I will stop the recording and then we will kill chat a little bit off the back of this. So stay with me, Rebecca, but everyone else, let's see you later. Yeah.

More Stories from our community

Listen, learn and be inspired by our community members.