Programming Throwdown - Christmas Episode
Episode Date: December 30, 2019Hey 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)
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.
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.
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.
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?
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
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.
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,
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.
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
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
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
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.
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.
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
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
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.
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
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.
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
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,
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
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
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
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
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.
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.
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.
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
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,
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
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.
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
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.
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
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.
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?
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.
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
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
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.
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
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
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
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.
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.
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?
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
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
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.
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.
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
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.
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?
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,
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
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.
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.
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.
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?
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
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,
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
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.
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
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
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.
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
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
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
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
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
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,
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
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?
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.
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.
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.
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.
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.
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
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
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
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
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
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.
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
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
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
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.
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.