►
From YouTube: Intermezzos — Ashley Williams
Description
Materials for this talk are available at https://intermezzos.github.io/rustbeltrust2016/#1
A
Hey
everyone,
as
you
might
notice.
This
is
not
a
talk
about
rust
and
translation.
It's
cool
because
it
does
say
that
on
schedule,
I'm
gonna,
head
but
pull
inaudible.
Is
that,
like
a
sports
thing,
alright
cool
something
like
that
and
and
we're
gone,
hopefully
we'll
be
back
up
in
a
second
zevran
having
a
good
time.
A
tres,
Belle,
rust,
yeah
I
am
extremely
excited
that
Carolyn
Jake
and
the
entire
team
decided
to
throw
this
there's
some
of
my
favorite
people
and
I
like
coming
to
Pittsburgh
a
lot.
So
what's
up
with
the
slides.
A
Alright,
we're
back
yeah
got
it
to
a
B
teams.
Av
is
so
hard,
alright
cool,
so
I'm
actually
giving
a
talk
today
about
intermezzo,
which
is
a
teaching
operating
system
and
I'll
get
into
that
in
a
second
but
hi.
My
name
is
Ashley
Williams
I
go
by
a
g-dubs
on
twitter.
You
may
know
me
from
that
I,
don't
recommend
you
follow
me
on
twitter,
I
tweet
too
much
and
so
I'm
a
little
bit
out
of
my
element
because
I
actually
work
for
a
company
called
NPM.
Does
anyone
here
know
what
mpm
is
cool?
A
A
But
again,
these
are
details
that
don't
matter
you
could
say
that
I'm,
a
JavaScript
person
and
I
was
so
glad
to
hear
that
conversation
about
tribalism
earlier
because
sometimes
in
the
rest
community,
you
hear
grumbles
about
this
lovely
little
language,
but
I
started
out
actually,
as
a
rubios
and
the
language
that
I
learned
right
after
Ruby
was
actually
erling
in
general,
you
could
say
that
I
really
really
really
love
programming
languages.
So
much
and
one
of
the
reasons
I
like
programming
languages
is
because
I
really
like
thinking
about
thinking.
A
I
don't
have
a
computer
science
degree.
My
degree
is
in
neuroscience
and
philosophy,
but
that
being
said,
I
do
like
thinking
about
the
thinking
that
happens
when
people
write
code
and
one
of
the
things
that
this
kind
of
desire
of
mine
has
led
to
is
working
on.
This
really
neat
project
called
intermezzo
sand.
A
Some
of
you
got
to
be
part
of
our
very
first
workshop
yesterday,
but
this
project
actually
started
from
a
little
funny
story,
but
first
I'll
say
inner
bezos
is
a
teaching
operating
system
specifically
focused
on
introducing
systems,
programming
concepts
to
people
who
could
have
no
programming
language
but
are
not
familiar
with
systems
programming.
One
of
the
ways
that
the
people
who
work
I
don't
like
to
describe
it
is
that
it's
like
okay,
you
can
write
some
JavaScript
now,
let's
write
an
operating
system
and
the
way
this
kind
of
started
was
was
sort
of
interesting.
A
So
I
started
this
with
someone
who
will
go
completely
unnamed,
but
he
looks
exactly
like
his
Twitter
photo,
but
you
may
or
may
not
have
seen
on
he
he
was
like
hey.
Do
you
want
like
stay
in
tonight,
put
on
some
comfy
pants
and
do
a
neat
colonel
tutorial
and
I
was
like
oh
yeah,
heck?
Yes,
I
do
let's
get
close
to
the
middle?
Let's
do
this
and
then
I
was
like
oh
wait.
Wait
can
I
write
an
operating
system.
A
A
Keep
your
hands
up
if
you
were
motivated
and
throughs
by
it
all
right,
well,
I'm
going
to
talk
to
you
about
a
part
that
made
me
feel
pretty
terrible
all
right
and
it's
this
page
called
required
knowledge
and
there's
some
really
really
special
parts
in
this,
but
just
to
make
sure
it's
absolutely
clear.
I
think
that
this
page
is
garbage
total
garbage.
A
So
it
starts
off
by
saying
that
you
need
to
have
an
understanding
of
basic
computer
science,
which
includes
being
intimately
familiar
with
hexadecimal
and
binary
notation,
who
here
is
intimately
familiar
with
hexadecimal
notation
all
right.
There
were
more
people
in
Germany
who
felt
like
they
were
when
I
did
this
other
time,
but
seriously
you
would
have
intimately
familiar
whatever.
I
don't
know.
That
is
ridiculous.
All
right,
then,
they
went
ahead
and
said
with
programming
experience,
that
learning
about
programming
with
an
operating
systems
project
is
considered
harmful.
All
right,
let's
just
do
away
with
considered
harmful.
A
That's
like
not
a
cool
thing
to
say
and
doesn't
make
any
sense.
And,
lastly,
they
let
you
know
that
failure
to
comply
with
any
of
this
required
knowledge
would
make
you
look
silly
and
that's
how
you
know
the
website
is
mostly
run
by
15
year
old
boys.
I
know
this
because
I
have
at
least
one
confirmed
person
who
is
a
fifteen-year-old
boy,
who's
really
into
this
website
uh-huh.
So,
yes,
failure
to
comply
will
make
you
look
silly
I
mean
looking
silly,
maybe
isn't
all
that
awful
but
anyways!
This
is
not
a
cool
idea.
A
I'm
not
into
this
at
all,
and
so
what's
interesting.
Is
that
when
we
think
about
doing
developing
of
operating
systems
or
any
systems
level
programming,
there's
definitely
this
social
feel
that,
like
this
is
for
the
leet
programmers
is
not
for
like.
Oh
you
like
write,
CSS,
definitely,
don't
write
an
operating
system
stay
away.
This
is
not
for
you
and
that's
really
goofy,
and
so
to
go
back
to
the
story
when
the
intermezzo
spread
kind
of
came
to
its
inception.
A
Was
this
kernel
tutorial
and
this
kernel
tutorial
was
written
by
this
awesome
person
in
Philip
oper
been,
and
it
was
a
series
of
blog
post,
called
writing
an
operating
system
in
rust,
and
you
can
check
that
out
by
going
to
this
URL
right
here,
and
it
was
super
great.
The
idea
is
that
anybody
can
write
an
operating
system
and
not
only
can
anyone
right
one,
but
they
should
write
one
all
right.
So
I
was
like
all
right:
yeah
I
can
operating
system,
and
so
can
you.
This
is
great
all
right.
A
A
It
looks
like
you
printed
hollow
world
to
the
terminal
and
I
did
and
it
is
an
operating
system,
but
there
is
a
good
question
of
like
what
what
is
operating
system
right
like
what
the
heck
you
might
be
hard,
pressed
to
actually
kind
of
define
what
an
operating
system
is,
and
it
turns
out
that
a
lot
of
people,
people
who
are
very
respected
in
operating
systems,
also
struggle
with
defining
it.
So
there's
three
definitions
that
we
were
able
to
find
on
this.
A
First
one
comes
from
a
book
called
modern
operating
systems,
and
they
say
it's
hard
to
pin
down
what
an
operating
system
is
other
than
saying
it
is
the
software
that
runs
in
kernel
mode.
So
that's
like
a
bunch
of
words
that
they
also
haven't
defined.
So
we
have
no
definition
so
far,
and
even
that
is
not
always
true.
So
no
definition,
that's
also
not
always
true.
A
Cool
part
of
the
problem
is
that
operating
systems
perform
to
basically
unrelated
functions,
providing
application,
programmers
a
clean,
abstract
set
of
resources
instead
of
the
messy
hardware
ones,
and
then
also
managing
these
hardware
resources.
Okay,
so
we
have
something
going
on
with
a
kind
of
like
some
abstractions
hardware,
the
next
but
like
they're,
not
like
really
deciding
you
know,
haven't
really
said
anything
for
sure.
So
the
next
one
very
short,
a
book
called
three
easy
pieces
and
they
say
virtualization,
concurrency
and
persistence.
Those
are
good
words
yeah.
A
All
right,
I
still
don't
understand
what
operating
system
is
and
then
so
here
from
something
called
exterminate
all
operating
systems.
Abstractions
we
see
that
an
operating
system
is
software
that
securely
multiplexes
and
abstracts
physical
resources
wait
for
it.
We
believe
that
the
definition
specifically
this
definition,
specifically
its
view
on
the
operating
system
as
an
abstract
ER
of
hardware,
is
crippling
and
wrong
all
right.
So
what's
all
right,
we
don't
really
have
a
definition
what's
going
on
so
in
in
the
interim
asus
book.
A
We
have
to
deal
with
this
question,
and
so
we
define
it
like
this
and
so,
of
course,
a
bunch
of
the
people
who
we
just
read
their
definitions
kind
of
say
this
is
wrong,
but
we
say
an
operating
system
is
a
program
that
provides
a
platform
for
other
programs.
It
provides
mainly
two
things
to
these
programs
abstractions
and
isolation
and
abstractions
in
isolation
kind
of
work
as
two
sides
of
the
same
piece
of
paper
here
and
so
then
the
question
is
kind
of
like
well
abstractions.
A
Isn't
that
what
we're
doing
all
the
time
in
computer
science?
Maybe
it's
what
we're
doing
all
the
time
always
but
what
kinds
of
upper
abstractions,
so
the
common
abstractions
that
an
operating
system
is
going
to
provide,
are
going
to
be
things
like
address
spaces
memory,
protection
processes,
files
and
sometimes
input/output
devices.
A
So
when
we
looked
at
my
tiny
little
operating
system,
what
was
doing
it
was
dealing
with
outputting
to
the
screen,
and
so
yes,
it
was
a
very,
very
small
operating
system,
but
there's
a
kind
of
deep
way
of
talking
about
these
abstractions
and
why
particularly
the
abstractions
of
an
operating
system
are
important.
So
what
you
can
imagine
is
that
you
have
a
program
and
you
want
that
program
to
run
on
Hardware
a
if
you
just
have
Hardware
a
writing
a
program
just
for
Hardware.
A
isn't
all
that
difficult.
A
But
it's
also
not
all
that
interesting,
and
it
turns
out
that
we
have
a
lot
of
hardware.
So
if
we
want
to
write
a
program
for
Hardware,
a
and
hardware
be
what
we
need
to
do
is
we
need
to
put
an
abstraction
in
the
middle,
and
what
we
see
here
is
that
operating
system
is
going
to
be
that
exact
abstraction.
A
Now
you
might
also
be
familiar
with
the
fact
that
you
might
want
to
write
programs
for
more
than
one
operating
system,
and
then
what
you
can
see
here
is
we
follow
this
same
pattern
of
abstraction
and
throw
a
virtual
machine
right
there
in
the
middle
now
again
with
the
tribalism
of
languages.
Perhaps
we
don't
have
people
who
are
so
fond
of
Java
here,
but
this
is
one
of
the
awesome
things
that
Java
did
with
javas
virtual
machine,
so
these
abstractions
can,
while
they
follow
the
same
kind
of
pattern,
be
really
important
and
have
huge
implications.
A
So
we
have
this
kind
of
generic
pattern
of
how
these
abstractions
were.
Where
we
say
we
have
a
and
a
is
explicitly
written
for
X,
but
I'd
really
like
to
support
x
and
y
and
so
I'm
going
to
put
abstraction,
be
in
the
middle,
all
right,
so
quick
break.
If
you
get
anything
from
this
talk,
I
love,
throwing
this
quote
in
my
talks.
This
is
a
mathematician
named
George
eat
box,
and
so
we're
talking
about
abstractions
right,
and
so
he
has.
This
amazing
quote,
and
he
says
remember:
all
models
are
here.
A
We
can
understand
the
word.
Abstractions.
Remember
all
abstractions
are
wrong.
The
practical
question
is
how
wrong
do
they
have
to
be
to
not
be
useful.
So
why
am
I
saying
this
I'm
saying
this
is
because
of
my
favorite
definition
of
operating
systems
is
an
operating
systems.
Job
is
to
lie
all
right,
it
is
providing
abstractions
and
is
providing
those
abstractions
and
those
abstractions
are
lies.
We're
going
to
tell
the
program.
The
program
can
use
all
Denari,
there's
no
other
programs
out
there.
When
it's
running
a
program.
A
I
can
just
believe
that
all
right
now,
that's
kind
of
heavy,
and
so,
if
you're
trying
to
get
beginners
excited
about
operating
systems,
I
mean,
depending
on
to
the
type
of
person.
Maybe
you
could
be
like
we're
gonna
build
a
program,
that's
just
full
of
lies
and
you're
like,
let's
do
it,
but
instead,
instead
we
went
with
this
word
intermezzo,
which
is
a
noun.
That
means
a
light,
dramatic,
musical
or
performance.
That's
inserted
between
acts
of
a
play-
and
this
was
a
really
great
name
for
a
lot
of
reasons.
A
First
off
it
really
played
on
that
idea
of
abstractions
that
the
abstractions
is
what
you
stick
in
the
middle
of
something,
but
also
it's
something
kind
of
light.
This
is
a
hobby
OS
right,
we're
not
actually
trying
to
like
rewrite
Linux
or
UNIX.
We
don't
want
to
do
that,
and
so
this
is
the
name
that
we
chose
for
the
project
now.
The
next
question
is
where
it
may
be.
A
We
kind
of
have
an
idea
of
what
an
operating
system
is,
what
the
heck
is
a
kernel,
sometimes
people
say
Colonel
and
they
mean
operating
system,
I,
think
or
Colonel
output.
What
is
the
difference
all
right,
so
this
is
definitely
a
little
bit
fuzzy
and
you
hear
things
like
the
software
that
runs
in
kernel
mode,
but
even
that's
not
always
true
the
way
I
use.
The
word
colonel
is
just
a
mean.
A
This
is
like
the
kind
of
core
part
of
the
operating
system,
so
you
have
an
operating
system
in
the
colonel,
it's
kind
of
the
middle
part,
and
if
you
have
a
super
super
small
one,
maybe
the
middle
part
is
just
the
whole
part,
so
an
operating
system
or
Colonel,
I
kind
of
use
them
interchangeably.
And
if
you'd
like
to
fight
with
me
about
that,
we
can
do
it
in
the
hallway
all
right.
A
So
a
lot
of
things-
and
this
has
become
something-
that's
kind
of
popular
recently-
is
they're
all
different
types
of
kernels,
so
one
that
you
might
be
familiar
with
UNIX
monolithic
kernel,
but
there's
also
micro,
kernels
and
EXO
kernels
and
yoona
kernels,
and
all
these
different
types
of
kernels
I,
don't
know,
there's
so
many
types,
all
right.
What's
the
difference,
I,
don't
know
it's
whatever
someone
recently
said
in
medium
and
that
joke
was
so
good
at
broke
the
AV
again
whoo,
yeah
I,
don't
know
why
the
AV
didn't
work
anymore.
A
All
right,
have
you
tried
plugging
it
in,
let's
see,
I
do
not
know
so
how
cool
is
it
that
it's
not
raining
today,
yeah
all
right,
let's
see
and
we're
back
all
right.
That
may
or
may
not
be
happening
every
once
in
a
while.
So
let's
get
used
to
it
cool.
So
again,
if
you
missed
any
of
the
important
types
of
kernels
they're
all
listed
here,
I
did
post
my
slides,
please
write
medium
think
pieces
on
all
of
them,
but
yeah.
Okay,
all
these
different
types
of
kernels.
A
All
these
white
dude
actors
have
no
idea.
What's
going
on,
and
probably
the
people
read
and
girls
don't
know
what's
going
on
so
a
big
theme
here
is
that
systems
programming
it's
supposed
to
be
so
official
in
serious,
was
like
most
of
the
times
we're
just
kind
of
making
it
up
as
we
go.
We
don't
even
have
like
a
defined
like
ontology
for
how
to
even
talk
about
these
things
all
right.
So
then,
the
next
question
is
all
right.
So
you're
gonna
build
an
operating
system.
A
What
kind
of
operating
system
you
know
my
gosh
there's
a
lot
of
questions
here.
A
lot
of
questions
and
it
turns
out
what
kind
of
operating
system
it
doesn't
matter
all
right.
We
could
waste
tons
of
time
trying
to
design
this
perfect
operating
system.
We
could
spend
time
drying
it
out,
writing
all
product
specs,
but
will
never
actually
build
it
and
the
whole
point
of
the
inter
mrs.
project
is
that
you're
going
in
and
getting
dirty
and
just
trying
to
figure
some
stuff
out
all
right.
A
The
goal
here
is
to
learn,
and
it's
definitely
not
to
make
the
best
operating
system
that
ever
existed
recently
when
we
were
talking
about
like
as
we're
continuing
to
build
in
our
maze
us
out
or
like.
Oh,
maybe
we'll
do
like
any
kind
of
unique
style
way.
But
then
recently,
we've
been
talking
about
mm
futures
is
out
and
Ross
that's
pretty
cool.
What,
if
we
kind
of
modeled
the
the
operating
system
on
like
v8
and
the
event
loop
and
no
that'd
be
that'd,
be
pretty
neat
and
like?
A
Is
that
going
to
be
the
best
operating
system
ever?
Probably
not,
but
it's
probably
going
to
be
really
interesting
so
again
when
you're
talking
about
what
is
operating
system.
Finally,
as
like
gosh
this
question:
what
is
it,
what
is
it
and
it
came
up
with
this
because
I'm
a
huge
Carl
Sagan
fan,
so
what
does
operating
system?
If
you
wish
to
computer
from
scratch,
you
must
first
invent
the
universe.
I
mean
invent
an
operating
system.
A
The
operating
system
is
kind
of
the
universe
here
and
it's
funny
because
I
originally,
when
were
the
first
docs
that
ever
gave
is
called.
If
you
wish
to
learn
es6
from
scratch,
you
must
first
invent
the
universe
and
I
realized
last
night,
I'm
pretty
sure
all
the
conference
talks
I've
ever
given
are
just
slowly
becoming
the
same
talk.
So
the
Holy
kind
of
message
here
that
I
really
want
to
say
is
guess
operating
systems
cool.
A
Let's
do
some
stuff,
but
you
know
if
you
want
to
be
an
awesome
program
or
whatever
you
don't
have
to
invent
the
universe,
but
that's
not
really
the
problem.
It's
it's.
The
idea
that,
if
you
want
to
a
lot
of
people,
tell
you
you
can't,
and
I
want
to
say
no.
If
you
want
to
invent
the
universe,
you
absolutely
can,
and
if
you
want
to,
you,
should
and
that's
the
whole
point
of
intermezzo.
So
what
we're
doing
here
is
like,
let's
make
the
computer
do
a
thing
with
like
basically
nothing
else.
That's
that's!
A
What
building
an
operating
system
is
when
we're
thinking
about
the
inter
maces
project
and
as
I
say,
get
low.
You
know,
get
low
level
programming
yeah!
Sorry,
I'm
trying
to
delete
it!
Sorry!
Okay,
all
right!
So
let's
take
a
look
at
what
inner
mrs.
actually
looks
like
so
we're
gonna
do
some
awesome
demo
time
in
a
second,
but
one
of
the
tricky
things
about
building
an
operating
system
is
there's
actually
quite
a
few
prerequisites,
it's
kind
of
complicated.
So
what
I'll
quickly
do
before
we
do?
A
Some
demos
is
talk
about
kind
of
getting
up
and
running
what
our
Linux
dependencies
are
and
some
utilities
that
you
can
use
to
help
yourself
out,
and
so,
when
I
talk
about
getting
up
and
running,
I
absolutely
love
the
street.
This
from
a
colleague
of
mine
from
a
few
years
ago-
and
he
writes
I-
wonder
how
many
programmers
want
their
entire
career
without
ever
getting
their
development
environment
working.
Anyone
in
here
who
still
doesn't
have
their
development
environment
working
yeah.
There
we
go
yeah.
This
stuff
is
so
hard.
A
I
was
recently
a
friend
visited
me
in
New,
York
City
and
we're
kind
of
talking
about
the
intermezzo
project,
and
he
was
like
he
finally
was
just
like.
How
do
you
do
that?
Like
don't
you're
already
running
an
operating
system
on
your
computer?
So
how
do
you
and
like
yeah?
This
is
really
really
hard,
its
kind
of
even
hard
to
conceive.
You
don't
even
know
what
questions
to
really
ask
to
figure
out
what
tools.
So
these
are
the
tools
that
the
interim
asos
project
uses.
A
There's
something
called
Nazem,
which
is
the
assembler
there's
been
called
LD,
which
is
the
linker.
If
you're
working
on
a
Mac,
you
have
to
like
use
a
different
linker,
and
that
makes
everything
difficult
believe
it
or
not.
The
Mac
operating
system
is
by
far
the
hardest
one
to
get
this
stuff
working
on.
So
for
all
of
its
like
ease
of
use
for
all
these
other
things,
it
was
extremely
difficult
to
get
this
kind
of
stuff
started.
What
I
originally
was
working
on?
A
Phil
Opperman,
Stu,
torial
I'm
actually
listed
in
his
blog
post
now,
because
I
started
trying
to
build
it
on
my
Chromebook
pixel
and
couldn't
forward
the
graphics
and
then
I
tried
to
get
it
up
and
running
on
the
mac,
and
I
eventually
had
to
write
like
a
vagrant
file
for
it,
because
it
was
just
completely
completely
impossible.
Luckily,
somebody
has
written
an
awesome
script
that
usually
can
mostly
take
care
of
all
the
things
you
need:
computers
right.
How
do
they
work
so
after
the
linker
there's
this
thing
called
grub.
A
This
is
probably
the
one
thing
that
you've
maybe
seen
before.
If
you
haven't
worked
in
any
sort
of
operating
systems
development,
it's
that
thing
that
kind
of
shows
up
at
the
beginning
of
your
like
I,
don't
know.
Probably
this
is
like
a
decade
ago.
It
would
show
up
at
the
beginning,
when
you're
booting
up
your
computer.
If
say,
you
had
like
a
rescue
disk
in
there
and
you
could
select
it
as
like
blue
and
white.
You
knew
that
you
were
in
trouble
if
you
saw
it
yeah
and
then
after
grub
there's
this
amazing
I.
A
Imagine
it's
X
or
ISO,
but
I
really
like
calling
it
Teresa.
So
please
confirm
that
I'm,
a
hundred
percent
correct
only
I,
am
NOT.
I,
don't
want
to
be
disabused
of
this
idea,
but
then,
finally,
the
thing
that
really
is
what
made
it
click
for
me
is
the.
How
are
you
actually
going
to
develop
this
operating
system?
Is
this
super-awesome
thing
called
chemo
which,
depending
on
what
type
of
operating
system
you
are
trying
to
run
on
what
type
of
hardware
on
your
computer
is
either
just
a
virtualizer
or
an
emulator?
A
A
Finally,
there's
these
neat
utilities,
so
something
I
do
have
to
say
about
operating
systems
de
ville,
and
this
is
why
it's
so
great
that
we're
able
to
move
some
of
it
so
much
of
our
project
into
rust
is
because,
when
you're,
not
in
rust,
the
error
messages
are
really
really
bad,
like
just
fill
the
screen
with
a
bunch
of
garbage.
That
does
not
make
any
sense
when
I
first
gave
this
talk,
I
actually
did
some
assembly
live
coding
and
messed
up
and
was
able
to
demonstrate
just
how
terrible
those
errors
are.
A
A
So
when
we're
thinking
about
building
an
operating
system,
we
kind
of
need
to
understand
alright.
What
happens
when
we
turn
on
our
computer,
and
luckily
we
have
a
lot
of
us
when
we're
doing
development.
Don't
have
to
think
about
these
things,
but
in
general
what
happens
is
the
first
step?
Is
you
have
the
hardware
load
something
called
BIOS
which
stands
for
basic
input/output
service?
A
It's
really
that
it's
just
giving
you
some
metadata
about
what
you
need
to
do,
and
so
what
comes
next
after
that,
and
so
this
is
a
really
complicated
part,
and
this
is
by
far
the
hardest
part
that
we've
done
in
the
operating
system
so
far
is
jumping
into
longbow.
Does
here?
No
one
long
mood
is
all
right
cool.
A
We
got
some
people,
so
when
every
computer
starts
up,
it
originally
thinks
that
it's
in
32-bit
mode,
even
though
it
could
potentially
be
in
64-bit
mode,
and
so
every
time
it
starts
up,
it
needs
to
do
this
kind
of
impossible
thing,
which
is
like
I,
think
I'm.
One
thing
and
I
am
just
going
to
dive
into
this
impossible
thing
that
I,
maybe
can't
do
and
then
suddenly.
A
Oh
I
am
okay,
I
could
I
could
be
64
bit
and
when
we
were
doing
the
workshop
yesterday,
steve
said
is
very
endearing
that
my
computer
is
willing
to
jump
off
a
cliff
for
me
every
time
it
turns
on.
So
that's
probably
the
best
way
to
describe
what
long
that
is.
Ok,
so
we've
talked
a
lot
about
all
these
kind
of
different
steps
in
the
operating
system.
Let's
take
a
look
at
what
intermezzo
'he's
actually
looks
like
so
may
the
demo
gods
be
with
me.
A
So
we
can
see
in
here
this
is
actually
running
in
Russ,
so
we've
written
it
out
and
rust,
and
we
can
take
a
look
at
this,
and
so
what
we
have
right
now
is
here's
our
k
main
and
inside
this
safe
block.
We
have
a
bunch
of
these
lines,
and
so
what
you
can
see
here,
pretty
much
is
happening,
is
I'm
defining
a
variable,
and
this
right
here
is
the
location
on
the
screen.
That
I
want
to
put
something,
and
then
right
here
is
actually
a
a
set
of
characters
and
color
codes
in
hex.
A
A
Spent
so
long
manipulating
those
little
numbers
to
try
and
get
get
it.
It's
ridiculous
so,
but
fundamentally
like.
If
we
take
a
look
at
this
that
code
again,
this
code
is
not
great,
and
so,
if
you
wanted,
you
know,
I
mean
this
is
basically
just
like
the
most
technically
complex
mspaint
ever
like
extremely
complicated.
All
I
want
to
do
is
like
put
colors
and
words
on
the
screen
and
I'm
doing
this.
Instead,
and
so
oh
there
we
go.
It's
all
right.
I
know
how
to
fix
it.
I
don't
know.
A
What's
going
on,
if
I
have
like
an
electromagnetic
field,
around
me,
oh
I
was
I
was
not
hating
on
ms
paint
at
all.
That
was.
That
was
all
love.
Trust
me
on
that
love,
ms
paint
all
right
and
we're
back
cool.
Yes,
so
again,
I'm
doing
that
is.
There
are
definitely
ways
that
we
can
use
rust
to
make
this
abstraction
a
lot
nicer.
So
let's
take
a
look
at
that,
so
one
of
the
last
I
guess
systems,
programming,
rust
dates
that
I
was
on
uh-huh.
A
We
decided
that
we
were
like,
let's,
let's
write,
this
vga
driver
and
let's
write
it
in
rust
and
let's
test
drive
it
and
the
reason
that
we're
able
to
do
this
is
because
the
way
things
are
printed
to
the
screen
is
just
memory
mapped.
So
we
can
kind
of
abstract
this
idea
of
what
we're
printing
onto
the
screen
as
a
slice,
and
then
we
can.
A
All
we
need
to
do
is
take
that
slice
and
then
just
stick
it
onto
the
screen
and
it
will
pray
write
out
all
those
characters,
and
so
what
we
did
is
we
abstracted
out
the
vga
driver,
which
is
here
and
I'll,
pull
this
up
here.
So
again,
this
is
another
rust
project
and
we
have
some
tests
and
so,
like
any
good
show.
A
little
bit
of
this
is
pre-baked.
A
A
Right
so
we're
in
here-
and
we
just
have
this
simple
struct-
we're
kind
of
doing
a
fun
thing
with
a
generics
up
there,
which
I'm
not
going
to
explain
right
now,
but
we
have
this
struct
where
we
have
this
slice,
that
is,
that
fun
generic.
Then
we
have
a
buffer,
which
is
just
this
array
of
you
eights,
and
then
we
have
a
position.
A
So,
based
on
what
I
just
told
you
right
now
we're
just
panicking
as
one
should
we're
writing
systems
code?
It's
scary!
It's
not
really
all
that
scary
and
so
with
this
flush
method,
based
on
the
structures
that
we've
already
built,
all
we
need
to
do
is
say
self
dot,
slice
as
mute
and
then
we're
going
to
clone
from
slice
and
we're
just
going
to
grab
that
buffer
data
here
and
so
writing
this.
A
We
can
just
save
it
and
then
I
run
cargo
test
and
we're
passing
gay
I
have
to
say
being
able
to
do
systems
programming
in
a
test
driven
way.
It
was
like
kind
of
awesome.
It
gives
you
a
lot
more
security
than
like
when
we
were
originally
doing
it
and
I'll
show
you
some
screenshots
from
that.
Where
we're
just
throwing
stuff
out
there
and
saying
like
will
the
computer
light
on
fire?
A
I
have
no
idea
all
right
so
now
that
we
have
our
vga
driver
working,
we
can
now
take
this
ross
that
we've
written
right
here
and
we
can
drop
it
into
that
bare
bones
colonel.
So
let's
go
back
to
our
bare
bones,
colonel
here.
We
are
all
right,
clear
this.
This
is
big
enough
for
everyone
to
see.
I
tried
to
guess
alright
cool.
Just
shout
at
me.
If
it's
not
alright,
so
in
here
we're
going
to
go
into
our
main
up
CD
into
yeah
I
could
job
Ashley
live
coding
is
scary.
Alright.
A
So
we
have
all
of
this
fascinating
code
inside
this
unsafe
block.
We're
going
to
get
rid
of
all
that
yeah
yeah
deleting
code
is
fun.
Yay
love
to
the
encode,
ok,
so
now
inside
the
safe
block.
What
we're
going
to
do
is
we're
going
to
use
our
vga
crate
so
to
use
that
we're
going
to
go
into
our
cargo
tamil
and
we're
going
to
add
it
as
a
dependency
just
get
rid
of
that
quickly.
A
Alright,
if
you
are
new
to
us
and
didn't
know
that
you
can
just
kind
of
pass
something
to
a
path,
you
can
it's
pretty
neat.
So
we
can
just
point
that
to
our
vga
right
there
and
then
we're
also
going
to
need
our
Lib
C,
because
basically,
what
we're
doing
with
that
relationship
between
the
slice
and
the
buffer
is
just
so.
They
could
basically
I'm
Emma
coffee,
and
so
that's
what
we're
going
to
be
using
here
so
we'll
add
that
and
then
we'll
go
back
into
our
main
pull
them
in
extern,
create
VG.
A
Alright
and
then
I'm
also
going
to
need
to
use
when
we
are
doing
this,
we
are
also
implementing
the
right
trait.
So
I
need
to
make
sure
that
that
is
in
scope
cool,
so
we
should
be
ready
now
to
use
our
vga
crate.
Of
course,
someone
out
there
is
being
like
I'll
see
a
typo.
It's
gonna
break
well,
we'll
find
out
that's
what
the
compilers
for
all
right
so
in
here
now,
instead
of
just
writing
out
all
those
variables
with
like
the
totally
indecipherable
numbers.
A
Now
we
can
say
something
like
led
GA,
equal,
vga,
vga
new,
all
right
and
then
what
is
this
going
to
take?
This
is
going
to
have
to
take
some
sort
of
slice,
so
we
can
make
our
slice
here
and
that
slice
is
going
to
be
kind
of
just
like
kind
of
funky
method
from
raw
parts
mute
and
that's
because
we
really
don't
have
like
a
lot
of
stuff
when
we're
writing
a
operating
system.
So
we
have
to
kind
of
do
it
from
nothing,
and
so
this
is
going
to
take
two
things.
A
It
takes
a
location
and
a
length.
Yes
thank
you
that
would
be
brutal.
I'd
be
so
sad
mess
it
up.
Alright,
so
we're
going
to
give
it
the
location
of
just
the
top
part
of
the
screen.
A
A
Poof
that
escalated
quickly,
all
right
all
right
and
so
I
shouldn't
be
able
to
write
this,
and
then
I
can
say
vga
dot
flush,
all
right.
The
reason
we
do
it
in
these
two
steps
is
because
we
wanted
to
write
to
the
screen
all
at
once
and
not
in
some
weird
incremental
way,
all
right.
So
assuming
that
I
haven't
completely
messed
up.
All
of
this
typing
we
should
be
able
to
now
come
in
here,
say:
make
run
up
all
right.
What
did
I
do
wrong?
A
A
Alright,
so
that
was
a
lot
of
typing.
We
did
it
really
fast,
but
the
whole
point
was
to
say
that
when
we
use
rust
in
assistant
development,
we
can
take
something
that
is
like
kind
of
really
difficult
and
like
fiddly
and
give
ourselves
some
dice
abstractions
to
work
with,
so
that
can
be
fun.
So
now
it's
much
easier
to
take
this
amazing
operating
system.
/
fancy
ms
paint
and
like
write
all
sorts
of
colors
and
words
to
the
screen.
It's
very
fun
yeah
all
right.
A
So
this
is
actually
at
the
point
like
we
are
doing
workshops
with
intermezzo
slow
down.
This
is
the
place
that
we
get
to,
but
the
colonel
is
actually
significantly
further
along
and
so
just
quickly.
I
want
to
show
you
I'm
gonna
yell
that,
but
I
want
to
show
you
where
it's
at
right
now
and
so
what
you
can
do
in
the
kernel
now
is,
you
can
say:
hey
Russ
bow
rust,
so
you
can
actually
type
in
shift,
doesn't
work.
So
the
only
thing
I
can
do.
A
Is
this
weird
like
shouty
winky
face
but
yeah
a
shoddy
winky
face
from
the
colonel,
and
so
this
is
where
the
colonel
is
right
now
and
if
you're
interested
in
playing
around
with
this,
we
have
like
quite
a
few
things
that
you
can
go
for
go
to
from
here.
If
you
want
to
start
playing
with
that,
alright,
so
that's
the
end
of
the
demos
and
let
me
wrap
it
up
with
some
some
quick
final
thoughts,
so
one
of
the
key
things
about
intermezzo
siz
that
it's
not
just.
A
A
A
There
is
an
audience
out
there,
even
if
you
don't
believe
you
are
an
expert
in
something
there's
an
audience
for
the
way
you
explained
it,
and
so
we
had
our
very
first
intermezzo
workshop
yesterday,
which
was
super
awesome
and
a
lot
of
people
participated,
and
that
was
fantastic.
One
of
the
fun
things
that
I
wasn't
able
to
show
you
in
your
demo
is
that
if
you
shift
the
position
by
one
it
inverts
the
color
codes
and
the
characters
and
the
color
that
we
use
for
default
is
actually
the
smiley
face
character.
A
A
So
the
last
time
when
I
did
my
first
talking
to
normes
as
it
was
nine
months
old-
and
I
thought
that
was
kind
of
like
a
strange
incubation
period,
so
I
just
said
it
again,
but
seven
souls
now:
we've
got
lots
of
contributors
and
you
don't
have
to
just
contribute
code
to
contribute.
There's
also
the
book
which
also
accepts
tons
of
contributors.
So
we
wanted.
We
want
you
to
contribute
to
intermezzo.
We
think
you're,
great
whoever
you
are.
A
If
you
have
that
nagging
feeling
in
the
back
of
your
head,
saying,
oh
I
can't
write
an
operating
system.
Tell
it
that
you
don't
think
so
all
right,
if
someone
says
failure
to
comply,
will
make
you
look
silly
all
right.
That's
awesome,
cool!
Let's
all
look
silly!
So,
yes,
I
can
operating
system
and
so
can
do
thanks.