The Relicans

The Relicans is a community of amazing relicans

Recursively creating communities of developers; learn, create, teach, repeat.

Create new account Log in
loading...
Cover image for Transpilers and Teaching with Cameron Dutro

Transpilers and Teaching with Cameron Dutro

Mandy Moore
Single Mom 👩‍👧 🐶😺😺😺😺 Owner/producer: Greater Than Code 💕 #DevRel 🥑 WiT/D&I 👩🏻‍💻 Podcast Production 🎙 #BlackLivesMatter #python 🐍 she/her
・29 min read

Relicans host, Ali Diamond asks Quip Software Engineer, Cameron Dutro to explain Kubernetes and Docker to her like she’s five, gets his take on computer science and engineering education, and has him explain how being a teacher has made him a better co-worker.

Should you find a burning need to share your thoughts or rants about the show, please spray them at devrel@newrelic.com. While you're going to all the trouble of shipping us some bytes, please consider taking a moment to let us know what you'd like to hear on the show in the future. Despite the all-caps flaming you will receive in response, please know that we are sincerely interested in your feedback; we aim to appease. Follow us on the Twitters: @PolyglotShow.

play pause Polyglot

Jonan Scheffler: Hello and welcome to Polyglot, proudly brought to you by New Relic's developer relations team, The Relicans. Polyglot is about software design. It's about looking beyond languages to the patterns and methods that we as developers use to do our best work. You can join us every week to hear from developers who have stories to share about what has worked for them and may have some opinions about how best to write quality software. We may not always agree, but we are certainly going to have fun, and we will always do our best to level up together. You can find the show notes for this episode and all of The Relicans podcasts on developer.newrelic.com/podcasts. Thank you so much for joining us. Enjoy the show.

Ali Diamond: Hi, everyone. Thank you so much for tuning back into the Polyglot podcast. This is Ali. I'm @endingwithali on everything, including Minecraft, so be sure to go and follow me. And today, we have Cameron Dutro here.

Cameron Dutro: Hey, what is up?

Ali: Hi. And I'm super excited to be talking to him. And I'm just going to give you a few seconds if you want to introduce yourself and tell a little bit about your story because I think there's something super interesting in there that is super relevant to this podcast.

Cameron: Yeah, for sure. And hopefully, I hit on this when I describe who I am. So yeah, I'm Cameron Dutro. I work on the Quip engineering team. Quip is a company that’s owned by Salesforce. We do enterprise document and spreadsheet software. Before that, I was at Lumos Labs for a couple of years, and then before that, I was at Twitter. So I’ve had a wide breadth of experience in the industry, different companies. I also recently started teaching at Principia College, my old alma mater. I’m teaching a cloud computing course. And when Ali asked what topics we could talk about, one of the things that I mentioned was that I've also done a lot of work in transpilers. Well, when I say lots of work, I just mean mostly in side projects working on transpilers, mostly for the Ruby programming language. Did I hit the thing that you were hoping I would hit on?

Ali: You did; it was transpilers and teaching, which, as you just told me before we started recording, you actually just came from teaching a class, right?

Cameron: I did. Yeah, that's right. I have one cloud computing course that happens every Monday and Wednesday for about 1 hour and 15 minutes. And it's all virtual, of course, because everything's virtual now. And it’s ten students, it's a pretty small school, so not very big class sizes. And it's been a lot of fun. And I’m happy to talk about what we've been doing in the course, too, if you like.

Ali: I was going to ask, what did you teach them today?

Cameron: Okay. So today, we've been looking at Kubernetes. And I personally really, really like -- This is my favorite part of the course so far. We looked at Docker first, and then we looked at Docker Compose, and now we're translating our apps that we've written that used to run just in Docker Compose on our personal laptops into these applications that will run in Kubernetes. We're looking at all of the different resources Kubernetes provides and how to write your YAML files, then deploy those to a cluster and spin up your app in the cloud. And we're using AWS for this. So we also talked about the AWS-specific extensions to Kubernetes. They offer EKS, which is the Elastic Kubernetes Service, pushing images around. There's so much to that whole thing that we've spent probably the last couple of weeks trying to define it, understand it, write the resources that would launch an app into the cluster. So today, specifically, I was talking about that topic and specifically about the resources for this game that I made for them the last week, which was a lab that we did in class, which was an escape room lab. So they had four different rooms that were little web apps running in the cluster, and they had to use Kube control and curl to figure out what the passwords were for each of these rooms. And once they correctly guessed the password, the room would let them out. And they had four of these rooms to play around and just mess around until they could figure out how to get out. And so we were doing a deep dive into how I had written the resources for those rooms and then launch them into the cluster.

Ali: Awesome. So as a teacher, you have to have a lot of familiarity with these topics. And I'm super curious about your take on the explain like I’m five Kubernetes and explain like I'm five Docker.

Cameron: Sure. Yeah. First of all, I would say that there are people that are way better at that than I am; Kelsey Hightower comes to mind right away. But if I was to take a stab at it, so what I often say to students about Docker (I'll start with Docker first) is that Docker is a way of packaging up an application into a single deliverable unit called an image. An image is really just a set of layers of file system changes. So at the end of the day, you just got a bunch of files on disc, and all those files are things like your application code, but also dependencies so JavaScript packages or Python packages, or RubyGems or whatever you have, you know, Java JARs, all those things your application needs to run. And also, I would also mention operating system packages or packages that are installed by Aptitude or Yum or whatever. All those things make up your application. It needs those things to run. And what Docker lets you do is package all of those things into an image that you can then run basically anywhere that has a Docker installation on it. So, for example, in our class, we take our applications which are written in Python, Flask, and we have a little Docker file that describes how to copy all those source code resources into the image and runs commands to install packages. We're installing, for example, the MySQL client library, the headers, and the binary for that, which is something that you can get from APK because we're using the Alpine-based image and then all of that stuff gets packaged up into an image. And then you can push that anywhere you want, sort of like you can push source code. So in Git, for example, I can commit a file and push that file, and somebody else can pull that file down; the same thing is true of images. You can push those up to what's called a Container Registry, and then you can pull those down on anywhere else, including a server, and then run that using Docker on the server, and it will spin up your application and start listening to requests. So, yeah, Docker is a really cool way to package up your application, including all of those dependencies.

And then Kubernetes is a way to…or is a system or a framework maybe a platform upon which you can deploy your applications so that they run in the cloud without having to do a lot of extra work. So when I say extra work, and normally all you have to do is pull down the image, run it. And if it ever died, you'd have to make sure you go in there and restart it, so Kubernetes helps with all that stuff. It'll start up your application for you. And then, if it ever dies, it brings it back up again. So it helps with high availability, and you can also describe your whole infrastructure in just a series of YAML files. It's very declarative. So you just give that to Kubernetes. It will read that in and then basically do whatever you want and make the state that's in the YAML file match the state that the cluster currently has. They call it a container orchestration system, so it orchestrates, or it does what you want based on this configuration.

Ali: Now, if a five-year-old, a toddler, a kindergartener was like, “Sir, what is Kubernetes?” How would you really explain it to a toddler?

Cameron: Oh boy.

Ali: Like, what analogy would you give it?

Cameron: So off the top of my head. [chuckles] Okay. Well, if I was talking to a five-year-old, let's say maybe this child is in school, right? So has a preschool teacher. Kubernetes is your teacher. She's organizing and coordinating what all the students are doing. And then each of the students is like a Docker container that's running and doing its own thing.

Ali: Awesome.

Cameron: There you go. How does that sit with you? Does that sound right?

Ali: A little better. [laughter] So, something that I wanted to touch on is your approach to teaching. And you've been through school; you've been through the gamut of the working world. Now you're back educating the future generation of developers, and engineers, and computer scientists. And I'm super curious, what's your take on computer science education and engineering education? Are you more of a theory approach or an application approach? How much hand-holding do you like to take for your students? I'm very curious to hear about why you made the choices that you did.

Cameron: That's an interesting series of questions. Teaching for me has always been about giving back. So I like to teach because I like to show people what technology can do when properly applied or potentially helping them unlock this creativity. Like, everybody has some creativity that's inside them. So I personally like to work on Ruby transpilers, but some people -- I had a student in 2015 -- And by the way, I should mention I don't teach full-time. I've only taught a couple of courses. This is only the second one I've ever taught. So I don't have a really great background in teaching, but like you said, I didn't go to school that long ago. And so I understand a lot of the struggles and a lot of the things that students go through, maybe even better than somebody who's a career academic. But I think everyone has this creativity inside of them that blossoms when they're given the right environment to thrive in.

And I'm teaching at the college level, so we're not talking about what I would call rote learning. I think a lot of high school is like, here's this formula for the Pythagorean theorem. Now do this in your homework a bunch of times. What I like to think about it is you're unlocking this student's creativity, helping them to understand how they fit into, in this case, computer science and how they make that their own thing. So when I teach a course, there's definitely some theory in there, but there's also much more hands-on than I would say a lot of other teachers maybe do. I like the hands-on stuff because that's how I learn best. Every time I've picked up a new language, a new technology, it's always been because I have a side project in that language or technology that I'm passionate about, and I'm trying in the course to spark that in my students also. So that's my approach. Does it always work out that way? No, because sometimes students, of course, just like any group of people, are going to have varying levels of enthusiasm about a course they're taking. Well, sometimes students can be really, really engaged. And on the other side of the spectrum, students can be almost openly hostile to the teacher because they view the teacher as somebody who is standing between them and a good grade, and all they really care about is passing the class and graduating, getting to the next phase of their lives. So I've had students at both ends of that spectrum. So you have to treat a course, I think, almost like a humanitarian exercise or...How do I put this? Not humanitarian, maybe, but as an exercise in just dealing with people. The students have different goals. They have different ideas of what they want to get from the course. And I try to incorporate as many of those different needs as I can. And again, that doesn't always work out as well as I would want it to. But that's my goal is to help them feel engaged in the course material, find what they think is cool about it, and apply that later in their lives, and then also try to cater to where they're at right now, too. Like, do you want to learn this stuff because you're trying to get a job, or are you just looking to pass the course and get on with your life? Does that answer your question?

Ali: Yeah, definitely. And following on that idea, what's been your favorite moment in your teaching career so far?

Cameron: Oh, boy. [laughs] Oh, my favorite moment by far was -- So this was back in 2015 I taught the intro course Computer Science 171, which is just intro to Java programming. It's changed now. I think it's Python now, which I think is a lot friendlier language, so I'm glad they did that, and they made that switch. But back when I was teaching then, there were some students -- I was younger than most of their professors. And so I think that they felt a little bit more willing to approach me and talk to me. And so some students at one point came into my office, and they said, “Hey we're…” and actually it's so funny because I had actually chaperoned -- There was a girl Annika who I had just happened (super happenstance) to chaperone her sisters on some trip through a youth group that I was a part of for a while. And they had mentioned that they had another sister, and she happened to go to that college that I was teaching at. And I was like, “Oh my gosh, are you Annika?” She was like, “Yeah. Oh my gosh. How do you know who I am?” I’m like, “Well, your sisters and I knew each other from this youth group thing.”

And so she and I got connected that way, and she invited me to a hackathon (this in the St. Louis area) called Masters of Code with a couple of her friends at the school. And I was like, sure, I guess I'll go to this hackathon. We ended up having a phenomenal time, and we ended up winning the hackathon, which was super cool. Actually, it's so funny because I was teaching in St. Louis, but I lived in San Francisco at the time. And so when I was teaching at the school in St. Louis, they were like, “Yeah, we'll fly you to San Francisco.” And it's like, oh, I'm just basically going home. So we went to San Francisco and competed in the finals, so this was a regional one. Then we went to the final one at the end. We didn't win that one, but the whole experience was just the most fun thing ever because we really got to know each other, bonded, and that's not something that I think most teachers get a chance to do as far as I can tell. Most of them are involved in research. And I was willing to just dive in and do this hackathon with them. And it was just a lot of fun. So that's definitely the highlight, I think, in my whole teaching career so far.

Ali: Yeah. I definitely got my start, and to the job I'm in today, because of hackathons, actually.

Cameron: Oh, cool. They’re nice.

Ali: Yeah, and with hackathons, I realized that there's a lot of information that I don't know. And that was a really cool moment to be like, oh yeah, I need to learn more. But it was also a little bit of like, oh my God, I don't think I'll ever know enough to feel confident. And I'm super curious, for you, when did you realize oh, I feel confident enough in my knowledge, and I could go out and teach this concept to people? And what was your process of getting there?

Cameron: I think that I approached that the same way that I approach speaking at a conference, which is most people are only an expert in a couple of deep things. Most people aren't an expert, for example, in all of Kubernetes because it's just way too big to be able to understand everything. So there's a lot of specialization going on in that regard. The confidence in my case, I think, just came from, I mean, I think you have to accept that you'll never know everything. And as a teacher, your goal isn't to know everything; your goal isn't even to act like you know everything. Your goal as a teacher is to learn just like your students are learning. And I have learned a lot about Kubernetes just from having to put together slides for this course. So I think step one is just recognizing there's no way to know everything. And if you're a teacher and you're teaching something that's technically deep like Kubernetes, you're probably going to run into questions that your students ask you that you don't know the answers to, and that's okay. If you don't know the answer to something, the strategy that I always follow is, “Oh, I'm not sure.” Admit that you don't know what's going on. Like, “I'm not sure what that's about, but I'll get back to you.” I have a little notepad next to my desk here. I just jot down that question. I do some research, and then I either send an email or talk about it in the next class period. So the confidence is really not about the technical mastery of something, confidence is just knowing that if you don't know an answer to something, or if you don't understand a system as well as you want to, then the confidence comes from I know how to find the answer to this, and I am perfectly okay. I think one of the things I really struggled with when I was early on in my career was not admitting that I didn't know something or not admitting when I was wrong about something. And that's a skill that I've really tried to develop over the last couple of years. It's just admitting those two things and being sure that there isn't this hiding behind this title that I have as a teacher.

Ali: I want to keep talking about teaching a little bit because I also went to school, and I feel there was a lot of theory I learned in school, and there's a lot of basics I learned. But going from that step of theory and basics to having a stronger understanding, there's this gap in the tutorial world, the education world, in the CS world, that I feel like I've been really struggling to overcome. And I think a lot of other people can probably relate to that. You're past the point of the basic tutorial of understanding a language. You look up how to do something, for example, in React, and you're like, oh yeah, I've seen this before, but it's not sticking. Or it's like you're not able to get to that next level of understanding because there are so many more other moving parts. So how do you as an educator prepare your students properly to handle those situations?

Cameron: Boy, that's a fantastic question because I think it really gets to the heart of what I think education is. And we talked about this a little bit before. I mean, I think education is a good mix of the two things. Theory is important so far as it gets you a deeper understanding of some system or some technology or some concepts, but theory doesn't help you -- In my experience, a lot of theory does not help you land a job. Well, unless the theory is part of the interview questions. But again, any company that’s asking purely theoretical interview questions is probably not a good place to work. Again, this is just my experience; this is my opinion. I like a good mix of theory and hands-on work, a good set of labs, a good set of assignments because, at the end of the day, I do have to give a grade to these students. I have to give each one of them a grade, but the opportunities that they have should be multitudinous to demonstrate they know what's going on, that they've learned something, that they know the technology. That's what I'm focused on. I'm focused on can you demonstrate that you understand this concept, or can you understand this technology? And the best way I've found to gain that knowledge for myself and for my students is from hands-on experience.

So in the course that I'm teaching now in cloud computing, I mentioned this escape room lab that we did. That was a lot more valuable than me just sitting there talking at them for an hour, which I also did, by the way, about Kubernetes resources and how they work. They had a lot more engagement. There's a lot more engagement in general in the class when they were actually dealing with Kube control. They had to actually use Kube control and understand what a Namespace was and look at the services that were running. And each of those services had a load balancer, DNS name on it. How could they use that curl to make a request to the unlock endpoint? So you can tell when I'm saying all these things there’s a lot of vocab words in there, and that's where the theory comes in. We can talk about all these vocab words, manifests, and services, and deployments, DNS, and all this stuff. But all that stuff is just going to go in one ear and out the other, if there isn't, at least in my experience, if there isn't some hands-on coursework assignment whatever that bakes that in. Whenever I've learned anything, as I mentioned before, I always have to do it. I have to do some sort of project that bakes it in for me. That's how I've always learned. I can never learn things by just reading about them. So I think a lot of people are very similar that way. So to me, that's what I do in my class all the time is try to, or at least I try to, have this good mix of theory and hands-on.

Ali: Yes. I absolutely love that answer. And I think that's a really great way of how you approach teaching. But now, I want to pivot and talk about your teaching experience in relationship to your working experience. And I'm super curious, how has being a teacher made you a better co-worker?

Cameron: Oh, wow. What a question. So I think as a teacher, you have to be very clear. In any industry, I think it's very important to be a good communicator but especially as a teacher being a good communicator is important because you'll find yourself explaining concepts more than once. And oftentimes, you need to explain it in a different way than you did before, come up with a new analogy, or whatever because everybody learns in a slightly different way. And so phrasing something slightly differently may be the difference between somebody understanding something and somebody not understanding something. So for me, there's lots of emphasis, at least in my own thinking, about communicating clearly, about speaking clearly. And that I think has translated really well into my professional career because anytime that I compose a chat message or an email and if I have the opportunity especially to go and edit it, I'll do that, so just always paying attention to that clarity part of it. Am I explaining this in a way that makes sense the second time I read it? And I think as a society, [chuckles] we could probably do a lot better job of that in general. I mean, the number of typos and grammar problems and whatnot on the internet is huge. And I'm not saying you have to have perfect grammar and spelling, but definitely, clarity can really be inhibited by a spelling error, for example. I think being detail-oriented like that and being clear, trying to be concise, just taking some time to edit, taking some time to think about what you're going to say next can really improve your communication style. I think it can also really help people understand you better. As an educator, that's one of my main focuses, and I've definitely not been good at this from the beginning. Like, I really had to slow down and learn how to communicate, especially verbally, better. Also, as an educator, you're standing up in front of a bunch of people, and you're almost performing in a sense. And so one of the other things that's translated over really nicely, I think, is this confidence in speaking in front of a group of people. So if I'm at a meeting in my professional career and I need to present something, I have a lot more confidence that I'm going to come across as a competent professional because I do that in front of my students all the time. So yeah, I think those are the two big things, the clarity of speech and of writing and also presenting in front of a group of people.

Ali: Now, remind me, have you ever been a manager?

Cameron: No, I've never been a manager.

Ali: Have you ever been a team project lead, a captain?

Cameron: I've been a team lead before, yes.

Ali: So I have a question for you. Our audience is across all different spectrums, different walks of life, different age groups, different levels of employment. And I'm super curious, in your experience as a team leader and a teacher, as well as a student and a team member, what piece of advice is applicable for both team leaders and managers and the relationship with their subordinates?

Cameron: Hmm, boy, I think it really boils down to empathy. Remember that any interaction that you have with a team member, a teacher, or a classmate, whoever, that that person is a human being. And they have feelings, wants, desires, and those feelings, wants, and desires might be aligned with yours, but they might not be, and that's okay. And I think that the real important emotion, the important thing to cultivate in yourself is a sense of empathy for everybody that you deal with. I think that the way that I have approached a lot of things in my life but especially my professional career, is just understanding where people are coming from. If you can empathize with somebody, it's a lot easier to understand what their motivations are, what scares them, what makes them happy. So I go out of my way a lot of the time in professional interchanges to make sure that I'm putting the other person at ease. If you can have a conversation with somebody where they feel comfortable, you're going to get a lot more fruitful discussion out of somebody than if they're afraid that you are going to shoot down one of their ideas or you're going to treat them harshly or say something that they would interpret as -- And I'm not saying you have to be super conscious because sometimes conversations that are difficult need to be had. And that's just part of being a teacher in some cases, part of being a manager, and I imagine in some cases part of being a team lead. But as much as you can do to make people feel at ease with you, I think it goes a long way at making a relationship in the workplace or in the academic world; you know, the reaped benefits go far.

I can speak a little bit to some cases that I've had to deal with in the past as a teacher where that wasn't possible. So one example is one of my students was caught cheating during the final exam, and obviously, that's not okay. And I couldn't just say to that student, “Look, this is no big deal.” I had to say, “Look, this is a suspendable offense even, and I'm going to have to submit some documentation to the Dean, and there are going to be consequences to this.” But even in those interactions making the student understand or helping the student, in this case, a subordinate, understand that this is not something that I'm doing out of delight. I'm not submitting this write-up to the academic Dean because I love getting you in trouble, but it's something that I, as a professional, as an educator, have to do to maintain academic integrity. And that's absolutely key. If the student understands that this is something that has to be done because of an action they took and not because you hate them or whatever, again, that's another way to just make sure you're injecting empathy into every interaction that you have.

So yeah, I would say that even somebody who is a subordinate, somebody who is a student, somebody who's working on a team under you, if you're one of those people, empathy goes a long way too in understanding how your team lead, for example, what they're dealing with in their lives and all the responsibilities that come with being a team lead, all the responsibilities that come with having to report to somebody who's looking at your deliverables and your team's deliverables. So the pressure that they're under is different than the pressure you're under. And so understanding that also and empathizing with them is huge, I think.

Ali: I wanted to ask that question because it's surprising the number of -- Whenever I give advice to students, I always say, “Be straightforward. Tell the teacher what's going on. Like, if you're having a problem, go to them, let them know your face, let them know who you are. If you're at the beginning of a class really worried that you're not going to do well, introduce yourself to the teacher. Talk to them about your concerns and see what resources they have. They know how to handle this better than you just running around like a chicken without its head.” People don't realize that the teachers are there to help you in more than just to tell you how to learn this thing but help you get through the course okay. And I think that's such an underappreciated aspect of being a student.

Cameron: I really think that's very, very true. That's great advice. Telling someone where you're at is almost never the wrong answer, just connecting with them. I find that somebody who you have a frank conversation with there’s going to be a lot more respect there than somebody where you have a conversation and the conversation is like them hedging like, “Well, I guess I could do this,” or just maybe trying to hide some tough experiences. I have a student right now who has a difficult home life, and empathizing with that student is -- I've never had that experience that he's had, but I also understand that it must be tough for him to go through that. And so he told me straight up what he was dealing with, and I really appreciate that. It formed a connection between us that I think wouldn’t have been there otherwise. I can empathize with them a lot better that way now that I know what he's dealing with.

Ali: Yeah. And I think that's such an underrated aspect of going through the education system if you're having a hard time. And yeah, it takes a lot of confidence and a lot of motivation to be able to do that. But if you can get up and go to the professor, to the teacher, to the TA, and explain to them what's happening, that empathy is only going to pay off positively for you in the long-term.

Cameron: Yes, absolutely true.

Ali: So talking on the idea of the theoretical versus practical approaches, at my school, there were a lot of classes that were like, oh, you need to know how to do this before you start. What's your thought and viewpoint on those kinds of courses? Do I need to know how to write in this language even though it's never been taught to me, and it's something that's super low-language I just got to figure it out on my own? What's your situation there?

Cameron: I really dislike this concept of a course where you're almost set up to fail, or there's this concept of weed-out classes in some colleges and universities, and they're very well-known oftentimes among the student body. And my school didn't operate this way, but I know the University of Washington or Stanford, schools that I have heard about -- And again, I'm not trying to say these are bad institutions, just that I've heard that there are certain classes where only 30% of the students make it through. And the idea is that the class is supposed to test your mettle. Like, are you really serious about this? Do you really want to be a computer science major, electrical engineering major, or whatever? And they're designed, I think -- I don't know if the schools would say this in so many words, but the general feeling is that they exist for the purposes of shrinking the class so that the graduating class that you only have the good ones that come out the other end. And to me, that is just the opposite way that we should be thinking about education.

Education is not about weeding people out. It's not about telling people that they need to know this thing that they haven't studied before in order to take a class, especially when there is a prerequisite to that class. To me, that just is such a backward way of thinking about it. You should be thinking about school, education as a chance to teach everybody the same things. Give everybody the same access to the materials and the same access to succeed such that the only real limiting factor is the student themselves. I really think that it's important to recognize that equity plays a big part in this. If you're somebody who has all sorts of time on your hands, maybe as a high schooler or even when you're in college to learn C, for example, so maybe some courses are requiring you to learn C, and the course won't teach it to you. You have to learn it beforehand, and you might have a hard time if you don't learn it, anything like that, it really biases the class toward or will bias a success in the class toward people who have a lot of free time. You may not be somebody who has a lot of free time; maybe you have kids, maybe you have a job that you're working to put you through school. You never know what people are going through. And so to expect somebody to spend all this extra time on something, to me, just breeds inequity at the very start.

So anytime that as an educator, I can do something -- like, every time we do something in the class, it builds on something that we've already looked at before. That's a very important thing to me is to make sure that everything that we do is built on something else that we've already covered. Because then, even if the student doesn't get it the first time, they can go back to the slides, they can go back to the lecture recording. They can look at it again if they want to. And at least the courses can be considered as this encapsulated thing. Now, there will be cases where a whole topic of conversation, for example, web development, is something that there's a whole course on that at Principia. And you'll get a much better feeling for how to do cloud computing if you have some web knowledge under your belt, but we don't have that as a prerequisite. And so what I've done in this course, this cloud computing course, is making sure that I touch on all of the various bits and bobs that you would have gotten in web development in a very deep way. We cover those in a shallow way in the cloud computing course because while the course isn't about those things, you still need to know them at least at some level in order to succeed in the course. To me, that's how it should be. You should be able to say that this course could be taken based on the prerequisites, based on your previous knowledge. And then also, based on the content of the course, you should be able to succeed with all of that as opposed to these extracurricular learning processes that you have to go through. So yeah, my goal is to help students succeed. My goal is not to fail students.

Ali: So your course is about to end, and your students are about to enter the working world. What's the one piece of advice you usually give them?

Cameron: What I always tell my students is, “Never compare yourself to other people.” So a lot of the angst I think that comes from a student in the workplace is, oh, I don't know enough. I don't have enough experience. I have never seen this technology before that’s in this job description. How am I going to possibly succeed? And my answer to them is to always take things a step at a time. Learning is not something that you do by snapping your finger, and suddenly you have all this knowledge. Like in The Matrix, when Neo learns Kung Fu, they download it into his brain; that's not how learning really works in the real world. So if you're going to look at a technology on a job description you've never seen before, it might behoove you to Google that and find out what it is, but you don't have to know it ahead of time in most cases. You can learn on the job. There will be, of course, some job descriptions in some companies where that isn't true. You need to know something intimately before you can use it at the job. But a lot of junior positions, especially, are going to understand that you're coming from college and you haven't had a job before. You haven't worked in these technologies, and that's okay. They'll try to teach that to you on the job. That's what happened to me. I learned on the job a lot of stuff. I thought I was ready for the job world when I first entered it. I was totally wrong. And that's okay because I learned a lot on the job. That's going to happen no matter who you are, what job you go into. I think even if you're working at a restaurant as a server, there’s still tons to learn. If you go into sports medicine, there's tons to learn. There's always going to be -- I'm thinking of all these different disparate jobs. There’s always going to be a ton of stuff you have to learn. Technology, computer science-related jobs those I think that's very true of those as well.

So the advice I always give is you don't have to know everything. And compare yourself not to other people who might know more than you at that particular point in time, compare yourself to yourself a day ago, a week ago, a year ago. Is that younger person rather are you more knowledgeable than they are now? Did you make some progress in your life about how much you know, about how much you can recall, about how much experience you have? If you can say yes to that, then you're absolutely doing just fine. So yeah, I think that learning, just also to stick this on the very end here, learning is also a lifelong thing. So don't think that you have to know everything and always compare yourself to yourself. Those are the two pieces of advice I always give.

Ali: Awesome. And as we close this out, do you want to plug yourself anywhere? Do you have anything coming up that you want people's eyes on?

Cameron: So let's see, you can find me on GitHub, github.com/camertron. I’m Camertron pretty much everywhere on the internet; that’s C-A-M-E-R-T-R-O-N. It's the first five letters of my first name, Cameron and then Tron like the comic book character, on Twitter, GitHub. One of the topics that we might have talked about today was transpilers, especially as they apply to Ruby. I've been someone who really has enjoyed the language Ruby for a long time. I worked for ten years on Rails apps and things, so that's near and dear to my heart. One project I'm working on right now is called Rux. It's like a transpiled Ruby that lets you put JSX style HTML tags in your Ruby code. It works with the Rails ViewComponent gem that GitHub put out a couple of months ago; I guess more like a year ago now. That's something I'm really enjoying working on. You can find it at camertron/rux, R-U-X.

Ali: Well, thank you so much for taking the time out of your schedule to come on the Polyglot podcast. It's been an absolute pleasure getting the chance to talk to you and hear your story and about teaching. For everyone who's listening, thank you so much for listening. And again, my name is Ali. You can find me on Twitter and everywhere else on the internet @endingwithali. So thank you. Bye, everyone.

Jonan: Thank you so much for joining us. We really appreciate it. You can find the show notes for this episode along with all of the rest of The Relicans podcasts on therelicans.com. In fact, most anything The Relicans get up to online will be on that site. We'll see you next week. Take care.

Discussion (0)