►
From YouTube: TGI Kubernetes 042: Ballerina
Description
Come hang out with Kris Nova as she does a bit of hands on hacking of Kubernetes and related topics. Some of this will be Kris talking about the things she knows. Some of this will be Kris exploring something new with the audience. Come join the fun, ask questions, comment, and participate in the live chat!
A
Hello
and
welcome
to
Friday
TDI
K
everybody.
This
is
your
weekly
kubernetes
webinar
live
from
the
hefty
o
studios
and
we
like
to
start
our
episodes
off.
Saying
hello
from
everybody.
Joining
us
live
in
the
the
video
chat
today.
I
am
your
host
this
week,
Chris
Nova
Joe,
who
has
been
doing
these
for
a
while,
is,
is
out
right
now
and
so
I'll
be
taking
over
for
the
week
and
I
think
I'm
doing
next
week
as
well,
but
I
did
last
week
so
get
used
to
me.
It
looks
like
a
baby.
A
I'm
gonna
be
around
for
a
while,
so
yeah,
hey
folks,
how's
it
going.
We
usually
start
off
and
we
will
say
hi
in
the
chat
and
call
out
some
of
our
friends
who
are
joining
us
live
from
around
the
world
and
we're
gonna
be
able
to
talk
a
talk
live
with
them
as
we're
going
through
and
debugging
Ballerina,
a
new
cloud
native
programming
language
we're
going
to
be
looking
at
today.
A
So
to
start
off,
let's
say
hello
looks
like
our
very
first
one,
who
was
a
little
bit
early
with
suresh
hello
from
hamburg,
l'm
Maddy.
It's
good
to
see
you
and
then
real
quick.
While
we're
on
the
topic
of
l'm
Maddy.
We
wanted
to
give
a
big
shout
out.
They
sent
us
over
a
specialty,
gik
present
for
me
and
Joe,
which
was
totally
some
of
this
homemade
honey
and,
like
spicy
I,
think
this
is
spicy
honey.
A
We
haven't
tried
it
yet,
but
it
says
hot
on
it
and
I
love
to
have
like
hot
spicy
food
like
I,
go
ghost
peppers,
so
I'm
all
about
trying
out
some
of
this
crazy
awesome,
honey
and
I
used
to
make
honey
need
back
when
I
used
to
own
a
farm
which
that's
like
a
different
story
for
a
different
day.
So
getting
some
of
this
like
nice
stuff
from
the
matys
bees,
it's
really
exciting.
So
big
shout
out!
Thank
you!
A
So
much
I
think
what
we're
gonna
do
is
make
a
little
bit
of
simple
syrup
with
some
of
the
honey
here
and
I
try
to
make
a
couple
of
different
types
of
cocktails
with
it.
So
I'll,
let
you
know
how
it
goes
so
yeah.
We
also
have
hello
from
San
Diego
California.
We
have
Peter
Copenhagen,
it's
good
to
see.
You
Olaf
Zolt
from
Finland
'la
Matty
asks
how's
the
hand
doing
I
like
promised
myself.
A
I
wasn't
gonna
actually
show
like
my
hand,
for
like
more
than
just
like
a
flyby
on
TGI
K,
because
it's
you
know
it's
an
injury,
and
everybody
wants
to
see
that,
but
the
head
is
doing
much
better
and
I
was
given
sort
of
a
gag
gift
as
like
this
wooden
hand
here.
So
I
can
actually
show
this
one,
because
this
one
is
actually
like
not
offensive
at
all,
but
yeah
my
hand
is
doing
better.
A
I've
got
seven
out
of
ten
fingers
working
like
at
full
capacity
and
the
other
ones
are
slowly
catching
up
and
I'm
gonna
be
doing
a
little
bit
of
low-class
hiking
and
rock
climbing
this
weekend.
Working
on
my
t-rex
style,
rock
climbing,
holds
with
my
fingers
that
are
working
so
I'm.
Actually
we're
gonna
have
a
relatively
shorter
episode,
maybe
like
an
hour
and
15
minutes.
Today,
cuz
I
got
to
go
jump
on
a
flight
and
get
down
to
California
for
some
rock
climbing
this
weekend.
So
yeah,
let's
see
who
else
we
got
here?
A
We
have
hello
from
Bonn
greetings
from
the
eastern
flat
lands
near
DC,
good
to
see
you
Joe
Thompson.
We
have
hello
from
Soddy,
we
have
Waleed,
Carlo,
says
hola
Chris
good
to
see
you
Carlos
Ellis
Jana
said
he
can't
hear
you
just
kidding,
which
is
funny
because
there's
actually
been
a
time
or
two
where
we
were
like
ready.
Doesn't
some
technical
difficulties
that
I've
totally
been
in
here?
Talking
to
myself
and
like
somebody
comes
and
is
like
hey
just
so,
you
know
like
nobody
can
hear
you.
So
that's
really
funny.
A
So
we
have
Noah
from
Las
Vegas
Linate
says
the
second
jar
is
jalapeno
jelly,
which
is
the
stuff
here
so
go
to
try
out
some
jalapeno
jelly.
That's
what
I
really
want
to
put
in
a
cocktail.
To
be
honest,
we
have
Jan
hi
Chris
from
Joy's
burg
Germany.
We
have
Aaron
from
Florida
and
we
have
Samira
from
Mountain
View
and
TV.
One
of
my
favorite
places
pop
hello
from
Denver,
my
old
stomping
grounds.
I
lived
in
Denver
for
eight
years
or
I.
Guess
you
know
around
at
Denver,
folks
from
Denver
would
be
upset.
A
We'll
take
a
look
in
the
chat
here
in
a
few
minutes,
but
folks
from
all
around
the
world
join
us
we
go
through.
We
do
some
live
debugging.
One
of
the
things
that
we
sort
of
tried
to
do
here
on
TGI
K
is
familiarize
ourselves
a
little
bit
with
what
we're
gonna
be
talking
about
beforehand,
but
we
don't
over
familiarize
ourselves
or
over
prepare.
So
there's
still
this
like
authentic
moment
of
like
this
is
the
first
time
I'm
doing
this
and
let's
try
to
go
through
it
together.
A
So
we
I
kind
of
depend
on
people
in
the
chat.
So
if
you
have
any
ideas
or
if
you
want
to
shout
out,
feel
free
to
to
chime
in
and
we'll
try
to
run
something
and
without
further
ado,
we'll
jump
into
like
the
first
sort
of
little
section
of
the
episode
here.
So
switching
over
to
my
screen,
we
have
our
handy
TGI,
K,
github
repository
that
we
look
at
at
the
very
beginning
of
every
episode.
A
So
we
it's
hep,
do
or
github
comm
slash,
hep
do
/t
GI
k,
we
have
episodes
directory
and
here
in
our
episodes
directory,
we
have
episode
42,
which
is
an
exciting
episode
number.
If
anybody
has
ever
read
the
the
Douglas
Adams
book,
they'll
they're,
familiar
with
the
significance
of
the
number
42,
so
I
was
really
pumped.
We
get
to
do
this
episode,
yeah
we're
talking
about
Ballerina
today
and
I
guess
real
quick
on
doll
arena.
A
If
we
look
at
I'm
gonna
plug
twitter,
if
we
look
at
the
the
tweet
for
TGI
k
this
week,
I
had
called
it.
Let's
see
where
it
is.
Where
is
it
right
here?
I
had
called
it
a
cloud
native
scripting
language
and
I
picked.
This
just
I
chose
the
word
scripting
because
it
would
had
less
characters
than
programming
and
I
have
some
folks
mention
that
the
word
scripting
usually
implies
an
interpreted
language
which
of
course
Ballerina.
If
you
go
and
you
read,
the
documentation
is
not
an
interpreted
language
at
all.
It
is
a
compiled
language.
A
It
compiles
the
bytecode
and
we're
going
to
be
doing
some
compiling
and
running
the
bytecode
today.
So,
just
as
like
a
pedantic
way
of
clarifying
ballerina
is
not
in
fact
a
scripting
language.
If
the
word
scripting
to
you
implies
interpreted
language,
it
is,
however,
a
turing-complete,
regular
programming
language,
complete
with
a
standard
library
and
yeah.
We're
gonna
learn
more
about
ballerina
later,
but
just
wanted
to
call
out
that
one
little
and
you
sense
before
we
jumped
into
what's
new
and
cooper.
That
needs
to
speak
so
yeah
for
the
show
notes.
A
Here
we
have
a
handful
of
links
and
we'll
kind
of
go
through
these
and
show
folks
what
I've
noticed
and
what
I
have
sort
of
helped
like
my
head,
my
ear
to
the
ground
listening
and
the
kubernetes
community
this
week.
So
the
first
one
is,
as
I
was
learning
about
ballerina.
This
quick
tour
is
actually
a
really
really
great
resource
and
there's
a
bit
of
a
really
fun
surprise
at
the
end.
A
So
if
you
want
to
go
through
and
learn
ballerina
on
your
own,
maybe
you're
watching
the
episode
and
the
episode
inspires
you
to
go
and
learn
more.
This
is
a
really
great
place
for
you
to
kind
of
go
and
get
started,
and
it's
gonna
go
through
the
basics
of
of
what
we're
doing,
most
of
which
we'll
be
doing
today
live
and
then
you
can
go
through
and
you'll
get
the
code
on
your
own
and
you
can
see
it
there.
A
So
the
next
one
I
found
was
this
really
great
article
here
and
I
think
I
can
sign
in
sign
in
with
Google
you
sign
in
with
my
hep
tou
mat,
really
quick
and
I
just
want
to
ever.
You
want
to
go,
and
actually,
if
you
can
drop
a
quick
+1
on
this
article,
this
is
a
fantastic
article
and
I
haven't
had
any
claps
yet
so,
let's
see
if
we
can't
get
them
some
claps,
so
that
more
folks
on
the
Internet
come
across
this
article
here.
A
A
So
this
is
a
good
resource
as
well
and
we
might
even
jump
back
into
it
and
steal
some
one
liners
from
this
article
throughout
the
episode
today
as
well.
So
let's
go
back
to
our
TGI
K
repo,
so
the
other
one
I
wanted
to
put
a
link
to
the
IntelliJ
IDE.
So
this
is
what
I'm
gonna
be
using
today
to
actually
write
the
ballerina
source
code
for
our
example
service
and
we're
gonna
explore
this.
A
This
plug-in
from
IntelliJ
that
that
supports
ballerina
ballerina
is
a
relatively
newer
programming
language,
so
finding
a
good
ID
like
anytime,
you
get
a
new
programming.
Language,
there's
always
looks
like
an
initial
which
IDE
do
I
use
as
its
supported.
Here's
it's
supported
there
yet
I'm,
a
dog
land,
IntelliJ
kind
of
girl,
I
even
wrote
Scala
before
I
wrote,
go
so
to
me.
Intellij
and
dog
land
are
very
intuitive
and
I've
been
using
them
for
a
while.
So
I
was
pumped
to
to
see
that
there
was
a
ballerina
plugin
with
IntelliJ.
A
So
if
you
want
to
got
IntelliJ,
that's
how
I
started
and
as
I
mentioned
earlier,
there's
a
little
bit
of
surprise
at
the
end.
So
if
you
want
to
wait
for
the
surprise,
you
don't
actually
have
to
download
an
IDE.
Ballerina
has
some
cool
tricks
of
its
leave
that
we're
gonna
look
at
a
little
bit
later
and
real
quick.
A
Yes,
it
does
and
when
the
first
time
I
saw
somebody
write,
ballerina
I
jumped
on
a
video
conference
call
with
Dmitry
who
works
on
the
source
code,
he's
one
of
the
experts.
He
used
vs
code
and
suggested
BS
code
as
well.
So
that's
another
really
great
IDE
for
folks
to
use
I,
just
like
I
said
earlier:
I've
just
been
using
IntelliJ
and
goggling
for
years.
So
I
like
everything,
I
need,
is
already
configured
and
I
like
have
a
pretty
good
idea
where
to
find
stuff.
If
I
need
it.
A
So
it's
just
a
little
more
comfy
for
me,
I
think
Joey
uses
the
S
code,
so
maybe
he
could
give
you
guys
some
pointers
on
getting
ballerina
up
and
running
if
he
ever
tries
it
out.
Okay,
cool!
So
what's
next
Oh
Rena's
wrote
this
fabulous
article
I
wanted
to
share
with
folks,
and
we
were
just
talking
about
this.
A
The
other
day
we
were
doing
ingress
in
kubernetes
with
traffic
I,
think
that
was
last
week
or
the
week
before
it,
but
this
is
an
article
that
how
you
can
set
up
wild
card
certs,
and
so
this
is
actually
gonna
solve
the
problem
of
trying
to
recreate
TLS
certificates
for
all
of
your
subdomains.
So
Remus
he's
a
friend
of
artists,
a
friend
of
mine
from
the
day
as
days
and
I've
worked
with
him
closely.
You
know
open-source
and
so
I
saw
that
he
wrote
this
article
and
was
like
oh
yeah.
A
I
should
totally
come
check
this
out.
It
was
actually
a
really
really
cool.
So
if
you're
ever
interested
in
learning
about
wild
card
TLS
with
ingress
and
kubernetes
remus
did
a
lot
of
the
work
for
us
and
gave
us
a
lot
to
get
started
here
so
hats
off
to
to
Remus,
and
if
you
want
to
run
wild
card
TLS
with
contour
a
hep
do
tool
that
dave
cheney
had
worked
on
in
kubernetes.
A
This
is
a
really
great
starting
point,
so
yeah
thanks
again,
and
then
I
don't
think
we
can
give
Remus
like
a
plus
one
anywhere,
I,
usually
like
to
give
folks
a
plus
one
if
I
really
enjoy
an
article
and
if
I
find
value
in
it.
So
maybe
it
looks
like
this
is
his
own
website.
So
I
don't
know
if
we
can
like
give
him
any
awesome
internet
points
or
not.
If
anybody
finds
anything
just
let
me
know
in
the
I'll
come
back
and
do
it
so
next
we
have
okay
cool.
A
So
this
next
one
is
golang
specific.
So
I've
talked
to
a
few
folks
who
have
been
watching
they
do
the
TGI
Ches
over
the
past
couple
of
what
probably
two
or
three
months,
I've
been
kind
of
like
easing
into
them,
and
one
of
the
things
that
folks
have
kind
of
asked
for
is
a
little
bit
more
of
like
the
go
Lang
101.
A
Let's
bring
up
some
like
interesting
aspects
of
the
go
programming,
language
considering
kubernetes
is
written
in
go
and
a
lot
of
folks
right
go
so
this
week
I
found
a
really
fantastic
like
question
on
our
golang,
which
is
the
subreddit
for
golang,
I'm
a
moderator
for
it.
I
do
a
really
horrible
job
at
actually
keeping
up
with
my
moderator
homework.
A
I
was
able
to
approve
a
post
in
this
specific
thread
just
a
few
minutes
ago,
so
that
was
exciting,
but
it
brings
up
a
really
great
question
that
I
wanted
to
sort
of
just
talk
about
here
for
a
minute
or
two
before
we
jump
into
Ballerina.
So
if
we
pull
up
this,
the
question
basically
is:
what
is
the
best
practices
for
returning?
Do
we
want
to
return
this
user
struct
by
itself?
Do
we
want
to
return
a
pointer
to
a
user
struct?
A
Do
we
want
to
return
a
slice
of
user
strux,
maybe
a
pointer
to
a
slice
of
users,
a
pointer
to
a
slice
of
user
pointers?
What
is
the
best
practice
here
and
I
get
asked
this
question
quite
a
lot.
Let's
see
if
I
can
zoom
in
a
little
bit
here
there
we
go.
That
looks
a
little
bit
better.
I
get
asked
this
question
quite
a
lot
which
is
like
what
is
the
best
practice,
and
why
would
you
use
a
pointer?
A
So,
in
the
name
of
getting
step
one
out
of
the
way
first,
one
of
the
big,
concrete
technical
reasons
for
returning
a
pointer
type
is
because
it's
nillable,
meaning
if
I
wanted
to
return
this
specific
type
here,
hello
and
from
San
Francisco
I
could
also,
instead
of
returning
an
initialized
empty
pointer
of
user,
a
user
slice
I
could
just
return.
No,
and
then
you
really
see
this
pattern
in
billing
a
lot,
especially
with
the
errors
in
the
air
interface.
A
If
error
is
not
equal
to
no
take
some
action,
so
it
just
gives
you
this
ability
to
return
nil
instead
of
an
initialized
empty
version
of
whatever
you're
you're
returning.
If
this
wasn't
a
pointer,
we
would
actually
have
to
create
a
slice
of
user
Struck's
that
just
doesn't
have
anything
inside
of
it,
but
it's
still
of
that
type
instead
of
returning
nil.
So
that's
one
concrete
reason,
and
even
in
this
case,
this
is
still
a
little
I
would
prefer
to
see
right
here.
A
Instead
of
seeing
a
pointer
to
a
slice,
I
would
prefer
to
see
a
slice
of
pointers,
and
that
way
we
can
at
least
still
iterate.
We
can
wrap
or
loop
over
the
the
slice
and
then
we
can
just
check
each
independent
individual
element,
four
nil
and
that's
a
little
bit
more
idiomatic
in
that
way.
You
know
that
you're
always
going
to
go
through
the
construct
of
writing
a
for
loop.
A
Afterwards,
if
you
plan
on
iterating
through
whatever
you
return,
this
last
one
is
a
little
redundant
I,
don't
really
see
a
really
good,
concrete
reason
for
this
other
than
you
know.
Actually,
I,
don't
I,
really
just
don't
even
see
a
good
reason
for
this.
Why
would
you
have
a
pointer
to
a
slice
of
pointers?
It
seems
like
you
should
kind
of
do
one
or
the
other,
and
the
other
thing
I
wanted
to
mention
was
like.
A
If
you
look
at
SDKs,
specifically
like
the
Amazon
SDK
you'll
notice,
that
every
type
is
a
pointer
in
the
SDK,
a
boolean
is
actually
a
pointer
to
a
boolean.
A
string
is
actually
a
pointer
to
a
string
which
is
a
bit
weird,
because
strings
are
already
pointers
and
gowling,
so
anyway,
I'm
kind
of
getting
off
in
the
weeds
here.
But
if
you
want
to
return
now,
you
can
return
a
pointer.
This
is
a
great
thread.
Come
check
it
out.
A
Okay,
let's
get
an
in
value
net
and
if
folks
have
questions
there
feel
free
to
drop
them
in
a
chat
and
I'm
happy
to
answer
as
well.
Okay,
so
the
first
thing:
let's
jump
into
our
ballerina
quick
tour
and
before
we
go
in
here,
I'm
gonna
open
up
a
new
tab.
Let's
go
through
the
download
instructions
for
ballerina
and
I'll,
show
you
somewhere,
where
I
kind
of
got
goofed
up
along
the
way.
So
hopefully
folks
don't
hit
that
here.
So
the
first
thing
you
want
to
do
is
you
want
to
get
started.
A
You
can
go
to
this
getting
started
section
here.
Ballerina
do
slash,
learn,
slash,
getting
started
and
you
can
download
and
install
the
ballerina
packages
here
so
I'm
running
on
my
macbook
pro
right
now
so
I
downloaded
the
OS
X
package
right
here,
so
I
downloaded
it
and
it's
a
fairly
large
file
and
it
took
about
five
minutes
on
my
office
Internet
here
for
me
to
download
this
file
and
if
we
jump
into
terminal,
we
can
go
to
its
library,
slash
capital
Ballerina.
This
is
where
Ballerina
installed
to
by
default.
A
So
if
you
actually
go
through
the
little
wizard
and
you
hit
like
I,
accept
the
license
and
agree
to
everything.
You'll
get
this
on
your
macbook
as
well,
and
in
this
ballerina
subfolder
inside
the
larger
capital,
ballerina
folder.
We
have
a
specific
version,
so
we
can
go
into
this,
and
if
we
explore
this
package,
it
looks
pretty
familiar
to
anybody
who's
ever
now.
A
A
basic
like
repository
installation
before
this
is
actually
really
similar
to
how
Galang
installs
in
my
user
local
go
so
I
could
actually
go
and
show
you
user,
your
local
go.
It
looks
strikingly
similar.
We
like
how
like
we've,
but
we
have
a
bin
package
here.
We
also
have
like
a
lib
here
and
here,
and
we
have
a
source
here
in
here
so
like
familiar
constructs,
they
ship
in
very
similar
ways,
and
this
is
kind
of
normal
for
a
programming
language
distribution
patterns.
A
So
anyway,
here
in
Ben,
if
we
go
into
Ben,
we
see
we
have
ballerina,
which
of
course
we
can
execute.
We
also
have
broker
and
composer
and
composer
drop
at
and
more
on
those
a
little
bit
later.
If
we
go
back
into
our
go
pass,
which,
by
default
I
just
put
tools
in
my
go
path
regardless
and
if
they're
go
or
not,
just
because
mentally
I
always
go
I
even
go
into
my
go
path.
A
That's
where
I
work
on
software
I,
don't
really
care
if
it's
go
or
not,
and
it
gives
me
a
way
of
like
still
sorting
and
keeping
track
of
all
my
different
repositories,
regardless
of
whatever
programming
language
they're
in
a
lot
of
people
would
disagree
with
me
there.
A
lot
of
people
would
agree
with
me,
but
that's
the
way.
I
do
it.
So
we
go
to
github.com.
We
go
to
hefty
o
and
then
here
in
our
t,
gik
repo.
A
We
have
episodes
and
we
have
episode
42,
which
is
the
episode
we're
on
this
week,
and
this
is
going
to
kind
of
be
our
home
base
for
the
episode
and,
if
I,
actually
echo
out
my
path
here,
you'll
see
we
have
Q
builder
Ben,
but
also
here
we
have
library
Ballerina
that
bin
directory
that
we
just
explored
is
also
in
my
path.
The
way
I
defined.
A
So
if
you,
if
you
download
Ballerina
and
you
go
in
the
command
line
and
your
type
Ballerina-
and
it
can't
find
it-
try
to
restart
your
terminal
if
it
still
can't
find
it,
you
might
have
to
go
in
and
edit
your
path
manually
and
append
it
to
the
end
of
your
path
manually.
And
if
anybody
wants
help
with
that,
I
can
put
an
example
and
the
readme
just
opened
up
an
issue
and
I'll
I'll
write.
You,
the
one-liner,
you
need
to
do
this,
get
it
working
so
anyway,
in
ballerina
is
now
in
our
path.
A
We're
in
our
episode.
42
directory
and
I
can
type
ballerina
and
I
get
our
handy-dandy
help
menu.
Here.
What
and
this
looks
super
familiar
to
the
same
type
of
help
menu?
We
would
see
and
a
lot
of
go
and
a
lot
of
kubernetes
style
programs
that
give
us
like
a
verb.
We
can
run
and
a
quick
little
explanation
of
kind
of
what
this
does
so
as
I
was
kind
of
learning
about
ballerina
I'm
like
this
thing
is
written
mostly
in
Java.
A
So
if
we
go
and
we
look
in
the
github
comm,
slash,
ballerina
I
think
it's
ballerina
platform,
slash
ballerina
Lang
this
repo
here
github.
Has
this
handy
feature?
If
you
click
on
this
colored
bar
here,
it'll
actually
tell
you
the
percentages
of
different
languages
inside
the
repository,
and
the
majority
of
this
is
written
in
Java
and
I'm
like
okay,
but
I
just
ran
it's
like
it's
static.
A
What
felt
like
a
static,
a
static
library
here,
static
binary
but
I'm
like
unsure
what
this
thing
is
so
I
did
the
file
command
and
I
did
ballerina
ballerina
been
ballerina
and
what
file
does
is
it
actually
tells
you
what's
going
on
here,
and
this
tells
us
right
away.
This
is
actually
a
boarding
in
shell
script.
A
It's
just
a
bash
script,
so
I
bet
we
can
open
this
thing
up
in
Emacs
and
actually
see
that
it's
got
to
be
doing
something
under
the
covers
for
us,
so
been
ballerina
and
we
can
see
what's
going
on
here
and
yep
as
expected.
This
is
the
wrapper
for
the
ballerina
executable,
so
in
a
weird
way,
ballerina
compiles
to
a
binary,
but
the
actual
ballerina
command-line
tool
is
a
wrapper
here,
written
in
in
bash,
so
pro-q
know
pros
and
cons
to
that.
A
You
time
you
write,
you
can
get
into
trouble,
but
here,
at
the
very
end
you
can
see
we
have
all
of
these
Java
commands
defined.
And,
yes,
we
are
in
fact
just
running
a
Java
program
which
totally
cool,
but
still
has
the
feel
of
statically
typed
binaries
that
you
would
get
with.
Like
a
programming
like
go
like
so
anyway,
we
can
get
out
of
there.
We
didn't
make
any
changes.
A
We
just
you
know
for
those
of
you
who
don't
know
Emacs,
all
I
did
was
quit
and
we
can
do
an
alias
B
is
equal
to
ballerina.
We
all
know
I
love
my
single
letter
aliases
for
commonly
used
commands
here
during
a
tgia
episode.
So
now
we're
going
to
be
able
to
just
type
simply
be
lowercase
B
and
we
get
our
ballerina
shell
scripts
that
wraps
our
our
java
program
and
we
can
do
things
with
ballerina.
So,
let's
jump
back
in
the
documentation,
really
quick.
A
So
up
here
at
the
top,
we
have
open
source
which
this
could
ultimately
lead
to
the
github
repo
we
just
looked
at,
and
we
have
learn
here
and
learn.
We
have
this
quick
tour,
which
is
the
one
I
suggested
folks
to
check
out,
and
we
have
ballerina
by
an
example
in
ballerina
bike
guide,
and
these
are
like
for
a
programming
language
that
is
so
new.
The
fact
that
it's,
this
mature
is
prettiest
outstanding.
Pretty
astonishing.
A
It
took
other
programming
languages
a
couple
years
to
get
to
the
maturity
level
where
they
had
examples
and
they
had
tutorials
that
were
complete,
like
we
see
here
in
ballerina.
So
there's
really
some
great
documentation
here
that
you
can
really
go
and
get
lost
in.
If
you
wanted
to
I,
don't
think
we're
gonna
be
able
to
get
off
in
the
weeds
today
too
much,
but
there's
a
lot
of
stuff
here.
If
you
go
into
examples
alone,
you
can
see.
A
A
What
types
of
examples
have
the
authors
of
ballerina
gone
out
of
their
way
to
give
us
because
they
feel
like
they're
important
and
it
looks
pretty
standard
and
in
fact,
there's
a
lot
of
similarities
between
ballerina
ingo
I
was
kind
of
impressed
when
I
first
came
through
here
and
started
looking
at
it.
Hi
Jeremy,
Lou
Maddy,
says
thanks.
Sorry,
I'm
reading
the
chat
right
now
we
have
good
evening
from
Russia
LeMat
II
had
a
question
says
any
idea.
A
If
ballerina
has
been
added
to
the
various
brew,
apk
young,
a
TV
pose
I,
don't
know,
but
I
bet
we
could
totally
do
brew,
install
ballerina
and
just
see
what
it
says:
updating,
homebrew
and,
of
course,
I'm
gonna
break
everything
else.
I
went
to
tik
and
have
to
fix
my
install
here
and
Samira,
says:
Valeria
compiles
down
to
bytecode,
not
Java
bytecode
and
is
executed
by
the
ballerina
runtime,
both
the
compiler
and
the
runtime
is
written
in
Java
at
the
moment.
Okay,
thank
you
for
the
explanation
Samira.
A
So
the
bytecode
is
what
will
be
executing
and
it's
not
Java
bytecode
and
for
those
folks
at
home.
Java
has
its
own
specific
type
of
bytecode
and
that's
why
you
need
the
runtime
and
everything
to
execute
Java
code
so
before
this
gets
too
far
along
I
am
I'm
gonna
cancel
this,
it
looks
like
weird,
is
updating
my
homebrew
right
now,
so
if
somebody
else
wants
to
go
in
and
let
us
know
if
they
can
do
a
brew,
install
or
check
the
other
repos
and
just
drop
a
quick
note
in
chat,
that
would
be
much
appreciated.
A
Let's
see
what
I
can
zoom
in
here,
Bam
Bam,
Bam
and
all
recenter,
and
no
I'm,
just
gonna
close
that
process,
like
my
fans
just
kept
on,
we
were
like
doing
some
serious
downloading
and
just
then
okay.
So
let's
go
back
to
our
TGI
K
path.
Here:
go
source,
github.com,
hefty
ot,
gik
episodes
o
42
and
we
were
looking
at.
There
are
examples
so
I
came
in
and
of
course,
I
wanted
to
see
like
a
hello
world
and
then
I
noticed
there
was
a
lot
of
different
flavours
of
hello
world.
A
So
we
have,
you
know
hello
service,
which
this
is
gonna,
be
our
starting
point.
Today
we
have,
you,
know
hello
world
parallel,
which
already
I'm
like
oh.
This
looks
like
a
pretty
common
multiple
worker
pattern,
so
it
looks
like
ballerina
is
a
concurrent
or
parallelized
programming
language
as
well,
meaning
that
you
can
instruct
your
program
to
try
to
do
more
than
one
thing
at
a
time
it
doesn't
execute
literally
like
an
interpreted
language.
A
Would
so
that's
pretty
exciting
and
then
I
came
through
and
I
was
like,
like
what
else
is
kind
of
baked
into
the
standard
library.
So
we
have
these
two
and
codings.
We
have
JSON
and
XML,
which
are
super
common,
I
would
say.
Probably
JSON
or
JSON.
Rpc
and
smell
are
probably
the
two
big
ones
I
see
mostly
and
doing
any
sort
of
integration
work
in
the
internet.
You
know
today,
circa
2000,
16,
17
and
18.
We
have
object
so
already
I'm,
like
oh
there's,
some
object-oriented
principles
baked
into
this.
That's
pretty
cool
sure
enough.
A
We
have
a
section
on
concurrency
and
it
looks
like
we
have
no
definition
of
workers.
We
have
a
fork
and
enjoying',
and
then
this
one
really
caught
my
eye,
which
was
the
worker
interactions,
and
if
you
actually
look
at
this
here
on
line,
7
gives
an
example
that,
if
you've
ever
written,
concurrency
and
goaling
before
this
looks
very
familiar,
in
fact,
I
think
some
tactically.
This
is
almost
exactly
the
same
as
going
well.
The
only
big
difference
is
the
semicolon,
delimiting
the
end
of
the
line
here.
That
allows
you
to
communicate
between
two
different
workers.
A
This
first
echo
is,
you
know,
from
worker
1
to
work
or
to
the
second
ones
the
other
way
and
showing
how
you
can
actually
send
messages
back
and
forth
between
your
two
concurrent
processes,
which
again
this
is
one
of
the
big
wins
and
going
that
I
think
really
helped
go.
Take
off.
Was
this
like
the
concept
of
channels
and
how
you
communicate
between
concurrent
processing,
though
so
ballerina
just
ships
with
us
out
of
the
box
as
well?
A
So
already
we're
like
really
really
impressed
with
how
ballerina
has
come
together
here
and
how
far
along
they
are
already,
so
we
have
basic
functions.
We
have
different
values
and
types
looks
like
we
have.
We
have
tables,
we
have
maps,
we
have
records
arrays.
These
are
all
pretty
like
normal
programming,
primitives
I
kind
of
have
like
a
an
idea
of
what
they're
going
to
be
just
because
I've
written
so
many
different
programming
languages.
This
one
really
jumps
out
at
me.
Tuples.
A
Language
absolutely
does
not
have
kubernetes
support
and
probably
never
will.
In
fact,
the
kubernetes
community
is
responsible
for
writing
the
support
for
interacting
with
kubernetes
and
that's
where
the
client
go.
Project
comes
from
so
already
we're,
starting
to
see
like
the
golang
authors
have
nothing
to
do
with
kubernetes.
The
kubernetes
community
writes
their
sdk
here
in
ballerina,
the
programming
language.
Authors
said:
you
know
what
we're
gonna
just
bundle
all
this
together
and
support
it
all
which
is
exciting,
so
yeah
so
comes
through
here.
A
It
looks
like
we're
just
raw
data
stream,
so
a
lot
of
stuff
that
I've
used
in
the
past,
you
know
doing
integration.
Work,
building
API
is
building
out
business
logic
baked
into
the
standard
line.
So
this
is
pretty
exciting
stuff.
Suresh
says
I
hope
we
would
be
able
to
write
a
new
CRD
using
ballerina,
suresh
I.
Think
that
is
a
great
question
and
I
think
if
it
does
not
support
it
already,
it
should
be
pretty
simple.
A
A
So
without
further
ado,
let's
run
a
hello
world
in
ballerina
and
then
we're
gonna
get
in
a
docker
file,
and
then
we
ready
to
write
a
deployment
and
where
to
get
it
running
in
kubernetes
and
I
might
even
if
we
have
time
actually
make
that
public,
so
folks
at
home
can
interact
with
it.
That
seem
to
be
a
lot
of
fun
last
time
when
we
got
a
fabulous
staff
up
and
running
so
maybe
we
could
try
to
do
that
again
looks
like
we
have
some
questions
here.
A
rule
says
brew
info
ballerina.
A
That
was
the
command
I
was
thinking
of
which
will
just
give
you
information
on
something
does
return,
so
you
know
ballerina
stable,
0.97
5.1,
which
is
what
I'm
running
the
flexible,
powerful
and
beautiful
programming
language,
okay.
So
back
to
our
quick
tour.
So
here
we
this
suggests
that
we
do
a
ballerina
in
it
and
if
you
actually
read
this
little
blurb
here,
I'm
gonna
paraphrase
it
for
you.
A
It
says
that
they
basically
create
the
hello
world
service
for
you,
so
we're
actually
gonna
go
through
and
pull
the
example
and
actually
create
a
new
ballerina
file
in
a
new
directory
and
push
that
up.
So
we're
gonna
go
to
ballerina
by
example,
and
we're
gonna
take
our
hello
world
service
and
the
reason
I'm
doing
it.
A
This
way
is
because
I
kind
of
want
things
to
break,
because
I
want
to
show
folks,
like
some
tricks,
I've
already
learned
with
a
debugging
ballerina
code
when
something
goes
wrong,
so
we're
gonna
copy
this
into
our
TGI
K
repository
were
to
create
a
new
directory
for
it.
So
everything
we're
doing
for
the
episode
will
be
isolated
in
its
own
directory.
So
we're
waiting
for
IntelliJ
to
come
up.
I,
don't
know
if
you
didn't.
A
Let
me
move
this
over
here,
so
we
have
T
gik,
we'll
open
up
this
and
then
I
think
we
got
to
go
into
presentation
mode,
so
you
can
see.
So
we
want
to
go
to
view
into
presentation
mode.
It
does
the
same
thing
that
in
Coghlan
does
and
I
can
sort
of
resize
it
and
then
I
want
to
go
if
you
tool,
windows
and
I
want
to
CED
project.
So
I
have
my
little
navigator
on
the
side
perfect,
and
this
to
me
looks
like
a
good,
a
good
starting
point
for
writing
some
code.
A
What
I
did
offline
before
the
episode
started
was
I
came
up
here
to
the
top
and
I
did
I've
opened
up
preferences,
so
IntelliJ
preferences
over
here
on
the
Left
we
have
plugins
and
I
typed
in
Ballerina
at
first
I
did
not
find
it
so
I
had
to.
There
was
like
a
button
here
that
said,
like
search
repositories,
I
clicked
that
button
was
able
to
install
it,
and
now
it's
a
plug-in
and
I.
Have
it
enabled
here
that's
what
that
little
checkbox
means.
A
So
that's
how
I
get
things
like
in
my
new
live
directory
here
you
see,
I
can
actually
create
a
ballerina
file.
So
that's
pretty
cool
so
here
in
live.
We
want
to
actually
do
just
that.
We
do
want
to
create
a
new
ballerina
file,
so
we're
going
to
call
it
t,
GI,
k,
dot,
bow
and
pretty
cool
it
imports
ballerina
io,
and
we
have
io
print
line
hello
world
in
our
friendly
semicolon
at
the
end
and
print
line
here.
A
I'm,
assuming
behaves
like
it
does
in
golang,
where
it's
gonna
print
up
the
string,
hello,
world
and
they'll
be
a
new
line
at
the
end
of
the
string
and
that
will
bring
us
back
to
our
terminal
prompt
with
a
nice
neat
new
line.
So
we
can
do
B
for
ballerina.
We
can
do
run,
and
here
we
have
examples,
live
to
GI
K,
dot,
Val
be
not
found
to
Oh,
alias,
be,
is
equal
to
ballerina.
A
So
if
we
do
be
run
and
poof
there's
our
hello
world,
so
pretty
easy,
we
went
from
downloading
the
ballerina
packages
to
just
adding
it
to
our
path,
to
getting
the
plug-in
installed
in
IntelliJ
and
already
we
have
our
hello
world
up
and
running
so
to
make
this
a
little
more
complex,
let's
go
ahead
and
create
an
HTTP
service
like
why
not
oh
and
I
need
to
quit
opening
up
goal
and
something
but
icons.
Look
like
really
similar
on
my
macbook
here,
so
I'm
actually
gonna
move
that
one
way
off
to
the
side.
A
So
I
don't
click
it
again.
So
let's
go
back
into
IntelliJ,
not
goal
and
and
let's
paste
in
what
we
just
copied
to
our
buffer
earlier,
which
is
this
example,
hello,
world
service,
poof,
so
right
away,
I'm
gonna
add
some
some
white
space
here
to
separate
this
service
definition
away
from
our
imports.
It
looks
like
we're
import
to
importing
the
HTTP
I.
A
Don't
know
the
right
vernacular
here,
so
I'm
gonna
call
it
a
package
because
that's
what
we
call
it
in
going,
but
if
some,
if
that's
not
what
it's
called
somebody
please
please
correct
me:
I
want
to
make
sure
we're
using
correct
wording
where
everywhere
we
can
and
we're
also
importing
the
ballerina
log
package
as
well.
Here
we
have
this
service
definition
which,
if
we
go
back
in
our
Docs,
we
can
go
to
not
quick
tour.
A
We
want
to
go
to
learn,
learn
by
example,
and
I'm
just
going
to
do
a
quick
search
for
service,
because
I
want
to
find
the
actual
documentation
on
it.
It
may
not
be
in
here.
We
might
actually
have
to
go
and
pull
like
the
API
documentation
how
to
test
ballerina
code,
how
to
document
ballerina
code,
how
to
extend
package
an
API
documentation.
This
is
so
over
here
on
the
left.
We
have
all
of
these
first-class
citizens.
We
have
service
I
bet.
A
A
Okay,
anyway,
we
just
go
back
to
our
code,
we're
getting
off
the
weeds,
we
define
our
service,
we
tell
it
it's
an
HTTP
service.
This
might
be
a
keyword
that
we're
importing
here
and
we
say
the
name
is
hello
and
we're
gonna
bind
port
1990,
so
you
know
going
through
and
actually
learning
what
the
syntax
is
here:
I'm,
not
quite
there
as
a
ballerina
user.
Yet,
but
as
a
Java
user.
This
looks
and
feels
you
know
pretty
familiar.
A
I
wrote,
object-oriented,
PHP,
object-oriented,
Java
and
Scala
in
the
long
long
ago,
before
containers
and
kubernetes
were
a
thing.
So
this
looks
pretty
familiar
to
me.
I
would
feel
comfortable
looking
at
this
and
it
starts
to
make
sense
and
then
in
here
we
have
this.
What
looks
basically
like
a
smaller
function.
A
This
thing
is
called,
say,
hello
and
we
say
we're
gonna
create
this
new
endpoint
called
color
looks
like
this
is
a
little
bit
of
implicitly
going
on
here,
and
we
have
HTTP
requests
that
were
passing
into
the
function
as
well,
and
then
here
we
have
HTTP
response.
We're
going
to
new
that
so
we're
going
to
create
a
new
HTTP
response
and
the
first
thing
we're
going
to
do
is
we're
going
to
call
the
set
payload
method
on
the
response
and
return
hello.
World
Sameera
says
service.
A
So
I
think
that's
a
really
great
testament
that
you
know
you
don't
have
to
be
an
expert
on
a
programming
language
to
get
a
basic
service
up
and
running
in
kubernetes,
which
is
pretty
rad
so
yeah.
So
we
do
set
payload.
We
say
hello
and
world
and
then
at
the
very
end
we
do
caller,
which
remember
this
is
our
in
point
that
we're
passing
in
here
we're
gonna
call
the
respond
method
again
Sameera.
A
Let
me
know
if
I'm,
using
any
wrong
wording
here,
but
this
is
just
what
I
would
call
this
from
Java
Scala
days.
So
that's
what
I'm
gonna
be
using
we're
gonna
pass
in
Raths,
which
is
our
response,
and
then
we
have
this
like.
But
key
word,
and
we
say
it
looks
like
there's
an
error
handling
here.
We
like
have
an
air,
we're
gonna,
call
it
E,
which,
if
you
are
Java
and
dealt
with
Java
exceptions,
lower
case
e
is
really
common
for
Java
exceptions
and
then
it
says:
we're
gonna
print.
A
This
error
error,
sending
in
response
error,
is
equal
to
e,
which
we're
defining
here
and
then,
of
course,
our
semicolon
at
the
end
to
say
that
we're
done
with
this
particular
statement.
So
yeah
that
looks
like
a
pretty
pretty
straightforward
web
service.
It's
got
everything
I've
ever
really
cared
about
configuring.
When
I'm
looking
at
a
web
service,
it's
got
a
port
that
we're
listening
on.
It's
got
a
name
of
the
service
and
it
looks
like
it's
got.
A
single
end
point
called
hello.
A
So
let's
go
ahead
and
try
to
run
this
and
see
a
few
happens
so
jumping
back
in
our
terminal,
we
can
go
and
rerun
our
be
run.
Examples
live,
T,
JK,
dot,
Bal
again
and
again.
This
hold
B
run
the
name
of
the
ballerina
file.
This
is
very
familiar
to
folks
who
have
written
Go.
Go
has
basically
behaves
the
exact
same
way.
It
takes
the
same.
Syntax
go
run
the
name
of
some
go
file
that
has
a
main
function
and
is
in
the
package
main
and
it
usually
works.
So
this
is.
A
This
is
just
very
intuitive
for
folks,
like
me,
coming
from
going
coming
from
Java,
so
we're
going
to
do
run
and
then
we
get
some
logging
here.
It
says:
ballerina
initiating
services
in
T,
gik,
dot,
Val
and
it
started
in
HTTP
WS
endpoint,
0,
dot,
0
dot,
0
dot.
90
are
90
90
for
the
port
number,
so
I
bet.
If
we
open
up
Google
Chrome,
we
can
hit
luke
back,
which
is
10.1,
t7,
dot,
0
dot
0
to
1,
and
then
we
want
to
do.
A
We
said
port
1990
here
no
matching
service
found
in
path,
so
I
had
it
like
I
said
I've
mentioned
earlier.
I
had
a
demo
earlier
this
week,
where
somebody
showed
me
a
ballerina,
so
I
kind
of
cheated
a
little
bit
here,
but
on
first
glance,
I
would
kind
of
be
like
expecting
our
route
pass
here
to
resolve
to
whatever
we
defined
here
in
the
the
source
code.
But
actually
what
we're
doing
here
is
we're
defining
a
couple
of
things
that
you
may
not
like.
It
may
not
click
right
away
for
you.
A
The
first
one
is
the
the
first
like
the
root
directory
is
going
to
be
hello
and
then
we're
going
to
be
able
to
hit
the
say
hello
in
point,
so
we're
actually
going
to
structure
that,
like
127.0.0.1
port,
9090,
slash,
hello,
/,
say
hello
and
I
bet
uhm
no
matching
resource
found
for
pass
hello,
say
hello
method,
get
that
should
be
as
it
a
capital
H
I
bet.
That's!
What's
going
on
poof,
hello,
world,
okay,
so
yeah,
so
we
were
able
to
call
like
this
is
the
higher-level
construct.
A
This
is
the
the
lower-level
in
point
and
we
were
able
to
form
that
naturally
using
our
ballerina
source
code
here,
hello
and
say
hello,
Sameera
says
it
should
be
localhost
9090,
hello,
say
hello.
Absolutely
so
another
thing
that
Dimitri
showed
me-
and
this
was
pretty
handy-
is
this
concept
of
annotations
to
ballerina.
A
So
if
we
go
back
into
our
documentation
here,
I
bet
we
can
find
in
our
QuickStart
or
a
quick
tour
here
we
can
kind
of
catch
up
to
where
we
are
already
so.
Here's
a
basic
service,
that's
defined,
which
is
similar
to
the
one
that
we
pulled
from
the
example.
And
if
you
come
down
here,
we
see
this
little
primitive
excuse
me,
which
again
coming
from
Java.
You
know
this
magic
at
symbol
means
sort
of
gives
you
like
an
annotation,
and
then
you
can
write
custom,
tooling
and
custom
logic
to
sort
of
support
this.
A
A
Command
here,
why
that
initializes
we're
going
to
jump
back
into
Google
Chrome,
go
back
to
our
loopback
address,
refresh
it
broke
again,
but
guess
what
if
we
go
through
and
we
change
hello
which
we're
now
rewriting
to
our
route
path?
Now
we
can
just
hit,
say
hello
directly
so
already
we're
we're
starting
to
realize
that
ballerina
is
totally
set
up
to
be
very
expressive
and
to
be
very
elegant
in
the
form
of
like
how
you
would
define
a
restful
service
and
in
here
between
the
lines.
8
and
21.
A
We've
been
able
to
tell
a
ballerina
where
we
want
an
endpoint
listening
the
request.
We
have
access
to
the
raw
HTTP
request,
which
is
coming
in
here
as
HTTP
request
and
I
bet.
If
we
do
look
and
see,
we
actually
get
some
tab,
hinting
request,
dot
actually
I
think
we're
not
doing
dot.
It's
C
do
the
the
arrow
thing
and
you
can
see
we're
getting
tab
hinting
built
right
into
our
IDE
here
and
I.
Think.
A
If
we
do
request
dot,
you
can
even
see
we
have
all
of
these
wonderful
functions
and
then
here
on
the
right,
we
have
the
types
that
they
return.
Ballerina
is
a
strongly
typed
programming
language,
just
like
the
go
program.
Well,
I,
don't
want
to
say
that,
but
it's
a
strongly
typed
programming
language.
So
anyway
we
have
access
to
the
raw
HTTP
request.
We
can
totally
pull
information
out
of
it
and
we
have
this
access
to
this
new
HTTP
response,
which
I
thought.
If
we
come
here,
we
do
our
es
dot.
A
You
can
see,
we
can
add
headers,
we
can
create
an
entity,
we
can
do
binary
payloads,
we
can
get
headers.
We
can
return.
Json
payloads
like
there's
a
lot
of
convenience
baked
into
this
for
us
so
you're,
starting
to
see
that
ballerina
is
totally
catered
to
writing
micro
services
to
writing.
Api's
to
using
the
HTTP
protocol,
which
is
one
of
the
big
wins
for
it
right
out
of
the
box.
Is
we're
getting
a
lot
of
expression
here
in
a
very
few
lines
of
code?
A
So
again
we
have
our
say
hello
in
point
and
I
thought
we
could
come
through.
I'm
just
guessing
here
like
this,
is
how
I
learn
programming
languages,
so
they
just
try
stuff
out.
We
could
say
say
hello
and
I
bet.
We
could
you
say
goodbye
and
I,
don't
know
if
we're
gonna
get
yelled
at
for
using
the
same
variables.
I,
don't
know
how
scoping
works
in
ballerina
scoping
is
usually
within
a
curly
brace
like
this
and
this.
What
is
the
the
scope
of
a
variable
name?
A
A
So
it's
running
so
we
have
say
hello
and
if
we
came
in
and
said
say
goodbye
goodbye
world,
poof,
okay,
so
we've
got
two
endpoints
access
to
the
the
HTTP
request,
access
to
a
new
HTTP
response
in
a
full
standard
library,
that's
turing-complete,
object-oriented
and
concurrent
for
us
to
do
whatever
the
heck
we
want
to
with
these
HTTP
requests
and
responses.
I'm,
not
a
ballerina
programmer,
so
I'm
not
going
to
like
try
to
write
some
crazy,
advanced
logic.
A
We're
gonna,
keep
our
hello
world
pretty
simple
and
we're
to
talk
a
little
bit
about
the
Cooper
Nettie's
annotations
and
what
that
means
for
kubernetes,
but
so
far
this
is
starting
to
look
pretty
intuitive
for
a
user.
Who
is
writing?
Api
is
in
writing.
Web
services
and
micro
services
in
a
programming
language
I
know
trying
to
get
something
like
what
we
have
here
up
and
running
and
go.
A
You
could
probably
get
it
and
you
know
30
lines
or
so,
if
you
really
wanted
to
like
some
it
down,
but
usually
especially
with
tools
like
guerilla
nooks
and
some
of
the
other
ones,
you're
gonna
see
all
of
the
logic
we
have
defined
here.
Spread
across
multiple
files
spread
across
multiple
functions,
we
usually
have
some
concept
of
a
router
that
you
have
to
map
this
request,
type
to
this
endpoint
to
this
function,
and
then
the
function
gets
an
access
to
the
request
in
the
response.
A
A
A
Okay,
anyway,
we
can
try
to
get
a
post
up
and
running
later.
Let's
stick
with
get
and
see
if
we
can't
get
I
get
requests
working
running
in
kubernetes
before
we
do
anything
else,
so
we
had
a
quick
question
from
mozu
fer
Haga,
which
was:
is
it
possible
to
access
filesystem,
API
from
Ballerina
to
load
files
and
other
stuff
I?
Think
the
answer
is
yes,
absolutely
if
we
come
into
our
ballerina,
let's
see
we
want
to
go
to
our
examples.
I'm
assuming
this
is
the
I/o
stuff.
A
If
I
had
to
guess
which
is
the
stuff
over
here,
bio
and
yep
right
here
we
have
I
open
file,
file
path
and
a
permission,
and
it
looks
like
we
have
some
concept
of
channels,
and
here
we
have
an
example
of
writing
bytes
to
a
file,
so
yeah
I
would
imagine
that
ballerina
comes
complete
with
standard
primitives
for
interacting
with
the
file
system.
Navigating
the
file
system
mutating
the
file
system,
writing
data
to
some
sort
of
persistent
storage.
A
Writing
dated
WebSockets,
you
name,
it
I
think
you're
gonna
get
it
with
ballerina
Sameera
says
you
can
put
the
resource.
Config
annotation
at
the
resource
level,
say
hello
and
say
goodbye.
Sameera
I
really
want
to
say.
Thank
you
for
a
very
verbose
comment
there
that
actually
helps
me
out
quite
a
bit
the
fact
that
you've
made
a
full,
complete
sentence.
That
told
me
exactly
what
to
do
so.
A
A
Ballerina
run
examples
live
tjk
da
Bao.
Listen
you
on
port
1990,
so
I
bet.
If
we
come
here
to
say,
goodbye
does
not
work
as
expected,
and
if
we
go
to
say
hello,
it
should
work
as
expected
and
I
bet.
If
we
go
in
our
terminal
open
up
a
new
tab,
zoom
in
resize
curl
we're
gonna
just
do
localhost,
cuz
I
know,
that's
in
my
Etsy
host
already
localhost
1990
flush
say
good.
Bye,
I
can't
is
a
capital
X
post.
This
is
that's
the
rate
syntax.
A
My
car,
let's
see
what
the
doc
say:
I
don't
use
curl
very
often
folks,
let's
see
is
there
a
curl
example
here,
Oh
ex-post
yeah
I
thought
he
did
that
so
they
had
to.
They
did
HTTP
colon.
So
let's
try
that
really
quick,
so
curl,
HTTP,
colon,
slash,
slash,
run
this
again.
Localhost
9090
say
goodbye
ex
post,
no
matching
resource
found
for
path
say
goodbye.
A
Why
is
this
not
working?
Oh
right
there,
that
explains
it.
We
are
defined,
hit
a
new
path,
so
I
bet,
if
we
just
drop
off
the
e,
say
goodbye
from
the
end
here
and
we
keep
our
minus
X.
Oh
my
gosh,
why
is
this
being
all
weird
over
here?
Let's
resize,
my
terminal
I
think
my
commands
are:
writing
over
each
other
a
little
bit
okay.
So
we
have
method
post.
Let's
try
that
goodbye
world
perfect.
Okay,
so
that's
pretty
handy
so
for
service
config.
A
We
can
change
the
base
path
of
our
service,
which
changed
hello
to
slash,
which
is
still
why
we
had
say
hello
and
say
goodbye
in
points.
After
that,
then
we
have
resource
config,
which
tells
us
the
method
is
post
and
we
can
rewrite
the
path
here,
as
well
so
with
both
slashes
combined
here
in
here.
We
actually
don't
have
any
employment
defined
at
all
and
we
were
able
to
just
send
a
post
request
to
get
say
goodbye.
A
Ok,
so
we're
getting
pretty
interesting
behavior
that
allows
us
to
have
some
pretty
flexible
web
services
and
makes
it
really
really
easy
to
to
change
where
all
this
stuff
is
working
from
so
already
like
I'm,
like
I,
can
Auto
generate
a
lot
of
this
based
off
of
like
a
swagger,
spec,
I'm
I'm,
guessing
there's
some
swagger
packages
in
Ballerina
already,
and
this
is
starting
to
look
like
it's
pretty
easy
for
me,
a
software
engineer
to
be
pretty
expressive
and
to
make
changes
quickly
to
a
web
service.
Okay,
so
we
have
to
say
hello.
A
A
So
we
know
that,
like
it
works
on
my
computer's
now
it's
just
getting
it
off
in
kubernetes,
it
looks
like
they
also
have
a
service,
config
and
then
they're
saying,
go
ahead
and
run
it
and
test
it
do
your
hello
world
and
then
here's
where
we
start
to
enter
a
kubernetes
LAN.
So
here
we
are
defining
the
kubernetes
deployment
and
enable
liveness
is
equal
to
true.
We
define
an
ingress
which
is
hostname,
is
equal
to
ABC
and
we
define
a
service
which
is
service
type,
note
port.
So
these
are
kubernetes
level
primitives
like
the
directive.
A
A
Let's
look
at
my
staple
app,
so
this
is
the
application
we
ran
last
week
and
that
I
use
for
demos
a
lot
so
in
manifests.
We
have
an
ingress
that
you,
animal
I,
don't
know
why
I'm
not
seeing
the
hostname,
maybe
I'm,
just
maybe
I'm
crazy,
okay,
either
way
going
back
to
Balor,
you
know
getting
off
in
the
weeds
here
we
can
go
and
we
can
run
not
run.
A
A
The
sober
and
a
copy
in
our
deployment
and
paste
this
directly
into
our
program
here
will
paste
our
deployment
there
and
we're
gonna
go
in
and
we're
actually
gonna
paste
in
our
service
as
well,
and
the
first
thing
I
notice
here
is
that
we
actually
have
this
in
point,
which
is
an
HTTP
listener.
I
think
this
is
required
in
order
for
us
to
actually
do
some
binding
between
our
program
and
the
kubernetes
service.
A
A
So
here
we
have
a
kubernetes
service
service,
type
of
node
port
and
remember
this
could
be
cluster
I
P
or
this
can
be
load
balancer
if
we
want
to
expose
it
publicly,
but
we'll
just
keep
it
new
port
for
now
and
we're
to
say
it's
Ballerina
demo
and
we're
gonna
also
steal
in
our
deployment.
We're
gonna
steal
a
couple
of
other
directives
as
well.
We're
gonna
get
image
and
we're
gonna
get
name,
and
this
is
going
to
be
really
important
when
we
actually
do
a
build
our
first
build
later
on.
A
So,
let's
go
into
our
deployment
and
let's
tab
the
stuff
over
and
see
if
I
can't
save.
We
want
to
comment
there
there
now
in
spec
rules
host
okay,
so
this
Molly
says
yes,
it
was
there
with
speckles
host
and
that
map's
to
the
host
name,
I
was
actually
looking
for
the
street
host
name.
I
thought
it
was
host
name
for
some
reason.
Thank
you
is
Molly
and
yeah.
He
says
wearing
dresses.
You
can
specify
a
host
based
around
her
UI
based
one
okay.
So
here
for
our
deployment,
we
have
done
enable
liveness.
A
We
have
an
image,
we
have
a
name,
so
it
looks
like
it
is
an
abstraction
on
top
of
the
kubernetes
resource.
It's
not
a
one-to-one
mapping
as
Molly
says:
you're,
not
crazy,
like
it
I'm
a
little
crazy.
Let's
be
honest
here.
Have
you
like
half
of
my
head
of
shades
and
I
just
broke
my
hand,
mountain
climbing?
So
anyway
we
have
kubernetes
service.
A
A
What's?
Actually,
going
on
behind
the
scenes
so
curious,
we're
gonna
kind
of
hack
on
it
and
see
what
we
can
just
figure
out
and
that
might
make
some
of
it
makes
sense.
But
if
you
can
give
us
any
pointers,
that
would
be
much
Lee
and
greatly
appreciated.
Okay,
so
we
have
our
service
and
we,
however,
to
deployment.
So
this
is
a
really
cool
part
about
ballerina
and
in
fact
before
we
do
that.
No,
actually,
you
know
what
I'm
just
gonna.
Let
this
happen.
A
Naturally,
we're
gonna
try
to
do
a
build,
and
hopefully
something
breaks,
because
I
want
to
show
folks
kind
of
how
to
do
some
debugging
with
ballerina.
That
has
been
working
for
me.
So
in
order
for
us
to
do
a
build,
let's
go
back
to
our
blog
here
and
you
can
see
the
example
here
says
we
do
ballerina
build
and
then
the
name
of
the
ballerina
file.
A
We
want
to
build
so
I
guess
for
me
what
I've
noticed
with
interacting
with
ballerina
over
the
past
two
days,
which
basically
makes
me
an
expert
now
is
running,
is
to
run
the
program
locally
and
building
allows
you
to
build
several
different
types
of
constructs.
So
if
you
do
like
a
go,
build
in
the
cope
go
programming
language,
there
is
one
artifact
that
if,
if
you
do
everything
correctly,
that
you'll
get
well,
there's
also
some
pkg
artifacts
as
well,
but
those
are
like,
usually
hidden
to
most
to
users.
The
artifact
most
users
concern
themselves
with.
A
Is
the
statically
linked
binary
that
the
go
compiler
spits
out
in
the
case
of
ballerina.
We
could
get
a
lot
of
different
artifacts
and
we're
gonna
kind
of
see
what
happens
after
we
do.
Our
first
ballerina
build
so
we're
gonna
jump
in
our
terminal.
I'm
gonna
close
this
I'm
going
to
go
into
our
go
path
again:
go
source,
github.com!
A
Sorry,
my
three
fingers
on
my
left
hand,
which
is
my
tab
hand,
are
the
ones
that
are
broken.
So
all
of
my
tabs
are
usually
just
like
three
broken
fingers,
just
kind
of
hitting
the
side
of
my
keyboard
and
hoping
for
the
best
so
go
source
github.com,
slash,
FTO,
slash,
ttak,
slash
episode,
slash
over
42,
slash
live,
which
is
where
we
are.
Oh,
why
did
that
not
work?
Oh,
42,
Oh,
slash
examples,
slash
live!
That's
why?
Okay,
those
really
long
paths,
okay,
so
here's
our
TGI
KL
and
if
you
look
there's
nothing
else
here.
A
A
A
Perfect,
okay,
good
something
went
wrong,
and
so
a
couple
things
just
happen
to
at
the
same
time
number
one
Samira
replying
in
chat.
You
know
number
two
I
made
a
very,
very
common
but
very,
very
expensive
mistake
that
we're
gonna
look
at
in
my
ID
in
a
second.
So
first,
let's
see
what
Samir
says
sure
on
line
number
23.
So
let's
look
at
line
23.
A
He
says
on
line
number
23
replaced
port
1990
with
listener
dot.
Listen
is
the
name
of
the
endpoint
defined
above
oh
so
we
can
have
a
pointer
to
this
endpoint
definition.
So
I
think
he
says
we
do
and
I
was
I'm.
Sorry,
Samir
I
didn't
ask
your
pronouns
I'm
assuming
you're
a
he
him.
If
that's
not
the
case,
really
sorry,
let
me
know
and
I'll
use
the
right
ones.
So
let's
do
listener
dot,
listen,
nerd,
I!
Think
that
might
be
right.
A
Where
is
our
listener
to
find
its
capital
listener?
So
I
bet
we
want
to
do.
A
Http
listener
dot
listener,
maybe
no
that
doesn't
look
great
either.
Maybe
it's
just
capital
listener,
dot,
listener,
sure
replacement
line,
number
twenty
three
port
1990
with
listener
Oh
with
listener,
and
then
that's
the
end
of
his
sentence
or
their
sentence.
So
let's
do
that
I!
Think
that's
what
we
want.
Let's
say
that
and
the
listener
is
the
name
of
the
endpoint
defined
above
port
9090,
as
some
sort
of
an
inline
endpoint
replaced
the
whole
port
1990
with
listener.
Okay,
this
is
the
correct
syntax
here
perfect
and
see
how
I
got
the
tab
engine.
A
That's
how
any
of
those
the
right
signal-
syntax,
okay!
So
this
is
a
pointer
to
this
and
when
I
say
a
pointer,
I
guess
I
should
probably
be
saying
the
word
reference.
It's
not
I,
don't
think
it's
an
actual
pointer.
It
might
be
able
to
do
that
as
a
pointer,
I,
don't
know,
but
we're
gonna
say
reference
to
our
endpoint
defined
here
on
port
90.
This
is
fantastic
Thank,
You
Samara.
So
going
back,
let's
look
at
this
error.
We
just
got
so
right
now.
It
says
undefined
package
undefined
annotation
under
vine
package.
A
Oh
my
gosh!
What's
going
on
and
then
I
realized,
oh
I'm,
super
lazy
from
using
go
imports,
I
neglected
to
import
our
kubernetes
package
here.
So
we
want
to
do
import
Ballerina,
x,
/,
kubernetes
semicolon
so
now.
I
bet
if
we
clear
our
screen
run
it
here.
We
can
stop
this
server
just
while
we're
waiting
for
that
to
run
so
ctrl
C
will
clear
that.
Oh,
this
is
really
exciting.
Okay,
so
it
says
kubernetes
deployment,
kubernetes,
docker,
so
the
first
time
I
did.
A
This
I
was
like
what
in
the
heck
just
happened
and
then
I
I
came
through
and
I
actually
did
a
list,
and
you
can
see
a
lot
of
things.
Just
happened
number
one.
We
have
kubernetes
as
a
directory
and
if
you
look
at
this
cubic
tool,
apply
command.
It
goes
into
users.
My
name
Nova
go
path:
source
github,
calm,
hip,
do
hefty
ot
gik
episodes
Oh.
Forty
two
examples
live
slash,
kubernetes,
so
I
bet.
If
we
go
into
our
kubernetes
directory,
we're
gonna
see
all
of
our
manifests
and
all
of
our
static
EML
files.
A
A
A
So
the
deployment
definition
lives
in
the
code
that
actually
runs
as
a
deployment.
So
those
two
are
now
tightly
coupled
together
in
like
convinced
opinions,
whether
or
not
you
think
that's
a
good
idea
or
not,
but
that's
pretty
cool
I've
never
seen
that
before,
so
that
deployment
was
generated
from
only
defining
these
three
directives,
everything
else
was
sort
of
some
sort
of
sane
default.
A
So
if
we
go
through
here,
I
bet
we
could
find
some
defaults
like
here's
one
right
on
the
very
next
line
image
pull
policy
is
set
to,
if
not
present
and
I'm
guessing.
We
could
probably
go
through
and
change
that
I'll
give
it
like
a
quick
try
here,
because
I
got
a
head
to
the
airport
soon,
but
I
bet,
if
we
did
in
which
poll
policy
set
to
always
reran
our
build
I'm
wondering
what
it's
gonna
try
to
do.
A
This
might
work,
but
we'll
see
cannot
find
T,
GI,
K,
dot,
Val,
let's
go
up
and
try
that
again,
hey
looks
like
it's
working,
so
cut
kubernetes.
What
do
we
have
in
here?
T
GI,
k,
deployment
and
hey
look
at
that
that
actually
works.
That
was
really
cool
image.
Full
policies
now
set
to
always
so
cool,
so
you
can
go
through
and
you
can
override
whatever
the
heck.
You
want
totally
to
find
your
own
deployments
directly
in
your
source
code.
Okay,
so
the
next
thing
I
want
to
do
is
our
deployment
is
referencing.
A
Chris
nova
t
GI,
k
Ballerina,
and
this
is
a
specialist
training
that
says
it's
going
to
pull
from
docker
hub,
so
we
better
make
sure
that
we
have
some
sort
of
container
up
and
running
or
I'm.
Sorry,
let
me
rephrase
that
a
container
image
that's
stored
in
the
dr.
Reza
Street
up
and
docker
hub,
so
we
can
get
that
up
and
running
and
kubernetes.
A
So
what
I
want
to
do
is
I
want
to
check
and
see
if,
if
ballerina
built
a
docker
image
on
my
local
file
system
for
me
to
push
up
to
docker
hub,
so
how
I
can
do
that
is
I
can
do
docker
images
and,
let's
do
a
case,
insensitive
grep
lower
case
I-40
gik
there.
It
is
Wow,
okay.
This
is
going
surprisingly
well
so
Chris
Nova,
TGI
K
ballerina,
and
we
have
the
TGI
K
operators
from
where
we
did
the
operator
framework
and
talked
about
puffins
a
couple
of
weeks
ago.
A
So
let's
go
ahead
and
push
up
and
look
it
even
called
it
latest
for
us,
like
I,
didn't
call
it
canary
or
anything
like
that.
It's
actually
using
the
word
so
I,
like
the
word
latest
for
image
tags
is
a
personal
thing
of
mine
and
I'm
really
happy.
Ballerina
just
did
that.
Okay,
so
docker
push
Chris,
Nova,
TJ,
ballerina
and
we'll
just
go
ahead
and
be
explicit
here
and
we'll
say
latest.
A
Is
Molly
had
a
great
question
which
was:
where
is
the
docker
file
for
ballerina
we're
gonna
look
at
the
docker
file,
just
one
second
is
Molly,
so
that
is
totally
pushed
up
to
docker
hub
now,
let's
go
ahead
and
I
always
like
to
check
the
size
and
just
kind
of
like
sanity
check
that
everything
is
as
expected
in
the
UI,
even
though
you
eyes
are
not
always
the
most
reliable
thing
to
look
at.
So,
let's
lock
it
in
a
docker
hub,
a
TGI
K
ballerina,
dr.
pol
Chris,
novo
T
G
I
can't
ballerina
poof.
A
So
that
looks
like
it's
good
and
is
Molly's
question.
Where
is
a
docker
file,
so
we
can
Emacs
kubernetes.
Oh,
that
hurt
my
finger.
Let's
tab
inside
of
kubernetes
mean
you'll
have
docker
and
an
inside
of
docker.
We
have
docker
file.
Let's
take
a
look
and
see
what's
going
on
here,
Nicholas
D.
Is
there
a
way
to
specify
the
API
group
versions,
for
instance,
to
use
absolute
v1
deployment
instead
of
extensions
v1
to
beta
one
deployment
I'm
assuming
in
this
little
blurb
here
you
would
be
able
to
define
that.
A
It's
like
actually
on
like
in
the
first
two
or
three
lines
or
something
is
it's
invented
all
the
way
over
it.
So
let's
go
back
to
our
Emacs
here.
It
says:
auto-generated
docker
file,
so
from
ballerina
ballerina
looks
like
ballerina.
Not
only
has
a
programming
language
but
actually
went
as
far
as
creating
a
docker
image
at
for
us
to
build
on
level
equals
maintainer.
Let's
change
that
to
some
real
information
here.
So,
let's
do
Chris
at
fabulous
half
and
it
says
copy
tjk
del
x,
2
such
home,
such
ballerina
I,
have
been
thinking
and
Senora.
A
Please
correct
me
if
this
is
wrong.
I
have
been
thinking
about
the
BAL
x-files
as
like
a
compiled
Python
file,
whereas
like
a
jar
file
which
sort
of
acts
as
our
artifact
that
we're
going
to
run
and
that's
why
we're
copying
it
we're
exposing
port
1990
in
our
container,
which
is
the
same
port.
We
defined
on
our
endpoint
in
our
service
earlier
and
it
says
command
ballerina
run
TGA,
not
balik's.
Very
simple,
very
discreet,
docker
file
makes
me
happy.
So,
let's
get
out
of
here,
we're
gonna
save
it.
We
could
do
a
rebuild
andryush
yeah.
A
Actually,
why
not?
Let's
do
that?
Let's
go
up
to
levels
and,
let's
run
our
build
command
again,
cannot
find
tjk.
Pal,
oh,
go
into
examples.
There
we
go
now.
Let's
turn
our
dual
command
again:
what-o
live
now
it
was
clear
and
then
run
our
tjk
again
rebuild
it.
It's
generating
our
deployment
for
us.
Let's
cut
out
our
deployment,
so
I
can
show
folks.
A
Deployment-
this
is
the
question
that
we
just
had,
which
is
how
would
you
change
this
directive
here?
Exceptions
of
you
want
beta
1
to
something
else,
so
just
real
quick.
Why
we
have
our
build
command
handy?
Let's
just
try
to
do
this
and
just
see
what
happens.
It
might
be
smart
enough
to
where
it
just
figures
it
out,
which
would
be
pretty
cool.
A
So
if
we
come
to
our
deployment,
V
1
theta
1-
and
we
can
just
break
this
thing
and
we're
gonna
call
it.
Let's
go
into
our
chat,
apps
view
on
deployment
instead
of
extensions,
b1,
b2
or
deployment,
so
we're
gonna
do
I
think
this
is
the
right
string
either
way.
We're
not
gonna
actually
try
to
run
this
because
it's
not
gonna
work,
cuz,
I'm
ready
to
do
a
version
of
kubernetes,
but
let's
do
a
view
on
deployment
and
rebuild
our
artifacts
here.
The
ability,
JK
dot,
Val
undefined
field,
API
version
instruct.
A
A
If
you
want
to
take
here
and
try
it
out,
maybe
you
can
figure
it
out
and
let
us
know
I'm
gonna
move
on
we're
almost
out
of
time
and
I
want
to
get
this
thing
up
and
running
in
kubernetes
and
do
some
port
forwarding.
So
without
further
ado
it
wouldn't
be
too
gik
without
looking
at
Yambol
and
without
me,
typing:
ok
get
po,
so
we
don't
have
any
pods
burning
and
let's
just
see
what
else
we
have
up
in
my
cluster
again
we're
only
gonna
be
using
the
default
namespace
here.
A
I,
don't
even
think
I
have
any
services
defined.
Okay,
I
have
the
kubernetes
cluster
IP
service
as
well.
So
let's
go
and
look
at
our
y'know
files,
so
we
can
do
a
cat,
kubernetes,
TGI,
K
deployment,
Yambol,
we're
gonna,
apply
this
to
kubernetes
and
see
what
happens
so.
The
first
thing
I
want
to
check
and
see,
is
just
make
sure
this
deployment
looks
sane,
so
we
have
replica
cow
equal
to
one
looks
like
we
defined
labels.
You
have
a
pubically
tgia
k.
A
This
image
looks
like
the
correct
image
we
want
to
pull
from
docker
hub.
We
over
at
image
pull
policy
Ballerini
even
defined
liveliness
probe
for
us,
which
just
opens
up
a
TCP
socket
on
port
1990.
That's
basically
just
going
to
say:
hey.
Is
there
an
opening
listening
web?
Socket
there?
Oh
good
there
is
this
thing's
alive,
it's
running
on
container
port
equal
to
1990
again
with
our
TCP
protocol,
no
volume
mounts
which
that's
like
a
whole
other
bucket
of
words.
A
If
we
ever
want
to
start
talking,
stateful
applications
with
ballarino,
maybe
we
can
do
a
follow-up
episode
and
then
we
don't
have
really
anything
else
to
find
it.
These
are
all
empty
directives
here
at
the
end,
so
that
deployment
looks
good
to
me.
Let's
go
ahead
and
apply.
This
que,
apply
eff,
kubernetes,
tgia
deployment,
yeah
Mille
and
let's
cat
out
our
service
as
well.
Kubernetes,
sameera,
Snickle,
SD
samara,
says
Nicolas.
Api
versions
are
not
supported
at
the
moment.
A
Unfortunately,
ok,
so
it
looks
like
they're
in
the
abstraction
for
the
kubernetes
objects
in
the
ballerina
source
code.
There
are
things
that
aren't
and
are
supported
right
now.
You
cannot
change
version,
I'm
gonna,
go
ahead
and
just
say
pull
requests
accepted
in
case.
Anybody
here
wants
you
to
contribute
to
Valerie
and
that'd,
be
pretty
rad,
so
cat
kubernetes,
tjk
service,
wait,
do
I,
know
I,
have
a
service
Oh
SVC,
it's
shortened,
it
ok!
So
that's
kind
of
annoying.
This
one
was
instead
of
being
deploy.
A
It
was
full
deployment
and
instead
of
being
for
for
both
service,
it
was
the
shorthand
SVC.
The
engineer
brand
of
mine,
like
once
those
always
to
be
the
same
so
cat
kubernetes,
tjk,
SVC
de
animal.
Let's
see
what
we
have
here
again.
We
have
our
App
equal
to
TGI
K.
What
is
our
selector
app
is
equal
to
t
GI
k.
What
was
our
app
called
up
here?
App
t,
GI
k,
so
that's
gonna
map.
We
have
port,
1990,
tcp,
target
point
1990
and
we're
node
porting.
This
is
a
super
simple
kubernetes
example.
A
So
let's
go
ahead
and
apply
it.
Ok,
apply
eff,
kubernetes,
t
GI,
k,
SVC
IMO,
I
said
the
service
is
not
creatives.
Now
we
have
a
service.
We
can
talk
to
you
and
we
could.
We
could
change
that
service
to
type
load
balancer
and
expose
it
publicly.
Actually,
you
know
what
why
not?
Let's
do
it
publicly?
No,
no
I
don't
have
time
we're
not
gonna.
Do
it
publicly.
You
guys
have
seen
me
do
that
before
anyway.
A
Using
Ballerina,
so
if
I
refresh
super
anti-climactic,
but
it
worked-
and
I
bet
if
we
go
to
say
goodbye-
it's
not
going
to
work.
Let
me
change
this
and
I
bet.
If
we
go
to
method
not
allowed,
because
we
only
have
post
defined
and
I
bet
if
we
rerun
our
curl
command
here,
let's
see
curl
HTTP,
localhost
port
99,
t
slash,
say
goodbye.
A
Capital
X
capital
post.
It
says
goodbye
world
with
no
new
line
at
the
end,
which
is
my
bad
I,
think
that's
a
problem,
my
source
code
that
looks
good.
Our
service
is
good.
We
have
it
in
a
container
Ballerina
made
that
really
easy
for
us
to
get
into
container
may
really
easy
for
us
to
generate
a
deployment
made.
A
It
easy
for
us
to
write
a
web
service
and
we
have
that
up
and
running
in
kubernetes
and
I
mentioned,
there's
a
little
bit
of
a
surprise
at
the
end,
and
again
this
did
not
occur
to
me
until
about
an
hour
before
I
started
TGA
kay
today
that
this
was
even
a
thing,
but
as
I
was
going
through,
the
quick
tour
here,
I'm
scrolling
down
and
I'm
kind
of
looking-
and
we
went
through
a
lot
of
this.
In
this
example,
they
talked
about
how
you
could
actually
you
know,
write
an
example
Twitter
integration.
A
So,
if
you're
interested
in
actually
communicating
with
another
API,
there's
a
working
example
on
the
QuickStart
here,
it
talks
about
actually
just
building
a
docker
image
and
how
there's
also
an
abstraction
on
top
of
docker
as
well
as
kubernetes.
You
can
define
an
arbitrary
docker
things
from
like,
for
instance,
exposed
as
one
of
the
the
first-class
citizens
here
and
if
you
scroll
all
the
way
down
to
the
end,
I
saw
this
and
this
caught
my
eye
and
I
was
like
whoa.
What
the
heck
is
this
thing?
A
Something
exciting
might
happen
if
we
go
to
localhost
1991,
so
I'm
gonna
try
to
do
my
best
to
replay
with
it
actually
happened
to
me
earlier,
which
was
I
opened
up.
My
terminal
I
opened
up
a
new
tab
and
see
if
we
can
zoom
in
resize
skewed
this
one
over
and
I
came
in
and
I
actually
just
typed,
composer
and
I
was
like
not
expecting
this
to
work
at
all
and
I
typed
it
and
then,
like
both.
My
hands
are
up
here.
It's
not
doing
anything
right
now.
A
We're
now
running
this
like
web
service,
like
this
UI
on
my
local,
how
this
to
know
like
well,
what's
going
on
it
said:
oh
look,
there's
create
project
and
I'm
like
what
so
I'm
like.
Let's
call
this
one's,
oh,
my
god,
KPI
K
create
a
project.
This
is
where
I
started
to
kind
of
freak
out.
There's
a
graphical
definition.
I
think
you
can
interact
with
this
thing,
or
at
least
you
get
a
graphical
output
of
your
service
and
it
just
generated
all
this
code
for
us.
A
So
this
is
like
unbelievable
I've,
never
seen
a
programming
language
do
anything
like
this,
and
this
actually
might
be
kind
of
fun
to
get
this
up
and
running
in
kubernetes,
because
then
you
would
be
able
to
actually
for
the
first
time
I've
been
waiting
for
this.
For
so
long
be
able
to
develop
directly
in
kubernetes.
He
would
just
be
doing
it
over
your
browser.
So
this
is
pretty
cool
and
it
says
you
know
how
this
try
it
button
here.
A
You
can
hit,
try
it
and
then
you
get
this
postman
style
like
API
integration
here,
where
you
can
actually
craft
an
API
request
and
test
your
API
directly
so
Ballerina.
Because
of
this
really
cool
compose
feature.
We
could
write
a
docker
image
that
runs
compose
and
actually
develop
an
application
in
kubernetes
and
access
it
over
port
forward
like
we
just
did
live
or
we
could
access
it
over
node
port
or
a
load
balancer
and
actually
start
developing
directly
in
kubernetes
and
I've
never
seen
a
kubernetes
development
tool.
A
Work
like
this,
like
if
you
look
at
draft,
if
you
look
at
scaffold,
those
are
very
much
like
build
it
push,
it
run
it,
and
this
is
like
no
just
develop
it
in
a
browser
directly
in
kubernetes,
and
then
we
can
worry
about
pushing
it
and
building
it
later.
So
to
me,
this
was
like
a
really
really
pleasant.
A
Surprise
at
the
end,
I
would
love
to
come
to
a
TGI
Kay
on
doing
some
live
development
inside
of
kubernetes
with
this
tool
and
talk
about
pros
and
cons,
and
what
I
like
about
in
how
how
we
could
possibly
use
it
to
do
some
pretty
cool
stuff
and
really
speed
up
our
engineering
cycle.
So
anyway,
that's
all
the
time
we
have
for
this
week.
I
am
7
minutes
overdue
late
for
the
airport,
so
I'm
gonna
give
folks
a
few
minutes
to
say
goodbye.
A
I
know
you
folks,
on
the
other
end,
are
a
few
minutes
behind
me
and
I'm
gonna
do
as
folks
were
saying
goodbye,
I'm,
gonna
kind
of
do
a
quick
high-level
of
what
we
were
able
to
do
on
the
episode
to
sort
of
and
capture
it
and
in
everybody's
minds.
So
I'm
gonna
go
back
to
my
face
here
and
say
thanks
again
for
joining
Chris
Nova
the
introduction
to
Ballerina.
We
got
the
the
console
up
and
running.
We
were
able
to
learn
about
services
and
endpoints
and
how
you
can
configure
different
HTTP
verbs.
A
Some
get
some
posts,
I'm
sure
the
whole
HTTP
protocol
is
supported
and
actually
learn
about
Ballerina
and
how
we
can
start
building
out
like
micro
services.
Then
we
learned
about
how
Ballerina
build
was
a
little
bit
unique,
how
it
generated
our
docker
image.
For
us
we
were
able
to
push
that
up
to
a
registry
and
we
were
able
to
actually
get
that
running
up
in
kubernetes
with
a
deployment
that
Ballerina
also
generated
for
us.
A
Now
that
we're
into
the
sort
of
a
new
cloud
wait
cloud
native
way
of
doing
things
so
yeah
very
impressive,
Ballerina
very
impressed
with
the
primitives
behind
it
would
love
absolutely
love
to
see
a
similar
user
story
here
for
other
programming
languages
like
going
and
in
general,
like
like
big
round
of
applause
to
the
folks
working
on
Ballerina
I.
Think
the
stuffs
great
can't
wait
to
see
see
more
of
this
and
see
where
it
goes
in
the
future.
A
So
yeah
we
totally
have
some
good
byes
here
we
have
good
bye
from
is
Molly
Sameera
you've
been
very
helpful
today.
Thank
you.
So
much
for
your
help.
Noah
Abraham
says:
okay,
I
totally
have
a
new
project,
TAV
line
good
to
see
you
causal
and
didn't
know
you
were
here
so
there's
cool
stuff
things,
Chris
smear
a
great
demo,
a
lot
of
cool.
A
Indeed,
okay,
I'm
off
to
the
airport,
I'm
gonna,
go
rock
climbing
I'll,
see
you
folks
next
week,
I,
don't
know
what
we're
gonna
be
doing
next
week,
but
yeah
feel
free
to
open
up
an
issue
in
the
tgia
issue.
Tracker
or
pin
me
on
Twitter
or
let
us
know
what
you
think
and
we
will
be
picking
a
new
episode
next
week
and
I
will
see.
Folks
then
have
a
have
a
great
weekend.
Everyone
bye
looks
like
Waleed,
so
yeah
have
a
great
weekend,
we'll
see
everyone
later
Cheers.