1
01:00:00,000 --> 01:00:01,083
Welcome back to the show.

2
01:00:01,500 --> 01:00:03,583
Today we have with us Steve Bauman,

3
01:00:03,791 --> 01:00:06,083
who created a brand new package.

4
01:00:07,583 --> 01:00:09,583
It's called IMAP Engine,

5
01:00:10,000 --> 01:00:11,750
which is deep into the

6
01:00:11,750 --> 01:00:13,250
abyss of email, correct?

7
01:00:15,458 --> 01:00:15,500
(laughs)

8
01:00:15,958 --> 01:00:17,333
So tell us, if you don't mind,

9
01:00:17,333 --> 01:00:18,166
just tell us a little

10
01:00:18,166 --> 01:00:19,750
bit about IMAP Engine

11
01:00:19,750 --> 01:00:21,125
and how this got

12
01:00:21,125 --> 01:00:22,666
started, why you created it,

13
01:00:22,666 --> 01:00:24,375
and sort of the backstory on it.

14
01:00:25,166 --> 01:00:27,291
Yeah, yeah, so I have a

15
01:00:27,291 --> 01:00:28,250
side project right now,

16
01:00:28,958 --> 01:00:29,791
not product promoting,

17
01:00:29,791 --> 01:00:31,041
but it's called SpamWise,

18
01:00:31,041 --> 01:00:32,416
and it's an email-based service.

19
01:00:32,791 --> 01:00:35,500
And so users can sign up

20
01:00:35,500 --> 01:00:37,500
and they can attach

21
01:00:37,500 --> 01:00:39,375
their email to my service,

22
01:00:39,375 --> 01:00:41,541
and I need to process incoming emails,

23
01:00:41,541 --> 01:00:42,625
and I had to do it through IMAP.

24
01:00:43,666 --> 01:00:45,541
And so I did what kind of

25
01:00:45,541 --> 01:00:47,958
any kind of PHP developer does

26
01:00:47,958 --> 01:00:48,541
when they have to

27
01:00:48,541 --> 01:00:50,125
access some kind of protocol

28
01:00:50,416 --> 01:00:52,000
or something that

29
01:00:52,000 --> 01:00:53,000
appears super complicated,

30
01:00:53,166 --> 01:00:54,000
and they go, "I wonder if there's a

31
01:00:54,000 --> 01:00:54,791
package for this," right?

32
01:00:55,666 --> 01:00:57,375
And so I went searching,

33
01:00:57,500 --> 01:01:00,208
and I went and found what I thought

34
01:01:00,208 --> 01:01:01,583
was kind of the best at the time,

35
01:01:02,791 --> 01:01:05,375
and I installed that, and over,

36
01:01:06,083 --> 01:01:06,916
I started, after I

37
01:01:06,916 --> 01:01:07,833
started working with that,

38
01:01:08,166 --> 01:01:08,791
once you start working

39
01:01:08,791 --> 01:01:09,500
with this kind of stuff,

40
01:01:09,500 --> 01:01:10,375
you start noticing issues.

41
01:01:10,625 --> 01:01:13,583
You're like, "Oh, I bet I could fix this

42
01:01:13,583 --> 01:01:14,166
"or I could make this

43
01:01:14,166 --> 01:01:16,166
better in some certain ways,"

44
01:01:16,166 --> 01:01:18,041
and once you start getting a handle

45
01:01:18,166 --> 01:01:20,041
of how it works and such.

46
01:01:21,125 --> 01:01:23,791
And I started getting a lot of issues

47
01:01:24,166 --> 01:01:25,375
with the package that it shows,

48
01:01:26,500 --> 01:01:28,250
and I was kind of

49
01:01:28,250 --> 01:01:30,416
just, I ended up forking it

50
01:01:30,541 --> 01:01:32,416
and rebuilding it from scratch,

51
01:01:32,750 --> 01:01:35,458
and that ended up just being a nightmare

52
01:01:35,583 --> 01:01:36,916
because it was so

53
01:01:36,916 --> 01:01:39,041
convoluted and complicated.

54
01:01:39,041 --> 01:01:39,833
I'm like, "There's no way

55
01:01:39,833 --> 01:01:42,333
that it's this complicated.

56
01:01:42,916 --> 01:01:44,041
"It can't be true that it

57
01:01:44,041 --> 01:01:45,166
has to be this complicated

58
01:01:45,166 --> 01:01:46,125
"to work with this protocol.

59
01:01:46,333 --> 01:01:46,833
"There's no way."

60
01:01:47,458 --> 01:01:49,541
And so I was like, "You know what?

61
01:01:49,541 --> 01:01:51,916
"I'm gonna dive into the RFC.

62
01:01:52,375 --> 01:01:54,166
"I'm gonna read the whole RFC

63
01:01:54,458 --> 01:01:56,208
"and see why this is so complicated."

64
01:01:56,708 --> 01:01:58,916
Because I was also, because when I was

65
01:01:58,916 --> 01:01:59,791
having these issues,

66
01:01:59,791 --> 01:02:00,458
I was like, "Okay, maybe

67
01:02:00,458 --> 01:02:01,083
there's another package

68
01:02:01,083 --> 01:02:01,750
"that I could use."

69
01:02:02,083 --> 01:02:03,125
I started looking around, I'm like,

70
01:02:03,791 --> 01:02:04,458
"I'm looking in the

71
01:02:04,458 --> 01:02:05,875
source of these packages."

72
01:02:05,875 --> 01:02:07,500
I'm like, "Why does

73
01:02:07,500 --> 01:02:08,541
this look so complicated?"

74
01:02:09,333 --> 01:02:10,458
I'm like, "I'm having a hard time

75
01:02:10,458 --> 01:02:11,250
understanding this."

76
01:02:12,041 --> 01:02:13,208
And so, and yeah, so I

77
01:02:13,208 --> 01:02:14,541
just dove into the RFC.

78
01:02:14,791 --> 01:02:15,375
I'm like, "I'm gonna

79
01:02:15,375 --> 01:02:16,708
just take what I know

80
01:02:16,708 --> 01:02:17,583
"and try to just

81
01:02:17,583 --> 01:02:19,041
build from the ground up,

82
01:02:19,333 --> 01:02:21,125
"like connect with the stream,

83
01:02:21,375 --> 01:02:25,000
"read the stream character by character

84
01:02:25,125 --> 01:02:25,875
"and create a

85
01:02:25,875 --> 01:02:27,333
tokenizer and create a parser

86
01:02:27,958 --> 01:02:28,791
"and all this stuff."

87
01:02:29,083 --> 01:02:30,250
And eventually I got

88
01:02:30,250 --> 01:02:31,208
to a point, I'm like,

89
01:02:31,208 --> 01:02:33,000
"Oh, okay, it's not

90
01:02:33,000 --> 01:02:35,041
actually this difficult.

91
01:02:35,291 --> 01:02:36,500
"I've just been reading

92
01:02:36,500 --> 01:02:38,208
convoluted and difficult solutions

93
01:02:38,375 --> 01:02:40,000
"and I could just make it simpler."

94
01:02:41,708 --> 01:02:42,333
That's awesome.

95
01:02:44,041 --> 01:02:45,541
Speaking of reading the

96
01:02:45,541 --> 01:02:48,458
RFC, do you enjoy that?

97
01:02:48,458 --> 01:02:49,791
Is that like a good hobby

98
01:02:49,791 --> 01:02:51,083
that you have on the side?

99
01:02:51,125 --> 01:02:53,583
That's like the driest read

100
01:02:53,583 --> 01:02:54,666
you'll ever find in your life.

101
01:02:54,666 --> 01:02:56,125
Yeah, no, I didn't like it at all.

102
01:02:56,583 --> 01:03:00,083
It was so painful and it was

103
01:03:00,083 --> 01:03:01,500
born out of the frustration.

104
01:03:01,791 --> 01:03:03,041
I think a lot of other

105
01:03:03,041 --> 01:03:04,041
developers make feels that,

106
01:03:04,333 --> 01:03:05,625
you know, I'm like, "You

107
01:03:05,625 --> 01:03:06,500
know what, I'm gonna do this

108
01:03:06,500 --> 01:03:07,875
"and I'm gonna grind through it

109
01:03:08,083 --> 01:03:09,333
"'cause I don't want

110
01:03:09,333 --> 01:03:11,000
anyone, if I'm gonna do this,

111
01:03:11,000 --> 01:03:12,291
"I don't want anyone to have to do,

112
01:03:12,500 --> 01:03:14,416
"to read an RFC, this RFC again

113
01:03:14,416 --> 01:03:17,541
"and I want to never have to have

114
01:03:17,541 --> 01:03:19,041
"other developers experience this pain."

115
01:03:19,625 --> 01:03:22,125
And so that was a motivation for it.

116
01:03:22,125 --> 01:03:23,125
I'm like, "I'm gonna sit there,

117
01:03:23,125 --> 01:03:24,125
"I'm gonna do this every night

118
01:03:24,125 --> 01:03:25,083
"and I'm gonna finish it

119
01:03:25,083 --> 01:03:26,083
and it's gonna be beautiful."

120
01:03:27,083 --> 01:03:27,750
(laughing)

121
01:03:28,666 --> 01:03:29,125
That's awesome.

122
01:03:30,541 --> 01:03:31,791
Well, I guess that's what

123
01:03:31,791 --> 01:03:33,125
relates me into, you know,

124
01:03:34,125 --> 01:03:35,250
what was your sort of

125
01:03:35,250 --> 01:03:36,125
the biggest challenges

126
01:03:36,125 --> 01:03:37,125
while reading this?

127
01:03:38,791 --> 01:03:39,833
Reading the RFC itself

128
01:03:39,833 --> 01:03:41,250
or was there any code thing

129
01:03:41,250 --> 01:03:42,416
that was like super hard or?

130
01:03:43,125 --> 01:03:45,625
Yeah, definitely the

131
01:03:45,625 --> 01:03:47,958
parser and the tokenizer

132
01:03:48,083 --> 01:03:49,791
the trickiest thing for sure.

133
01:03:50,625 --> 01:03:52,833
I use a lot of back and forth,

134
01:03:53,458 --> 01:03:54,625
like rubber ducking with

135
01:03:54,625 --> 01:03:56,583
chat GPT and various models

136
01:03:56,583 --> 01:03:58,041
and stuff, just trying to figure out

137
01:03:58,791 --> 01:04:01,291
how to properly parse some pieces

138
01:04:01,583 --> 01:04:02,250
and what the proper

139
01:04:02,250 --> 01:04:04,208
format was of some responses

140
01:04:04,416 --> 01:04:07,208
and error codes and all that.

141
01:04:07,916 --> 01:04:10,125
It's definitely, it

142
01:04:10,125 --> 01:04:11,833
was tricky to nail down

143
01:04:11,833 --> 01:04:14,708
and it took two weeks to kind of really,

144
01:04:15,000 --> 01:04:15,916
two weeks every night just

145
01:04:15,916 --> 01:04:17,625
kind of really wrestling with it,

146
01:04:17,791 --> 01:04:19,583
nailing it, writing tests for it

147
01:04:19,875 --> 01:04:22,541
and keep iterating and iterating on it.

148
01:04:23,166 --> 01:04:25,416
And I'm not typically one to write

149
01:04:25,416 --> 01:04:26,875
tokenizers and parsers.

150
01:04:27,083 --> 01:04:29,458
Like I rarely ever do that,

151
01:04:29,458 --> 01:04:30,791
that's super in the weeds, right?

152
01:04:30,791 --> 01:04:32,000
Like talking and listening

153
01:04:32,000 --> 01:04:33,333
to a stream back and forth

154
01:04:33,333 --> 01:04:37,500
is super like low level, which is

155
01:04:37,500 --> 01:04:38,166
something I don't do.

156
01:04:38,500 --> 01:04:39,791
And that was definitely the hardest.

157
01:04:42,000 --> 01:04:42,291
Gotcha.

158
01:04:45,416 --> 01:04:47,583
I guess one of the

159
01:04:47,583 --> 01:04:48,625
question that I see come,

160
01:04:49,583 --> 01:04:51,208
that I've seen come up a lot

161
01:04:51,208 --> 01:04:54,333
is how does this package differ

162
01:04:54,500 --> 01:04:57,625
from like the native PHP IMAP function,

163
01:04:57,958 --> 01:05:00,166
from back in the day?

164
01:05:00,166 --> 01:05:01,416
I mean, that thing was probably created

165
01:05:01,416 --> 01:05:02,625
in the early 90s, I'm guessing.

166
01:05:03,541 --> 01:05:04,083
Yeah, yeah.

167
01:05:04,750 --> 01:05:06,708
And I probably would

168
01:05:06,708 --> 01:05:08,375
have leaned into using it

169
01:05:09,416 --> 01:05:11,708
if the methods or the

170
01:05:11,708 --> 01:05:14,000
extension was like available easily,

171
01:05:14,000 --> 01:05:16,875
but right now the IMAP extension

172
01:05:17,041 --> 01:05:18,916
doesn't get shipped with PHP by default.

173
01:05:18,916 --> 01:05:19,333
So you can't just

174
01:05:19,333 --> 01:05:22,083
toggle it on the INAML file.

175
01:05:22,541 --> 01:05:23,000
And so you have to

176
01:05:23,000 --> 01:05:25,791
actually like compile PHP with it,

177
01:05:25,791 --> 01:05:27,041
which is its own process.

178
01:05:27,041 --> 01:05:29,416
And it's all like complex and convoluted.

179
01:05:30,375 --> 01:05:31,750
And the package that I

180
01:05:31,750 --> 01:05:33,000
was using at the time

181
01:05:33,500 --> 01:05:36,375
was just using a raw stream to do it.

182
01:05:36,375 --> 01:05:37,625
And its feature was like,

183
01:05:37,708 --> 01:05:38,250
oh, you don't have to

184
01:05:38,250 --> 01:05:39,583
have the extension for it.

185
01:05:40,083 --> 01:05:41,000
And I know the pain of

186
01:05:41,000 --> 01:05:42,291
having to like install

187
01:05:42,291 --> 01:05:43,500
the IMAP extension too,

188
01:05:43,500 --> 01:05:44,625
because I tried that at the very

189
01:05:44,625 --> 01:05:46,000
beginning of this product

190
01:05:46,000 --> 01:05:46,666
that I was building.

191
01:05:47,250 --> 01:05:48,208
And that was difficult.

192
01:05:49,333 --> 01:05:51,583
And one of the other primary things

193
01:05:51,708 --> 01:05:52,833
that the IMAP extension

194
01:05:52,833 --> 01:05:55,291
doesn't have is called idle,

195
01:05:55,958 --> 01:05:57,583
which is basically it opens

196
01:05:57,583 --> 01:05:59,291
up a stream and keeps it open

197
01:05:59,500 --> 01:06:01,416
and receives notifications

198
01:06:01,416 --> 01:06:02,750
of when new emails come in.

199
01:06:03,208 --> 01:06:03,666
And so it basically

200
01:06:03,666 --> 01:06:05,833
allows you to just get alerted

201
01:06:06,041 --> 01:06:07,833
or pinged as soon as emails arrive,

202
01:06:08,083 --> 01:06:09,458
and you can immediately process them

203
01:06:09,458 --> 01:06:10,500
or do something with them.

204
01:06:10,833 --> 01:06:13,250
Versus if you're working with like POP3,

205
01:06:13,250 --> 01:06:14,833
like in other email protocol,

206
01:06:14,833 --> 01:06:15,916
you have to introduce polling.

207
01:06:16,458 --> 01:06:16,833
So you're just

208
01:06:16,833 --> 01:06:18,833
constantly like asking the inbox

209
01:06:18,833 --> 01:06:19,416
if you have new

210
01:06:19,416 --> 01:06:21,375
emails every 15, 20 minutes

211
01:06:21,375 --> 01:06:22,291
or whatever interval.

212
01:06:23,083 --> 01:06:23,791
And so that was something

213
01:06:23,791 --> 01:06:25,500
that I had to have as well,

214
01:06:26,250 --> 01:06:27,583
which isn't possible in

215
01:06:27,583 --> 01:06:29,416
the PHP IMAP extension.

216
01:06:31,666 --> 01:06:32,250
Understood.

217
01:06:32,958 --> 01:06:34,833
Yeah, because I was trying to think,

218
01:06:34,833 --> 01:06:36,166
because I used to do a lot of email

219
01:06:36,166 --> 01:06:37,208
parsing back in the day

220
01:06:37,333 --> 01:06:39,583
and we would basically

221
01:06:39,583 --> 01:06:40,666
just had an old Chrome job.

222
01:06:40,666 --> 01:06:44,250
It would just log in through IMAP,

223
01:06:44,250 --> 01:06:45,750
check and see what's new, download it,

224
01:06:45,750 --> 01:06:47,333
and then go about its life.

225
01:06:48,375 --> 01:06:50,041
So with this idle thing,

226
01:06:50,375 --> 01:06:51,250
you don't even have to

227
01:06:51,250 --> 01:06:52,083
do that anymore, right?

228
01:06:52,083 --> 01:06:55,000
It's more real time, I

229
01:06:55,000 --> 01:06:55,958
guess is the right wording.

230
01:06:56,000 --> 01:06:56,750
Yeah, exactly.

231
01:06:56,791 --> 01:06:57,250
It's real time.

232
01:06:57,583 --> 01:07:00,875
So you can basically just get to boot up

233
01:07:01,000 --> 01:07:03,333
some kind of daemon in the background.

234
01:07:03,500 --> 01:07:04,375
So you just register,

235
01:07:04,791 --> 01:07:06,333
like I just use a Laravel command

236
01:07:06,333 --> 01:07:08,125
that I registered as a daemon on Forge

237
01:07:08,666 --> 01:07:10,541
and it just sits there open,

238
01:07:11,208 --> 01:07:12,500
basically in its own loop

239
01:07:12,500 --> 01:07:13,583
and its own stream loop.

240
01:07:14,250 --> 01:07:15,625
And it just waits for new

241
01:07:15,625 --> 01:07:16,541
messages from the server.

242
01:07:18,416 --> 01:07:18,583
Sweet.

243
01:07:18,791 --> 01:07:19,916
So, and then I assume

244
01:07:19,916 --> 01:07:22,416
that's like super beneficial for,

245
01:07:23,125 --> 01:07:25,000
you know, for, I guess

246
01:07:25,000 --> 01:07:26,958
for like speed or, you know.

247
01:07:27,416 --> 01:07:27,958
Yeah, yeah.

248
01:07:28,375 --> 01:07:30,250
Basically there's just lots of benefits

249
01:07:30,250 --> 01:07:31,375
to doing it this way versus

250
01:07:31,375 --> 01:07:32,958
the sort of the old school way.

251
01:07:33,750 --> 01:07:34,500
Yeah, yeah, absolutely.

252
01:07:34,833 --> 01:07:37,625
Because especially in

253
01:07:37,625 --> 01:07:40,250
the product that I built,

254
01:07:40,500 --> 01:07:41,666
and it's imperative

255
01:07:41,666 --> 01:07:42,958
that I act on the email

256
01:07:42,958 --> 01:07:43,958
as fast as possible.

257
01:07:44,416 --> 01:07:45,291
And if I was going to build it,

258
01:07:45,291 --> 01:07:46,875
I had to get at the

259
01:07:46,875 --> 01:07:48,208
emails as soon as they arrive,

260
01:07:48,208 --> 01:07:48,750
if possible.

261
01:07:49,250 --> 01:07:49,875
And if I wasn't going

262
01:07:49,875 --> 01:07:50,541
to be able to get them

263
01:07:50,541 --> 01:07:51,750
like as they came in,

264
01:07:51,750 --> 01:07:52,916
then there's kind of no point.

265
01:07:52,916 --> 01:07:54,041
Because if I'm

266
01:07:54,041 --> 01:07:55,750
looking for spam or phishing

267
01:07:55,750 --> 01:07:57,208
or whatever emails and the

268
01:07:57,208 --> 01:07:58,583
user can interact with it

269
01:07:58,583 --> 01:08:00,000
before I actually scan it,

270
01:08:00,000 --> 01:08:01,791
then the product's kind of defunct.

271
01:08:01,791 --> 01:08:02,708
I can't really,

272
01:08:03,125 --> 01:08:04,500
I'm kind of not helping them much there.

273
01:08:04,791 --> 01:08:05,333
So, yeah.

274
01:08:07,208 --> 01:08:07,416
Yeah.

275
01:08:08,708 --> 01:08:12,916
So how about, let me go get my note here.

276
01:08:14,375 --> 01:08:16,916
This, I think we touched on this,

277
01:08:16,916 --> 01:08:18,291
but we'll just clarify,

278
01:08:18,291 --> 01:08:19,500
does it support parsing

279
01:08:19,500 --> 01:08:21,083
and handling, you know,

280
01:08:21,083 --> 01:08:22,708
sort of the different character encodings

281
01:08:22,708 --> 01:08:25,500
or non-UTF8 emails or all the other mess

282
01:08:25,500 --> 01:08:27,666
that you might get out of a email inbox?

283
01:08:28,416 --> 01:08:29,416
Yeah, luckily that's

284
01:08:29,416 --> 01:08:31,458
handled by the package

285
01:08:31,583 --> 01:08:32,125
we're talking about

286
01:08:32,125 --> 01:08:34,458
Z-Bates and Mail, Mine parser.

287
01:08:35,208 --> 01:08:36,750
Mine Mail parser, it's

288
01:08:36,750 --> 01:08:38,333
whatever combination is.

289
01:08:38,583 --> 01:08:39,791
But yeah, luckily,

290
01:08:39,791 --> 01:08:40,708
because that package

291
01:08:40,708 --> 01:08:41,875
saved me months of work

292
01:08:42,041 --> 01:08:44,791
and huge kiddos to him to

293
01:08:44,791 --> 01:08:46,166
build some solid package

294
01:08:46,166 --> 01:08:47,708
and out of the code there

295
01:08:47,708 --> 01:08:49,416
to make sure I was like,

296
01:08:49,416 --> 01:08:50,750
if I'm going to install this,

297
01:08:51,291 --> 01:08:52,833
I can't just have this

298
01:08:52,833 --> 01:08:54,416
package wrap some other library

299
01:08:54,666 --> 01:08:55,958
that I don't think is well built.

300
01:08:56,166 --> 01:08:57,500
I really want it to be

301
01:08:57,500 --> 01:08:58,541
like a complete solution

302
01:08:58,541 --> 01:09:00,083
that feels good and is also,

303
01:09:00,583 --> 01:09:01,750
if any packages that I was

304
01:09:01,750 --> 01:09:04,625
going to have to be reliant on

305
01:09:04,625 --> 01:09:06,166
that those also be well built.

306
01:09:06,458 --> 01:09:07,541
And so I think he did a

307
01:09:07,541 --> 01:09:08,583
great job on that, luckily.

308
01:09:09,958 --> 01:09:10,958
Yeah, that's sweet.

309
01:09:11,166 --> 01:09:13,041
Yeah, that's, we were talking about it

310
01:09:13,041 --> 01:09:14,083
kind of before we started the

311
01:09:14,083 --> 01:09:16,208
show and that was a package.

312
01:09:16,208 --> 01:09:18,208
I was, had some familiarity with

313
01:09:18,916 --> 01:09:19,833
because it takes a lot of

314
01:09:19,833 --> 01:09:21,791
the headaches out of parsing.

315
01:09:22,541 --> 01:09:24,500
Like, you know, what you, like,

316
01:09:24,500 --> 01:09:25,583
I don't know if you've

317
01:09:25,583 --> 01:09:26,666
never parsed the emails before,

318
01:09:27,000 --> 01:09:27,875
you will get into the

319
01:09:27,875 --> 01:09:30,500
most random bugs and issues

320
01:09:30,500 --> 01:09:31,916
and just weird stuff that

321
01:09:31,916 --> 01:09:33,000
you've ever seen in your life.

322
01:09:33,000 --> 01:09:34,125
Yeah, oh my gosh.

323
01:09:34,708 --> 01:09:36,041
Yeah, holy moly.

324
01:09:36,250 --> 01:09:39,000
I was so surprised at how complicated

325
01:09:39,458 --> 01:09:40,916
and deep in the weeds you

326
01:09:40,916 --> 01:09:42,166
have to get for email parsing.

327
01:09:42,375 --> 01:09:44,291
Email parsing is so complicated.

328
01:09:44,625 --> 01:09:46,583
I was like, I hope someone wrote

329
01:09:46,583 --> 01:09:48,041
something well for this.

330
01:09:49,833 --> 01:09:50,375
Yeah, yeah.

331
01:09:50,375 --> 01:09:51,000
And then everybody's

332
01:09:51,000 --> 01:09:52,125
like, well, you know,

333
01:09:52,125 --> 01:09:53,541
there's this SaaS app you can just

334
01:09:53,541 --> 01:09:54,625
install and use there.

335
01:09:54,625 --> 01:09:56,666
So I was like, well, I can't use that

336
01:09:56,750 --> 01:09:58,916
when we do self, you know, self installs,

337
01:09:58,916 --> 01:10:00,000
all this other stuff, but yeah.

338
01:10:00,208 --> 01:10:01,666
So then it was just, you know,

339
01:10:02,000 --> 01:10:04,000
parsing it yourself is not fun.

340
01:10:04,958 --> 01:10:05,583
Yeah, yeah.

341
01:10:05,791 --> 01:10:08,125
And I think we need these solutions.

342
01:10:09,375 --> 01:10:12,500
If like, I feel like it's really common

343
01:10:12,791 --> 01:10:15,458
in the JavaScript land that

344
01:10:15,458 --> 01:10:16,500
you just kind of outsource

345
01:10:16,666 --> 01:10:18,958
these core functionalities in your auth

346
01:10:18,958 --> 01:10:21,916
and your queues and your

347
01:10:21,916 --> 01:10:23,375
email service and all this stuff.

348
01:10:23,416 --> 01:10:26,291
You outsource all these huge components

349
01:10:26,791 --> 01:10:27,875
that I feel like we should

350
01:10:27,875 --> 01:10:31,250
be able to have ourselves

351
01:10:31,250 --> 01:10:33,083
and PHP without having

352
01:10:33,083 --> 01:10:34,125
to sign up for the service

353
01:10:34,125 --> 01:10:35,791
and pay them to do it, you know.

354
01:10:36,666 --> 01:10:37,958
And they've offered so

355
01:10:37,958 --> 01:10:39,000
much of that, you know,

356
01:10:39,208 --> 01:10:40,375
so much of that for free

357
01:10:40,375 --> 01:10:41,541
that you can just host locally,

358
01:10:41,875 --> 01:10:42,500
like on your machine

359
01:10:42,500 --> 01:10:43,500
or on your own server.

360
01:10:45,291 --> 01:10:45,916
Yeah, for sure.

361
01:10:46,166 --> 01:10:47,000
I think that's one of

362
01:10:47,000 --> 01:10:47,958
the benefits, you know,

363
01:10:48,208 --> 01:10:50,166
to a true full stack or a

364
01:10:50,166 --> 01:10:51,500
full framework, you know,

365
01:10:51,500 --> 01:10:52,875
it handles all this stuff

366
01:10:52,958 --> 01:10:55,291
and you technically don't have to go

367
01:10:55,291 --> 01:10:56,291
reach for third parties

368
01:10:56,291 --> 01:10:57,291
unless you just have some

369
01:10:57,291 --> 01:10:58,666
obscure use case or something.

370
01:11:00,458 --> 01:11:01,416
But that does bring me,

371
01:11:01,666 --> 01:11:02,916
speaking of third party stuff,

372
01:11:03,583 --> 01:11:05,958
if didn't like Google and

373
01:11:05,958 --> 01:11:07,250
Microsoft and all those guys

374
01:11:08,416 --> 01:11:10,791
or Habs, didn't they try to

375
01:11:10,791 --> 01:11:12,291
prevent you from using IMAP

376
01:11:12,291 --> 01:11:13,166
and wanting you to go

377
01:11:13,166 --> 01:11:14,958
directly to API calls now

378
01:11:15,041 --> 01:11:17,708
or am I mistaken on my memory there?

379
01:11:18,416 --> 01:11:20,166
No, you're partially correct for sure.

380
01:11:20,208 --> 01:11:22,333
So you can actually

381
01:11:22,333 --> 01:11:25,666
connect to IMAP through like to,

382
01:11:26,416 --> 01:11:27,708
you can use IMAP to connect

383
01:11:27,708 --> 01:11:30,625
to Google and Microsoft inboxes

384
01:11:30,833 --> 01:11:31,958
if you use either

385
01:11:31,958 --> 01:11:35,125
OAuth or a app password.

386
01:11:35,708 --> 01:11:37,083
App passwords is easier, but

387
01:11:37,083 --> 01:11:38,208
you kind of have to go deep

388
01:11:38,208 --> 01:11:39,375
in your weeds, deep in

389
01:11:39,375 --> 01:11:40,125
the weeds of the account

390
01:11:40,125 --> 01:11:42,208
to generate an app password.

391
01:11:42,208 --> 01:11:43,583
And usually they won't even advertise it,

392
01:11:43,583 --> 01:11:44,625
they do, you have to grab

393
01:11:44,625 --> 01:11:45,708
like a link from somewhere

394
01:11:45,708 --> 01:11:47,000
to navigate directly

395
01:11:47,000 --> 01:11:48,291
into your account to do it.

396
01:11:49,000 --> 01:11:50,541
Google, for example, doesn't even display

397
01:11:50,541 --> 01:11:51,458
that they have the functionality,

398
01:11:51,750 --> 01:11:53,000
you have to actually navigate directly

399
01:11:53,500 --> 01:11:54,875
to like an account manage

400
01:11:54,875 --> 01:11:56,833
link with app passwords on it

401
01:11:56,833 --> 01:11:57,791
and generate them there.

402
01:11:58,916 --> 01:12:00,208
So really deep in the weeds,

403
01:12:00,416 --> 01:12:05,500
but getting access to connect over IMAP

404
01:12:05,625 --> 01:12:06,416
with Google in

405
01:12:06,416 --> 01:12:08,708
particular is extremely difficult.

406
01:12:09,583 --> 01:12:10,875
I had to do it, I had to go

407
01:12:10,875 --> 01:12:13,458
through CASA2 verification

408
01:12:14,541 --> 01:12:16,333
because if you connect through IMAP,

409
01:12:16,625 --> 01:12:17,375
you ultimately have

410
01:12:17,375 --> 01:12:18,416
full access to the mailbox,

411
01:12:18,791 --> 01:12:19,958
you can move emails

412
01:12:19,958 --> 01:12:21,000
around, you can delete them,

413
01:12:21,000 --> 01:12:22,000
basically full spread, right?

414
01:12:22,000 --> 01:12:22,833
You can do whatever you want.

415
01:12:23,833 --> 01:12:25,458
And they consider that as like a

416
01:12:25,458 --> 01:12:26,583
dangerous level of scope.

417
01:12:27,958 --> 01:12:30,750
And so because they see it that way,

418
01:12:30,750 --> 01:12:32,166
you have to go through their intense

419
01:12:32,166 --> 01:12:33,125
security verification.

420
01:12:33,833 --> 01:12:35,458
And it took me four

421
01:12:35,458 --> 01:12:37,666
months of just back and forth,

422
01:12:37,666 --> 01:12:39,458
back and forth, getting

423
01:12:39,458 --> 01:12:40,833
like trying to figure out

424
01:12:40,833 --> 01:12:42,000
what they wanted next to

425
01:12:42,000 --> 01:12:43,375
make sure I was compliant.

426
01:12:44,166 --> 01:12:44,833
You also have to go

427
01:12:44,833 --> 01:12:45,583
through a third party,

428
01:12:45,833 --> 01:12:48,500
which does some pen

429
01:12:48,500 --> 01:12:52,250
testing on your live application,

430
01:12:53,083 --> 01:12:53,833
just to make sure that

431
01:12:53,833 --> 01:12:55,750
there's no obvious like polls

432
01:12:55,750 --> 01:12:56,875
and all that stuff,

433
01:12:58,166 --> 01:13:00,291
which made it very painful,

434
01:13:00,625 --> 01:13:01,250
very painful.

435
01:13:01,750 --> 01:13:04,666
And now they even, they made

436
01:13:04,666 --> 01:13:06,166
the process even more difficult

437
01:13:06,291 --> 01:13:07,541
because they stopped

438
01:13:07,541 --> 01:13:08,416
offering it for free.

439
01:13:08,666 --> 01:13:11,125
So you have to pay 600 US dollars a year

440
01:13:11,666 --> 01:13:13,458
to keep your CASA2 verification

441
01:13:14,166 --> 01:13:16,625
just for the privilege of OAuth thing

442
01:13:17,166 --> 01:13:19,500
and connecting through IMAP.

443
01:13:21,666 --> 01:13:24,291
So now I basically, but

444
01:13:24,291 --> 01:13:26,458
luckily there's a workaround to OAuth

445
01:13:26,458 --> 01:13:28,250
and it's for Google and it's just

446
01:13:28,250 --> 01:13:29,583
generating an app password

447
01:13:30,166 --> 01:13:32,000
and you bypass all of that.

448
01:13:32,666 --> 01:13:33,791
So that's basically what

449
01:13:33,791 --> 01:13:35,208
I've had to instruct users

450
01:13:35,208 --> 01:13:36,583
to do on my platform is

451
01:13:36,583 --> 01:13:39,208
connect over app password.

452
01:13:40,375 --> 01:13:41,875
Yeah, yeah, that makes sense.

453
01:13:41,916 --> 01:13:44,083
I seem to remember like

454
01:13:44,083 --> 01:13:45,458
a couple of years ago,

455
01:13:45,875 --> 01:13:46,791
we were using app

456
01:13:46,791 --> 01:13:48,541
passwords and then they were like,

457
01:13:49,291 --> 01:13:51,125
we're shutting that down and like you

458
01:13:51,125 --> 01:13:53,458
have to move to OAuth

459
01:13:53,458 --> 01:13:54,208
or move to something

460
01:13:54,208 --> 01:13:56,041
else by a certain day.

461
01:13:56,041 --> 01:13:56,875
And it was the same way,

462
01:13:56,875 --> 01:13:57,250
it was like you had to

463
01:13:57,250 --> 01:13:58,041
go through all the stuff

464
01:13:58,041 --> 01:13:59,625
and it was just the pain.

465
01:14:01,458 --> 01:14:03,250
But speaking of your product,

466
01:14:03,250 --> 01:14:03,625
I know you mentioned

467
01:14:03,625 --> 01:14:04,541
it's called Spamwise.

468
01:14:04,916 --> 01:14:05,833
So just tell me about

469
01:14:05,833 --> 01:14:07,083
that, like how does that work?

470
01:14:08,083 --> 01:14:11,833
Yeah, so Spamwise isn't, it's Spamwise.ai

471
01:14:11,833 --> 01:14:14,166
and it's an AI based app.

472
01:14:15,000 --> 01:14:17,458
And it kind of came

473
01:14:17,458 --> 01:14:20,708
from me getting phish.

474
01:14:21,125 --> 01:14:23,375
I got phished once by a

475
01:14:23,375 --> 01:14:25,916
perfectly targeted email,

476
01:14:26,458 --> 01:14:27,791
a delivery notification email.

477
01:14:27,791 --> 01:14:28,750
I was expecting a delivery

478
01:14:28,750 --> 01:14:30,333
from a company about a year later

479
01:14:30,666 --> 01:14:32,541
and I got an email like

480
01:14:32,541 --> 01:14:34,250
the next day saying that,

481
01:14:34,333 --> 01:14:37,416
they tried to deliver and

482
01:14:37,416 --> 01:14:40,500
to attempt to re-delivery,

483
01:14:40,500 --> 01:14:41,666
we're gonna have to charge you fee.

484
01:14:42,250 --> 01:14:43,083
And I've had to pay

485
01:14:43,083 --> 01:14:44,125
this kind of fee before

486
01:14:44,125 --> 01:14:46,583
and so I go through and I

487
01:14:46,583 --> 01:14:48,208
enter in all my information,

488
01:14:48,208 --> 01:14:49,458
my credit card and they had

489
01:14:49,458 --> 01:14:50,833
the whole peer later website

490
01:14:50,833 --> 01:14:52,041
all mocked out and stuff.

491
01:14:53,166 --> 01:14:57,666
And so luckily I thought that was weird

492
01:14:57,666 --> 01:15:00,458
as soon as I went through the payment.

493
01:15:00,458 --> 01:15:01,375
I'm like, that was kind of weird.

494
01:15:01,625 --> 01:15:02,583
I should probably check if,

495
01:15:02,958 --> 01:15:04,125
this is on my smartphone at the time.

496
01:15:04,833 --> 01:15:06,166
I was doing this all to my phone.

497
01:15:07,208 --> 01:15:08,083
And I was like, that was kind of weird.

498
01:15:08,083 --> 01:15:08,541
Maybe I should check

499
01:15:08,541 --> 01:15:09,708
to see, like make sure,

500
01:15:10,000 --> 01:15:10,916
go back to the link and

501
01:15:10,916 --> 01:15:12,083
double check the domain name.

502
01:15:12,083 --> 01:15:12,791
And of course it was

503
01:15:12,791 --> 01:15:13,750
some weird domain name.

504
01:15:13,750 --> 01:15:17,041
I'm like, oh my gosh, why did this email,

505
01:15:17,625 --> 01:15:19,208
this obviously not peer

506
01:15:19,208 --> 01:15:20,958
later email land in my inbox?

507
01:15:21,208 --> 01:15:22,750
Like why did Microsoft,

508
01:15:23,208 --> 01:15:23,958
because I use Outlook.

509
01:15:24,250 --> 01:15:25,500
And I was like, why, this is such an

510
01:15:25,500 --> 01:15:27,125
obvious phishing email

511
01:15:27,125 --> 01:15:28,375
because the address wasn't

512
01:15:28,375 --> 01:15:29,333
even a peer later address,

513
01:15:29,333 --> 01:15:30,916
but at the time they didn't

514
01:15:30,916 --> 01:15:32,416
show the address in there.

515
01:15:32,458 --> 01:15:34,416
So anyway, once they were short,

516
01:15:34,666 --> 01:15:35,875
that was, I was so

517
01:15:35,875 --> 01:15:38,166
upset that I got phished

518
01:15:38,166 --> 01:15:39,500
that I'm like, I'm gonna make sure

519
01:15:39,500 --> 01:15:41,000
that this never happens to me again.

520
01:15:41,750 --> 01:15:43,333
And anyone else who may

521
01:15:43,333 --> 01:15:44,750
have also happened to.

522
01:15:45,375 --> 01:15:46,166
And so I built the

523
01:15:46,166 --> 01:15:48,375
product that I tested first.

524
01:15:48,750 --> 01:15:49,250
I was like, I wonder

525
01:15:49,250 --> 01:15:50,500
if I could use Chagibiti

526
01:15:50,500 --> 01:15:53,208
to determine if an email

527
01:15:53,208 --> 01:15:54,916
is like phishing or not.

528
01:15:55,375 --> 01:15:56,500
And I was like, oh my

529
01:15:56,500 --> 01:15:57,916
gosh, this is so accurate.

530
01:15:57,916 --> 01:15:59,500
It's so, so accurate.

531
01:15:59,708 --> 01:16:03,333
It's like 95 to 99% accurate.

532
01:16:03,708 --> 01:16:05,791
It's highly accurate in figuring out

533
01:16:06,000 --> 01:16:07,125
just IO3 header

534
01:16:07,125 --> 01:16:09,208
checks or by like contents

535
01:16:09,458 --> 01:16:10,833
or by the links and

536
01:16:10,833 --> 01:16:13,541
having like AI context

537
01:16:13,916 --> 01:16:14,958
to determine if something

538
01:16:14,958 --> 01:16:17,416
is spanned is super accurate.

539
01:16:17,625 --> 01:16:20,000
And so the issue is gone for me.

540
01:16:20,000 --> 01:16:20,958
Like I don't have that

541
01:16:20,958 --> 01:16:23,875
anymore because of the product.

542
01:16:24,208 --> 01:16:26,291
And that's why I built it.

543
01:16:26,833 --> 01:16:28,208
And I'm really glad that.

544
01:16:29,750 --> 01:16:30,250
It works.

545
01:16:31,500 --> 01:16:32,666
Yeah, that's like, yeah.

546
01:16:32,666 --> 01:16:34,250
Those are the best product ever is like,

547
01:16:34,625 --> 01:16:35,708
I had this problem and

548
01:16:35,708 --> 01:16:37,000
I'm just gonna fix it.

549
01:16:37,000 --> 01:16:38,083
And if people wanna buy it, good.

550
01:16:38,583 --> 01:16:40,166
But it's gonna solve all my problems.

551
01:16:40,750 --> 01:16:42,083
Those always seem to

552
01:16:42,083 --> 01:16:43,625
be really good products.

553
01:16:44,125 --> 01:16:44,750
You mentioned Forge.

554
01:16:45,041 --> 01:16:46,750
I know it started off the same way.

555
01:16:46,750 --> 01:16:47,625
Taylor's like, this is annoying.

556
01:16:47,916 --> 01:16:49,166
Let's build something.

557
01:16:49,500 --> 01:16:50,541
And then it took off

558
01:16:50,541 --> 01:16:51,875
and now it's successful.

559
01:16:52,791 --> 01:16:55,125
But yeah, that's a perfect use case.

560
01:16:55,833 --> 01:16:57,041
Scratch your own itch kind of stuff.

561
01:16:57,541 --> 01:16:57,750
Absolutely.

562
01:16:58,333 --> 01:16:59,125
It is wild though.

563
01:16:59,166 --> 01:17:02,250
I use Gmail, like Google apps

564
01:17:02,250 --> 01:17:03,458
for your domain or whatever.

565
01:17:03,666 --> 01:17:04,583
And there'll still be

566
01:17:04,583 --> 01:17:06,000
occasional like PayPal ones

567
01:17:06,000 --> 01:17:08,958
that come in and I'm like, this is shady.

568
01:17:09,291 --> 01:17:10,208
Like none of this makes sense.

569
01:17:10,208 --> 01:17:10,583
I'm like, I don't even

570
01:17:10,583 --> 01:17:11,416
know why it's in my inbox.

571
01:17:11,708 --> 01:17:13,333
And it's like, it's even

572
01:17:13,333 --> 01:17:14,458
like to the wrong person.

573
01:17:14,458 --> 01:17:15,375
But for some reason,

574
01:17:15,625 --> 01:17:16,500
I don't even know how.

575
01:17:16,875 --> 01:17:17,458
I need to go back and

576
01:17:17,458 --> 01:17:18,208
look through all the headers.

577
01:17:18,208 --> 01:17:19,583
But I end up just deleting them always.

578
01:17:19,833 --> 01:17:21,333
I'm like, oh no, not touching that.

579
01:17:22,500 --> 01:17:25,500
But yeah, it's crazy.

580
01:17:26,375 --> 01:17:27,000
Yeah, it's frustrating.

581
01:17:29,291 --> 01:17:33,583
So as far as like the IMAP stuff,

582
01:17:35,291 --> 01:17:37,541
at its core, since you're

583
01:17:37,541 --> 01:17:38,708
sort of using another package

584
01:17:38,708 --> 01:17:40,666
for the parsing and stuff like that.

585
01:17:40,666 --> 01:17:42,333
So the IMAP side of

586
01:17:42,333 --> 01:17:44,416
it is you're just like

587
01:17:44,500 --> 01:17:47,041
logging into the mailbox, just checking,

588
01:17:47,791 --> 01:17:48,916
I guess folders that you've

589
01:17:48,916 --> 01:17:50,416
sent in your search string.

590
01:17:51,041 --> 01:17:52,166
And then just grabbing

591
01:17:52,166 --> 01:17:53,458
new emails that come out.

592
01:17:53,458 --> 01:17:54,833
Is that sort of, am I

593
01:17:54,833 --> 01:17:56,583
thinking of IMAP the right way

594
01:17:56,875 --> 01:17:59,333
as far as how in works technology was?

595
01:18:00,083 --> 01:18:04,666
Yeah, it's like a mailbox management API.

596
01:18:05,541 --> 01:18:07,916
So you can get all your mailbox folders.

597
01:18:07,916 --> 01:18:09,000
You can get all your

598
01:18:09,000 --> 01:18:10,625
messages in your folders.

599
01:18:11,166 --> 01:18:11,583
You can execute

600
01:18:11,583 --> 01:18:13,416
queries, like they support

601
01:18:14,083 --> 01:18:15,750
like their own query syntax.

602
01:18:16,333 --> 01:18:19,500
So you can look for messages before or

603
01:18:19,500 --> 01:18:20,416
after a certain date

604
01:18:20,416 --> 01:18:22,333
that are not seen or flagged

605
01:18:22,333 --> 01:18:24,333
or that are within certain folders.

606
01:18:24,500 --> 01:18:26,625
And you can move them

607
01:18:26,625 --> 01:18:27,583
around, delete them,

608
01:18:27,916 --> 01:18:29,250
flag them, unflag them and

609
01:18:29,250 --> 01:18:31,041
kind of do whole management

610
01:18:31,583 --> 01:18:32,583
across, oh, you can also

611
01:18:32,583 --> 01:18:34,250
create draft emails as well

612
01:18:34,791 --> 01:18:37,166
through IMAP and then like later pick

613
01:18:37,166 --> 01:18:39,083
those up through SMTP

614
01:18:39,333 --> 01:18:40,791
and throw those, like send those away.

615
01:18:41,791 --> 01:18:42,541
So basically it's just

616
01:18:42,541 --> 01:18:43,958
like a complete solution

617
01:18:44,041 --> 01:18:45,708
to managing your mailbox.

618
01:18:47,416 --> 01:18:47,916
I like that.

619
01:18:48,958 --> 01:18:52,125
And as far as like, I know

620
01:18:52,125 --> 01:18:53,125
since you're running SpamWise

621
01:18:53,208 --> 01:18:54,208
and you've created this,

622
01:18:54,958 --> 01:18:56,500
is the majority of people

623
01:18:56,500 --> 01:18:58,750
sticking with like Google and Outlook

624
01:18:58,875 --> 01:19:01,250
or Gmail and Outlook or is,

625
01:19:02,125 --> 01:19:03,041
or there are still quite

626
01:19:03,041 --> 01:19:04,000
a few people still running

627
01:19:04,000 --> 01:19:04,458
their own mail

628
01:19:04,458 --> 01:19:05,625
servers and stuff like that?

629
01:19:06,208 --> 01:19:07,041
Oh yeah, it's a good question.

630
01:19:07,041 --> 01:19:10,541
I've actually seen, it's pretty split.

631
01:19:10,541 --> 01:19:12,750
I've seen, like I don't have many users.

632
01:19:12,750 --> 01:19:14,041
I think I have probably like 12

633
01:19:14,041 --> 01:19:15,583
subscribers right now.

634
01:19:15,833 --> 01:19:17,291
It's very, very small still.

635
01:19:19,416 --> 01:19:21,125
I think I have a half

636
01:19:21,125 --> 01:19:22,875
our Outlook and Gmail

637
01:19:23,000 --> 01:19:24,500
and half our like custom,

638
01:19:24,500 --> 01:19:26,541
custom my mount servers for sure.

639
01:19:27,125 --> 01:19:27,791
That's interesting.

640
01:19:27,791 --> 01:19:28,458
I didn't think anybody

641
01:19:28,458 --> 01:19:29,166
would still be running

642
01:19:29,166 --> 01:19:29,875
their own mail servers.

643
01:19:30,166 --> 01:19:30,958
For sure, yeah.

644
01:19:31,583 --> 01:19:32,333
I was definitely, I'm

645
01:19:32,333 --> 01:19:33,291
definitely surprised there.

646
01:19:34,000 --> 01:19:35,000
Yeah, yeah, me too.

647
01:19:35,416 --> 01:19:35,833
Yeah, I'm surprised.

648
01:19:36,583 --> 01:19:37,916
I can't imagine running that.

649
01:19:37,916 --> 01:19:38,708
Cause that would be,

650
01:19:38,958 --> 01:19:39,750
that would certainly be

651
01:19:39,750 --> 01:19:41,208
an uphill painful battle

652
01:19:41,208 --> 01:19:42,708
to run your own mail server

653
01:19:42,708 --> 01:19:44,000
and keep the

654
01:19:44,000 --> 01:19:46,541
reputation alive to make sure

655
01:19:46,666 --> 01:19:48,666
they're at all deliverable.

656
01:19:50,458 --> 01:19:51,083
Yeah, yeah.

657
01:19:51,333 --> 01:19:53,583
And I assume like you need to,

658
01:19:54,666 --> 01:19:55,833
I didn't even look at

659
01:19:55,833 --> 01:19:57,666
that on the read me.

660
01:19:58,000 --> 01:19:59,458
You gotta make sure, you know,

661
01:20:00,375 --> 01:20:02,833
if they're using IMAP engine package,

662
01:20:03,041 --> 01:20:04,833
then they should be using spam wise

663
01:20:05,000 --> 01:20:07,333
because what better way to make sure

664
01:20:07,333 --> 01:20:08,041
you're not pulling in

665
01:20:08,041 --> 01:20:10,000
spam than to run spam wise

666
01:20:10,458 --> 01:20:12,041
along with IMAP engine.

667
01:20:12,583 --> 01:20:13,625
Yeah, that's right.

668
01:20:15,583 --> 01:20:17,208
Gotta cross market this stuff, you know?

669
01:20:18,291 --> 01:20:18,916
Yeah, yeah.

670
01:20:19,000 --> 01:20:20,500
I'm always careful about kind of like

671
01:20:20,541 --> 01:20:21,791
cheapening the message a bit though.

672
01:20:22,083 --> 01:20:23,958
I always, like I don't,

673
01:20:23,958 --> 01:20:25,000
and it is also like a

674
01:20:25,000 --> 01:20:25,833
scratch manage thing.

675
01:20:26,208 --> 01:20:29,000
Like it's so nice to not

676
01:20:29,000 --> 01:20:30,541
care if it's successful or not.

677
01:20:30,541 --> 01:20:31,000
I'm like, I don't

678
01:20:31,000 --> 01:20:31,666
care if it's successful.

679
01:20:31,791 --> 01:20:32,500
I'm gonna run it and

680
01:20:32,500 --> 01:20:33,250
maintain it regardless

681
01:20:33,250 --> 01:20:34,208
of anyone who uses it

682
01:20:34,208 --> 01:20:35,000
because I'm gonna use it

683
01:20:35,000 --> 01:20:36,875
every single day and it doesn't matter.

684
01:20:36,875 --> 01:20:37,916
And that's, I think

685
01:20:37,916 --> 01:20:39,333
also very freeing, right?

686
01:20:39,833 --> 01:20:40,958
You don't, you have to be like,

687
01:20:41,125 --> 01:20:42,166
I don't have my

688
01:20:42,166 --> 01:20:44,375
livelihood riding on this app.

689
01:20:45,250 --> 01:20:47,375
And also it gives confidence.

690
01:20:47,750 --> 01:20:49,875
I would think to the users that,

691
01:20:50,375 --> 01:20:52,291
okay, this guy's gonna be running it

692
01:20:52,291 --> 01:20:53,500
whether or not it's successful.

693
01:20:53,791 --> 01:20:55,166
So it doesn't matter.

694
01:20:55,500 --> 01:20:57,583
Like it'll always be online essentially.

695
01:20:58,458 --> 01:20:58,708
Right.

696
01:20:59,791 --> 01:21:02,750
What are some other apps like the,

697
01:21:03,125 --> 01:21:04,375
as far as like the IMAP engine,

698
01:21:05,166 --> 01:21:07,000
like how do you see it being used or,

699
01:21:08,125 --> 01:21:08,958
I know it's pretty new,

700
01:21:08,958 --> 01:21:10,000
so you might not have a

701
01:21:10,000 --> 01:21:11,416
lot of data behind all this,

702
01:21:11,416 --> 01:21:14,333
but I guess kind of anything

703
01:21:14,333 --> 01:21:16,250
that you're building PHP with email,

704
01:21:16,500 --> 01:21:17,583
you might need this.

705
01:21:17,583 --> 01:21:19,625
Is that sort of what you've been seeing

706
01:21:19,625 --> 01:21:21,291
or is it like more specific use cases?

707
01:21:22,291 --> 01:21:23,791
Yeah, I would think a lot.

708
01:21:24,750 --> 01:21:25,708
I would think of used

709
01:21:25,708 --> 01:21:28,166
a lot in intranet apps.

710
01:21:28,958 --> 01:21:31,541
I came from, like my

711
01:21:31,541 --> 01:21:33,416
career was kind of born

712
01:21:33,500 --> 01:21:35,458
in the enterprise world,

713
01:21:35,750 --> 01:21:38,083
building intranet apps for the federal

714
01:21:38,083 --> 01:21:38,708
government of Canada.

715
01:21:39,500 --> 01:21:41,166
I was a young kid just

716
01:21:41,166 --> 01:21:44,708
building in siloed servers,

717
01:21:44,708 --> 01:21:45,791
not having access to the internet,

718
01:21:46,000 --> 01:21:46,916
but we had all of our

719
01:21:46,916 --> 01:21:48,125
infrastructure internally.

720
01:21:48,625 --> 01:21:50,000
And so I was using PHP at the time

721
01:21:50,000 --> 01:21:51,666
to kind of talk to all of

722
01:21:51,666 --> 01:21:53,666
our internal services and stuff

723
01:21:54,333 --> 01:21:55,500
without access to the internet.

724
01:21:56,125 --> 01:21:57,250
And so I think it would be,

725
01:21:57,833 --> 01:21:59,166
I think IMAP engine would be

726
01:21:59,166 --> 01:22:00,541
probably particularly useful

727
01:22:00,541 --> 01:22:02,500
in those circumstances where you do have

728
01:22:02,666 --> 01:22:04,208
maybe some in-house email servers

729
01:22:04,208 --> 01:22:05,916
or you are kind of

730
01:22:05,916 --> 01:22:08,000
processing incoming emails

731
01:22:08,000 --> 01:22:09,500
to act upon them for something,

732
01:22:09,500 --> 01:22:11,500
maybe like an IT help desk or something.

733
01:22:13,416 --> 01:22:15,208
And those kinds of apps, yeah.

734
01:22:16,250 --> 01:22:16,916
Yeah, that makes sense.

735
01:22:17,166 --> 01:22:18,750
Yeah, in my past

736
01:22:18,750 --> 01:22:20,208
history, we had a help desk app

737
01:22:20,208 --> 01:22:20,875
and it was the same way

738
01:22:20,875 --> 01:22:21,875
we'd had a bunch of customers

739
01:22:21,875 --> 01:22:22,625
that would just run

740
01:22:22,625 --> 01:22:24,125
it completely offline.

741
01:22:24,916 --> 01:22:26,166
But then I can't remember

742
01:22:26,166 --> 01:22:27,291
how they would get around that,

743
01:22:27,291 --> 01:22:28,541
but they would check emails somehow

744
01:22:28,541 --> 01:22:29,208
and then it would,

745
01:22:30,416 --> 01:22:31,041
but basically you

746
01:22:31,041 --> 01:22:31,916
could run it all offline

747
01:22:32,458 --> 01:22:34,458
or all behind a firewall or something.

748
01:22:35,500 --> 01:22:37,333
So that makes perfect sense there.

749
01:22:38,708 --> 01:22:40,833
And not to sort of, well,

750
01:22:41,250 --> 01:22:42,833
I guess we should close out with this.

751
01:22:42,833 --> 01:22:44,875
Did we miss anything that you

752
01:22:44,875 --> 01:22:45,958
wanna talk about on the IMAP?

753
01:22:46,458 --> 01:22:48,625
Not really.

754
01:22:49,166 --> 01:22:49,541
I think it-

755
01:22:49,541 --> 01:22:51,500
Cause I was gonna say,

756
01:22:51,500 --> 01:22:52,208
cause I would like to talk

757
01:22:52,208 --> 01:22:53,125
about your other package.

758
01:22:53,125 --> 01:22:53,875
You've got one called

759
01:22:53,875 --> 01:22:55,500
LDAP record, is that right?

760
01:22:55,958 --> 01:22:56,833
Yeah, yeah.

761
01:22:57,500 --> 01:22:58,500
Yeah, yeah.

762
01:22:58,791 --> 01:23:00,500
It was born out of the

763
01:23:00,500 --> 01:23:03,291
same kind of frustration,

764
01:23:03,291 --> 01:23:05,041
I think, as IMAP engine.

765
01:23:07,125 --> 01:23:09,416
And for those not familiar with LDAP,

766
01:23:09,625 --> 01:23:12,875
that is directory

767
01:23:12,875 --> 01:23:14,916
access for finding users

768
01:23:14,916 --> 01:23:15,000
or something like that.

769
01:23:15,250 --> 01:23:18,208
I'm thinking about it right there.

770
01:23:18,583 --> 01:23:19,958
Yeah, it's lightweight

771
01:23:19,958 --> 01:23:21,791
directory access protocol.

772
01:23:22,250 --> 01:23:23,708
And it's again, another

773
01:23:23,708 --> 01:23:26,083
intranet focused protocol,

774
01:23:27,000 --> 01:23:29,166
like Microsoft Active Directory,

775
01:23:29,458 --> 01:23:32,125
which is basically a directory of users.

776
01:23:32,541 --> 01:23:35,041
Like if you are working in an enterprise

777
01:23:35,041 --> 01:23:36,666
and you have a user account,

778
01:23:36,666 --> 01:23:37,750
that's where it's gonna be stored.

779
01:23:38,583 --> 01:23:42,208
And so again, since I was building everything internally

780
01:23:42,833 --> 01:23:45,708
in a Microsoft based environment,

781
01:23:46,083 --> 01:23:47,625
we had everything connected

782
01:23:47,625 --> 01:23:49,250
to Microsoft Active Directory,

783
01:23:49,666 --> 01:23:50,500
which uses LDAP.

784
01:23:51,041 --> 01:23:51,875
And so we had like our

785
01:23:51,875 --> 01:23:53,333
printers connected to it.

786
01:23:53,333 --> 01:23:54,583
We had all the computers, all the

787
01:23:54,583 --> 01:23:55,791
devices, all the phones,

788
01:23:55,791 --> 01:23:57,083
like mail servers,

789
01:23:57,416 --> 01:23:58,333
everything is connected

790
01:23:58,333 --> 01:24:01,500
to this Microsoft Active Directory

791
01:24:01,500 --> 01:24:03,375
to manage all the user accounts,

792
01:24:03,375 --> 01:24:04,708
all the permissions, who

793
01:24:04,708 --> 01:24:06,166
accesses what and everything.

794
01:24:06,166 --> 01:24:07,583
And so that's where

795
01:24:07,583 --> 01:24:08,750
that was born from, yeah.

796
01:24:10,166 --> 01:24:11,250
You're just deep into the woods of,

797
01:24:11,291 --> 01:24:13,291
stuff that most people,

798
01:24:13,625 --> 01:24:14,958
I guess most new

799
01:24:14,958 --> 01:24:16,041
developers probably haven't touched

800
01:24:16,041 --> 01:24:17,750
any of these technologies, have they?

801
01:24:19,333 --> 01:24:23,666
But the, which I'm trying to think of,

802
01:24:25,791 --> 01:24:26,708
where I was going with this.

803
01:24:27,000 --> 01:24:33,875
So the LDAP record or LDAP directory

804
01:24:33,875 --> 01:24:35,250
isn't tied to email,

805
01:24:35,500 --> 01:24:37,250
but it can, you can use it

806
01:24:37,250 --> 01:24:39,125
as far as like pulling emails.

807
01:24:39,291 --> 01:24:42,000
Am I thinking, can't they kind of go

808
01:24:42,000 --> 01:24:43,333
together at some point?

809
01:24:43,791 --> 01:24:44,291
Yeah, absolutely.

810
01:24:44,541 --> 01:24:46,791
You can use it to like authenticate,

811
01:24:47,583 --> 01:24:48,416
like using those

812
01:24:48,416 --> 01:24:51,083
credentials to authenticate IMO,

813
01:24:51,541 --> 01:24:52,083
for example.

814
01:24:52,833 --> 01:24:53,375
Yeah, like that's where

815
01:24:53,375 --> 01:24:54,250
the username and password

816
01:24:54,250 --> 01:24:55,458
could be stored for the

817
01:24:55,458 --> 01:24:57,500
mailbox in IMO, for example,

818
01:24:58,333 --> 01:25:01,916
that like Microsoft Exchange server

819
01:25:02,625 --> 01:25:04,958
could be connected to.

820
01:25:06,500 --> 01:25:08,458
Yeah, and it is really deep in the weeds.

821
01:25:09,208 --> 01:25:11,958
It was something that,

822
01:25:12,291 --> 01:25:13,916
that when I again was

823
01:25:13,916 --> 01:25:17,833
interacting with this protocol,

824
01:25:18,125 --> 01:25:18,500
I was like, there's

825
01:25:18,500 --> 01:25:19,708
gotta be something out there

826
01:25:19,833 --> 01:25:21,000
and the solution's

827
01:25:21,000 --> 01:25:22,541
out there that I tried.

828
01:25:22,791 --> 01:25:24,208
Again, I forked another package

829
01:25:24,833 --> 01:25:26,916
and I was like, why is this so difficult?

830
01:25:27,583 --> 01:25:28,708
It can't be this difficult.

831
01:25:29,250 --> 01:25:31,041
I'm like, there's gotta be a reason why

832
01:25:31,041 --> 01:25:31,625
it's this difficult.

833
01:25:32,041 --> 01:25:33,458
And so I started like

834
01:25:33,458 --> 01:25:35,708
playing with it and I rebuilt

835
01:25:35,708 --> 01:25:37,041
that package, but I had to

836
01:25:37,041 --> 01:25:38,166
eventually throw it all out.

837
01:25:38,791 --> 01:25:40,208
And I started something from scratch

838
01:25:40,416 --> 01:25:41,625
and I've been maintaining it

839
01:25:41,625 --> 01:25:44,666
for probably the last three,

840
01:25:44,666 --> 01:25:46,041
three, four years now.

841
01:25:46,375 --> 01:25:47,833
It's matured quite a lot

842
01:25:47,833 --> 01:25:49,208
and it has actually like

843
01:25:49,208 --> 01:25:51,541
a quite significant amount of downloads.

844
01:25:51,750 --> 01:25:54,041
And I think there is an

845
01:25:54,041 --> 01:25:58,041
untapped market in PHP

846
01:25:58,666 --> 01:26:00,166
in the enterprise, in the

847
01:26:00,166 --> 01:26:01,500
intranet enterprise market

848
01:26:01,791 --> 01:26:03,666
where there's an unseen

849
01:26:03,666 --> 01:26:04,833
amount of people building

850
01:26:05,000 --> 01:26:06,583
their full apps internally

851
01:26:07,083 --> 01:26:07,958
that don't actually do

852
01:26:07,958 --> 01:26:08,833
anything on the outside.

853
01:26:09,291 --> 01:26:09,791
I mean, that's what I

854
01:26:09,791 --> 01:26:10,666
was doing for years.

855
01:26:11,250 --> 01:26:12,875
I wasn't building anything public-facing.

856
01:26:12,875 --> 01:26:14,625
I had maybe, I was lucky

857
01:26:14,625 --> 01:26:16,333
to have maybe 10, 20 users

858
01:26:16,708 --> 01:26:20,125
of the enterprise kind of using my app.

859
01:26:20,500 --> 01:26:21,250
And I felt super

860
01:26:21,250 --> 01:26:23,000
proud of that at the time.

861
01:26:23,416 --> 01:26:24,666
That was a kind of a guess.

862
01:26:24,666 --> 01:26:25,500
I got like 10 people

863
01:26:25,500 --> 01:26:26,625
using this, this is sweet.

864
01:26:27,708 --> 01:26:28,125
That's awesome.

865
01:26:28,541 --> 01:26:31,291
But yeah, it was a really fun experience

866
01:26:31,291 --> 01:26:32,208
and it comes with

867
01:26:32,208 --> 01:26:33,083
trade-offs and benefits,

868
01:26:33,250 --> 01:26:34,916
but it was a lot of fun.

869
01:26:35,791 --> 01:26:37,500
On a personal level, like how,

870
01:26:37,750 --> 01:26:38,750
since you're so big into

871
01:26:38,750 --> 01:26:39,666
like the Microsoft world,

872
01:26:39,875 --> 01:26:41,875
what made you go with PHP

873
01:26:41,875 --> 01:26:45,375
versus like ASP or ASP.net

874
01:26:45,375 --> 01:26:46,875
or whatever is over there now?

875
01:26:47,375 --> 01:26:48,208
That was, when I

876
01:26:48,208 --> 01:26:49,541
started it was PHP or ASP.

877
01:26:49,791 --> 01:26:52,541
Those were your two things or ColdFusion.

878
01:26:53,500 --> 01:26:54,375
So I'm just curious

879
01:26:54,375 --> 01:26:56,000
like why PHP and not ASP

880
01:26:56,000 --> 01:26:57,791
since you're so big

881
01:26:57,791 --> 01:26:58,666
into the Microsoft world?

882
01:26:59,458 --> 01:27:00,208
Yeah, that's actually

883
01:27:00,208 --> 01:27:00,750
a really good question.

884
01:27:01,625 --> 01:27:03,583
When I went to community college,

885
01:27:04,000 --> 01:27:07,583
I was taught C-sharp and PHP

886
01:27:08,375 --> 01:27:09,875
and PHP at the time

887
01:27:09,875 --> 01:27:11,500
just seemed a lot easier

888
01:27:12,208 --> 01:27:14,541
and it was kind of easier

889
01:27:14,541 --> 01:27:15,291
because it wasn't

890
01:27:15,291 --> 01:27:17,333
C-sharp is very strictly typed

891
01:27:17,333 --> 01:27:18,625
and you have to compile everything.

892
01:27:19,208 --> 01:27:21,166
And it was a slow moving process.

893
01:27:21,875 --> 01:27:22,958
I think at the time I

894
01:27:22,958 --> 01:27:24,833
was, I gravitated to PHP

895
01:27:24,833 --> 01:27:25,750
because I could just change

896
01:27:25,750 --> 01:27:27,041
something and refresh the page

897
01:27:27,041 --> 01:27:29,208
and it something happened.

898
01:27:30,125 --> 01:27:30,666
Because every time I

899
01:27:30,666 --> 01:27:31,833
did jump into C-sharp,

900
01:27:32,458 --> 01:27:33,500
change something, click

901
01:27:33,500 --> 01:27:35,250
the compile button and play

902
01:27:35,250 --> 01:27:36,500
and then it rebuilds

903
01:27:36,500 --> 01:27:37,250
and then you're able

904
01:27:37,250 --> 01:27:38,416
to access the new code.

905
01:27:38,666 --> 01:27:40,625
And it was such a hard

906
01:27:40,625 --> 01:27:42,458
process, a hard learning process,

907
01:27:42,458 --> 01:27:43,125
especially back then

908
01:27:43,125 --> 01:27:44,875
we didn't have any AI

909
01:27:45,500 --> 01:27:47,250
to tell you what you're doing wrong

910
01:27:47,250 --> 01:27:47,833
and what you're helping.

911
01:27:48,083 --> 01:27:49,125
It was like, I would spend hours

912
01:27:49,125 --> 01:27:50,333
trying to get something to compile.

913
01:27:51,041 --> 01:27:52,750
And so when I didn't have to

914
01:27:52,750 --> 01:27:54,416
deal with that in PHP land,

915
01:27:54,416 --> 01:27:55,166
it was such a

916
01:27:55,166 --> 01:27:57,375
significant productivity boost

917
01:27:57,750 --> 01:27:58,500
where you just keep like

918
01:27:58,500 --> 01:27:59,416
change something, refresh,

919
01:27:59,625 --> 01:28:00,458
change something, refresh,

920
01:28:00,458 --> 01:28:01,083
change something, refresh,

921
01:28:01,916 --> 01:28:03,750
it just kind of spiraled from there.

922
01:28:03,750 --> 01:28:04,166
And I'm like, okay,

923
01:28:04,166 --> 01:28:04,750
there's definitely something.

924
01:28:05,333 --> 01:28:06,875
I think I can get something going here.

925
01:28:07,250 --> 01:28:08,833
All right, that's cool.

926
01:28:09,041 --> 01:28:10,291
Yeah, my history.

927
01:28:10,666 --> 01:28:12,166
So when I started, it was,

928
01:28:12,416 --> 01:28:14,291
I used front page and then--

929
01:28:14,750 --> 01:28:15,750
What's that built on?

930
01:28:17,000 --> 01:28:18,291
Microsoft, Microsoft front

931
01:28:18,291 --> 01:28:19,416
page from back in the day.

932
01:28:19,500 --> 01:28:20,708
Oh, right, right, right.

933
01:28:21,166 --> 01:28:21,833
And you didn't use,

934
01:28:22,208 --> 01:28:23,875
basically it was just a WYSIWYG

935
01:28:24,416 --> 01:28:25,416
and you would publish the web.

936
01:28:25,416 --> 01:28:26,291
And I was like, well, I

937
01:28:26,291 --> 01:28:27,916
wanted to build this little app.

938
01:28:28,750 --> 01:28:30,833
And it was, at the time I was like,

939
01:28:30,958 --> 01:28:32,500
I don't know any language.

940
01:28:33,291 --> 01:28:34,416
And, but the internet was like,

941
01:28:34,416 --> 01:28:35,958
you either do ASP or PHP.

942
01:28:36,333 --> 01:28:37,375
So I started doing ASP

943
01:28:37,625 --> 01:28:38,125
because I was already

944
01:28:38,125 --> 01:28:39,000
on a Windows machine.

945
01:28:39,000 --> 01:28:39,750
I was like, oh, this will be good.

946
01:28:40,166 --> 01:28:41,375
But then I started looking at hosting

947
01:28:41,375 --> 01:28:42,791
and like the ASP

948
01:28:42,791 --> 01:28:44,750
hosting was like $20 a month.

949
01:28:44,750 --> 01:28:46,458
And I was like, well, that's dumb.

950
01:28:46,458 --> 01:28:47,208
I'm just gonna PHP.

951
01:28:48,666 --> 01:28:48,708
(laughing)

952
01:28:48,958 --> 01:28:51,125
That's how I found PHP and never left.

953
01:28:51,666 --> 01:28:52,791
Jesus is kind of like an economic

954
01:28:52,791 --> 01:28:53,666
decision at the time.

955
01:28:53,875 --> 01:28:56,333
Yes, it seemed to work out in the end.

956
01:28:56,791 --> 01:28:57,000
But--

957
01:28:57,791 --> 01:28:59,750
How was your learning

958
01:28:59,750 --> 01:29:01,500
curve with PHP then?

959
01:29:01,500 --> 01:29:03,208
How did you make that migration?

960
01:29:04,708 --> 01:29:07,916
So I was actually working

961
01:29:07,916 --> 01:29:09,208
at a motorcycle dealership

962
01:29:09,375 --> 01:29:10,583
in sales and I was like,

963
01:29:10,583 --> 01:29:12,041
we need a way to show our

964
01:29:12,041 --> 01:29:13,333
inventory on the internet.

965
01:29:13,791 --> 01:29:15,500
And that sort of got me, so I

966
01:29:15,500 --> 01:29:16,500
just wanted to build an app.

967
01:29:16,500 --> 01:29:19,291
I had no programming experience at all.

968
01:29:20,000 --> 01:29:21,333
And so back then you

969
01:29:21,333 --> 01:29:22,333
would just go visit forums,

970
01:29:22,541 --> 01:29:23,500
ask questions, read

971
01:29:23,500 --> 01:29:24,833
questions, try to help out.

972
01:29:25,041 --> 01:29:26,000
And that's how I kind

973
01:29:26,000 --> 01:29:27,083
of sort of picked up PHP

974
01:29:27,416 --> 01:29:28,500
and figured it all out.

975
01:29:29,458 --> 01:29:31,166
So this was way back.

976
01:29:31,166 --> 01:29:32,875
This was before CSS was around.

977
01:29:33,333 --> 01:29:35,541
It was everything was tables, spacer

978
01:29:35,541 --> 01:29:36,583
gifs, stuff like that.

979
01:29:37,000 --> 01:29:38,375
So it was way back.

980
01:29:39,125 --> 01:29:40,708
When did you personally

981
01:29:40,708 --> 01:29:42,333
discover like Laravel?

982
01:29:43,750 --> 01:29:47,000
So for me, I went from just straight PHP

983
01:29:47,375 --> 01:29:49,791
and then moved into found code igniter

984
01:29:49,791 --> 01:29:51,541
and I was like, oh, this is really good.

985
01:29:53,375 --> 01:29:55,041
And then as soon as I found Laravel,

986
01:29:55,083 --> 01:29:56,958
which was like version, I don't know,

987
01:29:56,958 --> 01:29:58,750
it was super early and Laravel,

988
01:29:58,750 --> 01:30:00,291
because Laravel went from

989
01:30:00,291 --> 01:30:01,500
like version one to three

990
01:30:01,500 --> 01:30:03,208
within a matter of six months probably.

991
01:30:03,500 --> 01:30:05,041
So it was somewhere in that range is

992
01:30:05,041 --> 01:30:06,375
where I found Laravel

993
01:30:06,958 --> 01:30:08,541
and I just never left.

994
01:30:08,541 --> 01:30:09,625
I was like, this is great.

995
01:30:09,625 --> 01:30:10,041
I love it.

996
01:30:10,041 --> 01:30:11,916
I like the way Taylor,

997
01:30:12,416 --> 01:30:13,625
his ideas going forward.

998
01:30:13,791 --> 01:30:15,000
So I just kind of stuck with

999
01:30:15,000 --> 01:30:16,583
it and the rest is history.

1000
01:30:17,083 --> 01:30:17,750
So I guess that was

1001
01:30:17,750 --> 01:30:19,208
what, 13 years ago, 12?

1002
01:30:19,500 --> 01:30:20,416
I don't know, it feels longer,

1003
01:30:20,833 --> 01:30:22,833
but it could be shorter though too.

1004
01:30:23,750 --> 01:30:27,000
Were you in the version three round then

1005
01:30:27,208 --> 01:30:27,625
when you started

1006
01:30:27,625 --> 01:30:29,208
building with it or at four?

1007
01:30:29,208 --> 01:30:29,500
Oh yeah.

1008
01:30:30,333 --> 01:30:31,791
No, I was in the round

1009
01:30:31,791 --> 01:30:33,416
when it didn't have anything

1010
01:30:33,583 --> 01:30:35,500
but just the really simple route.

1011
01:30:36,625 --> 01:30:38,041
Like, I forgot what,

1012
01:30:38,416 --> 01:30:40,958
anyway, it was like sort of right

1013
01:30:41,000 --> 01:30:42,250
after the first

1014
01:30:42,250 --> 01:30:45,166
announcement of where Laravel came out.

1015
01:30:46,166 --> 01:30:48,041
It like didn't have models or controllers

1016
01:30:48,458 --> 01:30:50,166
or anything back then.

1017
01:30:50,500 --> 01:30:51,833
Oh, it was very verbal, okay.

1018
01:30:51,958 --> 01:30:53,083
Yeah, so it was really early

1019
01:30:53,083 --> 01:30:54,166
and really, really,

1020
01:30:54,166 --> 01:30:55,416
really a long time ago.

1021
01:30:57,125 --> 01:30:58,583
But yeah, it's a,

1022
01:30:59,250 --> 01:31:00,583
yeah, back then it was IRC.

1023
01:31:00,583 --> 01:31:02,250
We all just chatted on our IRC.

1024
01:31:04,208 --> 01:31:05,000
So old, yeah.

1025
01:31:07,000 --> 01:31:08,000
Back in the good old days.

1026
01:31:08,333 --> 01:31:09,250
Yeah, yeah, no kidding.

1027
01:31:11,458 --> 01:31:12,541
Well, to go back to

1028
01:31:12,541 --> 01:31:13,416
what you're working on,

1029
01:31:13,666 --> 01:31:15,000
any other projects and stuff

1030
01:31:15,125 --> 01:31:17,416
that you've been working on

1031
01:31:17,416 --> 01:31:18,916
recently or you have launched?

1032
01:31:19,625 --> 01:31:20,291
Yeah, well, I'm

1033
01:31:20,291 --> 01:31:22,708
actually working on a product

1034
01:31:22,708 --> 01:31:23,541
that I didn't think that

1035
01:31:23,541 --> 01:31:26,250
I would ever really think

1036
01:31:26,250 --> 01:31:27,958
I'd be able to build is I'm

1037
01:31:27,958 --> 01:31:30,666
working on my own email client,

1038
01:31:31,083 --> 01:31:33,375
actually, so my own desktop email client.

1039
01:31:33,791 --> 01:31:34,708
And maybe I can ship it

1040
01:31:34,708 --> 01:31:35,958
on a phone at some point

1041
01:31:36,500 --> 01:31:37,708
because I've been an

1042
01:31:37,708 --> 01:31:40,250
Outlook user for my whole life.

1043
01:31:40,625 --> 01:31:41,791
Not really by choice,

1044
01:31:41,791 --> 01:31:42,625
it's just kind of landed.

1045
01:31:43,208 --> 01:31:44,625
And Outlook just when I was a kid

1046
01:31:44,625 --> 01:31:45,458
and I just have used it

1047
01:31:45,458 --> 01:31:46,583
for my whole life and stuff.

1048
01:31:46,625 --> 01:31:47,666
But I've been kind of

1049
01:31:47,666 --> 01:31:50,041
getting a little bit upset

1050
01:31:50,041 --> 01:31:51,708
with the recent changes with Outlook.

1051
01:31:51,916 --> 01:31:52,708
And so I'm like, I wonder

1052
01:31:52,708 --> 01:31:55,791
now that I've built my own

1053
01:31:57,708 --> 01:31:59,916
engine for connecting to IMAP,

1054
01:31:59,916 --> 01:32:00,416
I wonder if I could

1055
01:32:00,416 --> 01:32:02,041
build my own email client

1056
01:32:02,500 --> 01:32:03,875
that I would love to use.

1057
01:32:04,250 --> 01:32:05,833
And maybe others would love to use.

1058
01:32:05,833 --> 01:32:06,625
That is just super

1059
01:32:06,625 --> 01:32:08,000
simple, it's just emails

1060
01:32:08,291 --> 01:32:12,958
and no AI nonsense, no trash all over.

1061
01:32:13,416 --> 01:32:15,291
Because I think all these email clients,

1062
01:32:15,375 --> 01:32:16,000
the same with Gmail

1063
01:32:16,000 --> 01:32:19,291
and they become so heavy

1064
01:32:19,500 --> 01:32:20,875
and convoluted with features

1065
01:32:20,875 --> 01:32:22,041
that you don't want or need.

1066
01:32:22,041 --> 01:32:22,916
It's like, I just want

1067
01:32:22,916 --> 01:32:24,958
my inbox, my folders,

1068
01:32:25,666 --> 01:32:28,000
and my email with a basic

1069
01:32:28,000 --> 01:32:29,791
like markdown editor if possible.

1070
01:32:30,208 --> 01:32:32,000
And that's it, like I don't need anything

1071
01:32:32,000 --> 01:32:32,750
else other than that.

1072
01:32:33,125 --> 01:32:34,708
So I'm wanting to,

1073
01:32:35,208 --> 01:32:36,083
I'm right now building,

1074
01:32:36,750 --> 01:32:38,000
using native PHP

1075
01:32:38,000 --> 01:32:40,000
actually, Simon's native PHP,

1076
01:32:40,583 --> 01:32:41,916
I'm building on top of.

1077
01:32:42,958 --> 01:32:44,375
So I'm gonna see if I can make it happen.

1078
01:32:45,250 --> 01:32:46,166
I was gonna, that was

1079
01:32:46,166 --> 01:32:47,625
actually gonna be my next question,

1080
01:32:47,625 --> 01:32:48,500
is what you're building it on.

1081
01:32:48,750 --> 01:32:50,041
So native PHP seems like a

1082
01:32:50,041 --> 01:32:51,250
perfect pairing for that.

1083
01:32:52,125 --> 01:32:52,291
Yeah.

1084
01:32:52,541 --> 01:32:56,625
And yeah, it's funny, like every year,

1085
01:32:57,583 --> 01:32:58,916
I guess email clients are

1086
01:32:58,916 --> 01:33:00,000
sort of like to-do apps.

1087
01:33:00,000 --> 01:33:00,833
Like every year I go

1088
01:33:00,833 --> 01:33:02,791
searching for a new email app

1089
01:33:02,875 --> 01:33:05,250
and nothing is like perfect.

1090
01:33:05,500 --> 01:33:06,875
It's like, surely

1091
01:33:06,875 --> 01:33:08,125
something out there is perfect,

1092
01:33:08,125 --> 01:33:09,791
but it's like, I've yet to find it yet.

1093
01:33:10,666 --> 01:33:12,000
So I think there's

1094
01:33:12,000 --> 01:33:13,500
always a market for email apps

1095
01:33:13,500 --> 01:33:14,375
and to-do apps.

1096
01:33:15,041 --> 01:33:16,833
Yeah, yeah, like there's

1097
01:33:16,833 --> 01:33:19,000
always something wrong about it

1098
01:33:19,041 --> 01:33:21,416
or the company you download it from

1099
01:33:21,416 --> 01:33:22,666
is pushing one kind

1100
01:33:22,666 --> 01:33:23,625
of service or another,

1101
01:33:24,000 --> 01:33:25,291
or they want you to pay a

1102
01:33:25,291 --> 01:33:26,416
subscription or something.

1103
01:33:26,666 --> 01:33:27,375
And it's like, can I

1104
01:33:27,375 --> 01:33:29,333
just get like an email app

1105
01:33:29,333 --> 01:33:31,250
that just does email and that's it?

1106
01:33:31,250 --> 01:33:32,500
Like just super bare

1107
01:33:32,500 --> 01:33:33,833
bones and a clean interface,

1108
01:33:33,833 --> 01:33:35,333
that's all I need and that's all I want.

1109
01:33:36,208 --> 01:33:37,375
And all these companies

1110
01:33:37,375 --> 01:33:38,958
are just trying to add

1111
01:33:39,041 --> 01:33:40,000
all these services on

1112
01:33:40,000 --> 01:33:41,666
and especially AI, right?

1113
01:33:41,666 --> 01:33:42,500
Like the AI craze,

1114
01:33:42,708 --> 01:33:43,375
everyone is trying to

1115
01:33:43,375 --> 01:33:44,583
get them at AI craze

1116
01:33:44,583 --> 01:33:46,916
to slap services in your email.

1117
01:33:47,458 --> 01:33:48,833
And I don't want any of that.

1118
01:33:48,833 --> 01:33:49,583
I want like the spam

1119
01:33:49,583 --> 01:33:52,041
protection service that I'm using.

1120
01:33:52,041 --> 01:33:54,416
Like I want just the emails filtered out

1121
01:33:54,416 --> 01:33:55,208
that I shouldn't see,

1122
01:33:55,583 --> 01:33:57,333
but when it comes to actually like

1123
01:33:57,333 --> 01:33:58,333
looking at my email,

1124
01:33:58,583 --> 01:33:59,666
interacting with my email,

1125
01:33:59,666 --> 01:34:00,791
sending emails, replying,

1126
01:34:01,000 --> 01:34:02,000
I want that to be a really

1127
01:34:02,000 --> 01:34:04,333
clean and bare bones experience

1128
01:34:04,750 --> 01:34:07,250
where there's no nonsense, you know?

1129
01:34:08,250 --> 01:34:11,958
Yes, speaking of AI, the best use case,

1130
01:34:11,958 --> 01:34:13,416
I think I've seen in an

1131
01:34:13,416 --> 01:34:16,625
email is it's through the search

1132
01:34:16,833 --> 01:34:18,833
and you can be like, you know,

1133
01:34:19,041 --> 01:34:20,666
what meetings do I have tomorrow?

1134
01:34:21,041 --> 01:34:22,000
And it'll go through all

1135
01:34:22,000 --> 01:34:23,041
your emails and be like,

1136
01:34:23,041 --> 01:34:24,625
these are, you know, these are things

1137
01:34:24,708 --> 01:34:26,083
that might be coming up due

1138
01:34:26,083 --> 01:34:27,416
tomorrow, things like that,

1139
01:34:27,416 --> 01:34:28,166
which is kind of neat,

1140
01:34:28,833 --> 01:34:31,375
especially when you have it like talk to

1141
01:34:31,375 --> 01:34:32,083
somebody in a while.

1142
01:34:32,083 --> 01:34:32,708
It's like, when's the last

1143
01:34:32,708 --> 01:34:34,291
time I talked to, you know,

1144
01:34:35,666 --> 01:34:38,041
John, and it'll just pop up and be like,

1145
01:34:38,208 --> 01:34:39,000
here's all the John's

1146
01:34:39,000 --> 01:34:39,791
you've talked to recently.

1147
01:34:40,250 --> 01:34:40,833
Things like that I

1148
01:34:40,833 --> 01:34:42,083
found kind of interesting.

1149
01:34:43,250 --> 01:34:44,250
Interesting, Abhiu, is

1150
01:34:44,250 --> 01:34:45,500
there an email client right now

1151
01:34:45,500 --> 01:34:47,583
or email service that does that for you?

1152
01:34:48,250 --> 01:34:50,125
Yeah, it's, speaking of

1153
01:34:50,125 --> 01:34:51,541
subscriptions, it's superhuman,

1154
01:34:51,958 --> 01:34:53,583
but it does all that

1155
01:34:53,583 --> 01:34:54,791
with its AI integration,

1156
01:34:55,041 --> 01:34:56,291
but it does a lot more to that.

1157
01:34:56,583 --> 01:34:57,791
That's really the only use case

1158
01:34:57,791 --> 01:34:59,458
that I've actually enjoyed for the AI.

1159
01:34:59,916 --> 01:35:01,833
The rest of it's just like more

1160
01:35:01,833 --> 01:35:02,583
annoyance, you know,

1161
01:35:02,625 --> 01:35:04,291
where it tries to rewrite your, you know,

1162
01:35:04,750 --> 01:35:06,250
it tries to be like a Grammarly

1163
01:35:06,250 --> 01:35:07,625
and like rewrite how you're

1164
01:35:07,625 --> 01:35:08,708
writing and stuff like that.

1165
01:35:08,958 --> 01:35:09,125
Exactly.

1166
01:35:09,166 --> 01:35:10,166
And I hate all that.

1167
01:35:10,458 --> 01:35:11,416
Oh my gosh, yeah.

1168
01:35:11,708 --> 01:35:13,500
Just let me write in my natural tone.

1169
01:35:13,916 --> 01:35:14,791
Yeah, and you know,

1170
01:35:14,791 --> 01:35:15,708
that's so funny you say that

1171
01:35:15,708 --> 01:35:17,500
because the whole

1172
01:35:17,500 --> 01:35:19,000
issue I have with Outlook

1173
01:35:19,208 --> 01:35:20,000
and why I'm building

1174
01:35:20,000 --> 01:35:21,375
this email client now

1175
01:35:22,208 --> 01:35:23,333
is because Outlook

1176
01:35:23,333 --> 01:35:25,041
recently introduced CoPilot

1177
01:35:25,333 --> 01:35:26,416
in their writing experience.

1178
01:35:26,750 --> 01:35:29,333
And so as you type, it shows what they

1179
01:35:29,333 --> 01:35:30,375
think you want to say

1180
01:35:30,750 --> 01:35:31,583
after you're typing. Oh yeah, yes.

1181
01:35:31,875 --> 01:35:33,541
Kind of like in an editor in a way,

1182
01:35:33,875 --> 01:35:35,333
but in editor it helps more.

1183
01:35:35,333 --> 01:35:36,666
It's like I don't need

1184
01:35:36,666 --> 01:35:37,833
help to write an email,

1185
01:35:38,041 --> 01:35:39,833
like stop it and I can't disable it.

1186
01:35:40,125 --> 01:35:42,416
And so now I'm

1187
01:35:42,416 --> 01:35:43,625
building my own email client

1188
01:35:44,208 --> 01:35:45,375
so that no one can mess

1189
01:35:45,375 --> 01:35:46,458
with my email experience.

1190
01:35:47,708 --> 01:35:48,250
That's great.

1191
01:35:48,750 --> 01:35:50,250
That's the new age of clipping, right?

1192
01:35:50,541 --> 01:35:51,958
You know. Yeah, yeah.

1193
01:35:52,666 --> 01:35:53,166
Please stop.

1194
01:35:54,000 --> 01:35:54,958
Please let me know.

1195
01:35:56,291 --> 01:35:57,375
That's wild though, yeah.

1196
01:35:57,791 --> 01:35:58,791
That's probably my

1197
01:35:58,791 --> 01:35:59,916
biggest annoyance with AI

1198
01:36:00,083 --> 01:36:02,083
is the things like that.

1199
01:36:02,083 --> 01:36:02,833
I know Google, like

1200
01:36:02,833 --> 01:36:04,250
Gmail wants to do that too.

1201
01:36:04,250 --> 01:36:05,000
I don't know if you,

1202
01:36:05,416 --> 01:36:06,375
well, since you use Outlook,

1203
01:36:06,375 --> 01:36:07,208
you probably don't use Gmail.

1204
01:36:07,208 --> 01:36:09,125
But as you write in the Gmail interface,

1205
01:36:09,125 --> 01:36:09,958
it tries to

1206
01:36:09,958 --> 01:36:11,791
auto-complete and do all this stuff.

1207
01:36:12,625 --> 01:36:13,875
And it's the same way, it just,

1208
01:36:14,125 --> 01:36:15,166
to me that gets on my nerves.

1209
01:36:15,666 --> 01:36:17,333
And the other one that gets on my nerves

1210
01:36:17,458 --> 01:36:20,083
is actually Grammarly, you know,

1211
01:36:20,083 --> 01:36:21,333
because I write a lot of

1212
01:36:21,333 --> 01:36:22,208
articles for liberal news,

1213
01:36:22,208 --> 01:36:23,458
so I use Grammarly to try

1214
01:36:23,458 --> 01:36:25,291
to help me fix the spelling

1215
01:36:25,375 --> 01:36:26,500
mistakes and commas

1216
01:36:26,500 --> 01:36:27,250
and all that other stuff.

1217
01:36:27,625 --> 01:36:28,666
But now it's like, well,

1218
01:36:29,000 --> 01:36:29,416
you should just

1219
01:36:29,416 --> 01:36:30,541
rewrite this whole sentence.

1220
01:36:30,875 --> 01:36:32,625
And then they like, it loses context.

1221
01:36:32,916 --> 01:36:34,250
It's like, it just don't

1222
01:36:34,250 --> 01:36:35,291
even sound like something

1223
01:36:35,291 --> 01:36:36,291
I would write in the first place.

1224
01:36:36,916 --> 01:36:38,708
And that part's very

1225
01:36:38,708 --> 01:36:39,625
annoying with the AI.

1226
01:36:40,333 --> 01:36:41,208
Yeah, yeah, 100%.

1227
01:36:42,166 --> 01:36:43,416
And I think I've gotten to the point.

1228
01:36:44,416 --> 01:36:46,000
There's a lot of AI tools right now

1229
01:36:46,125 --> 01:36:49,666
that really are trying to

1230
01:36:49,666 --> 01:36:52,958
not get you to write things,

1231
01:36:53,958 --> 01:36:54,958
even though they should be,

1232
01:36:55,166 --> 01:36:56,291
like things that should

1233
01:36:56,291 --> 01:36:58,166
be personal and authentic.

1234
01:36:58,666 --> 01:37:00,583
And I think email and text messages

1235
01:37:01,250 --> 01:37:03,291
and posts on social media,

1236
01:37:03,291 --> 01:37:04,916
these are really like

1237
01:37:04,916 --> 01:37:06,541
services that you should be posting

1238
01:37:06,666 --> 01:37:07,750
things that are authentic

1239
01:37:07,750 --> 01:37:09,458
and stuff that you would write.

1240
01:37:10,000 --> 01:37:11,750
And these services are trying to get,

1241
01:37:12,000 --> 01:37:13,500
like trying to shovel or

1242
01:37:13,500 --> 01:37:14,708
pigeonhole themselves in

1243
01:37:14,750 --> 01:37:16,000
and be like, no, it's okay.

1244
01:37:16,000 --> 01:37:16,708
Like we'll thank for

1245
01:37:16,708 --> 01:37:17,583
you, we'll write for you.

1246
01:37:17,958 --> 01:37:19,000
And say, I don't want that.

1247
01:37:19,291 --> 01:37:20,625
I'm like, I'm okay with like

1248
01:37:20,625 --> 01:37:23,708
code kind of being pushed in

1249
01:37:23,708 --> 01:37:25,041
and I can touch it up and

1250
01:37:25,041 --> 01:37:25,916
change it and everything.

1251
01:37:26,000 --> 01:37:27,875
But when it comes to

1252
01:37:27,875 --> 01:37:30,125
those personal services

1253
01:37:30,500 --> 01:37:31,916
that require authenticity,

1254
01:37:32,500 --> 01:37:33,333
I'd rather be okay

1255
01:37:33,333 --> 01:37:34,416
with making the mistake

1256
01:37:35,333 --> 01:37:37,083
of like grammar mistakes and stuff

1257
01:37:37,083 --> 01:37:37,833
and showing that

1258
01:37:37,833 --> 01:37:39,500
nowadays, especially nowadays,

1259
01:37:39,791 --> 01:37:42,875
because all the AI slop that we're seeing

1260
01:37:42,875 --> 01:37:44,875
and Twitter and Facebook

1261
01:37:44,875 --> 01:37:46,833
and all these posts, right?

1262
01:37:46,958 --> 01:37:48,291
Everyone's using AI to write stuff.

1263
01:37:49,416 --> 01:37:51,750
Yeah, yeah, that's very true.

1264
01:37:52,750 --> 01:37:54,500
It's almost like

1265
01:37:54,500 --> 01:37:56,333
mistakes are now more authentic

1266
01:37:56,333 --> 01:37:57,291
and it makes you

1267
01:37:57,291 --> 01:37:58,708
feel, makes it more human

1268
01:37:58,708 --> 01:38:00,208
than perfect writing.

1269
01:38:00,583 --> 01:38:02,000
Exactly, which is such a

1270
01:38:02,000 --> 01:38:03,166
weird circle of events.

1271
01:38:03,833 --> 01:38:05,625
Yeah, well, even the kids,

1272
01:38:05,916 --> 01:38:08,125
like I've got two kids in high school now

1273
01:38:08,125 --> 01:38:09,583
and when they do their reports,

1274
01:38:10,625 --> 01:38:12,291
if they don't make any mistakes

1275
01:38:12,291 --> 01:38:12,833
then the teachers

1276
01:38:12,833 --> 01:38:13,625
thinks they're cheating.

1277
01:38:14,458 --> 01:38:16,208
So it's like, there's this whole like

1278
01:38:16,208 --> 01:38:17,791
weird dynamic going on

1279
01:38:17,791 --> 01:38:19,916
where they can't trust anything anymore

1280
01:38:19,916 --> 01:38:20,916
unless there's mistakes in it.

1281
01:38:21,041 --> 01:38:21,708
It's like, what?

1282
01:38:23,750 --> 01:38:26,125
Gosh, I wonder what the experience

1283
01:38:26,250 --> 01:38:28,125
of elementary school and

1284
01:38:28,125 --> 01:38:29,375
high school would be right now

1285
01:38:29,500 --> 01:38:32,250
with AI, that'd be interesting.

1286
01:38:32,250 --> 01:38:33,000
And your kids are loving it.

1287
01:38:33,833 --> 01:38:35,541
Yeah, I remember now

1288
01:38:35,541 --> 01:38:37,000
this probably ages me.

1289
01:38:37,250 --> 01:38:41,041
So I took typewriting in high school

1290
01:38:41,500 --> 01:38:45,000
and the guy that sat beside me,

1291
01:38:45,000 --> 01:38:45,958
of course we were on like,

1292
01:38:45,958 --> 01:38:49,041
you know, 1992 Windows machines

1293
01:38:49,500 --> 01:38:51,250
but he taught me how to copy and paste.

1294
01:38:51,500 --> 01:38:52,083
And I was like,

1295
01:38:53,083 --> 01:38:53,500
cause you know, you'd

1296
01:38:53,500 --> 01:38:54,416
have to write the same line

1297
01:38:54,416 --> 01:38:56,333
like four times and that was like,

1298
01:38:56,625 --> 01:38:57,666
oh, this is the future,

1299
01:38:57,666 --> 01:38:58,625
this is the best thing ever.

1300
01:38:59,291 --> 01:39:00,000
And now it's just like

1301
01:39:00,000 --> 01:39:01,791
AI can just do everything.

1302
01:39:02,083 --> 01:39:03,208
Oh my gosh, that's crazy.

1303
01:39:03,791 --> 01:39:04,708
You have such a nice frame

1304
01:39:04,708 --> 01:39:05,833
of reference though, right?

1305
01:39:06,208 --> 01:39:07,541
But it's so

1306
01:39:07,541 --> 01:39:09,333
interesting because, you know,

1307
01:39:10,500 --> 01:39:13,833
you would think that you

1308
01:39:13,833 --> 01:39:15,250
would show anyone, you know,

1309
01:39:15,458 --> 01:39:16,791
from that distance of time,

1310
01:39:17,000 --> 01:39:18,833
if you transported them to now,

1311
01:39:19,291 --> 01:39:21,666
their mind would be absolutely shattered.

1312
01:39:21,666 --> 01:39:22,958
They're like, how is this possible?

1313
01:39:22,958 --> 01:39:24,833
This is like a machine God

1314
01:39:24,833 --> 01:39:26,416
we're speaking with right now.

1315
01:39:27,375 --> 01:39:28,291
But because it's been

1316
01:39:28,291 --> 01:39:29,958
such a gradual increase

1317
01:39:30,166 --> 01:39:32,208
of intelligence, we're kind

1318
01:39:32,208 --> 01:39:33,791
of warmed into it, you know,

1319
01:39:33,791 --> 01:39:35,541
gradually warmed into it.

1320
01:39:36,000 --> 01:39:36,750
And so it's not as

1321
01:39:36,750 --> 01:39:38,458
shocking as it should be

1322
01:39:38,458 --> 01:39:40,041
but it is actually so

1323
01:39:40,041 --> 01:39:42,166
shocking to where we are right now.

1324
01:39:42,166 --> 01:39:43,583
The intelligence is actually wild.

1325
01:39:44,541 --> 01:39:46,750
Yeah, well, that sort of reminds me too.

1326
01:39:47,125 --> 01:39:48,041
I know we're getting so

1327
01:39:48,041 --> 01:39:48,916
kind of off the subject

1328
01:39:49,000 --> 01:39:50,166
but when I first

1329
01:39:50,166 --> 01:39:53,125
started, I really struggled

1330
01:39:53,375 --> 01:39:55,166
on like comprehending

1331
01:39:55,166 --> 01:39:56,750
you had a web server,

1332
01:39:57,333 --> 01:39:58,666
you had a database server,

1333
01:39:59,125 --> 01:40:00,791
and then you had the browser

1334
01:40:01,416 --> 01:40:04,250
and how those all pieces fit together.

1335
01:40:04,250 --> 01:40:05,000
Cause like I could not

1336
01:40:05,000 --> 01:40:06,875
comprehend this database thing

1337
01:40:07,041 --> 01:40:08,500
and how we connect to it

1338
01:40:08,500 --> 01:40:09,500
and talk to it and all this.

1339
01:40:10,000 --> 01:40:10,500
And then all of a

1340
01:40:10,500 --> 01:40:11,125
sudden one day it clicked

1341
01:40:11,125 --> 01:40:12,458
and it's like, well, I was

1342
01:40:12,458 --> 01:40:13,541
sort of an idiot back then,

1343
01:40:13,541 --> 01:40:14,625
you know, but now it's

1344
01:40:14,625 --> 01:40:15,708
just like common knowledge

1345
01:40:15,708 --> 01:40:16,541
that everybody knows.

1346
01:40:16,541 --> 01:40:18,291
It's like, oh yeah, it's basics.

1347
01:40:18,875 --> 01:40:19,541
But we didn't have video

1348
01:40:19,541 --> 01:40:20,625
tutorials back then either.

1349
01:40:20,625 --> 01:40:21,208
You know, it was just

1350
01:40:21,208 --> 01:40:22,375
what you could find.

1351
01:40:23,083 --> 01:40:25,500
Yeah, I mean, yeah, that was so new.

1352
01:40:26,000 --> 01:40:27,875
I mean, MVC, the MVC

1353
01:40:27,875 --> 01:40:30,166
pattern was super, super new

1354
01:40:30,416 --> 01:40:31,500
at that time for sure.

1355
01:40:32,166 --> 01:40:35,125
And figuring out how to do that properly

1356
01:40:35,500 --> 01:40:36,500
and make it feel

1357
01:40:36,500 --> 01:40:38,208
right was very difficult.

1358
01:40:38,916 --> 01:40:40,458
You know, cause when I, I'm

1359
01:40:40,458 --> 01:40:41,208
sure you remember this one

1360
01:40:41,375 --> 01:40:42,583
when PHP first got

1361
01:40:42,583 --> 01:40:44,250
around, everyone was kind of,

1362
01:40:44,875 --> 01:40:47,041
you'd have a form and

1363
01:40:47,041 --> 01:40:48,958
you'd inject PHP tags

1364
01:40:48,958 --> 01:40:49,916
at the top of a form to

1365
01:40:49,916 --> 01:40:51,625
like handle the form submission

1366
01:40:51,958 --> 01:40:53,541
in its own page.

1367
01:40:53,958 --> 01:40:56,000
And that would also like

1368
01:40:56,000 --> 01:40:57,625
execute like a SQL query

1369
01:40:57,625 --> 01:40:59,750
to the backend database and stuff.

1370
01:40:59,750 --> 01:41:02,041
And it was so ugly and it was weird.

1371
01:41:02,291 --> 01:41:02,833
And everyone was trying to

1372
01:41:02,833 --> 01:41:04,083
figure out how does this work?

1373
01:41:04,083 --> 01:41:04,958
How do we make this work?

1374
01:41:07,041 --> 01:41:08,333
Yeah, well, I remember like

1375
01:41:08,333 --> 01:41:09,875
PHP didn't even have classes,

1376
01:41:09,875 --> 01:41:11,000
you know, back, I want to

1377
01:41:11,000 --> 01:41:13,083
say PHP four days or, you know.

1378
01:41:13,083 --> 01:41:13,750
Yeah, that's right.

1379
01:41:14,125 --> 01:41:14,875
It was only functions.

1380
01:41:15,708 --> 01:41:16,666
You could only write functions.

1381
01:41:17,791 --> 01:41:19,041
It's crazy just how far

1382
01:41:19,041 --> 01:41:20,833
we've came in the last 20 years,

1383
01:41:21,250 --> 01:41:23,000
you know, I guess 24 years,

1384
01:41:23,000 --> 01:41:23,500
cause this would have been

1385
01:41:23,500 --> 01:41:24,875
early night or late nineties,

1386
01:41:24,875 --> 01:41:26,791
early 2000s when I was around.

1387
01:41:27,083 --> 01:41:29,041
But yeah, it's just, that part's crazy.

1388
01:41:29,041 --> 01:41:30,125
Just thinking about it.

1389
01:41:30,125 --> 01:41:30,625
Yeah, not having

1390
01:41:30,625 --> 01:41:31,916
classes, that would be wild.

1391
01:41:32,208 --> 01:41:34,416
I've never had PHP

1392
01:41:34,416 --> 01:41:35,833
without that functionality.

1393
01:41:36,333 --> 01:41:38,541
So you were there for the glory days.

1394
01:41:39,583 --> 01:41:41,333
I mean, I'm thinking they didn't,

1395
01:41:41,500 --> 01:41:42,458
I mean, nobody used them.

1396
01:41:42,458 --> 01:41:43,083
I think you're right, yeah.

1397
01:41:43,500 --> 01:41:44,333
If they did have classes,

1398
01:41:44,333 --> 01:41:45,666
I don't remember ever seeing a class

1399
01:41:45,666 --> 01:41:47,458
until like PHP five,

1400
01:41:47,666 --> 01:41:49,333
but I could be totally, totally

1401
01:41:49,333 --> 01:41:50,375
misremembering this stuff.

1402
01:41:50,916 --> 01:41:52,333
You know, I am getting old now.

1403
01:41:52,333 --> 01:41:54,125
I'm quite forgetful.

1404
01:41:56,458 --> 01:41:58,250
But I don't want to do

1405
01:41:58,250 --> 01:41:59,250
this all day, you know,

1406
01:41:59,250 --> 01:41:59,833
I don't want to keep you

1407
01:41:59,833 --> 01:42:02,083
from family life and other life,

1408
01:42:02,291 --> 01:42:04,750
but anything else to work on that we miss

1409
01:42:04,750 --> 01:42:05,291
that you want to bring

1410
01:42:05,291 --> 01:42:07,458
up or people to check out?

1411
01:42:09,916 --> 01:42:10,583
Well, I wouldn't like

1412
01:42:10,583 --> 01:42:11,625
to check out iMap Engine.

1413
01:42:11,916 --> 01:42:13,875
Just take a look and

1414
01:42:13,875 --> 01:42:15,791
if they're interested

1415
01:42:16,000 --> 01:42:17,458
in viewing how it works,

1416
01:42:17,458 --> 01:42:19,125
or if they're thinking about

1417
01:42:19,125 --> 01:42:20,250
building a project with it,

1418
01:42:20,250 --> 01:42:22,500
it'd be nice to give it a

1419
01:42:22,500 --> 01:42:23,125
start if you're interested

1420
01:42:23,416 --> 01:42:25,041
and take a look and all

1421
01:42:25,041 --> 01:42:26,250
the other open source work

1422
01:42:26,250 --> 01:42:26,833
that I have.

1423
01:42:27,583 --> 01:42:29,333
I think they might find

1424
01:42:29,333 --> 01:42:30,708
things that are useful

1425
01:42:30,708 --> 01:42:32,083
they could build with.

1426
01:42:32,791 --> 01:42:36,166
And I really tried really hard.

1427
01:42:36,375 --> 01:42:37,375
I tried really hard in

1428
01:42:37,375 --> 01:42:38,250
all my open source stuff

1429
01:42:38,291 --> 01:42:40,333
to make sure that the

1430
01:42:40,333 --> 01:42:41,333
developer experiences

1431
01:42:41,666 --> 01:42:45,875
is top tier to what my own standards.

1432
01:42:47,541 --> 01:42:48,208
I love that.

1433
01:42:48,208 --> 01:42:48,791
I love that.

1434
01:42:48,791 --> 01:42:50,875
Well, I want to say thank you

1435
01:42:50,875 --> 01:42:52,500
again for coming on the show

1436
01:42:52,500 --> 01:42:53,708
and talking about all

1437
01:42:53,708 --> 01:42:57,375
this very nerdy email stuff

1438
01:42:57,541 --> 01:43:00,166
and active record and all the fun things.

1439
01:43:00,208 --> 01:43:01,916
I can talk about it for days.

1440
01:43:02,333 --> 01:43:03,333
I'm so invested.

1441
01:43:05,000 --> 01:43:06,500
Ask me anything about the RFC

1442
01:43:06,833 --> 01:43:07,458
and I'll tell you.

1443
01:43:09,333 --> 01:43:10,916
(laughing) That's great.

1444
01:43:12,291 --> 01:43:13,208
Oh, that's fun.

1445
01:43:13,708 --> 01:43:14,333
Well, Steve, I want to

1446
01:43:14,333 --> 01:43:15,375
thank you again for coming on

1447
01:43:15,500 --> 01:43:17,500
and everybody I'll have all the links

1448
01:43:17,500 --> 01:43:19,041
that we talked about in the show notes

1449
01:43:19,208 --> 01:43:22,000
and we'll have a post on Laravel News

1450
01:43:22,166 --> 01:43:24,625
dedicated to all this and everything.

1451
01:43:24,958 --> 01:43:26,208
So thanks for tuning

1452
01:43:26,208 --> 01:43:27,791
in and until next time.

1453
01:43:28,208 --> 01:43:28,791
Thank you so much.