Secure your Elixir apps with paraxial IO.
From code analysis and bot defense to dependency checks,
they've got you covered. Elixir first design with GitHub
integration. Elevate your security at
paraxial dot IO. Hey, I'm Kimberly with Elixir
mentor Jacob recently added recruitment services to help
companies hire pre vetted Elixir devs.
I help with company outreach, so if you're hiring, I may be
reaching out, or you can connect with us anytime at
elixirmentor.com. Testing what's up?
I'm Jacob Litzow, your Elixir mentor and welcome to another
exciting episode of the Elixir Mentor Podcast.
This is where we discuss everything related to Elixir,
from interviews with enthusiasts, pioneers in the
community to innovative projects and libraries shaping Elixir's
future. Today I'm joined by George,
creator of Learn Phoenix live view.
He also went through the Gauntlet AI Fellowship and came
out rethinking how he builds software.
George, it's awesome having you today.
Thanks. Thanks for joining me.
Hi, yeah, thanks for having me. Great to be here.
I hear like a weird like rubbing noise every once in a while.
I don't know if your mic is on a desk or I mean sorry, sorry
actually. Then I had to respond to that
before. We went live.
Yeah, I mean. It should be fine.
Is the problem or are we good to go?
We're good. I don't hear it right now.
Yeah. All right, cool.
So I, I had the the awesome. I don't know what I what's the,
what's the word I'm looking for? I got to meet George down in
Austin at XMEX and that was a lot of fun.
That was a good conference. Hopefully you weren't one of the
people that got sick because I feel like a handful of people
all got sick after Friday. No, not me.
Yeah, Neither did I. Yeah.
So you made it through.
That's good. You want to just give people a
brief background of like who you are, where you came from, and
kind of like where you are today.
Yeah, sure. So my name is George Millo.
I am best known in the Elixir community for, like you
mentioned, some courses that I've created teaching Elixir in
Phoenix. I used to do all of that under a
pseudonym, a pen name that that name was George Arrowsmith.
I I decided about six months ago I was going to drop the
pretense, just start putting my real name and face out there.
But, you know, some of your audience may still know me
better by that that fake name. Yeah.
So I've been a professional software engineer since 2013, so
13 years now. Unlucky for some, my background,
I got into Alexa through what I think is pretty common in the
Elixir world. I am.
I was a Ruby on Rails developer for quite some time.
Back at the very beginning I was using PHPI got out of that as
soon as I could. Yeah, I worked with Rails for
about four or five years, got sick of it, not to knock on
Rails, but yeah, you know, after just working with it for a long
time, I it's time for something new.
And there's a lot of cross pollination between the Ruby and
Elixir communities, as I'm sure everyone watching this knows.
Played around with Elixir in Phoenix, Loved it.
Phoenix is a fantastic piece of technology.
I feel like it just took everything that was great about
Rails, everything that Rails did well, and it shedded all the
things that maybe Rails didn't do so well.
Innovative, great. I got into the course business
partly just out of frustration from, you know, when I was
starting and trying to learn, there was a steep learning
curve. People say that Elixir is like
Ruby. It's really not that.
Similarities are very superficial.
If you've never done functional programming before, which I
hadn't. Yeah, There's a lot of things
you've got to unlearn a lot. And the materials that I, I, I
could find teach myself Elixir in Phoenix, I don't know.
They just weren't very good in my opinion, at least not the
ones that I could find. So really I just ended up, I
mean, it was back in the COVID lockdowns, had a lot of free
time as we all did. Yeah, I just started creating
the really the courses that I wish that I had had when I was
getting started. And yeah, they seem to have been
pretty well received. It's never been my main gig.
It's just been an evenings and weekends kind of thing.
But yeah, I've enjoyed doing it and good things have come to me
from it. Yeah, that's awesome.
I feel like you and I had the same frustrations like because
that's how I felt when I was learning Elixir.
I was like, there's this like not good learning material.
And that's what sprung the my YouTube channel and just making
tutorials at 1st and then evolved and now as a podcast as
well. Yeah, you know, like when I got
into Elixir, I, I, I've never even heard of OTP or the beam
or, or, you know, all these cool things that are somewhat unique
to Elixir, or at least, you know, if you're coming from
something like Ruby or JavaScript, it's miles beyond
like, like what you may have encountered in those.
I mean, it, it took me even, it took me a while to even like
realize those things were there. You don't need to learn it
upfront. But yeah, like, like I remember
the, the first thing I was ever doing with Elixir, just to play
around with it, I was doing some sort of like, like hacker rank
problems, that kind of thing. Exorcism, you know.
Just like writing just writing code, not actually using all the
the magic of the beam. Yeah, I remember it was very,
very confusing at first because, you know, it looks as immutable
and you, you know, you don't have wire loops there.
There's a lot of, like, things which are really quite simple
algorithmic puzzles where like just the way that I would have
done that coming from Ruby, the obvious way was not available to
me. You know, it might be like, oh,
OK, it's really obvious how to solve this.
I would just like, initialize A variable and then I would
iterate in a while loop and, like, change that variable.
Oh, wait, what? I can't do that.
Yeah. But you know what?
Once you get used to, once you get used to the way Elixir does
things, things like the pipe operator.
Oh, I miss that so much in other languages.
It's just such a beautiful way to structure code.
Patent matching. Other languages have got patent
matching, but I've I've yet to use a language that does it as
well as Elixer does. There's just so many little
niceties in the syntax. Yeah, it's a it's a beautiful
language. I love working with it.
Yeah, yeah, I was the. I was the same way.
I started just writing a simple like REST API project when I
learned Elixir and I like I knew on paper Elixir could do
everything that I wanted for like, you know, distribution and
fault tolerance, but I didn't actually know what it meant yet.
And I was just writing code and I struggled with immutability,
the idea of just transforming things 'cause I came from object
oriented. It was, it was, it was hard on
my brain. And then when I finally, when it
finally clicked, I was like, I wish I learned an immutable
functional language first before object oriented programming
because I think that would have made me like grasp programming
faster. Yeah, Yeah, that could be the
case. Yeah.
I mean, not now that I've seen things on the other side.
It's made me think, I think maybe OOP is a bit overrated.
You know, when you first learn it, it kind of makes sense.
You know, they teach you these sort of contrived examples to
teach you inheritance. Oh, yeah, You know, a car
inherits from a vehicle which inherits from this and that.
But then, you know, when you actually start, you know, when
you actually start building real things like, you know, so many
of the classes that you end up making, it's not like real world
objects that correspond to something concrete where
there's, it's more obvious hierarchy like, you know it.
Yeah. It just really works out as
smoothly as it does in these sort of tutorial examples.
I also think it's really easy to like abstract away too much and
then you just complicate your code base for anyone that's not
familiar with it. I don't know.
Oh yeah, sure. And then just the magic
statefulness of things. You can just pass objects around
and change them in multiple places.
Like, yeah. Yeah, I worked with Ruby for a
long time. I, I there's a lot of things I
like about Ruby. I think it's a beautiful
language. It just reads very well.
But like, there's a lot of things when you Start learning
Ruby, you're like, oh, this is really cool.
Like I could do all these things super succinctly.
But then and then like once you've actually worked with him
for a while on bigger projects, you find that that there this
flexibility, the fact that like everything is an object and
everything can mutate and, and everything's got a zillion
methods defined on it and whatnot.
That flexibility just comes back to bite you.
You know, like something will not be the type that you think
it is. You'll get the like no method
error on nil class. And you just end up having to do
this deep dive through your stack, trying to trace a
variable all the way through, figure out what, figuring out
why it's changed. You can get these very obscure
errors that are hard, hard to debug because anything can
change at any point. So yeah, that's that's the
beauty of immutability, just everything there is right in
front of you, which I think helps with the AI as well.
You know the meaning. Just like separated processes,
right? Everything is kind of its own
its own state. You don't have to worry about
keeping things synced. Yeah, Yeah, exactly.
Yeah. Yeah, I'm curious to hear about
what this gauntlet AI thing is. What can you tell us about it
and like what put it on your radar and what made you want to
do it? Yeah, sure.
So I mean, when did ChatGPT come out?
Was that like late 2022 I think? Yeah, that that was when AI.
Yeah, yeah, that was when AI re. I mean, obviously everyone, the
concept of AI has been around for as long as I can remember.
But yeah, it was really ChatGPT that, you know, sort of the
iPhone of AI. It just brought us into this new
paradigm. And pretty much immediately when
that came out, you know, there was a lot of talk about using AI
to write code, people saying, Oh yeah, this is going to write all
the code for us, it's going to replace us.
But you know, I, I, I think like a lot, a lot of people, I
especially in those early days, we're all trying to figure it
out, right? Like, like by now, if you're a
software engineer and you're not at least trying to use AI in
your code, like, like you're very, very behind.
But you know, two years ago I heard if you're.
Going to get a hate comment for saying that but I had a Dave
from TV Labs on and he was basically telling people if
they're not using it in their daily workflows they're falling
behind and oh man we got some angry comments on YouTube.
Yeah, I mean, we can definitely get into that.
There's a, there's a ton of disagreement about exactly where
this is going and how much you should be using it, which is
it's it's still very early, you know, but I, I think like I
would probably have said that two years ago, because I mean,
the technologies just wasn't great for a long time.
I tried to get to have copilot. I think that was a lot of
people's first. Experience I was against it so
like it was so crappy back back when it was first like even like
I would just say within the last year it's gotten cool, it's
gotten good right and before then it just kind of slowed
slowed me down. I just thought it gave me more
slop than it was worth and I was better off just Robert ducking
with it but not actually letting it write code.
Yeah, I think an experience, the experience that like a lot of us
more experienced guys have is that, you know, we've been doing
this for so long, we just got our ways of working our habits.
We're very comfortable, we're good at it, right, Just because
we've had so much practice and like getting into that AI driven
paradigm. It's just so different.
And yeah, like, no matter how smart you are, it's going to
slow you down at first because you just have to shed a lot of
old habits and learn new ways of working.
And yeah, like, like that. I mean, especially, well, you
know, especially back when the models weren't nearly as good as
they are now. Like, like, like it's easy to
see. I I certainly had that
resistance. But at the same time, you know,
there was just so much hype and it was clear what it still is
clear what direction everything is going in.
I was just thinking, man, I've got to, I've got to figure this
out. And yeah, so about a year ago,
everyone on Twitter who I followed was just talking about
this new program that was going on boot camp type thing,
Gauntlet AI Gauntlet is a like, So just to be clear, I'm not
like, I don't run Gauntlet. I'm not affiliated with it.
Like like like it's not my business.
I was just a participant. But Gauntlet is a intensive 10
week training program in building software with AI.
Yeah, very intensive. Yeah, really, almost every
waking minute is not an exaggeration.
But yeah, just a series of projects, challenges, deadlines.
Everybody gets together and the goal is just, you know, let's go
absolutely all in on LLM maximalism.
We're going to be building as much as we can as fast as we
can. Just throwing caution to the
wind with AIAI has got to build everything.
Let's just see what's possible. Let's see what we learn.
Yeah, totally free program, all expenses paid.
I mean, fundamentally it's a, it's a recruitment platform, you
know, you make it to the end and they'll they'll get, they've got
a bunch of hiring partners lined up who they'll, yeah, they'll
get you some interviews with. So that's how it's funded.
And yeah, it was one of those things.
It just came along at the right time for me.
You know, I been doing a bunch of freelance work.
I just finished a freelance contract actually.
So yeah, just trying to figure out what to do next.
And yeah, I definitely had my doubts about this court.
And I think it sounded too good to be true, to be honest.
But I was part of the second cohort.
Yeah, everyone was talking about it.
I just DM Ed some people who were doing the first cohort on
Twitter. Just ask them about it, you
know, got on a call with a few of them and yeah, everyone was
like, hey, you've got to do it. It's great.
So I thought, why not, You know, I'll take, I'll take a chance on
this thing. And.
Yeah, TLDR it was great, learned a lot.
It was fantastic. I would highly recommend it.
That's awesome. So essentially it you learned
how to vibe code, is that like a fair, a fair thing to say?
Like you weren't writing code, you were leveraging it to
actually vibe products that were written well or designed well at
least. Well, as well as we could make
them given the time available. I mean, it was almost just like
a series of hackathons, you know, like the hackathon
mentality, you know, here's here's the task, here's a week.
I mean, most hackathons are not a week long.
But you know, it's just a series of projects, a series, a series
of assignments. Hey, build this, see what you
can produce. And yeah, like, like, give me a
cool demo at the end. So, yeah, you know, we're not
we're not necessarily going for like the the most kind of
robust, perfect production ready products that that are going to
like get out there and have huge amounts of users.
It's more just about yeah, yeah, you know what, what what cool
thing can we build in a week that would make a make a good
demo vibe coding. I hate that term, but we don't
we we don't seem to have settled on on like what the what, what,
what else to call it, you know, agentic engineering perhaps,
but. Yeah, I feel like yeah, it's.
Widely recognized. We definitely need a better name
for it because I feel like I just saw a post the other day
and I don't remember who did it now and maybe it was the
primogen but he was saying like the worst part about like the AI
hype is everyone from the NFT and crypto world came over and
are now vibe coders and they're just annoying and being noisy in
the space. Oh, yeah, for sure.
I mean, my, my take is that whatever you want to call it,
like, yeah, the technology is not perfect yet and we're all
still figuring this out. But there is no doubt in my mind
that like, eventually we'll, everything is going to be
written by AI in some capacity and there'll be very little code
written by hand. You've just got to compare the
state of the technology now to even a year ago, six months ago
for that matter. You know, when I started calling
it, I think Claude 3.7 had just come out, which was, it's pretty
good, definitely a lot better than the things before it, but
it still required a lot of hand holding.
Yeah, yeah. But it was very far from
perfect. I think the real big shift, and
you see this in the discourse as well, just, you know, when a lot
of a lot of other people started to have this same realization.
It was kind of Q3 to Q4 last year when Opus Opus 4 came out.
Later Opus 4.5 and, you know, codecs started to get really
good as well. That was when you really started
to see serious people. And yeah, not, not just not so
many slop slingers, you know, people, even people like Andre
Carpathy and, yeah, people who've got very highly regarded
programmers. They're, you know, they're,
that's even people like them starting to say, yeah, wow, this
technology is good. It's getting very good at
writing code. Yeah.
Curious how you feel.
How do you feel about like, writing less code and reviewing
more and being more like the overseer than actually like a
software developer from, you know, what we're used to, you
know, writing code, hacking things out, building.
Do you feel like they're like, I like have my ups and downs with
it sometimes I'm like stoked about it because I can like do
so much more as a single developer.
But I'd also like part of me like misses the old old way of
doing things too. You know what, I I thought I
would miss writing code and I did it for so long, but I
honestly don't miss the old way at all.
I can't imagine going back. I wonder, It makes me think
about like, what was it that I liked about writing code?
I mean, it wasn't, it wasn't just the typing and the cranking
out syntax. It was the thinking and the
solving problems and the learning.
And I've never learnt so much so fast as now when I mean AI.
First of all, it's just a fantastic research tool.
You know, when there's something I'm stuck on, you know, in the
olden days, I might spend a long time reading through a lot of
very tedious and confusing documentation, you know,
Googling my error messages and, you know, getting stuck so, so
much time. It's funny looking back, like,
like how much time we used to spend, just just how much time
was waste. You know, you'd have a bug,
you'd get stuck on a problem. And like, like, you know, you
you could spend days just tediously trawling through Stack
Overflow and not do you look at it.
Do you look at it as waste though?
Or do you look at it as like those hard moments that really
made you learn something new? Some of it was definitely waste,
you know. Yeah, yeah.
I mean, you, you do learn stuff. Yeah.
That, that is how you learn, You know, you learn by encountering
it, encountering problems and things you don't know what to,
don't know how to solve and then, you know, learning how to
solve them. But, you know, nowadays, yeah,
it happens all the time. You know, I'll get stuck on a
bug or whatever, and I'll ask the AI what's going on here,
explain it to me, and it'll just give me the answer like that.
Whereas, you know, it'll take me, it'll take me 5 minutes and
I've learned it, you know, in the past, you know, I might have
spent the whole day just just trying to solve it.
And, you know, reading a lot of stuff that didn't help before
the rate of learning it's. How do you, how do you handle,
how do you force yourself to pay attention and keep learning
versus going brain dead and just trusting an LLM more than you
should? Like what is your, what's your
trick there? Because I feel like I've talked
to a lot of people that just they, they feel like they're
slipping with, you know, this they're, they're solving part of
their brain. And I still feel like I am
pretty good at like, 'cause you see code written, you, you know,
whether it's well written or not, you can make adjustments,
blah, blah, blah. But like the overall
architecture, how do you make sure you're like, involved in
actually thinking through problems?
Yeah, I mean, it can be a challenge.
I mean, my, my biggest challenge is just like when you're working
with AI, you spend a lot of time waiting for the AI to complete
and there's a ton of context switching.
You know, I'll, I'll usually have multiple tabs open.
I'll be working on more than one thing at once just because
otherwise, like, what else am I going to do?
I might say something running and it's going to take 15
minutes to get back to me, but I don't know.
I, I, I, I feel like the way that I work with AI is I, I
don't necessarily read everything that it's producing,
or at least not like super attentively.
I might give it a skim, but you know, that doesn't mean that I
don't understand what it's producing or that I'm not paying
attention. You know, if I've got a task
that I want to solve, you know, Peter Steinberger, the creator
of Open Floor, he's written some blog posts about like how he
works with AI. And I like what he has to say
because I think it's pretty similar to the way I work.
You know, if there's a task I want to work on, I will, I'll
spend a long time planning and like just trying to get it into
my head exactly what it is that we're going to do.
I'll start by codecs and Florida code.
Those are my main drivers now. But you know, I'll ask the LLM.
I'll start by just trying to understand the code, right?
Like I have some understanding already because I've already
been working on it, right? But it might be a big code base,
don't necessarily understand everything.
So I'll spend a long time saying here's what I want to build, you
know, help me, help me flesh out this idea.
You know, what am I not seeing? What are the edge cases?
And then, you know, tell it to remind me exactly what does the
existing code do? Where is everything, where
everything's located? What's the architecture?
Not just that having that kind of conversation with it.
I kind of the, the most important thing that, that I,
the most important thing to me when working with AI, with code,
it's just understanding like the better your understanding of, of
like exactly what it is that you want to build and exactly like
how the thing, how it all works, how it fits together, what
you're going to change and where like, like my job as I see it is
to just like work with the AI until we both have a shared
mutual understanding, a high level understanding of what it
is that we're going to build. And, and then once I'm confident
that like I understand what needs to be built and that the
LLM unders, yeah, the LLM shares my understanding, I let it RIP
and I get great results. So yeah, I, I, I feel like I am,
I feel like I'm still staying on top of what the code does and
where everything is, you know, bad things happen and like, you
know, the, the, the NFT Bros revive coding.
Yeah, But I had a great time recently.
It was verification debt. You know, we used to talk about
technical debt, which is certainly still a thing.
But the danger now with AI is cognitive debt and verification
debt is that because you're not, you're not typing everything
out. And so not every line of code
necessarily goes through your brain.
A gap can, a gap can grow between what the code does and
your understanding of what it does and your understanding of
how well it works. And like, like the sloppy
approach where you're just kind of firing things out without
taking a lot of time to plan and really understand what it's
building that like, that's just a recipe for disaster.
Yeah. Yeah.
Like, but it it. That's what happens when you go
too fast. Yeah, I get that.
I definitely think the planning is important and I've started to
see a lot in the aspect of like spec driven development and I
don't know, like are you familiar with that term at all?
Yeah, I'm familiar with the idea.
This is this is when you, I, I, I mean, it's kind of TDD kind of
thing, you know, you'd start with the.
Yeah, yeah, it makes sense, I think.
I mean, that that's one way that you, you, you solve that
verification problem. Yeah.
I mean, vibe coding tests, I think is is a particularly bad
idea. Well, I'm not not well if we're
talking about vibe coding in the like very vibey sense where
where you're not actually paying close attention to what the
tests do. Yeah, yeah.
Well, AI loves to do things like.
Just make them pass right? Yeah, well, if you tell it to
write the test first, it can do. It'll write tests that do at a
glance they look like they work, but then you actually read it
and it says, you know, people set it all up, but then we just
do assert true or something. It.
Doesn't actually test anything so that's when you've really got
to make sure that that like it's doing what you think it's doing
but yeah, that's another big aspect of working with AI.
You know it's constraints. It's because it can be, because
AI moves so fast and it can be very hard to keep up mentally
with what it's doing. Part of the skill of working
with it is just like setting up your workflow and your
harnesses, your methodology in such a way that like, like you
can be reasonably confident that even if the AI is getting a bit
of head ahead of where you are mentally, like they're, they're
just things keeping it on the rails, things keeping it in
track. And yeah, like thing thing is
like just having a good test suite and making sure that the
tests are good and avoiding those situations where the AI is
kind of taking shortcuts and hacking its way around the test.
That's one way to stay on the rails.
Can you walk us through like a typical like workflow for you?
Like if you're adding a feature to existing code base, how do
you use AI to even begin the feature, plan the feature, and
then eventually implement the feature?
What do you? Yeah, I mean, I, I think I just
described my workflow really. I don't use a huge amount of
like, you know, a lot of people talk about these super
complicated setups they've got with like, you know, a product
manager agent and a code reviewer agent and a senior
engineer agent. All these different skills and
yeah. Yeah, yeah.
I, I, I don't know, I see a lot of people who've got very, very
impressive markdown collections, but, but I don't know a lot, a
lot of the, a lot of those people can't really point.
I'm not really sure what they've actually built.
I, I, yeah, like I said it, it's about understanding.
You know, you don't need a product manager agent.
You, you, you need to, you need to have a, a sense of what you
need to have product sense, right?
I feel like you need to be the product manager like it's your
product. Right.
Yeah, exactly. Yeah.
So, so you know, I do everything in the terminal.
I'll fire up codecs. I mean, it varies so much
depending on what it is that I want to build.
But you know, I'll just start by.
I'll spend a long time like really kind of going over
everything and fleshing everything out and getting the
details into my head before, before I start to try and write,
before I actually tell it to, you know, actually make any
changes, you know? I'm curious like do you, do you
like, will you plan like a really large feature and let AI
kind of take it or do you break it down into the small steps and
approach a huge feature like kind of implementation function
at a time kind of thing? And I think the, the, the
limiting factor for me that the, the, the unit of work that I, I,
I, I like, try to not exceed. It's, it's just like how, how
much can I juggle in my head at once, right?
And that, that, that's not just in terms of like, like, what are
we working on with the AI? You know, it's like if I'm going
to open APR or, you know, if I want to get this merged into
main, you know, what's like, well, it's like a self-contained
unit of work that that could theoretically be deployed even
if it doesn't have like every last little thing that we want
it to, to, to, to be fully production ready.
But can we at least get it merged, You know, because the
the more we just let that grow, the, the more that is like still
needing review and final review and approval, the more that, you
know, I just can't keep that in my head.
I forget what, what, what I can't verify at all.
But yeah, I'll take a similar approach with with AI, you know,
I'll, I'll, I'll talk to codecs. We'll try and figure out, I'll
try and flesh out the plan. But you know, if I feel like
it's getting a bit too big, even if, you know, I might say, I
might even ask codecs, you know, what's, what's the first thing
we can build? What is something that's nice
and self-contained here? If yeah, if it's something super
big and you know, it's just, I think I'm going to have to, you
know, it's just more than I can juggle.
That's when I'll start to do things like, you know, let's
write a plan, let's write a file, the full plan, write a
checklist. I don't, some people, some
people I work with like, like to do that for, for much smaller
tasks and just like, like keep everything much more documented
from the beginning. I, I, I, I find it's not really
worth it. I, I don't like to do that
unless I feel like we're actually just past a certain
level of complexity and size, you know, if it's something that
I can kind of do in one chat and self contain.
And yeah, I, I feel like the, the code itself is the
checklist. It's just creating that markdown
file. It's just another file to juggle
and yeah, it just gets messy but.
Yeah, that makes sense. Yeah, I do think a lot of people
will over complicate their whole like AI workflow and I'm not
sure why. And maybe it's like they want to
just have something so complicated that other people
might not understand it and then they just think it works better.
But I'm kind of like, I'm kind of in your boat.
I'll, I'll plan things, but I also don't ever want to push
code that's more than, you know, a couple modules changed because
I don't want to review APR that it's like 50 modules that I have
to review. I want a handful of changes that
are easy to read and look at. Yeah, yeah, exactly.
I think something I'm thinking more and more like just having,
you know, I mean, I've been on this journey for a year now.
I've spent a huge amount of time working with AI and like really
learning how, you know, really trying to get the most out of
it. But the further I get into it,
it certainly is a skill in itself.
Like, you know, you've got to learn how to use AI, you've got
to learn how the tools work. You've got to try different
things, understand what models are good at, what they're bad
at, but nothing can replace like, like all the skills that
we used to need before AI, just understanding architecture,
understanding clean code, understanding, you know,
security and just just every little thing that goes into
making a, a good, an app that not only works and is secure and
like, like, you know, meets the business requirements, but just
like, like it is, is maintainable and all the things
we care about as, as developers, something that, you know, we can
just keep on working with smoothly.
Like like those skills have not changed, which is why I think
that there's a lot of worry at the moment.
I was certainly worried for a while that AI was going to take
all of our jobs. I it might take some jobs.
I I mean, no one really knows what the future holds, but like
for now, at least as I see it, like I think I'm senior
engineers and people who've got that, you know, people who just
have a very deep technical understanding and just good
coders. Those are the people who make
the best AIAI driven developers. Yeah.
Like, like if you're, if you're not so experienced, if you're a
junior engineer, like like there's a lot of yeah, yeah.
Like, like you can add negative value.
Definitely because AI moves. So when you're when you're
working with AI, you move so fast, right?
So like bad decisions compound very quickly.
You know, if you choose the wrong, if you choose, if you're
building with the wrong technology, if if you if you
make a poor architectural choice, then you know, it might
in the past, it might be months until that really becomes a
problem because it just takes so long to build anything.
But you know, now with AI, you're moving so much faster.
There's there's bad decisions that you make early can come
back to bite you much sooner. So, yeah, that's when that that,
that that understanding that really only comes with
experience and, and, and just, you know, having worked on big
problems and seen the same things over and over again.
And, and, and just like understanding how things go
wrong, that that's where it's really valuable.
I'm not sure. I, I, I do wonder, like, I don't
know what it's like to be a junior developer working with AI
coming into all of this now. I, I, yeah, I I have a concern.
Like like not I kind. Of feel bad for a.
Junior 'cause I don't know how they're going to get their foot
in the door and, like, get trained and become senior
because there's so much, like, I'm overwhelmed with AI, right,
'cause it helps me so much, but it's also made me have to
understand so many things I don't think I would have had to
learn without AI. Like, now I have to be very
capable of understanding my DevOps deployment.
Like all this stuff, like security, like you were saying,
it's kind of just opened the door and made our responsibility
larger. And we're just like, now an
orchestrator of all these subtasks underneath us, but
we're still having to understand how everything works together.
Yeah. You know, I, I have heard people
saying I, I think former guest on your podcast, I've heard talk
about this. Yeah, it's a brutal market at
the moment for junior engineers because AI has made senior
engineers so much more powerful that there's just, there's just
less need to hire juniors anymore.
But that's not a sustainable strategy, right?
And because seniors are going to get old and retire and someone's
got to, someone's got to come up from beneath them.
I, I, I mean, I don't know, like, I mean, I guess the
advantage if you are a junior now is like, it has never been
easier to learn really, really fast.
Like I said earlier, AI is just the most powerful research and
learning tool in the history of man.
Yeah, I know it doesn't always get everything right and it
gives you wrong answers sometimes, blah, blah, blah.
But like the speed up that you get, the ease of research, the
way that you can just ask such specific questions and, you
know, get clarification on every little thing you're unsure
about. Do just deep research, search
the whole Internet and get back teeth filled reports on obscure
things like I'm jealous of juniors.
Yeah, I would say like. As long as you're not being lazy
as a junior and you're willing to put in the time and learn and
like actually ask AI. Like, hey, if there's a piece of
code you don't understand, have it explain it to you.
Like, that's the coolest thing ever, right.
If you're ever in, like, a complicated module and you're
like, what is going on here? You now have a tool that can,
like, track everything a function is doing and explain it
to you. Oh, absolutely.
Yeah. I I, I I.
I think the the one characteristic that everybody
needs, but juniors especially, it's just curiosity.
You, you, you need to be inquisitive.
You need to always be, be asking like, like, why does it work
that way? You know, what's what's best
practice? Is this a good idea?
What are my options? You were talking about just then
about, you know, how like we're taking on so many more
responsibilities and we're doing broader things as seniors.
I saw a really it was, it was, it was either it was one of the
big AI labs. They were tweeting, I can't
remember who it might have been open AI, something about their
hiring. And they made a really
interesting point. They said that, yeah, they're,
they're finding that their developers are bifurcating, like
the people who are crushing it, They're they're going one of two
ways, right? Like people are either becoming
like hyper generalists, you know, people who who are just
like, you know, great coders with great product sense, great
design sense, they're doing dev OPS, They're they're just
handling every, everything they can.
Or you've got people who are, are like hyper, hyper
specialists. So, you know, you know, but
maybe the special special isn't, aren't necessarily about
engineering. You know, it's, it's about like,
you know, that that interfit, that overlap between that
overlap between like technical skills and then the things that
are like more specific to your business and the industry that
you're in. Just having that really deep
knowledge. Yeah, that matches my
experience. I think AI makes it really easy.
Well, I don't know if I would say easy, but it makes it easier
to be a generalist. I agree.
And I feel like I was gonna say I think.
A is made me more of a generalist, but it's kind of
fits my personality. I like to build things that
solve problems that I have and it allowed me I so I built
Killswitch, which is like an encrypted document store but has
dead man switch capabilities. So like if I stop checking in, I
can have my encrypted documents get sent to, you know, my loved
ones or people that I want to have access to them.
And like, as far as like product, like UI design and
everything like I would not have got a clean product without LLMS
helping me. Oh, absolutely.
Yeah, yeah, yeah, I. Mean that's when yeah, yeah,
that's that that's one of the most amazing things with working
with LLMS is just like sometimes I want to step into something
totally new like that. Like I recently made a desktop
app like for I mean, there was just some something we had on my
team where where we had a web version and we were to cut a
Long story short, we were like, maybe we could bundle this up
into a desktop thing Electron, which I've never worked with
before and I'm sure I could have figured it out anyway, but like
just stepping into that or I've done this with mobile apps as
well. I have very little experience
with mobile apps. I've always been a full stack
web developer. But yeah, just just like diving
into that totally new domain and getting something out super
fast. Yeah.
You know, it's not as good as a super experienced mobile
developer would have made. But, you know, just how far was
I able to get in a day where, you know, previously I might
have the whole electron electron.
Is cool like. The fact that you can just like.
Bundle a JavaScript app up or a web app essentially right?
And now you have a native app. Yeah, yeah, yeah.
It's very cool. There was something I was gonna
say. Yeah, yeah, yeah.
The generalist thing, again, I think it just comes back to
curiosity. I, I just like learning, you
know, I, I, I like understanding.
I, I, I, I want to understand as much as I can about, about what
it just, we're doing, you know, that could be the code itself.
It could be things like, I don't know, we're hosting on AWSI want
to actually get a really good understanding of, of, you know,
all the, all these different things in our infrastructure.
How do they work? How do I work with them?
Because these are the things that make you work better with,
with AI as well, you know, the, the, the secret to writing a
good prompt and getting, getting what you want out of AI.
It's being specific. You know, don't, don't say make
me an app, Say make me a Phoenix app.
Yeah. Make me a Phoenix app.
Where, you know, here, here are the ecto schemas.
They're connected with these foreign keys.
You know, watch out for race conditions or, I don't know,
like you got to know the jargon. You got to know what it is.
And yeah, yeah. Like the deeper you're
understanding, This is why I'm learning so much because you
know the things that I things that I understand.
When I understand the domain well and I know exactly what it
is that I want to build. It's just so easy to work with
AI because I can type out if you don't talk to an.
LLM like a software engineer, you're not going to get the same
output, you know what I mean? Like if you're not using the
right terminology, then the right things like yeah, just
like, hey, build me A to do list app like it's gonna just
blindly, it'll probably build you something, but you're not
picking the tech stack, you're not picking any architectural
decisions. You're not creating your schemas
like. You're leaving a lot out there
to just. Drift in the wrong direction,
right? Yeah.
The reason I'm learning so much so fast is that like almost all
my time now is spent on the things that I don't understand.
Because the things that I already understand, well, I just
crank out the great prompt. It's very specific and I'm just
telling the AI exactly what to do.
And yeah, there's no ambiguities, which just rolls
through it and does it. And it's it's the things that
I'm not so sure of, things I haven't worked with before,
maybe aspects of our own code base that, you know, I'm just
not so familiar with or maybe I've forgotten the specifics
that I'm spending most of my time just interrogating that
asking codecs, how it works, where do things go?
I think I think non-technical PMSIII think they've got to be a
lot more afraid for their jobs right now than than engineers
have. I think great.
Yeah. And a lot of non-technical
roles, actually, I think, you know, even if we're not writing
code anymore, like just, we still have to know how to read.
It and understand it, you know. Yeah, well, even if you're not.
Reading code, just understanding tech, understanding computers,
like, like how things work, right?
Yeah. How things work right like.
The best, the best, the best PMS to work with, the best
recruiters to work with the the best people in those kind of
roles which are software adjacent.
They're the ones who actually understand what it all does,
even if it's not their like core day-to-day responsibility to
like work with it directly. You know, people who you can,
people who you can communicate with effectively because you
speak the same language. So yeah.
And part of the reason we've had this split between technical and
non-technical people is just like it's just a bandwidth
thing. You know, there's a lot of work
that needs to be done where like if you're going to take the time
to like learn to code and like, like get deep into the tech,
then you're not going to have the time to do all those other
non-technical jobs that need doing.
But yeah, like, like now more of the non-technical stuff is being
done by AI, more of the technical stuff is being speed
up by, by AI or like, you know, made a lot easier.
It's easier to learn. So, so those pressures just
aren't there so much anymore. Yeah.
I, I, I think that blurring,
it's already happening. It's like I said, people are
going to become generalists. You've got to become a
generalist. Yeah, we got a couple.
Comments from Bry J Bry, he says, hey, George, I don't know.
And he said the ability to learn is incredible if you have a
sense of what what the real learning is.
And I think that's just like asking AI the right questions
right as you're building things. Yeah.
If we stop Brian Bryce. It might be.
Yeah, yeah, yeah. Hi, Brian, if that's you.
Yeah, sorry, we used to work together.
Oh, awesome. Very cool.
And then he said that if we stopped all AI progress right
now, it would take us years to realize the benefits just to
education alone, he said. Yeah.
Brian Bryce. So yeah.
Yeah, great to hear from you. Yeah, I'm actually working in Ed
tech now. So that's, yeah, it's not just
programming education. Yeah.
And yeah, coding is certainly not the only thing we're we're
that I use AI to learn about. I mean, it's yeah, it's amazing.
I wish that it is. Yeah.
I just imagine if this had existed when I was in school.
I think I don't know. A lot of people are certainly.
I'm not really sure how the education sector is going to
cope because I'm sure there is rampant cheating going on.
Oh, yeah, it did. I would.
Have been in so much trouble. I'm actually glad social media
and AI did not exist when I was in school because I would have
gotten in so much trouble. Oh, social media.
Certainly existed when I was in school.
That one definitely did get me. That one definitely did get me
in trouble. Yeah, yeah.
I didn't have Facebook. Until, you know, two years into
college. So I got, I got a little saved
there. Yeah, I I was part of that
first. Generation where where social
media was like just becoming a big thing when I was a teenager
and in school. OK.
Yeah, that. Would be hard.
I'm like really grateful that didn't happen because there
would have been some drinking parties on there and it would
have been bad. It was a strange transitional
period. You know, this stuff existed and
all, all the kids were on it, but it was still just a young
person thing. And I mean, mostly it was weird.
If your parents were on Facebook, you didn't want them
on there. That was embarrassing, dude.
That's when Facebook. Went downhill is.
When all. The parents joined like it was
cool, and it was just college kids, and then they opened it up
to the world and you're like, well, now Facebook's kind of
lame. Yeah.
Yeah, man, I've got a one year old and I I'm excited for him in
many ways growing up in this new AI world, but at the same time,
like there's a lot of ways it could go wrong.
Yeah, it's God knows, I think. Yeah, in the right hands, it's
an extremely powerful tool. And we can bring all kinds of
benefits to programmers, to kids in schools all over the shop.
But yeah, yeah, it's not hard to.
It's not hard to imagine ways it can go wrong.
I mean, we're already seeing that in some respects.
But, yeah, I mean, none of us know where this is going,
really. I just feel like, well, we were
talking about whether or not programmers are going to be
unemployed. Like, I don't, I don't know if
AI is going to replace us, but I am 100% certain that that like
if anyone gets, if anyone does get replaced, it's going to be
the people who, who, who are late or who are skeptical or
who, well, even people who are technical.
I I I just feel like but refuse to integrate.
With it a little bit dude, it's it's insane whether you like it
or not. Like so I agree with you. 100%
but it is crazy like the the. Holdouts.
How angry they get when you make those comments.
Like dude, I don't know, I just, I think it's better to enter
this being as optimistic as possible.
Like none of us know where it's going, but I do always think
there's going to be a technical fit for everyone that knows how
things work. You know?
Like, you might not need a team of 20 engineers anymore, but at
least you'll have A-Team of like, really, like maybe five
really smart guys that all work together.
And then I think we'll just have more and more companies
springing up that can be more and more useful solutions to
problems that we have. Yeah, you know when.
You and I met at X Mex. What was that December?
I remember there was a speaker who asked at some point, how
many of you do not use AI at all to write code?
And maybe like 10 to 15% of the audience put their hands up,
which, you know, it's a minority.
But I mean, first of all, this isn't, this isn't a, this isn't
a random sample of developers. It's, it's developers who have
the inclination to attend the conferences.
So I, I feel like that, that that's a, that's a select crowd
there. But yeah, like, I just thought,
really, you're not using it at all.
Like, yeah, I can understand if you you're not, you don't want
to be a maximalist, but that's certainly not where I am.
Yeah. Yeah, I don't.
Know I think it, I think it's wild.
I, I mean, I also have buddies that are just like insanely into
AI and you know, running agents upon agents and like they can
barely keep track of what work is being done.
And I'm not there because I feel like I only can fit so much in
my brain and I don't want to be running all these different
instances of you. Know a Claude?
Agent building me all these things that like I can't like
keep up with I that overwhelms me and maybe, I don't know,
maybe that's a a bad. Thing that I have to get over.
I have to like let go of some control I don't know.
Yeah. I mean, I don't write anything
by hand anymore. I haven't.
I rarely do. I do, but not often, yeah.
I I mean, I don't AI is a great code reviewer, not just a great,
a great code writer. Really just the, the, the
limiting factor is the bottleneck is my own brain.
Like I just try really hard to just not let it run off ahead of
me and build things that where I don't have a where, where, you
know, I don't have to be intimately familiar with every
last little little line. But as soon as that gap starts
to open up between, between just just my mental map of the code
and what it does and where everything sits and like, yeah,
so yeah, I am not in that stage either like I am.
I am working all day with AI, with cloud code codecs open in
multiple tabs at once and having a lot of things run.
But that like that more complicated kind of pipeline
where you're like, you've got some big elaborate set up where
different agents with different specialties.
Maybe we'll get there eventually, but I don't know.
I feel like that just runs too far ahead of me and I don't
trust it yet. Me too.
I just. Imagine like these like vibe
coder agent orchestrator guys just going to be like on a spin
a spin board like a DJ soon, just like, you know, doing the
thing just blasting through. Tasks.
And using a what? I don't even know what you call,
what do you call like the DJ where you have the spin board in
front of you? Is that what it's called?
I don't know the spin board. What like the like a like a DJ
like? Who's mixing music?
Like isn't, isn't that just a DJ?
Yeah, but what do you call like? The actual like the the record
part that spins is that. Does that have a name?
I don't even know. I don't know.
I just imagine our. Keyboards changing to something
like that right? For like swiping between tasks
and agents and stuff faster and approve approve instead of
having a full keyboard. Yeah, this is.
Something I I, I've been thinking about because, you
know, like a turntable, that's what it's called.
Thank you. Thank you, Brian.
Yeah, yeah, you know, I, I, I feel like sometimes I feel, I
feel like I just just like the way that I am interfacing with
my AI is definitely sub optimal and and that like I might have
multiple things running in different tabs, but like I, I
have to keep checking, you know, I'll cycle through my tabs.
I'll see. Is this one done yet?
It's it's still a very much kind of pull process.
Maybe that's just because I you know, there's the supposed quote
from Henry Ford, a Ford Motor, who said, you know, if I'd given
people what they wanted, people would have wanted, they didn't
want a car faster horse, right? Yeah, it still feels like that a
bit with. With a lot of the ways that
we've that we're working with AI, like like we're taking all
these paradigms that already existed and then we're just kind
of shoehorning AI into them. I'm working with the terminal
and tabs, which is what I was doing before AI, but I don't
know, I, I feel like it would almost make more sense to have
some like totally new interface where, you know, if I was more
of a technical PM, which I think is, is, is what we're becoming,
you know, you know, like AI needs to report to me in some
way. Like, rather than me having to
go back to the tab and see, see, like, you know, is this thing
done yet? You know, why can't I have some
kind of interface where I set one thing off, I mean, an inbox
really. It's like, OK, this AI is done.
It's come in. Here's here's the report.
Here's some stuff to jog my memory about what, what exactly
was in that conversation. And I don't know, send that one
back off. Like, I mean more sort of, yeah,
I'm more of an executive, you know, just just the reporter
coming to me with, with communicating as well as they
can and I send them off on their way again.
Yeah. I, I, I think it's also kind of
weird in my, in my mind a bit that that like there's no new
programming language, right? Like like we're still, we're
still just using all these same programming languages that
existed anyway. Like what like like is there not
some kind of, is there not the sort of like like AI optimal
programming language? Maybe someone's working on that,
I don't know, but I thought it was just markdown files.
Maybe. I don't know.
I, I, I think in the long run, I, I, I think, I, I think
eventually there's just going to be new things.
There's going to be some visionaries and some people who
just come up with very smart, very innovative ways that that,
you know, once it gets there, we'll think like, how did we
have? It's going to look so obvious in
retrospect. It's like, you know, it's like
Brian said, Elixir is the AI. Optimal programming language.
Certainly Elixir is optimal for a lot of things.
I'll tell you what gives me confidence in Elixir.
I think just Elixir has got some fantastic brains behind it, man,
Like Jose, Chris McCord that they have just, I think they are
smart guys. That's for.
Sure. Yeah, even.
Little things you know, it's like now, now you when you
generate a new Phoenix app, it comes with an agent's MD file,
which is pretty obvious, right? Like why would you not want an
agent's MD file? But as far as I'm aware, none of
the other like like competitor frameworks do that yet.
And I think it's good to see people thinking about this
because, yeah, I think it's cool to see.
It's cool to see like. Joe Zay and like, Chris being so
like, forward thinking with AI instead of pushing back on it
'cause like, yeah, seeing like Tide Wave, like Tide wave's
amazing. I don't know if you've used like
the browser version of it, but I played around with it, yeah.
I freaking love it. It does almost.
All my UI, like my live view programming and like, 'cause I'm
not a front end dev. So like that's like my
restriction. I'm very slow.
Like I can do front end dev but I'm very slow.
But like now like I can just click on components like tell it
what I want to do and like Tidwiff does it.
It's amazing. Yeah, A.
Big part of figuring out how to work with AI effectively, it's
closing the loop. You know, I in the perfect
world, I would just be able to one shot everything.
I would send the AI off on its way and it would come back with,
you know, everything totally done.
But you know, every time that the AI comes back to and it and
it needs a response from me, I need to do something manually,
give it a screenshot, connect it to something, paste some text
in, answer it's question or whatever.
Like like every time that it needs to pause and have me in
the loop that that's like, that's something that I want to
optimize away. You know, right, We're the
bottleneck at that point. Yeah.
You know that that that. And, and part of that part of
that is closing the loop. You know, it, it's just giving
the AI the tools it needs so that it doesn't have to have my
input. You know, I feel like every time
I copy and paste something that, that that to me is, is, is, is
an indicator that things are not, are not wired up as well as
they could be. You know, that I, the AI should
have some way to access the thing that I'm copying.
And yeah, you know that that Tidewave, I haven't used
Tidewave, Tidewave a huge amount.
I've, I've only really played around with it.
But like, I mean, it seems to me that that's the fundamentally
the problem that Tidewave is trying to solve.
You know, it gives, it gives your, it gives the model access
to your, your, your UI in the browser, to your logs to, to,
you know, to your database. Yeah, yeah.
It's just trying to connect as many things as possible.
And yeah, like that, again, that clear clearly to me, that's the
future. This this is what we want to be
doubling down on, like, like just solving those kind of
problems, connecting those things.
So it's great to see that that Jose is like going all in on
that, going all in on that. Yeah.
I'm sure he's going to do a great.
Job of it because he's done a great job of everything else
he's worked on now the thing that like.
Is going to make me like I'm thinking about this now.
Like why isn't there a language being developed that is
specifically for AI? It would just have to be more
readable. Like I don't even know if it
needs to be readable. I don't, I don't know, like do
we just go to down to bytecode? Yeah.
Yeah, I don't know. Yeah, I, I, I mean, maybe in the
future we won't it we won't even need a language of the human
that it won't matter, right. The.
AI will just be writing the bytecode.
But even if we get there, like I, I, I think there's still
reasons to be bullish on Elixir, even even if we get to the point
where AI is so good that that like, you don't need that.
No human would ever need to read the code.
And therefore, like, the things that we like about Elix's
readability are just irrelevant. Like, I mean, first of all,
first of all, like I already said, Elix has got a great team
behind it. And I think, I think they're
going to navigate these if, if anyone's going to figure it out
and navigate these choppy waters, I think it's going to be
them. But also, first of all, you've
got the beam. And yeah, the Beam is just a
fantastic piece of technology for so many reasons.
It just gives you you yeah, it, it just, it just gives you
things for free and it makes them so easy that that in
another language, even if AI is writing it, there's just so much
extra stuff you got to wire together.
And and, you know, it's just more complicated.
I think. Just like what?
Like what? You get with the actor model or
like the supervision trees and processes and message passing.
It fits perfectly with all the AI agent solutions that are
trying to be solved. Absolutely.
Yeah, yeah, yeah. I would love to see someone
like, like try and build something like Open Claw or I, I
don't know, like Elixir clone. Maybe somebody's already done
that, but I feel like Elixir would be a great language to try
and build something like that in.
Yeah, let's see what happens there.
Another great thing about Elixir is just the tooling, like, you
know, just things like mix where there's just so many things or
so many things that you just get really easily.
There's the standardization across projects.
I mean, I, I work a lot with JavaScript at my day job and
many previous jobs. And I mean, in the web world,
we're all stuck with JavaScript for probably for the foreseeable
future. But oh, it just frustrates me.
There's just Dude, I hate JavaScript.
And I can't believe I used to do it almost daily.
I mean, I still write JavaScript quite a bit like for browser
side things that, you know, you just can't really do like things
you don't want to run to the server for with a live view app.
But mix is amazing and a little hack that I just learned.
Like just did you know that for mix test, you can throw the flag
on their slowest and get back the slow like you can do like
dash, dash slowest 10 and it'll return the 10 slowest tests to
you. I didn't know that till like a
day ago. Yeah, I think I.
Have seen that, Yeah, exactly. It's great.
Which is wild like. What like because I was trying
to optimize like some CI stuff and we had slow running tests
and that helped me find the slowest running tests and then I
could send Claude. I was like all right, help me,
you know, fix the. Bottlenecks here we want.
To speed these tests up and it throws a couple ideas at me and
I'm like, oh, that's a great solution.
Yeah, that's the great. Thing about it, Elixir, just
just this default tooling that's baked into the language.
It's so it's, yeah, there's so many like great nifty, like like
kind of more less use niche little features like that, but
also just the main stuff that you use all the time.
It's so it's just excellently designed, you know, no one feels
any need to to make a competitor to try and do it better.
That's a big problem with JavaScript.
There's just so much churn, so much fragmentation.
Every project does something different, does things
differently. Dependency management.
In JavaScript is an absolute nightmare and drives me crazy.
Yeah. You know, dependency management
in Elixir is a really good example of something that, yeah,
where I think it clearly took a lot of inspiration from Ruby.
Ruby dependency management in Ruby with Bundler and Gem, it's
great. Works really well, Certainly
works a lot better than the JavaScript.
And yeah, yeah, it's very, if you know how to do it in Ruby,
Elixir does things in a pretty similar way.
Those are the kind of things where like even if AI is writing
all of your code and you don't have to read anything, just like
having that just great foundation of great tooling,
just great ways to just set up the core of your app, the
architecture, the dependencies, the environments.
Environments are another great example.
You know, you work with Phoenix. I mean, Rails did it like this
as well. But yeah, just, I don't know, I,
I work on JavaScript projects where where like it just, it's
just so much work to like set up a test environment or, you know,
set up staging or, or or get a like what?
I just, I just say I may have a bit of a reputation on sadly, I
don't get to use much Elixir at my current gig.
I may have a bit of a reputation on the team for for the guy, the
guy who won't shut up about Elixir.
Hopefully I can convince someone on the team to.
We'll get there eventually. We we've got a lot of projects
and we're starting new ones. So yeah, you got to bring the
Elixir Kool-aid. And really push that down their
throats, you know, yeah, for sure.
But you know. Things, things like
environments, we do all this stuff with JavaScript where it's
just such a pain. And I'm like, I, I mean, not,
not to keep banging on about Elixir, but like, you guys
realize this is trivially easy, right?
Like why does it have to be so difficult?
You know Elixir, you get it for free or to see like all.
These LLM companies too, talking about recreating the BEAM VM
essentially in Erlang and like guys, all the solutions you're
trying to rebuild already exist since what, 1986?
Yeah, that's a. Lot that's the classic quote
from Joe Armstrong, one of the creators of Erlang.
I'm I'm I'm going to butcher it, but you know, he said Oh yeah,
every sufficiently complex system contains a a buggy
implementation of half of Erlang.
A buggy important Yeah, I. Love that I have heard that one.
It's good. It's true, though.
It's just like guys, it's been around and it works.
Yeah, I. Despite being being like a big
Elixir guy, I, I, I have never written a line of Erlang, you
know, or maybe you, you, you have to kind of dive into it
every now and then because there's just certain libraries
in I've used. Erlang libraries.
But yeah, I haven't really written Erlang code.
Yeah, Erlang's got a weird. Syntax.
I want it. I think it's based on Prologue,
which I don't. Does anyone write anything in
Prologue anymore? I, I, I Yeah, but there's a
couple maybe. That's my Discord server that
will write some Erlang and like one one of them he was like
sharing some AI generated code and he's like, it is it can
finally write Erlang. And he was like, so impressed
because I guess like just a few months ago, it could barely do
like a Hello World app. Yeah, I do wonder.
Maybe one reason the. BEAM never really like like blew
up and became as big as it deserves to be is because Erlang
is just weird. It's like coming from C or Java
or maybe these other languages that were more popular when
Erlang was young. Like Erlang is just not, not
even not even the BEAM. But yeah, it lacked the modern
syntax. Feel right, like any modern
programming language. And I think that's why people
just didn't like it. Yeah.
And then Elixir kind of solved
that because Elixir is just. Fun like that the the syntax of
Elixir made me fall in love with Elixir before all the other
reasons. You know, like I enjoyed writing
it before I understood the power of like a Gen. server or message
passing. Oh yeah, absolutely.
Yeah, like, like, like I said, when I first was getting into
Elixir, I didn't even, I hadn't even heard of any of that.
I I got there in the end. But, you know, I mean it, it's
relatively rare for me to actually like need any of that
stuff directly. But, you know, when working with
something like Phoenix, you know, having worked with Phoenix
for a while, I've written tutorials about it.
Yeah. Yeah.
Like once you understand OTP and you just you you can dig a bit
more into like how Phoenix works under the hood or even things
that are a little bit less under the hood, like things you things
you'll actually use yourself. Like pops up.
Yeah. You just see how.
Yeah, yeah. The beam makes this so easy.
The message passing format. Yeah, it's great.
It it, it's just, it works so well.
Yeah. Well, and then just look, look
how well like. Live view works too.
And that's a an example of just using Gen. servers and things,
right? Like so you're leveraging all
this thing, all these things just using like the Phoenix
library. Yeah, yeah, absolutely.
Yeah, Yeah, it's pretty cool. The, I always tell people,
'cause like I would say there's like a mix of people.
Some people discover Elixir. Like I, I feel like you and I
have very similar stories. Like I was just like writing the
syntax. I heard it was cool.
So I wanted to like check it out and see how I liked it.
And then I got into the complicated stuff.
When I ran into problems in my own projects, I was like, OK,
it's time to learn what this OTP stuff is and like, so like I
slowly gravitated towards it. But then there's like the
reverse, the exact opposite. People come for the shiny
things, they hear about the Genservers and they want to
write them right away. And I feel like when you when
you want to learn Elixir that way, you write a lot of you.
You abuse. Genservers.
So because you try to make everything stateful, especially
if you're coming from like an object oriented past, I think
you abuse Genservers and kind of like over create things that you
don't really. Yeah, I, I yeah, I can.
Imagine I, I would never tell anybody who is new to Elixir to
start with OTP and all of that like that's that, that that's
the last you need to learn it eventually.
But it it's it's very low down the list of the order which you
should learn things in. I agree, but it's still like
that. Shiny object that everyone wants
to touch, right? Because it's so cool.
I feel like the best introduction to OTP.
I'm going to teach it like this in my courses.
Don't don't start by like getting into the nitty gritty of
precisely how how Genservers and what not use like like pops up
is a great example. You know, build something with
Phoenix, build the web app like pops up is a concept that is
certainly not unique to Phoenix or to OTP.
But, you know, don't, don't start with with by getting too
deep into just these kind of esoteric underlying concepts.
Let's build something real, you know, let's build something
where you actually understand the value and you can see it
being used. Yeah.
You know, Hey, hey, pub sub. So in one of my courses, I'll
teach you to build a Slack loan. So you send a message on on
Slack and everybody else who is currently in that room needs to
see that message appear immediately.
So yeah, that's the pub sub pattern right there.
You know, one person sends it, it gets fanned out to to all the
recipients. So yeah, let's, let's use
Phoenix dot pubsub, see how that works.
And I'll explain to you, yeah, what's actually what's actually
going on here. We're sending messages from one
process to the other. Oh, now here's a good
opportunity to talk about processes, OTP Genservers.
But yeah, I mean, that's how I like to learn.
You know, I, I, I'm going to remember it and understand it a
lot better if I'm learning it in the context of something that is
actually like practical and real and that I'm going to use.
And it's it's not, it's not just the, the kind of theory, you
know, I'm going to make it stick in my head with something real.
I always try to like with my. Tutorials that I've made in the
past, I've always tried to build something cool along the way and
as we touch on things, explain it enough to use it.
Like you don't necessarily have to know the whole theory behind
why it exists, right? Like you want to build something
and if you have to do the deeper dive, you'll get there
eventually because you'll need to.
Like you have to when you have to understand something more, I
feel like you naturally will go down that path.
Yeah, this is. One of the things I enjoy about
making courses and teaching, it's, it's just an interesting
challenge to, to take what I know, but put myself in the
perspective of someone who doesn't and just try and figure
out the that what's the, what's the optimal order?
How, how can I explain everything in the.
It's in a way it's almost similar to programming in that
I'm trying to like, I'm trying to determine the, the, the the
clearest possible instructions. Like, you know, what's, what's
the flow that I'm going to send the reader through to, to.
Yeah, yeah. Come out at the end with, with
like the optimal output. Yeah, I, I, I, I mean, like you
said, like, like I, I, I like to do it.
Yeah. It's just the interweaving of
kind of theory and practice. Like I, I, I, you know, it's
like we're going to build something real.
And I'm going to explain to you the minimum or, or, you know,
maybe close to the minimum of what you actually need to, like,
you know, you're going to build it, you're going to see how it
works. It's real.
But, you know, we're also going to, like, understand what we
need to know now. So.
So yeah, well, I mean, if you deep dive into.
Theory on everything, every, every lesson that you teach
would be multiple hours long. And it's just like I'm so
impatient like me as a person, like I want to just build
something and get it working. So that's what I try to do when
I teach it's. Like let's build.
Something as quickly as we can and learn along the way, you
know? Yeah, I.
Mean I certainly the act of create nothing has helped me
learn Phoenix better than than than creating tutorials and
teaching people. Yeah, teaching, because you got
to understand. Everything you're teaching,
right? So you're like, oh, gosh, I know
how to use this, but do I know how to explain this?
Yeah, yeah. Absolutely.
Yeah. You know, you've got to.
Yeah, you've got, you've got to know it inside and out.
Yeah, Yeah, it's. It's hard.
I like. I definitely.
I I get. A little burned out with making
tutorials. I enjoy it but I I think like my
post editing burns me out and then I'm like ah and then I'll
just take a few months off and not make tutorials and.
Yeah, I, I do enjoy it. It's rewarding in many ways, but
it can definitely get tedious. Especially things like what?
I don't know when a new version of Phoenix comes out and I've
got to go back and update, everything got to be done.
I, I, I owe that to my audience. But yeah, I'm really bad at
doing. That yeah, yeah, yeah, I
probably. Don't do it as a speedy enough
of a timeline. But yeah, I don't even know if
I'm going to, I, I don't spend a huge amount of time on the core
stuff these days. It's never been my full time
gig. I mean, it's gone pretty well.
It's certainly gone more than well enough to like justify.
I think the time that I've spent, I've put into it, I've
been doing it for about. I mean, I said I started in the
COVID lockdowns. That might not be true.
I think I like started playing around with some stuff and then
like, yeah, never really went anywhere.
Took a couple of years, left it to the side for a couple of
years and then got back into it. But yeah, I mean I've made
decent money. Not enough to, I mean not enough
to replace a full time software engineer's income.
But selling courses is hard. It's a tough business.
But you know the things. I think I said this to you at
XMEX, like, I mean, I've made enough money that I'm, I'm that
to be, to be happy with it relative to the amount of time I
put in. But also, you know, the things
that have come to me from it. It's not just financial, you
know, it's like, like opportunities have come to, to
me. It's just putting my name out
there, putting myself out there, you know, now, now I'm literally
the guy who wrote the book and, you know, I've got contracts out
of that. I've got, you know, it's, yeah,
I, I things, things have come to me indirectly through it.
Yeah, I think that's the biggest thing like I tried.
To sell a like an introductory course for a long time and I
started to not enjoy it as much. So I ended up just publishing it
on YouTube for free. And but like to what you're
saying is like my free content on YouTube and YouTube and this
podcast has given me like way more opportunities than like the
financial monetization part because one, it like allows me
to talk to really awesome people.
Like I've talked to all the cool.
People of the Elixir. Community on this podcast and
that's like that's pretty wild. And then like this has
definitely gotten me my current job and it's gotten me a lot of
opportunities. Yeah, yeah.
Absolutely. I I don't know if I'll make
another course. Partly that's just because I'm
super busy. You know, it's hard work.
It's a lot of work. I've.
Got a day job, I've got a family.
But also, I mean, if I was to make another course, it would
certainly have to be something AI related.
And I am still really trying to figure out like, like how, how
does this work? You know, like, like how, how do
we teach agentic engineering? I think like, like I said, it's
not just because it's not just about teaching people how to
work with, with the AI itself. That's maybe only 20% of it.
Like you've got to teach the understanding and actually
knowing what you're building. AI is non deterministic, right?
So like my existing course is you're you're you're copying the
code that I give you. But like, yeah, you can't
control. The way you prompt something and
someone else prompting something, right?
Yeah. And also, it's just, I, this
stuff is all moving so God damn fast.
It is, it takes me, it takes me a long time to make a course.
And like I I don't want to create something that's going to
be out of date immediately. What do you think is going to
happen? Like, do you think we're going
to like, agree on a process and a way to use a genic coding like
soon, or do you think it's gonna be this weird flow where people
come up with new ways of doing things, but it's still
constantly changing? Do you think we're gonna see
that for like, quite a few years?
I don't. Want to predict anything
confidently in the world of AI? None of us have any idea what
we're doing. I, if I had to guess, I, I think
we're going to converge somewhat like right now, there is just so
many different things, like there's so many different
models, harnesses, like there's all kinds of new tools coming
out, MCPS. And this is just because it's so
new. None of us know what we're doing
yet. We're all figuring it out.
I think if you look at the way these kind of things have gone
in the past, something new is invented.
You know, people spend a lot of time competing and figuring out
where it's going. People invent new things and try
new ideas. But, you know, like, over time,
some things just emerge dominant.
And we might not get it down to like, one true way of doing
things, but, you know, we learn our lessons.
You know, some things clearly work better than others.
And I think AI will probably go that way in that like, yeah, I,
I think things will converge on fewer ways and methodologies
than there are now. But I mean, who knows, really?
I'm, I'm just, I'm just trying to ride, ride this wave like
everybody else. Yeah, same.
Same. Yeah, Really.
Really. Early and I think these.
These kind of conversations are really important too, because
like to hear how other people are using it, like helps you
change your daily workflows and like, or maybe not, maybe you're
like, wow, I'm glad I don't do it that way.
But like, I think we can, we can all learn from it.
Like the the guys that I work with at Collects, we're always
sharing like new ways of implementing AI into just
working on features or tracking down century airs and things
like that, you know? Yeah, yeah, absolutely.
That was. One of the great things about
Gauntlet, you know, it's three weeks remote, 7 weeks in person,
but yeah, yeah, just in a room all day every day with smart
people who are all trying to figure it out like you are.
And everybody is trying different things.
They've got a perspective that you don't and everybody is just
sharing what they've learned. And yeah, just such a fantastic
environment. And you know, now I'm now I'm
contracting, I'm working with AIAI first team where the
philosophy is very much the gauntlet mentality.
We are doing everything we can to try and use AI as much as
possible and making a lot of mistakes along the way.
But, you know, we're, we're sharing those lessons and
learning because I think everyone is, is, is got the same
mindset that I've already talked about, which is, which is that
like, yeah, we don't know where it's going.
Yeah, yeah. There's still a lot of
uncertainty. But like, like, it's just so
obvious to me that that that like, well, I don't know how
long it's going to take. Maybe it'll take 10 years, maybe
it'll take six months. But like, clearly, like AI is
going to be doing much more than it is now.
Like, we've just got to get there.
Like, like the person who gets there first is just going to
absolutely crush the competition.
So. Yeah, we, we.
We we can risk. Some mistakes along the way just
for that speed advantage. What are your feelings along?
Like just giving access to your code base to just, you know,
third parties essentially like all these like Claw, like
Anthropic and a big conversation.
Like, you know. All these Gray beards that are
really anti AIA. Lot of their reasoning is like,
well I'm not just going to give all my code and access to these
companies to use it however they please.
Oh great. Question.
This is something I think about as well.
I mean, at the end of the day, I'm doing it.
So like, yeah, same. And it's something, I think.
About too, but no matter what I say.
Because there's two there's. Two aspects to this right?
Because there's, there's the sort of privacy angle in that,
like I'm sending a lot of things off to some third party server,
which previously would just have been on my machine.
And yeah, you know, like, like I'm not publishing it publicly,
but yeah, I mean, there, there are reasons to be wary of that.
The the other side of it is just more security and permissions
aspect. Like if I'm just running cloud
code blindly and it's got access to a lot of things on my system,
yeah. I mean there are things built in
it'll ask like A&V files alone. Too like a lot of keys and
things like. Do people think of like?
Are you always thinking about like, not having a copy of your
production keys in your code base locally?
Like these are things that we have to be, like, really aware
of. I feel like now.
Yeah. It's.
I mean, a month or two ago, just there was this, this
unbelievable amount of hype about Open Claw.
You you couldn't, I couldn't open Twitter without seeing 1000
posts about it. Yeah, yeah, like immediately.
And, and, you know, Open Claw is still big.
People are still using it. But yeah, you know, there were
just so many stories around of like, like people who didn't
really know what they were doing.
And yeah, yeah, less technical people who were like, oh, wow,
this is cool. Check it out.
This AI can do anything. I'll just install it and run it.
And then like, I just. And it just needs all.
It just needs these. API keys.
Yeah, there was a blog post. I read it.
Was some some white hat, white hat guy.
He like, I haven't even used open claw that much, but there
there, you know, there's like skill repositories.
You can you can just anybody can upload a skill and then your,
your open claw can download it. And yeah, some some guy it was
one of the top rated skills. I think he even used some like
hacky technique to just artificially get it to the top.
So a lot of people would download it And yeah, it was a
skill that just you downloaded it.
I forget the exact details, but it it, it just did something
very insecure. You know it it just like.
Pinged some public URL in a harmless way.
But you know, if that had been, if that had been a Black Hat
guy, then yeah, he, he was doing it out of charity.
You know, you pinged this and then it would send a message
back saying, hey, you shouldn't have downloaded this skill, you
know, you know, you just gave me access to everything.
If I'd wanted to, I could, I could have stolen all your data.
And yeah, he got like a lot of. Yeah, I think this is yeah, that
I heard a lot like I. I have like glanced at Openclaw.
I have not really played around with it, but they have like a
marketplace for skills essentially, right?
Yeah, Yeah, yeah, there's I download it when everybody was.
Talking about it. And like there's like 30%.
Of them are like malicious and dangerous or something.
Maybe it's not that high, but it was a pretty big number, yeah.
I I can believe it. I mean, to answer your earlier
question, I, I don't know how we're going to, we're going to
solve this. It's a huge problem.
I mean, you see it in, in vibe coding as well, like we've been
talking about, about the risks of, you know, building things
without a great understanding of what you're building.
And that's, you know, something I've seen.
Yeah. Like that's a real danger.
Like security is difficult and security, security requires a
lot of knowledge. Security breaches happen a lot
of the time because you don't know what you don't know because
you don't have that experience. Like like there's just a lot of
things that are non obvious. You know, if you're a totally
new programmer and no one, no one has ever told you that,
like, I don't know, like no one has told you, Oh, no, you
shouldn't output untrust. You shouldn't render untrusted
user input on, on on your page because that exposes you to XSS.
Like, you got to sanitize. You got to sanitize the HTML.
You know, that's the kind of the thing where where like, yeah,
yeah, yeah, that's an important security concern and you've got
to be wary of it. But like, if no one's ever told
you that, you don't know. And yeah, it would be very easy
to just build something and you think, oh, yeah, it works.
And and it never occurs to you that there's a problem with
this. You know, you see this in things
like just architectural choices, setting things up where like
you're not, you don't have the right or beginners mistakes.
Just like like everything looks like it works, but you know,
just things aren't authenticated correctly.
Maybe the back end is sending more data than it should.
You're exposing PII, that kind of thing.
These are just really easy mistakes to make when when you
I. Remember, AI makes that super.
Dangerous. And I don't know what the
solution is. I think it comes back to what I
said about, about, about new paradigms like, like, like we,
we, we've got to invent just just like new ways of
architecting things, new ways of new ways of working that weren't
necessary before. But yeah, because.
The. Old way it, it just doesn't gel
perfectly with these new tools. Yeah, yeah.
And like, it's like, yeah, we learned before AI right through
mistakes a lot of times. And like, I didn't know like how
dangerous like man in the middle attacks were until I experienced
one myself. Or like giving too much data in
a Restful API response and like just allowing things to be
manipulated and you don't really learn these things.
And yeah, now if any of this stuff just gets thrown into your
code base and you don't even know it's there, could be a
problem. Yeah, I.
Think we'll figure it out in the end.
Everybody's got different risk profiles, you know, if you're
working for sure or something where you've got super high.
Yeah. Yeah.
Not all security incidents are equal.
High, you know, the the cost is missing.
Yeah. Yeah, some companies and some
industries, just just the cost, the cost of failure is far
higher. And so there's just a lot more
incentive to be cautious. And so I can totally understand
why those guys are slow walking. AII mean that's.
Yeah, I don't know. I guess we'll see.
Yeah, I don't know. I feel like it's just the Wild
West right now and things will settle down.
Yeah, I I think the. Industry will probably advance
one disaster at a time. I mean, that's the best.
Way to learn, right? You need the mistakes to happen
and then everyone adjusts. Yeah, you know what I said about
new? Paradigms, right?
It's like computers, computers used to be ugly like computers
used to be be beige boxes and like no one ever questioned it
and and it was Apple and Steve Jobs and the iPhone.
Steve Jobs came along and said, you know, it doesn't have to be
like this. Why, why can't your phone be
sleek and beautiful and your laptop as well?
And, and, and it's one of those things it just, it seems so
obvious in retrospect. It's like, why, why didn't
anyone think of that? Of course, you know, of course
computers should be aesthetic as well as functional.
But, you know, you know, Steve Jobs was a visionary in that
way. He, he and yeah, I, I think it's
going to be like that with, with, with vibe coding, not vibe
coding, just agentic engineering and AI.
Although those people are going to come along and they're going
to, they're going to say, hey, why don't we do it in this new
way that actually solves those problems with security or
whatnot. And you're going to sit down in
front of it and you're going to think like, damn, this is so
much better. Like, why didn't, why didn't we
all see this? But, yeah, I, I think that
that's often how these things advance.
Yeah. And I, I make no claim of being
that visionary that's I can dream.
Hey look, I have. Always said I'm like, I'm smart
enough to use smart people's tech, right?
And that's about it. Like, I don't think I'm going
to. I'll just keep talking to people
that create really cool things on on my podcast and that's, and
then I'll use them and I'll build cool products and that's
as far as that's, that's as smart as I get.
Yeah, this is a. Point I hear people make a lot
that, you know, AI is so knowledgeable and it's so smart
and you can ask it a question about anything.
And yet like AI is actually given how, how quote UN quote
smart it is, It's it's not as innovative as like you might
expect. Like like where are the like
huge paradigm busting kind of advances in knowledge that you
know, where, where AI just kind of connected to things that
hadn't been connected before. We haven't seen that yet, have
we? Yeah, and and you know, maybe
that's just an. Artefact of how current AI works
in in that it's just. It's just it, it's not trying to
invent new things, it's trying to predict, it's trying to
predict the next token based on like, like the existing corpus
of knowledge and everything it's seen.
So you know, it's, it's somewhat backwards looking.
It's just really good at pattern.
Matching essentially right, like or pattern recognition, yeah.
Yeah, I was thinking of that because I was wondering why,
why? Why isn't AI that visionary?
Maybe AI can solve the problems with AII.
Don't know. Someone much smarter than me at
Open It. I've seen some cool things.
Like in medical, right, where it can like look at like DNA and
things like that and find patterns in like, you know, in
billions and billions of data points.
But at the same time, it's just looking through that.
Data. Quicker than a human could,
Right? So it's not actually discovering
things, it's just finding patterns.
Faster than a human can, yeah. I guess like connecting to a lot
of a lot of discovery and invention, it's not something
that's wildly beyond what we already know.
It's often just like connecting to disparate things that that,
yeah, that's true. Not been connected before.
Yeah. So yeah, I don't know, maybe.
We'll be seeing more of that soon.
That would be cool, right? Yeah, I'm sure.
Someone much smarter than me at Anthropic or something like that
is working on that. Probably where's Where's Thomas
Miller at? But yeah.
This has been a lot of fun, man. I think we can we can wrap it
up. We've been chatting for an hour
and a half. Do you have any advice for
people out there that might be hesitant to use AI or agenic
workflows in their current day-to-day or anything?
For maybe even like. Junior developers like any
advice there on how to accelerate your career?
Ask a lot of questions. Be as curious as you can as you
can. Force yourself to be like every
try and understand every last little thing that you can.
If there's ever anything you're not sure about.
Why does this code do this? What does that tool do?
What's the best way here? Ask the AI.
And yeah, yeah, just you've got to use your own judgement.
But at the same time, like AI is a great tutor.
And I guess the other thing I would say is, yeah, like I
understand the skepticism. I was there myself for a long
time. But yeah, I I think part of it
is you've just got to push through.
Yeah, if it, if you're experienced, it might, it might
slow you down at first, but try something new, you know, try,
try and build something, I don't know, a side project, something
that, that even if you're experienced, maybe just
something that's just a totally different stack or, or, or some
kind of apathet that is very far outside what you do know.
And, and just see how far AI can take you.
You know, like I'm just say, say, OK, well, I will try and
build this thing entirely with AI and just not use my old
habits. I'll force myself to just do it
all with AI. And then even if you don't end
up building something fantastic, like you're going to learn so
much along the way that yeah, just just just put the time in.
You've got to put in the reps. Yeah, I agree.
And the best way to learn is building your own thing, not
following tutorials. And I mean, take that tutorial
knowledge, apply it to your own project.
Yeah. Absolutely.
All right, awesome. Thanks, George.
And. Everyone that has tuned in,
thank you so much and have a good weekend guys.
Testing.