WEBVTT
1
00:00:01.080 --> 00:00:04.799
How'd you like to listen to dot NetRocks with no ads? Easy?
2
00:00:05.360 --> 00:00:08.560
Become a patron for just five dollars a month. You
3
00:00:08.599 --> 00:00:11.320
get access to a private RSS feed where all the
4
00:00:11.359 --> 00:00:14.560
shows have no ads. Twenty dollars a month, we'll get
5
00:00:14.599 --> 00:00:18.440
you that and a special dot NetRocks patron mug. Sign
6
00:00:18.519 --> 00:00:22.120
up now at Patreon dot dot NetRocks dot com.
7
00:00:22.160 --> 00:00:24.679
Hey Carl and Richard here with your twenty twenty four
8
00:00:25.000 --> 00:00:26.000
DC schedule.
9
00:00:26.320 --> 00:00:29.640
We'll be at as many NDC conferences as possible this year,
10
00:00:29.960 --> 00:00:33.200
and you should consider attending no matter what. The Copenhagen
11
00:00:33.240 --> 00:00:37.640
Developers Festival happens August twenty sixth through the thirtieth. Tickets
12
00:00:37.679 --> 00:00:40.719
at Cphdevfest dot com.
13
00:00:40.880 --> 00:00:44.719
Ndcporto is happening October fourteenth through the eighteenth. Tickets at
14
00:00:44.799 --> 00:00:46.600
Ndcporto dot com.
15
00:00:46.600 --> 00:01:03.119
We'll see you there, we hope. Welcome back. It's dot
16
00:01:03.200 --> 00:01:06.120
net Rox. I'm Carl Franklin and Amateur Campbell and we're
17
00:01:06.159 --> 00:01:08.359
here with Mark Rendell. We're going to introduce him in
18
00:01:08.400 --> 00:01:10.280
a minute, but first I want to check him in
19
00:01:10.319 --> 00:01:12.799
by Buddy Richard. You ready for dev Intersection Well, and
20
00:01:12.920 --> 00:01:13.719
this show publishes.
21
00:01:13.760 --> 00:01:15.400
We will be most of the way through the show,
22
00:01:15.439 --> 00:01:17.519
I think we'll be close to doing like the closing
23
00:01:17.599 --> 00:01:22.200
session and stuff as we usually do. Right, Yeah, yeah, yeah, No,
24
00:01:22.280 --> 00:01:24.239
we got our got our act together, got a new
25
00:01:24.400 --> 00:01:29.200
version of a generative AI show, which has been an
26
00:01:29.200 --> 00:01:31.439
adventure to put together. Boy boy, there are a lot
27
00:01:31.439 --> 00:01:34.920
of AI conferences right now. Yeah, I know it's little nuts.
28
00:01:34.719 --> 00:01:38.640
But still dev intersection with all your favorite Microsoft people
29
00:01:38.799 --> 00:01:41.000
and YE speakers.
30
00:01:40.519 --> 00:01:42.719
The Hanselman's and the Hunters and all that good stuff.
31
00:01:42.760 --> 00:01:42.920
Yeah.
32
00:01:42.959 --> 00:01:45.760
The Scott's, Yeah, the major Scott and the lesser Scott's.
33
00:01:46.879 --> 00:01:49.400
They're all vps. Now I mean this, there's one Guthrie
34
00:01:49.400 --> 00:01:52.400
but he's not there. But you know he's on sabbatical.
35
00:01:52.799 --> 00:01:53.760
What's up with that? Yeah?
36
00:01:53.760 --> 00:01:56.040
What is that with that? What does Scott Guphery do
37
00:01:56.079 --> 00:01:58.760
on sabbatical? Does he read tech manuals? Does he create
38
00:01:58.799 --> 00:02:01.959
a few more patents? No, he's got teenage boys. I
39
00:02:02.000 --> 00:02:04.519
think he's got other things to worry about. Yeah, that's good.
40
00:02:04.959 --> 00:02:08.439
All right, Well let's jump into better note of framework.
41
00:02:08.560 --> 00:02:09.560
Roll the crazy music.
42
00:02:09.680 --> 00:02:18.800
Awesome? Alight, do you go?
43
00:02:19.039 --> 00:02:22.000
So this was our clickbait story on security this week.
44
00:02:22.360 --> 00:02:23.840
But it's not clickbait if it's true.
45
00:02:24.120 --> 00:02:25.560
Yeah, I know, but that's what we call him.
46
00:02:25.599 --> 00:02:27.280
We called it.
47
00:02:27.400 --> 00:02:29.759
The last story is always the one people want to
48
00:02:29.800 --> 00:02:32.800
hear about the most, you know, so we let them
49
00:02:32.840 --> 00:02:35.039
slog through all the other stories and then we spring
50
00:02:35.039 --> 00:02:37.000
it on them. So here it is. You're you're not
51
00:02:37.000 --> 00:02:42.639
going to believe this. Researchers find sequel injection to bypass
52
00:02:42.800 --> 00:02:45.159
Airport TSA security checks.
53
00:02:45.360 --> 00:02:45.639
Nice.
54
00:02:46.000 --> 00:02:48.840
So what this means is there is a vulnerability where
55
00:02:49.360 --> 00:02:53.759
somebody could use SEQL injection when they bought a ticket,
56
00:02:54.159 --> 00:02:57.560
and that ticket could give them status as crew, right,
57
00:02:57.759 --> 00:03:01.080
and then they could walk right on, go right up
58
00:03:01.120 --> 00:03:05.159
into the you know, the bulkhead seats or whatever, sit
59
00:03:05.280 --> 00:03:10.960
down and enjoy all of the crew you know amenities.
60
00:03:11.120 --> 00:03:13.280
Not that there's not many of crew amenities, but yeah,
61
00:03:13.280 --> 00:03:15.080
you're definitely gonna have access to more seats.
62
00:03:15.280 --> 00:03:15.520
Yeah.
63
00:03:15.599 --> 00:03:18.680
The bigger one here is that you know, you can
64
00:03:18.719 --> 00:03:22.039
go to the crew line at the TSA. Yeah, yeah,
65
00:03:22.199 --> 00:03:25.159
and they that's a very cursorly view. And you don't
66
00:03:25.199 --> 00:03:27.400
have to be dressed as crew, I mean, you don't
67
00:03:27.400 --> 00:03:30.520
have to be working on that flight, right, but if
68
00:03:30.560 --> 00:03:32.800
you are crew, you get a special pass and you
69
00:03:32.879 --> 00:03:36.840
get all sorts of amenities. Yeah, interesting. Yeah, they normally
70
00:03:36.879 --> 00:03:38.919
check ID, So I wonder if you actually try to
71
00:03:38.960 --> 00:03:42.080
do that, if if when you got to the line,
72
00:03:42.080 --> 00:03:43.039
they're like, where's your ID?
73
00:03:43.319 --> 00:03:46.680
Now that's just you know, raining on my parade here, Richard.
74
00:03:46.840 --> 00:03:49.960
I still love that that, you know, sequel injection attacks.
75
00:03:50.039 --> 00:03:52.759
Yeah, sequel injection. I thought we were done with this.
76
00:03:53.120 --> 00:03:53.319
Nah.
77
00:03:53.599 --> 00:03:55.960
No, still like it's number one or number two in
78
00:03:55.960 --> 00:03:56.960
the O ausp tense.
79
00:03:57.120 --> 00:04:00.159
Oh of course, yeah, yeah, still still it was it's
80
00:04:00.159 --> 00:04:02.080
like sixteen years ago we learned about this.
81
00:04:02.360 --> 00:04:05.159
Yeah, yeah, it's been it's been decades, and it's just
82
00:04:05.199 --> 00:04:09.599
a you know, sanitize your inputs. Bobby Tables is out there.
83
00:04:10.000 --> 00:04:11.800
And Bobby Tables you got to watch out for him.
84
00:04:11.800 --> 00:04:13.639
All right, That's what I got. Who's talking to us today?
85
00:04:13.680 --> 00:04:16.120
Richard grabbed a comment off a show eighteen eighty eight,
86
00:04:16.160 --> 00:04:18.360
the one we did with Steve Smith talking about modular monoliths,
87
00:04:18.399 --> 00:04:20.360
and I know we're going to talk about simplicity with Mark,
88
00:04:20.439 --> 00:04:24.040
So I thought this conversation just tied in so well
89
00:04:24.079 --> 00:04:27.439
with that whole problem space, because that's the show that
90
00:04:28.000 --> 00:04:32.439
Smith did focused on, you know, simplifying a monolith, tearing
91
00:04:32.519 --> 00:04:35.319
out pieces to optimize them. That kind of thing that
92
00:04:35.399 --> 00:04:38.439
whole idea that you don't have to go totally micro services.
93
00:04:38.439 --> 00:04:40.240
You can just do what you need to do. And
94
00:04:40.279 --> 00:04:42.399
Mark had this comedy. He said it was a different Mark,
95
00:04:42.720 --> 00:04:45.160
not our gas card. He said. From an application level,
96
00:04:45.160 --> 00:04:47.040
I agree with Steve's point of view that we to
97
00:04:47.079 --> 00:04:49.240
start with a monolith and then split off whatever needs
98
00:04:49.240 --> 00:04:51.879
to be spun into its own services as the need arises.
99
00:04:52.079 --> 00:04:54.160
From a hosting point of view, though the reality is
100
00:04:54.199 --> 00:04:57.879
most businesses unfortunately, when you start down one technical direction,
101
00:04:58.040 --> 00:05:00.839
regardless of what it is, you're likely to keep going
102
00:05:00.920 --> 00:05:05.720
down that forever because temporary solutions become permanently yep. For example,
103
00:05:06.160 --> 00:05:08.720
moving from something like app service to Kubernetes is a
104
00:05:08.800 --> 00:05:11.959
huge jump and it'll be hard to get business buy
105
00:05:12.040 --> 00:05:14.639
in for what the need arises from it. Yeah, and
106
00:05:14.680 --> 00:05:16.360
I found you can use something like Kubernetes as a
107
00:05:16.399 --> 00:05:19.319
service from the onset, but with very minimal setup thanks
108
00:05:19.360 --> 00:05:22.879
to manage the services like as your Kubernetes services, which
109
00:05:22.879 --> 00:05:25.439
gives you the flexibility to about resilience and scalability and
110
00:05:25.439 --> 00:05:28.040
everything else as the need arises without having to overhaul
111
00:05:28.079 --> 00:05:31.040
the entire system architecture. And I appreciate the thinking Mark,
112
00:05:31.079 --> 00:05:34.000
because my workaround would be to stay in app service,
113
00:05:34.240 --> 00:05:38.600
but then to spin off the problem service as a
114
00:05:39.079 --> 00:05:41.399
logic app right right, that just you know, make it
115
00:05:41.399 --> 00:05:43.959
a servilest component. It just gets called the same and
116
00:05:44.000 --> 00:05:46.720
you can keep it in the security context. But I'm
117
00:05:46.759 --> 00:05:48.199
not going to argue with you about moving from app
118
00:05:48.199 --> 00:05:51.399
service to Kubernetes. That's a huge lift. But that's the
119
00:05:52.079 --> 00:05:55.480
all micro services mantras to do that huge lift, and
120
00:05:55.560 --> 00:05:57.000
I don't think people want to do it. So the
121
00:05:57.040 --> 00:05:59.720
fact that we can spin off bits into servilest components
122
00:06:00.040 --> 00:06:02.959
and deal with their performance issues or their behavior issues
123
00:06:03.000 --> 00:06:06.399
separately is the simple workaround rather than looking at the
124
00:06:06.399 --> 00:06:08.120
big wall of climbing up Kubernetties.
125
00:06:08.199 --> 00:06:10.720
Yeah, that's why we have modular monoliths, so you can
126
00:06:10.759 --> 00:06:12.759
break off the pieces and need broken off.
127
00:06:12.680 --> 00:06:15.040
Right, and you could break them off in less painful ways. Yeah,
128
00:06:15.040 --> 00:06:16.319
I mean, you could even spin it up as a
129
00:06:16.319 --> 00:06:17.800
separate app service, but I wouldn't.
130
00:06:17.959 --> 00:06:18.839
Nope, I wouldn't either.
131
00:06:20.079 --> 00:06:21.720
So Mark, thank you so much for your comment, and
132
00:06:21.800 --> 00:06:23.240
a copy of music co Buy is on its way
133
00:06:23.240 --> 00:06:24.639
to you. And if you'd like a copy of music Code,
134
00:06:24.720 --> 00:06:26.399
I write a comment on the website at dot at
135
00:06:26.480 --> 00:06:28.800
rocks dot com or on the facebooks. We publish every
136
00:06:28.800 --> 00:06:30.279
show there, and if you comment there and everyone on
137
00:06:30.319 --> 00:06:32.199
the show, we'll send you copy of music.
138
00:06:31.839 --> 00:06:34.920
To go buy. And you can follow us on x
139
00:06:35.040 --> 00:06:38.160
Twitter if you want. That's we've been there for years.
140
00:06:38.160 --> 00:06:41.079
But the cool kids are hanging out at mastadon. I'm
141
00:06:41.160 --> 00:06:44.000
at Carl Franklin at tech Hubs Social.
142
00:06:43.680 --> 00:06:45.759
And I'm Rich Campbell at macedon dot social.
143
00:06:45.839 --> 00:06:47.600
Send us a tute. It's another way that you can
144
00:06:47.639 --> 00:06:50.480
get a copy of music to code buy. Absolutely all right,
145
00:06:50.600 --> 00:06:55.040
so let's bring back Rendel Mark Rendel. He is one
146
00:06:55.040 --> 00:06:58.199
of our favorite guests. He's the founder of Rendall Labs,
147
00:06:58.279 --> 00:07:02.000
which provides consulting services and workshops to dot net development
148
00:07:02.040 --> 00:07:07.199
teams across all industries. His particular obsessions are API design
149
00:07:07.240 --> 00:07:13.279
and development, performance observability, and code based modernization. He also
150
00:07:13.360 --> 00:07:16.560
uses skills acquired during a few years as a professional
151
00:07:16.600 --> 00:07:20.519
stand up comic to deliver entertaining and informative talks at
152
00:07:20.560 --> 00:07:24.079
conferences around the world, and recently learned to play bass
153
00:07:24.199 --> 00:07:27.879
so he could join tech parity band The Line Breakers.
154
00:07:28.199 --> 00:07:29.839
Hey dude, hi man.
155
00:07:29.720 --> 00:07:33.040
Congratulations, Welcome to the world of music for no money.
156
00:07:33.279 --> 00:07:38.279
Thank you, thank you so much. I am loving it.
157
00:07:38.279 --> 00:07:40.240
It's been a while, It has been a while.
158
00:07:40.319 --> 00:07:42.600
You did the parity band thing for a while there, Carl.
159
00:07:42.639 --> 00:07:44.800
But did you actually get into trouble with that? Was
160
00:07:44.839 --> 00:07:48.360
that back before parody was like accept the use? Oh okay,
161
00:07:49.160 --> 00:07:51.160
well yeah, here's the story.
162
00:07:51.199 --> 00:07:56.680
So Don Box and Ted Pattison and George Bullock and
163
00:07:56.959 --> 00:08:00.240
a couple other people started this band called ban On
164
00:08:00.240 --> 00:08:04.399
the Runtime, and band On the Runtime was parodies of
165
00:08:04.480 --> 00:08:10.120
C sharp to well known music, right, so fifty ways
166
00:08:10.160 --> 00:08:14.439
to send a message, you know, that kind of stuff, right,
167
00:08:15.120 --> 00:08:19.360
And so the Microsoft lawyers had a problem with it
168
00:08:19.439 --> 00:08:25.720
because parody law says you can parody a song by
169
00:08:25.920 --> 00:08:28.199
you know, changing the words like weird al does like
170
00:08:28.639 --> 00:08:32.080
because I'm fat, I'm fat ham on hole week, right,
171
00:08:33.039 --> 00:08:37.600
But you can't parody something like C sharp using a
172
00:08:37.679 --> 00:08:41.320
song that's not covered by parody law. So you can't
173
00:08:41.399 --> 00:08:45.279
change the words to parody something else. We weren't actually
174
00:08:45.279 --> 00:08:48.120
poking fun at the songs. We're using the songs to
175
00:08:48.159 --> 00:08:51.679
poke fun at dot net. And they, the lawyers kind
176
00:08:51.679 --> 00:08:55.360
of put the kabash. It seems very sus well, but
177
00:08:55.399 --> 00:08:57.320
the law is the law. So they basically went to
178
00:08:57.360 --> 00:08:59.600
Paul Simon, for example, and they said how much would
179
00:08:59.639 --> 00:09:02.440
it cost for the band to play you know this
180
00:09:02.840 --> 00:09:05.879
at a you know, Microsoft event, and he wanted like
181
00:09:05.919 --> 00:09:08.879
two hundred and fifty grand. So that's the law. Yeah,
182
00:09:08.919 --> 00:09:09.840
you have to get permission.
183
00:09:10.440 --> 00:09:12.759
The law is subject to interpretation. I think those lawyers
184
00:09:12.799 --> 00:09:14.039
interpreted it very oddly.
185
00:09:14.600 --> 00:09:17.519
Microsoft lawyers interpret things as badly as possible. Don't.
186
00:09:17.559 --> 00:09:19.559
But you know, they are Microsoft. And if it was
187
00:09:19.720 --> 00:09:22.360
just me doing it, who cares? Because go ahead, I
188
00:09:22.360 --> 00:09:24.440
don't have two hundred and fifty thousand dollars, you know,
189
00:09:24.879 --> 00:09:27.399
but Microsoft, Yeah, might be a problem.
190
00:09:27.480 --> 00:09:30.120
Yeah, And you know, all we are doing. We provide
191
00:09:30.159 --> 00:09:33.840
the entertainment conference parties and it's like there's a couple
192
00:09:33.960 --> 00:09:36.559
hundred people there and they're all drunk. And yeah, we
193
00:09:36.639 --> 00:09:42.080
don't parody any specic. The closest we have to parodying
194
00:09:42.080 --> 00:09:46.600
a specific technology I think is JavaScript, which was one
195
00:09:47.279 --> 00:09:51.639
in itself, and JavaScript isn't even a language, it's it's
196
00:09:51.679 --> 00:09:54.840
a well, it's a standard. I suppose I was going
197
00:09:54.919 --> 00:09:56.279
to say something meaner, but I went.
198
00:09:58.960 --> 00:09:59.159
But no.
199
00:09:59.279 --> 00:10:03.000
Line Breakers their bassist used to be Don Sign really,
200
00:10:03.559 --> 00:10:07.919
creator of F sharp and then he had to he
201
00:10:07.960 --> 00:10:12.720
got pulled into gitub next, the kind of Microsoft Research
202
00:10:12.840 --> 00:10:16.600
equivalent at gitub, but he was still at Microsoft Research
203
00:10:16.639 --> 00:10:20.000
and still sort of the benevolent dictator for life of
204
00:10:20.240 --> 00:10:23.600
f sharp and he just could not fit in conferences
205
00:10:23.600 --> 00:10:26.120
as well as all of that, and so then they
206
00:10:26.120 --> 00:10:30.559
were without bassist. And then I said to Dylan Beattie,
207
00:10:31.480 --> 00:10:35.440
how hard is bass because he's certainly got four strings?
208
00:10:36.799 --> 00:10:37.279
Can it be?
209
00:10:37.799 --> 00:10:41.240
And he went as, actually not, it's much much easier
210
00:10:41.279 --> 00:10:44.000
than guitar, And so he lent me one, and I
211
00:10:44.039 --> 00:10:46.879
took it home and I plugged in, plugged it into
212
00:10:46.919 --> 00:10:50.600
my computer with a sort of six point five to
213
00:10:51.000 --> 00:10:56.159
USB cable, and got Rocksmith Plus and tried playing a
214
00:10:56.200 --> 00:11:01.559
few things, and I think within five minutes of sitting down,
215
00:11:01.679 --> 00:11:05.720
I had learned to play seven nation army okay. And
216
00:11:05.799 --> 00:11:07.919
so it's not I mean, it's not an easy instrument.
217
00:11:07.919 --> 00:11:09.960
And if there are any basis out there going oh no,
218
00:11:09.960 --> 00:11:13.000
not this again, it is definitely not an easy instrument.
219
00:11:13.039 --> 00:11:15.440
I've got one to like jazz and funk and disco
220
00:11:15.639 --> 00:11:19.399
and those sorts of things, but the learning curve is
221
00:11:19.519 --> 00:11:23.120
extremely shallow at first, so it's very very encouraging.
222
00:11:23.559 --> 00:11:26.559
Yeah, right, you can play Smoke on the Water just
223
00:11:26.600 --> 00:11:27.120
by going but.
224
00:11:28.480 --> 00:11:31.879
Club but chugging basslines.
225
00:11:32.279 --> 00:11:35.399
However, of them bass you know, it's easier because you
226
00:11:35.399 --> 00:11:38.360
don't have chords and and all of that, but it
227
00:11:38.440 --> 00:11:41.240
is more difficult because to play bass really well you
228
00:11:41.320 --> 00:11:43.279
have to have a great tone by the way, yes,
229
00:11:43.480 --> 00:11:47.039
and also you have to have saw like bass player.
230
00:11:47.159 --> 00:11:50.200
You just to be able to play a couple of notes,
231
00:11:50.440 --> 00:11:53.799
isn't playing bass? You know, you really have to. It
232
00:11:53.879 --> 00:11:56.519
takes a while before before the funk or the saul
233
00:11:56.600 --> 00:11:57.080
comes out.
234
00:11:57.240 --> 00:12:00.759
Yeah, and just getting in the pocket like right on
235
00:12:00.879 --> 00:12:03.879
the b and just giving tone to the drums.
236
00:12:04.159 --> 00:12:06.960
But you don't have chords, but they don't have chords.
237
00:12:07.120 --> 00:12:09.600
That's your jack app story and.
238
00:12:10.000 --> 00:12:11.039
Seeking nobody as.
239
00:12:13.840 --> 00:12:18.279
There are a few very extraordinary bases that nine essential.
240
00:12:18.480 --> 00:12:19.919
So what's on your mind? Randall?
241
00:12:20.279 --> 00:12:21.000
What have you been up to?
242
00:12:21.240 --> 00:12:25.960
I was at the Copenhagen Developer Festival last week. Rich
243
00:12:26.120 --> 00:12:31.840
was there and it was absolutely brilliant and I had
244
00:12:31.960 --> 00:12:34.720
a new locknote talk that I did which is called
245
00:12:34.759 --> 00:12:37.399
the Albatross Project. But they also asked me to do
246
00:12:37.600 --> 00:12:41.679
the free meet up the Tuesday night before the festival started.
247
00:12:42.960 --> 00:12:47.120
And I had a talk that i'd submitted for Copenhagen
248
00:12:47.159 --> 00:12:50.519
that they rejected because I just do lockmotes for in
249
00:12:50.600 --> 00:12:52.919
DC now apparently, but they said, you can do that
250
00:12:52.960 --> 00:12:54.799
talk at the meetup if you want. And the talk
251
00:12:54.960 --> 00:12:59.120
was called how simple is as simple as possible? And
252
00:13:00.840 --> 00:13:04.799
this is both of these talks, they're related. So the
253
00:13:04.919 --> 00:13:08.360
talk is a sort of technical can you do this?
254
00:13:08.440 --> 00:13:10.200
Can you do that? How can you keep things simple?
255
00:13:10.279 --> 00:13:13.720
And then the Albatross project is the opposite of the
256
00:13:13.720 --> 00:13:17.919
Phoenix project nice, and it's about a development director who
257
00:13:18.120 --> 00:13:20.720
doesn't deliver anything for thirty five years because he keeps
258
00:13:20.720 --> 00:13:25.120
trying to stay on the cutting edge. And yeah, and
259
00:13:25.200 --> 00:13:29.279
I just after I did the talk version of it,
260
00:13:30.440 --> 00:13:34.080
at which there was one slide where the slide popped
261
00:13:34.159 --> 00:13:36.240
up on the screen and somebody immediately got up and
262
00:13:36.279 --> 00:13:36.799
walked out.
263
00:13:38.519 --> 00:13:39.799
He knew it was a right slide.
264
00:13:39.879 --> 00:13:41.440
So I'm kind of like, yeah, this is working.
265
00:13:41.799 --> 00:13:45.159
You don't think like his wife was in labor or
266
00:13:45.799 --> 00:13:46.080
you know.
267
00:13:46.320 --> 00:13:55.120
Is no probably a React developer, Ora Angular or View
268
00:13:55.159 --> 00:13:58.080
because those were the three there were three JavaScript framework
269
00:13:58.120 --> 00:13:59.039
logos on the slide.
270
00:13:59.200 --> 00:14:00.679
Anything where you're like, hey, where you go?
271
00:14:01.440 --> 00:14:03.360
I hadn't said anything because we were actually having a
272
00:14:03.360 --> 00:14:07.600
technical issue at the time. And yeah, I mean it
273
00:14:07.639 --> 00:14:09.639
is possible it was the technical issue that you sent
274
00:14:09.720 --> 00:14:11.000
him out there, just kind of like, I'm not waiting
275
00:14:11.039 --> 00:14:13.120
around while these people turn the screen back on or whatever.
276
00:14:13.480 --> 00:14:18.679
But yes, it's I kind of I feel like I
277
00:14:18.720 --> 00:14:24.840
owe people an apology to a certain extent, because in
278
00:14:24.919 --> 00:14:27.759
my forties I did a lot of bouncing around the
279
00:14:27.799 --> 00:14:30.039
world telling people how to contain the rize things and
280
00:14:30.080 --> 00:14:33.519
do micro services and event driven things and Kubernettes and
281
00:14:33.519 --> 00:14:38.440
all that sort of stuff. And now in my fifties,
282
00:14:38.840 --> 00:14:44.360
I'm kind of wishing most people would stop. And so
283
00:14:45.120 --> 00:14:47.840
that's my mission at the moment, and that's I'm going
284
00:14:47.879 --> 00:14:50.159
to be trying to get this talk into as many
285
00:14:50.200 --> 00:14:53.840
things as possible next year and start pushing at it
286
00:14:55.159 --> 00:15:02.600
because we've just made everything, everything just so complicated in
287
00:15:02.639 --> 00:15:08.759
the name of efficiency, in the name of standardization.
288
00:15:08.320 --> 00:15:11.759
Potential future scalability. That's the big one.
289
00:15:12.000 --> 00:15:18.240
Yes, absolutely, But also you hear the term DX developer
290
00:15:18.279 --> 00:15:23.480
experience and developer experience, I feel like that should be
291
00:15:23.480 --> 00:15:26.519
an important thing in terms of your ID, your code editor,
292
00:15:27.559 --> 00:15:31.559
your command line tooling, that sort of thing. But if
293
00:15:31.600 --> 00:15:36.120
you're getting to a point where the improved developer experience
294
00:15:36.200 --> 00:15:39.320
that you get from sort of CICD and microservice deployments
295
00:15:39.360 --> 00:15:41.759
and rollouts and all that sort of thing is actually
296
00:15:41.799 --> 00:15:44.639
getting in the way of delivering a good user experience
297
00:15:45.159 --> 00:15:49.919
because of the increased latencies that you get or the
298
00:15:51.399 --> 00:15:55.679
fifteen megabytes of JavaScript that a webpage has to download
299
00:15:55.759 --> 00:16:00.639
before it becomes interactive. Then there's some thing wrong with that.
300
00:16:00.679 --> 00:16:03.759
We have had priorities completely the wrong way round.
301
00:16:04.159 --> 00:16:04.360
Yeah.
302
00:16:04.360 --> 00:16:06.000
One of the ways to keep that stuff fast is
303
00:16:06.000 --> 00:16:07.000
to keep it simple.
304
00:16:06.879 --> 00:16:08.679
Absolutely, Yeah.
305
00:16:08.799 --> 00:16:12.080
And so yeah, it's been my mantra, you know, do
306
00:16:12.159 --> 00:16:15.440
the simplest thing that works ever since I got started
307
00:16:15.480 --> 00:16:19.360
in software. That's been you know, stapled to my forehead.
308
00:16:20.000 --> 00:16:23.279
Yeah. I wish I could say the same of myself,
309
00:16:23.440 --> 00:16:28.080
but at least, you know, I'm realizing it now and
310
00:16:28.559 --> 00:16:29.840
attempting to share some of that.
311
00:16:29.879 --> 00:16:31.519
Well. I think part of this is we wanted to
312
00:16:31.559 --> 00:16:34.919
believe that if we, you know, embedded ourselves in this architecture,
313
00:16:34.960 --> 00:16:38.240
like if we understood all the pieces that gradually software
314
00:16:38.279 --> 00:16:41.840
would be easier in that space. I just don't feel
315
00:16:41.840 --> 00:16:42.960
like it ever got there.
316
00:16:43.279 --> 00:16:49.000
No, No, I mean I think it did at a
317
00:16:49.039 --> 00:16:54.200
particular point. I think espn net mvc pretty simple, was
318
00:16:54.240 --> 00:16:58.559
relatively simple, and the idea of the pipeline. So what
319
00:16:58.639 --> 00:17:02.759
we kind of picked off with o win based on
320
00:17:02.840 --> 00:17:08.680
things like Python WSGI and Ruby's rack middleware, and then
321
00:17:08.720 --> 00:17:12.440
o win obviously kind of got rolled into asp net
322
00:17:12.480 --> 00:17:15.519
core and that was nice and simple. It was like,
323
00:17:15.559 --> 00:17:17.519
do this, then do this, then do this, then do this.
324
00:17:19.000 --> 00:17:23.640
But then I think the problem is that as developers
325
00:17:24.160 --> 00:17:28.119
we think that if we're not changing the way we
326
00:17:28.160 --> 00:17:31.480
do things, if we're not evolving, then we are failing
327
00:17:31.519 --> 00:17:33.920
in some way. There's this whole thing about continuous learning,
328
00:17:34.599 --> 00:17:40.039
and so people kind of go, well, there's somebody says microservices,
329
00:17:40.039 --> 00:17:42.839
So I need to learn microservices. Now I know microservices.
330
00:17:43.720 --> 00:17:45.240
Why have I learned it if I'm not going to
331
00:17:45.319 --> 00:17:47.559
use it? And then they end up breaking something with
332
00:17:47.720 --> 00:17:51.519
like two dozen end points down into twelve micro services
333
00:17:52.039 --> 00:17:54.440
and you're just like, no, I should.
334
00:17:54.160 --> 00:17:57.160
Have learned that from doctor card, right, absolutely.
335
00:17:57.519 --> 00:17:57.880
Yeah.
336
00:17:57.960 --> 00:18:00.519
Well, I was like the argument that my service makes
337
00:18:00.519 --> 00:18:02.240
a lot of sense when the team is huge, that
338
00:18:02.319 --> 00:18:04.880
it creates a level of granularity that you can have
339
00:18:04.920 --> 00:18:07.160
a lot of people working in parallel and then have
340
00:18:07.240 --> 00:18:11.279
your fights over integration rather than fights over coding. Yeah,
341
00:18:11.319 --> 00:18:13.079
but most teams aren't that big.
342
00:18:13.680 --> 00:18:15.680
No, they're really not. But I think a lot of
343
00:18:15.720 --> 00:18:21.119
the time, people who don't necessarily have a lot of
344
00:18:21.119 --> 00:18:25.960
different job experiences within the industry, they think that they're
345
00:18:26.000 --> 00:18:29.720
in a big department because there's like one hundred and
346
00:18:29.759 --> 00:18:34.799
twenty developers, all right, And then you're kind of like no, no, no, no, no, no,
347
00:18:35.039 --> 00:18:39.200
go and take a big Netflix or Uber or Microsoft
348
00:18:39.400 --> 00:18:42.960
or your average financial institution. I worked at Morgan Stanley
349
00:18:43.000 --> 00:18:46.519
and I think I was one of ten thousand developers
350
00:18:46.599 --> 00:18:51.440
working at Morgan Stanley. So yeah, that and the other
351
00:18:51.519 --> 00:18:56.440
thing then is when you're at that scale and your
352
00:18:57.279 --> 00:19:00.359
team within that maybe a lot larger and a lot
353
00:19:00.400 --> 00:19:03.359
more different people on it. You may have a sort
354
00:19:03.400 --> 00:19:07.440
of architect leading the design of the system, and you
355
00:19:07.519 --> 00:19:12.480
have testers and DevOps people and all those kinds of things,
356
00:19:14.279 --> 00:19:18.359
and so what they call a micro service can well
357
00:19:18.400 --> 00:19:22.920
be bigger than the entire thing that other people are
358
00:19:22.960 --> 00:19:27.359
trying to break down into micro services. And so yeah,
359
00:19:27.400 --> 00:19:33.000
there's this dissonance from people not actually realizing what scale
360
00:19:33.000 --> 00:19:34.640
they're at because it feels big to them.
361
00:19:34.839 --> 00:19:36.880
They just haven't been exposed to the other things. What
362
00:19:36.960 --> 00:19:41.680
about the cloud native concept? Is this where you fall
363
00:19:41.759 --> 00:19:43.480
on that we should define it first.
364
00:19:43.880 --> 00:19:49.960
Yes, So cloud native is essentially building apps that are
365
00:19:50.039 --> 00:19:58.480
designed to run in the cloud and leverage I think,
366
00:19:58.519 --> 00:20:01.640
you know, like the the term twelve factor apps has
367
00:20:01.759 --> 00:20:03.599
kind of fallen out of use a lot. I think
368
00:20:03.599 --> 00:20:07.160
a Roku introduced that idea, and I think a Roku
369
00:20:07.359 --> 00:20:10.759
was one of the first cloud native style platforms, way
370
00:20:10.799 --> 00:20:13.960
before Kubernettes and containers and all that sort of thing
371
00:20:14.039 --> 00:20:17.240
came along, and it was build your app so that
372
00:20:17.319 --> 00:20:22.680
it consumes services that are provided for you and can
373
00:20:22.720 --> 00:20:27.200
be deployed by doing a Git push or whatever else.
374
00:20:27.559 --> 00:20:30.880
And you're not worried about infrastructure. You're not worried about
375
00:20:31.039 --> 00:20:34.720
VM size, CPU core count, all those sorts of things,
376
00:20:34.759 --> 00:20:35.440
because you're just.
377
00:20:35.680 --> 00:20:39.599
No updating machines, just million new instances in rolling.
378
00:20:39.279 --> 00:20:43.640
Across totally totally. And then you have things on top
379
00:20:43.680 --> 00:20:50.279
of that around reliability, which obviously you know poly in
380
00:20:50.559 --> 00:20:54.839
dot net. But when you're building for the cloud, you
381
00:20:54.960 --> 00:20:57.319
have to build for partition, You have to build for
382
00:20:58.000 --> 00:21:03.640
things that are likely to you know, things in the
383
00:21:03.640 --> 00:21:05.440
cloud go down for two seconds and then come back
384
00:21:05.519 --> 00:21:09.319
up again. Because somebody did a push and it just happened,
385
00:21:09.440 --> 00:21:12.839
and so you have to that. You know, you can't
386
00:21:12.880 --> 00:21:14.960
just go, oh no, the database is gone. You have
387
00:21:15.119 --> 00:21:16.839
to go, well, I'll try again in a second, then
388
00:21:16.839 --> 00:21:20.079
in two seconds, then in four seconds. Obviously with that
389
00:21:20.200 --> 00:21:23.839
weird fuzzing thing that changes those numbers into something not
390
00:21:23.920 --> 00:21:24.599
quite surround.
391
00:21:26.200 --> 00:21:29.519
But maybe that's what's happened is people misconstrued being cloud
392
00:21:29.599 --> 00:21:31.640
native with products like Kubernetes.
393
00:21:31.799 --> 00:21:34.440
That's the thing cloud. So you have cloud Native, which
394
00:21:34.480 --> 00:21:37.920
is a concept and an idea and an abstract that
395
00:21:37.960 --> 00:21:39.960
you can aim for, and then you have the Cloud
396
00:21:40.079 --> 00:21:45.680
Native Computing Foundation, which is attempting to be for cloud
397
00:21:45.680 --> 00:21:50.119
computing what the Linux Foundation is for Linux. And you know,
398
00:21:50.559 --> 00:21:53.480
Kubernettes is often called the operating system of the cloud,
399
00:21:55.319 --> 00:22:00.000
and there's going to be people going often called by whom,
400
00:22:00.039 --> 00:22:04.279
But so they have projects that go through kind of
401
00:22:04.519 --> 00:22:10.240
incubator and preview and then stable and ready for everybody
402
00:22:10.279 --> 00:22:12.920
to use. And so people feel like if they are
403
00:22:12.920 --> 00:22:15.599
going to be cloud native, then they should go down
404
00:22:15.640 --> 00:22:18.200
that like it's a checklist almost and go are we
405
00:22:18.279 --> 00:22:20.960
running on Kubernetes, Are we using a service mesh? Are
406
00:22:21.000 --> 00:22:25.319
we using a document database, Are we using event sourcing
407
00:22:25.319 --> 00:22:28.720
and all these things that they have projects for, And
408
00:22:29.480 --> 00:22:33.200
you can be cloud native. You can build you could
409
00:22:33.200 --> 00:22:36.400
build I don't, please don't, but you could build an
410
00:22:36.440 --> 00:22:40.920
asp dot net web forms app that was cloud native
411
00:22:42.759 --> 00:22:46.839
that covered all those things. Just with the various rules
412
00:22:46.920 --> 00:22:49.039
and all this sort of stuff, there's nothing stopping you
413
00:22:49.079 --> 00:22:52.599
from pushing an asp net where it forms app into
414
00:22:53.039 --> 00:22:55.920
an Azero app service in a VM or something or
415
00:22:55.960 --> 00:22:56.920
a VM or yeah.
416
00:22:57.720 --> 00:23:00.799
And that just proves the point that just because you
417
00:23:00.920 --> 00:23:03.319
have checked off all the boxes doesn't mean using the
418
00:23:03.359 --> 00:23:05.119
rate technology for the job.
419
00:23:05.319 --> 00:23:07.880
Well. Absolutely, And you haven't talked about the customer requirements
420
00:23:07.880 --> 00:23:10.240
anywhere along the path here.
421
00:23:09.799 --> 00:23:13.559
Nobody's asking about that. The customer's kind of going. What
422
00:23:13.640 --> 00:23:17.240
I would really like is for the page to load
423
00:23:17.480 --> 00:23:21.319
in less than four hundred milliseconds, And which is the
424
00:23:21.920 --> 00:23:26.359
something limit. It's like, four hundred milliseconds is the point
425
00:23:26.359 --> 00:23:32.160
at which people go that with subality limits. And we've
426
00:23:32.240 --> 00:23:35.359
actually gotten to this point now. This is one of
427
00:23:35.400 --> 00:23:41.559
the conversations I was having with people where four hundred
428
00:23:41.640 --> 00:23:49.119
milliseconds feels unattainable. And have you guys watched the Spotify
429
00:23:49.359 --> 00:23:54.279
documentary thing on Netflix playlist or something that's called. So
430
00:23:54.319 --> 00:23:56.480
it's about the guy who started Spotify. It's like six
431
00:23:56.519 --> 00:24:00.640
episodes and they're each done from a different perspective, a
432
00:24:00.640 --> 00:24:04.759
different person's point of view. But Daniel Lek, the guy
433
00:24:04.759 --> 00:24:10.680
who started Spotify, his sole focus to get it launched,
434
00:24:12.240 --> 00:24:15.920
in tech terms, was that when you click the play
435
00:24:15.920 --> 00:24:20.400
button on a song, it should start playing like immediately.
436
00:24:20.440 --> 00:24:23.559
And he was aiming for that four hundred millisecond point
437
00:24:23.599 --> 00:24:26.960
and he got it. And that was in two thousand
438
00:24:27.000 --> 00:24:31.640
and one. And now we're here with an internet that
439
00:24:31.839 --> 00:24:36.680
is several orders of magnitude faster, We've got five G
440
00:24:36.839 --> 00:24:41.200
on our phones, we've got gigabit plus internet at affordable
441
00:24:41.240 --> 00:24:44.599
prices for a lot of people. And we're still saying
442
00:24:45.480 --> 00:24:47.640
that's really tricky. We can do it in like one
443
00:24:47.680 --> 00:24:52.559
point four seconds if you're in a fast connection, And yeah,
444
00:24:52.640 --> 00:24:56.960
we've we've lost lost sight of the ball, and we
445
00:24:57.039 --> 00:25:01.119
need to examine ourselves as industry and say, well, what
446
00:25:01.160 --> 00:25:02.880
are we doing and why are we doing it?
447
00:25:02.920 --> 00:25:05.279
And is there anything what are we doing for those
448
00:25:05.279 --> 00:25:08.759
one point four seconds? Exactly what are you up to?
449
00:25:10.440 --> 00:25:14.000
And so yeah, and like I say, the talk covers
450
00:25:14.000 --> 00:25:17.079
this from infrastructure from back end, from front end, from
451
00:25:17.279 --> 00:25:23.240
programming language and all these different things, and yeah, frontend,
452
00:25:24.000 --> 00:25:26.759
it's it is honestly quite a simple answer. We are
453
00:25:26.799 --> 00:25:31.759
downloading a shedload of JavaScript which the browser then has
454
00:25:31.799 --> 00:25:36.640
to pass and jit and do all those sorts of things.
455
00:25:36.039 --> 00:25:42.039
And before we do all of that, people can't scroll
456
00:25:42.119 --> 00:25:46.119
a blog. And you're like, it's a blog. The only
457
00:25:46.200 --> 00:25:49.079
thing on it that needs to be interactive is the
458
00:25:49.200 --> 00:25:52.799
comments and maybe a like button or a share button.
459
00:25:52.880 --> 00:25:56.920
Even the share buttons are just links. But no, I
460
00:25:56.960 --> 00:26:01.960
see people sort of writing blogs with nuts dot js.
461
00:26:03.039 --> 00:26:05.200
Are you still bolished? And blazer server, Mark.
462
00:26:05.160 --> 00:26:09.519
I really like blazer server for internal things, for where
463
00:26:09.559 --> 00:26:12.720
you have a very definite upper limit on the number
464
00:26:12.759 --> 00:26:15.799
of concurrent connections that you can have, and it's like
465
00:26:16.000 --> 00:26:18.960
in the thousands or maybe tens of thousands, and you
466
00:26:18.960 --> 00:26:24.039
can scale up for that and everything. Once you scale
467
00:26:24.119 --> 00:26:30.559
blazer server beyond a single instance, then obviously it becomes trickier.
468
00:26:30.720 --> 00:26:33.200
So if you've got like messages and one person sends
469
00:26:33.200 --> 00:26:35.680
it on one instance, that now has to bounce through
470
00:26:35.680 --> 00:26:38.279
something like a reddish pubsub or something so that the
471
00:26:38.319 --> 00:26:43.720
other instances can pick it up. But it's still very simple. Actually,
472
00:26:43.759 --> 00:26:49.279
I've been playing with so blazerin dot net eight and
473
00:26:49.880 --> 00:26:53.839
you have the server side rendering, and so it will
474
00:26:53.880 --> 00:26:56.960
render pages on the server and it will return them,
475
00:26:56.960 --> 00:26:58.720
so you can have a site that works with search
476
00:26:58.759 --> 00:27:02.440
engines just as much as anything else, just like Razor pages.
477
00:27:03.880 --> 00:27:09.039
And then it will download the Blazer web assembly runtime
478
00:27:09.279 --> 00:27:13.200
in the background, and it will download your natively compiled
479
00:27:13.720 --> 00:27:18.599
Blazer application in the background, and then silently without the
480
00:27:18.680 --> 00:27:21.559
user even noticing that's anything, that anything has happened, the
481
00:27:21.599 --> 00:27:24.480
next time they navigate, it won't make a request to
482
00:27:24.519 --> 00:27:26.519
the server. It will do it locally.
483
00:27:27.079 --> 00:27:29.640
It's like magic, except that it doesn't work.
484
00:27:30.039 --> 00:27:32.039
It's they'll get there.
485
00:27:34.880 --> 00:27:37.079
I've done I've done tests and I recently did another
486
00:27:37.119 --> 00:27:41.319
one and we go from service side rendered directly to
487
00:27:41.359 --> 00:27:47.559
web assembly. There isn't any server rendering in between while
488
00:27:47.640 --> 00:27:50.559
web assembly is downloading. And that's been a problem ever
489
00:27:50.599 --> 00:27:53.720
since they released that, and it's still a problem. Well,
490
00:27:53.559 --> 00:27:54.359
but they'll get there.
491
00:27:54.680 --> 00:27:57.240
I'm just going to keep my fingers crossed for for
492
00:27:57.319 --> 00:28:00.200
dot netline. But no I did. I ran into some
493
00:28:00.240 --> 00:28:05.440
issues with it myself and have started looking at an
494
00:28:05.480 --> 00:28:13.920
alternative thing, which is HTMX, which is that X stand
495
00:28:13.960 --> 00:28:21.200
for so essentially this is a push back against things
496
00:28:21.279 --> 00:28:23.960
like React and Angular and so forth, where it's kind
497
00:28:23.960 --> 00:28:26.920
of what you actually want to do, what you actually
498
00:28:26.960 --> 00:28:31.160
want to achieve is when the user clicks something or
499
00:28:31.200 --> 00:28:34.160
interacts with something in some way, you want to make
500
00:28:34.200 --> 00:28:36.559
a call to a server and then you want to
501
00:28:36.839 --> 00:28:39.960
make a change to the dom of your current page
502
00:28:40.240 --> 00:28:43.079
right and insert a div and with some stuff in
503
00:28:43.119 --> 00:28:47.359
it or something and so works, which is how Blazer
504
00:28:47.359 --> 00:28:52.920
server works. And HTMX is kind of let's let's just
505
00:28:53.079 --> 00:28:56.039
lean into that as far as possible, and we'll just
506
00:28:56.200 --> 00:29:01.640
use HTML attributes on elements and we'll say, okay, so
507
00:29:02.200 --> 00:29:06.279
on this element, when the user clicks, we are going
508
00:29:06.319 --> 00:29:10.279
to make a request to this endpoint on our server,
509
00:29:10.319 --> 00:29:13.960
which is going to return a fragment of HTML, and
510
00:29:14.000 --> 00:29:18.720
then we're going to insert that HTML into the page
511
00:29:18.839 --> 00:29:21.240
at this point, or we're going to replace an existing
512
00:29:21.640 --> 00:29:28.359
element with that HTML. And for I think like ninety
513
00:29:28.440 --> 00:29:33.119
percent of use cases, that actually covers most of the
514
00:29:33.119 --> 00:29:36.279
things you want to do. It will do your comment
515
00:29:36.599 --> 00:29:38.480
form at the bottom of your blog. It will do
516
00:29:39.200 --> 00:29:42.759
your like buttons and an updated view of how many
517
00:29:42.920 --> 00:29:45.519
likes you've got, and all those sorts of things, but
518
00:29:45.640 --> 00:29:50.720
without a huge JavaScript run time doing shadow dom things
519
00:29:50.799 --> 00:29:57.440
and observing signals. They seem to be going on about
520
00:29:57.440 --> 00:29:59.720
signals over in JavaScript land at the moment. That's very
521
00:30:00.000 --> 00:30:02.160
fighting for them. And yeah, so.
522
00:30:02.200 --> 00:30:04.480
That's sort of like the evolution of ajax, isn't it.
523
00:30:04.720 --> 00:30:08.279
Yeah, yeah, it is, and it's kind of it's that
524
00:30:08.400 --> 00:30:10.359
the plumbing. I feel like it's a shame we had
525
00:30:10.359 --> 00:30:12.279
to go all the way round SPA to get back
526
00:30:12.279 --> 00:30:14.839
to the point where we're going. Here's a really sensible
527
00:30:14.839 --> 00:30:16.319
evolution of ajax.
528
00:30:17.200 --> 00:30:20.000
Just refill a div tag for me, would you please? Right?
529
00:30:21.279 --> 00:30:24.920
So I built a site when I was learning the base,
530
00:30:25.079 --> 00:30:30.160
and it's called fret Badger, which is partly because I like,
531
00:30:31.000 --> 00:30:36.000
it's not a mollusk. If I ever start another company,
532
00:30:36.039 --> 00:30:38.279
it's just going to be called not a Mollusk limited.
533
00:30:38.880 --> 00:30:43.039
What do you do? Definitely not a mollusk. So yeah,
534
00:30:43.400 --> 00:30:46.079
you can you can hire hijack the domain for me
535
00:30:46.240 --> 00:30:51.200
and then blackmail me. But no, So frat Badger. I
536
00:30:51.240 --> 00:30:53.400
wanted to learn the threat board, and I wanted to
537
00:30:53.480 --> 00:30:58.160
learn scales and modes for jazz and arpeggios and that
538
00:30:58.200 --> 00:30:59.680
sort of thing, and.
539
00:30:59.480 --> 00:31:00.920
So I see chart behind you.
540
00:31:01.279 --> 00:31:03.680
Yes, exactly. I've got the bas chart on the wall
541
00:31:03.680 --> 00:31:06.440
which has got all the modes and everything else. And
542
00:31:06.480 --> 00:31:08.799
it's basically just if you want to play up this scale,
543
00:31:08.839 --> 00:31:11.759
and you've got the major scale, the minor scale, pentatomics, blues,
544
00:31:11.799 --> 00:31:18.119
all these different things. And I was my base teacher
545
00:31:18.599 --> 00:31:22.559
was pushing me to learn music theory, and I got
546
00:31:22.599 --> 00:31:28.599
really into it because it's it's maths, it's rules, and
547
00:31:28.839 --> 00:31:32.519
it's logical, and so I thought, well, the best.
548
00:31:32.359 --> 00:31:34.640
Way there's one of the many reasons that musicians and
549
00:31:35.319 --> 00:31:36.799
developers go work so well together.
550
00:31:36.960 --> 00:31:40.400
Yeah, yeah, And I thought, so if I can encode
551
00:31:40.599 --> 00:31:44.559
all this information about music theory into C sharp and
552
00:31:44.640 --> 00:31:47.640
some data structures, then that would be a good way
553
00:31:47.680 --> 00:31:49.880
to learn it. And also it would be a fun
554
00:31:49.960 --> 00:31:53.119
site to build. And so it's just an asp net
555
00:31:53.519 --> 00:31:57.720
Core MVC app at the moment, but it does have
556
00:31:57.799 --> 00:31:59.599
this thing so you can have like you choose your
557
00:31:59.599 --> 00:32:02.119
freat ball and you say, okay, so I want the
558
00:32:02.160 --> 00:32:05.279
standard base threat board, standard tuning, and I want the
559
00:32:05.480 --> 00:32:09.240
C major scale, and it will show you the little
560
00:32:09.240 --> 00:32:12.119
dots to show you where to put your fingers. But
561
00:32:12.240 --> 00:32:15.799
then when I was doing jazz, it was kind of
562
00:32:15.960 --> 00:32:17.599
it would be really good if I could have like
563
00:32:17.960 --> 00:32:19.920
four or five of them on the screen at once,
564
00:32:20.119 --> 00:32:22.759
and so I added in nothing. But every time you
565
00:32:22.880 --> 00:32:26.559
add a new threatboard, it reloads the entire page and
566
00:32:26.599 --> 00:32:28.640
then it scrolled back to the top. And so I
567
00:32:28.680 --> 00:32:30.440
was looking for a way to make it kind of
568
00:32:30.799 --> 00:32:33.799
more smoothly interactive. And so that's what I was looking
569
00:32:33.799 --> 00:32:37.559
at the Blazer server side plus WASM for. But as
570
00:32:37.640 --> 00:32:43.480
Carl says, there are some issues. But then I saw
571
00:32:43.680 --> 00:32:47.559
HTMX and I'm kind of like, that is exactly what
572
00:32:47.640 --> 00:32:50.720
I want. And the beautiful thing is it works really
573
00:32:50.720 --> 00:32:53.720
really well with esp net core because we have partials
574
00:32:54.559 --> 00:32:57.759
and so we can just go, when this request comes in,
575
00:32:57.920 --> 00:33:02.319
just render this partial. So yeah, it's and it's that
576
00:33:02.359 --> 00:33:06.720
sort of thing. The key thing with HTMX though, is
577
00:33:07.079 --> 00:33:13.079
the entire library is fourteen point six killer bytes minified
578
00:33:13.119 --> 00:33:15.680
and chesipped, which is tiny.
579
00:33:15.920 --> 00:33:19.559
It's less than your logo graphic button.
580
00:33:19.319 --> 00:33:20.400
Radius is bigger than that.
581
00:33:20.839 --> 00:33:23.960
Yeah, yeah, you know, it's like that thing where when
582
00:33:24.079 --> 00:33:27.079
Windows seven came out, the desktop wallpaper was took up
583
00:33:27.119 --> 00:33:30.960
more disk space than the whole of Windows three point one,
584
00:33:31.559 --> 00:33:36.119
like and what is it doing that? So yeah, it's that,
585
00:33:37.240 --> 00:33:43.559
and you know it's They provide documentation and guidance on
586
00:33:43.640 --> 00:33:47.119
how to use Alpine js, which is again a very
587
00:33:47.200 --> 00:33:53.240
lightweight JavaScript framework, kind of like a miniature alternative to
588
00:33:53.359 --> 00:33:56.599
jQuery for the things that jQuery did that didn't then
589
00:33:56.640 --> 00:34:00.279
get built into JavaScript fifteen or twenty sixteen or whatever.
590
00:34:02.079 --> 00:34:04.839
So if you do need, I have one thing where
591
00:34:04.880 --> 00:34:07.680
I wrote custom JavaScript, which is, once you've got your
592
00:34:07.839 --> 00:34:10.039
C major scale up on the threat board, if you
593
00:34:10.159 --> 00:34:14.119
click one of the c's, it will fade the others
594
00:34:14.159 --> 00:34:18.000
that aren't part of that arpeggio. And so it's kind
595
00:34:18.000 --> 00:34:20.360
of like going, so you do this, and then that's
596
00:34:20.440 --> 00:34:23.280
your second, and your third, and your fourth and so on.
597
00:34:24.800 --> 00:34:30.800
And that's twenty lines of chavascript, which isn't even worth
598
00:34:30.880 --> 00:34:33.800
minifying at that point. I think it's actually still hard
599
00:34:33.840 --> 00:34:37.199
coded into the h into the layout dot c shtml
600
00:34:38.519 --> 00:34:42.000
and so yeah, just that little bits of JavaScript here
601
00:34:42.039 --> 00:34:44.800
and there to do a couple of things in the browser,
602
00:34:45.400 --> 00:34:50.039
and then HTMX for everything else. And it's it's working
603
00:34:50.079 --> 00:34:51.639
really well. I'm going to be pushing it live soon.
604
00:34:51.719 --> 00:34:53.679
It's great. Before we take a break, I just want
605
00:34:53.719 --> 00:34:57.320
to mention that I had written I don't know four
606
00:34:57.400 --> 00:35:02.800
or five years ago this tool. I have a guitar
607
00:35:02.920 --> 00:35:06.519
that has a role in GK pickup GK three pickup,
608
00:35:06.519 --> 00:35:10.239
which is a split pickup, so it goes right in
609
00:35:10.280 --> 00:35:12.280
between the bridge and your first pickup of the guitar.
610
00:35:13.039 --> 00:35:15.800
And it has six individual pickups for each string and
611
00:35:15.840 --> 00:35:18.840
those go through a role in processor and then you
612
00:35:18.880 --> 00:35:23.000
can process each string individually. So another thing I can
613
00:35:23.039 --> 00:35:26.079
do is map it to MIDI. So what I have
614
00:35:26.519 --> 00:35:29.480
is I have something that pulls up the MIDI from
615
00:35:29.840 --> 00:35:33.800
your guitar and figures out where your fingers are on
616
00:35:33.840 --> 00:35:36.440
the front board and shows it to you on the screen.
617
00:35:36.960 --> 00:35:39.960
Not only that, but then I put a service between it,
618
00:35:40.079 --> 00:35:44.400
so somebody could log in in Texas and I'm playing
619
00:35:44.400 --> 00:35:47.480
in my place and I can be teaching them, and
620
00:35:47.880 --> 00:35:50.599
as I play, the dots show up where my fingers are.
621
00:35:50.840 --> 00:35:54.760
Not only that, I got to chord charts and chord
622
00:35:54.920 --> 00:35:58.360
names based on the music theory of it. So if
623
00:35:58.360 --> 00:36:00.920
you're interested in that codebase, I'll gladly send it to you.
624
00:36:01.079 --> 00:36:03.559
I would love to see that. Yeah, that sounds amazing.
625
00:36:04.440 --> 00:36:06.119
So yeah, and I feel compelled to ask did you
626
00:36:06.119 --> 00:36:11.760
write that using events hourcing or DDD? Is how many.
627
00:36:12.119 --> 00:36:15.760
It was very simple, all right, So we're going to
628
00:36:15.800 --> 00:36:17.599
take a quick break and we'll be right back with
629
00:36:17.679 --> 00:36:21.679
more with Mark Rendell. Stay tuned. Did you know that
630
00:36:21.719 --> 00:36:26.400
you can work with AWS directly from your ide Aws
631
00:36:26.440 --> 00:36:30.639
provides toolkits for visual Studio, Visual Studio code, and jet
632
00:36:30.679 --> 00:36:35.119
Brains rider Learn more at Aws dot Amazon dot com,
633
00:36:35.159 --> 00:36:40.519
slash net slash tools. You know it's common for business
634
00:36:40.559 --> 00:36:44.880
application to contain fifteen percent repetitive code just because of
635
00:36:45.000 --> 00:36:49.599
metaprogramming limitations in the C Sharp language. Why write boilerplate
636
00:36:49.719 --> 00:36:53.599
manually when a machine could generate it for you? Enter Metaalama,
637
00:36:53.840 --> 00:36:57.519
the code generation and verification toolkit for C Sharp. Their
638
00:36:57.639 --> 00:37:01.360
C Sharp to c sharp template language is simply amazing
639
00:37:01.679 --> 00:37:07.880
logging caching memento observable. If it's repetitive, Metaalama can automate it.
640
00:37:08.280 --> 00:37:11.679
Visit Metalama dot net today and learn to automate your
641
00:37:11.719 --> 00:37:15.599
code patterns with their free edition. Remember it's Metaalama with
642
00:37:15.679 --> 00:37:22.760
one L Meta la Ma dot Net. Attention dot net
643
00:37:22.760 --> 00:37:27.920
developers looking for the ultimate SDK to handle electronic document
644
00:37:28.000 --> 00:37:33.280
processing Meet TX text Control. Txtext Controls, your go to
645
00:37:33.400 --> 00:37:39.119
solution for seamless PDF generation, secure electronic signatures and efficient
646
00:37:39.239 --> 00:37:43.679
digital forms processing all within your dot net applications. Empower
647
00:37:43.679 --> 00:37:49.159
your products with robust document management capabilities, boost productivity, and
648
00:37:49.440 --> 00:37:54.280
deliver top notch solutions to your clients. Trusted by developers worldwide,
649
00:37:54.360 --> 00:37:58.280
including me and Richard. Txtext Control is the SDK that
650
00:37:58.440 --> 00:38:02.400
makes a difference. Check look out demos dot textcontrol dot
651
00:38:02.440 --> 00:38:05.840
com for live online demos and see it in action.
652
00:38:07.920 --> 00:38:10.480
And we're back. I'm Carl Franklin. That's my friend Richard
653
00:38:10.480 --> 00:38:14.679
Campbell and Mark Rendel's here, and we're talking about simplicity. Simplicity.
654
00:38:14.679 --> 00:38:16.199
And by the way, I need to remind you that
655
00:38:16.239 --> 00:38:18.079
if you don't want to hear the ads, you can
656
00:38:18.119 --> 00:38:20.239
become a five dollars a month patron of dot net
657
00:38:20.320 --> 00:38:23.320
rocks and get an ad free feed. Go to Patreon
658
00:38:23.440 --> 00:38:27.119
dot dot NetRocks dot com. Okay, so I guess you
659
00:38:27.199 --> 00:38:30.400
were talking about HTMX and.
660
00:38:30.880 --> 00:38:36.840
So yeah, and HTMX is one example of simplification. People. Actually,
661
00:38:36.920 --> 00:38:40.679
I'm starting to see projects popping up that are pushing
662
00:38:40.719 --> 00:38:46.280
back against this complexity that we've created. And there are
663
00:38:46.320 --> 00:38:47.400
other examples as well.
664
00:38:47.400 --> 00:38:47.639
There we are.
665
00:38:49.519 --> 00:38:54.559
You don't need to run a coubonet. So the comment
666
00:38:54.599 --> 00:38:56.480
that you read at the start of the show from
667
00:38:56.679 --> 00:39:01.719
the other Mark and he were saying, how Aks and
668
00:39:01.920 --> 00:39:07.079
eks the sort of managed Kubernetes are super easy to run.
669
00:39:07.599 --> 00:39:11.159
They're really not they really they're easier.
670
00:39:11.320 --> 00:39:15.079
They're easy. Err, it's only because you've been traumatized by
671
00:39:15.079 --> 00:39:16.559
trying to run Kubernetes by head.
672
00:39:16.639 --> 00:39:19.519
I mean, yeah, never ever, ever try to run your
673
00:39:19.559 --> 00:39:22.840
own Kubernetes cluster, unless maybe you just want to build
674
00:39:22.880 --> 00:39:26.840
one with five Raspberry pies just for giggles. But no.
675
00:39:27.239 --> 00:39:31.000
So let's take a zero as an example, just because
676
00:39:31.079 --> 00:39:34.440
it's the one that I know best. But Microsoft support
677
00:39:34.519 --> 00:39:41.840
a version of Kubernetes I think for four versions for
678
00:39:42.039 --> 00:39:45.119
minor versions. So I think we're on like one point
679
00:39:45.280 --> 00:39:48.760
twenty one at the moment I get confused with version numbers,
680
00:39:48.880 --> 00:39:51.039
and so they will still be supporting twenty and nineteen
681
00:39:51.079 --> 00:39:53.400
and eighteen. But as soon as twenty two comes along,
682
00:39:53.480 --> 00:39:57.039
if you're still on eighteen, you need to upgrade. And
683
00:39:57.360 --> 00:40:02.840
Kubernetes versions land three monthly or six monthly, I'm not sure, so.
684
00:40:02.800 --> 00:40:05.400
It means every year then you're probably agreeing so.
685
00:40:05.360 --> 00:40:07.360
But you are at least once a year going to
686
00:40:07.360 --> 00:40:11.039
have to upgrade your Kubernettes cluster. And if you do it,
687
00:40:11.719 --> 00:40:14.920
if you do the upgrade the minimum number of times possible,
688
00:40:14.960 --> 00:40:17.920
then you're doing a I mean, Kubernett's versioning is a
689
00:40:17.920 --> 00:40:21.280
whole thing anyway, because those are not minor versions, they
690
00:40:21.280 --> 00:40:24.280
are major versions. A lot of the time they remove APIs,
691
00:40:24.320 --> 00:40:26.679
they deprecate APIs, and yet somehow we're still on one
692
00:40:26.679 --> 00:40:32.119
point something. And so if you want to minimize the
693
00:40:32.199 --> 00:40:33.840
number of times you have to do this, you're going
694
00:40:33.880 --> 00:40:35.559
to be going from like one dot eighteen to one
695
00:40:35.599 --> 00:40:38.199
dot twenty two. That's a lot of jump. That's a
696
00:40:38.239 --> 00:40:42.360
lot of things that in an enterprise environment, you're going
697
00:40:42.440 --> 00:40:46.360
to have people going over pages and pages and pages
698
00:40:46.360 --> 00:40:48.039
of release notes to make sure that you're not going
699
00:40:48.079 --> 00:40:52.480
to break anything. Or you upgrade every time the new
700
00:40:52.559 --> 00:40:55.679
version becomes available, which is going to take less time
701
00:40:55.760 --> 00:41:01.960
per upgrade, but potentially more time overall. And then it's
702
00:41:02.000 --> 00:41:04.239
not enough to just be running in Kubernetes. You have
703
00:41:04.400 --> 00:41:07.239
to have your service mesh, you have to have your sidecars,
704
00:41:07.320 --> 00:41:11.039
you have to have your your sort of various load
705
00:41:11.119 --> 00:41:15.119
balances and all these kinds of things, and nobody's managing
706
00:41:15.159 --> 00:41:19.119
that for you. Microsoft doesn't Microft hasn't blessed a service
707
00:41:19.199 --> 00:41:22.800
mesh because they can't because people want different things. So
708
00:41:23.159 --> 00:41:27.159
it's it's simpler, but it is by no means simple.
709
00:41:27.800 --> 00:41:31.599
And then you look at you type container into the
710
00:41:31.679 --> 00:41:34.559
creator new thing in the Azure portal, and actually the
711
00:41:34.599 --> 00:41:38.119
first thing that pops up is container app and that
712
00:41:38.760 --> 00:41:42.400
is simple. So that is build. You write your DOCA
713
00:41:42.400 --> 00:41:45.039
file or you know, in my case, right click in
714
00:41:45.719 --> 00:41:49.280
the solution explorer in jet Brain's rider and say add
715
00:41:49.320 --> 00:41:51.480
docer file and it just generates it for you with
716
00:41:51.559 --> 00:41:55.320
all the right best practices, and then do Docker build,
717
00:41:55.320 --> 00:41:58.199
and then do Docker push to your as your container registry,
718
00:41:58.800 --> 00:42:04.719
and then just deploy the thing. And underneath it all
719
00:42:04.760 --> 00:42:07.559
it's running on a massive Kubernetes.
720
00:42:07.000 --> 00:42:09.280
Cluster you want to have to own.
721
00:42:09.760 --> 00:42:12.800
Yes, Microsoft are taking care of everything. They're taking care
722
00:42:12.800 --> 00:42:18.480
of the service smash, the upgrade cycle, the stability and
723
00:42:18.599 --> 00:42:20.400
resilience and all those sorts of things.
724
00:42:20.639 --> 00:42:23.920
Well, and arguably, if you decide it isn't running well
725
00:42:23.920 --> 00:42:26.280
in container apps and want to move to your own
726
00:42:26.440 --> 00:42:29.079
manage infrastructure, you're already there exactly.
727
00:42:29.280 --> 00:42:32.719
Yeah. And equally, now you can take a container and
728
00:42:32.760 --> 00:42:35.800
you can push that towards your app service where you
729
00:42:35.840 --> 00:42:38.679
used to push web things to, which is also very
730
00:42:38.760 --> 00:42:42.639
nice and much easier than saying copy locally and all.
731
00:42:42.480 --> 00:42:43.480
These various things.
732
00:42:44.280 --> 00:42:48.320
So yeah, you know, on that side, there's that simplicity.
733
00:42:48.679 --> 00:42:51.960
And again it's taken us a long time to get there.
734
00:42:52.559 --> 00:42:55.599
And this is Microsoft figuring out what people actually willing
735
00:42:55.639 --> 00:42:56.880
to use, right like.
736
00:42:57.039 --> 00:43:01.679
Yeah, yeah, and you know, you know, the reason you
737
00:43:01.719 --> 00:43:05.039
don't get straight from A to Z is because you
738
00:43:05.079 --> 00:43:07.960
can't see zed until you've gone through B, C, D, E,
739
00:43:08.239 --> 00:43:11.599
F and everything else. Yeah, and you don't know what
740
00:43:11.639 --> 00:43:14.400
it looks like. And it's very difficult to find out
741
00:43:14.400 --> 00:43:16.760
that something's a bad idea without trying it.
742
00:43:16.960 --> 00:43:20.280
Yeah, and without well, and you always have the few
743
00:43:20.320 --> 00:43:23.119
folks they get it that they're willing to put the
744
00:43:23.119 --> 00:43:26.000
time in their their customer is tolerant of it, and
745
00:43:26.000 --> 00:43:28.400
they can do this complexity. But then a whole bunch
746
00:43:28.440 --> 00:43:30.840
of others just like Nope, not doing it. And then
747
00:43:30.920 --> 00:43:33.440
you you know that in the end they have to
748
00:43:34.280 --> 00:43:35.760
you know, Microsoft looks and goes, well, we're just not
749
00:43:35.760 --> 00:43:37.800
getting enough adoption here. What if we did this, like
750
00:43:37.880 --> 00:43:40.480
they are just kind of hurling it at the wall. Yeah,
751
00:43:40.559 --> 00:43:42.880
by a bit, and eventually they stumble on to these
752
00:43:42.920 --> 00:43:45.000
approaches that are simple enough.
753
00:43:45.480 --> 00:43:48.599
And you know it's the big thing has been serverless
754
00:43:48.599 --> 00:43:51.400
and still is serverless for a lot of the talks
755
00:43:51.440 --> 00:43:54.320
I'm seeing and that sort of thing, which is containers
756
00:43:54.400 --> 00:43:57.679
under the hood. It's containers under the hood. But the
757
00:43:59.159 --> 00:44:01.719
again I'm going to talk about a Zoo functions but
758
00:44:02.159 --> 00:44:06.519
equally applies to a ws lander and another Servilus platforms.
759
00:44:07.440 --> 00:44:10.800
What you end up with then is vendor lock in, right,
760
00:44:10.880 --> 00:44:14.480
because your triggers you've got like blob stories triggers, and
761
00:44:14.519 --> 00:44:17.199
there's your Q triggers and service bus triggers and event
762
00:44:17.559 --> 00:44:20.320
hub triggers and all these different things, and so you're
763
00:44:20.360 --> 00:44:24.639
locking yourself into that. But with as your container apps,
764
00:44:25.039 --> 00:44:29.320
you can use Dapper, which is an abstraction over so
765
00:44:29.360 --> 00:44:32.039
you go, I need a cash or I need a
766
00:44:32.079 --> 00:44:36.639
pub sub and then that could be reddis it could
767
00:44:36.719 --> 00:44:40.880
be as your service bus, it could be men cash
768
00:44:40.960 --> 00:44:43.760
d or Varnish, you know whatever. The different things are
769
00:44:44.000 --> 00:44:51.280
fusion cash and in your container description you just go,
770
00:44:51.559 --> 00:44:54.559
this needs a cash, give it a cash, and then
771
00:44:54.719 --> 00:45:00.199
you use the Dapper API, which will one just as well.
772
00:45:00.599 --> 00:45:05.880
You can use Dappa with containers running in amazons. D
773
00:45:06.039 --> 00:45:10.559
A p R Yes, d A p R naming definitely
774
00:45:10.599 --> 00:45:14.880
an issue at first, and Microsoft.
775
00:45:14.360 --> 00:45:17.400
Well, Plus there is the other product called Dapper d
776
00:45:17.519 --> 00:45:20.079
A p p e R right, which is the.
777
00:45:20.400 --> 00:45:22.599
Which is a wrapper around Adeo dot net.
778
00:45:22.880 --> 00:45:27.280
Yeah, it's the kind of incredibly lightweight mapping from data
779
00:45:27.320 --> 00:45:29.440
readers to CEP objects.
780
00:45:29.719 --> 00:45:31.400
I have nothing bad to say about either one, but
781
00:45:31.400 --> 00:45:33.159
they've got nothing to do with each other except when
782
00:45:33.159 --> 00:45:35.440
you say their names entirely unrelated.
783
00:45:36.719 --> 00:45:41.360
But yeah, d a PR stands for Distributed Application platform something.
784
00:45:42.679 --> 00:45:47.920
But DAPPA is great, and it's I think dapper play is.
785
00:45:48.360 --> 00:45:51.199
I would put that in my simple column. It's kind
786
00:45:51.239 --> 00:45:54.119
of I need a cash. I need a way that
787
00:45:54.159 --> 00:45:57.719
I can say cash this data, now give it back,
788
00:45:58.400 --> 00:46:00.960
and I shouldn't have to care about out whether that's
789
00:46:01.000 --> 00:46:06.519
reddis or another solution or just memory. I should be
790
00:46:06.599 --> 00:46:09.559
able to say cash it, give it back, and then
791
00:46:10.000 --> 00:46:15.559
worry about how that actually happens at deployment time. And again,
792
00:46:15.639 --> 00:46:18.199
you can use dapper in Kubernetes, but you don't have to.
793
00:46:18.440 --> 00:46:22.079
You can use dapper in other environments as well, and so,
794
00:46:22.440 --> 00:46:24.880
and I just want to push people in that direction.
795
00:46:25.119 --> 00:46:27.480
I've well, and what I appreciate this is that you're
796
00:46:27.519 --> 00:46:30.599
still giving us access to all of this complexity without
797
00:46:30.639 --> 00:46:31.639
making it complicated.
798
00:46:32.000 --> 00:46:32.239
Yeah.
799
00:46:32.480 --> 00:46:35.679
Right, you're not saying no containers, You're saying containers that
800
00:46:35.760 --> 00:46:37.280
don't make you want to stab yourself.
801
00:46:38.079 --> 00:46:42.239
Well, I mean containers. Containers are absolutely the simplest way
802
00:46:42.239 --> 00:46:44.320
of deploying an application. Sure, you know you need a
803
00:46:44.360 --> 00:46:48.639
Linux dependency like lib zip or something like that, Just
804
00:46:48.679 --> 00:46:51.320
don't make me edit apt get in the docer file
805
00:46:51.360 --> 00:46:54.679
and you've got it. Yeah, it's that, it's that original thing.
806
00:46:54.679 --> 00:46:56.760
If it works on my machine, I'm going to ship
807
00:46:56.760 --> 00:47:01.280
my machine. Yeah. And so yeah, containers I think are
808
00:47:01.280 --> 00:47:03.920
the simplest unit of deployment we've come up with yet.
809
00:47:04.800 --> 00:47:07.880
And it's just a matter of where do you run them?
810
00:47:07.880 --> 00:47:10.760
And do you need to run your Kubernetes cluster.
811
00:47:10.920 --> 00:47:15.199
Yeah, And you know we're we're not complaining about containers.
812
00:47:15.199 --> 00:47:17.760
We're complaining about the orchestrators totally.
813
00:47:17.960 --> 00:47:24.440
Yeah. Management and the assumption that because sort of Facebook
814
00:47:24.440 --> 00:47:26.920
and Netflix and Uber are using something that it's the
815
00:47:26.960 --> 00:47:29.360
right solution for your company.
816
00:47:29.599 --> 00:47:30.880
Right, You're not them.
817
00:47:31.039 --> 00:47:34.239
You're not them, And they have armies of engineers whose
818
00:47:34.360 --> 00:47:38.480
only job is to maintain those that infrastructure.
819
00:47:38.199 --> 00:47:40.719
And test new versions and roll them out and all
820
00:47:40.760 --> 00:47:42.960
of that sort of stuff, and all that stuff if
821
00:47:42.960 --> 00:47:45.800
you need it, but if you don't. At the same time,
822
00:47:45.840 --> 00:47:47.599
you don't want to cut yourself off from the possibility
823
00:47:47.599 --> 00:47:48.920
that you might become one of these things.
824
00:47:49.760 --> 00:47:53.199
Oh yeah, yeah. But if everything's just docophiles and containers,
825
00:47:53.519 --> 00:47:55.320
and at some point you go, actually, you know, it
826
00:47:55.320 --> 00:47:57.199
would be a lot cheaper when you get to the
827
00:47:57.239 --> 00:48:01.079
point where you're spending so much on as you're container apps,
828
00:48:01.760 --> 00:48:05.639
that you could not only run your own cubernettes cluster,
829
00:48:05.719 --> 00:48:07.840
but employ somebody full time to keep an eye on
830
00:48:07.880 --> 00:48:11.079
it and do the upgrades and everything. That's the point
831
00:48:11.079 --> 00:48:11.760
at which you switch.
832
00:48:12.039 --> 00:48:15.360
Certainly on the run as side of things. For me,
833
00:48:15.599 --> 00:48:18.119
I'm having conversations with folks who are like, no, we
834
00:48:18.199 --> 00:48:20.760
repatriated this because we already run a twenty four to
835
00:48:20.800 --> 00:48:24.400
seven knock and it was we were committed to doing
836
00:48:24.440 --> 00:48:27.360
these things in this workload. Now that we truly understood
837
00:48:27.360 --> 00:48:29.679
the shape of it in the cloud made more sense
838
00:48:29.719 --> 00:48:32.800
running at home. Yes, but that's a big lift, right, Like,
839
00:48:32.840 --> 00:48:34.599
it's not a small things.
840
00:48:34.559 --> 00:48:39.840
Really, and the same thing goes I mean, I was
841
00:48:40.480 --> 00:48:43.800
complaining about people downloading fifteen megabytes of JavaScript or WASM
842
00:48:43.880 --> 00:48:46.880
or whatever to run something in the browser. There are
843
00:48:47.400 --> 00:48:50.760
legitimate use cases for that. Adobe now have inside the
844
00:48:50.760 --> 00:48:59.159
network Photoshop and light Room as WASM compiled browser apps, right, So,
845
00:48:59.320 --> 00:49:02.920
and yeah, you know, if you want to edit photos
846
00:49:03.280 --> 00:49:07.119
and clean up red eye using AI algorithms, and you
847
00:49:07.159 --> 00:49:10.719
want to do it in your browser, then you need
848
00:49:10.760 --> 00:49:14.039
to download all that PLASM and that sort of thing,
849
00:49:14.039 --> 00:49:17.159
because you can't have somebody doing a round trip every
850
00:49:17.159 --> 00:49:22.840
time they make a change with a multi megabyte image
851
00:49:22.840 --> 00:49:24.400
file uncompressed.
852
00:49:24.480 --> 00:49:26.760
Arguably, you're still stopping about you're still talking about the
853
00:49:26.800 --> 00:49:30.159
simplest case. In this case. The simplest case is stick
854
00:49:30.199 --> 00:49:32.519
the whole thing in a ASIM file and stuff for
855
00:49:33.039 --> 00:49:34.039
the download overhead.
856
00:49:34.519 --> 00:49:38.679
It's that as simple as possible. And thinking about what
857
00:49:38.719 --> 00:49:42.079
that means for you for this project that you're working
858
00:49:42.119 --> 00:49:44.199
on today, it.
859
00:49:44.159 --> 00:49:46.280
Feels like you're just pressing against the defiles that we're
860
00:49:46.440 --> 00:49:48.719
choosing complexity we don't need.
861
00:49:49.199 --> 00:49:55.159
Yes, yeah, and I think that, and it's not I'm
862
00:49:55.199 --> 00:50:00.599
absolutely not blaming developers in isolation for this, because I
863
00:50:00.639 --> 00:50:05.960
think that the IT department, there were CTOs out there,
864
00:50:06.039 --> 00:50:10.679
there were CIOs and they're going to their own conferences
865
00:50:10.880 --> 00:50:15.440
and being sold this stuff by people with very very
866
00:50:15.480 --> 00:50:18.960
effective marketing machines, and then they come back and go weak.
867
00:50:19.199 --> 00:50:22.159
And motivation is not involving keeping things simple.
868
00:50:22.599 --> 00:50:24.199
Yeah, And they come back and they go, we have
869
00:50:24.239 --> 00:50:26.199
to adopt this because it's the next big thing, and
870
00:50:27.760 --> 00:50:31.679
not doing proper kind of cost benefit analysis and those
871
00:50:31.719 --> 00:50:34.880
things to work out whether it actually is the right thing.
872
00:50:36.119 --> 00:50:39.960
Something just occurred to me about Blazer server. I remember
873
00:50:40.719 --> 00:50:43.400
having customers say they didn't like blazer server because if
874
00:50:43.440 --> 00:50:46.360
the connection goes down, like they get that what I
875
00:50:46.480 --> 00:50:50.280
call the transparent veil of death. Oh yeah, you know
876
00:50:50.320 --> 00:50:53.480
you have screens of death. This is a transparent so
877
00:50:53.519 --> 00:50:58.679
it turns slightly transparent or translucent translucent, and you know
878
00:50:59.159 --> 00:51:01.920
you have to press the reload buttons. So apparently in
879
00:51:02.000 --> 00:51:06.280
that net nine that is becoming much less frequent, Like
880
00:51:06.400 --> 00:51:10.280
the whole automatic reconnection thing is just going to happen.
881
00:51:10.559 --> 00:51:16.679
And I believe that they can make that acceptable to everybody,
882
00:51:16.760 --> 00:51:19.800
certainly to the real tech guys. So instead of it
883
00:51:19.880 --> 00:51:24.320
going slightly transparent, don't change the UI at all, right,
884
00:51:25.639 --> 00:51:28.800
just but it's frozen and it doesn't update and then
885
00:51:28.880 --> 00:51:30.800
just change the cursor to a spinning beach ball and
886
00:51:30.800 --> 00:51:31.880
everybody will be happy.
887
00:51:32.039 --> 00:51:33.360
Everybody will know what's happening.
888
00:51:33.679 --> 00:51:36.360
Yeah, it's like to say.
889
00:51:36.320 --> 00:51:38.880
The UI and spin beach ball, and then when it
890
00:51:38.880 --> 00:51:39.559
comes back.
891
00:51:39.719 --> 00:51:42.000
Why do they need to build a new view of that?
892
00:51:42.119 --> 00:51:42.320
You know?
893
00:51:42.840 --> 00:51:45.519
Yeah, that's the thing we trust you can you can
894
00:51:45.559 --> 00:51:48.159
be very subtle. I think it also indicates that possibly
895
00:51:48.199 --> 00:51:50.840
we will recover the veil. Doesn't give you a sense
896
00:51:50.840 --> 00:51:54.639
you're going to recover no veils, like call tech support. Yeah,
897
00:51:54.679 --> 00:51:55.360
what does this mean?
898
00:51:56.360 --> 00:51:57.679
It's gone it's gone wrong.
899
00:51:57.719 --> 00:52:00.559
We have pulled the sheet over the body drug.
900
00:52:02.440 --> 00:52:05.559
But it does it makes sense in a context where
901
00:52:05.599 --> 00:52:07.960
you do have to hit control R or F five
902
00:52:08.079 --> 00:52:10.719
or whatever to refresh the page to get it to reload.
903
00:52:10.760 --> 00:52:16.280
But once they've got that reconnect and heal process working
904
00:52:16.320 --> 00:52:17.760
properly and smoothly, then so.
905
00:52:17.719 --> 00:52:20.039
Anyway, I haven't checked it out in that NET nine,
906
00:52:20.079 --> 00:52:23.599
but I hear that it's a major feature upgrade of Blazer.
907
00:52:23.639 --> 00:52:26.599
There aren't very many.
908
00:52:25.840 --> 00:52:29.760
Fewer veils is a good one. Yeah, that'll make people
909
00:52:29.760 --> 00:52:30.719
happier without a doubt.
910
00:52:30.800 --> 00:52:31.000
Yeah.
911
00:52:31.079 --> 00:52:32.880
The other thing that I talk about at the end
912
00:52:32.920 --> 00:52:35.679
of the talk is is process. How we went from
913
00:52:35.960 --> 00:52:38.599
kind of s S A d M and prints to
914
00:52:39.400 --> 00:52:43.239
and all the waterfall things. And then there was extreme programming.
915
00:52:43.400 --> 00:52:47.559
But extreme programming generally only works when you've got Kent
916
00:52:47.639 --> 00:52:51.280
Beck and Ward Cunningham and extream programmers and you know,
917
00:52:52.199 --> 00:52:55.400
some of the greatest programmers who've ever lived, all in
918
00:52:55.440 --> 00:52:57.519
a room together, going how are we going to build this?
919
00:52:58.119 --> 00:53:00.440
So you can't do that on your average team of
920
00:53:00.599 --> 00:53:04.519
developers hired off of LinkedIn. And so then we got Agile,
921
00:53:04.800 --> 00:53:07.559
which was trying to make it so that we could
922
00:53:08.079 --> 00:53:11.000
where you get a scrum master and a product owner.
923
00:53:11.800 --> 00:53:15.960
And I've worked on multiple teams that called themselves agile
924
00:53:16.000 --> 00:53:18.880
and said they were doing scrum, that didn't have a
925
00:53:18.920 --> 00:53:21.880
scrum master, had a scrum master who was just a
926
00:53:21.920 --> 00:53:26.000
project manager anyway and wasn't really doing the scrum mastery things,
927
00:53:26.599 --> 00:53:29.800
and in an awful lot of cases, no product owner
928
00:53:29.960 --> 00:53:34.079
at all. Yeah, agile is is agile ish scrum butt.
929
00:53:36.000 --> 00:53:40.519
And yeah scrum, but we don't do this except.
930
00:53:41.800 --> 00:53:46.480
And then you see the scaled Agile framework for enterprise
931
00:53:46.519 --> 00:53:50.079
and the lean scaled Agile framework for enterprise, and the
932
00:53:50.159 --> 00:53:54.280
lean one is like for small to medium enterprises and
933
00:53:54.360 --> 00:53:58.519
it seems it's like the London Underground Tube map. It's
934
00:53:58.639 --> 00:54:03.280
just all the different things. And then when I'm sitting
935
00:54:03.519 --> 00:54:07.400
I'm sort of working on the new version of threat Badger,
936
00:54:07.440 --> 00:54:09.039
which is going to look exactly the same as the
937
00:54:09.039 --> 00:54:11.800
old version. I'm also working on another thing. I just
938
00:54:11.880 --> 00:54:16.960
use can ban board. I have a backlog column and
939
00:54:17.000 --> 00:54:20.639
a ready to do column, and a doing column and
940
00:54:20.679 --> 00:54:23.800
a done column when it's just me because I considered
941
00:54:23.840 --> 00:54:26.000
the testing and everything part of that, but you because
942
00:54:26.039 --> 00:54:31.880
it will put uat and everything in there. And the
943
00:54:32.519 --> 00:54:34.639
real issue that came along with scrum was you have
944
00:54:34.679 --> 00:54:38.559
your backlog grooming sessions, which are like weekly regardless of
945
00:54:38.800 --> 00:54:41.519
how many weeks you have in a sprint. Then you
946
00:54:41.559 --> 00:54:46.840
have your sprint planning session, and then you have your
947
00:54:46.880 --> 00:54:51.159
daily stand ups, which everyone tries to keep to fifteen minutes,
948
00:54:51.199 --> 00:54:53.159
but a lot of the time they run, you know,
949
00:54:53.239 --> 00:54:57.119
upwards of half an hour. And then you have your
950
00:54:57.599 --> 00:55:03.960
your retrospective and your demo and your sprint review. And
951
00:55:04.440 --> 00:55:08.320
if you're doing two week sprints, you've got ten days
952
00:55:08.920 --> 00:55:13.079
and you're spending like twenty percent of that in the
953
00:55:13.199 --> 00:55:16.719
various meetings, which means you're not building anything you're not
954
00:55:16.760 --> 00:55:21.159
shipping anything, you're not delivering anything, and where's the value.
955
00:55:21.440 --> 00:55:23.239
And if you are a small team of six or
956
00:55:23.280 --> 00:55:30.679
eight developers, and you are, if you're homogeneous, if you
957
00:55:30.760 --> 00:55:33.559
all know the domain and all the different technologies and
958
00:55:33.559 --> 00:55:35.519
all this sort of thing, then anyone can take any
959
00:55:35.679 --> 00:55:40.039
ticket from the ready to do column and say I'm
960
00:55:40.039 --> 00:55:43.039
doing this, and you can prioritize them just by moving
961
00:55:43.039 --> 00:55:46.639
them up and down. And you don't get into this
962
00:55:46.719 --> 00:55:51.400
thing and ah story points and T shirt sizes and
963
00:55:51.440 --> 00:55:56.400
all that stuff, and it's just kind of you don't
964
00:55:56.440 --> 00:55:59.559
have to do all that stuff. You can just put
965
00:55:59.599 --> 00:56:01.719
a board up and put some stories on it and
966
00:56:01.760 --> 00:56:05.519
move them across and just keep shipping and delivering.
967
00:56:05.639 --> 00:56:08.400
One step up from a notepad totally pretty much.
968
00:56:08.480 --> 00:56:09.280
Yeah, you know.
969
00:56:09.360 --> 00:56:10.960
When you mentioned the cam member in the first thing,
970
00:56:11.280 --> 00:56:13.400
it's just a way to visualize where we're stuck.
971
00:56:13.559 --> 00:56:13.920
That's right.
972
00:56:14.199 --> 00:56:15.920
That everybody can see that. You don't have to have
973
00:56:15.960 --> 00:56:18.280
a meeting. Nobody has to memorize, like you see it
974
00:56:18.400 --> 00:56:20.760
every day and you see it when it don.
975
00:56:20.719 --> 00:56:24.400
Sticks yes, and you know people can kind of go,
976
00:56:24.679 --> 00:56:26.599
that was there yesterday, why is it still there today?
977
00:56:27.280 --> 00:56:29.719
I'll go and ask him rather than having a stand up.
978
00:56:30.119 --> 00:56:33.360
The idea that you set aside fifteen minutes in the morning,
979
00:56:33.480 --> 00:56:35.519
I think it appeals to developers is like, all right,
980
00:56:35.519 --> 00:56:37.880
so I have to talk to people for fifteen minutes,
981
00:56:37.920 --> 00:56:43.119
but then yeah, I get th headphones on, getting motivated
982
00:56:43.199 --> 00:56:47.079
to be a low Yeah, it's another it's that developer
983
00:56:47.119 --> 00:56:47.760
experience thing.
984
00:56:47.800 --> 00:56:48.039
Again.
985
00:56:48.119 --> 00:56:51.320
We don't like talking to each other, so just contain
986
00:56:51.400 --> 00:56:54.039
it to work things. But no, you should be getting.
987
00:56:53.760 --> 00:56:56.159
Out of the way, have a couple of cups of coffee.
988
00:56:57.519 --> 00:56:59.519
Show has just been about containers, right, It's just that.
989
00:57:02.320 --> 00:57:07.400
Can contain the complexity. So yeah, So, like I say,
990
00:57:07.440 --> 00:57:12.480
I'm going to be doing that that talk. That's my
991
00:57:12.480 --> 00:57:15.920
my sort of tech talk for the next year at least.
992
00:57:17.639 --> 00:57:20.840
And oh, I would like to shout out Alex Russell.
993
00:57:22.320 --> 00:57:24.960
I think slightly late is his sort of handle on
994
00:57:25.119 --> 00:57:28.519
various media and everything. So and he worked on the
995
00:57:28.559 --> 00:57:31.159
Chrome browser for a long time, on the jamscript, run
996
00:57:31.159 --> 00:57:34.639
time v eight, that sort of thing. And he is
997
00:57:35.320 --> 00:57:38.440
like the little Dutch boy with his finger in the
998
00:57:38.519 --> 00:57:42.719
in the dam saying please please stop using all these
999
00:57:42.800 --> 00:57:46.360
JavaScript frameworks and everything. And so I was some of
1000
00:57:46.400 --> 00:57:49.000
the inspiration for the talk came from reading his blog
1001
00:57:49.000 --> 00:57:51.079
posts as well, so shout out to him.
1002
00:57:51.360 --> 00:57:53.280
Great infrequently noted is his blood.
1003
00:57:53.320 --> 00:57:54.079
There we go, that's the one.
1004
00:57:54.159 --> 00:57:56.280
Yeah, yeah, I'll throw it, including the show notes. I've
1005
00:57:56.280 --> 00:57:58.679
read it before. He's he is quite brilliant.
1006
00:57:58.920 --> 00:58:00.679
He is. He is a very very smart guy and
1007
00:58:00.719 --> 00:58:03.440
we should listen to him.
1008
00:58:03.519 --> 00:58:08.360
Not wrong. Yeah, so you got this talk. Where are
1009
00:58:08.400 --> 00:58:11.400
you going to be delivering that in the upcoming months?
1010
00:58:11.639 --> 00:58:14.119
So next year it's probably going to be at the
1011
00:58:14.239 --> 00:58:19.960
NDC conferences, go to conferences possibly dev Ox. DeVos have
1012
00:58:20.039 --> 00:58:23.559
started asking me to come and do things now because
1013
00:58:23.559 --> 00:58:26.320
I've been doing all these you know how JavaScript happened
1014
00:58:26.320 --> 00:58:29.440
and the Albatross project and programming as great as mistakes,
1015
00:58:29.800 --> 00:58:32.760
so they're not tech specific and so I'm getting to
1016
00:58:32.800 --> 00:58:36.239
go and do other conferences and meet entirely new audiences,
1017
00:58:36.280 --> 00:58:39.760
which is wonderful. One. I'm really enjoying it. And also
1018
00:58:39.800 --> 00:58:42.360
my kids are at that age now where I can
1019
00:58:43.679 --> 00:58:47.039
do more traveling and speaking engagements, and I'm really looking
1020
00:58:47.039 --> 00:58:48.159
forward to getting into it.
1021
00:58:48.280 --> 00:58:52.719
Yeah, there's a couple of conferences in Sweden in Stockholm
1022
00:58:52.840 --> 00:58:56.280
that happened every year. You have Sam and sweet Toob.
1023
00:58:56.719 --> 00:58:59.400
Yes, i will definitely try and get to dev some
1024
00:59:01.440 --> 00:59:03.519
I've done that a couple of times. That's always a
1025
00:59:03.559 --> 00:59:06.360
good conference. But yes, if anyone's listening to this and
1026
00:59:06.400 --> 00:59:11.079
would like me to come to your your massive conference
1027
00:59:11.119 --> 00:59:13.920
with three thousand attendees, but even if you would just
1028
00:59:14.000 --> 00:59:16.079
like me to pop over and talk to a meetup
1029
00:59:16.159 --> 00:59:20.000
or a user group or something, then get in touch
1030
00:59:20.880 --> 00:59:22.280
and we'll see what we can do.
1031
00:59:22.519 --> 00:59:25.400
Check out the render lads link is on the show notes.
1032
00:59:25.519 --> 00:59:28.840
Just grab a busfair a sandwich in a hostel.
1033
00:59:29.079 --> 00:59:33.119
Yeah, that'll do me. Wake outch have base will travel.
1034
00:59:33.400 --> 00:59:34.119
Yeah, there you go.
1035
00:59:34.719 --> 00:59:37.079
Mark. It's always a pleasure talking to you. You always
1036
00:59:37.480 --> 00:59:39.960
bring something interesting to the table and this is no difference.
1037
00:59:39.960 --> 00:59:42.239
So thank you, thank you for having me on again.
1038
00:59:42.280 --> 00:59:43.960
It's it's really great talking with you guys.
1039
00:59:44.000 --> 00:59:46.599
All right, we'll talk to you next time. I'm dot
1040
00:59:46.679 --> 01:00:09.800
net Rucks. Dot net Rocks is brought to you by
1041
01:00:09.880 --> 01:00:14.559
Franklin's Net and produced by Pop Studios, a full service audio,
1042
01:00:14.679 --> 01:00:19.119
video and post production facility located physically in New London, Connecticut,
1043
01:00:19.360 --> 01:00:24.159
and of course in the cloud online at pwop dot com.
1044
01:00:24.360 --> 01:00:26.480
Visit our website at d O t N E t
1045
01:00:26.719 --> 01:00:30.760
R O c k S dot com for RSS feeds, downloads,
1046
01:00:30.880 --> 01:00:34.599
mobile apps, comments, and access to the full archives going
1047
01:00:34.599 --> 01:00:38.000
back to show number one, recorded in September two thousand
1048
01:00:38.039 --> 01:00:40.679
and two. And make sure you check out our sponsors.
1049
01:00:40.840 --> 01:00:43.840
They keep us in business. Now go write some code.
1050
01:00:44.199 --> 01:01:01.239
See you next time you got jed middle vansported the
1051
01:01:01.679 --> 01:01:01.719
s
1
00:00:01.080 --> 00:00:04.799
How'd you like to listen to dot NetRocks with no ads? Easy?
2
00:00:05.360 --> 00:00:08.560
Become a patron for just five dollars a month. You
3
00:00:08.599 --> 00:00:11.320
get access to a private RSS feed where all the
4
00:00:11.359 --> 00:00:14.560
shows have no ads. Twenty dollars a month, we'll get
5
00:00:14.599 --> 00:00:18.440
you that and a special dot NetRocks patron mug. Sign
6
00:00:18.519 --> 00:00:22.120
up now at Patreon dot dot NetRocks dot com.
7
00:00:22.160 --> 00:00:24.679
Hey Carl and Richard here with your twenty twenty four
8
00:00:25.000 --> 00:00:26.000
DC schedule.
9
00:00:26.320 --> 00:00:29.640
We'll be at as many NDC conferences as possible this year,
10
00:00:29.960 --> 00:00:33.200
and you should consider attending no matter what. The Copenhagen
11
00:00:33.240 --> 00:00:37.640
Developers Festival happens August twenty sixth through the thirtieth. Tickets
12
00:00:37.679 --> 00:00:40.719
at Cphdevfest dot com.
13
00:00:40.880 --> 00:00:44.719
Ndcporto is happening October fourteenth through the eighteenth. Tickets at
14
00:00:44.799 --> 00:00:46.600
Ndcporto dot com.
15
00:00:46.600 --> 00:01:03.119
We'll see you there, we hope. Welcome back. It's dot
16
00:01:03.200 --> 00:01:06.120
net Rox. I'm Carl Franklin and Amateur Campbell and we're
17
00:01:06.159 --> 00:01:08.359
here with Mark Rendell. We're going to introduce him in
18
00:01:08.400 --> 00:01:10.280
a minute, but first I want to check him in
19
00:01:10.319 --> 00:01:12.799
by Buddy Richard. You ready for dev Intersection Well, and
20
00:01:12.920 --> 00:01:13.719
this show publishes.
21
00:01:13.760 --> 00:01:15.400
We will be most of the way through the show,
22
00:01:15.439 --> 00:01:17.519
I think we'll be close to doing like the closing
23
00:01:17.599 --> 00:01:22.200
session and stuff as we usually do. Right, Yeah, yeah, yeah, No,
24
00:01:22.280 --> 00:01:24.239
we got our got our act together, got a new
25
00:01:24.400 --> 00:01:29.200
version of a generative AI show, which has been an
26
00:01:29.200 --> 00:01:31.439
adventure to put together. Boy boy, there are a lot
27
00:01:31.439 --> 00:01:34.920
of AI conferences right now. Yeah, I know it's little nuts.
28
00:01:34.719 --> 00:01:38.640
But still dev intersection with all your favorite Microsoft people
29
00:01:38.799 --> 00:01:41.000
and YE speakers.
30
00:01:40.519 --> 00:01:42.719
The Hanselman's and the Hunters and all that good stuff.
31
00:01:42.760 --> 00:01:42.920
Yeah.
32
00:01:42.959 --> 00:01:45.760
The Scott's, Yeah, the major Scott and the lesser Scott's.
33
00:01:46.879 --> 00:01:49.400
They're all vps. Now I mean this, there's one Guthrie
34
00:01:49.400 --> 00:01:52.400
but he's not there. But you know he's on sabbatical.
35
00:01:52.799 --> 00:01:53.760
What's up with that? Yeah?
36
00:01:53.760 --> 00:01:56.040
What is that with that? What does Scott Guphery do
37
00:01:56.079 --> 00:01:58.760
on sabbatical? Does he read tech manuals? Does he create
38
00:01:58.799 --> 00:02:01.959
a few more patents? No, he's got teenage boys. I
39
00:02:02.000 --> 00:02:04.519
think he's got other things to worry about. Yeah, that's good.
40
00:02:04.959 --> 00:02:08.439
All right, Well let's jump into better note of framework.
41
00:02:08.560 --> 00:02:09.560
Roll the crazy music.
42
00:02:09.680 --> 00:02:18.800
Awesome? Alight, do you go?
43
00:02:19.039 --> 00:02:22.000
So this was our clickbait story on security this week.
44
00:02:22.360 --> 00:02:23.840
But it's not clickbait if it's true.
45
00:02:24.120 --> 00:02:25.560
Yeah, I know, but that's what we call him.
46
00:02:25.599 --> 00:02:27.280
We called it.
47
00:02:27.400 --> 00:02:29.759
The last story is always the one people want to
48
00:02:29.800 --> 00:02:32.800
hear about the most, you know, so we let them
49
00:02:32.840 --> 00:02:35.039
slog through all the other stories and then we spring
50
00:02:35.039 --> 00:02:37.000
it on them. So here it is. You're you're not
51
00:02:37.000 --> 00:02:42.639
going to believe this. Researchers find sequel injection to bypass
52
00:02:42.800 --> 00:02:45.159
Airport TSA security checks.
53
00:02:45.360 --> 00:02:45.639
Nice.
54
00:02:46.000 --> 00:02:48.840
So what this means is there is a vulnerability where
55
00:02:49.360 --> 00:02:53.759
somebody could use SEQL injection when they bought a ticket,
56
00:02:54.159 --> 00:02:57.560
and that ticket could give them status as crew, right,
57
00:02:57.759 --> 00:03:01.080
and then they could walk right on, go right up
58
00:03:01.120 --> 00:03:05.159
into the you know, the bulkhead seats or whatever, sit
59
00:03:05.280 --> 00:03:10.960
down and enjoy all of the crew you know amenities.
60
00:03:11.120 --> 00:03:13.280
Not that there's not many of crew amenities, but yeah,
61
00:03:13.280 --> 00:03:15.080
you're definitely gonna have access to more seats.
62
00:03:15.280 --> 00:03:15.520
Yeah.
63
00:03:15.599 --> 00:03:18.680
The bigger one here is that you know, you can
64
00:03:18.719 --> 00:03:22.039
go to the crew line at the TSA. Yeah, yeah,
65
00:03:22.199 --> 00:03:25.159
and they that's a very cursorly view. And you don't
66
00:03:25.199 --> 00:03:27.400
have to be dressed as crew, I mean, you don't
67
00:03:27.400 --> 00:03:30.520
have to be working on that flight, right, but if
68
00:03:30.560 --> 00:03:32.800
you are crew, you get a special pass and you
69
00:03:32.879 --> 00:03:36.840
get all sorts of amenities. Yeah, interesting. Yeah, they normally
70
00:03:36.879 --> 00:03:38.919
check ID, So I wonder if you actually try to
71
00:03:38.960 --> 00:03:42.080
do that, if if when you got to the line,
72
00:03:42.080 --> 00:03:43.039
they're like, where's your ID?
73
00:03:43.319 --> 00:03:46.680
Now that's just you know, raining on my parade here, Richard.
74
00:03:46.840 --> 00:03:49.960
I still love that that, you know, sequel injection attacks.
75
00:03:50.039 --> 00:03:52.759
Yeah, sequel injection. I thought we were done with this.
76
00:03:53.120 --> 00:03:53.319
Nah.
77
00:03:53.599 --> 00:03:55.960
No, still like it's number one or number two in
78
00:03:55.960 --> 00:03:56.960
the O ausp tense.
79
00:03:57.120 --> 00:04:00.159
Oh of course, yeah, yeah, still still it was it's
80
00:04:00.159 --> 00:04:02.080
like sixteen years ago we learned about this.
81
00:04:02.360 --> 00:04:05.159
Yeah, yeah, it's been it's been decades, and it's just
82
00:04:05.199 --> 00:04:09.599
a you know, sanitize your inputs. Bobby Tables is out there.
83
00:04:10.000 --> 00:04:11.800
And Bobby Tables you got to watch out for him.
84
00:04:11.800 --> 00:04:13.639
All right, That's what I got. Who's talking to us today?
85
00:04:13.680 --> 00:04:16.120
Richard grabbed a comment off a show eighteen eighty eight,
86
00:04:16.160 --> 00:04:18.360
the one we did with Steve Smith talking about modular monoliths,
87
00:04:18.399 --> 00:04:20.360
and I know we're going to talk about simplicity with Mark,
88
00:04:20.439 --> 00:04:24.040
So I thought this conversation just tied in so well
89
00:04:24.079 --> 00:04:27.439
with that whole problem space, because that's the show that
90
00:04:28.000 --> 00:04:32.439
Smith did focused on, you know, simplifying a monolith, tearing
91
00:04:32.519 --> 00:04:35.319
out pieces to optimize them. That kind of thing that
92
00:04:35.399 --> 00:04:38.439
whole idea that you don't have to go totally micro services.
93
00:04:38.439 --> 00:04:40.240
You can just do what you need to do. And
94
00:04:40.279 --> 00:04:42.399
Mark had this comedy. He said it was a different Mark,
95
00:04:42.720 --> 00:04:45.160
not our gas card. He said. From an application level,
96
00:04:45.160 --> 00:04:47.040
I agree with Steve's point of view that we to
97
00:04:47.079 --> 00:04:49.240
start with a monolith and then split off whatever needs
98
00:04:49.240 --> 00:04:51.879
to be spun into its own services as the need arises.
99
00:04:52.079 --> 00:04:54.160
From a hosting point of view, though the reality is
100
00:04:54.199 --> 00:04:57.879
most businesses unfortunately, when you start down one technical direction,
101
00:04:58.040 --> 00:05:00.839
regardless of what it is, you're likely to keep going
102
00:05:00.920 --> 00:05:05.720
down that forever because temporary solutions become permanently yep. For example,
103
00:05:06.160 --> 00:05:08.720
moving from something like app service to Kubernetes is a
104
00:05:08.800 --> 00:05:11.959
huge jump and it'll be hard to get business buy
105
00:05:12.040 --> 00:05:14.639
in for what the need arises from it. Yeah, and
106
00:05:14.680 --> 00:05:16.360
I found you can use something like Kubernetes as a
107
00:05:16.399 --> 00:05:19.319
service from the onset, but with very minimal setup thanks
108
00:05:19.360 --> 00:05:22.879
to manage the services like as your Kubernetes services, which
109
00:05:22.879 --> 00:05:25.439
gives you the flexibility to about resilience and scalability and
110
00:05:25.439 --> 00:05:28.040
everything else as the need arises without having to overhaul
111
00:05:28.079 --> 00:05:31.040
the entire system architecture. And I appreciate the thinking Mark,
112
00:05:31.079 --> 00:05:34.000
because my workaround would be to stay in app service,
113
00:05:34.240 --> 00:05:38.600
but then to spin off the problem service as a
114
00:05:39.079 --> 00:05:41.399
logic app right right, that just you know, make it
115
00:05:41.399 --> 00:05:43.959
a servilest component. It just gets called the same and
116
00:05:44.000 --> 00:05:46.720
you can keep it in the security context. But I'm
117
00:05:46.759 --> 00:05:48.199
not going to argue with you about moving from app
118
00:05:48.199 --> 00:05:51.399
service to Kubernetes. That's a huge lift. But that's the
119
00:05:52.079 --> 00:05:55.480
all micro services mantras to do that huge lift, and
120
00:05:55.560 --> 00:05:57.000
I don't think people want to do it. So the
121
00:05:57.040 --> 00:05:59.720
fact that we can spin off bits into servilest components
122
00:06:00.040 --> 00:06:02.959
and deal with their performance issues or their behavior issues
123
00:06:03.000 --> 00:06:06.399
separately is the simple workaround rather than looking at the
124
00:06:06.399 --> 00:06:08.120
big wall of climbing up Kubernetties.
125
00:06:08.199 --> 00:06:10.720
Yeah, that's why we have modular monoliths, so you can
126
00:06:10.759 --> 00:06:12.759
break off the pieces and need broken off.
127
00:06:12.680 --> 00:06:15.040
Right, and you could break them off in less painful ways. Yeah,
128
00:06:15.040 --> 00:06:16.319
I mean, you could even spin it up as a
129
00:06:16.319 --> 00:06:17.800
separate app service, but I wouldn't.
130
00:06:17.959 --> 00:06:18.839
Nope, I wouldn't either.
131
00:06:20.079 --> 00:06:21.720
So Mark, thank you so much for your comment, and
132
00:06:21.800 --> 00:06:23.240
a copy of music co Buy is on its way
133
00:06:23.240 --> 00:06:24.639
to you. And if you'd like a copy of music Code,
134
00:06:24.720 --> 00:06:26.399
I write a comment on the website at dot at
135
00:06:26.480 --> 00:06:28.800
rocks dot com or on the facebooks. We publish every
136
00:06:28.800 --> 00:06:30.279
show there, and if you comment there and everyone on
137
00:06:30.319 --> 00:06:32.199
the show, we'll send you copy of music.
138
00:06:31.839 --> 00:06:34.920
To go buy. And you can follow us on x
139
00:06:35.040 --> 00:06:38.160
Twitter if you want. That's we've been there for years.
140
00:06:38.160 --> 00:06:41.079
But the cool kids are hanging out at mastadon. I'm
141
00:06:41.160 --> 00:06:44.000
at Carl Franklin at tech Hubs Social.
142
00:06:43.680 --> 00:06:45.759
And I'm Rich Campbell at macedon dot social.
143
00:06:45.839 --> 00:06:47.600
Send us a tute. It's another way that you can
144
00:06:47.639 --> 00:06:50.480
get a copy of music to code buy. Absolutely all right,
145
00:06:50.600 --> 00:06:55.040
so let's bring back Rendel Mark Rendel. He is one
146
00:06:55.040 --> 00:06:58.199
of our favorite guests. He's the founder of Rendall Labs,
147
00:06:58.279 --> 00:07:02.000
which provides consulting services and workshops to dot net development
148
00:07:02.040 --> 00:07:07.199
teams across all industries. His particular obsessions are API design
149
00:07:07.240 --> 00:07:13.279
and development, performance observability, and code based modernization. He also
150
00:07:13.360 --> 00:07:16.560
uses skills acquired during a few years as a professional
151
00:07:16.600 --> 00:07:20.519
stand up comic to deliver entertaining and informative talks at
152
00:07:20.560 --> 00:07:24.079
conferences around the world, and recently learned to play bass
153
00:07:24.199 --> 00:07:27.879
so he could join tech parity band The Line Breakers.
154
00:07:28.199 --> 00:07:29.839
Hey dude, hi man.
155
00:07:29.720 --> 00:07:33.040
Congratulations, Welcome to the world of music for no money.
156
00:07:33.279 --> 00:07:38.279
Thank you, thank you so much. I am loving it.
157
00:07:38.279 --> 00:07:40.240
It's been a while, It has been a while.
158
00:07:40.319 --> 00:07:42.600
You did the parity band thing for a while there, Carl.
159
00:07:42.639 --> 00:07:44.800
But did you actually get into trouble with that? Was
160
00:07:44.839 --> 00:07:48.360
that back before parody was like accept the use? Oh okay,
161
00:07:49.160 --> 00:07:51.160
well yeah, here's the story.
162
00:07:51.199 --> 00:07:56.680
So Don Box and Ted Pattison and George Bullock and
163
00:07:56.959 --> 00:08:00.240
a couple other people started this band called ban On
164
00:08:00.240 --> 00:08:04.399
the Runtime, and band On the Runtime was parodies of
165
00:08:04.480 --> 00:08:10.120
C sharp to well known music, right, so fifty ways
166
00:08:10.160 --> 00:08:14.439
to send a message, you know, that kind of stuff, right,
167
00:08:15.120 --> 00:08:19.360
And so the Microsoft lawyers had a problem with it
168
00:08:19.439 --> 00:08:25.720
because parody law says you can parody a song by
169
00:08:25.920 --> 00:08:28.199
you know, changing the words like weird al does like
170
00:08:28.639 --> 00:08:32.080
because I'm fat, I'm fat ham on hole week, right,
171
00:08:33.039 --> 00:08:37.600
But you can't parody something like C sharp using a
172
00:08:37.679 --> 00:08:41.320
song that's not covered by parody law. So you can't
173
00:08:41.399 --> 00:08:45.279
change the words to parody something else. We weren't actually
174
00:08:45.279 --> 00:08:48.120
poking fun at the songs. We're using the songs to
175
00:08:48.159 --> 00:08:51.679
poke fun at dot net. And they, the lawyers kind
176
00:08:51.679 --> 00:08:55.360
of put the kabash. It seems very sus well, but
177
00:08:55.399 --> 00:08:57.320
the law is the law. So they basically went to
178
00:08:57.360 --> 00:08:59.600
Paul Simon, for example, and they said how much would
179
00:08:59.639 --> 00:09:02.440
it cost for the band to play you know this
180
00:09:02.840 --> 00:09:05.879
at a you know, Microsoft event, and he wanted like
181
00:09:05.919 --> 00:09:08.879
two hundred and fifty grand. So that's the law. Yeah,
182
00:09:08.919 --> 00:09:09.840
you have to get permission.
183
00:09:10.440 --> 00:09:12.759
The law is subject to interpretation. I think those lawyers
184
00:09:12.799 --> 00:09:14.039
interpreted it very oddly.
185
00:09:14.600 --> 00:09:17.519
Microsoft lawyers interpret things as badly as possible. Don't.
186
00:09:17.559 --> 00:09:19.559
But you know, they are Microsoft. And if it was
187
00:09:19.720 --> 00:09:22.360
just me doing it, who cares? Because go ahead, I
188
00:09:22.360 --> 00:09:24.440
don't have two hundred and fifty thousand dollars, you know,
189
00:09:24.879 --> 00:09:27.399
but Microsoft, Yeah, might be a problem.
190
00:09:27.480 --> 00:09:30.120
Yeah, And you know, all we are doing. We provide
191
00:09:30.159 --> 00:09:33.840
the entertainment conference parties and it's like there's a couple
192
00:09:33.960 --> 00:09:36.559
hundred people there and they're all drunk. And yeah, we
193
00:09:36.639 --> 00:09:42.080
don't parody any specic. The closest we have to parodying
194
00:09:42.080 --> 00:09:46.600
a specific technology I think is JavaScript, which was one
195
00:09:47.279 --> 00:09:51.639
in itself, and JavaScript isn't even a language, it's it's
196
00:09:51.679 --> 00:09:54.840
a well, it's a standard. I suppose I was going
197
00:09:54.919 --> 00:09:56.279
to say something meaner, but I went.
198
00:09:58.960 --> 00:09:59.159
But no.
199
00:09:59.279 --> 00:10:03.000
Line Breakers their bassist used to be Don Sign really,
200
00:10:03.559 --> 00:10:07.919
creator of F sharp and then he had to he
201
00:10:07.960 --> 00:10:12.720
got pulled into gitub next, the kind of Microsoft Research
202
00:10:12.840 --> 00:10:16.600
equivalent at gitub, but he was still at Microsoft Research
203
00:10:16.639 --> 00:10:20.000
and still sort of the benevolent dictator for life of
204
00:10:20.240 --> 00:10:23.600
f sharp and he just could not fit in conferences
205
00:10:23.600 --> 00:10:26.120
as well as all of that, and so then they
206
00:10:26.120 --> 00:10:30.559
were without bassist. And then I said to Dylan Beattie,
207
00:10:31.480 --> 00:10:35.440
how hard is bass because he's certainly got four strings?
208
00:10:36.799 --> 00:10:37.279
Can it be?
209
00:10:37.799 --> 00:10:41.240
And he went as, actually not, it's much much easier
210
00:10:41.279 --> 00:10:44.000
than guitar, And so he lent me one, and I
211
00:10:44.039 --> 00:10:46.879
took it home and I plugged in, plugged it into
212
00:10:46.919 --> 00:10:50.600
my computer with a sort of six point five to
213
00:10:51.000 --> 00:10:56.159
USB cable, and got Rocksmith Plus and tried playing a
214
00:10:56.200 --> 00:11:01.559
few things, and I think within five minutes of sitting down,
215
00:11:01.679 --> 00:11:05.720
I had learned to play seven nation army okay. And
216
00:11:05.799 --> 00:11:07.919
so it's not I mean, it's not an easy instrument.
217
00:11:07.919 --> 00:11:09.960
And if there are any basis out there going oh no,
218
00:11:09.960 --> 00:11:13.000
not this again, it is definitely not an easy instrument.
219
00:11:13.039 --> 00:11:15.440
I've got one to like jazz and funk and disco
220
00:11:15.639 --> 00:11:19.399
and those sorts of things, but the learning curve is
221
00:11:19.519 --> 00:11:23.120
extremely shallow at first, so it's very very encouraging.
222
00:11:23.559 --> 00:11:26.559
Yeah, right, you can play Smoke on the Water just
223
00:11:26.600 --> 00:11:27.120
by going but.
224
00:11:28.480 --> 00:11:31.879
Club but chugging basslines.
225
00:11:32.279 --> 00:11:35.399
However, of them bass you know, it's easier because you
226
00:11:35.399 --> 00:11:38.360
don't have chords and and all of that, but it
227
00:11:38.440 --> 00:11:41.240
is more difficult because to play bass really well you
228
00:11:41.320 --> 00:11:43.279
have to have a great tone by the way, yes,
229
00:11:43.480 --> 00:11:47.039
and also you have to have saw like bass player.
230
00:11:47.159 --> 00:11:50.200
You just to be able to play a couple of notes,
231
00:11:50.440 --> 00:11:53.799
isn't playing bass? You know, you really have to. It
232
00:11:53.879 --> 00:11:56.519
takes a while before before the funk or the saul
233
00:11:56.600 --> 00:11:57.080
comes out.
234
00:11:57.240 --> 00:12:00.759
Yeah, and just getting in the pocket like right on
235
00:12:00.879 --> 00:12:03.879
the b and just giving tone to the drums.
236
00:12:04.159 --> 00:12:06.960
But you don't have chords, but they don't have chords.
237
00:12:07.120 --> 00:12:09.600
That's your jack app story and.
238
00:12:10.000 --> 00:12:11.039
Seeking nobody as.
239
00:12:13.840 --> 00:12:18.279
There are a few very extraordinary bases that nine essential.
240
00:12:18.480 --> 00:12:19.919
So what's on your mind? Randall?
241
00:12:20.279 --> 00:12:21.000
What have you been up to?
242
00:12:21.240 --> 00:12:25.960
I was at the Copenhagen Developer Festival last week. Rich
243
00:12:26.120 --> 00:12:31.840
was there and it was absolutely brilliant and I had
244
00:12:31.960 --> 00:12:34.720
a new locknote talk that I did which is called
245
00:12:34.759 --> 00:12:37.399
the Albatross Project. But they also asked me to do
246
00:12:37.600 --> 00:12:41.679
the free meet up the Tuesday night before the festival started.
247
00:12:42.960 --> 00:12:47.120
And I had a talk that i'd submitted for Copenhagen
248
00:12:47.159 --> 00:12:50.519
that they rejected because I just do lockmotes for in
249
00:12:50.600 --> 00:12:52.919
DC now apparently, but they said, you can do that
250
00:12:52.960 --> 00:12:54.799
talk at the meetup if you want. And the talk
251
00:12:54.960 --> 00:12:59.120
was called how simple is as simple as possible? And
252
00:13:00.840 --> 00:13:04.799
this is both of these talks, they're related. So the
253
00:13:04.919 --> 00:13:08.360
talk is a sort of technical can you do this?
254
00:13:08.440 --> 00:13:10.200
Can you do that? How can you keep things simple?
255
00:13:10.279 --> 00:13:13.720
And then the Albatross project is the opposite of the
256
00:13:13.720 --> 00:13:17.919
Phoenix project nice, and it's about a development director who
257
00:13:18.120 --> 00:13:20.720
doesn't deliver anything for thirty five years because he keeps
258
00:13:20.720 --> 00:13:25.120
trying to stay on the cutting edge. And yeah, and
259
00:13:25.200 --> 00:13:29.279
I just after I did the talk version of it,
260
00:13:30.440 --> 00:13:34.080
at which there was one slide where the slide popped
261
00:13:34.159 --> 00:13:36.240
up on the screen and somebody immediately got up and
262
00:13:36.279 --> 00:13:36.799
walked out.
263
00:13:38.519 --> 00:13:39.799
He knew it was a right slide.
264
00:13:39.879 --> 00:13:41.440
So I'm kind of like, yeah, this is working.
265
00:13:41.799 --> 00:13:45.159
You don't think like his wife was in labor or
266
00:13:45.799 --> 00:13:46.080
you know.
267
00:13:46.320 --> 00:13:55.120
Is no probably a React developer, Ora Angular or View
268
00:13:55.159 --> 00:13:58.080
because those were the three there were three JavaScript framework
269
00:13:58.120 --> 00:13:59.039
logos on the slide.
270
00:13:59.200 --> 00:14:00.679
Anything where you're like, hey, where you go?
271
00:14:01.440 --> 00:14:03.360
I hadn't said anything because we were actually having a
272
00:14:03.360 --> 00:14:07.600
technical issue at the time. And yeah, I mean it
273
00:14:07.639 --> 00:14:09.639
is possible it was the technical issue that you sent
274
00:14:09.720 --> 00:14:11.000
him out there, just kind of like, I'm not waiting
275
00:14:11.039 --> 00:14:13.120
around while these people turn the screen back on or whatever.
276
00:14:13.480 --> 00:14:18.679
But yes, it's I kind of I feel like I
277
00:14:18.720 --> 00:14:24.840
owe people an apology to a certain extent, because in
278
00:14:24.919 --> 00:14:27.759
my forties I did a lot of bouncing around the
279
00:14:27.799 --> 00:14:30.039
world telling people how to contain the rize things and
280
00:14:30.080 --> 00:14:33.519
do micro services and event driven things and Kubernettes and
281
00:14:33.519 --> 00:14:38.440
all that sort of stuff. And now in my fifties,
282
00:14:38.840 --> 00:14:44.360
I'm kind of wishing most people would stop. And so
283
00:14:45.120 --> 00:14:47.840
that's my mission at the moment, and that's I'm going
284
00:14:47.879 --> 00:14:50.159
to be trying to get this talk into as many
285
00:14:50.200 --> 00:14:53.840
things as possible next year and start pushing at it
286
00:14:55.159 --> 00:15:02.600
because we've just made everything, everything just so complicated in
287
00:15:02.639 --> 00:15:08.759
the name of efficiency, in the name of standardization.
288
00:15:08.320 --> 00:15:11.759
Potential future scalability. That's the big one.
289
00:15:12.000 --> 00:15:18.240
Yes, absolutely, But also you hear the term DX developer
290
00:15:18.279 --> 00:15:23.480
experience and developer experience, I feel like that should be
291
00:15:23.480 --> 00:15:26.519
an important thing in terms of your ID, your code editor,
292
00:15:27.559 --> 00:15:31.559
your command line tooling, that sort of thing. But if
293
00:15:31.600 --> 00:15:36.120
you're getting to a point where the improved developer experience
294
00:15:36.200 --> 00:15:39.320
that you get from sort of CICD and microservice deployments
295
00:15:39.360 --> 00:15:41.759
and rollouts and all that sort of thing is actually
296
00:15:41.799 --> 00:15:44.639
getting in the way of delivering a good user experience
297
00:15:45.159 --> 00:15:49.919
because of the increased latencies that you get or the
298
00:15:51.399 --> 00:15:55.679
fifteen megabytes of JavaScript that a webpage has to download
299
00:15:55.759 --> 00:16:00.639
before it becomes interactive. Then there's some thing wrong with that.
300
00:16:00.679 --> 00:16:03.759
We have had priorities completely the wrong way round.
301
00:16:04.159 --> 00:16:04.360
Yeah.
302
00:16:04.360 --> 00:16:06.000
One of the ways to keep that stuff fast is
303
00:16:06.000 --> 00:16:07.000
to keep it simple.
304
00:16:06.879 --> 00:16:08.679
Absolutely, Yeah.
305
00:16:08.799 --> 00:16:12.080
And so yeah, it's been my mantra, you know, do
306
00:16:12.159 --> 00:16:15.440
the simplest thing that works ever since I got started
307
00:16:15.480 --> 00:16:19.360
in software. That's been you know, stapled to my forehead.
308
00:16:20.000 --> 00:16:23.279
Yeah. I wish I could say the same of myself,
309
00:16:23.440 --> 00:16:28.080
but at least, you know, I'm realizing it now and
310
00:16:28.559 --> 00:16:29.840
attempting to share some of that.
311
00:16:29.879 --> 00:16:31.519
Well. I think part of this is we wanted to
312
00:16:31.559 --> 00:16:34.919
believe that if we, you know, embedded ourselves in this architecture,
313
00:16:34.960 --> 00:16:38.240
like if we understood all the pieces that gradually software
314
00:16:38.279 --> 00:16:41.840
would be easier in that space. I just don't feel
315
00:16:41.840 --> 00:16:42.960
like it ever got there.
316
00:16:43.279 --> 00:16:49.000
No, No, I mean I think it did at a
317
00:16:49.039 --> 00:16:54.200
particular point. I think espn net mvc pretty simple, was
318
00:16:54.240 --> 00:16:58.559
relatively simple, and the idea of the pipeline. So what
319
00:16:58.639 --> 00:17:02.759
we kind of picked off with o win based on
320
00:17:02.840 --> 00:17:08.680
things like Python WSGI and Ruby's rack middleware, and then
321
00:17:08.720 --> 00:17:12.440
o win obviously kind of got rolled into asp net
322
00:17:12.480 --> 00:17:15.519
core and that was nice and simple. It was like,
323
00:17:15.559 --> 00:17:17.519
do this, then do this, then do this, then do this.
324
00:17:19.000 --> 00:17:23.640
But then I think the problem is that as developers
325
00:17:24.160 --> 00:17:28.119
we think that if we're not changing the way we
326
00:17:28.160 --> 00:17:31.480
do things, if we're not evolving, then we are failing
327
00:17:31.519 --> 00:17:33.920
in some way. There's this whole thing about continuous learning,
328
00:17:34.599 --> 00:17:40.039
and so people kind of go, well, there's somebody says microservices,
329
00:17:40.039 --> 00:17:42.839
So I need to learn microservices. Now I know microservices.
330
00:17:43.720 --> 00:17:45.240
Why have I learned it if I'm not going to
331
00:17:45.319 --> 00:17:47.559
use it? And then they end up breaking something with
332
00:17:47.720 --> 00:17:51.519
like two dozen end points down into twelve micro services
333
00:17:52.039 --> 00:17:54.440
and you're just like, no, I should.
334
00:17:54.160 --> 00:17:57.160
Have learned that from doctor card, right, absolutely.
335
00:17:57.519 --> 00:17:57.880
Yeah.
336
00:17:57.960 --> 00:18:00.519
Well, I was like the argument that my service makes
337
00:18:00.519 --> 00:18:02.240
a lot of sense when the team is huge, that
338
00:18:02.319 --> 00:18:04.880
it creates a level of granularity that you can have
339
00:18:04.920 --> 00:18:07.160
a lot of people working in parallel and then have
340
00:18:07.240 --> 00:18:11.279
your fights over integration rather than fights over coding. Yeah,
341
00:18:11.319 --> 00:18:13.079
but most teams aren't that big.
342
00:18:13.680 --> 00:18:15.680
No, they're really not. But I think a lot of
343
00:18:15.720 --> 00:18:21.119
the time, people who don't necessarily have a lot of
344
00:18:21.119 --> 00:18:25.960
different job experiences within the industry, they think that they're
345
00:18:26.000 --> 00:18:29.720
in a big department because there's like one hundred and
346
00:18:29.759 --> 00:18:34.799
twenty developers, all right, And then you're kind of like no, no, no, no, no, no,
347
00:18:35.039 --> 00:18:39.200
go and take a big Netflix or Uber or Microsoft
348
00:18:39.400 --> 00:18:42.960
or your average financial institution. I worked at Morgan Stanley
349
00:18:43.000 --> 00:18:46.519
and I think I was one of ten thousand developers
350
00:18:46.599 --> 00:18:51.440
working at Morgan Stanley. So yeah, that and the other
351
00:18:51.519 --> 00:18:56.440
thing then is when you're at that scale and your
352
00:18:57.279 --> 00:19:00.359
team within that maybe a lot larger and a lot
353
00:19:00.400 --> 00:19:03.359
more different people on it. You may have a sort
354
00:19:03.400 --> 00:19:07.440
of architect leading the design of the system, and you
355
00:19:07.519 --> 00:19:12.480
have testers and DevOps people and all those kinds of things,
356
00:19:14.279 --> 00:19:18.359
and so what they call a micro service can well
357
00:19:18.400 --> 00:19:22.920
be bigger than the entire thing that other people are
358
00:19:22.960 --> 00:19:27.359
trying to break down into micro services. And so yeah,
359
00:19:27.400 --> 00:19:33.000
there's this dissonance from people not actually realizing what scale
360
00:19:33.000 --> 00:19:34.640
they're at because it feels big to them.
361
00:19:34.839 --> 00:19:36.880
They just haven't been exposed to the other things. What
362
00:19:36.960 --> 00:19:41.680
about the cloud native concept? Is this where you fall
363
00:19:41.759 --> 00:19:43.480
on that we should define it first.
364
00:19:43.880 --> 00:19:49.960
Yes, So cloud native is essentially building apps that are
365
00:19:50.039 --> 00:19:58.480
designed to run in the cloud and leverage I think,
366
00:19:58.519 --> 00:20:01.640
you know, like the the term twelve factor apps has
367
00:20:01.759 --> 00:20:03.599
kind of fallen out of use a lot. I think
368
00:20:03.599 --> 00:20:07.160
a Roku introduced that idea, and I think a Roku
369
00:20:07.359 --> 00:20:10.759
was one of the first cloud native style platforms, way
370
00:20:10.799 --> 00:20:13.960
before Kubernettes and containers and all that sort of thing
371
00:20:14.039 --> 00:20:17.240
came along, and it was build your app so that
372
00:20:17.319 --> 00:20:22.680
it consumes services that are provided for you and can
373
00:20:22.720 --> 00:20:27.200
be deployed by doing a Git push or whatever else.
374
00:20:27.559 --> 00:20:30.880
And you're not worried about infrastructure. You're not worried about
375
00:20:31.039 --> 00:20:34.720
VM size, CPU core count, all those sorts of things,
376
00:20:34.759 --> 00:20:35.440
because you're just.
377
00:20:35.680 --> 00:20:39.599
No updating machines, just million new instances in rolling.
378
00:20:39.279 --> 00:20:43.640
Across totally totally. And then you have things on top
379
00:20:43.680 --> 00:20:50.279
of that around reliability, which obviously you know poly in
380
00:20:50.559 --> 00:20:54.839
dot net. But when you're building for the cloud, you
381
00:20:54.960 --> 00:20:57.319
have to build for partition, You have to build for
382
00:20:58.000 --> 00:21:03.640
things that are likely to you know, things in the
383
00:21:03.640 --> 00:21:05.440
cloud go down for two seconds and then come back
384
00:21:05.519 --> 00:21:09.319
up again. Because somebody did a push and it just happened,
385
00:21:09.440 --> 00:21:12.839
and so you have to that. You know, you can't
386
00:21:12.880 --> 00:21:14.960
just go, oh no, the database is gone. You have
387
00:21:15.119 --> 00:21:16.839
to go, well, I'll try again in a second, then
388
00:21:16.839 --> 00:21:20.079
in two seconds, then in four seconds. Obviously with that
389
00:21:20.200 --> 00:21:23.839
weird fuzzing thing that changes those numbers into something not
390
00:21:23.920 --> 00:21:24.599
quite surround.
391
00:21:26.200 --> 00:21:29.519
But maybe that's what's happened is people misconstrued being cloud
392
00:21:29.599 --> 00:21:31.640
native with products like Kubernetes.
393
00:21:31.799 --> 00:21:34.440
That's the thing cloud. So you have cloud Native, which
394
00:21:34.480 --> 00:21:37.920
is a concept and an idea and an abstract that
395
00:21:37.960 --> 00:21:39.960
you can aim for, and then you have the Cloud
396
00:21:40.079 --> 00:21:45.680
Native Computing Foundation, which is attempting to be for cloud
397
00:21:45.680 --> 00:21:50.119
computing what the Linux Foundation is for Linux. And you know,
398
00:21:50.559 --> 00:21:53.480
Kubernettes is often called the operating system of the cloud,
399
00:21:55.319 --> 00:22:00.000
and there's going to be people going often called by whom,
400
00:22:00.039 --> 00:22:04.279
But so they have projects that go through kind of
401
00:22:04.519 --> 00:22:10.240
incubator and preview and then stable and ready for everybody
402
00:22:10.279 --> 00:22:12.920
to use. And so people feel like if they are
403
00:22:12.920 --> 00:22:15.599
going to be cloud native, then they should go down
404
00:22:15.640 --> 00:22:18.200
that like it's a checklist almost and go are we
405
00:22:18.279 --> 00:22:20.960
running on Kubernetes, Are we using a service mesh? Are
406
00:22:21.000 --> 00:22:25.319
we using a document database, Are we using event sourcing
407
00:22:25.319 --> 00:22:28.720
and all these things that they have projects for, And
408
00:22:29.480 --> 00:22:33.200
you can be cloud native. You can build you could
409
00:22:33.200 --> 00:22:36.400
build I don't, please don't, but you could build an
410
00:22:36.440 --> 00:22:40.920
asp dot net web forms app that was cloud native
411
00:22:42.759 --> 00:22:46.839
that covered all those things. Just with the various rules
412
00:22:46.920 --> 00:22:49.039
and all this sort of stuff, there's nothing stopping you
413
00:22:49.079 --> 00:22:52.599
from pushing an asp net where it forms app into
414
00:22:53.039 --> 00:22:55.920
an Azero app service in a VM or something or
415
00:22:55.960 --> 00:22:56.920
a VM or yeah.
416
00:22:57.720 --> 00:23:00.799
And that just proves the point that just because you
417
00:23:00.920 --> 00:23:03.319
have checked off all the boxes doesn't mean using the
418
00:23:03.359 --> 00:23:05.119
rate technology for the job.
419
00:23:05.319 --> 00:23:07.880
Well. Absolutely, And you haven't talked about the customer requirements
420
00:23:07.880 --> 00:23:10.240
anywhere along the path here.
421
00:23:09.799 --> 00:23:13.559
Nobody's asking about that. The customer's kind of going. What
422
00:23:13.640 --> 00:23:17.240
I would really like is for the page to load
423
00:23:17.480 --> 00:23:21.319
in less than four hundred milliseconds, And which is the
424
00:23:21.920 --> 00:23:26.359
something limit. It's like, four hundred milliseconds is the point
425
00:23:26.359 --> 00:23:32.160
at which people go that with subality limits. And we've
426
00:23:32.240 --> 00:23:35.359
actually gotten to this point now. This is one of
427
00:23:35.400 --> 00:23:41.559
the conversations I was having with people where four hundred
428
00:23:41.640 --> 00:23:49.119
milliseconds feels unattainable. And have you guys watched the Spotify
429
00:23:49.359 --> 00:23:54.279
documentary thing on Netflix playlist or something that's called. So
430
00:23:54.319 --> 00:23:56.480
it's about the guy who started Spotify. It's like six
431
00:23:56.519 --> 00:24:00.640
episodes and they're each done from a different perspective, a
432
00:24:00.640 --> 00:24:04.759
different person's point of view. But Daniel Lek, the guy
433
00:24:04.759 --> 00:24:10.680
who started Spotify, his sole focus to get it launched,
434
00:24:12.240 --> 00:24:15.920
in tech terms, was that when you click the play
435
00:24:15.920 --> 00:24:20.400
button on a song, it should start playing like immediately.
436
00:24:20.440 --> 00:24:23.559
And he was aiming for that four hundred millisecond point
437
00:24:23.599 --> 00:24:26.960
and he got it. And that was in two thousand
438
00:24:27.000 --> 00:24:31.640
and one. And now we're here with an internet that
439
00:24:31.839 --> 00:24:36.680
is several orders of magnitude faster, We've got five G
440
00:24:36.839 --> 00:24:41.200
on our phones, we've got gigabit plus internet at affordable
441
00:24:41.240 --> 00:24:44.599
prices for a lot of people. And we're still saying
442
00:24:45.480 --> 00:24:47.640
that's really tricky. We can do it in like one
443
00:24:47.680 --> 00:24:52.559
point four seconds if you're in a fast connection, And yeah,
444
00:24:52.640 --> 00:24:56.960
we've we've lost lost sight of the ball, and we
445
00:24:57.039 --> 00:25:01.119
need to examine ourselves as industry and say, well, what
446
00:25:01.160 --> 00:25:02.880
are we doing and why are we doing it?
447
00:25:02.920 --> 00:25:05.279
And is there anything what are we doing for those
448
00:25:05.279 --> 00:25:08.759
one point four seconds? Exactly what are you up to?
449
00:25:10.440 --> 00:25:14.000
And so yeah, and like I say, the talk covers
450
00:25:14.000 --> 00:25:17.079
this from infrastructure from back end, from front end, from
451
00:25:17.279 --> 00:25:23.240
programming language and all these different things, and yeah, frontend,
452
00:25:24.000 --> 00:25:26.759
it's it is honestly quite a simple answer. We are
453
00:25:26.799 --> 00:25:31.759
downloading a shedload of JavaScript which the browser then has
454
00:25:31.799 --> 00:25:36.640
to pass and jit and do all those sorts of things.
455
00:25:36.039 --> 00:25:42.039
And before we do all of that, people can't scroll
456
00:25:42.119 --> 00:25:46.119
a blog. And you're like, it's a blog. The only
457
00:25:46.200 --> 00:25:49.079
thing on it that needs to be interactive is the
458
00:25:49.200 --> 00:25:52.799
comments and maybe a like button or a share button.
459
00:25:52.880 --> 00:25:56.920
Even the share buttons are just links. But no, I
460
00:25:56.960 --> 00:26:01.960
see people sort of writing blogs with nuts dot js.
461
00:26:03.039 --> 00:26:05.200
Are you still bolished? And blazer server, Mark.
462
00:26:05.160 --> 00:26:09.519
I really like blazer server for internal things, for where
463
00:26:09.559 --> 00:26:12.720
you have a very definite upper limit on the number
464
00:26:12.759 --> 00:26:15.799
of concurrent connections that you can have, and it's like
465
00:26:16.000 --> 00:26:18.960
in the thousands or maybe tens of thousands, and you
466
00:26:18.960 --> 00:26:24.039
can scale up for that and everything. Once you scale
467
00:26:24.119 --> 00:26:30.559
blazer server beyond a single instance, then obviously it becomes trickier.
468
00:26:30.720 --> 00:26:33.200
So if you've got like messages and one person sends
469
00:26:33.200 --> 00:26:35.680
it on one instance, that now has to bounce through
470
00:26:35.680 --> 00:26:38.279
something like a reddish pubsub or something so that the
471
00:26:38.319 --> 00:26:43.720
other instances can pick it up. But it's still very simple. Actually,
472
00:26:43.759 --> 00:26:49.279
I've been playing with so blazerin dot net eight and
473
00:26:49.880 --> 00:26:53.839
you have the server side rendering, and so it will
474
00:26:53.880 --> 00:26:56.960
render pages on the server and it will return them,
475
00:26:56.960 --> 00:26:58.720
so you can have a site that works with search
476
00:26:58.759 --> 00:27:02.440
engines just as much as anything else, just like Razor pages.
477
00:27:03.880 --> 00:27:09.039
And then it will download the Blazer web assembly runtime
478
00:27:09.279 --> 00:27:13.200
in the background, and it will download your natively compiled
479
00:27:13.720 --> 00:27:18.599
Blazer application in the background, and then silently without the
480
00:27:18.680 --> 00:27:21.559
user even noticing that's anything, that anything has happened, the
481
00:27:21.599 --> 00:27:24.480
next time they navigate, it won't make a request to
482
00:27:24.519 --> 00:27:26.519
the server. It will do it locally.
483
00:27:27.079 --> 00:27:29.640
It's like magic, except that it doesn't work.
484
00:27:30.039 --> 00:27:32.039
It's they'll get there.
485
00:27:34.880 --> 00:27:37.079
I've done I've done tests and I recently did another
486
00:27:37.119 --> 00:27:41.319
one and we go from service side rendered directly to
487
00:27:41.359 --> 00:27:47.559
web assembly. There isn't any server rendering in between while
488
00:27:47.640 --> 00:27:50.559
web assembly is downloading. And that's been a problem ever
489
00:27:50.599 --> 00:27:53.720
since they released that, and it's still a problem. Well,
490
00:27:53.559 --> 00:27:54.359
but they'll get there.
491
00:27:54.680 --> 00:27:57.240
I'm just going to keep my fingers crossed for for
492
00:27:57.319 --> 00:28:00.200
dot netline. But no I did. I ran into some
493
00:28:00.240 --> 00:28:05.440
issues with it myself and have started looking at an
494
00:28:05.480 --> 00:28:13.920
alternative thing, which is HTMX, which is that X stand
495
00:28:13.960 --> 00:28:21.200
for so essentially this is a push back against things
496
00:28:21.279 --> 00:28:23.960
like React and Angular and so forth, where it's kind
497
00:28:23.960 --> 00:28:26.920
of what you actually want to do, what you actually
498
00:28:26.960 --> 00:28:31.160
want to achieve is when the user clicks something or
499
00:28:31.200 --> 00:28:34.160
interacts with something in some way, you want to make
500
00:28:34.200 --> 00:28:36.559
a call to a server and then you want to
501
00:28:36.839 --> 00:28:39.960
make a change to the dom of your current page
502
00:28:40.240 --> 00:28:43.079
right and insert a div and with some stuff in
503
00:28:43.119 --> 00:28:47.359
it or something and so works, which is how Blazer
504
00:28:47.359 --> 00:28:52.920
server works. And HTMX is kind of let's let's just
505
00:28:53.079 --> 00:28:56.039
lean into that as far as possible, and we'll just
506
00:28:56.200 --> 00:29:01.640
use HTML attributes on elements and we'll say, okay, so
507
00:29:02.200 --> 00:29:06.279
on this element, when the user clicks, we are going
508
00:29:06.319 --> 00:29:10.279
to make a request to this endpoint on our server,
509
00:29:10.319 --> 00:29:13.960
which is going to return a fragment of HTML, and
510
00:29:14.000 --> 00:29:18.720
then we're going to insert that HTML into the page
511
00:29:18.839 --> 00:29:21.240
at this point, or we're going to replace an existing
512
00:29:21.640 --> 00:29:28.359
element with that HTML. And for I think like ninety
513
00:29:28.440 --> 00:29:33.119
percent of use cases, that actually covers most of the
514
00:29:33.119 --> 00:29:36.279
things you want to do. It will do your comment
515
00:29:36.599 --> 00:29:38.480
form at the bottom of your blog. It will do
516
00:29:39.200 --> 00:29:42.759
your like buttons and an updated view of how many
517
00:29:42.920 --> 00:29:45.519
likes you've got, and all those sorts of things, but
518
00:29:45.640 --> 00:29:50.720
without a huge JavaScript run time doing shadow dom things
519
00:29:50.799 --> 00:29:57.440
and observing signals. They seem to be going on about
520
00:29:57.440 --> 00:29:59.720
signals over in JavaScript land at the moment. That's very
521
00:30:00.000 --> 00:30:02.160
fighting for them. And yeah, so.
522
00:30:02.200 --> 00:30:04.480
That's sort of like the evolution of ajax, isn't it.
523
00:30:04.720 --> 00:30:08.279
Yeah, yeah, it is, and it's kind of it's that
524
00:30:08.400 --> 00:30:10.359
the plumbing. I feel like it's a shame we had
525
00:30:10.359 --> 00:30:12.279
to go all the way round SPA to get back
526
00:30:12.279 --> 00:30:14.839
to the point where we're going. Here's a really sensible
527
00:30:14.839 --> 00:30:16.319
evolution of ajax.
528
00:30:17.200 --> 00:30:20.000
Just refill a div tag for me, would you please? Right?
529
00:30:21.279 --> 00:30:24.920
So I built a site when I was learning the base,
530
00:30:25.079 --> 00:30:30.160
and it's called fret Badger, which is partly because I like,
531
00:30:31.000 --> 00:30:36.000
it's not a mollusk. If I ever start another company,
532
00:30:36.039 --> 00:30:38.279
it's just going to be called not a Mollusk limited.
533
00:30:38.880 --> 00:30:43.039
What do you do? Definitely not a mollusk. So yeah,
534
00:30:43.400 --> 00:30:46.079
you can you can hire hijack the domain for me
535
00:30:46.240 --> 00:30:51.200
and then blackmail me. But no, So frat Badger. I
536
00:30:51.240 --> 00:30:53.400
wanted to learn the threat board, and I wanted to
537
00:30:53.480 --> 00:30:58.160
learn scales and modes for jazz and arpeggios and that
538
00:30:58.200 --> 00:30:59.680
sort of thing, and.
539
00:30:59.480 --> 00:31:00.920
So I see chart behind you.
540
00:31:01.279 --> 00:31:03.680
Yes, exactly. I've got the bas chart on the wall
541
00:31:03.680 --> 00:31:06.440
which has got all the modes and everything else. And
542
00:31:06.480 --> 00:31:08.799
it's basically just if you want to play up this scale,
543
00:31:08.839 --> 00:31:11.759
and you've got the major scale, the minor scale, pentatomics, blues,
544
00:31:11.799 --> 00:31:18.119
all these different things. And I was my base teacher
545
00:31:18.599 --> 00:31:22.559
was pushing me to learn music theory, and I got
546
00:31:22.599 --> 00:31:28.599
really into it because it's it's maths, it's rules, and
547
00:31:28.839 --> 00:31:32.519
it's logical, and so I thought, well, the best.
548
00:31:32.359 --> 00:31:34.640
Way there's one of the many reasons that musicians and
549
00:31:35.319 --> 00:31:36.799
developers go work so well together.
550
00:31:36.960 --> 00:31:40.400
Yeah, yeah, And I thought, so if I can encode
551
00:31:40.599 --> 00:31:44.559
all this information about music theory into C sharp and
552
00:31:44.640 --> 00:31:47.640
some data structures, then that would be a good way
553
00:31:47.680 --> 00:31:49.880
to learn it. And also it would be a fun
554
00:31:49.960 --> 00:31:53.119
site to build. And so it's just an asp net
555
00:31:53.519 --> 00:31:57.720
Core MVC app at the moment, but it does have
556
00:31:57.799 --> 00:31:59.599
this thing so you can have like you choose your
557
00:31:59.599 --> 00:32:02.119
freat ball and you say, okay, so I want the
558
00:32:02.160 --> 00:32:05.279
standard base threat board, standard tuning, and I want the
559
00:32:05.480 --> 00:32:09.240
C major scale, and it will show you the little
560
00:32:09.240 --> 00:32:12.119
dots to show you where to put your fingers. But
561
00:32:12.240 --> 00:32:15.799
then when I was doing jazz, it was kind of
562
00:32:15.960 --> 00:32:17.599
it would be really good if I could have like
563
00:32:17.960 --> 00:32:19.920
four or five of them on the screen at once,
564
00:32:20.119 --> 00:32:22.759
and so I added in nothing. But every time you
565
00:32:22.880 --> 00:32:26.559
add a new threatboard, it reloads the entire page and
566
00:32:26.599 --> 00:32:28.640
then it scrolled back to the top. And so I
567
00:32:28.680 --> 00:32:30.440
was looking for a way to make it kind of
568
00:32:30.799 --> 00:32:33.799
more smoothly interactive. And so that's what I was looking
569
00:32:33.799 --> 00:32:37.559
at the Blazer server side plus WASM for. But as
570
00:32:37.640 --> 00:32:43.480
Carl says, there are some issues. But then I saw
571
00:32:43.680 --> 00:32:47.559
HTMX and I'm kind of like, that is exactly what
572
00:32:47.640 --> 00:32:50.720
I want. And the beautiful thing is it works really
573
00:32:50.720 --> 00:32:53.720
really well with esp net core because we have partials
574
00:32:54.559 --> 00:32:57.759
and so we can just go, when this request comes in,
575
00:32:57.920 --> 00:33:02.319
just render this partial. So yeah, it's and it's that
576
00:33:02.359 --> 00:33:06.720
sort of thing. The key thing with HTMX though, is
577
00:33:07.079 --> 00:33:13.079
the entire library is fourteen point six killer bytes minified
578
00:33:13.119 --> 00:33:15.680
and chesipped, which is tiny.
579
00:33:15.920 --> 00:33:19.559
It's less than your logo graphic button.
580
00:33:19.319 --> 00:33:20.400
Radius is bigger than that.
581
00:33:20.839 --> 00:33:23.960
Yeah, yeah, you know, it's like that thing where when
582
00:33:24.079 --> 00:33:27.079
Windows seven came out, the desktop wallpaper was took up
583
00:33:27.119 --> 00:33:30.960
more disk space than the whole of Windows three point one,
584
00:33:31.559 --> 00:33:36.119
like and what is it doing that? So yeah, it's that,
585
00:33:37.240 --> 00:33:43.559
and you know it's They provide documentation and guidance on
586
00:33:43.640 --> 00:33:47.119
how to use Alpine js, which is again a very
587
00:33:47.200 --> 00:33:53.240
lightweight JavaScript framework, kind of like a miniature alternative to
588
00:33:53.359 --> 00:33:56.599
jQuery for the things that jQuery did that didn't then
589
00:33:56.640 --> 00:34:00.279
get built into JavaScript fifteen or twenty sixteen or whatever.
590
00:34:02.079 --> 00:34:04.839
So if you do need, I have one thing where
591
00:34:04.880 --> 00:34:07.680
I wrote custom JavaScript, which is, once you've got your
592
00:34:07.839 --> 00:34:10.039
C major scale up on the threat board, if you
593
00:34:10.159 --> 00:34:14.119
click one of the c's, it will fade the others
594
00:34:14.159 --> 00:34:18.000
that aren't part of that arpeggio. And so it's kind
595
00:34:18.000 --> 00:34:20.360
of like going, so you do this, and then that's
596
00:34:20.440 --> 00:34:23.280
your second, and your third, and your fourth and so on.
597
00:34:24.800 --> 00:34:30.800
And that's twenty lines of chavascript, which isn't even worth
598
00:34:30.880 --> 00:34:33.800
minifying at that point. I think it's actually still hard
599
00:34:33.840 --> 00:34:37.199
coded into the h into the layout dot c shtml
600
00:34:38.519 --> 00:34:42.000
and so yeah, just that little bits of JavaScript here
601
00:34:42.039 --> 00:34:44.800
and there to do a couple of things in the browser,
602
00:34:45.400 --> 00:34:50.039
and then HTMX for everything else. And it's it's working
603
00:34:50.079 --> 00:34:51.639
really well. I'm going to be pushing it live soon.
604
00:34:51.719 --> 00:34:53.679
It's great. Before we take a break, I just want
605
00:34:53.719 --> 00:34:57.320
to mention that I had written I don't know four
606
00:34:57.400 --> 00:35:02.800
or five years ago this tool. I have a guitar
607
00:35:02.920 --> 00:35:06.519
that has a role in GK pickup GK three pickup,
608
00:35:06.519 --> 00:35:10.239
which is a split pickup, so it goes right in
609
00:35:10.280 --> 00:35:12.280
between the bridge and your first pickup of the guitar.
610
00:35:13.039 --> 00:35:15.800
And it has six individual pickups for each string and
611
00:35:15.840 --> 00:35:18.840
those go through a role in processor and then you
612
00:35:18.880 --> 00:35:23.000
can process each string individually. So another thing I can
613
00:35:23.039 --> 00:35:26.079
do is map it to MIDI. So what I have
614
00:35:26.519 --> 00:35:29.480
is I have something that pulls up the MIDI from
615
00:35:29.840 --> 00:35:33.800
your guitar and figures out where your fingers are on
616
00:35:33.840 --> 00:35:36.440
the front board and shows it to you on the screen.
617
00:35:36.960 --> 00:35:39.960
Not only that, but then I put a service between it,
618
00:35:40.079 --> 00:35:44.400
so somebody could log in in Texas and I'm playing
619
00:35:44.400 --> 00:35:47.480
in my place and I can be teaching them, and
620
00:35:47.880 --> 00:35:50.599
as I play, the dots show up where my fingers are.
621
00:35:50.840 --> 00:35:54.760
Not only that, I got to chord charts and chord
622
00:35:54.920 --> 00:35:58.360
names based on the music theory of it. So if
623
00:35:58.360 --> 00:36:00.920
you're interested in that codebase, I'll gladly send it to you.
624
00:36:01.079 --> 00:36:03.559
I would love to see that. Yeah, that sounds amazing.
625
00:36:04.440 --> 00:36:06.119
So yeah, and I feel compelled to ask did you
626
00:36:06.119 --> 00:36:11.760
write that using events hourcing or DDD? Is how many.
627
00:36:12.119 --> 00:36:15.760
It was very simple, all right, So we're going to
628
00:36:15.800 --> 00:36:17.599
take a quick break and we'll be right back with
629
00:36:17.679 --> 00:36:21.679
more with Mark Rendell. Stay tuned. Did you know that
630
00:36:21.719 --> 00:36:26.400
you can work with AWS directly from your ide Aws
631
00:36:26.440 --> 00:36:30.639
provides toolkits for visual Studio, Visual Studio code, and jet
632
00:36:30.679 --> 00:36:35.119
Brains rider Learn more at Aws dot Amazon dot com,
633
00:36:35.159 --> 00:36:40.519
slash net slash tools. You know it's common for business
634
00:36:40.559 --> 00:36:44.880
application to contain fifteen percent repetitive code just because of
635
00:36:45.000 --> 00:36:49.599
metaprogramming limitations in the C Sharp language. Why write boilerplate
636
00:36:49.719 --> 00:36:53.599
manually when a machine could generate it for you? Enter Metaalama,
637
00:36:53.840 --> 00:36:57.519
the code generation and verification toolkit for C Sharp. Their
638
00:36:57.639 --> 00:37:01.360
C Sharp to c sharp template language is simply amazing
639
00:37:01.679 --> 00:37:07.880
logging caching memento observable. If it's repetitive, Metaalama can automate it.
640
00:37:08.280 --> 00:37:11.679
Visit Metalama dot net today and learn to automate your
641
00:37:11.719 --> 00:37:15.599
code patterns with their free edition. Remember it's Metaalama with
642
00:37:15.679 --> 00:37:22.760
one L Meta la Ma dot Net. Attention dot net
643
00:37:22.760 --> 00:37:27.920
developers looking for the ultimate SDK to handle electronic document
644
00:37:28.000 --> 00:37:33.280
processing Meet TX text Control. Txtext Controls, your go to
645
00:37:33.400 --> 00:37:39.119
solution for seamless PDF generation, secure electronic signatures and efficient
646
00:37:39.239 --> 00:37:43.679
digital forms processing all within your dot net applications. Empower
647
00:37:43.679 --> 00:37:49.159
your products with robust document management capabilities, boost productivity, and
648
00:37:49.440 --> 00:37:54.280
deliver top notch solutions to your clients. Trusted by developers worldwide,
649
00:37:54.360 --> 00:37:58.280
including me and Richard. Txtext Control is the SDK that
650
00:37:58.440 --> 00:38:02.400
makes a difference. Check look out demos dot textcontrol dot
651
00:38:02.440 --> 00:38:05.840
com for live online demos and see it in action.
652
00:38:07.920 --> 00:38:10.480
And we're back. I'm Carl Franklin. That's my friend Richard
653
00:38:10.480 --> 00:38:14.679
Campbell and Mark Rendel's here, and we're talking about simplicity. Simplicity.
654
00:38:14.679 --> 00:38:16.199
And by the way, I need to remind you that
655
00:38:16.239 --> 00:38:18.079
if you don't want to hear the ads, you can
656
00:38:18.119 --> 00:38:20.239
become a five dollars a month patron of dot net
657
00:38:20.320 --> 00:38:23.320
rocks and get an ad free feed. Go to Patreon
658
00:38:23.440 --> 00:38:27.119
dot dot NetRocks dot com. Okay, so I guess you
659
00:38:27.199 --> 00:38:30.400
were talking about HTMX and.
660
00:38:30.880 --> 00:38:36.840
So yeah, and HTMX is one example of simplification. People. Actually,
661
00:38:36.920 --> 00:38:40.679
I'm starting to see projects popping up that are pushing
662
00:38:40.719 --> 00:38:46.280
back against this complexity that we've created. And there are
663
00:38:46.320 --> 00:38:47.400
other examples as well.
664
00:38:47.400 --> 00:38:47.639
There we are.
665
00:38:49.519 --> 00:38:54.559
You don't need to run a coubonet. So the comment
666
00:38:54.599 --> 00:38:56.480
that you read at the start of the show from
667
00:38:56.679 --> 00:39:01.719
the other Mark and he were saying, how Aks and
668
00:39:01.920 --> 00:39:07.079
eks the sort of managed Kubernetes are super easy to run.
669
00:39:07.599 --> 00:39:11.159
They're really not they really they're easier.
670
00:39:11.320 --> 00:39:15.079
They're easy. Err, it's only because you've been traumatized by
671
00:39:15.079 --> 00:39:16.559
trying to run Kubernetes by head.
672
00:39:16.639 --> 00:39:19.519
I mean, yeah, never ever, ever try to run your
673
00:39:19.559 --> 00:39:22.840
own Kubernetes cluster, unless maybe you just want to build
674
00:39:22.880 --> 00:39:26.840
one with five Raspberry pies just for giggles. But no.
675
00:39:27.239 --> 00:39:31.000
So let's take a zero as an example, just because
676
00:39:31.079 --> 00:39:34.440
it's the one that I know best. But Microsoft support
677
00:39:34.519 --> 00:39:41.840
a version of Kubernetes I think for four versions for
678
00:39:42.039 --> 00:39:45.119
minor versions. So I think we're on like one point
679
00:39:45.280 --> 00:39:48.760
twenty one at the moment I get confused with version numbers,
680
00:39:48.880 --> 00:39:51.039
and so they will still be supporting twenty and nineteen
681
00:39:51.079 --> 00:39:53.400
and eighteen. But as soon as twenty two comes along,
682
00:39:53.480 --> 00:39:57.039
if you're still on eighteen, you need to upgrade. And
683
00:39:57.360 --> 00:40:02.840
Kubernetes versions land three monthly or six monthly, I'm not sure, so.
684
00:40:02.800 --> 00:40:05.400
It means every year then you're probably agreeing so.
685
00:40:05.360 --> 00:40:07.360
But you are at least once a year going to
686
00:40:07.360 --> 00:40:11.039
have to upgrade your Kubernettes cluster. And if you do it,
687
00:40:11.719 --> 00:40:14.920
if you do the upgrade the minimum number of times possible,
688
00:40:14.960 --> 00:40:17.920
then you're doing a I mean, Kubernett's versioning is a
689
00:40:17.920 --> 00:40:21.280
whole thing anyway, because those are not minor versions, they
690
00:40:21.280 --> 00:40:24.280
are major versions. A lot of the time they remove APIs,
691
00:40:24.320 --> 00:40:26.679
they deprecate APIs, and yet somehow we're still on one
692
00:40:26.679 --> 00:40:32.119
point something. And so if you want to minimize the
693
00:40:32.199 --> 00:40:33.840
number of times you have to do this, you're going
694
00:40:33.880 --> 00:40:35.559
to be going from like one dot eighteen to one
695
00:40:35.599 --> 00:40:38.199
dot twenty two. That's a lot of jump. That's a
696
00:40:38.239 --> 00:40:42.360
lot of things that in an enterprise environment, you're going
697
00:40:42.440 --> 00:40:46.360
to have people going over pages and pages and pages
698
00:40:46.360 --> 00:40:48.039
of release notes to make sure that you're not going
699
00:40:48.079 --> 00:40:52.480
to break anything. Or you upgrade every time the new
700
00:40:52.559 --> 00:40:55.679
version becomes available, which is going to take less time
701
00:40:55.760 --> 00:41:01.960
per upgrade, but potentially more time overall. And then it's
702
00:41:02.000 --> 00:41:04.239
not enough to just be running in Kubernetes. You have
703
00:41:04.400 --> 00:41:07.239
to have your service mesh, you have to have your sidecars,
704
00:41:07.320 --> 00:41:11.039
you have to have your your sort of various load
705
00:41:11.119 --> 00:41:15.119
balances and all these kinds of things, and nobody's managing
706
00:41:15.159 --> 00:41:19.119
that for you. Microsoft doesn't Microft hasn't blessed a service
707
00:41:19.199 --> 00:41:22.800
mesh because they can't because people want different things. So
708
00:41:23.159 --> 00:41:27.159
it's it's simpler, but it is by no means simple.
709
00:41:27.800 --> 00:41:31.599
And then you look at you type container into the
710
00:41:31.679 --> 00:41:34.559
creator new thing in the Azure portal, and actually the
711
00:41:34.599 --> 00:41:38.119
first thing that pops up is container app and that
712
00:41:38.760 --> 00:41:42.400
is simple. So that is build. You write your DOCA
713
00:41:42.400 --> 00:41:45.039
file or you know, in my case, right click in
714
00:41:45.719 --> 00:41:49.280
the solution explorer in jet Brain's rider and say add
715
00:41:49.320 --> 00:41:51.480
docer file and it just generates it for you with
716
00:41:51.559 --> 00:41:55.320
all the right best practices, and then do Docker build,
717
00:41:55.320 --> 00:41:58.199
and then do Docker push to your as your container registry,
718
00:41:58.800 --> 00:42:04.719
and then just deploy the thing. And underneath it all
719
00:42:04.760 --> 00:42:07.559
it's running on a massive Kubernetes.
720
00:42:07.000 --> 00:42:09.280
Cluster you want to have to own.
721
00:42:09.760 --> 00:42:12.800
Yes, Microsoft are taking care of everything. They're taking care
722
00:42:12.800 --> 00:42:18.480
of the service smash, the upgrade cycle, the stability and
723
00:42:18.599 --> 00:42:20.400
resilience and all those sorts of things.
724
00:42:20.639 --> 00:42:23.920
Well, and arguably, if you decide it isn't running well
725
00:42:23.920 --> 00:42:26.280
in container apps and want to move to your own
726
00:42:26.440 --> 00:42:29.079
manage infrastructure, you're already there exactly.
727
00:42:29.280 --> 00:42:32.719
Yeah. And equally, now you can take a container and
728
00:42:32.760 --> 00:42:35.800
you can push that towards your app service where you
729
00:42:35.840 --> 00:42:38.679
used to push web things to, which is also very
730
00:42:38.760 --> 00:42:42.639
nice and much easier than saying copy locally and all.
731
00:42:42.480 --> 00:42:43.480
These various things.
732
00:42:44.280 --> 00:42:48.320
So yeah, you know, on that side, there's that simplicity.
733
00:42:48.679 --> 00:42:51.960
And again it's taken us a long time to get there.
734
00:42:52.559 --> 00:42:55.599
And this is Microsoft figuring out what people actually willing
735
00:42:55.639 --> 00:42:56.880
to use, right like.
736
00:42:57.039 --> 00:43:01.679
Yeah, yeah, and you know, you know, the reason you
737
00:43:01.719 --> 00:43:05.039
don't get straight from A to Z is because you
738
00:43:05.079 --> 00:43:07.960
can't see zed until you've gone through B, C, D, E,
739
00:43:08.239 --> 00:43:11.599
F and everything else. Yeah, and you don't know what
740
00:43:11.639 --> 00:43:14.400
it looks like. And it's very difficult to find out
741
00:43:14.400 --> 00:43:16.760
that something's a bad idea without trying it.
742
00:43:16.960 --> 00:43:20.280
Yeah, and without well, and you always have the few
743
00:43:20.320 --> 00:43:23.119
folks they get it that they're willing to put the
744
00:43:23.119 --> 00:43:26.000
time in their their customer is tolerant of it, and
745
00:43:26.000 --> 00:43:28.400
they can do this complexity. But then a whole bunch
746
00:43:28.440 --> 00:43:30.840
of others just like Nope, not doing it. And then
747
00:43:30.920 --> 00:43:33.440
you you know that in the end they have to
748
00:43:34.280 --> 00:43:35.760
you know, Microsoft looks and goes, well, we're just not
749
00:43:35.760 --> 00:43:37.800
getting enough adoption here. What if we did this, like
750
00:43:37.880 --> 00:43:40.480
they are just kind of hurling it at the wall. Yeah,
751
00:43:40.559 --> 00:43:42.880
by a bit, and eventually they stumble on to these
752
00:43:42.920 --> 00:43:45.000
approaches that are simple enough.
753
00:43:45.480 --> 00:43:48.599
And you know it's the big thing has been serverless
754
00:43:48.599 --> 00:43:51.400
and still is serverless for a lot of the talks
755
00:43:51.440 --> 00:43:54.320
I'm seeing and that sort of thing, which is containers
756
00:43:54.400 --> 00:43:57.679
under the hood. It's containers under the hood. But the
757
00:43:59.159 --> 00:44:01.719
again I'm going to talk about a Zoo functions but
758
00:44:02.159 --> 00:44:06.519
equally applies to a ws lander and another Servilus platforms.
759
00:44:07.440 --> 00:44:10.800
What you end up with then is vendor lock in, right,
760
00:44:10.880 --> 00:44:14.480
because your triggers you've got like blob stories triggers, and
761
00:44:14.519 --> 00:44:17.199
there's your Q triggers and service bus triggers and event
762
00:44:17.559 --> 00:44:20.320
hub triggers and all these different things, and so you're
763
00:44:20.360 --> 00:44:24.639
locking yourself into that. But with as your container apps,
764
00:44:25.039 --> 00:44:29.320
you can use Dapper, which is an abstraction over so
765
00:44:29.360 --> 00:44:32.039
you go, I need a cash or I need a
766
00:44:32.079 --> 00:44:36.639
pub sub and then that could be reddis it could
767
00:44:36.719 --> 00:44:40.880
be as your service bus, it could be men cash
768
00:44:40.960 --> 00:44:43.760
d or Varnish, you know whatever. The different things are
769
00:44:44.000 --> 00:44:51.280
fusion cash and in your container description you just go,
770
00:44:51.559 --> 00:44:54.559
this needs a cash, give it a cash, and then
771
00:44:54.719 --> 00:45:00.199
you use the Dapper API, which will one just as well.
772
00:45:00.599 --> 00:45:05.880
You can use Dappa with containers running in amazons. D
773
00:45:06.039 --> 00:45:10.559
A p R Yes, d A p R naming definitely
774
00:45:10.599 --> 00:45:14.880
an issue at first, and Microsoft.
775
00:45:14.360 --> 00:45:17.400
Well, Plus there is the other product called Dapper d
776
00:45:17.519 --> 00:45:20.079
A p p e R right, which is the.
777
00:45:20.400 --> 00:45:22.599
Which is a wrapper around Adeo dot net.
778
00:45:22.880 --> 00:45:27.280
Yeah, it's the kind of incredibly lightweight mapping from data
779
00:45:27.320 --> 00:45:29.440
readers to CEP objects.
780
00:45:29.719 --> 00:45:31.400
I have nothing bad to say about either one, but
781
00:45:31.400 --> 00:45:33.159
they've got nothing to do with each other except when
782
00:45:33.159 --> 00:45:35.440
you say their names entirely unrelated.
783
00:45:36.719 --> 00:45:41.360
But yeah, d a PR stands for Distributed Application platform something.
784
00:45:42.679 --> 00:45:47.920
But DAPPA is great, and it's I think dapper play is.
785
00:45:48.360 --> 00:45:51.199
I would put that in my simple column. It's kind
786
00:45:51.239 --> 00:45:54.119
of I need a cash. I need a way that
787
00:45:54.159 --> 00:45:57.719
I can say cash this data, now give it back,
788
00:45:58.400 --> 00:46:00.960
and I shouldn't have to care about out whether that's
789
00:46:01.000 --> 00:46:06.519
reddis or another solution or just memory. I should be
790
00:46:06.599 --> 00:46:09.559
able to say cash it, give it back, and then
791
00:46:10.000 --> 00:46:15.559
worry about how that actually happens at deployment time. And again,
792
00:46:15.639 --> 00:46:18.199
you can use dapper in Kubernetes, but you don't have to.
793
00:46:18.440 --> 00:46:22.079
You can use dapper in other environments as well, and so,
794
00:46:22.440 --> 00:46:24.880
and I just want to push people in that direction.
795
00:46:25.119 --> 00:46:27.480
I've well, and what I appreciate this is that you're
796
00:46:27.519 --> 00:46:30.599
still giving us access to all of this complexity without
797
00:46:30.639 --> 00:46:31.639
making it complicated.
798
00:46:32.000 --> 00:46:32.239
Yeah.
799
00:46:32.480 --> 00:46:35.679
Right, you're not saying no containers, You're saying containers that
800
00:46:35.760 --> 00:46:37.280
don't make you want to stab yourself.
801
00:46:38.079 --> 00:46:42.239
Well, I mean containers. Containers are absolutely the simplest way
802
00:46:42.239 --> 00:46:44.320
of deploying an application. Sure, you know you need a
803
00:46:44.360 --> 00:46:48.639
Linux dependency like lib zip or something like that, Just
804
00:46:48.679 --> 00:46:51.320
don't make me edit apt get in the docer file
805
00:46:51.360 --> 00:46:54.679
and you've got it. Yeah, it's that, it's that original thing.
806
00:46:54.679 --> 00:46:56.760
If it works on my machine, I'm going to ship
807
00:46:56.760 --> 00:47:01.280
my machine. Yeah. And so yeah, containers I think are
808
00:47:01.280 --> 00:47:03.920
the simplest unit of deployment we've come up with yet.
809
00:47:04.800 --> 00:47:07.880
And it's just a matter of where do you run them?
810
00:47:07.880 --> 00:47:10.760
And do you need to run your Kubernetes cluster.
811
00:47:10.920 --> 00:47:15.199
Yeah, And you know we're we're not complaining about containers.
812
00:47:15.199 --> 00:47:17.760
We're complaining about the orchestrators totally.
813
00:47:17.960 --> 00:47:24.440
Yeah. Management and the assumption that because sort of Facebook
814
00:47:24.440 --> 00:47:26.920
and Netflix and Uber are using something that it's the
815
00:47:26.960 --> 00:47:29.360
right solution for your company.
816
00:47:29.599 --> 00:47:30.880
Right, You're not them.
817
00:47:31.039 --> 00:47:34.239
You're not them, And they have armies of engineers whose
818
00:47:34.360 --> 00:47:38.480
only job is to maintain those that infrastructure.
819
00:47:38.199 --> 00:47:40.719
And test new versions and roll them out and all
820
00:47:40.760 --> 00:47:42.960
of that sort of stuff, and all that stuff if
821
00:47:42.960 --> 00:47:45.800
you need it, but if you don't. At the same time,
822
00:47:45.840 --> 00:47:47.599
you don't want to cut yourself off from the possibility
823
00:47:47.599 --> 00:47:48.920
that you might become one of these things.
824
00:47:49.760 --> 00:47:53.199
Oh yeah, yeah. But if everything's just docophiles and containers,
825
00:47:53.519 --> 00:47:55.320
and at some point you go, actually, you know, it
826
00:47:55.320 --> 00:47:57.199
would be a lot cheaper when you get to the
827
00:47:57.239 --> 00:48:01.079
point where you're spending so much on as you're container apps,
828
00:48:01.760 --> 00:48:05.639
that you could not only run your own cubernettes cluster,
829
00:48:05.719 --> 00:48:07.840
but employ somebody full time to keep an eye on
830
00:48:07.880 --> 00:48:11.079
it and do the upgrades and everything. That's the point
831
00:48:11.079 --> 00:48:11.760
at which you switch.
832
00:48:12.039 --> 00:48:15.360
Certainly on the run as side of things. For me,
833
00:48:15.599 --> 00:48:18.119
I'm having conversations with folks who are like, no, we
834
00:48:18.199 --> 00:48:20.760
repatriated this because we already run a twenty four to
835
00:48:20.800 --> 00:48:24.400
seven knock and it was we were committed to doing
836
00:48:24.440 --> 00:48:27.360
these things in this workload. Now that we truly understood
837
00:48:27.360 --> 00:48:29.679
the shape of it in the cloud made more sense
838
00:48:29.719 --> 00:48:32.800
running at home. Yes, but that's a big lift, right, Like,
839
00:48:32.840 --> 00:48:34.599
it's not a small things.
840
00:48:34.559 --> 00:48:39.840
Really, and the same thing goes I mean, I was
841
00:48:40.480 --> 00:48:43.800
complaining about people downloading fifteen megabytes of JavaScript or WASM
842
00:48:43.880 --> 00:48:46.880
or whatever to run something in the browser. There are
843
00:48:47.400 --> 00:48:50.760
legitimate use cases for that. Adobe now have inside the
844
00:48:50.760 --> 00:48:59.159
network Photoshop and light Room as WASM compiled browser apps, right, So,
845
00:48:59.320 --> 00:49:02.920
and yeah, you know, if you want to edit photos
846
00:49:03.280 --> 00:49:07.119
and clean up red eye using AI algorithms, and you
847
00:49:07.159 --> 00:49:10.719
want to do it in your browser, then you need
848
00:49:10.760 --> 00:49:14.039
to download all that PLASM and that sort of thing,
849
00:49:14.039 --> 00:49:17.159
because you can't have somebody doing a round trip every
850
00:49:17.159 --> 00:49:22.840
time they make a change with a multi megabyte image
851
00:49:22.840 --> 00:49:24.400
file uncompressed.
852
00:49:24.480 --> 00:49:26.760
Arguably, you're still stopping about you're still talking about the
853
00:49:26.800 --> 00:49:30.159
simplest case. In this case. The simplest case is stick
854
00:49:30.199 --> 00:49:32.519
the whole thing in a ASIM file and stuff for
855
00:49:33.039 --> 00:49:34.039
the download overhead.
856
00:49:34.519 --> 00:49:38.679
It's that as simple as possible. And thinking about what
857
00:49:38.719 --> 00:49:42.079
that means for you for this project that you're working
858
00:49:42.119 --> 00:49:44.199
on today, it.
859
00:49:44.159 --> 00:49:46.280
Feels like you're just pressing against the defiles that we're
860
00:49:46.440 --> 00:49:48.719
choosing complexity we don't need.
861
00:49:49.199 --> 00:49:55.159
Yes, yeah, and I think that, and it's not I'm
862
00:49:55.199 --> 00:50:00.599
absolutely not blaming developers in isolation for this, because I
863
00:50:00.639 --> 00:50:05.960
think that the IT department, there were CTOs out there,
864
00:50:06.039 --> 00:50:10.679
there were CIOs and they're going to their own conferences
865
00:50:10.880 --> 00:50:15.440
and being sold this stuff by people with very very
866
00:50:15.480 --> 00:50:18.960
effective marketing machines, and then they come back and go weak.
867
00:50:19.199 --> 00:50:22.159
And motivation is not involving keeping things simple.
868
00:50:22.599 --> 00:50:24.199
Yeah, And they come back and they go, we have
869
00:50:24.239 --> 00:50:26.199
to adopt this because it's the next big thing, and
870
00:50:27.760 --> 00:50:31.679
not doing proper kind of cost benefit analysis and those
871
00:50:31.719 --> 00:50:34.880
things to work out whether it actually is the right thing.
872
00:50:36.119 --> 00:50:39.960
Something just occurred to me about Blazer server. I remember
873
00:50:40.719 --> 00:50:43.400
having customers say they didn't like blazer server because if
874
00:50:43.440 --> 00:50:46.360
the connection goes down, like they get that what I
875
00:50:46.480 --> 00:50:50.280
call the transparent veil of death. Oh yeah, you know
876
00:50:50.320 --> 00:50:53.480
you have screens of death. This is a transparent so
877
00:50:53.519 --> 00:50:58.679
it turns slightly transparent or translucent translucent, and you know
878
00:50:59.159 --> 00:51:01.920
you have to press the reload buttons. So apparently in
879
00:51:02.000 --> 00:51:06.280
that net nine that is becoming much less frequent, Like
880
00:51:06.400 --> 00:51:10.280
the whole automatic reconnection thing is just going to happen.
881
00:51:10.559 --> 00:51:16.679
And I believe that they can make that acceptable to everybody,
882
00:51:16.760 --> 00:51:19.800
certainly to the real tech guys. So instead of it
883
00:51:19.880 --> 00:51:24.320
going slightly transparent, don't change the UI at all, right,
884
00:51:25.639 --> 00:51:28.800
just but it's frozen and it doesn't update and then
885
00:51:28.880 --> 00:51:30.800
just change the cursor to a spinning beach ball and
886
00:51:30.800 --> 00:51:31.880
everybody will be happy.
887
00:51:32.039 --> 00:51:33.360
Everybody will know what's happening.
888
00:51:33.679 --> 00:51:36.360
Yeah, it's like to say.
889
00:51:36.320 --> 00:51:38.880
The UI and spin beach ball, and then when it
890
00:51:38.880 --> 00:51:39.559
comes back.
891
00:51:39.719 --> 00:51:42.000
Why do they need to build a new view of that?
892
00:51:42.119 --> 00:51:42.320
You know?
893
00:51:42.840 --> 00:51:45.519
Yeah, that's the thing we trust you can you can
894
00:51:45.559 --> 00:51:48.159
be very subtle. I think it also indicates that possibly
895
00:51:48.199 --> 00:51:50.840
we will recover the veil. Doesn't give you a sense
896
00:51:50.840 --> 00:51:54.639
you're going to recover no veils, like call tech support. Yeah,
897
00:51:54.679 --> 00:51:55.360
what does this mean?
898
00:51:56.360 --> 00:51:57.679
It's gone it's gone wrong.
899
00:51:57.719 --> 00:52:00.559
We have pulled the sheet over the body drug.
900
00:52:02.440 --> 00:52:05.559
But it does it makes sense in a context where
901
00:52:05.599 --> 00:52:07.960
you do have to hit control R or F five
902
00:52:08.079 --> 00:52:10.719
or whatever to refresh the page to get it to reload.
903
00:52:10.760 --> 00:52:16.280
But once they've got that reconnect and heal process working
904
00:52:16.320 --> 00:52:17.760
properly and smoothly, then so.
905
00:52:17.719 --> 00:52:20.039
Anyway, I haven't checked it out in that NET nine,
906
00:52:20.079 --> 00:52:23.599
but I hear that it's a major feature upgrade of Blazer.
907
00:52:23.639 --> 00:52:26.599
There aren't very many.
908
00:52:25.840 --> 00:52:29.760
Fewer veils is a good one. Yeah, that'll make people
909
00:52:29.760 --> 00:52:30.719
happier without a doubt.
910
00:52:30.800 --> 00:52:31.000
Yeah.
911
00:52:31.079 --> 00:52:32.880
The other thing that I talk about at the end
912
00:52:32.920 --> 00:52:35.679
of the talk is is process. How we went from
913
00:52:35.960 --> 00:52:38.599
kind of s S A d M and prints to
914
00:52:39.400 --> 00:52:43.239
and all the waterfall things. And then there was extreme programming.
915
00:52:43.400 --> 00:52:47.559
But extreme programming generally only works when you've got Kent
916
00:52:47.639 --> 00:52:51.280
Beck and Ward Cunningham and extream programmers and you know,
917
00:52:52.199 --> 00:52:55.400
some of the greatest programmers who've ever lived, all in
918
00:52:55.440 --> 00:52:57.519
a room together, going how are we going to build this?
919
00:52:58.119 --> 00:53:00.440
So you can't do that on your average team of
920
00:53:00.599 --> 00:53:04.519
developers hired off of LinkedIn. And so then we got Agile,
921
00:53:04.800 --> 00:53:07.559
which was trying to make it so that we could
922
00:53:08.079 --> 00:53:11.000
where you get a scrum master and a product owner.
923
00:53:11.800 --> 00:53:15.960
And I've worked on multiple teams that called themselves agile
924
00:53:16.000 --> 00:53:18.880
and said they were doing scrum, that didn't have a
925
00:53:18.920 --> 00:53:21.880
scrum master, had a scrum master who was just a
926
00:53:21.920 --> 00:53:26.000
project manager anyway and wasn't really doing the scrum mastery things,
927
00:53:26.599 --> 00:53:29.800
and in an awful lot of cases, no product owner
928
00:53:29.960 --> 00:53:34.079
at all. Yeah, agile is is agile ish scrum butt.
929
00:53:36.000 --> 00:53:40.519
And yeah scrum, but we don't do this except.
930
00:53:41.800 --> 00:53:46.480
And then you see the scaled Agile framework for enterprise
931
00:53:46.519 --> 00:53:50.079
and the lean scaled Agile framework for enterprise, and the
932
00:53:50.159 --> 00:53:54.280
lean one is like for small to medium enterprises and
933
00:53:54.360 --> 00:53:58.519
it seems it's like the London Underground Tube map. It's
934
00:53:58.639 --> 00:54:03.280
just all the different things. And then when I'm sitting
935
00:54:03.519 --> 00:54:07.400
I'm sort of working on the new version of threat Badger,
936
00:54:07.440 --> 00:54:09.039
which is going to look exactly the same as the
937
00:54:09.039 --> 00:54:11.800
old version. I'm also working on another thing. I just
938
00:54:11.880 --> 00:54:16.960
use can ban board. I have a backlog column and
939
00:54:17.000 --> 00:54:20.639
a ready to do column, and a doing column and
940
00:54:20.679 --> 00:54:23.800
a done column when it's just me because I considered
941
00:54:23.840 --> 00:54:26.000
the testing and everything part of that, but you because
942
00:54:26.039 --> 00:54:31.880
it will put uat and everything in there. And the
943
00:54:32.519 --> 00:54:34.639
real issue that came along with scrum was you have
944
00:54:34.679 --> 00:54:38.559
your backlog grooming sessions, which are like weekly regardless of
945
00:54:38.800 --> 00:54:41.519
how many weeks you have in a sprint. Then you
946
00:54:41.559 --> 00:54:46.840
have your sprint planning session, and then you have your
947
00:54:46.880 --> 00:54:51.159
daily stand ups, which everyone tries to keep to fifteen minutes,
948
00:54:51.199 --> 00:54:53.159
but a lot of the time they run, you know,
949
00:54:53.239 --> 00:54:57.119
upwards of half an hour. And then you have your
950
00:54:57.599 --> 00:55:03.960
your retrospective and your demo and your sprint review. And
951
00:55:04.440 --> 00:55:08.320
if you're doing two week sprints, you've got ten days
952
00:55:08.920 --> 00:55:13.079
and you're spending like twenty percent of that in the
953
00:55:13.199 --> 00:55:16.719
various meetings, which means you're not building anything you're not
954
00:55:16.760 --> 00:55:21.159
shipping anything, you're not delivering anything, and where's the value.
955
00:55:21.440 --> 00:55:23.239
And if you are a small team of six or
956
00:55:23.280 --> 00:55:30.679
eight developers, and you are, if you're homogeneous, if you
957
00:55:30.760 --> 00:55:33.559
all know the domain and all the different technologies and
958
00:55:33.559 --> 00:55:35.519
all this sort of thing, then anyone can take any
959
00:55:35.679 --> 00:55:40.039
ticket from the ready to do column and say I'm
960
00:55:40.039 --> 00:55:43.039
doing this, and you can prioritize them just by moving
961
00:55:43.039 --> 00:55:46.639
them up and down. And you don't get into this
962
00:55:46.719 --> 00:55:51.400
thing and ah story points and T shirt sizes and
963
00:55:51.440 --> 00:55:56.400
all that stuff, and it's just kind of you don't
964
00:55:56.440 --> 00:55:59.559
have to do all that stuff. You can just put
965
00:55:59.599 --> 00:56:01.719
a board up and put some stories on it and
966
00:56:01.760 --> 00:56:05.519
move them across and just keep shipping and delivering.
967
00:56:05.639 --> 00:56:08.400
One step up from a notepad totally pretty much.
968
00:56:08.480 --> 00:56:09.280
Yeah, you know.
969
00:56:09.360 --> 00:56:10.960
When you mentioned the cam member in the first thing,
970
00:56:11.280 --> 00:56:13.400
it's just a way to visualize where we're stuck.
971
00:56:13.559 --> 00:56:13.920
That's right.
972
00:56:14.199 --> 00:56:15.920
That everybody can see that. You don't have to have
973
00:56:15.960 --> 00:56:18.280
a meeting. Nobody has to memorize, like you see it
974
00:56:18.400 --> 00:56:20.760
every day and you see it when it don.
975
00:56:20.719 --> 00:56:24.400
Sticks yes, and you know people can kind of go,
976
00:56:24.679 --> 00:56:26.599
that was there yesterday, why is it still there today?
977
00:56:27.280 --> 00:56:29.719
I'll go and ask him rather than having a stand up.
978
00:56:30.119 --> 00:56:33.360
The idea that you set aside fifteen minutes in the morning,
979
00:56:33.480 --> 00:56:35.519
I think it appeals to developers is like, all right,
980
00:56:35.519 --> 00:56:37.880
so I have to talk to people for fifteen minutes,
981
00:56:37.920 --> 00:56:43.119
but then yeah, I get th headphones on, getting motivated
982
00:56:43.199 --> 00:56:47.079
to be a low Yeah, it's another it's that developer
983
00:56:47.119 --> 00:56:47.760
experience thing.
984
00:56:47.800 --> 00:56:48.039
Again.
985
00:56:48.119 --> 00:56:51.320
We don't like talking to each other, so just contain
986
00:56:51.400 --> 00:56:54.039
it to work things. But no, you should be getting.
987
00:56:53.760 --> 00:56:56.159
Out of the way, have a couple of cups of coffee.
988
00:56:57.519 --> 00:56:59.519
Show has just been about containers, right, It's just that.
989
00:57:02.320 --> 00:57:07.400
Can contain the complexity. So yeah, So, like I say,
990
00:57:07.440 --> 00:57:12.480
I'm going to be doing that that talk. That's my
991
00:57:12.480 --> 00:57:15.920
my sort of tech talk for the next year at least.
992
00:57:17.639 --> 00:57:20.840
And oh, I would like to shout out Alex Russell.
993
00:57:22.320 --> 00:57:24.960
I think slightly late is his sort of handle on
994
00:57:25.119 --> 00:57:28.519
various media and everything. So and he worked on the
995
00:57:28.559 --> 00:57:31.159
Chrome browser for a long time, on the jamscript, run
996
00:57:31.159 --> 00:57:34.639
time v eight, that sort of thing. And he is
997
00:57:35.320 --> 00:57:38.440
like the little Dutch boy with his finger in the
998
00:57:38.519 --> 00:57:42.719
in the dam saying please please stop using all these
999
00:57:42.800 --> 00:57:46.360
JavaScript frameworks and everything. And so I was some of
1000
00:57:46.400 --> 00:57:49.000
the inspiration for the talk came from reading his blog
1001
00:57:49.000 --> 00:57:51.079
posts as well, so shout out to him.
1002
00:57:51.360 --> 00:57:53.280
Great infrequently noted is his blood.
1003
00:57:53.320 --> 00:57:54.079
There we go, that's the one.
1004
00:57:54.159 --> 00:57:56.280
Yeah, yeah, I'll throw it, including the show notes. I've
1005
00:57:56.280 --> 00:57:58.679
read it before. He's he is quite brilliant.
1006
00:57:58.920 --> 00:58:00.679
He is. He is a very very smart guy and
1007
00:58:00.719 --> 00:58:03.440
we should listen to him.
1008
00:58:03.519 --> 00:58:08.360
Not wrong. Yeah, so you got this talk. Where are
1009
00:58:08.400 --> 00:58:11.400
you going to be delivering that in the upcoming months?
1010
00:58:11.639 --> 00:58:14.119
So next year it's probably going to be at the
1011
00:58:14.239 --> 00:58:19.960
NDC conferences, go to conferences possibly dev Ox. DeVos have
1012
00:58:20.039 --> 00:58:23.559
started asking me to come and do things now because
1013
00:58:23.559 --> 00:58:26.320
I've been doing all these you know how JavaScript happened
1014
00:58:26.320 --> 00:58:29.440
and the Albatross project and programming as great as mistakes,
1015
00:58:29.800 --> 00:58:32.760
so they're not tech specific and so I'm getting to
1016
00:58:32.800 --> 00:58:36.239
go and do other conferences and meet entirely new audiences,
1017
00:58:36.280 --> 00:58:39.760
which is wonderful. One. I'm really enjoying it. And also
1018
00:58:39.800 --> 00:58:42.360
my kids are at that age now where I can
1019
00:58:43.679 --> 00:58:47.039
do more traveling and speaking engagements, and I'm really looking
1020
00:58:47.039 --> 00:58:48.159
forward to getting into it.
1021
00:58:48.280 --> 00:58:52.719
Yeah, there's a couple of conferences in Sweden in Stockholm
1022
00:58:52.840 --> 00:58:56.280
that happened every year. You have Sam and sweet Toob.
1023
00:58:56.719 --> 00:58:59.400
Yes, i will definitely try and get to dev some
1024
00:59:01.440 --> 00:59:03.519
I've done that a couple of times. That's always a
1025
00:59:03.559 --> 00:59:06.360
good conference. But yes, if anyone's listening to this and
1026
00:59:06.400 --> 00:59:11.079
would like me to come to your your massive conference
1027
00:59:11.119 --> 00:59:13.920
with three thousand attendees, but even if you would just
1028
00:59:14.000 --> 00:59:16.079
like me to pop over and talk to a meetup
1029
00:59:16.159 --> 00:59:20.000
or a user group or something, then get in touch
1030
00:59:20.880 --> 00:59:22.280
and we'll see what we can do.
1031
00:59:22.519 --> 00:59:25.400
Check out the render lads link is on the show notes.
1032
00:59:25.519 --> 00:59:28.840
Just grab a busfair a sandwich in a hostel.
1033
00:59:29.079 --> 00:59:33.119
Yeah, that'll do me. Wake outch have base will travel.
1034
00:59:33.400 --> 00:59:34.119
Yeah, there you go.
1035
00:59:34.719 --> 00:59:37.079
Mark. It's always a pleasure talking to you. You always
1036
00:59:37.480 --> 00:59:39.960
bring something interesting to the table and this is no difference.
1037
00:59:39.960 --> 00:59:42.239
So thank you, thank you for having me on again.
1038
00:59:42.280 --> 00:59:43.960
It's it's really great talking with you guys.
1039
00:59:44.000 --> 00:59:46.599
All right, we'll talk to you next time. I'm dot
1040
00:59:46.679 --> 01:00:09.800
net Rucks. Dot net Rocks is brought to you by
1041
01:00:09.880 --> 01:00:14.559
Franklin's Net and produced by Pop Studios, a full service audio,
1042
01:00:14.679 --> 01:00:19.119
video and post production facility located physically in New London, Connecticut,
1043
01:00:19.360 --> 01:00:24.159
and of course in the cloud online at pwop dot com.
1044
01:00:24.360 --> 01:00:26.480
Visit our website at d O t N E t
1045
01:00:26.719 --> 01:00:30.760
R O c k S dot com for RSS feeds, downloads,
1046
01:00:30.880 --> 01:00:34.599
mobile apps, comments, and access to the full archives going
1047
01:00:34.599 --> 01:00:38.000
back to show number one, recorded in September two thousand
1048
01:00:38.039 --> 01:00:40.679
and two. And make sure you check out our sponsors.
1049
01:00:40.840 --> 01:00:43.840
They keep us in business. Now go write some code.
1050
01:00:44.199 --> 01:01:01.239
See you next time you got jed middle vansported the
1051
01:01:01.679 --> 01:01:01.719
s