Programming Throwdown - Christmas Episode

Episode Date: December 30, 2019

Hey all! Patrick and I are so lucky to be spending another year with you all. In this episode, we answer a bunch of listener questions and give away some great prizes. Thanks to all of our li...steners for helping us bring the power of programming to so many people. We have some super exciting content coming up in 2020, so stay tuned! ★ Support this podcast on Patreon ★

Transcript
Discussion (0)
Starting point is 00:00:00 programming throwdown episode 97 the holiday episode take it away jason hey everyone so happy holidays all the different holidays are celebrated around this time of year um as we do every year we're going to do a kind of combo giveaway and also um answer folks questions so uh if you have a question now's a chance if you're if you're watching uh listening to this live um you can put a question in that channel. And we will kind of alternate between kind of answering folks' questions and giving away prizes. And so we can actually give away the first prize. We're going to do – well, first I'll talk about the prizes.
Starting point is 00:00:57 So we're going to do three books to the top three folks. That worked out really well. So you can pick any of our books of the top three folks that uh that worked out really well so you could pick any of our books of the show for 2019 um that that is available in ebook and we will um uh we will send it to you if you have kindle or any of those services uh we'll also give away three laptop stickers which is pretty cool we'll give away three t-shirts. And the way that folks can enter this, anyone who's a patron on our Patreon is automatically enrolled in this.
Starting point is 00:01:32 So I'll be reaching out to everyone who's a patron. I have access to your email, so I can send you an email telling you that you've won in case you missed the episode. And we can just coordinate together to figure out how to get. All right. Our first winner. I don't want to say I don't know what we should say, but basically our first winner is Don R. So if your name is Don, there's a good chance that you won a free e-book.
Starting point is 00:02:03 Any of the books of the show are good candidates. And so I'll be reaching out to you, Don, and we will get you set up with a book. Nice. All right. Congratulations. Yeah, congrats, Don. Do you have a question to kick it off?
Starting point is 00:02:17 Yeah, so I have some questions. I also have a topic I want to talk about at some point, but we'll see if we can work it in. So scrolling back through the history, because I'm a terrible person and don't actively read the Discord. I see there's some question, which I think is pretty easy. We can answer it quickly is if someone's trying to get started using Linux and wanted to pick a Linux distribution, they're looking for recommendations, but I'll also say, well, what do you currently
Starting point is 00:02:40 use? All right. So recommendations for Linux distros and what we currently use. Yep. So I'm currently running Ubuntu on my computers at home, but at work we use Fedora. And I think actually you can use Ubuntu at work, but we have this thing called Chef, and Chef goes and automatically sets up a bunch of things, distributes software.
Starting point is 00:03:08 It's like a workflow manager for IT. And our Chef is designed for Fedora. So I'm running Fedora at work, running Ubuntu at home. And that's what I'm running. As far as which distro I recommend, I have tried almost all of them or a lot of them at various points in time. I think Gen 2 is fun,
Starting point is 00:03:32 but it's good if you're learning, but I wouldn't use that as a production system. It just requires too much maintenance. I'm a big fan of Ubuntu. It's pretty clean. It kind of gets the job done. It's built on Debian. It's pretty clean. It kind of gets the job done. It's built on Debian. It's pretty stable.
Starting point is 00:03:47 What about you? So I've mostly used Ubuntu, and I'm not nerdy about Linux. So for me, most distributions that are fairly popular, oh, I'm probably going to get in trouble. Anyways, mostly popular ones because they're the easiest to find help for. If you stay aside from any of the more esoteric ones unless you really want to get into um for the most part they're kind of equivalent i try not to over embellish my systems so that i can move easily between them um so i mostly use
Starting point is 00:04:17 ubuntu mostly because it's easiest to find answers and help for um i i know there's a number of interesting developments related to Linux distributions, which are better for containerization and the progress that's been seen as part of that. And I think that's pretty interesting. But yeah, I don't really have a lot of experience outside of, I guess I'd used Debian stuff before and then now Ubuntu. So I don't have, if you're never used it before, I don't know what would be like a good first, like install Linux on something and try it. I always recommend people put it in a VM
Starting point is 00:04:50 and just use it in the VM. Then you can use it from within whatever you're using now, Windows or Mac or, I mean, if you're on, I guess a OSX computer or, oh, sorry, Mac OS computer, you can pretty much, it's not technically linux but you can pretty much treat it like it is and learn a lot of it yep yep also like docker is awesome and vagrant is awesome both of those are um super super lightweight ways um to get a a linux you know system so like you could you could run docker and just do i think it's like docker run
Starting point is 00:05:25 ubuntu colon latest and just that one line will give you a bash prompt in ubuntu you can run that regardless of whatever os you're in and if you like delete the entire hard drive or something it's fine because it's just a docker image um yeah but that's not graphical. So you're really going to have to get your hands dirty. Cool. All right, let's do the next book. So the next person is Sean. So Sean B. I'm assuming it's Sean B.
Starting point is 00:05:59 Oh, yeah. Oh, here we go. Yeah. So Sean, last name starts with a B. So Sean B, congratulations. You won an e-book. I'm going to be reaching out to you later on today, and we'll work together to figure out which book you get.
Starting point is 00:06:13 Nice. Congratulations. So before we get on to another question, we haven't done a news segment in a while, and although we've had various things floating around, I wanted to get your opinion on if you had seen the AI dungeon you know I saw that is that the one where it's like procedurally generated well so it's not procedurally so they used the what was it is it GPT yeah yeah the open yeah procedural isn't the right word but again they're using the language the the forward model from open AI so I'll give a brief overthink and then you can describe so most people have probably heard
Starting point is 00:06:49 about it it got it's a fair number of i guess live streamers on youtube have been playing it to some hilarity um but if you've ever played a text-based rpg which go back to the dawn of computer games i guess although they still have a following today of new content being created. You would be placed in a world and you would have some set of actions you could do. And it's like a graphical RPG, but you just have to type in. And so it feels interesting
Starting point is 00:07:15 because you're almost chatting with the computer, like pick up keys, look around the room, walk east, walk north. And so you're actually describing what you want to do rather than like pressing keys and hotkeys and making it happen, clicking with your mouse. And so someone took the GPT-2 model, is it? Yeah.
Starting point is 00:07:35 And trained it on a bunch of these text adventures and RPG texts. And so it gives you that familiar thing where you're given a text prompt, but instead of a limited vocabulary of pre-programmed grammars that you could use, like a verb and then I guess it would be an adjective like walk east. I don't know. Yeah, I don't know either. I guess. No, it's I think it's an object, a direct object, I think. Anyway, so instead of having to put like a verb first where you choose from a dictionary and then, you know, a second set of parameters that you choose from, you pretty much say anything you want. So it'll give you, you give it, I think they have like some pre-canned scenarios you can do, or you can give it sort of like a seed sentence about like the setting and then it'll give you you know the first thing like you appear in a land filled
Starting point is 00:08:27 with spewing volcanoes and the smell of sulfur and then that's just it and you can pretty much say whatever you want to do um and the interesting thing is instead of having this limited that it'll try to respond to pretty much any text so if you say uh give myself a magical blizzard cloud over my head um it'll say snow begins to fall and melt into rain uh what do you do next and it's just sort of this interactive back and forth and it to me which is really interesting because although from the ai aspect i guess it's pretty interesting and the guy was running up huge server bills based on how he was actually trying to run the thing. He's from a university and it was just a project he did, I guess, on the side.
Starting point is 00:09:12 He was racking up sort of huge bills for everybody logging in and booting up these systems and loading these giant models and executing them. But just from the concept, it's fascinating because for kind of one of these first times, you pretty much just say anything and the computer will attempt to respond to you so it's almost just like a sophisticated chat bot and so you get these people sharing stories that they have with the computer where
Starting point is 00:09:36 sometimes it gives non sequiturs but if you kind of play along and are careful in what you choose it'll just respond back almost as if you're just talking with a friend. And I've never played Dungeons and Dragons with actual dungeon master, you know, person, but I kind of imagine it's like what happens there where you can say anything you want and there's like a set of rules where it tries to respond to you appropriately. But you never really see that in computers because it's just too hard. The universe of what people can say is just too big. Yeah, I think I think the part that and I haven't looked at it yet, so, so maybe I'm missing this, but it seemed like, uh, um, like you can't really win,
Starting point is 00:10:13 right. Or like, or let me make progress. I mean, it will let you win. Yeah. So, so like, what does it mean to win when you're making it all up as you go? Oh, like you could just say like, I just won and it'll talk about what a winner you are. It's like declare victory. Yeah. Yeah. I mean, I think so. But how do you win in life? Yeah. Good point. So, so this is the, um, this is sort of the quintessential AI question of our time, which is, you know, we had all of this symbolic, uh, AI, right. We have these expert systems and we had, you know, people writing millions of lines of lisp and um um and it's it's algebraic right and it's it's like a formal automata um and then we went to you know this new sort of deep learning where everything is now signal processing
Starting point is 00:10:57 and there there are no symbols it's just like uh just this like crackles of energy flying around. And so this is a case where it's like, you kind of need to reunite those two fields. So like, there needs to be sort of some concept of, I don't know, a key in a door. And that can't just float away. Like it has to be sort of a part of the story indefinitely, right? And so that's, I think that's the piece that's kind of missing is you can't do the like problem solving and the game part of it without some type of symbolic yeah but it's it's it's amazing i mean i think it'll happen it's just a matter of time that's that's the cutting edge but i guess to me like the equivalent to dungeons and dragons is the
Starting point is 00:11:41 you know from what i understand it doesn't have to have strong objectives like now there are end games for minecraft and stuff but i mean you just go in and it's just a sandbox you kind of just do yeah things like those are also valuable experiences without the conventional sort of quote-unquote game framework yeah that's a really good point i think i was looking at it through the lens of of of a of an adventure game when uh when you're right it's really more of like uh like a sandbox it's really a interactive fiction sandbox yeah that's so cool i'm i'm really inspired now i'm gonna check that out i think we should do yeah you should play it and tell us like recount the story yeah there was one
Starting point is 00:12:23 where they trained it on news and you could give it a news headline and it would write the story that was hilarious um so you could you could say anything you want you could say you know the united states sinks into the ocean and it would write a whole story about it and it sounded pretty plausible yeah i mean you have to be generous because it's still like i guess early days um but if you forgive it and like go along with what it's trying to say i mean i think you ever read those i i read dwarf fortress stories sometimes yeah right yeah all of this from a few ascii characters on the screen and this person is spinning this giant tale of you know heroism from their mighty dwarves i actually installed door fortress uh about a
Starting point is 00:13:02 couple of days ago just randomly i wanted to get back into it and yeah that learning curve is is brutal but it's all right i think some more giveaways let's do it okay so the next person is james james k um james k you are a james k has been a patron for a long time, which is awesome. Thank you, James. Thank you so much for your patronage. And it's paid off. You get a ebook of your choosing.
Starting point is 00:13:34 And so I'll reach out to you to set that up. Cool. We can go to the. Yeah. So I pulled a bunch of them out. So the next one out of there we had is that, sorry, some of the others I didn't write down the names of this one I did. So X386 was asking about learning Java data structure. And people were replying and sort of, you know, indicating that just learning general data structures as opposed to the specifics of Java.
Starting point is 00:14:01 Other Java has some interesting ones. And what I'll say here is actually, rather than reading a book about data structures, although maybe that's good too, I guess it's hard to say. I read a book about data structures for a class pretty early on. So I guess I got exposed to some of them. But I would recommend learning a little bit about design patterns.
Starting point is 00:14:20 And if you really want some like beginning level stuff, we've recommended on the show before, but the headfirst design patterns book as a way to motivate learning about. I mean, I guess it's about design patterns, but learning about those design patterns will also introduce you to a number of data structures, which I think is pretty good. Aside from that, it's mostly task based. So like if you need efficient lookup, you know, learning about hash maps and the various things related to them or learning about linked lists, you know, it becomes more about like what you're trying to do and the specifics of it. But for a sort of more cohesive narrative that will force you to learn various data structures at a different level, I think design patterns is a good way to go. Yep. Yeah, I've read that book. It's, it's fantastic. I think it's a good way to sort of motivate the data structure with with a use case, instead of just trying to learn this library of data. But I guess if you were trying to do like, computer competition, or Oh, yeah, that's totally
Starting point is 00:15:20 tech company, tech company interview algorithm data structures. Yeah, I think just like any, pretty much any of the like popular data structures books are probably a good approach. The MIT one is pretty popular. But there's a variety of them. And I think any of those is good. And yeah, it's hard to get into,
Starting point is 00:15:40 but I don't know of a way around that. Like you kind of just have to get exposed to a variety of things and learning them somewhat as like a puzzle. And then once you understand them, it sort of clicks and makes sense. Yeah, what I recommend to folks too is after that is to check out these coding sites
Starting point is 00:15:58 like HackerRank and TopCoder and look at the hard problems and read the solutions to them. And so if you read the problem, I mean, the problem is going to be fictitious, but it's loosely based in reality. So it might be something like routing mail or something like that. And then you can see the data structure they use, and it kind of gives you an idea of how that could work in the real world.
Starting point is 00:16:24 Yeah, when you get to those kind of data structures, I guess maybe I've never really thought about it deeply, but the design pattern style, object-oriented designing and the data structures there is somewhat different than the data structures as entwined with algorithms that is the more like traditional computer science stuff. Yep. Yep. Yeah. design pattern could could use a data structure but it doesn't have to um but yeah i think they're both important for different reasons like one one will get you through the interview and the other so it's probably probably worth worth knowing both um so joe actually chat has like what are our guys what are our thoughts on
Starting point is 00:17:01 the pine phone or the LibRen5? Do you know what that is, PinePhone? Isn't it like a phone that's open source? Oh, yeah, yeah. Here you go. Oh, yeah. Okay. So, yeah, I could talk briefly about, you know, I use an Android phone.
Starting point is 00:17:27 And I do have, what's it called, FDroid. And so you can install open source software. I was using this other thing called Aptoid, which would let you install, it's another third party, you know, kind of play store. And one of the things I noticed about Android is the phone just degrades quickly. You know, like my phone is two years old and it already has a ton of issues. Like sometimes the cell just is gone. Like I just have no 3G, like no cell, I can't call. And so I just have to reboot the phone. And it just seems like every time I get a phone
Starting point is 00:17:58 after a couple of years, it has serious issues. So like right now I have the Pixel 2 XL. Part of it too is, you know, I'm not the most gentle with my phone. It kind of goes everywhere with you. I don't have a case. And so part of it might be self-inflicted. But yeah, I feel like if I go open source on my phone, it's just going to make those worse.
Starting point is 00:18:19 I used to do a lot of just random things with the phone. But now I've started to just do more on the web. And so I'm just using less apps and just doing fewer things on the phone, or maybe another way of saying it is doing almost everything inside of the browser. And so I'd probably not go open source on the phone unless maybe, you know, it was super reliable, but open source is usually not good for that. What's your take, Patrick?
Starting point is 00:18:51 Yeah. So I'm looking here at the comparison chart between the Librem 5 and the Pine phone. I guess they're sort of the same, but also very different. So what I'd say is I love the sort of, you know, hacking aspect of a lot of this, but I don't really want to do it in this form factor. Yeah. This form factor seems overly cramped. So like hacking on a single board computer, like a Raspberry Pi or an Arduino or, you know, something like that. Those things would be interesting to me and I could do projects on them. If I'm going to do computer style work and write applications, I I kind of want to do that on my laptop or my desk.
Starting point is 00:19:27 My phone, I see more as, I guess I would say, like a video game console I would want it to be closer to, which is I want it that it works. I sit down, I do a thing, and it's good at what it does, which is being a phone and playing something. So I want it to be a curated thing also i mean just like the practical aspects like having a kernel panic or something happen on my phone when i'm trying to make a phone call doesn't exactly sound like fun to me yeah you know people
Starting point is 00:19:56 i'm sorry oh yeah you know what would be really cool would be um you know changing the morphology of the phone like for example if I could make my phone look and feel like an Xbox controller with a screen in it. I don't know how that would fit in my pocket. I have to think that through. Basically, if the phone had real buttons and
Starting point is 00:20:17 an analog joystick, but it was all built in. I could 3D print the case of the phone and it had all of that. I think there are cases, though. That phone, and it had all of that. That's interesting. I think there are cases, though. That's like a phone as module or something. Yeah, I mean, there are those cases you can wrap around.
Starting point is 00:20:33 There are the ones, too, where the phone clips in. That just is too clunky. But there are the cases that have the hardware buttons. I probably start there before going to an open source. So if I had a very specific use case, like I was very security minded or I was monitoring a lot of closed caption cameras and wanted like very specific, complete control over how my phone behaved for very specific cases
Starting point is 00:20:56 that aren't very in line with the mainstream, I think these would be cool. And I could see myself turning to one of them as a second device or even as my primary device if that was my thing in life. But for me, I guess I fit close enough in could see myself turning to one of them as a second device or even as my primary device if that was my thing in life um but for me i guess i fit close enough in with what most people want to do on their phone and the phone is very very like the android phones that come out from the major vendors the iphones from apple like i feel they a lot of time has been spent polishing off
Starting point is 00:21:20 the sharp edges um and making them very well tuned for sort of the average use case. And so if you're anywhere close to the average use case, those phones are probably going to work really well because they're manufactured at such volumes and with such history. And something like this would be one of these open source phones would be really cool for a second phone or if you had a very specific purpose that was very far outside the mainstream. Yeah. One thing I'm surprised is that AR using the phone hasn't really taken off like there's some cool i've seen some cool use cases like i think in google maps if you're walking around you can actually uh it'll show the camera and they'll show the path like you know projected on the camera um but i kind of expected
Starting point is 00:22:01 that to be a bigger thing and uh um yeah it just seems like i don't know just seems like that there hasn't been as much uh let's say innovation in the cell phone but the biggest problem is yeah exactly sometimes i need my cell phone to be able to call my family or you know hail a taxi uber and if if it's just freaked out and in some sort of weird been the battery drained that's really gonna give me bad day yeah it makes sense all right so uh on to the should we do t-shirts or stickers next which one do you think is more valuable let's do one of each let's do so so we should alternate oh okay well so i've i've grouped people into three groups yeah i just don't know which with which tier uh we'll do we'll do We'll do T-shirts.
Starting point is 00:22:48 I think T-shirts are more expensive, so we can just go based on that. We'll let the economy decide. So Clayton T., who actually has also been a patron for an extremely long time. I don't know if it says. I'm basing that based on some information, so I don't know if I have the actual... I'll see if I can look that up. But from what I can see here, they've been a patron for a super long time. Thank you so much, Clayton.
Starting point is 00:23:13 And you're getting a t-shirt, which is awesome. So I'm going to reach out to you later today and send that your way. All right. You want to do another one? Another t-shirt or another question? Let's do another t-shirt. Let's do another T-shirt. Double. People. Yeah, let's get people dressed. I think it's like Maslow's hierarchy of needs, right?
Starting point is 00:23:33 You need your T-shirt before you can ask the right question. Number one. James H. James H. is is a proud owner of a T-shirt. This is amazing. So first of all, I want to say, I mean, I'm looking at I have a spreadsheet here, which is, you all, I just want to say, I mean, I'm looking at, I have a spreadsheet here, which is, yeah, I wish I could tell you I'm some marketing guru or I know all about, but reality is we spend most of our time creating content. And so I don't spend a lot of time
Starting point is 00:23:56 looking at the patron dashboard. So this is a rare opportunity for me. And I'm just really overwhelmed by seeing just how many people have been supporters for for so long like years and uh and i think that's amazing so thank you so much james and everybody else um but james you're a lucky winner of a t-shirt and so we'll get that over to you congratulations yeah thanks to all the patrons and the people who uh do the audible subscriptions who uh respond to the advertisers and advertising and the people who buy from
Starting point is 00:24:29 our Amazon links for the books of the show. All of that helps out. It's actually really awesome. Yeah. So not not edge or not. Nodge. Nodge has a question in the, in the discord.
Starting point is 00:24:41 How do we find the sweet spot between over and, and if you have like the And if you have an answer wherever you work, that is probably one of the hardest questions. I could take a crack at it, or do you want to? Yeah, you go first. Okay, I'll go first. So yeah, it's a really good question. I think, so one thing is if you can somehow measure the expected drift, I think that's really important. So we're actually going to talk next month. We're going to publish an episode with a person who's an expert on Agile and a lot of these sort of processes, software engineering processes. And one of the takeaways, kind of a spoiler, is that you want to really learn from the past.
Starting point is 00:25:26 So you want to sort of make the past, gather as much signal as you can from the past and use that to sort of inform the future. And so that's one way to do it. Another way is just maybe you have some common sense reasoning, like you know that you're releasing a new product, right? But find out sort of like how much entropy there's going to be, you know, in the future. And that will kind of steer you in the right direction there. So for example, if you're writing version two of something and the reason you're writing it
Starting point is 00:25:57 is because version one is slow and clunky and has bugs, well, then you want to apply more engineering rigor and you want to maybe redo engineering rigor and you want to maybe redo the database and put a lot of effort there, right? You know, conversely, if you're making an app and you don't know if anyone's going to use it and you don't know how they're going to use it, that's not really a good time to be, you know, writing just like a ton of things to make it very highly scalable and available and all of that. And so I think knowing your audience and knowing the product is really key there.
Starting point is 00:26:31 That that was really going to give you the insight because, because you can't really, I think that you can't really like give the, you can't build the ultimate product on day one, right? you're going to have to adapt which means what you write now is probably not going to be the right answer no matter how well you engineer and so yeah it's a really good summary i mean no one has the right answer because there's not only one answer and like jason was saying i mean it largely depends on how much things are going to change and how well you're predicting what's happening. If you look at, to I guess play it by analogy, if you look at startups, they take funding, but they often pivot, right?
Starting point is 00:27:11 They often think they're going to do one thing and then even the very successful ones end up doing not that thing. Yeah, like Slack. Slack was a IRC client that a video game company wrote. And then they realized that the IRC client was way more popular than video games. Yep. And I mean, you can go down the list of,
Starting point is 00:27:31 I think Twitter was an in-company communications thing. Yep. Yeah. So I mean, lots of these companies pivot. So I'd say the same thing is probably true on smaller scales, right? Which is, however, err on the side of under engineering and over engineering
Starting point is 00:27:47 is probably safer. But at the same time, I would say like each person develops a gut feel about their systems and their technology stack and what parts really have to get addressed up front and what parts can be delayed without ruining everything. But it's always a gut call. Like no one actually knows. Yep. Yeah, I totally agree. Yeah. I mean, it's something you'll just you'll just hone in on with experience. I mean, it's like any trade. You have to you have to just build a lot of stuff to figure out sort of the sweet spot there and get that intuition. OK, so last t-shirt goes to Scott G. Um, so Scott G, you are a proud owner of a t-shirt. I'm going to reach out to you, uh, later on today. Congratulations. All right. Uh, Sohn Hay, uh, on the discord a while ago asked for recommendations related to image processing.
Starting point is 00:28:41 That's a big, big, big question. Yeah, there's a lot there. So I can, well, yeah, I mean, I can talk specifically about AI. And Patrick, you probably know more about the signal processing part of it. But for AI, the most popular ones are Detectron, which does a bunch of object detection. They have a model you can download, which has a bunch of different categories. Or if you need to train your own, you can do that.
Starting point is 00:29:12 There's one called Hugging Face, I think. Hugging Face is another one. There's another one called, I think it's literally just called Face Recognition. If you put GitHub Face Recognition, you'll find it. And that has an insane number of sorts. Actually, that is the most starred repository, I think, in all of GitHub. It's just called face recognition. And it does that thing very well. So, you know, in general, I would say that, you know, you should really try to use existing libraries. I mean, image processing requires enormous amounts of data and compute. And so transfer learning, you know, starting with one of these models is definitely the way to go.
Starting point is 00:29:54 Even if you're building something specific, you want to start with one of these solutions. Yeah, I mean, I guess from the signal processing-ish side as a way to describe it, I mean, looking at OpenCV and just looking at various functions that it uses and how to interface them is a great way to start. I'm not normally a big Python person, but Python works really well for this because it's pretty easy to use OpenCV, open a file, apply blurs to it, understand how that works, dig into what that is really doing under the hood, the difference of doing them with convolution versus doing them in frequency space, right?
Starting point is 00:30:32 So thinking about those kinds of things, but even just understanding like how the image data is stored, how do you change channels? How would you swap red and green? What does that do? How is the image represented in memory? It's a very far stretch from what Jason was just describing. But I mean, I think these things come up, at least in my career, have come up reasonably often, where knowing how, I mean, ultimately, they're big matrices, I guess that's a spoiler. Yeah, you know, like understanding what those matrices represent, how to manipulate them is a generally pretty useful skill um and so thinking through how that works playing around with it on your own trying to do your own like for instance uh writing your own function to convert a red green blue image into a grayscale image um how do you weight various channels like working through that
Starting point is 00:31:23 although it seems like really redundant and why would you not just use, oh, maybe you don't even know, but there's a standard like balance of the channels to use to replicate what the human vision sees. But I mean, like working through on your own and understanding what that does actually teaches you a lot. And then there's all sorts of tangents,
Starting point is 00:31:41 not even getting into the sort of machine learning image recognition part of it, but just doing things like understanding barrier masks and debarrying and what did various filter, like not every camera uses the same image filters for the red, green, and blue channels. How does that impact things? It's a completely different way to take it, but it's enormously fascinating and people spend their careers, you know, thinking about those kinds of things. So yeah, I mean, there's lots and lots and lots of ways to take it. It depends. I would say do something which you find interesting cause it'll keep you
Starting point is 00:32:12 motivated. Yeah, that's such a good point. Yeah, totally. And, and I think yeah, having, having a sort of goal in mind is, is, is really important, especially for things like image processing. Cause you might say, well, I want to be able to recognize absolutely everything. And those are super, super hard open problems. It's much better if you can start with like, yeah, I want to distinguish these three things. I'll give a shout out to one specific project here because I'm doing the hardware thing. It's my shtick, I guess.
Starting point is 00:32:42 And that is OpenMV. They call themselves the Arduino of machine vision, I think. Is it NV or MV? Machine vision. Oh, okay. OpenMV. So it's a little PCB that has a camera and a processor attached to it. And they have a really nice infrastructure built around it
Starting point is 00:33:04 for bringing in the images, doing common manipulation, streaming them out to your computer so you can see them, and really bringing it together with an IDE and stuff like you would see for an Arduino board. And I really like this project. I did the Kickstarter for the latest one and got it. I haven't had a chance to open it up and play with it yet, but it's in my short list of to-dos to play around with this i think something like this is a really interesting way to get started because how much does that cost visceral i want to say it's like uh harold i'll just look on the stories i don't
Starting point is 00:33:34 want to miss well roughly like is it a hundred dollars a thousand dollars yeah like i would say it's like fifty dollars oh man that's amazing sixty five dollars guess, for the H7, which is their newer one, the OpenMV H7, which is a lens, the board, the camera. It's not as cheap as an Arduino, but it's not. I mean, for like trucking it up to a learning experience and like with what you're getting with it, that's pretty nice. Yeah, I mean, $60 is amazing. Totally amazing. I'm going to get one of those. Yeah, so I think this is a good project to kind of play around with and sort of start interacting with these at a very low level.
Starting point is 00:34:07 I wouldn't recommend running Detectron. It probably doesn't even work on this. I have to run a very, very small model, if at all. But if you want the sort of opposite end of this, like how hardware deals with images and low-level image processing, I think it's a great way to get started. Yeah, and you could always pipe that to your computer. That's exactly right, yeah that makes sense cool all right so
Starting point is 00:34:28 our first sticker winner is jason d um jason d is uh he's been a patron for a little more than half a year and uh you are a winner of a sticker i'll be reaching out to you to figure out how to get that laptop. Cool. So we have a question. Is it worth going back? This is from KZ Isme. Is it worth going back to school to get a master's, even if it won't necessarily bump my pay grade? I really enjoyed undergrad. Yeah, I really enjoyed undergrad. Is it worth getting a master's? So Patrick, you actually got a master's while you were working. Yes. And so what was it like getting a master's while you the sooner to your academic, like undergraduate that you do it, I think the easier it is not to say that it's impossible at any level. But I think it honestly, it really depends. If you can stay motivated to do it, going back and getting a degree might be worth it, right? It helps. I don't know how it would hurt other than it being kind of
Starting point is 00:35:43 expensive. But if it's offered through your work, I don't necessarily see it as a big risk of a thing to do. But also like having been a person who does interviews and looks at resumes, I don't really take it as a huge positive, like a person who's gone and worked for two years versus a person a year or two versus a person who's getting a master's degree i wouldn't necessarily prefer one over the other unless the master's degree was something very specific to what we did um but the same would be true if they worked on something specific to what we did now that's just sort of like my experience and what i've done with it yeah i know it varies a lot um but i would say in general if you're having trouble finding good work and getting hired my initial gut feels is not due to the fact of not having a master's. There's probably a few niches and specific places where that could be a problem. But the general market, I haven't seen different story. But master's degrees, I would say you maybe look at
Starting point is 00:36:45 other stuff, look to get experience, it's probably cheaper and more time efficient ways to increase your hire ability than than doing a master's degree. That isn't to say you shouldn't do it, or that it has no benefit. I just think if you're doing it to improve your resume hire ability, I would probably not recommend it. So what is the benefit then? So I mean, I think the benefit is being able to do more classes. Most people, when they're doing their undergrad, don't get to try all of the different classes
Starting point is 00:37:13 and different specialties of computer science just using that as an example. So going to a master's degree, you could delve a little deeper into various topics, which you kind of didn't get to. And you might not in your first job have access to or second job. Yeah, that makes sense it's a really good going back to school after a few years like five ten years could catch you back up on developments or refocus you
Starting point is 00:37:35 um you know doing it while you work right like continuing education that's that's always a good thing i guess um and you know i guess guess all of being equal between two people, having a master's degree is worth something. Yeah, I think it totally makes sense that, like, the, you know, you might not, you know, at your current job be able to do image processing, but you might want to gain that speciality. And so to get out of that sort of trap, um, you could, you could do the degree, but it's, it sounds like if you're going to do it,
Starting point is 00:38:11 you should keep working and take the extra year. Um, um, I guess it would take three years instead of two. How many years? I did mine in three years. I did mine in three. So I did one class. So that was specific to, I guess mine, everyone's a little different, but I did, three so yeah one class so that was specific to i guess mine everyone's a little different but i just did one class a semester three semesters a year and um did it in whatever 10 says 10 credits um but that varies i guess it's a it's a lot of work though right there's i don't want to say busy work but doing it while you work is hard because you might have deadlines on your you know job and then you also have a paper due. Yep. Yep. Yeah. I remember. Yeah. I remember exactly that having a deadline and a paper due on the same day. And it's it's brutal. But I think it's it's good to do it early when it's a lot of
Starting point is 00:38:57 the knowledge is still fresh. I feel like if you're going to do it, good to knock it out early. Oh, the other thing is, you know, in both of our cases, our jobs paid for our graduate degrees. And that's I think that's a that's a game changer. Right. So, I mean, if you have to drop 60K to get the master's degree, it's going to be pretty hard to recoup that. Again, it doesn't mean you shouldn't do it. It just means that, you know, it depends on what your goals are. Also, the story is completely different if you are trying to get like a computer science or related master's degree. And that's not a graduate degree. I think that's a whole separate topic. But you broke up there. Can you repeat that?
Starting point is 00:39:37 I said, yeah, I think it's a completely different topic if your undergraduate degree wasn't in a computer science related field and you want to do your master's degree in a computer science related oh that is a really really good point yeah i've seen resumes where that was the case i do think in that case it makes a big difference yeah because because um i think you want to show that you have sort of the core you know cs fundamentals yeah i think that's yeah you're right i think the value proposition there is very cool. All right. So we can go to our next sticker winner. It's Daniel H. Daniel's been a patron for a little under a year. And Daniel is from a very interesting.
Starting point is 00:40:17 What is the country code CH? So I'm totally going to out our friend Daniel here, but I just got to know. Switzerland. Oh, OK. That's not here, but I just got to know. Switzerland. Oh, okay. That's not as exotic as I thought it would be. But still, I mean, Daniel from Switzerland, thank you so much. Being a patron for a little under a year. And we will send a sticker your way.
Starting point is 00:40:40 I'll reach out to you to get a way to mail that out to you. Cool. So we have one more question from a while ago and five questions. But our last question that people have sent in to us is from Cheesy Taco. How to approach resumes and job titles? They give a little context here about, you know, they're basically doing programming on the job now. Excuse me if the summary is not accurate, but, you know, doing programming on the job now, but their job title doesn't really reflect that. And they're sort of worried about, you know, they don't want to say that they're a programmer as a job title because, you know, their actual job title isn't that at all, but it is what they do.
Starting point is 00:41:17 And sort of how would they address that? So what would your recommendation, Jason, if someone is doing like scripting and programming and maybe even building applications at their job, but maybe they have a different title like researcher or, you know, you know, associate or something like just a generic title at maybe a commercial company. And how would you what would you do for the resume? Like, how would you look for that to be represented so that they're not lying, but they're also communicating what they're. Yeah, this is a very, very interesting question. Um, so the thing about job titles are job titles are the few things that are represented very clearly in a background check, right? So, so, um, you know, you can't really have a lot of latitude there. For example, if you're an accountant and you say you're a software engineer, well, let me give another example.
Starting point is 00:42:23 If you're an accountant with three years programming in Visual Basic and you say, I programmed in Visual Basic for four years, that's pretty hard to verify. I mean, you should never lie about anything. But if you're going to do that one, you could basically get away with it. But if you're an accountant, you're a software engineer, and you go through the interview, let's say you even get the job, when they do the background check before they make you the official offer, that's immediately going to show up. So you can't really do that. make you the official offer, that's immediately going to show up. So you can't really do that. So you have the job title that you have. Nowadays, with so much AI in the recruiting process, there's going to be some companies that will filter that. And so I think that the job title, I think in some cases could be a challenge.
Starting point is 00:43:12 I still think that all of the things that we mentioned for folks who are students or in school, they still apply. So you're having a good GitHub account, a presence, having a portfolio, taking some MOOCs, doing some classes. We had a show with the director at Udacity, so doing some Udacity classes. Those are all stellar. And obviously writing what you do under your job title and your resume. But yeah, I think that is
Starting point is 00:43:43 one of the big challenges and i think in general a piece of advice i've heard is is is kind of do what the company does so in other words if you're a software developer try to join a company where software is kind of their focus um and so and so that will prevent that that kind of misalignment um but yeah what's what's your take on it yeah i agree i i would say for me i think there's a lot of latitude in how you do your resume so as jason pointed out you should never lie it's going to end poorly um in most cases many cases um and so i think what you can do though is you i've seen people do is uh even within a single position
Starting point is 00:44:24 at a company list out like projects they worked on and what their role was on that project um and then maybe under that so if you imagine like uh you know having sections and you know you're having like bold the company you work at and to the right of it having what you did on that project like maybe you were a tech lead maybe you were a programmer maybe you were an architect right right, saying something like that. And then underneath the like that part, like to the left, you know, maybe or under just saying, like, title, you know, whatever your current title is, or even, you know, people might put software engineer level three or so I've seen people do this on their resume, I think that might be a good form to take if this is your thing. So if you actually are legitimately doing
Starting point is 00:45:01 programming, and you want to say, like, you know, application developer as your like role, but your position also included your title just so that it's not confusing or ambiguous and just call it out sort of like at the bottom of the section or like in a sort of subheading, then I think I don't, I don't know that that would be a problem. Like I, it's completely honest. And as Jason pointed out, people who use keyword screening or whatever, it won't take issue with that. It's not going to screen you out because you say your title is something different. And you'll make sure to get screened in by having the right keywords. Yeah, that totally makes sense. Totally makes sense. as long as you have the job title in there, then, you know, the person who's doing the background
Starting point is 00:45:47 check, it's a third-party company. And what they're going to do is they're going to look at your resume and they're going to look at the job title that is coming from your former employer and they're going to look for a match. And as long as that matches anywhere they're gonna they're gonna say that's fine right um so so yeah i think that's i think putting it framing framing your your your job title um is is is the right answer there that's a solid answer sweet cool all right let's do the last sticker and then we can answer a few more questions um um you know time permitting but but so, so Devin C Devin C has been a patron for two years. Um, thank you so much, Devin. And, uh, you are getting a sticker. Very cool. And yeah, I think that's all the questions we have so far from the, from the discord. So
Starting point is 00:46:36 if you have any more from email you had, or if you want to just go and finish up the giveaways and this up and wish everyone a happy new year. Yeah, actually. Well, there's, I'll just go through. There's a couple of questions that are pretty short. Someone said, did I get sweaty when Eternal Terminal was on Hacker News front page? I got a lot of emails. I didn't know it was on Hacker News until until somebody somebody told me. So I wasn't the one who posted it. So so that was kind of a surprise. I was actually driving back from a family vacation at the southern part of the state.
Starting point is 00:47:10 And so I was in the car and I got this message like, hey, you're at the top of Hacker News. And then I checked my email and there was a ton of emails. It was pretty cool. You know, I didn't I didn't get sweaty. But I'll tell you a story where when I didn't think there were that many people at my where I work using Eternal Terminal, I was pretty cavalier about rolling out updates. have to like update the server but then also support the older clients or you have to basically update everything at once and then kick everyone out and then say hey you need to update your client and so in the beginning it just made a lot more sense to do that this actually gets back to the over engineering thing um you know we were making so many changes and learning a lot about what it meant to write sort of a good remote terminal that it didn't make sense to keep around old version. And at one point, we released a bad
Starting point is 00:48:13 version and something like 300 people couldn't remote into their machine. And that was terrifying. So there's been some times where things did get pretty terrifying. But the good thing is, you know, it's been three years since we started Eternal Terminal. And so at this point, it's mature enough that, you know, even though there's a ton of people coming, most of them were able to just start using it. I think it helped that someone someone asked oh someone asked how do you deal with having a single like how do how do you handle extremely large repos i've read about google having a mono um so a lot of these companies yeah have one single repository for the whole company um but but they're not using just regular git um they're they're they've often forked something like Mercurial or Git, but they have their own version. And so
Starting point is 00:49:07 you can check out just parts of the repo. And so you could think of it, you could imagine it as like a repo, but every subdirectory can be its own repo if you want it to. There's also like shadow file systems. The short answer is it's actually, it's a huge technical challenge to have a huge mono repo. And so it's, I'm kind of surprised that there isn't a product out there that, that enables that. But I guess the reason is there just aren't that many people who have, I think Google has like 14 billion lines of code or something. And there just aren't that many companies that have that much code that you know a mono repo becomes that's i think that's all the questions did i did we miss any of them or i don't think so
Starting point is 00:49:50 but it's possible yeah someone said um so yeah i think oh someone posted the face recognition it's called um i'll put a link in the show notes but yeah the the repo is called face recognition actually does have the most stars on github has 30,000 stars, which might be the most image processing. Cool. I think that's it. Should we wrap it up? All right. Well, thanks, everyone. It's been a blast of a year. Yeah. Yeah, it's been totally amazing. It's, again, just astonishing to see the support that we have and to actually literally see it here in spreadsheet form is really exciting. Thanks again. You know, we have actually we already recorded one interview and we have some other interviews and other content lined up.
Starting point is 00:50:36 That's super exciting. So we look forward to sharing that with you folks next year. All right. See you guys. The intro music is Axo by Binar Pilot. Programming Throwdown is distributed under a Creative Commons Attribution Sharealike 2.0 license. You're free to share, copy, distribute, transmit the work, to remix, adapt the work, but you must provide attribution to Patrick and I and share alike in kind.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.