Jake Bennett and Michael Dyrynda conquer a 14.5 hour time difference to talk about life as web developers
-Hey. I'm Michael Dyrynda.
-And I am Jake Bennett.
[claps]
And welcome to episode 186 of the North
Meet South Web Podcast. [upbeat music]
We are back on the Spindrift kick, folks.
It is back and better than ever. Raspberry
-lime.
-Raspberry lime.
-So good.
-Sounds good.
-Yeah.
-There was-
-It's a tasty one
-... there's a, there's a brand of, I think
it's like Swedish or something cider,
Rekorderlig, and they've got like a-
-Oh, okay
-... strawberry and lime flavored cider-
-Ooh!
-... which is quite... It's those things,
when I was younger, they were great, but
they're so full of sugar, I can't drink
-them anymore. Too old for that stuff.
-Yeah, I wonder, I wonder how much sugar
this one has. I don't, I don't think it
actually has... It's 1 gram.
-Yeah.
-1 gram of sugar, and it's like, it's like
supposed to be zero grams of sugar added.
So it's, the ingredients are literally
carbonated water, raspberry puree, and
lime juice. That's it.
-Nice.
-So-
-It's just fruit.
-It should be, you know... Yeah, not too
bad, not too bad.
-[inhales] Oh, my word!
-None of that corn syrup that you guys
-like.
-Okay. Yeah. Yeah, none of that, none of
that corn syrup stuff. Just, just straight
up raspberry puree and, you know, lime
-juice, whatever.
-Amazing.
-Um, yes, it is-
-I've got 40 minutes before my, uh, my
-Claude Pro, [chuckles] my to- my, uh-
-Before your-
-... my limit refreshes-
-Before your-
So, uh, we've got 40 minutes of-
[chuckles]
So tell me real quick, you said Claude Pro
is on sale for, like, 100 bucks or
-something?
-Yeah, I think the price has changed. It's-
Okay
... uh, Claud- I think the Claude Max
subscription is now $100 a month, and-
-Hmm
-... I think,
-just looking at-
-Rather than $200?
I only looked at it very quick. Yeah, I,
because there's two options now. So
there's, there's, like, the free one,
which gives you whatever the limit is.
-Yeah.
-Then there's Claude Pro, which is 20 bucks
-a month, and it gives you-
-Okay
... five times the limit of the free one.
And then there's Claude Max,
which gives you the option now of either
five times or 20 times the limit of-
-Yeah
-... whatever. So.
Yeah, I think that I've gotten... Let me
see here. Adjust usage. 'Cause I have,
right now, I have, hmm, I have the Pro
plan, but I have the 5X more
-usage of the Pro plan.
-Yeah.
-So I'm paying 100 bucks-
-Right
... for the 5X Pro, and then there's Max,
which is, like, another... Yeah, so it's
like 50% off, it says. It's usually, it's
usually 400, now it's 200, I think is what
-it is.
-Mm.
-Maybe?
-Yep.
-I don't know. Yeah.
-Yeah, I saw that.
-Yeah.
-I just went... I don't remember why I went
to look, but I went to look the other day
and saw that it was
only $200 a year, so I signed up finally
for, for Claude. So,
-but I've, I've been using-
-$200 a month, not a year, right? Not a
-year. Not a-
-No, no
-... not a year, a month.
-Claude, Claude, Claude Pro is $200 a
-month. Claude Max-
-A month. Yeah, yeah.
-Claude Pro, $200 a year. Claude-
-A year?
-... Max, yes.
-Oh, yeah, yeah, yeah.
-So Claude-
-Sorry, sorry. Yes.
-Yeah.
-Yes.
-So Claude Pro-
-Sorry. Thank you
-... is like $20 a month or $17 a month-
-Yeah, yes
-... if you pay for a year.
-Thank you.
-Yeah.
-Yeah, yeah.
And then Claude Max is $100 a month, or I
guess $200-
-Got it
-... is still an option there. Yeah, yeah.
-So I'm not, I'm not, uh-
-Mm
-... I'm not down to pay $100 a month for-
-Okay
-... Claude Max.
-Yeah.
But I, I ponied up for the, the Pro
annual. We'll see how that goes.
-Yeah.
-So.
I, I went, I went with the $100 plan, so
I'm on the $100 a month plan, and,
[inhales] uh, it's great. I don't really
have to care so much about my token usage.
Just us- use Opus for everything and then
let it roll, let it roll. Um, I think I
-have hit token limits once, maybe.
-Mm-hmm.
But other than that, I just let it roll.
So-
-So, I mean-
-I've, I've only switched to Sonnet, like,
-once, but-
-Mm-hmm. Yeah, so I... Because... I mean,
for work, we've got team plans, and, and
those are fine, and so I, I still tend to
prefer
Opus for planning.
-Mm-hmm.
-'Cause, you know, it's got the deep
reasoning, it thinks about things, it goes
and figures stuff out. And then I use
Sonnet for
the actual implementation, 'cause it
doesn't need to think. It just takes
whatever the plan is and runs with it, so-
Take the plan and go do it. Yeah, yeah,
exactly.
-Yeah.
-Yep.
-Um, but I had been using-
-That's a good, I think a good call
-... GLM, because that was-
-Okay
... $200 a year, and that seemed to work
fairly well. And then I think-
-Is that Zed AI?
-Yeah, Zed AI. Yep. So that one seemed to
have been working okay, but I thought I
would just give it a spin because I was
looking... Minimax is quite good. I, I
played with that on the open code, Zen,
when they had that for free. I played with
Kimi as well, which, which seems really
good. Um, [chuckles] GLM seems to
hallucinate into Chinese. Like, it-
-Okay. Oh, yeah
-... it shows you the thinking, and then it
just starts spitting out, um,
Chinese characters or Mandarin or
whatever, whatever it is. So that, you
know, it's fine. It's just funny to see
that every now and then. But, uh-
-Yeah
-... I've, I've been, like, multi-wielding.
I've been, I've been doing, um, Laracon
things, I've been doing work things. I've
been working on Arbor, which, uh, is in a,
like-
-Yeah
-... very close-
-We should talk about Arbor
-... to, to usage state. I've been, I've
been using
Claude, I've been using... Well, I've been
using Opus and Sonnet. I've been using
GLM, I've been using Kimi, I've been using
AMP, all of these things. I'm, I'm right
into it now. Um, still haven't installed
OpenClau or MulkBot or Claude Bot,
-whatever-
-Yeah, I, I want
-... it is today.
-Okay, I want to talk about OpenClau as
-well. So like, okay-
-Yeah
... so I want to talk about Arbor, I want
to talk about OpenClau. Um-
-We have to be careful about turning-
-And then I want to talk about-
... this into an AI show as well.
[chuckles]
Well, I mean, so here's the deal. It's
like, that's just kind of like what's
-happening right now.
-Mm-hmm.
It doesn't have to be an A... It's not an
AI show. It's just like-
-Mm
-... it's, it's kind of like the most
interesting thing that is going on right
now.
-Mm-hmm.
-And so I want to talk... Uh, we can
briefly touch on those things, and then I
can talk about a couple other things if
you want to. Um, but then I also want to
talk about horseless carriages. Have we
-talked about this before?
-Horseless carriages.
-Horseless carriages.
-We have not.
-Okay, I want to talk about that too.
-That's a tease-
-Okay, so let's-
-... for later in the show. [chuckles]
It is. It is indeed. Okay, so couple
things here, um, OpenClau.
-Mm.
-So do you want to talk about OpenClau or
-Arbor first?
-Let's talk about OpenClau. Let's not talk
-about me.
-Okay. Yeah, so I saw Taylor post the other
day that like: "Hey, Forge, you can now
provision an OpenClau thing," whatever.
-Mm-hmm.
-So what is that? I don't even know what
that is. I, I, I was gonna go look it up,
and then I was like, "Eh," I didn't have
time. I was, I was working.... working
that day.
-So-
-So anyway, tell me about OpenClaw.
OpenClaw was previously, um,
previously MaltBot, which was previously
Claude Bot.
-Okay.
-So it's the... I think the idea behind
this is that it's, it uses whatever model
-under the covers. So you, you set it up-
-Right
... as like a tele- it uses Telegram as a
chat interface, or you can connect it to-
-Oh, interesting
-... Slack, WhatsApp, whatever.
-Telegram, okay.
-And so it's just-
-Sure
-... there is a bot, and then it uses, um,
Claude, uh, you know, Opus or Sonnet or
GLM or Kiwi. You can connect it to any
-provider-
-Sure. Okay, okay
... or model under the hood that it
supports, and then it, and it uses that.
-Bring your own key?
-Bring your own key kind of thing. Um, and
so you host it on a VPS, in a Docker
container on your Mac, if you're brave.
There was, like, a, a run a couple of
weeks ago, like, everyone went out and
bought Mac Minis to, to host their, um,
Claude Bot instances. Um, and, and the
idea is that it's, it's like a, a personal
assistant that-
-Okay
-... you ask it to do things. You get it to
schedule tasks, you get it to do
whatever. So it's like ChatGPT on
-steroids, but I think the, the main-
-In Telegram.
-Yeah.
-Like, so that's your interface.
-Yeah.
-You choose an interface, right?
-Correct.
-And so I guess Telegram is a common
-interface.
-Yeah. Telegram is probably the easiest
one, I think, from what I've seen, to, to
get up and running. Um,
and
it, it's basically, yes, Siri on steroids.
Like, if Siri actually worked. Sorry to
everyone whose
-home assistants-
-No, it's true
-... have just triggered there, so. Um-
-It's freaking true. Yeah. It's ridiculous.
Uh, yeah, so you can get it to do
whatever. You can... You know, people have
been hooking it up to their email
accounts, their calendars, reminders,
whatever. Like, all of this stuff that
-feels kind of scary, and I think-
-Like, using MCPs?
No, just, like, "Here are, here are my
username and password. Here are my, you
know, keys," whatever, just giving it
access to these, these different tools. So
it's, uh, interesting. It- a- and people
go, "You know, it's self-hosted, it's all
local." I think, well, the, the bot
software itself, you know, the wrapper
around it, is self-hosted, but it's still
shelling out, you know, using the remote
-models. So it's not-
-Totally, yeah.
It's not as self-hosted as you think.
There's, there's the ability to use-
-You're not running Ollama.
-Yeah, there is the ability to, to host
-your own models-
-I mean-
... but I don't think most people are
doing that.
-Right. Right. Okay.
-But there's, uh-
-Interesting.
-Yeah, there's, like, a whole-
I, I would like to see... I would be
interested to know kind of what people are
-doing with that, yeah.
-Yeah.
-Um-
-Jeffrey, like, Jeffrey's got some videos
up on Laracasts about it. He's been
talking about it. Um, Dreis has been
talking about it. Like, a whole bunch of
the Laravel team have been using it a lot,
and, and so now, you, you know, we've got
one-click deployment of it on, uh, on
-Laravel VPS, so yeah.
-So instead of po- instead of hosting it
locally on a little, on a little MacBook
Mini-
-Yeah, instead of-
-... or, yeah, sorry, a Mac Mini
... hosting it on your own device or, or
spinning up a VPS manually and doing it,
-you just, you know, Laravel VPS-
-Just go deploy it
... comes up in five minutes, then, you
know, OpenClaw comes up in five minutes
-on, on your-
-Hmm
-... um, environment there, so.
-I mean, it makes sense. I mean, it's like,
if all you're doing is hooking it up to
another location... Like, again, if you're
not using Ollama, you don't really need
it, the bunch of, of hardware.
-No.
-It's like if you're just literally taking
it and using it as a place to, like, say,
"Okay, my chat interface is over in
-Telegram."
-Mm-hmm.
"I want you to use my key for this
particular thing, and then I'm letting you
do particular other pieces on my behalf,"
and just kind of keeping it all there.
-Yeah, okay. Interesting.
-Mm.
-I can see that.
-Yeah.
-Hmm, cool.
-I, uh-
-Yeah
-... I still haven't dipped in yet. I-
I'll just say I'll be a late, I'll be a
late adopter to that.
-I'll be-
-I'll figure it out someplace
... I'll be a late adopter once all the
security concerns and things are figured
-out. So it's, uh-
-Mm, mm
... it's definitely interesting, but, I
mean,
my, my biggest thing with it is that, you
know, when Siri ca- and I, and I don't
know, I'm gonna prefix this with, I don't
know if I don't use she who shall not be
-named, because they're not very good-
-Yeah
... or because, like, I just have no use
for it. You know, the, the only thing I
really use it for is setting a timer, and
even that can sometimes be hidden.
-Timers-
-Like, I-
-... reminders-
-Yeah
-... calendars-
-Yeah
... sending text messages, making phone
calls, right?
-Yeah.
-Um, use it for all those things.
Like, stuff that it does well enough that
it's, you know... But
g- getting it to do all this other stuff,
I just... I'm interested to see how it
shakes out, but I'm not interested enough
to actually use it just yet.
Okay, so, so l- let's, let's play the game
here real quick, okay? Hypothetically, I
-wanna make sure-
-Hmm
... I'm understanding this correctly, all
right? The reason why I asked about the
MCP thing is 'cause that seems like the
natural play here. Like, isn't an MCP
basically a new... L- like, so if I have
a, um, I don't know, a Gmail MCP, right?
-Mm-hmm.
-That's installed.
-Yeah.
-And then I authenticate that with my
-Gmail, right?
-Mm-hmm.
It now has access probably to my calendar,
and to my emails, and to my chats-
-Yeah
-... whatever.
-Sure.
-Right?
-Mm-hmm.
-And it is exposing to my LLM, "Here are
the tools that are available to you
through this MCP." Yes?
Yeah. That would be the same way of doing
it.
Why would I... That's, that's how I would
do it, right? I mean, like, what are we
talking about? They're putting their
username and password into, like,
something else. It's gotta be an MCP,
right? For OpenClaw.
Well, does Gmail, does, does Gmail have an
MCP?
-I don't know.
-Like-
I don't know. I would assume that they
would.
-Oh, yeah, it does.
-Google?
-End of-
-Yeah
... December, they, they, they enabled it,
like-
-Okay.
-But again-
-So, so, yes
-... using an MCP only gives you whatever
-the provider gives you.
-So what is this doing? Like, this, what
are they... It's OpenClaw, like, is going
on the browser for you and doing UI
-interactions?
-Yeah.
-Is the idea?
-People... I've seen people do, do all
-kinds of things, um-
-Okay
... where it's going into uncharted
territories, and it's, you know, clicking
through... It's using Playwright's MCP to
go and click through browsers-
-Oh, interesting
-... like, websites-
-Oh, okay
-... and doing all this kind of stuff, so.
You'd have to program them all up front,
right? It's the idea.
Yeah, you'd... Well, you tell it what you
want it to do, and it goes and figures it
-out. Um-
-Okay, so-
But I think the, the, the, the, the thing
that separates it from something like just
using ChatGPT is that it, it uses its own
memory store. So it's got, like, a memory
file and a soul file, and all this kind
of stuff.... and, and so it has
-contextual-
-You can, you can-
--historical information.
-You have full, you have full control over
-the prompt, probably-
-Yeah.
-Right?
-Yeah.
-Like-
-Yeah, you tell it what to go-
-... interesting
--and write in there. You give it, you,
like, you give it it the personality you
want it to have. Do you want it to be
-sarcastic?
-Yeah.
Do you want it to have... You know, I've
seen, uh, you know, I, I mentioned Kitze.
He started this, like, Tinkerer Club,
which you can pay for access to. It's a
Discord thing. But he, he's got, like, 10
different
OpenClaw instances running, assuming
personas of, like, Dr. Cox from Scrubs,
-and, and, like-
-Cool. Okay
... Chandler from Friends, and all of this
kind of stuff. He's got like a- he's got
Saul Goodman there acting as his lawyer.
So you give all these different instances
of OpenClaw, their own personas that are
responsible for their own things, and you
give them access to their own things. Um,
so you've got, like, an-
-Yeah, okay
-... accountant that has access to all of
that kind of stuff. So
it's, it's definitely, like, he's got a
whole army of them. But the, the main
thing is, like, you can use ChatGPT and do
all this stuff, but each ChatGPT-
-Well, sort of
-... conversation is kind of isolated,
-right?
-Yeah, right. Well, and also, you can't
-install MCPs on ChatGPT.
-No.
Right? You can only do what ChatGPT is
allowing you to do.
-Right.
-Now, if they define or create a new tool,
great, and I can now use that tool. But
because it's not a local instance, I don't
have control over my own tool chain. I
only have access to what they give me,
-right?
-Yeah.
-Okay.
-Yeah.
So th- this is, this is the sort of thing
that I'm, that I'm... I think I understand
it correctly, right? But this feels like
the magic that MCPs will bring, which is,
I have access to all... I have all these
services that I use that are on the web,
right? Um,
everything's now accessible through the
web. I mean, it used to be like, there
were so many things that were stored
locally, right? And then we... Remember we
had these netbooks for a while, where it
was like there was no operating system,
basically. It was very thin, and just,
like, the idea was like, you're going to
do everything in the web. And then it was
like-
-Mm
-... well, this is a crazy idea. And then
it was a Chromebooks came out, and now
it's like, okay-
-Yeah
-... everything's actually on the web.
Like, there is no OS. It is all the web,
right? And so great, now everything's on
the web. Wonderful. Um, but what if I want
to interact with those things, not
through a UI, but we want to do it
programmatically? Great, now we have APIs,
we have GraphQL, blah, blah, blah. MCP, I
don't want to have to write every
connector. MCP is the promise that, like,
you just tell your LLM, you have this
tool, it will figure out what thing it
needs to use, and it knows how to talk to
us, and then it'll hand- handle it on your
behalf. So what I can do now is I can
say, "Hey, my local instance of OpenClaw,
you can interact with me on my Gmail. You
can interact with... You can interact for
me on my calendar. You can interact for me
through Yelp. You can leave reviews, you
can make reservations, you can an-
interact as me in GitHub. You can interact
as me, blah, blah, blah. Here are the
-MCPs that I'm giving you access to." Now-
-Mm
... my OpenClaw instance has, when I ask
it to do something, it's going to look at
its tool chain and say, "Are any of these
things relevant to what I'm trying to
accomplish?" "Yes, Jake asked me to make a
calendar reminder for whatever."
-Mm.
-"Okay, great. I'm gonna go talk to that
MCP. I'm gonna go do that thing." So, you
know, the previous iterations of, like,
same thing, like, you have she who shall
be not, not be named, right? The girl in
the box, Siri, Alexa, all the things,
right?
-Mm.
-Um, Google, all those. But the limitation
that they had, again, was like, you...
There was no way to integrate that unless
you were using the service. So if you're
using Apple, fine, you can use their
-calendar reminders.
-Mm.
If you use Google, fine, you can use their
stuff. But there was no way to do, like,
cross-stuff or to do Yelp stuff with-
using that assistant. But now you can,
right? You can roll your own. So, like,
the idea of, like, JARVIS that Tony Stark
-had-
-Mm
... where it could just do things as him
or for him, was previously thought to be
like, "Oh, that's, you know, that could
possibly exist at some point," but MCPs is
what, to me, unlocks that.
-Yes.
-I, I think. You know what I mean?
But the, but the MCP still relies on the
provider offering it.
-It does.
-And, and, and I suppose-
-It does
-... it does.
But, like, I rely on the provider giving
me those tools anyway.
-Right.
-Like, if it's not-
-So this is-
-... exposed through an API, there's no way
it's gonna be exposed through an MCP. So
it's like, uh, is, you know, the full
functionality is likely gonna be available
at some point through that MCP-
-Mm
-... um, which means I don't have to write
all the tooling for it. It's done. Like,
the LLM-
-Yes
-... figures out the tooling, right?
Yeah. So the... Well, this is then where
the difference comes from. So they've got
the notion of ClawHub, which is skills and
plugins and things like that, that you
-can-
-Yes, yes
... imbue with, um, different things. So
there is, like, a CalDAV for calendar, and
it'll go off and, and then it knows how
to deal with calendar. But
it's got browser control, so
OpenClaw can, can browse the web, it can
fill forms, it can extract data from
-anything.
-That's super cool.
-So it doesn't, it doesn't-
-Yeah
... need a, like, a Google Skill might
encapsulate this.
-Doesn't need a plugin, yeah.
-But it's not talking to an MCP necessarily
or, um, you know, using an API. It is
going, like-
-It's using the open route
-... it's opening the browser.
-Yeah.
-Yeah, it's u- it's, it's opening a
browser, um, it's
putting in your username and password, and
it's going and logging in, and it's
reading your emails, and it's doing things
in there, so...
-Super cool.
-It's, um-
-Yeah, you have the full power-
-Yeah, the, right
... of the web a- available to you at your
fingertips.
Yep, but it, you know, it can, it can post
to Twitter, it can watch and transcribe
YouTube videos for you. It can do all
kinds of different stuff, which is
-interesting. Um-
-Yeah.
But yeah, I'll let, I'll let everyone else
kind of figure it out and, and bring
back, you know... It's interesting
watching Jeffrey's journey. He's tweeting
about it, and he, he had it set up like a
daily vocabulary challenge, 'cause he
wants to learn, you know, new words and
things like that. So
very good. So he told it, "Every day at
sometime, send me a new word of the day
and tell me about it and how I would use
it, and what- whatever." And it decided
one day to just text his wife instead. You
know, he sent the message-
-Oh, my gosh
-... to Jeffrey's wife.
-[chuckles]
-And, and he goes: "Why did you do that?"
You know. He asked... He asked... He set
up a, a scheduled task to go and
look on Reddit and Hacker News and Google
and whatever else, and look for people
talking about Laracast and, and seeing if
there's, like, anything negative out there
and, and bringing back, like, a summary.
And he, he tweeted yesterday that the
summary that came back
had, like, some story that OpenClaw had
just made up.... but it didn't exist-
-Completely fabricated.
-There was no link to it. Completely
fabricated it, because it... You know,
these things are all designed to kind of
be useful. You know, that's their, their
purpose in, in existence, is to be useful,
and so it didn't wanna tell Jeffrey,
"I've got nothing to tell you." It just
made something up, so it looked like it
did something.
'Cause he sort of investigated it. He
basically, like, did like, you know-
-Yeah
-... a deposition with this thing. It was
-like, "Why did you do that?"
-Mm-hmm.
And it's like: "Well, because I wanted to
be useful, and, like, I already... You
-know, I was trying to-
-Mm
... regain trust from, like, this mess-up
I made yesterday."
-Mm.
-"And so I didn't wanna, like, give you a
bad news that I don't actually have any
information, so I just made something up
-to make you happy."
-Yeah.
-And yeah, that's crazy.
-Yeah, so it's, uh, it's cra... It's--
yeah, it's definitely crazy. I know, I
know that, um, Simon Frasciootis has been
using it, uh, to build out
a tool to help him. So he's filming AAU
basketball games up on the North Coast,
where he lives, and so he's taking all of
the clips, throwing it into a folder, and
he, he had OpenClaw build a native Swift
app that would go through, and it would
pluck, um, you know, stills from the thing
that you can scrub through to see, you
know, what happened. It then looks at the
audio and, and figures out if there's any
peaks in there, to kind of figure out, was
there some play that got everyone
excited? Was there... You know, and then
it goes and figures out, okay, groups it
by team, looks at the colour of the, of
the uniforms. Okay, these are orange, this
is blue, and, and does all this kind of
stuff for him. Then he's like, he's built
this. He's just asked OpenClaw to go out
and do it, and it's gone out and done it.
So there, there's definitely, um,
time and place to do it. I think having it
in Telegram, that you could just message
it from anywhere, and off it goes and, and
does whatever, is kind of cool. He's
given it his own, like, gi- he's given
OpenClaw its own
GitHub user account, and it goes and just
creates repositories-
-That's cool
-... and shares all this kind of stuff in
there. So it's isolated and can't be
disruptive to Simon's things, but it has
access to, you know, push code and, and
have it reviewed and things like that. So
there are, there are definitely lots of,
uh, interesting s- things that can be done
with it, but lots of, uh,
interesting, as in, I don't know that I
would do that, kind of things that people
are doing with it. So I, I'll let other
people figure out the, the rough edges in
the meantime, but there's... You know, for
me, being fairly late to this, but at
least on board now, um, I'm, I'm okay
opening up
Ghosty and firing up OpenCode and just
typing in there, like, "Go and do this
thing." I'm okay going to ChatGPT and, and
doing stuff in there, so
it's, uh, it's interesting times for sure.
Yeah, it is. It's awesome. I, I'm, I'm
here for it. Um, I've had some friends
recently be like: "Man, I would go back to
pre-AI stuff if I could."
-Mm.
-And you guys are crazy.
-Yeah.
-That is absolutely crazy.
-Definitely, and I would-
-I, I would, I would not wanna do that.
-I mean... Yeah.
-It's like a power tool.
Yes. I think still the biggest issue with
it is, like, you can, you can do so much
more, so much faster, but in a corporate
environment, we still have
responsibilities, and we still, um, you
know, compliance, quality,
maintainability, there's all of that kind
of stuff. And because it can write a lot
of code very quickly, you know, in a
couple of minutes, lots of stuff happens,
but you still need to go and spend half an
hour, an hour, whatever, reviewing it,
-going back and forth, refining-
-Yeah
-... et cetera, et cetera. So-
-And so, like, and that, that's kind of
where I'm at with my guys, too, is it's
like, listen, here's the deal. The AI is
helping to write some of this stuff. You
really have no excuse for not making this
code really beautiful, like, and, like,
very clean.
-Mm.
-Because it's getting you all the rough
stuff out of the... Like, the stuff that
you used to have to do, just to sort of,
like, get the first version out of the
way, is done.
-Mm.
-Like, it's already-
-Yeah
-... doing that. It's writing the tests for
you, for goodness' sakes. So now just go
to go refactor the code and make it look-
-Yeah
-... really nice, and make it feel
maintainable, like, or not feel maintain-
make it maintainable, right?
-Mm.
-It's already got the for each statements
-in there. Now go use a collection.
-Mm-hmm.
Now go... Like, don't just be lazy about
it. Like, take the time-
-Yeah
-... to actually go through, and now you
-get to be the senior developer.
-Mm.
You need to be the... You're the one who's
coming behind. This is not just save you
time, so you can go play
-Counter-Strike or whatever.
-Right.
You know, it's like... Yeah, actually go
through-
-Counter-Strike.
-... and [chuckles] yeah. Anyway, um,
okay, there's that. Arbor. Let's talk
about Arbor quickly.
-Mm.
-And then we're gonna talk horseless
-carriages. All right.
-Yeah.
Arbor.
Uh, I've just put some finishing touches
on it before we jumped on the call, and,
and we're going to start using it at work
for managing our work trees. It took a
-little bit longer to-
-So tell us what it is. Yeah, tell us what
-it is before-
-Yeah, so Arbor is like a work tree
management tool, that kind of sits on top
of Git and kind of provides the ability to
clone down repositories and set them up
in such a way that you can defer to your
agents to then work on multiple branches
and different features and fixes
-simultaneously.
-Work trees. We talked a little about work
-trees last time, right?
-Yeah.
So this is just a work tree management
tool for you to be able to spawn off
multiple agents at the same time to go
work on parallel features, essentially.
Yeah. There's, there's, there's two ways
of doing this. You can clone down the
repository into different directories
multiple times.
Totally valid, nice and easy. Stay with
what you know. Arbor and, well, work trees
allow you to have one directory that then
tracks all of these different branches at
the same time and allows you to have them
all in one directory simultaneously. And
Arbor kind of then gives you the ability
to
manage all of these things. It, uh, helps
you keep them in sync. Uh, you know, if
you've got your, your main branch, you can
then sync your feature branches easily.
This is just a command, and it will track,
"Okay, is this your main branch? Do you
wanna do a rebase or a merge?" And then
every time, you just Arbor sync, Arbor
sync, and it'll pull down rebase and, and
do what it needs to do there for you. So
I've, I've started adding all these little
niceties on top of it. It's got the
ability to scaffold your applications, but
it also has this notion of presets. So it
will detect that you've got a Laravel
application, and it'll go through, it'll
copy the env example to .env. It'll
generate a key, it'll run the migrations,
um, and seed it as if they exist. It'll
look to see if you've got a package-lock
file and run npm and npm run build, and
all that kind of stuff, you know,
because-... as Taylor has, has said
recently, Laravel really is a good
framework for agentic development because
it is conventional, because things are in-
Yes
- certain places. And so there are
assumptions that can be made about a
Laravel project based on what is and isn't
there, so that you can then run these
-things nice and easily. But then, I-
-But wait, according to Uncle Bob, there
should be nothing obvious about the fact
that your app was a, application is a
-Laravel app.
-Yeah, but-
It should just be your domain. That's all
that matters. Larav... The fact-
-Yes
-- that it's a Laravel app should be
-completely invisible.
-Yeah, yeah.
-All right, eat your words, Uncle Bob.
-Mm.
Do you remember Jeffrey Way and Uncle Bob
got in an argument about that, Laracon,
-little while ago?
-Yeah. I think, yeah.
This is never gonna make it to Uncle,
Uncle Bob's ears, so I don't care, but-
No, it's fine. It's, uh, I think, I think
it's possibly that he has maybe had his
time in the sun, and development is-
[laughing]
-Moving past him
-... moved significantly. But yeah, so
it's, you know, it knows the default
things, but then for our application,
we've got multiple databases. So from the
preset, we can then go, "Okay, go and
create this extra, these extra databases.
Go and seed these extra databases. Go and
write these extra environment variables."
I've got it hooked up to one password, so
-it'll go and inject all of the-
-Nice
-... credentials-
-That's cool
... out of one password into the ENV file.
So basically, this, this scaffold
process, 'cause we've got so much to do,
and we build our assets for multiple UIs
and all of this kind of stuff, it takes
two minutes. But what we're doing is
running Arbor work, branch name, and it
will go and do all of that stuff. Um-
-That's super cool.
-And it's like when you go into that
directory, you can run composer test or
Artisan test, or, you know, PHP Artisan
test, or Vendor bin, pest test, or
whatever you're doing, and know that it is
ready to go,
and it will just run the test suite. That
all of the keys-
-That's super cool
-... that need to be there to function is
-there.
-Yeah, I love that.
That everything is kind of just set. That
it'll, it'll link into Herd because it
detects Herd is there. It'll create
databases with unique suffixes so that,
-um, you know-
-Ooh!
-... it's isolated-
-That's interesting
... this branch is there. So if you're
using SQLite, it's easy. You just create a
new database.sqlite file, and that's all
self-contained-
-Yeah, smart
-... within that branch. But if you're
using MySQL, we can't use the same
database.
-That's what we use.
-Yeah, you can't-
-This is a trick for us, too
-... You can't use the same database.
-I didn't know, yeah.
-Hmm. Because if you've got multiple work
trees, if you've got four branches at
once, and you run-
-Right
-... tests in all of those four at the same
-time-
-Tests, yeah, you're clobbering all of them
... You're gonna blow away. Yeah. So we've
got, like, a noun-adjective list, and it
will just, like, smoosh them together, and
then it'll go, "Okay, this is the key for
this,
um, for this work tree," and it'll create
a database.
Does it clean up after itself? Does it
kill your database-
-It does
-... after the fact?
-No, it does. Yeah, yeah.
-See? Okay, so here's what's interesting,
right? So, uh, I feel like there's been,
like, three tools that have come out
around this at the same time. So Conductor
is a tool that David Hemphill uses, and
-he-
-Mm-hmm
... did a whole write-up about how he uses
sort of hooks and stuff in Conductor to
-do kind of what you're doing.
-Yeah.
Um, which may be similar, but like, you
know, yours is a completely customized
solution. You're not at all beholden to
the creators of Conductor-
-Right
-... to build in tooling that you want,
-right? You could just do it-
-Yeah
... which is pretty cool. Uh, software
for, uh, an audience of one, right?
-Mm-hmm.
-Which is the wonderful thing about AI. Um,
there's also another tool that we talked
about on Laravel News last week, which is
doing similar to what you're doing, but
I'm sure not exactly what you're doing.
-Mm.
-Uh, it mentioned the whole SQLite thing.
MySQL is a very interesting wrinkle, and I
love that, that you're doing that.
-Yeah.
-So super cool. All right. Interested to
-see Arbor. I think that's really neat.
-Yeah.
-And, um-
-Yeah, so I was, um-
-Let's check that one out.
-It's all... I think I've got it to, like,
-version 0.9.1, and so-
-Did you see Parfait, by the way? I'm being
-ADD right now.
-I did see-
-Did you see Parfait?
-I... Well, Parfait is... I saw it.
-Leonard, Len Woodard?
-Yes, Len. Yeah, yeah, he reached out to
-me.
-Like the T-
-Yeah, I did-
-The Tui crap?
... The Tui thing that he's been building,
yeah.
-With Arbor?
-I did. He-
-Yeah.
-I spoke to him the other day.
I'm saying, I'm saying, like, I wonder if
that would be helpful with Arbor.
Yeah. Um, so I've got a, I've got a ver- I
mean, it's a v- it's on GitHub now, um,
and you can pull it down and use it. So I
was j... I've got it to a place where
it's, it's ready to go
into our work repo to be used, so the, the
configuration's in there. But I was
writing the documentation for it
to, you know, tell the team, "How do we,
how do we spin this up?" And I was, I was
writing these grim things in there like,
"You've got to pass the OP_volt and
OP_item environment variables
when you run Arbor work, because we need
those variables to go and figure out where
do we pull the credentials from to then
inject into the-
-Okay
-... ENV file." And I'm like...
-Yeah, sure.
-"Now, that's, that's not good developer
experience. I shouldn't have to tell that,
and people have to remember it." So then
I went
and I said to Claude, "Hey, let's put some
pre-flight scaffolding steps in here with
conditions that, like, these environment
variables need to exist. This environment
-file needs to exist."
-Yeah.
And so did that, built it all out. So
got that all done, rewrote the
documentation again, and then realized if
you, if you go install and you don't pass
the flags to it, it doesn't actually set
the, the version properly, and it doesn't
set the commit and all those kinds of
things. So I'm like: Okay, how do we get
this running in, in Brew? So it'll be
available in Brew, which then involved
creating, like-
-That's cool
-... an organization to put it in and
figuring out how to set up a Homebrew tap.
Which, of course, um, Claude made all of
this very easy, 'cause I just asked it
what I wanted to do.
-Of course, yeah.
-And it told me. And it told me, you know,
"Go and create a key here, call it this,
put it into your-
What did you write it in? Was it Go or
something, or what did you write it in?
Uh, Arbor is written in Go. The Homebrew
stuff is-
-Yeah
-... is Ruby-based, so yeah.
-Okay.
-But it's gone and done all this, and then
it's gone and created a GitHub workflow.
So when a release is published, it'll go
and, like, pull down all of the binary
information, all of the checksums. It'll
go and update this
Homebrew tap thing, and then you can just
do an Homebrew update, and it will upgrade
whichever it is, and it'll pull down the
new version. So-
-That's super cool
-... excited to, uh, get that going. And
like, you know, and now, uh, the, the
Codex desktop app comes out, has work tree
support, or Conductor exists. Like,
there's all these things that I'm like,
"No one will use this except me at work,"
which is fine, but it was just a fun
experience. As I said, at... When I, when
I published the video about it, uh, last
week or the week before, it was-... it was
less about making something that I
expected the world, quote, unquote, "to
use," and more about learning how to use
-AI to, to get it to-
-Yeah
... do something that I think is of a, of
a decent quality from a, from a software
perspective, without actually knowing the
language that it was written in. Like, I
wouldn't have written this in Go, but I
could-
-Yeah
-... read the Go that was being written to
understand what it was doing, and then
learning to use different tools to kind of
validate the idiomatic practices that
were being implemented, that it was, you
know, consistent with itself. And, and,
and that kind of... W- it was more a
learning process of: How do I build this
using what's available
as AI tooling? More so than
building a tool for managing work trees.
-So-
-Yeah. Yeah, makes sense. I get it. I love
-that.
-It's, it's there now. So yeah, after,
after we finish recording, when my lunch
break is over, it will, uh... my Claude,
[chuckles] my Claude limit for the
five-hour period will have reset, and I'll
-be able to finish that off.
-Love it. Okay, we are at 32 minutes, so
we've got a couple minutes left here. Not
very long- not very much time. All right.
-Tell me about the car and the horse.
-Horseless carriages. All right, so this is
an article. I might have referenced this
at some point, but it was basically
talking about this idea of... Let me, let
me just see if I can pull it up.
Horseless carriages. I just did this
today.
Ah, there it is. "AI Horseless Carriages."
Okay. Here is-
-Peter Koomen?
-... sort of, uh, let me see here. Yep,
-Peter Koomen.
-Go.
All right, so here is what he said:
"Whenever a new technology is invented,
the first tools built with it inevitably
fail because they mimic the old way of
doing things. Horseless carriages refer to
that early motorcar design that borrowed
really heavily from horse-drawn carriages
that preceded them." So they have an
example in the picture of this carriage,
this massive wheel with, like, basically
this steam coal, you know, engine on the
back of it.
-Mm.
-"The brokenness of the design was in-
invisible to everyone at the time, and
laughably obvious after the fact. Imagine
living in 1806 and riding on one of these
for the first time. Even if the wooden
frame held together long enough to get you
where you were going, the wooden seats
and lack of suspension would have made the
ride unbearable. You'd think, 'There's no
way I would choose an engine over a
horse,' and you would have been right, at
least until the automobile was invented. I
suspect we're living through a similar
period with AI applications. Many of
them-"
-Mm
-... "are infuriatingly useless in the way-
in the same way that Gmail's Gemini
integration is. The old world thinking
that gave us the original horseless
carriage was swapping a horse out for an
engine without redesigning the vehicle to
handle higher speeds. What is the old
world thinking constraining these AI
apps?" Okay.
-Mm.
-So he goes through and he says, "This is
how we've been doing it," right? "We write
a program, and then we basically say: How
can we slap AI on top of this to make it
better," right?
And that's essentially the horseless
carriage. And we've been trying to do
this, I think, at work. So what we've been
trying to do is we've been trying to take
our data entry process for some of our
claims and say: How can we speed this up,
make this better, using AI? And what we've
been doing is essentially trying to use
AI to do almost like OCR extraction, which
is fine, but like with OCR extraction,
you kind of only have, like, it's either
accurate or it's not accurate, and that's
-it.
-Mm.
That's what you get, right? Um, you
can't... Like, it's either right or wrong.
It, it's either 100% or 0%. There's no
real in between. Um, and so that's what
we've been trying to do, but it's been
difficult and, and sort of frustrating
because it's like, okay, well, unless we
can get it to a really high percentage of
accuracy, we can't really use it, um,
because it's just gotta be accurate. So
the trick for me was thinking, like, okay,
is this a horseless, horseless carriage
design? We're taking what used to be,
like, a just simple screen where people
can enter in data and saying: We're going
to pre-fill that data with the AI.
Instead, what I think we need to do is
essentially redesign the user interface to
say, "No longer is that the case." What
we're gonna do instead is we're gonna say,
"AI is really good at categorising
documentation and making guesses at what
party it thinks these particular locations
are referencing." So like, "Hey, here's
an address block. Do you think this is
claimant one, claimant two, or is this an
insured party? We think it's claimant one.
Do you agree?"
-Mm.
-"Yes." Okay, if you agree, well, now what
it's going to do is it's not gonna make
you fill that information into those
-fields. It already knows what the names-
-Yeah
... of those fields are and how to fill
them in, so it just fills them in. Now,
was it accurate 100% at the start? No, but
it doesn't have to be-
-Mm
-... because the human is really good at
recognising, "Oh, in the context of this
document here, I can see this is an
estimate. This is definitely going to be
the insured party." Click Insured. They
-know that-
-Mm-hmm
-... right?
-Mm-hmm.
The system probably even knows that, and
if it gets enough thumbs up in a row, it
can stop even prompting and say, "I'm 99%
sure this is the insured party because
you've told me it is. Every time it's been
on an estimate and it's been this way,
it's the insured party. I'm not even gonna
ask you anymore. I'm 100% sure on this
one." However, there are these other two,
and how do we now use what AI is giving us
to be able to create new user interfaces
that allow it to do what it's really good
at, and then allow the humans to do what
it's really good at?
-Mm.
-So instead of just slapping it all into
there, and then now you have no
differentiation between, like, well, what
did the AI fill in? What was just part of
OCR previously? What did somebody else
fill in before I did? I don't know. I have
to go parse through that information and
just go look through the docs myself
anyway to confirm it. No. No, we're not
gonna do that. We're going to grab the
section of the page, we're going to show
it to you, and we're gonna ask you to tell
us which one it is and/or if you agree
with our suggestion or not. And then after
you click that, it does all the manual
labor that you would have had to do before
of filling all that in, and now, instead
of taking three minutes to load a claim,
it takes 15 seconds because-
-Mm
-... you're just clicking through yes, no,
-or whatever, right?
-Yeah.
So I think this is an interesting thing.
Um, I think as we're all pursuing this
idea of, like, how can we use AI
effectively, I really do think we have to
-sort of reinvent it a bit.
-Mm.
Like, what are the things that we're
trying to slap it onto that it's like,
"Okay, rethink how the process could be
done if you had-"... this when you were
first designing it? You know what I mean?
Um, and so anyway, it was, it's a really
interesting read, and he has some really
good examples of how he would design Gmail
if he was starting over, right? This
Gemini integration, instead of it just
being like, "Hey, we'll do this for you,"
it's, "How could you use it, uh,
effectively to help the user?" One of the
things that he brought up that was really
interesting is that the pre-prompting for
Gemini is fixed. So if you tell it to
write an email for you, you can't imbue it
with any of your personality or any of
your preferences, really. It's sort of
pre-programmed already for you. So what
his suggestion was on that is, it would be
really nice if I, as a user, could write
my own prompt to say,
I w- you know, I'm, I'm a 34-year-old guy
with, like, two kids and a wife. I enjoy
-this type of thing.
-Mm-hmm.
I've been working in this environment for,
like, 10 years. I'm experienced, I'm a
professional. Um, my emails will commonly
have misspellings, and that's okay, I
don't care. It doesn't really matter, and
I'm okay with the misspellings, 'cause I'd
rather save the time. Uh, my emails are
terse, but they're not rude, right?
Whatever. Okay, now, with that context, my
daughter is sick, I can't come in today.
-Tell my boss.
-Mm-hmm.
Okay, well, that puts out a much different
response than if it just uses Gemini's
default prompting, right? And so this idea
was, "Hey, I need to be able to write my
own prompt," and you can't currently do
that in Gemini, uh, in the Gemini
integration. So anyway, it's an
interesting article. I would suggest
reading it, and it's, it's really helpful,
and I've just been thinking about it a
lot. So I'll let you know how it goes.
Um...
-Yeah, cool.
-Our Andy, Andy Hinkle on our side has been
the genius behind building this
integration on our data entry product.
It's super cool, the stuff that he's
doing. It's unbelievable. I don't
-understand half of it.
-[chuckles]
Every couple of days, he's telling me
about these new breakthroughs that he's
had, and, um, it's really fun. So yeah,
I'll definitely keep you updated with our
-progress-
-Yeah
... and kinda how we're going on it, but
it's been fun.
Cool. All right, I like it. Sounds like a
good place to wrap.
All right. I agree, I agree. Uh, tell me
the episode number, Michael. What are we
-on?
-186.
186, folks. Uh, check out show notes for
this episode at northmeetsouth.audio/186.
Hit us up on Twitter, on X, on Bluesky,
@jacobbennett, @michaeldirindo, or
@northsouthaudio. And if you have any
questions, we'd love to hear from you.
Rate it up on your podcatcher of choice.
Five stars would be incredible.
[upbeat music] Thanks so much for hanging
out with us, everybody. We'll see you
-again in two weeks.
-Bye.
[upbeat music]