Welcome back to the show.
Today we have with us Steve Bauman,
who created a brand new package.
It's called IMAP Engine,
which is deep into the
abyss of email, correct?
(laughs)
So tell us, if you don't mind,
just tell us a little
bit about IMAP Engine
and how this got
started, why you created it,
and sort of the backstory on it.
Yeah, yeah, so I have a
side project right now,
not product promoting,
but it's called SpamWise,
and it's an email-based service.
And so users can sign up
and they can attach
their email to my service,
and I need to process incoming emails,
and I had to do it through IMAP.
And so I did what kind of
any kind of PHP developer does
when they have to
access some kind of protocol
or something that
appears super complicated,
and they go, "I wonder if there's a
package for this," right?
And so I went searching,
and I went and found what I thought
was kind of the best at the time,
and I installed that, and over,
I started, after I
started working with that,
once you start working
with this kind of stuff,
you start noticing issues.
You're like, "Oh, I bet I could fix this
"or I could make this
better in some certain ways,"
and once you start getting a handle
of how it works and such.
And I started getting a lot of issues
with the package that it shows,
and I was kind of
just, I ended up forking it
and rebuilding it from scratch,
and that ended up just being a nightmare
because it was so
convoluted and complicated.
I'm like, "There's no way
that it's this complicated.
"It can't be true that it
has to be this complicated
"to work with this protocol.
"There's no way."
And so I was like, "You know what?
"I'm gonna dive into the RFC.
"I'm gonna read the whole RFC
"and see why this is so complicated."
Because I was also, because when I was
having these issues,
I was like, "Okay, maybe
there's another package
"that I could use."
I started looking around, I'm like,
"I'm looking in the
source of these packages."
I'm like, "Why does
this look so complicated?"
I'm like, "I'm having a hard time
understanding this."
And so, and yeah, so I
just dove into the RFC.
I'm like, "I'm gonna
just take what I know
"and try to just
build from the ground up,
"like connect with the stream,
"read the stream character by character
"and create a
tokenizer and create a parser
"and all this stuff."
And eventually I got
to a point, I'm like,
"Oh, okay, it's not
actually this difficult.
"I've just been reading
convoluted and difficult solutions
"and I could just make it simpler."
That's awesome.
Speaking of reading the
RFC, do you enjoy that?
Is that like a good hobby
that you have on the side?
That's like the driest read
you'll ever find in your life.
Yeah, no, I didn't like it at all.
It was so painful and it was
born out of the frustration.
I think a lot of other
developers make feels that,
you know, I'm like, "You
know what, I'm gonna do this
"and I'm gonna grind through it
"'cause I don't want
anyone, if I'm gonna do this,
"I don't want anyone to have to do,
"to read an RFC, this RFC again
"and I want to never have to have
"other developers experience this pain."
And so that was a motivation for it.
I'm like, "I'm gonna sit there,
"I'm gonna do this every night
"and I'm gonna finish it
and it's gonna be beautiful."
(laughing)
That's awesome.
Well, I guess that's what
relates me into, you know,
what was your sort of
the biggest challenges
while reading this?
Reading the RFC itself
or was there any code thing
that was like super hard or?
Yeah, definitely the
parser and the tokenizer
the trickiest thing for sure.
I use a lot of back and forth,
like rubber ducking with
chat GPT and various models
and stuff, just trying to figure out
how to properly parse some pieces
and what the proper
format was of some responses
and error codes and all that.
It's definitely, it
was tricky to nail down
and it took two weeks to kind of really,
two weeks every night just
kind of really wrestling with it,
nailing it, writing tests for it
and keep iterating and iterating on it.
And I'm not typically one to write
tokenizers and parsers.
Like I rarely ever do that,
that's super in the weeds, right?
Like talking and listening
to a stream back and forth
is super like low level, which is
something I don't do.
And that was definitely the hardest.
Gotcha.
I guess one of the
question that I see come,
that I've seen come up a lot
is how does this package differ
from like the native PHP IMAP function,
from back in the day?
I mean, that thing was probably created
in the early 90s, I'm guessing.
Yeah, yeah.
And I probably would
have leaned into using it
if the methods or the
extension was like available easily,
but right now the IMAP extension
doesn't get shipped with PHP by default.
So you can't just
toggle it on the INAML file.
And so you have to
actually like compile PHP with it,
which is its own process.
And it's all like complex and convoluted.
And the package that I
was using at the time
was just using a raw stream to do it.
And its feature was like,
oh, you don't have to
have the extension for it.
And I know the pain of
having to like install
the IMAP extension too,
because I tried that at the very
beginning of this product
that I was building.
And that was difficult.
And one of the other primary things
that the IMAP extension
doesn't have is called idle,
which is basically it opens
up a stream and keeps it open
and receives notifications
of when new emails come in.
And so it basically
allows you to just get alerted
or pinged as soon as emails arrive,
and you can immediately process them
or do something with them.
Versus if you're working with like POP3,
like in other email protocol,
you have to introduce polling.
So you're just
constantly like asking the inbox
if you have new
emails every 15, 20 minutes
or whatever interval.
And so that was something
that I had to have as well,
which isn't possible in
the PHP IMAP extension.
Understood.
Yeah, because I was trying to think,
because I used to do a lot of email
parsing back in the day
and we would basically
just had an old Chrome job.
It would just log in through IMAP,
check and see what's new, download it,
and then go about its life.
So with this idle thing,
you don't even have to
do that anymore, right?
It's more real time, I
guess is the right wording.
Yeah, exactly.
It's real time.
So you can basically just get to boot up
some kind of daemon in the background.
So you just register,
like I just use a Laravel command
that I registered as a daemon on Forge
and it just sits there open,
basically in its own loop
and its own stream loop.
And it just waits for new
messages from the server.
Sweet.
So, and then I assume
that's like super beneficial for,
you know, for, I guess
for like speed or, you know.
Yeah, yeah.
Basically there's just lots of benefits
to doing it this way versus
the sort of the old school way.
Yeah, yeah, absolutely.
Because especially in
the product that I built,
and it's imperative
that I act on the email
as fast as possible.
And if I was going to build it,
I had to get at the
emails as soon as they arrive,
if possible.
And if I wasn't going
to be able to get them
like as they came in,
then there's kind of no point.
Because if I'm
looking for spam or phishing
or whatever emails and the
user can interact with it
before I actually scan it,
then the product's kind of defunct.
I can't really,
I'm kind of not helping them much there.
So, yeah.
Yeah.
So how about, let me go get my note here.
This, I think we touched on this,
but we'll just clarify,
does it support parsing
and handling, you know,
sort of the different character encodings
or non-UTF8 emails or all the other mess
that you might get out of a email inbox?
Yeah, luckily that's
handled by the package
we're talking about
Z-Bates and Mail, Mine parser.
Mine Mail parser, it's
whatever combination is.
But yeah, luckily,
because that package
saved me months of work
and huge kiddos to him to
build some solid package
and out of the code there
to make sure I was like,
if I'm going to install this,
I can't just have this
package wrap some other library
that I don't think is well built.
I really want it to be
like a complete solution
that feels good and is also,
if any packages that I was
going to have to be reliant on
that those also be well built.
And so I think he did a
great job on that, luckily.
Yeah, that's sweet.
Yeah, that's, we were talking about it
kind of before we started the
show and that was a package.
I was, had some familiarity with
because it takes a lot of
the headaches out of parsing.
Like, you know, what you, like,
I don't know if you've
never parsed the emails before,
you will get into the
most random bugs and issues
and just weird stuff that
you've ever seen in your life.
Yeah, oh my gosh.
Yeah, holy moly.
I was so surprised at how complicated
and deep in the weeds you
have to get for email parsing.
Email parsing is so complicated.
I was like, I hope someone wrote
something well for this.
Yeah, yeah.
And then everybody's
like, well, you know,
there's this SaaS app you can just
install and use there.
So I was like, well, I can't use that
when we do self, you know, self installs,
all this other stuff, but yeah.
So then it was just, you know,
parsing it yourself is not fun.
Yeah, yeah.
And I think we need these solutions.
If like, I feel like it's really common
in the JavaScript land that
you just kind of outsource
these core functionalities in your auth
and your queues and your
email service and all this stuff.
You outsource all these huge components
that I feel like we should
be able to have ourselves
and PHP without having
to sign up for the service
and pay them to do it, you know.
And they've offered so
much of that, you know,
so much of that for free
that you can just host locally,
like on your machine
or on your own server.
Yeah, for sure.
I think that's one of
the benefits, you know,
to a true full stack or a
full framework, you know,
it handles all this stuff
and you technically don't have to go
reach for third parties
unless you just have some
obscure use case or something.
But that does bring me,
speaking of third party stuff,
if didn't like Google and
Microsoft and all those guys
or Habs, didn't they try to
prevent you from using IMAP
and wanting you to go
directly to API calls now
or am I mistaken on my memory there?
No, you're partially correct for sure.
So you can actually
connect to IMAP through like to,
you can use IMAP to connect
to Google and Microsoft inboxes
if you use either
OAuth or a app password.
App passwords is easier, but
you kind of have to go deep
in your weeds, deep in
the weeds of the account
to generate an app password.
And usually they won't even advertise it,
they do, you have to grab
like a link from somewhere
to navigate directly
into your account to do it.
Google, for example, doesn't even display
that they have the functionality,
you have to actually navigate directly
to like an account manage
link with app passwords on it
and generate them there.
So really deep in the weeds,
but getting access to connect over IMAP
with Google in
particular is extremely difficult.
I had to do it, I had to go
through CASA2 verification
because if you connect through IMAP,
you ultimately have
full access to the mailbox,
you can move emails
around, you can delete them,
basically full spread, right?
You can do whatever you want.
And they consider that as like a
dangerous level of scope.
And so because they see it that way,
you have to go through their intense
security verification.
And it took me four
months of just back and forth,
back and forth, getting
like trying to figure out
what they wanted next to
make sure I was compliant.
You also have to go
through a third party,
which does some pen
testing on your live application,
just to make sure that
there's no obvious like polls
and all that stuff,
which made it very painful,
very painful.
And now they even, they made
the process even more difficult
because they stopped
offering it for free.
So you have to pay 600 US dollars a year
to keep your CASA2 verification
just for the privilege of OAuth thing
and connecting through IMAP.
So now I basically, but
luckily there's a workaround to OAuth
and it's for Google and it's just
generating an app password
and you bypass all of that.
So that's basically what
I've had to instruct users
to do on my platform is
connect over app password.
Yeah, yeah, that makes sense.
I seem to remember like
a couple of years ago,
we were using app
passwords and then they were like,
we're shutting that down and like you
have to move to OAuth
or move to something
else by a certain day.
And it was the same way,
it was like you had to
go through all the stuff
and it was just the pain.
But speaking of your product,
I know you mentioned
it's called Spamwise.
So just tell me about
that, like how does that work?
Yeah, so Spamwise isn't, it's Spamwise.ai
and it's an AI based app.
And it kind of came
from me getting phish.
I got phished once by a
perfectly targeted email,
a delivery notification email.
I was expecting a delivery
from a company about a year later
and I got an email like
the next day saying that,
they tried to deliver and
to attempt to re-delivery,
we're gonna have to charge you fee.
And I've had to pay
this kind of fee before
and so I go through and I
enter in all my information,
my credit card and they had
the whole peer later website
all mocked out and stuff.
And so luckily I thought that was weird
as soon as I went through the payment.
I'm like, that was kind of weird.
I should probably check if,
this is on my smartphone at the time.
I was doing this all to my phone.
And I was like, that was kind of weird.
Maybe I should check
to see, like make sure,
go back to the link and
double check the domain name.
And of course it was
some weird domain name.
I'm like, oh my gosh, why did this email,
this obviously not peer
later email land in my inbox?
Like why did Microsoft,
because I use Outlook.
And I was like, why, this is such an
obvious phishing email
because the address wasn't
even a peer later address,
but at the time they didn't
show the address in there.
So anyway, once they were short,
that was, I was so
upset that I got phished
that I'm like, I'm gonna make sure
that this never happens to me again.
And anyone else who may
have also happened to.
And so I built the
product that I tested first.
I was like, I wonder
if I could use Chagibiti
to determine if an email
is like phishing or not.
And I was like, oh my
gosh, this is so accurate.
It's so, so accurate.
It's like 95 to 99% accurate.
It's highly accurate in figuring out
just IO3 header
checks or by like contents
or by the links and
having like AI context
to determine if something
is spanned is super accurate.
And so the issue is gone for me.
Like I don't have that
anymore because of the product.
And that's why I built it.
And I'm really glad that.
It works.
Yeah, that's like, yeah.
Those are the best product ever is like,
I had this problem and
I'm just gonna fix it.
And if people wanna buy it, good.
But it's gonna solve all my problems.
Those always seem to
be really good products.
You mentioned Forge.
I know it started off the same way.
Taylor's like, this is annoying.
Let's build something.
And then it took off
and now it's successful.
But yeah, that's a perfect use case.
Scratch your own itch kind of stuff.
Absolutely.
It is wild though.
I use Gmail, like Google apps
for your domain or whatever.
And there'll still be
occasional like PayPal ones
that come in and I'm like, this is shady.
Like none of this makes sense.
I'm like, I don't even
know why it's in my inbox.
And it's like, it's even
like to the wrong person.
But for some reason,
I don't even know how.
I need to go back and
look through all the headers.
But I end up just deleting them always.
I'm like, oh no, not touching that.
But yeah, it's crazy.
Yeah, it's frustrating.
So as far as like the IMAP stuff,
at its core, since you're
sort of using another package
for the parsing and stuff like that.
So the IMAP side of
it is you're just like
logging into the mailbox, just checking,
I guess folders that you've
sent in your search string.
And then just grabbing
new emails that come out.
Is that sort of, am I
thinking of IMAP the right way
as far as how in works technology was?
Yeah, it's like a mailbox management API.
So you can get all your mailbox folders.
You can get all your
messages in your folders.
You can execute
queries, like they support
like their own query syntax.
So you can look for messages before or
after a certain date
that are not seen or flagged
or that are within certain folders.
And you can move them
around, delete them,
flag them, unflag them and
kind of do whole management
across, oh, you can also
create draft emails as well
through IMAP and then like later pick
those up through SMTP
and throw those, like send those away.
So basically it's just
like a complete solution
to managing your mailbox.
I like that.
And as far as like, I know
since you're running SpamWise
and you've created this,
is the majority of people
sticking with like Google and Outlook
or Gmail and Outlook or is,
or there are still quite
a few people still running
their own mail
servers and stuff like that?
Oh yeah, it's a good question.
I've actually seen, it's pretty split.
I've seen, like I don't have many users.
I think I have probably like 12
subscribers right now.
It's very, very small still.
I think I have a half
our Outlook and Gmail
and half our like custom,
custom my mount servers for sure.
That's interesting.
I didn't think anybody
would still be running
their own mail servers.
For sure, yeah.
I was definitely, I'm
definitely surprised there.
Yeah, yeah, me too.
Yeah, I'm surprised.
I can't imagine running that.
Cause that would be,
that would certainly be
an uphill painful battle
to run your own mail server
and keep the
reputation alive to make sure
they're at all deliverable.
Yeah, yeah.
And I assume like you need to,
I didn't even look at
that on the read me.
You gotta make sure, you know,
if they're using IMAP engine package,
then they should be using spam wise
because what better way to make sure
you're not pulling in
spam than to run spam wise
along with IMAP engine.
Yeah, that's right.
Gotta cross market this stuff, you know?
Yeah, yeah.
I'm always careful about kind of like
cheapening the message a bit though.
I always, like I don't,
and it is also like a
scratch manage thing.
Like it's so nice to not
care if it's successful or not.
I'm like, I don't
care if it's successful.
I'm gonna run it and
maintain it regardless
of anyone who uses it
because I'm gonna use it
every single day and it doesn't matter.
And that's, I think
also very freeing, right?
You don't, you have to be like,
I don't have my
livelihood riding on this app.
And also it gives confidence.
I would think to the users that,
okay, this guy's gonna be running it
whether or not it's successful.
So it doesn't matter.
Like it'll always be online essentially.
Right.
What are some other apps like the,
as far as like the IMAP engine,
like how do you see it being used or,
I know it's pretty new,
so you might not have a
lot of data behind all this,
but I guess kind of anything
that you're building PHP with email,
you might need this.
Is that sort of what you've been seeing
or is it like more specific use cases?
Yeah, I would think a lot.
I would think of used
a lot in intranet apps.
I came from, like my
career was kind of born
in the enterprise world,
building intranet apps for the federal
government of Canada.
I was a young kid just
building in siloed servers,
not having access to the internet,
but we had all of our
infrastructure internally.
And so I was using PHP at the time
to kind of talk to all of
our internal services and stuff
without access to the internet.
And so I think it would be,
I think IMAP engine would be
probably particularly useful
in those circumstances where you do have
maybe some in-house email servers
or you are kind of
processing incoming emails
to act upon them for something,
maybe like an IT help desk or something.
And those kinds of apps, yeah.
Yeah, that makes sense.
Yeah, in my past
history, we had a help desk app
and it was the same way
we'd had a bunch of customers
that would just run
it completely offline.
But then I can't remember
how they would get around that,
but they would check emails somehow
and then it would,
but basically you
could run it all offline
or all behind a firewall or something.
So that makes perfect sense there.
And not to sort of, well,
I guess we should close out with this.
Did we miss anything that you
wanna talk about on the IMAP?
Not really.
I think it-
Cause I was gonna say,
cause I would like to talk
about your other package.
You've got one called
LDAP record, is that right?
Yeah, yeah.
It was born out of the
same kind of frustration,
I think, as IMAP engine.
And for those not familiar with LDAP,
that is directory
access for finding users
or something like that.
I'm thinking about it right there.
Yeah, it's lightweight
directory access protocol.
And it's again, another
intranet focused protocol,
like Microsoft Active Directory,
which is basically a directory of users.
Like if you are working in an enterprise
and you have a user account,
that's where it's gonna be stored.
And so again, since I was building everything internally
in a Microsoft based environment,
we had everything connected
to Microsoft Active Directory,
which uses LDAP.
And so we had like our
printers connected to it.
We had all the computers, all the
devices, all the phones,
like mail servers,
everything is connected
to this Microsoft Active Directory
to manage all the user accounts,
all the permissions, who
accesses what and everything.
And so that's where
that was born from, yeah.
You're just deep into the woods of,
stuff that most people,
I guess most new
developers probably haven't touched
any of these technologies, have they?
But the, which I'm trying to think of,
where I was going with this.
So the LDAP record or LDAP directory
isn't tied to email,
but it can, you can use it
as far as like pulling emails.
Am I thinking, can't they kind of go
together at some point?
Yeah, absolutely.
You can use it to like authenticate,
like using those
credentials to authenticate IMO,
for example.
Yeah, like that's where
the username and password
could be stored for the
mailbox in IMO, for example,
that like Microsoft Exchange server
could be connected to.
Yeah, and it is really deep in the weeds.
It was something that,
that when I again was
interacting with this protocol,
I was like, there's
gotta be something out there
and the solution's
out there that I tried.
Again, I forked another package
and I was like, why is this so difficult?
It can't be this difficult.
I'm like, there's gotta be a reason why
it's this difficult.
And so I started like
playing with it and I rebuilt
that package, but I had to
eventually throw it all out.
And I started something from scratch
and I've been maintaining it
for probably the last three,
three, four years now.
It's matured quite a lot
and it has actually like
a quite significant amount of downloads.
And I think there is an
untapped market in PHP
in the enterprise, in the
intranet enterprise market
where there's an unseen
amount of people building
their full apps internally
that don't actually do
anything on the outside.
I mean, that's what I
was doing for years.
I wasn't building anything public-facing.
I had maybe, I was lucky
to have maybe 10, 20 users
of the enterprise kind of using my app.
And I felt super
proud of that at the time.
That was a kind of a guess.
I got like 10 people
using this, this is sweet.
That's awesome.
But yeah, it was a really fun experience
and it comes with
trade-offs and benefits,
but it was a lot of fun.
On a personal level, like how,
since you're so big into
like the Microsoft world,
what made you go with PHP
versus like ASP or ASP.net
or whatever is over there now?
That was, when I
started it was PHP or ASP.
Those were your two things or ColdFusion.
So I'm just curious
like why PHP and not ASP
since you're so big
into the Microsoft world?
Yeah, that's actually
a really good question.
When I went to community college,
I was taught C-sharp and PHP
and PHP at the time
just seemed a lot easier
and it was kind of easier
because it wasn't
C-sharp is very strictly typed
and you have to compile everything.
And it was a slow moving process.
I think at the time I
was, I gravitated to PHP
because I could just change
something and refresh the page
and it something happened.
Because every time I
did jump into C-sharp,
change something, click
the compile button and play
and then it rebuilds
and then you're able
to access the new code.
And it was such a hard
process, a hard learning process,
especially back then
we didn't have any AI
to tell you what you're doing wrong
and what you're helping.
It was like, I would spend hours
trying to get something to compile.
And so when I didn't have to
deal with that in PHP land,
it was such a
significant productivity boost
where you just keep like
change something, refresh,
it just kind of spiraled from there.
And I'm like, okay,
there's definitely something.
I think I can get something going here.
All right, that's cool.
Yeah, my history.
So when I started, it was,
I used front page and then--
What's that built on?
Microsoft, Microsoft front
page from back in the day.
Oh, right, right, right.
And you didn't use,
basically it was just a WYSIWYG
and you would publish the web.
And I was like, well, I
wanted to build this little app.
And it was, at the time I was like,
I don't know any language.
And, but the internet was like,
you either do ASP or PHP.
So I started doing ASP
because I was already
on a Windows machine.
I was like, oh, this will be good.
But then I started looking at hosting
and like the ASP
hosting was like $20 a month.
And I was like, well, that's dumb.
I'm just gonna PHP.
(laughing)
That's how I found PHP and never left.
Jesus is kind of like an economic
decision at the time.
Yes, it seemed to work out in the end.
But--
How was your learning
curve with PHP then?
How did you make that migration?
So I was actually working
at a motorcycle dealership
in sales and I was like,
we need a way to show our
inventory on the internet.
And that sort of got me, so I
just wanted to build an app.
I had no programming experience at all.
And so back then you
would just go visit forums,
ask questions, read
questions, try to help out.
And that's how I kind
of sort of picked up PHP
and figured it all out.
So this was way back.
This was before CSS was around.
It was everything was tables, spacer
gifs, stuff like that.
So it was way back.
When did you personally
discover like Laravel?
So for me, I went from just straight PHP
and then moved into found code igniter
and I was like, oh, this is really good.
And then as soon as I found Laravel,
which was like version, I don't know,
it was super early and Laravel,
because Laravel went from
like version one to three
within a matter of six months probably.
So it was somewhere in that range is
where I found Laravel
and I just never left.
I was like, this is great.
I love it.
I like the way Taylor,
his ideas going forward.
So I just kind of stuck with
it and the rest is history.
So I guess that was
what, 13 years ago, 12?
I don't know, it feels longer,
but it could be shorter though too.
Were you in the version three round then
when you started
building with it or at four?
Oh yeah.
No, I was in the round
when it didn't have anything
but just the really simple route.
Like, I forgot what,
anyway, it was like sort of right
after the first
announcement of where Laravel came out.
It like didn't have models or controllers
or anything back then.
Oh, it was very verbal, okay.
Yeah, so it was really early
and really, really,
really a long time ago.
But yeah, it's a,
yeah, back then it was IRC.
We all just chatted on our IRC.
So old, yeah.
Back in the good old days.
Yeah, yeah, no kidding.
Well, to go back to
what you're working on,
any other projects and stuff
that you've been working on
recently or you have launched?
Yeah, well, I'm
actually working on a product
that I didn't think that
I would ever really think
I'd be able to build is I'm
working on my own email client,
actually, so my own desktop email client.
And maybe I can ship it
on a phone at some point
because I've been an
Outlook user for my whole life.
Not really by choice,
it's just kind of landed.
And Outlook just when I was a kid
and I just have used it
for my whole life and stuff.
But I've been kind of
getting a little bit upset
with the recent changes with Outlook.
And so I'm like, I wonder
now that I've built my own
engine for connecting to IMAP,
I wonder if I could
build my own email client
that I would love to use.
And maybe others would love to use.
That is just super
simple, it's just emails
and no AI nonsense, no trash all over.
Because I think all these email clients,
the same with Gmail
and they become so heavy
and convoluted with features
that you don't want or need.
It's like, I just want
my inbox, my folders,
and my email with a basic
like markdown editor if possible.
And that's it, like I don't need anything
else other than that.
So I'm wanting to,
I'm right now building,
using native PHP
actually, Simon's native PHP,
I'm building on top of.
So I'm gonna see if I can make it happen.
I was gonna, that was
actually gonna be my next question,
is what you're building it on.
So native PHP seems like a
perfect pairing for that.
Yeah.
And yeah, it's funny, like every year,
I guess email clients are
sort of like to-do apps.
Like every year I go
searching for a new email app
and nothing is like perfect.
It's like, surely
something out there is perfect,
but it's like, I've yet to find it yet.
So I think there's
always a market for email apps
and to-do apps.
Yeah, yeah, like there's
always something wrong about it
or the company you download it from
is pushing one kind
of service or another,
or they want you to pay a
subscription or something.
And it's like, can I
just get like an email app
that just does email and that's it?
Like just super bare
bones and a clean interface,
that's all I need and that's all I want.
And all these companies
are just trying to add
all these services on
and especially AI, right?
Like the AI craze,
everyone is trying to
get them at AI craze
to slap services in your email.
And I don't want any of that.
I want like the spam
protection service that I'm using.
Like I want just the emails filtered out
that I shouldn't see,
but when it comes to actually like
looking at my email,
interacting with my email,
sending emails, replying,
I want that to be a really
clean and bare bones experience
where there's no nonsense, you know?
Yes, speaking of AI, the best use case,
I think I've seen in an
email is it's through the search
and you can be like, you know,
what meetings do I have tomorrow?
And it'll go through all
your emails and be like,
these are, you know, these are things
that might be coming up due
tomorrow, things like that,
which is kind of neat,
especially when you have it like talk to
somebody in a while.
It's like, when's the last
time I talked to, you know,
John, and it'll just pop up and be like,
here's all the John's
you've talked to recently.
Things like that I
found kind of interesting.
Interesting, Abhiu, is
there an email client right now
or email service that does that for you?
Yeah, it's, speaking of
subscriptions, it's superhuman,
but it does all that
with its AI integration,
but it does a lot more to that.
That's really the only use case
that I've actually enjoyed for the AI.
The rest of it's just like more
annoyance, you know,
where it tries to rewrite your, you know,
it tries to be like a Grammarly
and like rewrite how you're
writing and stuff like that.
Exactly.
And I hate all that.
Oh my gosh, yeah.
Just let me write in my natural tone.
Yeah, and you know,
that's so funny you say that
because the whole
issue I have with Outlook
and why I'm building
this email client now
is because Outlook
recently introduced CoPilot
in their writing experience.
And so as you type, it shows what they
think you want to say
after you're typing. Oh yeah, yes.
Kind of like in an editor in a way,
but in editor it helps more.
It's like I don't need
help to write an email,
like stop it and I can't disable it.
And so now I'm
building my own email client
so that no one can mess
with my email experience.
That's great.
That's the new age of clipping, right?
You know. Yeah, yeah.
Please stop.
Please let me know.
That's wild though, yeah.
That's probably my
biggest annoyance with AI
is the things like that.
I know Google, like
Gmail wants to do that too.
I don't know if you,
well, since you use Outlook,
you probably don't use Gmail.
But as you write in the Gmail interface,
it tries to
auto-complete and do all this stuff.
And it's the same way, it just,
to me that gets on my nerves.
And the other one that gets on my nerves
is actually Grammarly, you know,
because I write a lot of
articles for liberal news,
so I use Grammarly to try
to help me fix the spelling
mistakes and commas
and all that other stuff.
But now it's like, well,
you should just
rewrite this whole sentence.
And then they like, it loses context.
It's like, it just don't
even sound like something
I would write in the first place.
And that part's very
annoying with the AI.
Yeah, yeah, 100%.
And I think I've gotten to the point.
There's a lot of AI tools right now
that really are trying to
not get you to write things,
even though they should be,
like things that should
be personal and authentic.
And I think email and text messages
and posts on social media,
these are really like
services that you should be posting
things that are authentic
and stuff that you would write.
And these services are trying to get,
like trying to shovel or
pigeonhole themselves in
and be like, no, it's okay.
Like we'll thank for
you, we'll write for you.
And say, I don't want that.
I'm like, I'm okay with like
code kind of being pushed in
and I can touch it up and
change it and everything.
But when it comes to
those personal services
that require authenticity,
I'd rather be okay
with making the mistake
of like grammar mistakes and stuff
and showing that
nowadays, especially nowadays,
because all the AI slop that we're seeing
and Twitter and Facebook
and all these posts, right?
Everyone's using AI to write stuff.
Yeah, yeah, that's very true.
It's almost like
mistakes are now more authentic
and it makes you
feel, makes it more human
than perfect writing.
Exactly, which is such a
weird circle of events.
Yeah, well, even the kids,
like I've got two kids in high school now
and when they do their reports,
if they don't make any mistakes
then the teachers
thinks they're cheating.
So it's like, there's this whole like
weird dynamic going on
where they can't trust anything anymore
unless there's mistakes in it.
It's like, what?
Gosh, I wonder what the experience
of elementary school and
high school would be right now
with AI, that'd be interesting.
And your kids are loving it.
Yeah, I remember now
this probably ages me.
So I took typewriting in high school
and the guy that sat beside me,
of course we were on like,
you know, 1992 Windows machines
but he taught me how to copy and paste.
And I was like,
cause you know, you'd
have to write the same line
like four times and that was like,
oh, this is the future,
this is the best thing ever.
And now it's just like
AI can just do everything.
Oh my gosh, that's crazy.
You have such a nice frame
of reference though, right?
But it's so
interesting because, you know,
you would think that you
would show anyone, you know,
from that distance of time,
if you transported them to now,
their mind would be absolutely shattered.
They're like, how is this possible?
This is like a machine God
we're speaking with right now.
But because it's been
such a gradual increase
of intelligence, we're kind
of warmed into it, you know,
gradually warmed into it.
And so it's not as
shocking as it should be
but it is actually so
shocking to where we are right now.
The intelligence is actually wild.
Yeah, well, that sort of reminds me too.
I know we're getting so
kind of off the subject
but when I first
started, I really struggled
on like comprehending
you had a web server,
you had a database server,
and then you had the browser
and how those all pieces fit together.
Cause like I could not
comprehend this database thing
and how we connect to it
and talk to it and all this.
And then all of a
sudden one day it clicked
and it's like, well, I was
sort of an idiot back then,
you know, but now it's
just like common knowledge
that everybody knows.
It's like, oh yeah, it's basics.
But we didn't have video
tutorials back then either.
You know, it was just
what you could find.
Yeah, I mean, yeah, that was so new.
I mean, MVC, the MVC
pattern was super, super new
at that time for sure.
And figuring out how to do that properly
and make it feel
right was very difficult.
You know, cause when I, I'm
sure you remember this one
when PHP first got
around, everyone was kind of,
you'd have a form and
you'd inject PHP tags
at the top of a form to
like handle the form submission
in its own page.
And that would also like
execute like a SQL query
to the backend database and stuff.
And it was so ugly and it was weird.
And everyone was trying to
figure out how does this work?
How do we make this work?
Yeah, well, I remember like
PHP didn't even have classes,
you know, back, I want to
say PHP four days or, you know.
Yeah, that's right.
It was only functions.
You could only write functions.
It's crazy just how far
we've came in the last 20 years,
you know, I guess 24 years,
cause this would have been
early night or late nineties,
early 2000s when I was around.
But yeah, it's just, that part's crazy.
Just thinking about it.
Yeah, not having
classes, that would be wild.
I've never had PHP
without that functionality.
So you were there for the glory days.
I mean, I'm thinking they didn't,
I mean, nobody used them.
I think you're right, yeah.
If they did have classes,
I don't remember ever seeing a class
until like PHP five,
but I could be totally, totally
misremembering this stuff.
You know, I am getting old now.
I'm quite forgetful.
But I don't want to do
this all day, you know,
I don't want to keep you
from family life and other life,
but anything else to work on that we miss
that you want to bring
up or people to check out?
Well, I wouldn't like
to check out iMap Engine.
Just take a look and
if they're interested
in viewing how it works,
or if they're thinking about
building a project with it,
it'd be nice to give it a
start if you're interested
and take a look and all
the other open source work
that I have.
I think they might find
things that are useful
they could build with.
And I really tried really hard.
I tried really hard in
all my open source stuff
to make sure that the
developer experiences
is top tier to what my own standards.
I love that.
Well, I want to say thank you
again for coming on the show
and talking about all
this very nerdy email stuff
and active record and all the fun things.
I can talk about it for days.
I'm so invested.
Ask me anything about the RFC
and I'll tell you.
(laughing) That's great.
Oh, that's fun.
Well, Steve, I want to
thank you again for coming on
and everybody I'll have all the links
that we talked about in the show notes
and we'll have a post on Laravel News
dedicated to all this and everything.
So thanks for tuning
in and until next time.
Thank you so much.