Colin: Welcome to Build and Learn.
My name is Colin.
CJ: And I'm cj and today we're joined by Charlie Gerard.
Charlie is a senior dev advocate at Stripe and she's given several mind
blowing talks lately and also, written some really, really incredible articles.
We're really just excited to hang out.
So hi and welcome Charlie.
Charlie: Hi.
Thanks for having me.
CJ: Absolutely.
Before we jump into it to set the stage, today is a snow day.
And snow days are like the greatest days ever, for kids.
And so yesterday, it was on the news that maybe there was gonna be enough
snow for there to be a snow day.
And so the kids were coming home and telling me that like every kid in their
class was like, Trying to figure out all the ways that they could influence
the universe to create a snow day.
And so, just like a couple that I thought were really funny, one was to
go to bed with your pajamas inside out One was to put cheese in your pocket,
there were, there were some others, but I don't know if you, if you have
any, tips or tricks for kids who want to create a snow day around them.
Colin: It sounds like we found out who the troll, the trolls are amongst the kids.
CJ: Yeah, exactly.
But someone did something, I don't know if they went to bed with a spoon under
their pillow or they flushed an ice cube down the toilet or they like, what, what
magical thing they did to make it happen.
But we went to bed last night and it was raining and we woke up and
there was like six, seven inches of snow and school's canceled.
Colin: Nice.
CJ: Yeah.
Yeah, it was, it was good.
Charlie, tell us, tell us how you would introduce yourself.
Tell us more about yourself, and then we'll get into
Charlie: Sure.
Well, I mean, as you said, I'm a senior dev advocate at Stripe.
I am an author of a book about machine learning in JavaScript.
And, if I had to pick another kind of job title, uh, I would
pick a creative technologist.
Cause it's more of how I approach my work, in general.
So I'd like to.
Try to push the boundaries of, even what I know or what I think
is, is possible with technology.
And as I work mostly in JavaScript, I usually try to push, the boundaries
of what can be done on the web.
Uh, that's usually my angle cuz I already know JavaScript.
So, I can like work in that space.
More often.
But, um, yeah, usually that's how I would describe myself and outside
of tech, I love to travel, solo.
I can travel with friends as well, but solo is, is better.
. I mean, in my opinion, it's, uh, I really like it.
But yeah, otherwise I love reading and, and tinkering and building things.
So that's kind of how I would describe myself.
Colin: The, traveling solo, thing that you mentioned there is
something that I'm newer to.
I actually just went on a trip to Portugal earlier this year and, There
was some circumstances that made it so that it was a solo trip eventually,
and it was actually really fun to just be able to get, you know, go do the
things I wanted to do, not have to like corral people and all of that.
Charlie: Exactly.
Colin: um, but yeah, looking at your website, you've done quite
a few, like really cool projects that are, very like human computer
interaction related, just kind of having fun with technology, sensor.
The web airplanes, walk us through how you come up with project ideas and
like if you have a process for that.
Charlie: I think over the years I kind of came up with my own,
process, but I never really do.
anything completely from scratch or anything completely original.
I usually, either build up on something that I have built before
and I add either a new sensor or I try a different technology or I try a
different kind of interaction or I take inspiration from either, uh, something
that I read or something that I came across on Twitter or, or a series I'm
watching on Netflix or, or anything.
In terms of, process, I think it's kind of, the same way that I did it when
I started where I was coming across.
A repository like I, I learned to code in a bootcamp.
And when I finished that bootcamp and I was looking for a job, I
still wanted to keep coding to make sure that I was still learning.
Uh, but I wanted to do something that I found, exciting.
So I started to come across.
Programming for hardware in JavaScript, so controlling the little robots.
And I was coming across different repositories that I was trying, and then
I was adding my little, twist to it so I didn't start completely from scratch.
I don't think I, I mean, I don't know how I would've done it completely
from scratch, but, usually I kind of look through GitHub and see is there
something that's, interesting to me?
And then I try to change one aspect of it.
So, uh, even the, the time that I built, a project to.
Play like an Air Street fighter with like real movement in the
air with a machine learning model.
I actually was inspired by another, project that was a bit similar, but it
was using the, the webcam to check your, to check your movement, and I was okay.
That's really cool, but.
, like when you're working in front of the webcam, you're restricted
to a little space, right?
You, you have to do it in front of your computer and if you, if the
lighting is wrong, then it's not gonna recognize you gesture properly.
So I was thinking in terms of interaction, I would like to be able to play like
anywhere in a room and that's why I kind of removed the webcam part and
I was like, okay, I'm gonna do it with real movement with a sensor so
I could be anywhere in a room and it doesn't matter if it's at night and I
can have multiplayers and stuff, so.
That's usually my process.
Like I start with like a starting point or I have a question
like, is that even possible?
And then, uh, and then I tinker it and once I just answer my question like,
yes, it's possible or not, then I stop and I move on to another one because
I never really polish what I do.
Cuz then that would be never ending.
And I always have other ideas I want to work on.
So I always try to like frame it with like a constraint that could
be like a language constraint.
Something I want to add that's different and then an end point that's like when
I've answered my question, is it possible then I need to stop and I need to move on
So that's kind of how, um, like I work also because yeah, my time is limited,
so I have to make sure that it fits in wherever I can on my schedule.
CJ: The other sensors that you added that were not webcams,
like what kind of sensors are.
Charlie: So it was, um, it was a gyroscope and acceler meta.
So, uh, because with the acceler meta you can detect how fast you're moving and with
the gyroscope you have an indication of, uh, x, y, and Z coordinates for angles.
So in terms of, uh, recording data for movements, that's two
sensors that are pretty great for that cuz it, you end up with.
Six points of data.
So X, Y, Z for accelerometer and gyroscope.
And when you, uh, record that data, uh, as you're doing like a punch in the
air or something, that's enough data to then train, uh, a machine learning
model to, recognize the difference between, uh, punching or doing like,
some kind of like uppercut movement.
Like I'm not really familiar with the actual terms that you have to use, but
you know, And then, yeah, you can, like I remember spending, a few Sundays where
I was just alone at home, like punch, punch, like So, and in the end, yeah, I
did it a few times and I used that data to, uh, train a machine learning model
and then, Um, using web socket to kind of stream the gesture to the browser
and, and then, like play a little game.
So it was a prototype.
I didn't really go further with that, cuz again, my question
was, you know, is it possible?
And then when it's possible, I just, I moved on.
But that was an interesting one because there's a lot of
different ways to use the, and aas.
So the first time I.
A device that I don't think they sell it anymore, but Google used to sell
the Daydream headset that was, uh, an upgrade from the cardboard vr.
And they had a little controller and, I used that, but then I would,
I also built my own custom one with an Arduino and an actual sensor.
And then I also built a version that uses your phone, because your phone has an
extra and gyroscope and there's a web api.
So I could remove the whole, not just part that was streaming, the thing to the
browser, because I was like, well, now.
The generic sensor API in the browser and you can stream the data directly,
like, uh, in, in frontend JavaScript.
So it was an interesting way also to add on that, onto that project and be
able to experiment with the web API I had never worked with before, and that
was kinda like my excuse to try it.
So, and then I ran another idea, so I stopped
Colin: That's fun.
Yeah, I, I've been to a few hardware hackathons where depending on what people
are working on, you're right, you have like people over here punching the air
and like recording their movements and someone over here is like trying to make a
fish tank that drives around on an RC car
Charlie: Yes.
Colin: or stuff like that.
So, uh, what you mentioned, I think is really kind of good for
people to just kind of take from like building and learning things.
The name of the show, right?
Is that like, I like that you don't worry.
How can I make this perfect before you even start And I think looking at your
project page on your website, you see a, you started a lot of things and you have
used a lot of sensors and you've played a lot of stuff where I think a lot of people
don't even start because they're afraid that they aren't gonna be able to make
it perfect or polished and all of that.
And I think, that's a disservice cuz there's a lot of really fun things
that you can play with that you don't really need permission to go
play with those APIs, to play with those hardware sensors, things like.
. Charlie: Mm.,
Colin: I know there've been a lot of like different Kickstarters and you know,
hardware is hard, so I think tapping into things like your iPhone sensors
and things like that is also great cuz Apple has spent a lot of time and money
on making those sensors really good.
But you could also go deeper and build your own, Arduino sensors
as well, which can be fun too.
Is there a sensor that's like your favorite if you had to pick one,
Charlie: Ooh.
They kind of all do d.
Things.
So, I mean, if I build something custom, I usually start with,
Arduino as my micro controller.
And then, well the sensors, it depends what I would build.
But if we then, um, talk about more like.
Brain sensors.
I do have a favorite.
I've tried a few
Um, so it's like, it depends what I'm building, but if I, yeah, if I do custom,
I go with Arduino as my micro controller.
And then, uh, if I do other things like in terms of brain sensor, my favorite would
be the notion from, uh, New York City.
But, I don't build everything custom cuz there's things I couldn't, I mean,
I could build my own brain sensor.
I actually have a kit that I never used.
, but . But there are some things that I would, uh, I'm fine with
just buying off the shelf and, um, and try to hack with that as well.
CJ: It seems like the most intimidating thing to me would be like, I
bought the sensor and I got it.
I get it from Amazon, or whatever.
You know, some thing a package arrives in the mail, like number one, how
do I plug that into my computer?
and make it talk.
And then number two.
. How do you actually figure out all of the different protocols?
I know like in the past, I was trying to play with early
stuff that was using Bluetooth.
And I just remember it being a nightmare, like, how do you even
make these things talk to each other?
So I hope that it's gotten infinitely better,
Charlie: but yeah, I think maybe the chance that I.
Have all the opportunity is that, as I use JavaScript a lot, the community
is very good at putting their work, open source, and you can find a
ton of projects, on GitHub or even now, like all the different web APIs
that you can use, in the browser.
It, it's, I mean, every time that I want to build something,
most of the time I can find a.
Pieces of interesting code in different repositories that sometimes I have to put
together to do like exactly, what I want.
And you can start from something that you find.
And then if it doesn't work exactly the way that you want, then you can
either move away from JavaScript if, if that's not the right
language, to do what you want.
Or you can try to dive deeper and slowly build something more, uh, Them, but even,
even with, uh, Bluetooth now, yeah, you do have the Bluetooth api, uh, in the
browser as well, or, there was some, not just tools or you can try different
languages, but, usually I do research before I buy the hardware, so that I know,
because sometimes you might not even buy the, the right device or sometimes there's
more repos that are working with like a different device than, than another.
Usually I do some research before I really like start to get into it.
But usually there's like no matter what somebody somewhere
would've done something.
And even if it's not exactly similar to what you want to build,
there's ways that you can tweak it.
Um, and I think, I mean, at first at least, I was always checking that there
was a GitHub repository, like at first before starting to build my own thing.
And now as I've kind of learned more, over the years, I'm more comfortable sometimes.
Like going away from existing repositories and trying to do something
myself, but it's not something I would've done at the beginning.
I think it would've been a bit too scary, like I wouldn't have known how to start.
But now I'm a bit more comfortable going a little, deeper and
avoiding certain abstractions.
Um, but yeah, things take time.
Like it's definitely a learning process.
CJ: When you buy these devices, have you ever run into weird challenges getting
them to talk like, oh, this Bitstream is coming in big Indian, but I need
it in little Indian, or like weird?
You know, I, I don't, I know I can see that there's data, but I don't know like,
how to make it, something I can use.
Charlie: So one, one thing that I can think of, is more like the first time
that I played with a, a brain sensor.
It, the SDK was only available, I think it was in, Java and c plus plus.
And that was not languages that I , that I knew at the time at all.
So I think that was like one of the first time that I really hit a wall,
because it was really not something that I was working with every day.
So it was really hard to get it to work and the repositories that
I was trying were out of date.
That took me three years to fix.
So this is what I mean that, you know, sometimes I come across something
that's a bit too hard and I put it on pause and then I learn more.
And then, you know, one day you look at it again and for some reason you have
figured it out in like five minutes, uh,
But, uh, I think that pushed me to create my own.
A little JavaScript framework for it and, and like make it talk
to each other between the c plus plus side and the no GS side.
So that was like one thing that took me a, a while.
But otherwise, I think recently as well, when I did my project to,
get data from live, airplanes.
So I used, what is called, uh, software defined radio dongle
that you plug into your computer and you get, you get raw data.
and the thing is, like when I got that raw data, I was like, okay, cool.
I can connect it to the browser and I can get raw data in the browser, but
now how do I transform that raw data?
To actual readable Jason data from an airplane.
And this is where I'm really thankful that some people put their work online,
because I, I found, a repository and it was done in nudges, but then I could
look at the part of the code that was decoding the data and I could look
through the code and be like, oh, okay.
So you can like, transforming to that.
And then you could do some research and, and find that there's a certain format for
the data that is broadcasted by airplanes.
And you can be like, okay, so.
The bit values between like zero and five are the number five, then it means
that it's a message about the altitude and then you can decode the rest.
It took me a few.
Months, because it's something I had never done before.
But it is definitely like I start by making sure I can get data.
Uh, and then it's, uh, it took me a bit of more research to find the, the
format of that data and how do you actually go from raw data to, to turning
into something that's more readable.
And it's something I still need to look into because I relied a lot on.
The existing, uh, repositories, and it's something I wanted to do now, is
go back and try to rewrite it, on my own because that, uh, maybe I don't
need most of the part that the other author, wrote, and maybe I just need,
you know, a little bit and I'm actually, there's too much code in what I built
and I could, uh, make it better.
But that's also the part where, , you know, it worked, it did what I wanted
to do and I moved on to something else.
Um, so there's, I could always like do something better, but that was an
interesting one because I think it was the first time that I actually, looked at
raw data and be like, what does that mean?
Like, how do certain communication protocols work
because they're all different.
And I was like, okay.
So, A D S V data, which is like the protocol for how air.
Communicate.
Uh, now I have a better idea of the structure of these
messages and what do they mean?
And you actually look at, uh, the, the bit values at certain positions in the
array, and it's like, oh, that means that.
Super cool.
So yeah, , that was fun.
CJ: So cool.
So I wanna change gears just a little bit from all the HCI stuff, and talk a little
bit about your experience at ThoughtWorks.
ThoughtWorks is a technology company.
I think you could maybe give everyone a, a brief introduction to it, but they put out
this thing called the ThoughtWorks radar, which is a collection of technologies
that they're watching and have on.
On their radar to learn about or use in products and they kind of
range from things that might be, production ready versus, upcoming up
and coming or, just things to watch.
And I'm curious like what your experience was like working there and also how
they build this, because I think it could be, yeah, it's like it's useful
for individuals to keep an eye on what technologies are sort of, uh, interesting.
Charlie: Yeah, sure.
Well ThoughtWorks is a consultancy, so the good part, I mean, the reason why
I wanted to work there, um, I got that job right after my bootcamp, uh, and I
was interested in working there because I, at the time, you know, when you don't
know how, what you wanna specialize in, and I was like, I wanna be a full stack
And it was, job, like a good place to, to be that, because as you're a
consultant, it means that you work for a different clients and you
might be on a project for either like three months or six months or a year.
And it can be in a lot of different, programming languages.
So, I think at some point I did some things in Ruby or for, you
know, a few weeks you can be thrown into having to do things in Java
and you might not know Java, but you have to figure it out on the job.
So that was also the, the challenge.
But then I think that's what is really helpful in building the radar.
I remember being part of Putting together one of the edition of, of
the tech radar, so we had these, meetings at lunchtime where, you
know, anybody who was interested was getting into a meeting room.
and we were putting like sticky notes on the walls about technologies that we had
worked with on our different clients.
And, uh, what did we think that they were in the like, trial kind of column
or like, you know, forget about it.
I forgot the names of the columns.
I think there's like trial and, uh, assess and, and things like that.
And it was really interesting because, well, as we get to all work with.
Clients from different industries and on different types of projects.
We try a lot of different technologies, so even for me, it was nice to have a,
a little sneak peek on what it, what was about to be on the radar before it
was released, because then, For example, Mia, I could be like, oh, I worked, uh,
with um, a three Gs, uh, you know, 3D in the browser on that client, and it's
really cool technology, but I didn't know that, you know, other people were
doing things with Kubernetes or like flask, you know, with Python things.
So it was, a nice way to.
Have an idea of like what was out there, even though I didn't
have the chance to work on it.
And, uh, it was interesting to just hear from people's, um, experiences
working at different clients and they were sharing the pains that they had
with different technologies and why they thought it was, it would go in
the access column and not another one.
So it was, it was really an interesting, process.
And even though I don't work there now, I still, I still read it.
Uh, I don't know if they still do it like that now, but I loved
that they were, including people in the process from junior dev to.
Any kind of like senior or leader, uh, engineer.
And, and I, I, to me I love that because it meant that it didn't
matter if you had just joined or if it was your first project, , whatever
technology you thought should be on the radar, then we would, discuss it.
And not everybody, not everything made it through, cuz there were like
sometimes hundreds of post-it notes,
But it was a nice, way to be.
and a nice discussion that was going around that.
So it was like, I remember it and it was a, it was a nice, like
a fun little lunchtime meeting.
Colin: Yeah, that's, that's fun.
Cuz I think consultancies they're not always known for
picking up new technologies.
I think like every, everyone thinks like startups and, you
know, web three companies and crypto are doing all the new stuff.
But like, sometimes, like I've been in consultancies where they're like,
you know, some marketing persons pitched this client on some kiosk
in some technology that we've never built before, but we have to go figure
like they, they signed the the deal,
so we gotta go figure out how to
Charlie: Yeah.
Now you have to figure it out.
Colin: So it's cool.
I mean, ThoughtWorks has been around for a really long time.
I know a lot of people who have been in the Ruby world for a long
time probably know ThoughtWorks.
We'll put a link to the, the radar and the show notes too,
so people can check that out.
But it's a, it's a cool way to like approach each thing
without just being like, I don't wanna learn new things anymore.
Like, I know that it's with, especially like in JavaScript,
there's like a new thing every day.
So being able to look and see, like, have a, a measured kind
of guide to, you know, , is this something we should keep an eye on?
Is this something we should be adopting?
Maybe this is something that's behind us.
Um, so it's a pretty cool way of, of looking at all that.
Um, when you are looking at some of those new things, like how do you
approach learning a new thing if it's something that you've never.
Dealt with before, whether it's like a new JavaScript library or the
things that you're doing in machine learning, uh, those kinds of things.
Like, is there, do you have a way of picking up new tools?
Is it, you know, doing hello worlds?
Is it, you know, just trying to get to that, that first like output of data.
Charlie: Yeah.
Um, I think it, it might depend on what I'm trying to learn.
So if I was trying to learn a brand new language, I would probably
do the, uh, the hella world.
But if it's, still in JavaScript, but a new framework I don't really do the hella
well because I know that like I need to do something that I'm really excited about.
Because again, if I do that on my personal time, it's like limited.
And also I think, if I, if it feels like it's gonna be a chore,
I know that I'm not gonna do it.
I'm gonna think about all the other things I could do in the
meantime, . So, um, usually if I try.
JavaScript framework.
I try to find something that I want to build anyway, and then I try to build
it with that, with that framework.
So if I want to do, I dunno, if I wanted to build, a new interactive web
experiment and I have never worked with, I don't know, astro or, or Njs, then
I might still do the interactive part in, uh, like in a, you know, standard
JavaScript or, or tens or anything.
But then, Build the website using, using next GS or whatever
other framework is out there.
There's probably a new one just today, I don't know, . But then, yeah, if
it's another language completely.
For example, I think uh, last year I tried to learn rust and I went more with
like a Hello World, website because I was like, okay, I don't know rest at all.
And I wanted to try to host like a rest website on the JAMstack.
So that was kind of like my constraint was like, okay, it has to be,
something that can run on net five.
And so then I was doing some research about, okay, web like.
, yeah.
The ways to build websites in Rust and there was lit different
tools and I didn't try to build like an interactive Rust website.
It was really just like, oh, here's like, hello in the picture, . But,
uh, that was my way of like, uh, being introduced, um, to Rust.
But it's something that then I didn't really keep going with.
Uh, not because I didn't want to, but there was other priorities.
So yeah, usually I try to be really excited about something that I
want to build and if it seems too hard, then I start really small.
When I started with machine learning, I started with, the hello world
of machine learning, which is, recognizing, like handwritten numbers,
uh, with the M N I S T dataset.
So I started with, uh, and then, it taught me.
okay, so when you build your machine learning model, you need to
prepare your data and it needs to best to have a certain structure.
And then you pick different algorithms and then you have like predictions.
And from there I was like, oh, what if I wanna move away and use another data set?
And then what if I don't want images, but I want gesture?
So I kind of like replace little bit until I get to a point where
I have a project, idea that I want to build with that technology.
CJ: Super cool.
Uh, Richard Marenstein from Stripe.
Uh, another person that we work a lot with, uh, published an
article yesterday called Take Your Pragmatism For a Unicycle Ride.
And it's really funny and it's, it's got this story about how as
a teenager he spent this summer.
Learning how to ride a unicycle and like a unicycles, like totally not
a pragmatic way to get around, but he just put like so many miles on it
that summer because it was fun and interesting and tough and whatever.
And so we'll put a link to the article in the show notes.
But I love this section where he talks about how it doesn't matter if people
are sort of like making fun of the tools that you're picking, as long as
you feel the energy and the excitement.
And that's like exactly what you're talking about is like as
Charlie: That's exactly how I feel.
CJ: Yeah, if you're buzzing and you're just like, whoa, this is so freaking cool.
Oh my gosh.
Like, then you get pumped and like a lot of the stuff that you work
on, I think too, like when you share it, everyone , that's like
the response from people, right?
Like, the ultrasonic payments blog post that's out like blew everyone's mind.
And there's uh, there's some other stuff that you're working on now
that I think is gonna be also like equally as fun and exciting.
So I think it
Charlie: I think yeah, because learning is something new.
can be very challenging and it can make you feel quite stupid.
Like I feel stupid all the time because I always do things I don't know , so I'm
like constantly in this state of almost like beginner and, but then when you, if
you, if I know that I'm excited about.
The end goal then that keeps me going because I know it's possible.
I just don't know yet how to get there.
And but that moment, like these five seconds of adenal in rush,
when it's finally working, it's.
Amazing.
I think that's what keeps me going because I know that at the end when
I'll get to the end goal the excitement is go, like, it's gonna be both an
excitement to see the thing working, but also to know like, wow, like three
weeks ago I didn't know how to do this and I learned so much along the way and
maybe it doesn't apply to my job right now, but I'll never know if it applies.
And, but even if it never applies to something practic.
I love that as an engineer, I learned more about so many
different aspects, along the way.
And to me, like I, that's the part of being a developer that, that I love.
Uh, I wouldn't do what I do if there was no excitement and fun.
Like if you do your work like eight hours a day, like, how can you have no fun?
Like, I don't wanna , I don't wanna do that.
So, I mean, there's definitely been times where it wasn't fun, but I.
. If it's like over a long period of time, then I, it's not really worth it for me.
Colin: I think a lot of people have a hard time coming up with side
projects, especially if they're newer to the industry and they're
trying to build out their portfolio.
And I always try to push people towards like, like if you're into d and d,
like build something for d and d.
Like, don't go find something that you hate.
And try to build something for that because you're not gonna have fun.
And when it's hard, when it, when you're feeling stupid, like the
thing that you love is gonna be the thing that pulls you through that.
And then you might even have this fun toy that you get to play with
when it, when it works, you know?
And maybe it's not the thing you set out to build.
But it's close.
And you know what I love about hardware too, is it's much like APIs.
Like you get to do a thing that controls the thing in the physical world with coat
and like, that feels like magic, whether it's a microphone, a webcam, a sensor.
And I love the idea like some of your projects
. This one's a clapping to, to toggle the dark mode on the Netlify website.
Right?
So like the sensors there, I'm assuming was just a microphone, right?
Charlie: Yeah, I think the constraint there was that I didn't know if I could
run, um, Teso GS in a Chrome extension.
And then I was thinking, cuz I knew how to run a website with it and I
knew how to do it in node Gs, but I was like, Hmm, is there any reason why you
wouldn't work in a Chrome extension?
And then yeah, I started thinking, well, what could I
even do in a Chrome extension?
So then, yeah, I thought about dark mode and you just cut and.
Colin: You have the clap on.
Clap off, right?
Charlie: so yeah.
Colin: Yeah, and I mean, that's an example of like everyone has a
microphone on their computer already, so you don't have to buy or figure
out where the data's coming from.
You just have to make sense of the data.
Right.
And so love that.
You don't have to go out and buy a bunch of accelerometers.
I have a drawer of Raw sensors like accelerometers, light
sensors, things like that.
And it requires you to learn a little bit of electronics and
learn how to solder and, and figure out all that kind of stuff.
But I've also picked up, I unfortunately, a lot of the companies
are dead now, but like brain sensing headbands, arm motion sensing things.
I used to do a lot of hackathons around that and just the ideas that people
come up with, um, will definitely link to all of your projects cuz it's like
it would take the whole show to go through each of these, but just like the
idea that, you know, I get Hum bought that detects toxic comments on prs.
I think everyone can agree that's a thing that we all see in the world,
and it's just fun way of, can we detect that and then reply automatically?
That's, that's super fun.
But yeah, I think finding something that you love and then pairing it with an idea
that, you know, a, a tool that you wanna learn is, is a good way to move forward.
Charlie: and I think it's important to like, not want to
do something too big at first.
Um, starting small is just as valuable or even, you know, cloning a repo,
trying it out and then seeing if and if you can reproduce it yourself is fine.
Cuz sometimes I've been talking to people and.
The first idea that they have is like, oh, I wanna mix like VR with like
motion center, with like hardware now.
Do we know it?
And I, I was just like, I mean, it sounds really cool, right?
But you're never gonna start, like if it's your first time and because you're
excited or because you want to do something that doesn't exist and you see
this massive thing, and if you don't.
, any part of the project that you're going to build, you are probably not going to
do it because it's going to look like this thing that's gonna take a year.
And even me, if I, I mean, if I come across an idea and I know that it's gonna
take me a year, I'm never gonna start because I'm gonna be like, well, if I need
a year off, I'm never gonna do it now.
And so it's, I always try to break.
my projects into smaller parts, or I try to build something that only has
one element of it that I don't know yet.
Um, and then, you know, then I learned that element and then I can, you
know, build another thing that has another element that I don't know,
and then I can combine the two.
But I know how my brain works , and if it looks like it's gonna take
a while, I know that I'm gonna find excuses to do something else.
Um, so it's, yeah, finding little tricks, but not being scared to build
something that has been done before.
I know that sometimes people think, oh, it's already out there,
so I'm not gonna do it again.
But it's not because it's out there that like you still.
Built that knowledge and you haven't built this like neural pathways
to go from A to B, like in terms of, of creating a, a solution.
So I understand the excitement of wanting to do something that's new
and, and that has a lot of different components that you don't know.
But also if you wanna be realistic, if you actually want to get there, um,
you have to go, you know, slowly and be realistic with the time that you have.
Like have a goal that, you know, if you can not try to polish
it, just like make it work and then later if you want refactor.
To me the most important is to actually build that knowledge, over
time and otherwise, yeah, maybe people would get there, but, uh, from
conversations I've had with people, like they just never built the thing
that they said they would build.
So, I
mean,
CJ: I think it's also one of the reasons why I advocate for people
to learn programming with games.
Like start from tic-tac toe or start from something like, you
know, hangman or something very simple and work your way up.
and then build chess and like, once you've built chess, okay, now, like
you probably know object oriented program or like whatever, programming
language, like, uh, and that seems Yeah, it, it aligns perfectly, right?
Because then you, at the end you get something to play with.
And so yeah, starting small and building your way up, and a lot of the stuff that
you worked on too, like the red light, green light and the punching and the,
like, all of this in the physical world.
A type of game, right?
Like a lot of them are very game related.
They're not like solving any very serious problems, but they're like
building prototypes that you could combine and use in production to build
a solution to a really serious problem.
But you're like building the understanding and the knowledge
behind all these different
Charlie: I mean, some people, I've seen some people build, using the same
kind type of technology, to build some kind of like, uh, yoga instruction
website where it would track the position of your body and it would
tell you if you're doing a position properly so you don't hurt yourself.
There's, some, uh, fitness.
Applications that count how you do your squats because it looks at the camera and
if you're doing, so you can't cheat that.
And then when you look at, um, real products that are out there,
I think there is, a mirror that you can exercise in front of.
And you have, I think it might track your movement and it might probably
isn't done in JavaScript, but, uh, the, let's say that the logic is the same.
It's like, if you know how.
use a model that tracks different points in your body, then it would be about
writing that, but in a different language.
But you do, if you do want to build something practical later on, um, it
doesn't hurt to start with something that's fun because at least you can make
sure that you'll get that knowledge, that you'll get the, you'll make sure that
you, you have the motivation to keep going so that you understand, how to build the
thing and then you can use that knowledge.
to then do that thing.
Like, uh, I remember once, so I, when I learned to code it was the
beginning of 3D in the browser and I thought it was really cool, like yeah.
In Java script.
Uh, cuz you know, I thought that, oh, it's only game developers who can do this,
uh, using Unity and that, like, that's a different thing than what I'm doing now.
But then when I saw that you could do that in JavaScript, it was.
. It was so cool.
So I started, playing with this, and I remember that at the time when I was
doing that, I mean, a lot of people were just like, why are you doing this?
Like, it's not gonna be, uh, useful or, you know, nobody's
gonna hire you for that.
And, uh, well first of all, they were wrong, but I'm getting to this and,
uh, . It's, um, so even though like I, I didn't use that knowledge right away.
I still, at some point there was, I was at ThoughtWorks and we were working
for a startup who, had these kind of like physical pods where you could
scan your body, to get measurement.
And it was some kind of like health fitness tracker.
And I remember they had, an Android app and to see your body scans, you was, you
were, uh, kind of like flicking through different screenshots, like PNGs, right?
And I worked on that client and I knew that they had connect sensors inside
the pods, and I knew that you could get raw data from a connect in three Gs to
then build an interactive body model.
So I was like, well, you know, I mean, just give me, gimme a week and like,
Actually, no, I did it one night and then in the morning I was like, look
at what I did . And uh, and I just like, I knew that just gimme raw
data, like it's anonymized, right?
I didn't have the name of the person or whatever, but I was getting raw data and
I was using it in three Gs and nobody else in the team knew how to use three Gs and.
and then I, you know, when I left, I mean, I, I think the, I dunno if
the company's still, you know, alive, but, uh, that's not my problem.
And in the end, they were able to switch from just like a
carousel of PNGs to an actual.
Interactive 3D model that you could rotate and zoom in of your own body.
And then, you know, from there, there's other things you could do.
You could model like, oh, if I was losing, you know, five
kilos, how would my body look?
Because it's, uh, it's key points from, from a, from a clinic, right?
So you can just readjust that.
And that was the goal.
But it means that I could come up with that idea because I knew it was
possible and I only knew it was possible because of site projects, that I did.
And.
. When I got my job at the New York Times, I know that it was totally
because of the projects that I did on the side that were not commercialized.
It was just me showing that I would learn stuff on the side, and it was really
interesting for them because it was more of like the creative side of, of the New
York Times, so, Yeah, it's like if you're excited about something and somebody tells
you that it's not useful, don't listen.
You never know when it's going to be useful, and sometimes you might
be, the only person who can come up with an idea because you happen
to have tried something that other people haven't tried, and you can.
Help, uh, a startup have like a, like an innovative part in their
product that maybe will help them get, more money in the, in the long
run because they happen to have that and no other other company has it.
It's just to say that, sometimes even if something doesn't seem practical at
first, . You still build that knowledge and you build that kind of creative
mindset that can come up with ideas that wouldn't really cross your mind
if you're not training yourself to see things from a different, uh, angle.
So to me, I totally see the benefit of it.
I know that there's still people who sometimes, you know,
are like, why do you do this?
You can't sell it.
It's like, uh, I don't wanna sell it.
I don't wanna sell my personal time So uh,
yeah.
So, I want people to just be excited about what they build and one day it
might be helpful, even if it doesn't seem like it might be right now.
Colin: Yeah, I, I imagine a lot of this stuff would also be pretty
relevant in like AR and VR as well.
And like immuno, I think meta just announced it like, you finally get legs in
vr and it's like, okay, if we're, if we're only at legs, we still have a
long way to go before we know what we're actually doing in, in virtual space.
But, um, I love.
Of like your approach to, to pulling back the curtain a little bit and
learning like why things work.
This is kind of off script a little bit, but I think like watching all the
stuff with chat G P T that's happening, I think a lot of people are looking
at that as like magic, where you put inputs in and you get outputs out.
And I don't know that a lot of people are going under the hood of what it takes to
build those models to do it themselves.
They're hoping chat GBT is just gonna do it for themselves.
What do you think of, I guess the whole.
Space, um, in terms of like how we can program it, how we
can use it in our day-to-day.
I know this is a question we didn't really prep you for, but just
curious what your take is on that.
Charlie: Um, so I haven't used personally chat G p t yet cuz so many people are
sharing things that I feel like I have an idea already, , I don't have to try it.
I might try it later to, see really what it can do.
But I think having built machine learning models before, uh, I know
that like, I mean, I see maybe less of the magical side because , sometimes
people talk about it as if it.
Something, yeah, something magical that's like superior to like human beings.
And I'm like, it could not exist if human beings had not creating the
content that it is trained with.
And recently, I, I started thinking, well, if all the content that we
create is generated by chat, g P.
Whenever chat g p t is going to be retrained, it's going to be
retrained with its own content.
And at, at some point there's going, like, my question is, is uh, if we
stop writing original things that actually we come up with, are we, is it
just, are we just gonna like stagnate?
Is it just gonna be, so the same words being like speed out again and again.
So that's like an interesting thing.
I think there's definitely applications.
That could be really useful if you're really starting to do, uh,
to learn something from scratch and you have very more like, uh,
if you want complicated concepts to be explained in a, in a easier way.
I can see the benefit of that.
But then the issue is when it fits out a wrong answer.
How do you know if you're a beginner in, in a topic?
So there's, I, yeah, there's some, I have some concerns around.
Spreading information that's actually not correct and that you wouldn't know
because if you're asking questions because you don't know the answer, right?
So there's a bit of, of that.
And also the fact that if it ends up being monetized, it was actually trained on
free content that everybody put out there.
And I'm not quite comfortable with the fact that you would
monetize a product that, uh, used every, uh, everybody else's work.
And so I.
I'm hoping that people will use it as a tool to maybe help or, or augment
their, capacity or capabilities, but without completely replacing the
creativity that comes with your own experience, your own way of seeing things.
I wouldn't want people to just ask tr for ideas and not even try to
push them further, because then I think it would be a bit sad.
I think to me, what I like when I create things.
to look at my environment and being inspired from a random
conversation that I have.
Or, uh, there was, I don't know, a random documentary on Netflix about Spycraft and
I was like, Ooh, now I wanna make SP tools
I mean, it's like that kind of, that kind of inspiration that you randomly get.
Like, I don't want to be told what to do by an ai.
But again, I haven't tried it, so I'm not quite sure.
But recently, when.
, like I was watching a, a video of somebody who was trying to, use Chad
g p t to build Arno things, and I was a bit sad that the person was excited.
But it, the content that was, that was generated by Chad g p t was
something that was kind of already in the docs, like really easily.
It was like a blink sketch and Blink is like the hell, the world of Aino.
And that person was like, oh, Chad, g p t is awesome.
And I was thinking, well, the blink sketch and documentation is already
on the site and like you don't go and tell the doc writer that they're
awesome for having written that content.
So I hope that people don't forget that.
Um, The reason why Child Deputy is so awesome is because like everybody who
shares their knowledge on online is already awesome, and nobody tells them
. So it's, yeah, I'm a bit conflicted.
I, I want to see where it goes.
And I hope that it's going to be yet used as a, as a tool to like,
augment or, or help, but not complet.
Replace, I, I wouldn't want people to start selling products that are completely
written by charge G P T, because then I feel like it's a bit disingenuine.
Like it feels wrong to me,
Colin: I'm taking all the fun out of it.
Right?
I mean, I think there was, there was one concern, I, I'll just
throw d and d out there again.
But there was this concern that the creators of d and d wanted
to replace human dms, dun Dungeon Masters with AI dungeon Masters.
And I was like, I think everyone's forgetting why we
play this game, which is a game.
It's not meant to be work, it's not meant to be automated.
Like I play it to get away from computers.
Like, I like to play it on paper with a pencil, like with my friends.
So, , you know, I think you've got a lot there That's right where it's like there
are awesome creators creating content.
Maybe something to take away from here is if you really enjoy
something, go tell the author.
Go tell the creator like that.
It's awesome.
So that, um, that we don't have to give everything up
to our AI overlords too soon.
Charlie: Yeah.
CJ: Totally.
And that's like, it's a good way to network too.
Uh, if you see something that you like and just like shouting out that person,
you might get an intro or chance to talk with them and build your own network.
So
Charlie: It's just nice as well.
Like I, I don't get dms often.
. But you know, sometimes I get somebody telling me like, oh, I
love your, the stuff that you do.
And it feels very nice because like, you know, sometimes I'm having bad
days too, and then I get a random DM and it just reminds me like, oh, it's
not completely useless what I do.
Or even if like, I don't do it for other people, I do it for me.
But it's nice that, some people might be inspired or might be
excited to try a technology, because a lot of the times when.
When I do something, I do it for me, but then I also teach it because I want people
to know, and I want people to, feel like they can also try machine learning.
Like, it's not as difficult as you think.
It, it, it is.
And when somebody shows me that they, you know, so they, they sent me a project
they built because they read something.
I wrote, like, to me it feels good because it feels like,
okay, I, I did something right.
Like I put my knowledge out there and it helps somebody, learn
about something or be excited about something or build something.
And, Yeah, it doesn't happen often.
I think people are a lot quicker to be mean and judge than they are to actually
give positive feedback, unfortunately.
But yeah, I, I wish that we would recognize, when we praise chat G p t I
wish that we would recognize that it's only as good as the content we, gave it.
Colin: Absolutely.
I think that's a good spot to end it.
Where can people find, more about you and all of the different
projects that you've been working on?
Charlie: Um, so I've been a lot less active on, on Twitter for a
while now, but I'm still there.
So I'm, uh, at Dev Charlie on Twitter, uh, on Mastodon.
I'm on the hacker server.
And otherwise my website is Charlie jar.dev.
And I usually, every time that I build something that I'm, proud
enough to share, , I put it on there,
Uh, otherwise I'm on GitHub, Charlie Jar as well.
Colin: Amazing.
Yeah.
Thanks for joining us this week and thanks to everyone for
listening to Build and Learn.
CJ: Yeah.
Thanks Aton.
Really appreciate your time and attention.
Thanks again, Charlie, for joining us.
Appreciate it.
We'll see you next time.
Colin: Bye France.