00:00:00
all right so I guess we should should
00:00:02
should we start our first little talk
00:00:03
here yeah cuz I like I said I don't know
00:00:05
how long these are going to go and the
00:00:07
Fortran thing might be one of those ones
00:00:09
that takes us like an hour and a half or
00:00:11
something so we might want to do it as a
00:00:12
separate thing I don't know so I wanted
00:00:14
to you you sounded like you were having
00:00:16
like an existential crisis or something
00:00:18
the way you described it in the Twitter
00:00:20
message you know what I mean I I I am
00:00:22
crisis right now which is that okay so
00:00:25
I'm G I'm going to I'm going to give you
00:00:26
some facts here K yeah I I felt like
00:00:29
this was important like this was this
00:00:30
was like an emotional like uh this was
00:00:34
we need to do emotional processing you
00:00:35
know like we need to we need to you know
00:00:38
you know it's it's still guy stuff you
00:00:39
know I mean I'm not not say you know but
00:00:41
but it's some emotional processing here
00:00:43
I I I'm not afraid of a little emotional
00:00:45
processing you know yeah we I'm
00:00:47
comfortable with my masculinity and we
00:00:48
need to process some emotions right now
00:00:50
okay so I I'm going to tell you my
00:00:52
problem here okay it's that often when
00:00:55
I'm building things I build things such
00:00:58
that I have to do several rounds trips
00:01:00
to various internet
00:01:02
services so okay you know like having to
00:01:05
aggregate a bunch of twitch chat
00:01:06
together say record my audio put those
00:01:10
together decode audio via a whisper take
00:01:14
twitch chat and get you know chat jippy
00:01:16
to start kind of organizing it like this
00:01:18
is one thing I'm building right now and
00:01:19
then combining those two results to turn
00:01:21
like to to distill it into a final voice
00:01:24
reading that's going to be chat jippy
00:01:27
reacting based on what I said and how
00:01:29
twitch chat felt about it and so it's
00:01:31
like whenever and you know a lot of
00:01:32
projects are going to kind of fall under
00:01:34
this this type of scope which is just
00:01:36
like a lot of just asynchronous
00:01:37
requesting type stuff and so I want to
00:01:40
pick a new language of the Year
00:01:43
2025 okay uh I did rust for two years I
00:01:46
did go for one year I made a video about
00:01:49
how I think I will never program rust
00:01:50
again uh people hated that uh but you
00:01:54
know really my my whole reason is just
00:01:55
like I just don't like programming in
00:01:57
Rust like that's it you know all
00:01:59
technicalities side when I see really
00:02:00
nice rust I go wow that's really nice
00:02:02
that's like really cool like I love what
00:02:03
you can do in it I don't want to do it
00:02:05
uh and so I'm trying to think about this
00:02:07
thing and it's just it feels like I'm in
00:02:08
emotional crisis mode because it's like
00:02:10
do I continue with go which is just not
00:02:13
that great of a language like by all
00:02:15
objective measures go is not fantastic
00:02:17
it has just lots of like foot guns but
00:02:20
it's extremely productive language and
00:02:22
you can effectively build anything you
00:02:24
want in it uh very easily especially if
00:02:26
you have to go like if you need to go
00:02:27
listen to two things at once for a short
00:02:29
period time and then come back green
00:02:31
threads are fantastic right because
00:02:33
you're just like go do your thing and
00:02:34
then when I say you're done you're done
00:02:35
and we come back and we're all fantastic
00:02:37
you know it just feels really easy and
00:02:39
so I love I love the experience of a
00:02:41
runtime because they just make that type
00:02:44
of behavior super simple and so it's
00:02:46
like do I continue with go or do I
00:02:48
explore a language that isn't go and I
00:02:51
kind of feel like I need to master one
00:02:53
metaprogramming language experience like
00:02:55
I need to actually become good at macros
00:02:58
of some sort and so I've kind of been
00:03:01
narrowing down Zig as the option because
00:03:03
its macro system is comp time which
00:03:05
means it's just Zig that's executed at
00:03:07
compile time to produce Zig so it's not
00:03:09
like some you know it's not like uh
00:03:11
what's called c-based pre-processor
00:03:13
macros so it's not like a separate
00:03:14
language you're learning or it's not
00:03:15
like rusts two different macro systems
00:03:17
both declarative and procedural right
00:03:19
it's it's just one it's just Zig so it's
00:03:22
just Zig that makes Zig if you want to
00:03:24
go down the comp time so you actually
00:03:25
program something that looks like
00:03:26
reflection and then it compiles that
00:03:29
from refle C just generates the 3 10 18
00:03:31
functions that you actually used by
00:03:33
calling a bunch of times so it's a very
00:03:36
interesting and compelling thing also
00:03:37
Oden uh I think Ginger Bill's here I
00:03:39
think I saw Ginger bill in the chat
00:03:41
several times Ginger Bill awesome guy
00:03:43
and so Odin also I believe has
00:03:45
metaprogramming as well sounds very
00:03:46
exciting Elixir has metaprogramming as
00:03:48
well uh all sound really really good and
00:03:50
so I'm kind of just stuck in this idea
00:03:52
of what what do I choose to Specialty in
00:03:54
because I was going a specialty in Rust
00:03:56
but I I just found myself getting
00:03:58
progressively more frustrated with it
00:03:59
and I just feel like I'm in a free fall
00:04:01
emotionally because go is not a a deep
00:04:04
language go is a language you can learn
00:04:05
in a a couple weeks and be productive
00:04:08
really really fast I just kind of miss
00:04:10
you know Miss the days of something that
00:04:11
has a little bit more depth to
00:04:14
it so I guess what I would say uh
00:04:19
is my meta feedback on that is it's
00:04:21
unfortunate that you have to be choosing
00:04:23
this now and the reason that I say that
00:04:26
is because I feel like now is not a
00:04:28
fantastic time to have have to be
00:04:30
choosing a language because you know
00:04:32
from my perspective I feel like actually
00:04:36
getting proficient in a language takes
00:04:38
quite some time learning a language is
00:04:40
not so hard you could do that in an
00:04:42
afternoon depending on the language but
00:04:44
actually learning how to program that
00:04:46
language well takes quite a bit of time
00:04:49
and that's especially true I think the
00:04:51
better the better programmer you are the
00:04:54
more true that is because most resources
00:04:57
made in most programming languages by
00:04:59
most people will be mid that's just how
00:05:02
it is that's te so what you will see
00:05:05
yeah what you will see when you go look
00:05:06
up how to do something in rust or
00:05:09
whatever is going to be the mid version
00:05:11
of that thing and so usually if you're
00:05:15
if you're a good programmer you're even
00:05:17
at a bigger disadvantage because it
00:05:19
means oh if I learn to program rust and
00:05:22
I want to do rust or whatever I'm also
00:05:25
now going to have to spend the time of
00:05:28
being sort of an innovator to figure out
00:05:31
what are the great ways to do these
00:05:32
kinds of things in Rust because probably
00:05:34
people haven't actually figured that out
00:05:36
yet right um and so there's a lot of
00:05:40
that kind of thing which is really a
00:05:42
problem for uh you know looking at a
00:05:46
language like I'm gonna this is going to
00:05:47
be a big investment right and right now
00:05:50
there are so many of these new really
00:05:53
Qui sorry what can I rephrase it really
00:05:55
quickly what you're what what you're
00:05:56
saying just so I understand this
00:05:58
correctly is that
00:06:00
uh obviously syntactical learning is
00:06:01
very very simple uh when you use go for
00:06:03
the first time say you're coming from
00:06:05
JavaScript it's very very simple or
00:06:06
you're going from rust from Zig to go or
00:06:08
any of these language transitions you
00:06:10
try to use the you try to use that
00:06:12
language the way you're used to using a
00:06:14
language and then you find out that you
00:06:15
just run into a lot of problems so what
00:06:17
you're trying to say is that experience
00:06:19
obviously the the harder a language or
00:06:20
the more deep a language is the more
00:06:22
experience it takes to really be fully
00:06:24
good at that
00:06:26
language and also the better you wish to
00:06:29
be I guess the other part there's more
00:06:31
opportunity for being good at the
00:06:32
language like i' I can't really get much
00:06:34
better at go because there's not
00:06:36
anything I can really be good at it's
00:06:38
just procedural it's like dude I could
00:06:40
if and for and go like that true right
00:06:43
but even if you take a thing like uh you
00:06:45
know if you take Assembly Language right
00:06:47
which is the most procedural thing
00:06:49
there's nothing in it right there is you
00:06:51
can use a macro assembler hopefully you
00:06:53
will right but it's not that uh powerful
00:06:56
otherwise it's like you could still you
00:06:58
could spend a decade becoming a good
00:07:00
Assembly Language programmer learning
00:07:02
all of the ways to do things right uh
00:07:05
and so some of that translates language
00:07:07
to language some of it doesn't and to
00:07:10
your point the more complicated the
00:07:13
language is in terms of features that it
00:07:15
offers you the more space there is to
00:07:18
explore there the more possibility that
00:07:20
something you haven't tried playing
00:07:21
around with yet if you got good at it
00:07:24
would be a better way to do whatever
00:07:26
you're doing than what you were
00:07:27
currently doing so it just compounds
00:07:30
and so part of the thing that I think is
00:07:33
really bad about choosing a language
00:07:35
currently is that there's so much new
00:07:38
language development going on right now
00:07:39
which is good for the future like that's
00:07:41
not a bad thing but it means that it's
00:07:46
not a great time to make that choice you
00:07:49
don't really know where all these
00:07:51
languages are going you don't really
00:07:53
know how good the tooling will be for
00:07:54
each of them in the future you don't
00:07:56
know how widely they'll be adopted or if
00:07:58
they'll be abandoned or whatever else
00:08:00
right and you end up in this situation
00:08:03
where you are sort of taking on an
00:08:06
additional burden that you won't be 10
00:08:09
years from now right you are you are one
00:08:12
of the people doing the work of
00:08:15
determining which of these languages is
00:08:16
good and which of these languages Will
00:08:18
Survive that's extra work which maybe is
00:08:21
fine and maybe you want to do it but I
00:08:23
just wanted to say before we start
00:08:24
talking about this like a meta point
00:08:26
which is just one of the reasons I
00:08:28
haven't really been doing anything in
00:08:30
these languages or experimenting with
00:08:31
them is because I'm just like I don't
00:08:34
feel like I really want to spend that
00:08:36
time now I would rather let this shake
00:08:39
out more and look at it five years from
00:08:41
now and then be like okay which language
00:08:44
am I going to switch to because I only
00:08:45
want to switch once away from you know C
00:08:48
assuming these languages are better
00:08:50
enough I don't want to be switching
00:08:52
every well as you say you're you're
00:08:54
tired of it probably right yeah yeah
00:08:56
because I I I did you know a decade plus
00:08:59
of having to build a lot of web apps and
00:09:01
so a lot of JavaScript Java C++ that
00:09:04
kind of stuff and so it's like I I want
00:09:05
I just want to a freshen up that's why
00:09:07
the whole go rust Zig thing is is just
00:09:09
like looking to the Future what is going
00:09:10
to be a very amazing experience and
00:09:13
obviously go very great one to have in
00:09:14
your tool bag but I don't think you need
00:09:16
I don't think you need an aggressively
00:09:18
large amount of experience to be pretty
00:09:20
dang good at it so I'm like okay so this
00:09:22
one is one that I can just always have
00:09:23
available I need to build an
00:09:24
asynchronous service bing boom boom boom
00:09:26
boom I got it down like I'll just throw
00:09:28
go in there and so I kind of I'm looking
00:09:30
for that a nice kind of like the the
00:09:32
fast the high-end language if you will
00:09:34
the the Porsche of languages and I don't
00:09:36
want to do C++
00:09:38
again yeah well that C++ is a terrible
00:09:41
language obviously and I would never
00:09:44
recommend anyone use it for anything
00:09:46
right like like c i I think is kind of
00:09:50
remarkable and that you can still be
00:09:51
very productive in C to this day uh C++
00:09:54
I will never understand the people who
00:09:56
defend it I really don't I'm sorry
00:09:57
everyone out there I know there's people
00:09:59
who will be so sad and mad at me for
00:10:02
saying this but I literally will never
00:10:04
understand why anyone likes that
00:10:06
language it is so bad it just has it it
00:10:11
has so many features and all of them are
00:10:14
bad like they all don't quite do what
00:10:17
you actually need them to do and and
00:10:19
it's almost like a head scratcher like
00:10:20
how did you manage to add this many
00:10:23
things to the language and 99% of them
00:10:27
are critically broken it's almost like a
00:10:28
winning streak or well I guess it's a
00:10:31
losing streak an unbroken and and uh a
00:10:34
Guinness record long language losing
00:10:36
streak that they've been having for 30
00:10:38
years and they just show no signs of
00:10:40
breaking and I'm just like that's
00:10:41
remarkable so uh so yeah no I am 100% in
00:10:45
support of just like I think people see
00:10:47
an assembly language are two things I
00:10:49
think everyone should learn uh Assembly
00:10:51
Language not to write but just to read
00:10:54
and see to write because I think it's
00:10:56
sort of a mother language at this point
00:10:57
it's just good and it's not hard right
00:10:59
there's not a lot to see uh you can
00:11:01
learn it quickly I think those are good
00:11:03
languages to know but C++ is just it's
00:11:05
useless so I also have a r that if you
00:11:07
can't read the standard Library I have a
00:11:10
I I'm highly suspicious of the language
00:11:13
like that's just one of my things is
00:11:14
that if I go to definition and I can't
00:11:16
just go oh yeah there's some things I
00:11:18
will never understand about like extra
00:11:20
you know like you know whatever they put
00:11:22
those things up directives on the top of
00:11:23
stuff that are just like you know
00:11:25
they're highly optimized I get it I
00:11:26
won't understand all the things but this
00:11:28
is insane like when you look at the
00:11:30
standard definition of anything inside
00:11:31
C++ it's like I cannot read this code I
00:11:34
don't know what's happening or why it's
00:11:36
happening but it's actually just it's
00:11:39
Bonkers so
00:11:41
uh I guess what I would say is from your
00:11:44
perspective then you're saying I just
00:11:46
want to make sure I got this right so
00:11:49
from your perspective you are like I
00:11:52
need to choose a language for next year
00:11:54
so so I don't I don't have the luxury of
00:11:56
waiting around or just being a diletant
00:11:59
in a few languages for year it's like I
00:12:01
I want to actually pick a language for
00:12:03
next year this is a requirement and I'm
00:12:05
going to program fairly seriously in
00:12:06
that language and that's just what's
00:12:08
happening so the hand is forced let me
00:12:11
let me say it this way is that due to my
00:12:13
quote unquote content creation status I
00:12:15
want to investigate a language in a more
00:12:17
thorough Manner and then okay kind of
00:12:20
explain how how it makes me feel at the
00:12:22
end of the whole thing you know like I
00:12:23
did like I said I did multiple years in
00:12:24
Rust and then quit it for a while and
00:12:27
then went back and went yeah I really I
00:12:28
still feel like I don't think this is
00:12:31
just like I'm sure there's a great use
00:12:32
case for rust that that does exist
00:12:34
that's just absolutely phenomenal and
00:12:35
I'm sure a lot of things with the
00:12:36
operating systems and security and all
00:12:38
that probably wen't having such a harder
00:12:40
language maybe uh you could probably
00:12:42
convince me or sell me on those kind of
00:12:43
things I'm just saying hey you can sell
00:12:45
me on memory safety on these kind of
00:12:46
things but it's just like it's just
00:12:48
something I find zero joy in and I think
00:12:51
that's a very important part of
00:12:52
programming is also just liking the
00:12:54
thing itself and so it's like okay
00:12:56
there's there's something there I just
00:12:57
like go I think it's a I think it's like
00:13:00
the worst language ever but I'm like I
00:13:02
actually kind of like I like it you know
00:13:04
it's like my boy go yeah he's like a
00:13:06
little deficient but you know it's good
00:13:08
uh you know even JavaScript I hate the
00:13:10
language but I'm like you know you can
00:13:11
get a lot of stuff done in
00:13:13
JavaScript well that was part of the
00:13:15
thing I was going to ask too about that
00:13:17
is that like one of the problems with a
00:13:19
lot of these new languages is their you
00:13:22
know their use cases are not your use
00:13:25
case either right like yeah most of what
00:13:27
the people who are working on these
00:13:28
langu angues are thinking about is not
00:13:31
how do I aggregate a bunch of web
00:13:33
services together to do stuff which is
00:13:35
what you're saying is going to be a core
00:13:37
requirement and so I mean I'm sure they
00:13:40
all have you know curl equivalent crap
00:13:43
in them right and presumably a Json
00:13:45
parser or something but yeah I guess
00:13:48
yeah I mean will they will they be as
00:13:51
good as go for that kind of thing and
00:13:53
the answer is like uh that part I don't
00:13:55
really know because maybe they are you
00:13:58
know maybe
00:13:59
but maybe they're not because go that's
00:14:01
all they were doing with that you know I
00:14:03
mean like that seems like all it's for
00:14:05
right yeah um so I do think that part is
00:14:09
a risk and maybe one thing you could do
00:14:10
is check out uh that part maybe do a
00:14:14
little round robin of like how good is
00:14:16
the web services part of these languages
00:14:19
like how much it's not really a language
00:14:21
thing so much but like the standard
00:14:23
library or what libraries are available
00:14:25
uh do those look robust enough or am I
00:14:28
going to spend you know is your whole
00:14:29
next year going to be like I had to
00:14:31
write rewrite the https layer for you
00:14:34
know whatever the languages I picked
00:14:36
that's not going to be a fun time I mean
00:14:38
maybe it is but you know it's that's a
00:14:40
that's a thing the other thing I was
00:14:42
going to mention is uh if if meta
00:14:44
programming is something that interests
00:14:45
you unfortunately that does mean
00:14:47
probably get on the J beta I mean
00:14:49
they've had the most uh impressive
00:14:51
metaprogramming stuff I've seen
00:14:53
consistently by far uh and so it feels
00:14:56
like if metaprogramming is your thing
00:14:58
you're going to want J that's kind of
00:15:00
just how it is so I don't know we that
00:15:03
that might be what you would want I
00:15:05
don't know I did I did TW I I did make
00:15:07
some tweets about kind of just like this
00:15:09
language conundrum I'm in and J blow did
00:15:12
send me an email saying if I want in I
00:15:14
can get in he just he just wants to make
00:15:16
sure it's somebody that's going to use
00:15:17
the language that gets in and so it's
00:15:19
like I want to use it but I know it's
00:15:20
also very game oriented and so I also
00:15:22
want to make sure it's it's it's a
00:15:24
language that I I I mean I do actually
00:15:26
want to write some some games this year
00:15:27
like that would be the whole point is to
00:15:28
try to figure out something really wild
00:15:30
to write in it and uh and so maybe like
00:15:33
maybe that is a good one so that they
00:15:34
have a really good
00:15:36
metaprogramming side to it I mean a at
00:15:39
the risk of of uh pissing off some
00:15:42
people who will probably complain about
00:15:44
like no Nim had it or something like
00:15:46
there there's people who will get mad at
00:15:47
me saying this but basically as far as
00:15:50
I'm concerned ji basically like John
00:15:53
invented modern Med programming like the
00:15:55
system he designed is what most
00:15:59
languages now have a not as good copy of
00:16:02
uh so basically like you know and that
00:16:05
includes c++'s like they have like
00:16:07
Circle and those sorts of things that
00:16:08
they were doing but like John was kind
00:16:10
of a Trailblazer there going like how do
00:16:12
we actually make it so that this works
00:16:14
robustly so that you can actually have
00:16:17
you know recursive metaprogramming
00:16:19
happening so your meta programs can you
00:16:20
know uh continue to generate things
00:16:23
which then feed back into the language
00:16:24
properly and all that sort of stuff uh
00:16:27
and it was really impressive of what he
00:16:29
did and so he was kind of first out of
00:16:31
that and I have not seen anyone take it
00:16:33
as seriously as he's taken it still uh
00:16:37
which is not to be a knock on the other
00:16:39
languages that have it uh because I
00:16:42
think it's good for languages to have
00:16:44
these things but if you're talking about
00:16:47
metaprogramming I still have not seen
00:16:48
anyone take it as seriously as ji has
00:16:50
it's a very powerful metaprogramming
00:16:53
system uh and you
00:16:56
know that's probably where you would
00:16:58
want to if that's what you were looking
00:17:00
at right yeah cuz that's kind of one of
00:17:01
my things is I want a I want a language
00:17:03
that could be very useful in the next 10
00:17:05
years and I also want
00:17:08
metaprogramming I I would I would try it
00:17:11
I would try it uh and I think one
00:17:13
another reason that that might be good
00:17:16
is because uh it might be nice for them
00:17:19
to get feedback on web use cases more uh
00:17:23
because you know that it is true that
00:17:25
like I said I think a lot of these
00:17:27
languages are not super Webby and uh so
00:17:31
I know there are web people who are
00:17:33
using J in that beta uh but yeah I don't
00:17:37
know and I guess the same would go for
00:17:39
you had mentioned Odin and ginger billis
00:17:41
here I don't know how much testing they
00:17:43
get of that sort of thing I mean you can
00:17:45
look Odin has some pretty cool stuff
00:17:47
written in it like that embergen thing
00:17:49
that was sort of its original uh project
00:17:51
looks awesome right it's very
00:17:54
professional uh and uh you know so I
00:17:58
feel like
00:17:59
there's very clear demonstrations that
00:18:01
these languages are can be
00:18:03
made good things can be made in some of
00:18:06
these languages and I've seen examples
00:18:07
of that right I don't actually know very
00:18:10
much though about that web part like I
00:18:12
don't know how many people are doing
00:18:13
things like hey I I need to integrate
00:18:15
twitch chat and ping and this and that
00:18:17
and I'm going to pull them all together
00:18:19
to do this thing I don't know how much
00:18:21
any of these languages have really had
00:18:23
that uh be pushed yeah right yeah so I
00:18:28
think think that's that that's probably
00:18:30
fair in any of these and I also know
00:18:31
that I'm slightly barking up the wrong
00:18:33
tree it's just that I I like this tree
00:18:35
particular cuz I did you know one of my
00:18:37
early times in programming my first
00:18:39
couple years were spent programming C
00:18:42
and I just really enjoyed that time I
00:18:44
always enjoyed the experience of
00:18:45
programming C even though it was It was
00:18:47
obviously very easy to feel confident
00:18:50
and then to unfe confident and realize
00:18:53
you know nothing often uh as simple as
00:18:56
the language was it was also extremely
00:18:58
difficult and so it's just it was a very
00:19:00
I I always enjoyed that and I always
00:19:02
kind of looked back on that as like a
00:19:03
really great time and so I've been
00:19:05
wanting to kind of find the next one
00:19:06
where I can really do that and I was
00:19:07
really hoping rust honestly I just
00:19:09
really hoped that rust was going to be
00:19:10
that and then I just realized I just did
00:19:12
not it just it was not that and so I I
00:19:15
talked to Ginger too and he he of course
00:19:17
as people tell me he's the N he's the
00:19:19
first person to tell you you shouldn't
00:19:21
use his language because it doesn't
00:19:23
quite meet H his like high expectation
00:19:25
of exactly what should be done for you
00:19:27
and so he's always like well the HP
00:19:29
stuff is not quite 100% ready you still
00:19:30
have to use third party module so I
00:19:32
don't think you should use it because we
00:19:33
don't we haven't we haven't adopted the
00:19:34
official you know on brand HTP stuff and
00:19:37
so it's just like well okay maybe maybe
00:19:39
I hear you but you know that's also good
00:19:42
that there's third party stuff like
00:19:43
third party is not a bad you know is is
00:19:45
a good sign as well well I I actually
00:19:48
really appreciate that approach uh
00:19:50
Bill's approach is very refreshing right
00:19:52
and it makes it easy to support his
00:19:54
language too because you don't
00:19:56
constantly have 800,000 Odin people in
00:19:59
your feed complaining that you didn't
00:20:01
use Odin because they just took a nice
00:20:03
approach which is like we're not going
00:20:04
to oversell this like we're going to
00:20:06
keep working on it and right I hate the
00:20:08
overselling overselling uh the reason I
00:20:11
hate it so much is because it's where
00:20:13
C++ came from C++ was basically a
00:20:17
language where you know you had a guy
00:20:20
Barna St strip who is very motivated to
00:20:23
have his language be adopted to the
00:20:26
point where there are actually anecdotes
00:20:28
of like some of the people originally
00:20:30
involved in working on
00:20:32
C back at Bell Labs were like you know
00:20:35
we don't think this is very good there's
00:20:37
a bunch of things about this that you
00:20:38
wouldn't and he was like angry with them
00:20:41
and it's like this will hurt the
00:20:42
adoption of C++ if you say these things
00:20:44
like don't say these things right having
00:20:46
adoption as a goal and pushing adoption
00:20:49
while that may be necessary at some
00:20:51
point when your language is really good
00:20:54
doing it early is how we got C++ and and
00:20:58
that's just bad like stop overselling
00:21:00
and and so when I hear if I hear a
00:21:01
language designer out there or members
00:21:04
of a language Community pushing
00:21:06
something and I've looked at that
00:21:07
language and I know it's not very good
00:21:09
yet right I get pretty grumpy about that
00:21:12
and I I kind of understand why they're
00:21:13
doing it because I know that you know
00:21:15
sometimes you need momentum for this
00:21:16
project if you're relying on like open-
00:21:18
Source contributions or something you
00:21:20
need to get people involved in it or it
00:21:21
won't go but at the same time it's like
00:21:25
that is a very bad thing because when
00:21:27
you prioritize adoption like that what
00:21:29
you'll probably end up with is a bad
00:21:31
language that is widely used that's what
00:21:33
we got with C++ and that was really bad
00:21:35
and so uh I like the approach that that
00:21:38
bill took with Odin of not pushing it
00:21:40
aggressively not overselling it not
00:21:42
going out there and just saying whatever
00:21:44
it takes to try and get people to use it
00:21:46
and also not being delusional about the
00:21:47
language I've seen a lot of that where
00:21:49
people make claims about a language that
00:21:51
aren't true because they're overzealous
00:21:53
about it and that's bad too ji same
00:21:56
thing John was like this is staying
00:21:57
closed do for a while we're doing beta
00:21:59
for a while until I am sure that this is
00:22:02
good and solid because it's going to
00:22:04
start like once it starts getting
00:22:05
adopted you get lock in you have to
00:22:07
start prioritizing other things and like
00:22:09
I don't want that I love those
00:22:11
approaches I think they're going to
00:22:12
result in better languages in the long
00:22:13
run so I have positive things to say
00:22:15
about them uh but yeah so that said I
00:22:19
just don't know how good they are at
00:22:21
things like web yet and so that would be
00:22:23
an interesting thing for you to assess
00:22:25
uh because you are exactly uh the
00:22:27
programmer who could probably assess
00:22:28
something like that that's like your
00:22:29
bread and butter and you would know like
00:22:31
ah this you know this isn't done very
00:22:33
well here maybe can we do something
00:22:35
better uh that would be a very
00:22:36
interesting thing I would I would like
00:22:38
to see that personally um yeah well I
00:22:40
just feel like it's also it's just fun
00:22:41
to like you know I get the opportunity
00:22:43
to explore these things so I might as
00:22:44
well explore a language that has you
00:22:47
know high potential and and still is in
00:22:49
its more Early times that's why you know
00:22:50
Zig again is very uh appealing is
00:22:53
because you know it's been adopted by
00:22:54
bun now so bun obviously runs a lot of
00:22:57
yavas script uh ghosty tiger beetle uh
00:23:00
there's some other I think there's some
00:23:01
other bigger ones that I I'm forgetting
00:23:03
right now but those are like pretty dang
00:23:04
big projects and they all speak
00:23:06
extremely highly of Zig and so it's like
00:23:09
okay I could I could I could see this
00:23:11
being a very exciting thing to work in
00:23:14
then yeah I I mean having looked at zigg
00:23:16
a couple times because people pointed to
00:23:18
it I just I not sure what like I don't
00:23:21
really see a lot of the bonus there but
00:23:24
maybe that's just because I'm coming
00:23:25
from having looked at a bunch of these
00:23:27
languages and gone like what's the
00:23:28
current
00:23:29
status I feel like it's good if you're
00:23:31
coming from if if what you were looking
00:23:33
for was C again uh then it seems like I
00:23:37
can understand maybe maybe the choice
00:23:39
right it's like well uh I don't really
00:23:41
want to go C++ so I'm looking for
00:23:44
something that's just a c extension
00:23:46
right or something like that I don't
00:23:47
know but a lot of the stuff is just like
00:23:50
it's way too much typing for what it
00:23:52
does uh and so I I was not I was like I
00:23:55
don't really get it I don't I don't and
00:23:56
a lot of the choices like the eror
00:23:58
handling choic stuff I don't know it all
00:24:00
I can say is I was like I don't I don't
00:24:01
really get it I don't get this one um
00:24:04
which is not to say that maybe it works
00:24:06
for other people like maybe they're like
00:24:07
you know thumbs up on that uh but again
00:24:10
I would say like I can't imagine picking
00:24:12
that over ji for example if you have
00:24:14
access to the beta that that would make
00:24:15
no sense to me right uh okay but unless
00:24:18
you just want something that's open
00:24:19
source uh I do I do like the open source
00:24:21
nature because that you know I just find
00:24:23
generally because if there's not a lot
00:24:25
of docs you can eventually find
00:24:27
something that that has what you're
00:24:29
looking for you know so that's one
00:24:31
that's one more nice part about anything
00:24:32
that's open
00:24:34
source yeah and uh and you
00:24:38
know like I said that is one downside of
00:24:42
picking a language now right is that you
00:24:44
end up in this situation where
00:24:48
uh you know some languages that might be
00:24:50
right around the corner open source
00:24:52
right or that might uh soon have some of
00:24:55
the things you're looking for uh
00:24:59
you don't know which ones they're going
00:25:00
to be right and so that part yeah I just
00:25:02
don't know so I'm not sure uh but I
00:25:06
would say like yeah
00:25:09
like it's a really hard time and since I
00:25:12
don't since I am not willing to make a
00:25:14
switch yet I have not done the really
00:25:17
deep kind of eval on these languages I
00:25:20
mean my assumption is I have would have
00:25:22
a lot of complaints right away in most
00:25:25
of these languages um because they just
00:25:28
don't have the kinds of things that I
00:25:29
would be looking for right uh what do
00:25:32
you look for so like what what do you
00:25:34
look for in a language if you were
00:25:36
Vector if you were to choose vector
00:25:37
vector vector like the language is would
00:25:40
be based entirely around Vector compute
00:25:43
and nothing else so Mo
00:25:45
Joe no uh that's not based on Vector
00:25:48
that's based on writing non Vector code
00:25:50
that vectorizes right okay um so I would
00:25:54
I would want a language that was just
00:25:56
like I I would almost want Cuda right I
00:25:59
I just I want the the normal the the non
00:26:02
GPU version of Cuda right I want that's
00:26:04
what I want I I don't really want uh
00:26:07
sort of single Lane programming is just
00:26:10
not I don't see that as being very
00:26:11
useful anymore right okay that's by way
00:26:14
something Zig does pretty well they have
00:26:16
a vector built in that they have this
00:26:18
whole idea that you can just kind of
00:26:19
walk through everything built in the
00:26:21
type the width how what how how many you
00:26:24
want in there all that kind of stuff
00:26:26
well most languages have that kind of
00:26:28
Vector that's not what I mean by Vector
00:26:30
okay right Vector programming is when
00:26:33
you have a very good language for
00:26:34
describing things scaler that are
00:26:36
automatically Vector okay okay right and
00:26:39
and this is a difficult thing to do
00:26:41
properly right I I think Odin does have
00:26:44
something like this I I feel like that
00:26:46
had been added to Odin I can't remember
00:26:49
uh but it's one of those things where
00:26:51
most languages are not designed around
00:26:53
it right does that make sense uh there
00:26:57
it's an afterthought it's like a vector
00:26:59
type that you then use to do something
00:27:01
and it doesn't really it doesn't really
00:27:03
capture what Vector programming looks
00:27:05
like right
00:27:07
okay so all right all right well these
00:27:10
are all good things for me to think on
00:27:11
I'll I'll go back and I I'll sit down
00:27:13
I'll just do this I did peruse a little
00:27:15
bit of the yod and docs and I really do
00:27:16
like the for Loops I got to the for
00:27:18
Loops just kind of like looking at the
00:27:19
basic language of it and I was like okay
00:27:22
this is very nice they they did very
00:27:24
good job on that I enjoy this and the
00:27:26
syntax just looks very pleasant or easy
00:27:27
to use use right I'm I'm just going to
00:27:29
be real here I the only reason why I'm
00:27:31
not considering a functional programming
00:27:33
language because I would if I were to
00:27:35
choose one it'd probably be o camel
00:27:37
because o camel has like the type system
00:27:38
of rust with just none of the other
00:27:41
things of rust and so it's just like oh
00:27:43
I like this I like that Henley Milner
00:27:45
type system whatever it is the ability
00:27:47
to do like taged unions and all that and
00:27:49
being able to infer really greatly like
00:27:51
there's a lot of really cool things
00:27:52
about the language it's just I find
00:27:54
functional syntax to be maybe I just
00:27:57
need more time in it maybe that's my big
00:27:58
problem is I just don't do it enough to
00:27:59
really love it did O camel is oaml
00:28:04
support non-garbage collected usage yet
00:28:07
no it's still garbage collected but they
00:28:09
have really clever things coming out in
00:28:11
the new ones where you can like say
00:28:13
certain properties about your function
00:28:16
and it will treat your function in a way
00:28:18
that doesn't that that starts allocating
00:28:20
on the stack as opposed to everything
00:28:22
you know like your traditional garbage
00:28:23
collected language so I think it's I
00:28:25
don't know how it exactly works but it
00:28:27
seems really clever what you can do well
00:28:30
I mean yeah maybe they've got that under
00:28:32
control I don't know functional
00:28:33
programming to me I I don't love because
00:28:36
you know computers aren't aren't that
00:28:38
way and so I kind of like I I don't
00:28:41
necessarily like coming at it from that
00:28:42
way originally but I do like I
00:28:45
mean I can see the appeal of of putting
00:28:50
M writing certain types of code that way
00:28:51
right so I'm not against it or anything
00:28:53
but it is a it is a bit weird as your
00:28:55
fundamental Paradigm because it's kind
00:28:57
of a mismatch at some level but I
00:29:00
haven't ever tried doing much
00:29:01
programming no camel although I did look
00:29:03
at it quite some time ago and uh the the
00:29:06
fact that it was heavily reliant on
00:29:07
garbage collection was never great but
00:29:10
you know that probably has improved
00:29:11
quite a bit in the 15 years since I
00:29:14
looked at o camel right but yeah
00:29:15
apparently modern o camel is very very
00:29:17
good I've dabbled in it a few times now
00:29:19
and every time I do it I go I you know I
00:29:21
could like this language I could like
00:29:24
you know the the I think my biggest
00:29:25
problem with functional languages is
00:29:26
that right after you do that I think I
00:29:28
have to start writing white papers and
00:29:29
never actually accomplish anything again
00:29:31
and so I've always been very worried
00:29:33
about that dive into functional
00:29:35
programming and then I have to start
00:29:36
wearing tie-dye t-shirts and you have to
00:29:38
start talking about memory and peer
00:29:40
functions and all that
00:29:41
constantly yeah I mean it might be that
00:29:44
what will happen is if you decide to do
00:29:46
this next year in O camel you go back to
00:29:49
uh school and become like professor
00:29:52
primagen and all you do for the rest of
00:29:55
your life is like talk about uh you know
00:29:57
exact how to represent things in the
00:29:59
Lambda calculus or whatever right and
00:30:01
that's it we never hear from you
00:30:04
again I just got sucked into the monoid
00:30:07
monoid land and there there it goes I'm
00:30:09
gone forever okay so I don't know if you
00:30:12
ever answered what what would you what
00:30:14
is your what is like the thing that you
00:30:15
look for if you were to ever choose
00:30:17
something different because you just do
00:30:19
see you're so is it all just Vector just
00:30:23
just optimizing for that or is there
00:30:24
anything else that could pull you away
00:30:29
it'd be pretty tough because uh as it is
00:30:32
right now when I'm programming I have
00:30:34
sort of my own like little meta layer
00:30:37
that runs first that kind of cleans up
00:30:39
some of the C things that I don't
00:30:41
love and the next step that I would want
00:30:45
to take there is just having my own uh
00:30:48
like I said language that was geared
00:30:50
towards exactly the way I think about
00:30:51
Vector stuff right so I'd want it vector
00:30:54
and and multicore I would want it
00:30:56
exactly the way that I do it right and
00:30:59
that's a pretty big step for me to take
00:31:01
like I would basically be inventing my
00:31:03
own language at that point if I decided
00:31:04
to go that route so I haven't done that
00:31:07
and I don't know that I ever will do
00:31:08
that but that would be the thing that
00:31:11
would convince me that it's time for me
00:31:13
to switch to a new language and it's
00:31:16
possible I don't know but it's possible
00:31:19
that ji's metaprogramming is already
00:31:21
such that I could just write that I
00:31:24
might just be able to write that in
00:31:25
their meta programming language and call
00:31:26
it a day because their met progr
00:31:28
language is very good
00:31:31
so I you know I don't know maybe that's
00:31:34
a route I go in the future I'm not sure
00:31:36
but in terms of what I look
00:31:38
for uh I would really want to see that
00:31:40
because that would be a a motivator for
00:31:42
me to switch if I just had to switch
00:31:45
like it was like okay it's time you have
00:31:47
to pick from one of these languages and
00:31:49
it's like you know do you use Odin do
00:31:50
you use ji or something or or rust
00:31:52
heaven forbid uh like I I H I do have a
00:31:57
list of things like go look at where I'm
00:31:59
like okay here is a common thing that I
00:32:02
think if you were making a modern
00:32:04
language today if you've thought about
00:32:06
it at all you can do this very easily
00:32:10
and then I would go look and see can I
00:32:12
do that easily and I don't ever say what
00:32:15
these are because I don't want anyone to
00:32:17
game the system yeah but I do have some
00:32:19
of those things and like you know uh I I
00:32:22
tried that with rust it didn't even get
00:32:24
past the first one right like they
00:32:25
hadn't even got my most basic test it
00:32:28
couldn't even do it at all right and so
00:32:31
I like well that's sorry what is the
00:32:34
first test just you can't enforce me to
00:32:36
use Ray right off the rip with no choice
00:32:39
what is Ray resource acquisition is
00:32:41
initialization oh RI sorry I didn't know
00:32:44
that was pronounced that way okay just
00:32:46
called it Ray I didn't know is it called
00:32:47
Ray I don't I don't know what it's I
00:32:49
just call it RI because I didn't even
00:32:51
think Ray is probably much shorter and
00:32:53
better I'm not really into saying a
00:32:55
bunch of letters I would just rather say
00:32:56
a word fair enough no uh yeah raai is I
00:33:01
mean AB absolutely a no-o like if you
00:33:04
tell me that that's on the on the menu
00:33:06
we're done uh but yeah so I I felt like
00:33:10
uh I kind of knew right off the bat I'm
00:33:12
like the people who are making rust just
00:33:14
don't think about programming like I do
00:33:15
which again is not trying to say that
00:33:17
other people like if they think like you
00:33:19
do then it's a good language for you
00:33:21
right uh they definitely don't think
00:33:23
about programming the way I do so I was
00:33:24
like no um but I you know so if I had to
00:33:28
switch I would run a bunch of those
00:33:29
tests and then pick the the one that
00:33:32
that went the best but in terms of
00:33:33
enticing me to switch like if I didn't
00:33:36
have to switch it's that it's like if
00:33:38
someone came out with a really amazing
00:33:41
uh real Vector programming language uh I
00:33:44
would I would seriously consider it okay
00:33:47
well it's good to know all right all
00:33:48
right I I like this discussion thank you
00:33:50
for talking me through some languages
00:33:51
and just thoughts about it uh you know
00:33:54
may you know maybe maybe I I'll have to
00:33:56
do some thinking but
00:33:58
I got a little bit of time because I
00:33:59
want to finish up my my my dumb idea and
00:34:02
then I have to finish up an HTP course
00:34:05
and then it's time to choose and
00:34:07
read yeah I I mean can you do a little
00:34:10
experimentation first I guess maybe you
00:34:12
already have I I did two months of
00:34:14
playing around with Zig last year just
00:34:16
kind of built a a quick game built a
00:34:18
tower defense in it and never got to the
00:34:20
metaprogramming side of it and I was
00:34:22
just like oh you know there's some
00:34:23
things I really like about this language
00:34:25
there's some really neat things can you
00:34:27
do this the same with Odin perhaps first
00:34:29
and like give that a month of testing or
00:34:31
something like like maybe try just a
00:34:33
little bit uh and then you can make a a
00:34:36
decision I mean you could even do that
00:34:37
with ji if John was okay with it I guess
00:34:39
if he wants someone who's definitely
00:34:40
going to use it I guess that doesn't
00:34:41
count but you know it would might be
00:34:43
interesting just do a little test in
00:34:45
each and then just pick the one you
00:34:46
enjoyed the most yeah yeah that might
00:34:48
that might be the way to go I am curious
00:34:50
like if if Jay do you by the way do you
00:34:52
call it J AI or is it J or is it
00:34:56
J I have no idea uh and I I one of the
00:35:01
things that is true about John is that
00:35:04
he uh for some
00:35:06
reason I think I'll use the word almost
00:35:11
religiously opposed to name
00:35:15
fetishizing and so he's like the
00:35:19
language is just the language I'm
00:35:20
working on like like to the extent that
00:35:22
if he just couldn't have if he could
00:35:23
have called it nothing at all he would
00:35:25
have and only give it a name when it's
00:35:27
completely done that is that is John
00:35:30
right and so uh I don't even know if
00:35:33
I've ever heard him say the
00:35:36
name oh interesting okay I I I honestly
00:35:41
maybe he has but I don't know if he has
00:35:44
uh now that I think about it like have I
00:35:46
actually heard him say it himself so I
00:35:48
have no idea J J AI ji probably I mean
00:35:54
so here's the thing I will say John and
00:35:58
me are both uh fans of uh what's his
00:36:01
name Michael ji Williams the guy who who
00:36:03
did like Black Dynamite uh then Black
00:36:05
Dynamite was a was one of the best shows
00:36:08
if it if it's that's the one where the
00:36:10
white man is trying to get to shrink the
00:36:13
[ __ ] eyes yeah and and and uh it has so
00:36:17
many good scenes it has so many good
00:36:19
scenes in it uh it's basically a black
00:36:21
exploitation parody uh and he's the lead
00:36:24
he's the lead okay um and uh and so I I
00:36:28
would say like it you couldn't go wrong
00:36:30
by pronouncing it the same way he
00:36:31
pronounces his middle name so maybe
00:36:33
maybe just go with that because John
00:36:36
would John can't object to that I would
00:36:38
say okay I didn't realize that JN also
00:36:40
liked Black Dynamite that was yes oh
00:36:43
that hey you know I just I feel a little
00:36:44
bit more akin to the guy now now that I
00:36:46
now that I know that yes he loves it and
00:36:50
and uh as do I we we were we watched it
00:36:52
together in fact uh if I remember
00:36:55
remember correctly at least I think we
00:36:56
did I it's been a long time uh I had
00:37:00
seen it once for some reason I don't I
00:37:01
think I I don't know I found out about
00:37:03
it at like a maybe a a uh film festival
00:37:07
or something I don't remember and I was
00:37:08
like oh my God a a black sedition parody
00:37:11
that sounds great and of course I
00:37:12
watched it I was like massively overd
00:37:14
delivered so you know yeah which is
00:37:16
great we can't but now we're overd
00:37:18
delivering it's overd delivering and so
00:37:19
now someone might watch it become
00:37:21
disappointed okay sorry uh yeah sorry
00:37:25
guys uh I didn't mean to do that yeah it
00:37:28
it's okay it's
00:37:30
mid I don't know it's mid maybe as taken
00:37:33
as a whole movie but certain scenes in
00:37:36
that movie are still some of my most
00:37:38
hilarious scenes like that I laugh so
00:37:40
hard at uh so I don't know like it's
00:37:44
it's mid as a whole I Wasing it in
00:37:49
sections it is truly excellent that's
00:37:52
what I'll say all right awesome okay
00:37:56
well that was fun thank you