1
00:00:10,000 --> 00:00:13,771
Welcome to Countdown to Laravel Live I'm Mathias Hansen, your host.

2
00:00:13,771 --> 00:00:15,584
And today I'm chatting with Dan Johnson.

3
00:00:15,584 --> 00:00:17,511
Hey Dan how's it going?

4
00:00:17,511 --> 00:00:20,303
Hiya, really good thanks, great to be here.

5
00:00:21,246 --> 00:00:25,959
Thank you for being on and thank you for coming to speak at Laravel Live later this year.

6
00:00:26,161 --> 00:00:27,516
Yeah, super excited to be there.

7
00:00:27,516 --> 00:00:29,974
I loved my time last year at Laravel Live Denmark.

8
00:00:29,974 --> 00:00:32,450
So yeah, really, really excited to be back.

9
00:00:32,706 --> 00:00:38,266
Yeah, and we'll talk about later, but this year you're gonna have to talk about something
completely different from last year.

10
00:00:38,266 --> 00:00:39,181
So that's gonna be fun.

11
00:00:39,181 --> 00:00:39,812
the last talk.

12
00:00:39,812 --> 00:00:42,667
Yeah, this one, I've been excited to talk about this for a while.

13
00:00:42,667 --> 00:00:45,313
It's been a project that I've been working on for a couple of years now.

14
00:00:45,313 --> 00:00:47,737
So really excited to show you what I've got.

15
00:00:48,217 --> 00:00:51,637
So before we dig too much into that, I really want to start at the beginning.

16
00:00:51,637 --> 00:00:56,247
I want to hear more about how you first got into programming or computers.

17
00:00:56,247 --> 00:00:59,431
What are your earliest memories of technology, essentially?

18
00:01:00,271 --> 00:01:02,557
Yeah, so I've always been a bit of a computer nerd.

19
00:01:02,557 --> 00:01:13,143
I remember back when I was about five or six we got our first family computer and it lived
in the computer room and it was this giant computer with a big CRT screen and we had a

20
00:01:13,143 --> 00:01:22,419
scanner and a printer and it was running Windows 95 and I just I loved using the computer
this was before we even had internet and when I was in primary school all the teachers

21
00:01:22,419 --> 00:01:28,184
said to me well you're gonna grow up to be some computer superstar and then yeah I guess
when I was in

22
00:01:28,184 --> 00:01:30,366
in secondary school.

23
00:01:30,366 --> 00:01:32,248
I had an interest in programming.

24
00:01:32,248 --> 00:01:39,317
I didn't know what I was doing, but I started to teach myself some things, watching
YouTube videos, reading documentation, playing around with bits.

25
00:01:39,317 --> 00:01:41,057
And I didn't go to university.

26
00:01:41,057 --> 00:01:42,079
I just taught myself.

27
00:01:42,079 --> 00:01:47,964
I got lucky enough to be hired as a junior developer by a local company working on their
e-commerce website.

28
00:01:47,964 --> 00:01:51,638
And then on the job, I learned all about different frameworks.

29
00:01:51,638 --> 00:01:52,789
I learned Laravel.

30
00:01:52,789 --> 00:01:53,259
I learned some

31
00:01:53,259 --> 00:01:59,498
JavaScript and then just worked my way up there and yeah work my way up now to head of
engineering.

32
00:01:59,923 --> 00:02:01,798
That's incredible, that's quite the journey.

33
00:02:01,798 --> 00:02:04,883
So you just got hooked right away, right?

34
00:02:05,105 --> 00:02:11,366
Yeah, yeah, just super passionate about, I think it was being able to build things and
being able to see it right there.

35
00:02:11,366 --> 00:02:16,854
I just, I got hooked once I realized that could do that and I could just imagine things
and build them.

36
00:02:16,854 --> 00:02:17,846
Yeah, I loved it.

37
00:02:17,846 --> 00:02:18,996
I never looked back.

38
00:02:19,058 --> 00:02:23,863
So back Windows 95 computer, what got you hooked there?

39
00:02:23,863 --> 00:02:27,113
Did you play video games or what did you to your to start?

40
00:02:27,113 --> 00:02:28,565
Yeah, it's a really good question actually.

41
00:02:28,565 --> 00:02:29,345
I'm not sure.

42
00:02:29,345 --> 00:02:32,706
I never was super into video games or anything like that.

43
00:02:32,706 --> 00:02:36,688
To be honest, it was probably just browsing documentation for things.

44
00:02:36,688 --> 00:02:42,350
So once we got our first AOL dial-up internet subscription, I would just read.

45
00:02:42,350 --> 00:02:49,947
I would read encyclopedias, Wikipedia, yeah, just try and get an idea about how things
worked and how programming worked.

46
00:02:49,947 --> 00:02:54,363
So just a fascination with the world really, starting with the computer.

47
00:02:54,363 --> 00:02:56,046
That's really incredible.

48
00:02:56,046 --> 00:03:01,192
And then, well, also there was the, when I first downloaded Microsoft Front Page.

49
00:03:01,192 --> 00:03:02,463
Not sure if you ever used that.

50
00:03:02,463 --> 00:03:03,613
Yeah, I love that.

51
00:03:03,613 --> 00:03:09,598
I remember when I built my first website with Microsoft Front Page and tinkered around
with some HTML, CSS.

52
00:03:09,598 --> 00:03:15,044
And I remember the first time when I touched JavaScript, when I managed to get an alert to
pop up.

53
00:03:15,044 --> 00:03:21,877
And I must have been about 10 years old and I just thought it was incredible that I could
control what the message is that pops up.

54
00:03:21,877 --> 00:03:22,609
on that alert.

55
00:03:22,609 --> 00:03:27,624
So that was the big key really to entering into programming.

56
00:03:27,624 --> 00:03:29,346
I absolutely resonate with that.

57
00:03:29,346 --> 00:03:30,648
I share the feeling.

58
00:03:30,648 --> 00:03:31,619
can feel it right in here.

59
00:03:31,619 --> 00:03:34,632
The alert popping up on the screen.

60
00:03:34,632 --> 00:03:40,339
um So did you start out with web development right away, HTML, CSS?

61
00:03:40,339 --> 00:03:43,982
Was PHP the first server-side language you used?

62
00:03:44,035 --> 00:03:45,146
Yeah, it was actually.

63
00:03:45,146 --> 00:03:56,532
don't know how I got into PHP, think, but that was the first one that I started out and I
remember really clearly writing some HTML, CSS and I wanted to program some stuff.

64
00:03:56,532 --> 00:03:58,753
So I Googled and I found PHP.

65
00:03:58,753 --> 00:04:09,760
I probably used the W3 schools tutorials and I remember the first bit of PHP that I wrote
was connecting to an SQL database and it was doing the horrible procedural stuff.

66
00:04:09,760 --> 00:04:11,862
But I remember connecting to that database

67
00:04:11,862 --> 00:04:15,149
and reading some values in PHP.

68
00:04:15,149 --> 00:04:17,665
And yeah, that was my first entry into that.

69
00:04:17,665 --> 00:04:26,453
I remember building my first, like, little, I think was like a chat application or
something with SQL, and I sent it to a friend who was much more experienced with the

70
00:04:26,453 --> 00:04:26,819
stuff.

71
00:04:26,819 --> 00:04:27,754
like, look, I built this.

72
00:04:27,754 --> 00:04:28,545
I'm so excited.

73
00:04:28,545 --> 00:04:29,347
I'm so proud.

74
00:04:29,347 --> 00:04:37,276
The first thing he did was he essentially hacked the app because I have a very clear SQL
injection flaw in there.

75
00:04:37,387 --> 00:04:45,033
I think there was some issues with sanitizing the HTML as well, it went completely crazy
right away.

76
00:04:45,075 --> 00:04:46,417
But it's very humbling.

77
00:04:46,417 --> 00:04:46,873
Yeah.

78
00:04:46,873 --> 00:04:47,234
lesson.

79
00:04:47,234 --> 00:04:52,004
mean, yeah, that's how we learn just by making those mistakes in the past.

80
00:04:52,004 --> 00:04:56,101
So now you're head of engineering at your company you at now, right?

81
00:04:56,101 --> 00:04:57,584
Yeah, yeah, really exciting.

82
00:04:57,584 --> 00:05:02,052
mean, still lots of imposter syndrome every day, but yeah, I love what I do.

83
00:05:02,837 --> 00:05:06,013
There was a great talk about that at Laravel Live last year.

84
00:05:06,125 --> 00:05:06,877
Mmm.

85
00:05:06,877 --> 00:05:11,257
So moving on a little bit, I'd to hear more about your talk.

86
00:05:11,357 --> 00:05:17,097
So you actually gave a similar talk at Laracon India just a few months ago, is that right?

87
00:05:17,230 --> 00:05:18,161
Yeah, that's right.

88
00:05:18,161 --> 00:05:22,374
The talk is about interacting with hardware from a Laravel application.

89
00:05:22,374 --> 00:05:30,701
It's something that I've been working on for a couple of years and I think it's really
exciting because it just opens up this whole new avenue of hardware development, which is

90
00:05:30,701 --> 00:05:33,822
something that's always been a bit out of reach to us PHP developers.

91
00:05:33,822 --> 00:05:38,645
It's always been under the assumption that you can't control hardware with PHP.

92
00:05:38,645 --> 00:05:41,406
Usually you would have to write in C or something like that.

93
00:05:41,406 --> 00:05:44,702
And yeah, I've built this package that allows PHP

94
00:05:44,702 --> 00:05:51,725
Laravel developers to do that and it's a really easy code base, really easy library to
control those components.

95
00:05:51,725 --> 00:05:56,846
And it's really exciting as well because it means that us developers can just let our
imagination go wild.

96
00:05:56,846 --> 00:06:05,029
Anything that you think of that you want to build as a physical project, well you now can,
you just need to get the components and write PHP.

97
00:06:05,824 --> 00:06:10,004
Are we gonna see some really cool live demos on stage perhaps?

98
00:06:10,774 --> 00:06:17,218
Yeah, so when I was in India, I really wanted to do the live demos and then there was just
so much that could have gone wrong.

99
00:06:17,218 --> 00:06:24,340
I also actually got some of my equipment confiscated at passport at the security airport.

100
00:06:24,340 --> 00:06:31,775
Yeah, because I had some circuit boards in my bag and the security officers looked at them
and they were like.

101
00:06:31,775 --> 00:06:35,116
what are these and I explained it and they were like yeah they're not coming through.

102
00:06:35,116 --> 00:06:48,835
yeah that was in India when I arrived in India and we did the passport check and another
security scan there they looked at it and they were like what is this.

103
00:06:48,835 --> 00:06:57,601
So yeah I would like to do some live demos on stage but for India I decided to just opt
for the videos that worked really well so we'll see how it works out.

104
00:06:58,280 --> 00:07:04,052
Yeah, either way it's gonna be really cool to see what you can do with Laravel or PHP with
hardware.

105
00:07:04,052 --> 00:07:05,354
That's insane.

106
00:07:05,482 --> 00:07:07,569
yeah, yeah, it's really exciting.

107
00:07:08,168 --> 00:07:12,866
So um this is built for Raspberry Pis, right?

108
00:07:13,315 --> 00:07:22,841
Yeah, so Pinout is designed to run your Laravel code on a Raspberry Pi, and you connect up
your hardware components to the GPIO pins on the Raspberry Pi.

109
00:07:22,841 --> 00:07:29,065
So what that does is it allows us to programmatically turn the components on and off.

110
00:07:29,065 --> 00:07:29,602
But...

111
00:07:29,602 --> 00:07:35,566
Pinout has also got some drivers for controlling some more complicated bits of hardware
like this thing here.

112
00:07:35,566 --> 00:07:40,649
This is an LCD screen and it receives its information in the form of binary.

113
00:07:40,649 --> 00:07:49,434
So in order to send it binary, we turn these individual pins on and off in a given
sequence and that's what Pinout does.

114
00:07:49,434 --> 00:07:50,796
It abstracts all of that.

115
00:07:50,796 --> 00:07:56,821
So you run your code on a Raspberry Pi and you tell it, I want to display this on the
screen in simple px

116
00:07:56,821 --> 00:07:59,068
and then it outputs it on the screen.

117
00:07:59,870 --> 00:08:05,972
So you can show your package download count from packages on your display or something
like that.

118
00:08:05,991 --> 00:08:06,811
Yeah, exactly.

119
00:08:06,811 --> 00:08:07,723
That's a great idea.

120
00:08:07,723 --> 00:08:19,569
I've built a couple of projects where one of them is a physical button that I can press
and it uses the Domino's Pizza API to order me a pizza.

121
00:08:19,569 --> 00:08:28,214
did have one of them that was a counter that displayed how many X followers I had, but
they've made some changes around the API now and they're starting to introduce some

122
00:08:28,214 --> 00:08:29,345
pricing tiers.

123
00:08:29,345 --> 00:08:32,277
So I've scrapped that one.

124
00:08:32,929 --> 00:08:34,622
Gotta try with Blue Sky instead then.

125
00:08:34,622 --> 00:08:42,888
I yeah, to be honest, I made a Blue Sky account right at the start and I thought, yeah,
this is so good, I'm really gonna stick to this, I'm gonna make this my main social

126
00:08:42,888 --> 00:08:43,329
network.

127
00:08:43,329 --> 00:08:45,071
And it's never really caught on.

128
00:08:45,071 --> 00:08:50,315
I'm not sure what I'm doing wrong, but yeah, it seems like X is still where everyone is.

129
00:08:50,635 --> 00:08:53,196
But you're quite a big user of Blue Sky, right?

130
00:08:53,467 --> 00:08:55,467
I'm going back and forth.

131
00:08:55,467 --> 00:09:02,847
I feel like it's very fragmented now and I'm not really helping by being indecisive of
where to actually post things.

132
00:09:02,847 --> 00:09:06,360
I guess it helps, I don't post things very often so...

133
00:09:06,360 --> 00:09:15,349
me neither and it's something that I know that I need to get back into the habit of
regular posting but yeah, it's just so difficult thinking of things to post and also a lot

134
00:09:15,349 --> 00:09:21,104
of the time I'll think of something to post and then that imposter syndrome will hit and
I'll think, nobody cares about this.

135
00:09:22,212 --> 00:09:35,812
Yeah, yeah, I share that feeling too for sure Awesome, so I'm really looking forward to
your talk It's gonna be really exciting to to to hear more and see more I as you know,

136
00:09:35,812 --> 00:09:38,572
I've used your library in the past I've really enjoyed using it.

137
00:09:38,572 --> 00:09:40,570
So I'm happy to see what

138
00:09:40,570 --> 00:09:43,990
you're the second contributor to Pinout next to me.

139
00:09:43,990 --> 00:09:46,070
So thank you for your contribution.

140
00:09:47,970 --> 00:09:48,693
Yeah.

141
00:09:48,693 --> 00:09:49,895
That's hilarious.

142
00:09:49,895 --> 00:09:52,639
Well, I'm happy to help.

143
00:09:52,639 --> 00:09:58,667
And I think you had a pretty major update to library since last Tuesday too, so looking
forward to hearing more about that.

144
00:09:59,140 --> 00:10:03,792
and yeah, that's just massively improved the performance of it.

145
00:10:03,792 --> 00:10:09,985
So that's what paved the way to allow us to be able to interact with binary devices like
LCD screens.

146
00:10:09,985 --> 00:10:14,386
Before that, the library was just too slow and we couldn't do anything with it.

147
00:10:14,919 --> 00:10:21,119
So have you always been into messing with hardware as well, like Raspberry Pis and, you
know, digital?

148
00:10:21,319 --> 00:10:23,010
the entry into hardware...

149
00:10:23,010 --> 00:10:33,948
It started about two years ago or maybe a little bit more than that now I started
tinkering with like small micro controllers and The problem was with those they don't have

150
00:10:33,948 --> 00:10:45,516
enough resources to run PHP So you have to write C but I loved that action of being able
to write some code and See it physically and I guess it kind of ties into my first love of

151
00:10:45,516 --> 00:10:50,389
web development being able to type some code and see it on the screen This was like the
next step up from that

152
00:10:50,389 --> 00:10:53,552
being able to type some code and see that physical project.

153
00:10:53,552 --> 00:10:56,005
So yeah, I've really, really enjoyed that.

154
00:10:56,005 --> 00:11:00,581
But again, it's something that I've just taught myself and there's probably lots of things
that I'm doing wrong.

155
00:11:00,581 --> 00:11:04,263
But yeah, it's something that I'm really enjoying lately.

156
00:11:04,263 --> 00:11:08,826
And it's great to merge that in with my other passion of Laravel.

157
00:11:09,445 --> 00:11:16,286
Yeah, it sounds like awesome you get to play with both things and still write your
favorite programming language.

158
00:11:16,286 --> 00:11:17,780
Yeah, exactly, yeah.

159
00:11:17,780 --> 00:11:21,520
So Dan, we're almost running out of time, but I have one more question for you.

160
00:11:21,520 --> 00:11:28,000
I know you were of course in Copenhagen last year for Laravel Live, you're coming back as
a speaker again.

161
00:11:28,880 --> 00:11:36,160
But what is something you really want to see or eat or experience while you're in
Copenhagen this time?

162
00:11:36,162 --> 00:11:38,746
Well, first off, the drink Faxacondy.

163
00:11:38,746 --> 00:11:40,073
I can't wait to have another one of those.

164
00:11:40,073 --> 00:11:40,559
I love that.

165
00:11:40,559 --> 00:11:46,018
We don't have that back here, so every time when I'm back in Denmark, that's definitely
high up on the list.

166
00:11:46,018 --> 00:11:47,420
One thing that I really wanted to do...

167
00:11:47,420 --> 00:11:48,090
oh

168
00:11:48,090 --> 00:11:52,444
listeners at home, Faxe de Cundi is kind of like a sprite, but it's a little bit better.

169
00:11:52,444 --> 00:11:53,437
Yeah, yeah, I agree.

170
00:11:53,437 --> 00:11:56,941
But another thing that I wanted to do, I didn't manage to get around to it last year.

171
00:11:56,941 --> 00:12:01,246
They do a sea plane that takes you on a sightseeing tour of Denmark.

172
00:12:01,246 --> 00:12:03,589
And well, not of Denmark, just of Copenhagen.

173
00:12:03,589 --> 00:12:09,264
And I really wanted to do it last year, but they only have limited spaces available and
the dates didn't really match up.

174
00:12:09,264 --> 00:12:14,699
So fingers crossed, maybe the dates might match up this year and I'll be able to go on the
sightseeing tour.

175
00:12:15,417 --> 00:12:24,369
That sounds amazing and especially if the weather is good, which we promise is going to be
really good, that would be really lovely, especially with the ocean next door and

176
00:12:24,369 --> 00:12:25,430
everything.

177
00:12:25,611 --> 00:12:26,691
That sounds amazing.

178
00:12:26,691 --> 00:12:35,598
I love just being able to see, I mean, even when I fly into Copenhagen and you can see
that bridge in the ocean and that's just such an amazing view.

179
00:12:35,598 --> 00:12:38,151
So I'd love to see that from a sea plane as well.

180
00:12:38,151 --> 00:12:40,106
Really exciting experience, I think that'd be.

181
00:12:40,106 --> 00:12:43,405
Well you definitely gotta share some photos on X if you end up doing that.

182
00:12:43,405 --> 00:12:44,085
100%.

183
00:12:44,085 --> 00:12:44,836
Yeah.

184
00:12:44,836 --> 00:12:50,181
Well then, thanks so much for talking to me today and looking forward to talking in just a
few months.

185
00:12:50,181 --> 00:12:53,381
Yeah, great to speak to you and yeah, can't wait to see you in a couple of months.

186
00:12:53,381 --> 00:12:54,644
Looking forward to it.

187
00:12:54,812 --> 00:13:01,318
That was Dan Johnson sharing his journey to the head of engineering and the risk of
packing Raspberry Pi's in your suitcase.

188
00:13:02,059 --> 00:13:03,501
Want to hear more from Dan?

189
00:13:03,501 --> 00:13:08,706
He'll be presenting at Laravel Live Denmark August 21st and 22nd in Copenhagen.

190
00:13:08,706 --> 00:13:14,431
Grab your tickets at LaravelLive.dk because his talk is going to be one you want to catch
in person.

191
00:13:14,431 --> 00:13:15,732
uh

192
00:13:16,614 --> 00:13:24,570
Thanks for tuning in to Countdown to Lave Live Make sure to subscribe so you don't miss
any of our speaker interviews leading up to the conference.

193
00:13:24,570 --> 00:13:28,794
Until next time, keep coding and we'll see you at Laravel Live Denmark.