►
From YouTube: KaiCode #1: ngs-lang/ngs by @ilyash
Description
Next Generation Shell (NGS) is a powerful programming language and a shell designed specifically for Ops. Ilya Sher, the creator of it, says: "I like helping people. Reducing frustration and making people more productive just feels good. A scalable way to help is through tools. That is why I created NGS. It is a programming language with typical Ops tasks in mind."
The repo: https://github.com/ngs-lang/ngs
#kaicode #opensource #emerging
A
Hi
everybody,
it's
quite
new
format.
For
my
for,
for
my
video
blog,
we
will
start
with
this
interesting
project
and,
starting
from
now
I
will
try
to
record
similar
videos
interviewing
people
who
do
open
source
development,
mostly
young
projects
asking
them
questions
learning
from
their
experience,
maybe
sharing
something
with
you.
So
I
will
be.
The
question
asked
asking
person
and
the
person
who
I
interview
is
the
developer,
the
owner
of
an
open
source
project.
Today
we
meet
ilya.
A
He
is
he's
the
creator
of
a
project
with
almost
a
thousand
stars
on
github,
which
is
called
ngs
is.
This
is,
as
I
understand,
a
new
language
for
for
writing
scripts
for
devops
for
ops
operations,
but
he
will
tell
us
a
little
bit
more
right
now
and
then
we'll
go
into
questions.
A
B
What
it
is,
first
of
all,
I'm
glad
to
be
here.
It's
very
interesting
for
me
to
be
interviewed
so
the
project.
Yes,
it's
currently
it's
for
scripting
and
in
some
point
in
future
it
will
have
the
cli
the
shell
interface,
the
reason
it
doesn't
have
the
cli
yet
is
because
the
cli
would
be
in
ngs
itself,
as,
for
example,
opposed
to
other
projects
in
which
you
start
using
the
shell.
B
Then,
if
you
want
to
modify
something
beneath
the
service,
you
can't
because
you
need
to
learn
new
programming
language
such
as
like
go
or
rust,
or
something
like
that,
and
here
the
cli
will
be
completely
ngs.
So
if
you
like
using
the
project,
you're
writing
scripts.
Now
you
want
to
customize.
Well,
you
are
welcome
same
language,
just
go
ahead
and
modify,
and
it's
it's
also
going
to
be
easy,
because
ngs
is
customizable
we'll
get
in
into
that.
Maybe
later.
A
What
it's
for
tell
me
because
I'm
a
quite
frequent
user
of
bash
and
I
use
ruby.
So
I
look
at
your
project
and
I
see
that
it's
like
a
it's
something
instead
of
ruby
because
it
has
cycles
and
has
like
variables
inside
and
everything
which
looks
more
convenient
than
bash.
But
at
the
same
time
we
have
the
same
stuff
in
bash.
So
what's
what's
the.
B
Yeah,
okay,
so
let's
maybe
do
some
some
thinking
about
what
bosch
provides
and
what
ruby
or
python
provide
and
see.
Where
is
this
spot,
which
is
kind
of
empty,
so
bash?
It's
something,
let's
say
historical
and
it
is
pretty
much
focused
on
kind
of
devopsy
things,
which
is.
The
main
focus
is,
of
course
running
external
processes
and
file.
Manipulation
where
bash
locks
completely
is
structured
data.
B
B
If
you
take
python
or
ruby
or
go
for
that
matter,
doesn't
matter,
they
are
general
purpose
programming
languages.
They
are
not
focused
on
devops
stuff.
Some
example
that
I
came
to
recently
is:
let's
say:
for
example,
you
have
a
file
and
you
have
number
per
line
right,
so
you
have
oak
right.
It's
like
kind
of
the
obvious
choice.
If
you
want
to
sum
summarize,
the
numbers
you
just
use
oak
and
why
oak
is
better?
Okay,
it's
not
better
oak
is
focused.
B
It's
focused
on
the
use
case
that
you
have,
and
that
is
the
advantage
of
ngs.
B
It's
focused
on
the
devops
stuff,
which
is
it
is
both
running
external
processes
and
file
manipulation,
but
it
also
is
increasingly
more
about
data
manipulation,
and
why
is
it
so
because
we
have
apis
and
if,
for
example,
you
take
like
maybe
20
or
30
years
back
most
of
the
things
that
devops
you
were
doing,
it
was
inside
one
machine,
it
was
files,
and
you
know,
services
and
stuff
like
that,
and
now
it
is
much
more
about
talking
to
apis
and
well.
Apis
is
json
so
and
they
sometimes
consume
json.
B
So
you
need
to
be
able
to
manipulate
the
data
structures
in
pretty
convenient
way.
So
ruby
may
be
more
a
bit
more
convenient
for
data
manipulation,
but
ruby
doesn't
have
such
elaborate
facilities
for
running
external
programs.
For
example,
ngs
has
three
different
syntaxes
for
running
external
programs.
B
So
by
the
way
I
want
to
explain
kind
of
biggest
rationale
about
syntax
and
what
goes
into
syntax
and
what
goes
into
standard
library
is
just
kind
of
by
the
frequency
of
use.
So,
for
example,
you're
calling
external
programs
a
lot,
that's
not
going
into
libraries,
that's
a
syntax
because
it
just
happens
a
lot
and
it
should
be
short
so
and
if
something
is
less
frequent,
then
it
goes
into
standard
library.
B
B
So,
for
example,
you
can
write,
p
equals
then
dollar
parenthesis
and
then
your
external
program,
and
then
you
will
have
a
reference
and
and
then
you
can
do
maybe
p
dot,
kill
and
or
whatever
on
the
process
and
the
third
one
is
something
which
I
did
not
see
in
any
other
language
or
library
is,
is
a
double
back:
tick,
syntax
that
runs
external
program
and
then
parses
the
output
into
structured
data.
So
right
now
it
automatically
detects
json.
B
So
if
you,
for
example,
did
a
curl
on
something
blah
blah.json
and
this
brought
the
file
to
you,
the
double
backed
syntax
will
also
parse
the
output.
So
you
can
on
that.
You
can
do
dot
blah
blah,
and
that
would
be
the
field.
And
why
is
it
the
syntax?
Because
it's
very
frequent
because
right
now,
if
you're
talking
to
apis,
which
might
be
directly
with
curl
or
my
bb-
is
aws
cli,
which
can
return
json.
B
B
B
The
presence
of
this
question
meant
that
something
is
already
wrong,
because
neither
of
these
felt
like
really
good
fit
for
what
I'm
doing,
not
russian,
not
python,
and
why?
Because
the
the
use
cases
are
searched
that
are
not
fulfilled
good
by
neither
of
these
languages
by
the
way
I'm
using
python,
because
I'm
more
familiar
with
python
than
with
ruby.
So
that's
that's
my
example,
but
but
for
the
purposes
of
our
talk,
that
would
be
like
more
like
general
purpose
languages.
More
than
python.
B
I'm
doing
both
I'm
since
I
started
my
career
at
2001,
I'm
doing
both
programming
and
devops,
which
was
not
called
devops
at
the
time
it
was
called
system
administration,
I'm
doing
both
all
along.
That's
roughly
20
years
now
and.
A
B
B
That's
just
an
open
source
project
and
I
solved
my
pain
and
the
hope
is
that
other
people
with
similar
pain,
who
can
actually
gain
from
this
project
and
suffer
less.
It
was.
A
B
B
No,
no,
no,
I
don't
write
syntax
parsers.
I
used
the
library
I
used
the
javascript
library,
then
in
second
implementation
it
was
in
lisp
and
I
also
used
a
library
for
syntax
and
now
it's
in
c,
and
I
also
use
a
library
for
syntax
parsing.
I
I
think
it's
just
a
lot
of
work
and
it's
not
very
productive
work.
B
B
A
B
I
I
am,
writing
some
scripts
here
and
there
I
am
not
putting
that
into
like
completely
production,
because
right
now
you
will
have
a
shortage
of
programmers,
so
I
don't
want
to
leave
my
client
in
a
state
where
they
have
the
scripts
and
I'm
the
only
person
that
can
solve
this
critical
problem
so
it
for
now.
It
is
maybe
scripts
that
you
know
doing
something
less
critical,
like
maybe
backups,
or
something
like
that,
that
something
that
will
not
have
to
be
solved
like
in
five
minutes
when
production
is
down.
A
B
Yes,
unfortunately,
so
I
have
this
bunch
of
scripts
which
are
in
bash
and
python.
So
I
I
roughly
divided
this
into
two
big
chunks.
One
is
what
runs
inside
machine
and
sets
up-
let's,
for
example,
do
nginx
or
apache,
and
the
other
one
is
the
outside
the
framework
which
would
call
the
aws
api.
So
that's
important,
but
by
the
way,
why
would
I
use,
for
example,
bash
for
setting
up
nginx
or
apache
or
whatever,
and
not,
for
example,
chef
or
puppet,
which
was
actually
pretty
popular
at
the
time.
A
B
B
The
puppet
module
for
nginx
was
about
two
and
a
half
k
lines,
and
it
actually
did
not
include
the
functionality
which
I
needed.
Probably
it
was
already
now
by
by
now,
but
at
the
time
it
was,
I
needed
the
what
d
h
params
file
or
something
like
that,
and
it
just
wasn't
in
there
and
it's
I.
I
think
that
I
would
like
to
use
the
simplest
solution
which
fits
my
requirements,
and
in
that
case
it
was
bash
and
what
about.
B
Some
somewhat
yes
so,
for
example,
the
most
recent
project
also
again,
because
you
know,
and
not
nothing
is
forever
right.
So
I
don't
want
to
like
leave
my
place
with.
You
know
a
bunch
of
ngs
scripts
which
are
not
you
know,
maintainable,
because
I'm
not
there.
Could
you.
A
B
Yes,
you
have,
but
you
I
think
you
will
be
hardly
pressed
to
find
people
which
could
which
know
already
and
just
it's.
I
don't
think
it's
a
problem
to
get
into
ngs
and
rob.
It
probably
is
not
that
big
of
a
problem
to
fix
a
script
in
ngs,
but
you
know
still
this
situation
when
you
know
you
have
a
script
in
a
language
that
you
don't
have
people
for.
That's
problematic.
A
I
think
and
how?
How
did
you?
How
did
you
promote
it
when
you
created
the
first
prototype
how
much
first,
the
first
question
is:
how
much
attention
you
got,
how
much
how
many
people
actually
saw.
You
saw
your
product.
How
many
people
gave
you
stars
and
where
you
have
been
at
that
time
seven
years
ago,
did
you
have
a
very
popular
github
profile?
Did
you
have
what
about
the
community
tell
us
the
story?
How
did
it
happen.
B
Actually,
at
the
time-
and
I
think,
even
as
of
today,
I
pretty
much
suck
at
marketing
so,
for
example,
the
first
about
I
think,
300
stars-
I
got
because
my
friend,
actually
it
was
friend
and
the
client
they
published
a
link
on
hacker
news.
That's
how
I
got
my
first
about
300.
B
I
think
stars
and
yeah
I'm
trying
to
get
the
word
out
and
I
think
it's
a
kind
of
kind
of
a
shame
that
I
need
to
do
so
much
marketing
to
get
anywhere
with
this
project,
because
I
think
it's
a
good
project-
and
I
I
spoke-
I
don't
have
the
permission,
so
I
can't
tell
who
that
was,
but
from
one
of
the
big
big
known
companies.
B
A
A
B
Well,
I
try
to
follow
conversations
on
social
networks
and
sometimes
I
have
something
meaningful
to
contribute
and
that
draws
some
attention.
Sometimes
it's.
B
You
know,
I
see
solutions
in
other
languages
and
they
say
okay,
that
would
be
twice
short
in
an
ngs.
So
I
put
my
solution:
oh
it
would
be
like
three
times
cleaner.
You
know,
whatever
do
you
post.
B
B
A
Then
I
think
I
think
you're
too
humble
because
I
do
it
all
the
time
when
I
find
some
question
they
ask
like
how
to
do
this
in
apache
library,
and
I
have
my
own
library
for
doing
the
same.
So
I
just
jump
in
there
and
I
post
my
answer
and
I
say
hey.
This
is
not
about
apache
actually,
but
you
can
do
it
in
my
library
faster
and
some
of
my
answers
actually
got
deleted
from
stack
overflow.
B
Yeah,
I
don't
know
I
need
to
think
about
this-
maybe
maybe
because
I
really
think
that
for
quite
a
few
use
cases
ngs
would
be
the
best
solution,
the
technically
best
solution.
B
B
Besides
the
language
there's
a
repository
which
is
called
nsd,
that
is
short
for
ngs
scripts
dumpster,
and
I
put
some
scripts
here,
pretty
much
random
scripts.
Let's
do
this,
so
this
script,
okay,
it
goes
over
aws
pipeline
and
tells
which
cloud
formation
stacks
the
pipeline
creates.
So
because
we
are
using
aws
code
pipeline
and
each
pipeline
can
create
more
than
one
cloud
formation
stack
and
sometimes
it's
very
convenient
to
know
which
pipeline
created,
which
stacks.
B
So
what
you
see
here
is
example,
run
okay,
so,
for
example,
that's
the
pipeline
name
and
then
it
found
this
stacks
which
were
created
by
this
pipeline.
So
what
it
actually
is,
it's
just
dig
into
json
structure
and
the
output.
You
know
what
you
have
found.
B
B
So,
for
example,
you
see
here
that
this
script
runs
and
gets
command
line
argument
here
and
it's
automatically
gets
into
this
name,
because
the
language
does
that
okay,
there's
also
optional
argument,
which
says
j
and
j
is
boolean,
and
if
it's
not
present
the
default,
it's
false
and
j
actually
makes
as
the
output
to
be
json.
As
you
can
see
in
this
example,
so
that
would
be
a
json
array.
B
So
if
you
like
want
to
combine
next
tool,
which
you
know
can
do
json,
then
you
can
maybe
use
this
flag.
So
let's
go
over
just
a
bit
about
the
script.
It's
just
a
randomly
chosen
script
that
was
here
open,
so,
first
of
all
double
backed
syntax.
That
means
run
external
program
and
parse
the
output,
so
p
here
is
already
just
data
which
is
structured
data,
so
I
can
do
dot
pipeline
dot
stage,
dot
actions
then
flatten,
because
it's
like
deeply
nested.
B
So
what's
interesting,
what
interesting
we
have
here,
log?
Okay,
so
this
comment
will
be
logged
and
it
looks
like
this
okay
and
to
log
the
command.
All
I
needed
to
do
is
actually
say
log,
colon,
okay,.
A
B
Why
is
it
in
the
language?
Because
it's
just
very
common,
you
always
see
the
smart
scripts
and
at
the
top
they
have
functions
defined
log
debug,
worn
error,
all
that
stuff.
It's
just
so
repetitive
that
I
just
factored
that
out
into
the
language
and
you
can
just
use
it.
Okay,
you
want
to
report
an
error,
error.
B
So,
what's
interesting
about
exit,
it's
it's
again
shows
the
optimization
for
the
common
use
case.
So,
for
example,
exit
which
you
have
in
the
middle
of
your
program,
most
of
the
languages
would
do
the
exit
code
zero
by
default.
But
that's
just
not
the
case.
If
you
have
exit
in
the
middle
of
your
program,
that's
typically
because
something
happened,
something
bad
happened
already.
You
just
want
to
report
the
error,
so
you
can
see
that
the
exit
code
here
is
is
one.
A
B
Default,
if
you
just
exit,
because
otherwise
you
just
typically
forget
the
exit
code
and
it
returns
zero
and
then
it's
kind
of
okay,
but
it's
not
okay,
you
exited
in
the
middle.
Probably
something
was
wrong.
So
what
else
we
see
here
in
the
script?
B
So
we
have,
we
see,
filter
which
is
kind
of
a
bit
of
functional
programming,
which
I
kind
of
extended.
So
typically,
you
see,
filter
gets
a
predicate
energies.
Filter
gets
a
pattern
and
one
of
the
cases
of
pattern
could
be
a
predicate.
So
here
you
could
pass
a
function
or
a
pattern
like
this,
so
in
this
json
that
was
returned
by
the
command.
I'm
looking
for
this
pattern,
so
we
have
action
type
and
it
has
to
be
like
one
so.
B
And
then
action
mode
should
be
one
of
these
guys,
so
any
off
will
match
either
one
of
them.
A
So
you're
passing
this
array:
it's
not
an
array,
it's
an
object,
so
you
pass
this
object
to
as
a
filter,
so
this
object
has
to
have
certain
fields.
Certain
attributes,
yes,.
B
Yeah
I
can
give
like
maybe
a
shorter
example,
and
then
it
will
be
like
cleaner.
Okay,
we
have
array
with
objects,
a
one,
a
let's
say
two
and
I
don't
know,
b,
sorry
and
b,
and
I
want
to
filter
on
that
on
on.
Let's
say
I
want
to
filter
where
a
is
actually
one.
B
Sorry
what
happened?
Yeah-
I
forgot
okay,
so
the
result
of
this
filtering
is
the
first
object.
Yeah.
A
B
And
it's
a
bit
deeper
so,
for
example,
but
this
patterns
they
are
recursive.
So,
for
example,
I
can
say
so.
One
is
also
pattern.
So
simple
scholar
values
they
just
match
themselves.
But,
for
example,
I
can
say
here
it
should
be
an
integer.
A
And
where
did
you
get
this
idea
like?
Is
it
inherited
from
some
other
language
or
it's
yours
this?
This
type
of
filtering.
B
Well,
I'm
working
on
pattern
matching
it's
a
kind
of
the
greater
vision
of
pattern.
Matching
pattern
matching
is
not
a
new
idea.
What
is
always
difficult
to
do
is
you
know
to
to
have
like
a
good
external
idea,
but
that's
half
the
work.
The
rest
of
the
work
is
to
make
it
fit
into
the
language
in
the
proper
way.
So
I
think
that
pattern
matching,
for
example,
this
is
very
powerful
and
also
very
kind
of
straightforward
way
to
express
yourself.
B
So
I
think
that
pattern
matching
should
be
everywhere,
so
there
are
many
functions
and
ngs
which
get
patterns.
So,
for
example,
there
is
function
which
is
called
z1.
Okay.
That
means
that
there
should
be
exactly
one
object
which
will
not
depe,
which
should
match
the
pattern,
and
then
this
object
is
returned
here.
We
see
that
it
actually
supposed
to
return
two
objects,
so
that's
an
exception.
B
Okay,
but
if
we
say
one
because
exactly
is
the
first
object,
you
can
see
it's
not
an
area
anymore
with
one
element,
the
element
is
extracted,
so
now
it's
the
top
label.
So
now
we
have
this
object.
A
B
It
is
a
very
important
feature.
Unfortunately,
I
started
working
on
it
not
too
much
time
ago,
but
it
should
be
it
it's
halfway
already
there
and
if
you
can
actually
you
asked
about,
you
know
how,
where
I
got
this
idea,
so
we
can
see
on
a
gs,
wiki,
sorry,
ngs
wiki.
B
I
called
it
the
upm,
that's
universal
pattern
matching.
Why
is
that
universal?
Because
it's
supposed
to
be
very
generalized,
for
example,
you
have
like
regular
expressions
right,
but
they
can
only
match
strings
right,
so
you
need
to
some
something
like
to
be
much
more
generic
and
actually
there
is
a
prior
art,
and
I
have
a
section
on
that.
B
Okay,
so
when
I
design
I
do
go
over
quite
a
bunch
of
stuff
which
was.
B
Previously
done,
but
the
challenge
here
is
mostly
how
you
fit
it
into
the
into
the
language,
because
otherwise
it
will
be
just
another
feature
which
doesn't
talk
with
any
other
features
in
the
language,
but
it
should
so.
For
example,
when
I
do
dot,
filter
and
filter
gets
a
pattern.
B
What's
interesting
in
the
js,
it
could
be
a
predicate
which
is
a
function
with
one
parameter
which
turns
boolean,
or
it
can
be
some
more
elaborate
pattern.
I
think
that's
interesting
combination
and
I
think
that's
that's
where
the
kind
of
work
the
mental
work
goes
is
to
to
to
try
to
to
see
how
the
external
ideas
match
your
language
and
to
do
the
best
match
between
this.
B
It's
very
important,
I
think
it's
increasingly
important,
because
talking
to
apis
is
just
increasing.
All
you
do
is
talking
to
apis
now,
like,
for
example,
do
something
in
amazon
and.
B
When
we
well
depends,
you
can
do
it
in,
for
example,
python
or
whatever,
but
I
think
ngs
is
more
concise
with
this.
So
by
the
way
a
python
got
pattern
matching
in
310
and.
A
But
it's
inconvenient
to
to
match
bash
and
python
together,
probably
understand
your
point
right
now
so
you're,
because
if
I
write
in
bash
then
I
don't.
I
cannot
write
everything
in
ba
in
python
because
inconvenient
for
devops,
I
need
bash
and
then,
if
I,
if
I
connect
bash
with
python,
when
I
fetch
something
in
json
and
then
I
need
to
parse
it,
then
I
go
to
python
and
I
go
back.
So
all
these
connections.
B
B
A
B
No,
not
me
that's
very
nice,
and
how
did
it.
B
B
B
No,
it's
not
my
account
it's
in
another
repository,
and
actually
it's
it's
not
even
in
on
my
github.
It's
it's
just
another
repository
of
the
of
the
brew.
So
it's.
A
B
I
started
by
then
I
somehow
put
it
on
hold
for
very
long
time.
It's
now
on
hold.
There
should
be
at
some
point
in
time,
debian
package.
My
friend
did
snap,
I'm
not
sure
it's
up
to
date,
but
there
is
no.
B
A
B
B
Some
point
so
you
you
have
to
do
this
change
log.
This
compat,
which
I
don't
remember
what
it
was,
is
control
files.
It
is
a
bunch
of
work
and
then
you
need
to
contact
debian
guys
and
to
see
you
know
how
they
let
you
in.
Even
of
course
you
know
it
it.
It
is
quite
some
work
I
mean
I
would
be
glad
if
somebody
actually
did
that,
I'm
just
not
getting
to
it.
That
would
boost
your
popularity
in
like
amazing.
I.
A
That
was
actually
that
was
one
of
my
questions.
I
wanted
to
ask
you,
so
what
would
you
do
if
somebody
would
just
you
know,
step
in
and
sponsor
your
work
on
this
project?
Let's
say:
give
you
some
money,
so
you
can
spend
like
I
don't
know,
10
hours
every
month
on
this
project,
to
maintain
it
some
some
companies
do
that.
You
know
some
big
companies,
they
sponsor
open
source
project.
My
question
is:
what
would
you
do
in
this
10
hours
every
month.
B
How
would
you
okay,
so
the
the
nearest
plan
is
that
I
have
to
finish
what
I'm
doing
right
now
and
that
is
work
with
deeply
nested
data
structures.
A
Me
let
me
let
me
rephrase,
let
me
rephrase
my
question.
The
company
will
step
in
and
say,
okay,
we're
gonna,
sponsor
you
for
like
10
hours
of
a
week
or
10
hours
and
months.
I
don't
know
how
much
time
exactly,
but
we
would
like
to
see
right
now.
You
have
900
stars
on
github.
We
would
like
to
see
5
000
stars
in
a
year.
B
B
My
answer
to
that
would
probably
be
well
guys
if
you
want
to
be
like
cost
effective
hire
a
marketing
person
instead,
I
I
think
that
that.
B
Well,
there
are
some
dev
rail
guys
and
what
not,
I
think
there
should
be
people
out
there.
Who
can?
Who
can't
do
this?
I
mean
you
think
it
makes
sense.
A
I
think
it
depends.
You
told
us,
you,
you
told
it
yourself.
You
said
it
yourself
that
you,
you
got
some
hounds
on
hacker
news
on
the
top
page,
probably,
and
that's
how
you
got
300
stars.
So
no
marketing
person
can
do
that,
for
you
only.
You
know
how
to
structure
your
product
repository
so
that
other
programmers
will
give
you
the
stars,
because
we're
talking
about
not
like
promotion
on
youtube,
we're
talking
about
programmers
who
will
actually
get
your
product
and
use
your
product.
So
I
don't
think
any
marketing
money
will
help.
A
In
this
case
we
can,
we
can
sponsor.
I
don't
know
we
can
pay
for
a
lot
of
promotion
on
twitter
and
on
youtube,
but
that
will
give
you
zero
result
on
github
on
github.
Only
programmers
give
you
star,
so
you
need
to
do
something
with
the
product,
for
example,
make
it
available
on
ubuntu
available
on
the
centos.
B
That
would
be
good.
That's
that's
also
possible.
I
actually
got
this
feedback
from
my
friend
too,
which
is
you
know
he
wants
to
get
into
and
then
he
says
well
each
time.
I
just
think
about
this
and
I
don't
have
apps
installed
yeah.
B
A
Things
so
think
about
other
things,
like
many
many
other
things
like
10
things,
20
things
which,
which
you
will
go
through
during
the
year.
If
somebody
would
help
you
out,
because
the
project
is,
it
looks
popularity
wise.
It
looks
like
on
the
edge,
so
it's
not
young
anymore.
It's
not
small,
it's
not
like
50
stars
and
it's
not
mature
enough.
So
it's
not
like
5
000
stars,
so
how
to
jump
from
this
point
to
5
000.
That's
a
very
tricky
question:
you
can
you
can
stay
where
you
are
forever
and
that's
it.
A
The
project
will
be
dead
or
you
can
make
this
move
and
if
you
go
to
5000,
then
you
will
be
something
comparable
to
you
know
popular
tools
for
devops,
so
really
like
people
who
use
who
need
tools
like
that
from
big
companies
from
google
from
amazon.
They
will
look
at
you
and
think.
Okay,
it's
pretty
pretty
mature
5000
stars.
So
we
can
trust
this
product.
Okay,
we
can
use
it
for
our
own
purposes
and
then
maybe
eventually,
amazon
one
day
will
say
you
know
we
recommend
this
language
for
the
scripts.
A
You
write
for
cloud
formation
or
something
so
your
language
may
become
like
google.
You
know
picked
kotlin
one
day
because
kotlin
was
mature
enough,
so
called
so.
You
know
the
story.
So
google
said
okay,
this
is
the
language
you
recommend
for
android
applications.
So
one
day,
maybe
amazon
will
step
in
and
say
we
recommend
this
language
because
it's
pretty
mature,
it's
good
enough,
they're
full
documentation.
It's
well
maintained.
We
have
a
team
which
supports
it,
so
we
recommend
it
and
then
at
that
point
you
will
get
from
5
000
stars
to
25
000
stars.
B
And
then
I
see
what
it
means
I
I
think
I
would
agree
on
on
the
packaging
thingy.
That
is
important.
What
else
I
don't
know,
I'm
so,
okay
think
about
it.
A
For
a
moment,
I'll
ask
my
next
question:
I
see
that
it's
written
in
c
language.
Is
it
right?
Yes,
so
how
did
you
so?
First
of
all,
it
was
javascript.
As
I
understand,
then
you
move
to
lisp.
If
I
got
you.
B
Yeah
and
yeah,
so
the
reasoning
behind
lisp
was
as
follows.
This
was
very
interesting
for
me
as.
B
So,
and
I
think,
though,
that
was
an
opportunity,
but
that's
from
like
my
personal
perspective,
so
the
practical
reasoning
behind
lisp
was,
as
such,
lisps
have
compilers
and
by
the
nature
of
this
of
the
language
of
lisp.
The
compiler
must
be
available
at
runtime,
so
I
was
thinking
okay
ngs
runs,
then
I
have
some
program
in
the
gs
I
compile
it
at
runtime
to
lisp
and
then
lisp
compiler
compiles
it
into
a
machine
code
at
runtime
and
it
runs
fast
so
and
I
hit
two
very
big
problems
with
that.
B
B
B
Okay,
so
in
lisp
I
couldn't
figure
out
how
to
do
the
stack
trace
without
eating
50
of
the
cpu,
and
that
is
also
unacceptable
performance
hit,
and
at
that
point
I
thought:
okay,
guys,
okay,
so
if
I
even
solve
both
of
these
problems,
somehow
I'm
so
afraid
that
I
will
be
hitting
some
walls
sometime
that
I
don't.
I
just
don't
want
it,
and
I
looked
at
bosch,
ruby
and
python.
B
Well,
they
were
all
in
c
and
I
thought
okay
in
c
I
will
never
be
stuck,
and
I
also
have
like
some
other
places
to
look
when
you
know
something
happens.
I
can
look
how
they
did
it,
which
is
interesting
enough.
Like
almost
did
not
happen,
it's
like
never
happened
that
I
actually
copy
pasted
something
from
there.
I
I
looked
at
them,
but
it
was
for
general
ideas
much
more
than
you
know,
copy
paste
or
something
like
that.
B
So
yeah
it's
in
c,
but
the
part
which
is
in
cngs
I
intentionally
keep
it
very
small,
so
c
exposes
some
interfaces
into
the
language
and
then
the
standard
library
which
you
can
show
in
a
moment
does
all
the
rest.
So
standard
library
has
a
lot
of
functionality.
It
is
now
what
let's
see.
B
A
B
B
Let's
see,
no,
that's
not.
I
meant
x,
arcs,
yeah,
seven,
eight
k
lines,
vm
yeah
vm
is
the
most
of
the
thing.
Vm
is
actually
the
runtime
it
has.
The
vm
itself
is
a
byte
code
and
it
also
has
all
these
c
functions
which
are
exposed
into
the
language.
So
that's
around
5k.
B
B
Mostly
on
the
language
itself,
which
is
an
ngs
yeah,
let's
see
how
much
ngs
code
I
have
for
a
moment:
okay,
17k
in
njs
of
different
yeah.
I
have
a
ws
library
here
which
is
kind
of
an
interesting
experiment,
yeah
and
second
version
of
that
library.
That's
another
2k
lines,
but
the
standard
library.
That's
that's
where
the
biggest
chunk
of
the
code
goes.
A
So
you
wrote
a
lot
of
code
in
your
language.
Yes,.
B
So
if,
at
any
point
in
time,
I
would
like
to
rewrite
the
c
part
into
something
else,
it
should
be
a
relatively
small
effort
well,
relatively
by
the
way.
Regarding
effort.
What
saved
me
a
bunch
of
effort
is
this
two
libraries
which
I
haven't
seen?
One
of
them,
as
we
discussed,
is
for
syntax
and
the
other
one
is
garbage
collector.
B
So
many
people
don't
know
but
c
has
run
time.
Garbage
collection
is
just
a
library,
you
take
it
and
you
use
instead
of
malloc
function,
you
use
whatever
they
provide,
and
you
just
don't
need
the
free
function
and
you're
good,
and
I
think
that
it
would
probably
roughly
the
same
amount
of
effort
as
the
language
itself.
I
I
looked
into
this
garbage
collection
library.
It's
a
lot
of
effort.
B
B
B
It
doesn't
matter
where
they
are,
but
you
know
from
the
convenience
perspective,
they
come
after
the
function
which
they
test.
So
I
have
well,
you
can
see
420
matches.
I
think
I
have
more
tests
than
that.
I'll
be
is
because
there
are
other
files
too
yeah.
So
they're
like
about
six
or
seven
hundred
small
tests
and
well,
it
proved
to
be
very
useful
because
I
frequently
change
something
and
then
I
see
oh,
I
broke
it
and
then
the
test
catches
it.
So
it
was
good
investment
of
my
time.
B
B
Old,
yes,
and
what's
interesting-
actually
I
I
think
was
thinking
lately.
One
of
my
first
articles
was
what's
wrong
with
http
and
you
know
over
time
it's
actually
proved
to
be
kind
of
correct,
because
one
of
the
things
that
I
claimed
about
http.
Well,
it's
textual
format.
But
actually
what
is
you
know?
The
typical
use
case
is
actually
machine
is
parsing,
it
not
human.
So
why
do
it
text?
B
B
Yes
and
it's
it's
mostly
because
the
product
solves
my
frustration
and
I
write
the
blog
about
my
frustrations,
so
it's
kind
of
matches.
B
B
B
A
B
Infrequently,
yes,
it's
mostly
actually,
I
keep
track
of
what
I'm
working
on
in
the
issues
tracker
on
github.
Sometimes
I
submit
bugs
because
I
just
hit
some
cases.
So
what
was
the
question
again?
I
just
I.
A
And
how
you
combine
this
with
your
work,
where
you
make
money,
because
here
I
understand
you
spend
money,
spend
time,
but
how
you?
Yes,
because
most
people
who
watch
us
right
now
they
don't
have
their
own
open
source
project,
or
maybe
they
have
a
very
small
one.
You
have
pretty
big
one
and
you
do
it
for
many
years
and
somehow
you
find
time
for
this,
even
though
you're
working
in
you
know
making
money
and
in
some
in
some
commercial
projects.
So
my
question
is:
how
can
you
do
that?
At
the
same
time,.
B
I
think
persistence
is
the
recipe
here,
I'm
working
on
this
consistently
for
years.
Just
most
of
my
free
time
goes
into
this
project.
You
just.
A
B
It
is
somewhat
enjoyable,
but
it
certainly
didn't
start
from
the
point.
Oh,
I
want
to
make
my
own
language.
No,
it
started.
Oh,
this
is
all
of
this.
It's
such
crap
by
the
way,
I
also
feel
that
all
languages
are
crap,
including
my
including
this
language,
and
how
this
language
is
maybe
better,
because
it's
focused
on
the
use
cases,
and
I
am
not
unable
to
get
out
of
this
box
thinking
that
all
the
languages
are
in
and
we
are
just
as
humanity.
We
are
not
there.
B
Yet
we
don't
understand
programming,
we
don't
know
how
to
do
it
right.
We
are
in
deep
with
programming.
Okay,
it
is
such
a
crap
all
over
okay
and
I'm
just
trying
to
to
suffer
less
when
I
do
my
job
my
day
job,
so
I
use
ngs
where
in
places
where
I
can
and
have
less
pain
over
there,
that's
pretty
much
it.
It
is
interesting
from
the
technical
perspective,
but
let's
say
if
there
was
a
language
if
there
was
already
language
which
would
solve
my
problems
in
in
in
a
convenient
manner.
B
B
So
there
are
quite
a
bunch
of
other
shells
which
are
modern,
but
they
solve
the
problem
very
differently
from
me,
and
I
think
that
the
distinction
you
know
if,
if
you
wanted
to
put
it
in
a
few
words
ngs
is
a
programming
language
first,
as
opposed
to
other
solutions
which
are
shell
first
and
the
focus
on
the
ui
and
the
user
experience
when
you
are
in
the
shell
itself,
and
I
started
with
the
language
first
and
that's
because
I
think
that
the
cli
should
be
in
the
language
itself.
A
B
Think
I'll
be
on
this
one
I
mean
from
my
perspective,
even
if
nobody
else
uses
it.
It
would
be
sad,
but
it
does
solve
my
problems
and
I
suffer
less
when
I
use
it.
So
that's
already
good
cool.
B
B
That
other
people
that
have
the
same
problems
as
I
have
might
find
this
convenient
or
maybe
productive.
A
Okay,
cool
and
thanks
for
the
talk,
I
think
we
are
covered
most
of
the
topics,
and
I
wish
you
all
the
best
in
the
project.
We
will
definitely
take
a
look
at.
I
mean,
keep
an
eye
on
your
project
and
maybe
we'll
see
some
areas
of
cooperation
in
the
future.
B
Bye-Bye,
it
was
a
pleasure
to
be
here
bye-bye.