Build and Learn

In this episode, we're joined by Charlie Gerard to discuss various topics related to learning technology and building cool projects.

Show Notes

In this podcast episode, the we discuss a range of topics related to learning and building cool projects. We begin by discussing the recent snow day and share some funny tips and tricks kids use to create a snow day.

Charlie Gerard, a senior dev advocate at Stripe, introduces herself and talks about her role as a creative technologist, primarily working in JavaScript. She shares her love for solo traveling, reading, tinkering, and building. We also discuss Charlie's previous projects and how she comes up with project ideas. She rarely starts from scratch but builds on something she has built before, adding a new sensor or trying a different technology or interaction. We also discuss the challenges of working with sensors and how to connect them to a computer and figure out the different protocols.

ThoughtWorks, a company with a tool called the Radar, helps developers navigate new technologies and decide which to adopt.

We discussed the importance of starting small when learning to code and using games to learn programming. We chat about using ChatGPT for games like D&D, expressing that these games are meant to be fun and not automated.

Charlie can be found on Twitter (https://twitter.com/devdevcharlie), Mastodon (@devdevcharlie@hachyderm.io), and her website https://charliegerard.dev/, and regularly shares cool projects on GitHub under the username charliegerard.

Resources:
- Thoughtworks Radar - https://www.thoughtworks.com/radar
- Charlie's projects - https://charliegerard.dev/projects
- Richard's blog post about energy - https://twitchard.github.io/posts/2023-01-18-unicycles.html 

Creators & Guests

Host
CJ Avilla
Developer Advocate @StripeDev. Veteran. πŸ“½ https://t.co/2UI0oEAnFK. Building with Ruby, Rails, JavaScript
Host
Colin Loretz
I like to build software and communities. Building software at @orbitmodel πŸͺ Coworking at @renocollective πŸŽ™Sharing software learnings on @buildandlearn_
Guest
Charlie Gerard πŸ³οΈβ€πŸŒˆ @devdevcharlie.hachyderm.io
Senior dev, published author πŸ“— and maker. Very much into creative technology and HCI, mostly in JavaScript.She / Her.

What is Build and Learn?

A podcast about software development and developing ourselves as software engineers. Hosted by CJ Avilla and Colin Loretz.

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.