-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.
-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]