1
00:00:00,000 --> 00:00:19,120
Hello dear listeners, welcome to a milestone episode of the Awesome Algo podcast, episode

2
00:00:19,120 --> 00:00:20,800
number 20.

3
00:00:20,800 --> 00:00:27,200
Today we are diving into the latest news in the Algorand ecosystem and the Algorkit project,

4
00:00:27,200 --> 00:00:32,840
hopefully sparkling a bit more technical details and delving a little bit deeper into some

5
00:00:32,840 --> 00:00:39,640
of the features that we think were quite impactful in terms of deliverables in the year of 2023

6
00:00:39,640 --> 00:00:45,080
and obviously some things to get excited about this year and going onwards.

7
00:00:45,080 --> 00:00:50,680
This episode is a bit of a milestone for me personally, not just in number but in the

8
00:00:50,680 --> 00:00:55,360
format as well, because this is the first time we are hosting a roundtable discussion

9
00:00:55,360 --> 00:01:01,960
with three distinguished guests who will offer us an insider look into the latest advancements

10
00:01:01,960 --> 00:01:05,040
and exciting developments in this space.

11
00:01:05,040 --> 00:01:09,640
First up we have John Woods, the city of Algorand Foundation.

12
00:01:09,640 --> 00:01:15,200
John joined Algorand in 2022, bringing a wealth of experience in blockchain technology and

13
00:01:15,200 --> 00:01:16,440
software architecture.

14
00:01:16,440 --> 00:01:22,000
His impressive resume includes working for companies like Cardano, Informatica, Consensys,

15
00:01:22,000 --> 00:01:26,600
and known in the Algorand space as a leader who has deep commitments to enhancing the developer

16
00:01:26,600 --> 00:01:31,920
experience and integrating user-friendly programming languages such as Python into the blockchain

17
00:01:31,920 --> 00:01:34,040
technology powering Algorand.

18
00:01:34,040 --> 00:01:40,600
John is a passionate advocate of fork, decentralized, self-savaring, privacy-preserving technologies.

19
00:01:40,600 --> 00:01:46,640
I am eager to hear his insights, especially on the recent Lambda updates that are revolutionizing

20
00:01:46,640 --> 00:01:49,480
transaction finality speeds.

21
00:01:49,480 --> 00:01:56,120
Next up we welcome Rob Moore, chief technology officer at MakerX, an Australian venture-focused

22
00:01:56,120 --> 00:01:57,680
digital product firm.

23
00:01:57,680 --> 00:02:04,080
Rob's expertise in leading teams and innovating in the tech space, particularly in mobile,

24
00:02:04,080 --> 00:02:09,080
web, ethical web-free and cloud development is truly inspiring.

25
00:02:09,080 --> 00:02:13,880
He's been instrumental in steering MakerX explorations into the web-tree ecosystems,

26
00:02:13,880 --> 00:02:19,160
focusing on ethical and pragmatic approaches that do not abandon modern standards of software

27
00:02:19,160 --> 00:02:23,080
development and modern software engineering practices.

28
00:02:23,080 --> 00:02:29,040
As a colleague and a mentor, Rob's insights are invaluable to me personally and I'm sure

29
00:02:29,040 --> 00:02:31,520
they will be to you too.

30
00:02:31,520 --> 00:02:37,800
And last but certainly not least, we have Alessandro, head of product at Algorand Foundation.

31
00:02:37,800 --> 00:02:43,240
With MBA in background specializing in digital finance, Alessandro has seamlessly transitioned

32
00:02:43,240 --> 00:02:47,920
into software engineering, combined technical and business skills to deliver innovative

33
00:02:47,920 --> 00:02:49,000
solutions.

34
00:02:49,000 --> 00:02:54,720
He is at the forefront of product development and strategy, playing a pivotal role in overseeing

35
00:02:54,720 --> 00:03:00,400
the product vision and roadmap on Algorand's global blockchain platform, with primarily

36
00:03:00,400 --> 00:03:04,240
focus for him right now being the AlgoCAD project.

37
00:03:04,240 --> 00:03:09,560
His unique perspective on marrying engineering with digital finance promises to bring a fascinating

38
00:03:09,560 --> 00:03:11,840
dimension to our discussion.

39
00:03:11,840 --> 00:03:17,720
Today we'll cover a range of topics as I already mentioned, and with that, episode number 20

40
00:03:17,720 --> 00:03:20,480
of the Awesome Algo podcast starts now.

41
00:03:20,480 --> 00:03:28,720
And with that, I would like to start with John and the first topic as I mentioned, some

42
00:03:28,720 --> 00:03:33,600
introductions obviously and recap on AlgoCAD and Algorand's technological advancements

43
00:03:33,600 --> 00:03:36,400
and there has been a lot of exciting news and changes.

44
00:03:36,400 --> 00:03:45,360
So given your role as a CTO of Algorand Foundation, what do you think are the most significant

45
00:03:45,360 --> 00:03:51,480
technical milestones that Algorand aims to achieve in 2024?

46
00:03:51,480 --> 00:03:57,760
And how do you think these advancements enhance developer experience on Algorand?

47
00:03:57,760 --> 00:04:01,800
And perhaps push the whole industry, because I think we are in this very interesting stage

48
00:04:01,800 --> 00:04:04,360
where you have a lot of companies, right?

49
00:04:04,360 --> 00:04:09,400
There's like 200, 300,000 engineers in the world working in it.

50
00:04:09,400 --> 00:04:11,320
So it's still very minuscule area.

51
00:04:11,320 --> 00:04:16,640
Obviously, there are market caps of billions, but it's not in there in the big leagues just

52
00:04:16,640 --> 00:04:22,440
yet, but a lot of companies are finally starting to realize, okay, there's too much competition.

53
00:04:22,440 --> 00:04:23,760
We all have same goals, right?

54
00:04:23,760 --> 00:04:26,200
We need to push towards standardizing.

55
00:04:26,200 --> 00:04:33,480
We need to push towards building better frameworks to work with legal aspects of applying this

56
00:04:33,480 --> 00:04:35,680
and improving the accessibility.

57
00:04:35,680 --> 00:04:40,840
So I'm hoping that this is actually a sign that industry is finally getting to a stage

58
00:04:40,840 --> 00:04:47,800
where everything is maturing and people realizing that 100 L1s or 100 L2s are not going to

59
00:04:47,800 --> 00:04:53,520
make it if they will constantly continue pretty much competing with each other.

60
00:04:53,520 --> 00:04:55,320
I totally agree.

61
00:04:55,320 --> 00:04:56,320
Hello, everyone.

62
00:04:56,320 --> 00:04:57,320
Great to be here.

63
00:04:57,320 --> 00:04:59,320
Thanks for the opportunity to speak.

64
00:04:59,320 --> 00:05:08,360
And so in the year and a half that I've been working on Algorand, it's in the best shape

65
00:05:08,360 --> 00:05:09,360
I've ever seen.

66
00:05:09,360 --> 00:05:14,600
The protocol is in great shape and we've got an incredible roadmap and I'm going to talk

67
00:05:14,600 --> 00:05:16,440
about some of those things.

68
00:05:16,440 --> 00:05:21,600
The developer experience, which is core to Algorand's DNA, is in the best shape it's

69
00:05:21,600 --> 00:05:28,480
ever been in, thanks to the work directly of Alizandro, who has been leading product

70
00:05:28,480 --> 00:05:36,920
for the foundation with a job-zine level of care, and MakerX, our technical partner,

71
00:05:36,920 --> 00:05:43,960
who have been implementing Alizandro's vision.

72
00:05:43,960 --> 00:05:46,440
And then finally, the ecosystem as well.

73
00:05:46,440 --> 00:05:47,920
It's on fire.

74
00:05:47,920 --> 00:05:49,720
I'm seeing so much excitement from people.

75
00:05:49,720 --> 00:05:53,160
I'm seeing so many new projects brought to the platform.

76
00:05:53,160 --> 00:05:56,040
Our discords are electric.

77
00:05:56,040 --> 00:05:57,400
The forums are alive.

78
00:05:57,400 --> 00:06:02,800
And so, you know, for the, I guess, it's an all-time high in terms of excitement, in

79
00:06:02,800 --> 00:06:08,560
terms of positivity, and in terms of work in the last year and a half.

80
00:06:08,560 --> 00:06:10,280
So I'm in a happy mode.

81
00:06:10,280 --> 00:06:11,280
I'm feeling good.

82
00:06:11,280 --> 00:06:15,760
And so, let me walk you through some of the things that we're doing.

83
00:06:15,760 --> 00:06:20,480
So on the protocol side, you could look at the various things we're doing.

84
00:06:20,480 --> 00:06:27,560
We came out with our roadmap yesterday, or I think two days ago, on the 17th or 18th.

85
00:06:27,560 --> 00:06:30,800
And so, all the days are blending into one.

86
00:06:30,800 --> 00:06:35,200
And so, our roadmap basically defines the things we're going to do in 2024 on the protocol

87
00:06:35,200 --> 00:06:37,560
side and on the developer experience side.

88
00:06:37,560 --> 00:06:42,000
But if you look at the protocol, I mean, there are certain parts of it that kind of dovetail

89
00:06:42,000 --> 00:06:45,000
well together or marry well together.

90
00:06:45,000 --> 00:06:50,720
For example, consensus incentives, which is, of course, this change.

91
00:06:50,720 --> 00:06:56,760
We're bringing this tectonic shift that's going to come to Algorand where individuals

92
00:06:56,760 --> 00:07:02,240
get rewarded in Algo for producing blocks and validating transactions on the Algorand

93
00:07:02,240 --> 00:07:03,240
network.

94
00:07:03,240 --> 00:07:07,960
Essentially, the pure proof of stake version of mining, you will now get, you know, by

95
00:07:07,960 --> 00:07:10,880
the middle of this year, you'll get rewarded for that act.

96
00:07:10,880 --> 00:07:15,960
And so, this has two major side effects.

97
00:07:15,960 --> 00:07:22,800
By rewarding people for validating transactions, running nodes and staking their Algo, we increase

98
00:07:22,800 --> 00:07:24,800
the number of nodes that are active on the network.

99
00:07:24,800 --> 00:07:28,320
And so, this decentralizes the network.

100
00:07:28,320 --> 00:07:33,440
It ensures that there's lots of data propagation path network because the nodes are all interconnected.

101
00:07:33,440 --> 00:07:39,080
So, it becomes this dense network of nodes.

102
00:07:39,080 --> 00:07:42,120
And it also critically secures the network.

103
00:07:42,120 --> 00:07:46,920
So, the more Algorand it's staked, the more expensive it is and the more difficult it

104
00:07:46,920 --> 00:07:50,880
is to mount any kind of attack against the decentralized network.

105
00:07:50,880 --> 00:07:54,760
So, that's stage one with consensus incentives.

106
00:07:54,760 --> 00:08:00,720
And looking at another part of the roadmap that we're bringing this year, which is what

107
00:08:00,720 --> 00:08:06,720
we call the Capoblanca variation with our chess themed roadmap, we're going to be bringing

108
00:08:06,720 --> 00:08:09,440
peer to peer as a network propagation topology.

109
00:08:09,440 --> 00:08:16,080
And so, what this means is that we're shifting away from the current standard, which is where

110
00:08:16,080 --> 00:08:19,000
participation nodes or consensus nodes, as I'm going to call them for the rest of the

111
00:08:19,000 --> 00:08:24,160
interview because I think a consensus node is just a simpler term because that's what

112
00:08:24,160 --> 00:08:25,160
they do.

113
00:08:25,160 --> 00:08:26,680
These nodes are running consensus.

114
00:08:26,680 --> 00:08:27,960
Right now, they're not connected to each other.

115
00:08:27,960 --> 00:08:28,960
They don't talk to each other.

116
00:08:28,960 --> 00:08:34,560
Instead, they talk outwards to this kind of ring of relays, which propagate their work,

117
00:08:34,560 --> 00:08:39,480
the messages, the transactions, the proposals, these relays propagate that and the consensus

118
00:08:39,480 --> 00:08:41,600
nodes just talk to the relays.

119
00:08:41,600 --> 00:08:47,640
And so, what this means is that we have this kind of bunch of entities that are responsible

120
00:08:47,640 --> 00:08:52,280
for the decentralization of the network and they're controlled by a small number of entities.

121
00:08:52,280 --> 00:08:55,080
I don't know, 10, 15 different entities will run these relays.

122
00:08:55,080 --> 00:08:57,560
And so, we want to improve the decentralization there.

123
00:08:57,560 --> 00:09:03,320
And so, with our release of the Capoblanca variation or peer to peer networking, we're

124
00:09:03,320 --> 00:09:07,520
going to make a change to the network topology so that consensus nodes can now start talking

125
00:09:07,520 --> 00:09:08,520
to each other directly.

126
00:09:08,520 --> 00:09:11,600
They don't have to go via this relay middleman.

127
00:09:11,600 --> 00:09:13,680
And so, this decentralizes the network.

128
00:09:13,680 --> 00:09:17,000
It decreases the reliance on relays and on the Algorand Foundation.

129
00:09:17,000 --> 00:09:21,680
And it means that even without an Algorand Foundation, even without an Algorand Technologies

130
00:09:21,680 --> 00:09:28,760
slash Inc., we would still, or users will still have the ability to use Algorand without

131
00:09:28,760 --> 00:09:30,640
any authority or any oversight.

132
00:09:30,640 --> 00:09:34,320
And the blocks and the transactions, et cetera, could propagate directly from user to user

133
00:09:34,320 --> 00:09:35,880
or peer to peer.

134
00:09:35,880 --> 00:09:37,920
And so, this is hugely important.

135
00:09:37,920 --> 00:09:41,000
And so, you can see how these two things married together, right?

136
00:09:41,000 --> 00:09:44,640
Just like chocolate and orange, strawberries and ice cream.

137
00:09:44,640 --> 00:09:45,640
What else do I like?

138
00:09:45,640 --> 00:09:46,640
Coffee and milk.

139
00:09:46,640 --> 00:09:47,640
You know, they...

140
00:09:47,640 --> 00:09:49,640
How many oranges, though, John?

141
00:09:49,640 --> 00:09:53,920
Four, the four oranges.

142
00:09:53,920 --> 00:09:57,560
The reason they married well so well together is because, first, we increased the number

143
00:09:57,560 --> 00:09:59,440
of nodes and the number of pathways.

144
00:09:59,440 --> 00:10:01,160
We increased the security of the network.

145
00:10:01,160 --> 00:10:02,160
Everyone's running these nodes.

146
00:10:02,160 --> 00:10:04,560
And then, boom, we drop peer to peer.

147
00:10:04,560 --> 00:10:07,360
And now, all of a sudden, all those nodes that have just sprung up, they're now talking

148
00:10:07,360 --> 00:10:08,360
to each other.

149
00:10:08,360 --> 00:10:10,920
And we have this very dense data propagation pathway.

150
00:10:10,920 --> 00:10:11,920
So, super cool.

151
00:10:11,920 --> 00:10:13,720
And so, consensus incentivization.

152
00:10:13,720 --> 00:10:16,800
We have this chess-themed roadmap.

153
00:10:16,800 --> 00:10:20,040
We've given all of the major milestones a name.

154
00:10:20,040 --> 00:10:23,960
And so, consensus incentivization is Reti.

155
00:10:23,960 --> 00:10:26,320
And then, peer to peer is the Kappa Blanket variation.

156
00:10:26,320 --> 00:10:28,320
These are moves or opening moves in chess.

157
00:10:28,320 --> 00:10:32,800
And they all have some meaning, which you can read on our roadmap at the Algorand Duff

158
00:10:32,800 --> 00:10:33,800
Foundation website.

159
00:10:33,800 --> 00:10:39,640
Did you have to go and research chess moves, John, to learn all of them?

160
00:10:39,640 --> 00:10:43,600
So, like, I learned chess from a great...

161
00:10:43,600 --> 00:10:45,680
A grand-uncle of mine one day on Christmas.

162
00:10:45,680 --> 00:10:46,680
Oh, wow.

163
00:10:46,680 --> 00:10:47,680
Yeah.

164
00:10:47,680 --> 00:10:50,520
And I'm terrible at it.

165
00:10:50,520 --> 00:10:52,640
But it's a beautiful game.

166
00:10:52,640 --> 00:10:56,600
I think I lost a little bit of love for it when I realized it could be brute-forceable,

167
00:10:56,600 --> 00:10:57,600
you know?

168
00:10:57,600 --> 00:10:59,960
It's like, there is a set path at any point.

169
00:10:59,960 --> 00:11:03,920
And so, to me, that deterministic nature kind of ruins the game a little bit, whereas

170
00:11:03,920 --> 00:11:08,000
you may not have that with other games like poker and stuff like that.

171
00:11:08,000 --> 00:11:11,720
But like, of course, I respect these, like, hive-mind people who are able to just look

172
00:11:11,720 --> 00:11:14,440
at the board and think five-ply and like...

173
00:11:14,440 --> 00:11:16,400
And it's an incredible skill.

174
00:11:16,400 --> 00:11:18,280
And of course, it's kind of...

175
00:11:18,280 --> 00:11:20,560
So I think it's intellectual, but also still quite sexy.

176
00:11:20,560 --> 00:11:25,200
So the team, and it was nothing to do with me, they just asked, hey, do you like this?

177
00:11:25,200 --> 00:11:27,040
And I'm like, yeah, I like it.

178
00:11:27,040 --> 00:11:30,920
So they came up with this idea.

179
00:11:30,920 --> 00:11:34,040
And then they went and selected the different moves and, you know, the relevance of the

180
00:11:34,040 --> 00:11:35,040
different moves.

181
00:11:35,040 --> 00:11:39,120
Like, for example, we're doing our non-archival relays and we're sacrificing archival relays.

182
00:11:39,120 --> 00:11:42,400
So they call it the Queen's Gambit, which is kind of like where you sacrifice a pawn.

183
00:11:42,400 --> 00:11:44,200
And so they came up with all this great stuff.

184
00:11:44,200 --> 00:11:45,200
And I think they've done a wonderful...

185
00:11:45,200 --> 00:11:47,880
It's a pretty impressive job, I think.

186
00:11:47,880 --> 00:11:49,400
Yeah, totally.

187
00:11:49,400 --> 00:11:51,400
And so maybe, you know...

188
00:11:51,400 --> 00:11:57,120
So looking at consensus incentivization and peer-to-peer, I would class them as like decentralization

189
00:11:57,120 --> 00:11:58,600
and security.

190
00:11:58,600 --> 00:12:01,800
And then if you look at some of the other things we're doing on the protocol, as an example,

191
00:12:01,800 --> 00:12:05,440
dynamic roundtimes, that's not focusing on decentralization or security.

192
00:12:05,440 --> 00:12:10,560
That's focusing on improving the efficiency of the network and how fast blocks propagate.

193
00:12:10,560 --> 00:12:12,560
And so indeed, how many transactions per second we can have.

194
00:12:12,560 --> 00:12:16,400
So I think, though, you know, Algorand was running well.

195
00:12:16,400 --> 00:12:18,120
We didn't have to focus on these things.

196
00:12:18,120 --> 00:12:19,880
It was fast enough.

197
00:12:19,880 --> 00:12:23,200
It's, you know, one of the fastest blockchains out there.

198
00:12:23,200 --> 00:12:26,800
It was decentralized, I think, enough, you know.

199
00:12:26,800 --> 00:12:27,800
Certainly there's different lenses.

200
00:12:27,800 --> 00:12:31,720
You can look at decentralization, whether it's the distribution of the token, the data

201
00:12:31,720 --> 00:12:37,240
propagation path, the actual active consensus and who controls the production of blocks

202
00:12:37,240 --> 00:12:38,240
and the minting of blocks.

203
00:12:38,240 --> 00:12:39,840
So there's different lenses you can view.

204
00:12:39,840 --> 00:12:43,200
But I think functionally, if you look across, we were pretty good, but we didn't want to

205
00:12:43,200 --> 00:12:47,280
stop and just sit there on our laurels and rest and say, well, it's good enough.

206
00:12:47,280 --> 00:12:49,760
We wanted to strive for better.

207
00:12:49,760 --> 00:12:55,840
And by bringing incentivization to consensus, which is adithetical to Sylvio's original

208
00:12:55,840 --> 00:13:04,080
thought, you know, that consensus will be executed, you know, altruistically.

209
00:13:04,080 --> 00:13:07,720
But you know, empirically, over time, we've looked and we've not seen that happen.

210
00:13:07,720 --> 00:13:14,200
So we're kind of saying, hey, okay, you know, that contention didn't hold in the real world.

211
00:13:14,200 --> 00:13:16,120
And so we're pivoting to make it better.

212
00:13:16,120 --> 00:13:17,440
Bringing peer to peer.

213
00:13:17,440 --> 00:13:18,440
We don't have to do that.

214
00:13:18,440 --> 00:13:24,320
It's functioning well, but we want to make it true to the value proposition of cryptocurrency,

215
00:13:24,320 --> 00:13:26,400
web three, decentralization, self-suffer.

216
00:13:26,400 --> 00:13:29,280
Do we want these things to be true?

217
00:13:29,280 --> 00:13:32,640
And so that's why we're focusing on that.

218
00:13:32,640 --> 00:13:34,200
So that's the protocol.

219
00:13:34,200 --> 00:13:36,200
I think it's in pretty great shape.

220
00:13:36,200 --> 00:13:38,600
And in 2025, we've got some even cooler things coming in.

221
00:13:38,600 --> 00:13:43,000
I think we can discuss it a little bit later on.

222
00:13:43,000 --> 00:13:47,680
So now to this, to the, probably the most important thing for me, it's the developer

223
00:13:47,680 --> 00:13:48,840
experience.

224
00:13:48,840 --> 00:13:51,720
When I get a new MacBook and people know I like my MacBooks, although they're, Apple

225
00:13:51,720 --> 00:13:55,720
are pissing me off a little bit recently with some of the bugs that I'm finding and

226
00:13:55,720 --> 00:13:57,720
I reported them and they're not getting that.

227
00:13:57,720 --> 00:13:58,720
John, John, John.

228
00:13:58,720 --> 00:13:59,720
Yeah.

229
00:13:59,720 --> 00:14:00,720
Yeah.

230
00:14:00,720 --> 00:14:01,720
So hang on.

231
00:14:01,720 --> 00:14:02,720
Let me just see if anyone's watching from Apple.

232
00:14:02,720 --> 00:14:03,720
Let me just see here.

233
00:14:03,720 --> 00:14:04,720
Give me one second.

234
00:14:04,720 --> 00:14:05,720
I was fine.

235
00:14:05,720 --> 00:14:06,720
I'm going to put that here.

236
00:14:06,720 --> 00:14:07,720
It's really annoying me.

237
00:14:07,720 --> 00:14:08,720
I'm just signing in.

238
00:14:08,720 --> 00:14:09,720
Just give me one second.

239
00:14:09,720 --> 00:14:10,720
Okay.

240
00:14:10,720 --> 00:14:20,080
If you can please look at feedback request FB13463773.

241
00:14:20,080 --> 00:14:22,360
It's driving me insane and I'm a big customer.

242
00:14:22,360 --> 00:14:25,080
I will make sure to include it in the description of the episode actually.

243
00:14:25,080 --> 00:14:29,560
So if it's the Apple support engineer, you can click on the, for more directly.

244
00:14:29,560 --> 00:14:30,560
And come to me directly.

245
00:14:30,560 --> 00:14:33,840
If you're a support engineer at Apple and you like Algorand, I don't know, I'll reward

246
00:14:33,840 --> 00:14:35,080
you with some algo or something like that.

247
00:14:35,080 --> 00:14:36,080
We can do a deal.

248
00:14:36,080 --> 00:14:38,960
Just fix the book.

249
00:14:38,960 --> 00:14:41,520
So I'm a person to get my new MacBook.

250
00:14:41,520 --> 00:14:46,400
First thing I do is like I sit down and I set it up perfectly.

251
00:14:46,400 --> 00:14:48,880
I care about how my terminal looks.

252
00:14:48,880 --> 00:14:50,240
I care about the fonts.

253
00:14:50,240 --> 00:14:52,000
I care about whether it's using clear type.

254
00:14:52,000 --> 00:14:55,760
I care about installing power level, you know, 9K.

255
00:14:55,760 --> 00:14:57,720
I care about installing ZSH.

256
00:14:57,720 --> 00:15:01,440
I care about my package managers.

257
00:15:01,440 --> 00:15:06,760
And I think to a lot of people, the developer experience is so core to their day to day,

258
00:15:06,760 --> 00:15:10,080
they feel this exact same way about how they develop and engineer things.

259
00:15:10,080 --> 00:15:11,600
And so people will have preferences.

260
00:15:11,600 --> 00:15:13,400
They have their Visual Studio Code set up.

261
00:15:13,400 --> 00:15:15,280
They have themes installed.

262
00:15:15,280 --> 00:15:17,320
They have Vim bindings installed.

263
00:15:17,320 --> 00:15:20,960
They want to work in a modern environment that feels good.

264
00:15:20,960 --> 00:15:22,120
This is people's bread and butter.

265
00:15:22,120 --> 00:15:25,040
It's like the, you know, if you're working on a construction site, you care about the

266
00:15:25,040 --> 00:15:26,040
tools you use.

267
00:15:26,040 --> 00:15:28,040
You care about you have high quality hammers, high quality drills.

268
00:15:28,040 --> 00:15:31,800
You know, if you're driving a taxi, you want to make sure that the car you're driving for

269
00:15:31,800 --> 00:15:33,400
nine hours a day is comfortable.

270
00:15:33,400 --> 00:15:36,120
And so these are people's tools for work.

271
00:15:36,120 --> 00:15:41,600
And it's essential that we make it fun and as easy as possible and take the friction

272
00:15:41,600 --> 00:15:42,680
away.

273
00:15:42,680 --> 00:15:46,480
And so, you know, when I first started in Algorand, I was interviewing with Stacey.

274
00:15:46,480 --> 00:15:48,440
She said to me, what are the things you'd improve?

275
00:15:48,440 --> 00:15:52,560
And the most obvious glaring thing, because prepping for the interview, I was like trying

276
00:15:52,560 --> 00:15:57,320
to, you know, just stick a contract on mainnet, see what the experience was like.

277
00:15:57,320 --> 00:15:59,200
And I was so confused.

278
00:15:59,200 --> 00:16:03,200
Reach Albo builder, Teal, PyTeal, what's the language is a Python?

279
00:16:03,200 --> 00:16:04,200
No, it's not.

280
00:16:04,200 --> 00:16:05,200
It's kind of like bindings.

281
00:16:05,200 --> 00:16:06,200
I'm not sure what's going on.

282
00:16:06,200 --> 00:16:08,280
What, what, what development environment do you use?

283
00:16:08,280 --> 00:16:10,960
I just, I know everyone uses visual studio code.

284
00:16:10,960 --> 00:16:11,960
What's the good plugins for that?

285
00:16:11,960 --> 00:16:12,960
No, there's not.

286
00:16:12,960 --> 00:16:13,960
Is there any static analysis?

287
00:16:13,960 --> 00:16:14,960
No, there's not.

288
00:16:14,960 --> 00:16:15,960
Is there a command line tool like Truffle?

289
00:16:15,960 --> 00:16:16,960
No, there's not.

290
00:16:16,960 --> 00:16:17,960
Is there hard?

291
00:16:17,960 --> 00:16:18,960
It was like a mess.

292
00:16:18,960 --> 00:16:23,160
And so, you know, Alexander and I sat down like week one and we're looking at this and

293
00:16:23,160 --> 00:16:27,160
going, what are the things we need to do to fix the developer user experience?

294
00:16:27,160 --> 00:16:32,360
Because it's got to feel like that new MacBook experience, you know, maybe not perfect, but

295
00:16:32,360 --> 00:16:35,280
fun draws you in.

296
00:16:35,280 --> 00:16:36,800
You want to develop for it.

297
00:16:36,800 --> 00:16:41,400
It gets out of the way, you know, that the tools get you to expressing your intent, your

298
00:16:41,400 --> 00:16:44,040
business logic and your idea.

299
00:16:44,040 --> 00:16:48,320
And so, AldoKit is that it's, it's, it's been a revelation.

300
00:16:48,320 --> 00:16:51,920
It's been probably the work I'm most proud of that, excuse me, that we've done that

301
00:16:51,920 --> 00:16:56,640
that I've done or that the CTO kind of function has done.

302
00:16:56,640 --> 00:17:01,280
And so, Alessandro has been the genius behind it, the vision behind it, the strategy behind

303
00:17:01,280 --> 00:17:02,280
it.

304
00:17:02,280 --> 00:17:06,760
And MakerX, like I mentioned earlier on, have been an incredible partner.

305
00:17:06,760 --> 00:17:10,280
I've worked with so many vendors over the years through all the jobs I've had.

306
00:17:10,280 --> 00:17:13,520
I've worked at many outsourced, if you want to call it outsourced tech.

307
00:17:13,520 --> 00:17:14,520
I don't see them like that.

308
00:17:14,520 --> 00:17:17,360
It's when we work together, it's like they are, they might as well be members of the

309
00:17:17,360 --> 00:17:18,360
foundation.

310
00:17:18,360 --> 00:17:21,320
They work so closely with us and they care so much about the output of their, you know,

311
00:17:21,320 --> 00:17:22,320
their product.

312
00:17:22,320 --> 00:17:27,520
But what we've built is so much more, you know, it's, it's, it's, it's revolutionized

313
00:17:27,520 --> 00:17:31,880
the experience in Algorand because Algorand at its heart is a platform for execution

314
00:17:31,880 --> 00:17:32,880
of code.

315
00:17:32,880 --> 00:17:35,120
The AVM is a virtual CPU.

316
00:17:35,120 --> 00:17:36,280
It's got instructions.

317
00:17:36,280 --> 00:17:41,960
You write code, we call the code smart contracts, the smart contracts run on, on the AVM.

318
00:17:41,960 --> 00:17:47,640
And so, if, if, if Algorand has no, has no developers and doesn't have great apps and

319
00:17:47,640 --> 00:17:50,720
we don't make it easy, all it is is a network where people can send Algo back and forth to

320
00:17:50,720 --> 00:17:51,720
each other.

321
00:17:51,720 --> 00:17:53,620
So that's why it became so much smarter.

322
00:17:53,620 --> 00:17:57,880
Algorand, Algorand, Algorand's ResonDItra is to provide a platform for people to express

323
00:17:57,880 --> 00:17:59,780
business logic on the chain.

324
00:17:59,780 --> 00:18:08,160
And Algor kid has provided what I consider world class industry leading tooling for this.

325
00:18:08,160 --> 00:18:14,200
And so you're in Visual Studio, it's a normal experience, it's a one button, compile and

326
00:18:14,200 --> 00:18:15,200
deploy.

327
00:18:15,200 --> 00:18:16,680
It's CI CD.

328
00:18:16,680 --> 00:18:20,280
It's command line tools to help you build, test and deploy.

329
00:18:20,280 --> 00:18:21,280
It's frameworks.

330
00:18:21,280 --> 00:18:25,840
It's languages that you know like Python and soon to be expanded.

331
00:18:25,840 --> 00:18:34,000
And so, the team I've managed to achieve opens the floodgates for everyone to build on Algorand,

332
00:18:35,200 --> 00:18:39,680
I couldn't be happier. I think it's probably the most important thing as an entire group that

333
00:18:39,680 --> 00:18:44,880
we've done. Without this, the oxygen would have been sucked out of the room. We needed this.

334
00:18:44,880 --> 00:18:48,000
You can need a great protocol, sure, but if you don't have great dev tools,

335
00:18:48,000 --> 00:18:53,760
you're in big trouble. And we finally have great dev tools.

336
00:18:53,760 --> 00:18:59,840
And if I made some remarks here, basically, the thing is that it's also,

337
00:19:00,960 --> 00:19:06,720
I would say based on observations of, because for me, it was also rather a pivot to

338
00:19:07,680 --> 00:19:14,400
delve into blockchain and for most part of the journey, it was a process of demystifying

339
00:19:14,400 --> 00:19:21,120
this industry a little bit for myself as well. And I do notice that there's quite a huge,

340
00:19:21,920 --> 00:19:29,120
I would say inflow of web developers, because there's obviously a lot of references and ties to

341
00:19:29,680 --> 00:19:34,960
Dapps, which in this case, mostly have a rather simplified business logic, because everything

342
00:19:34,960 --> 00:19:39,440
is executed on chain. Well, not everything, right, depends on the platform, the protocol,

343
00:19:39,440 --> 00:19:46,320
but mostly blockchain allows you to simplify a lot of, I would say, execution of the business

344
00:19:46,320 --> 00:19:52,960
logic in this very small, verifiable chunks of logic that you execute. So it's mostly focused

345
00:19:52,960 --> 00:19:57,120
on the front end, hence a lot of web development. And if you look at the development industry in

346
00:19:57,120 --> 00:20:03,680
general, it's a bit controversial as well, right? There's a lot of complexity in tooling itself.

347
00:20:03,680 --> 00:20:08,720
Most of web developers spend more than, I would say, 50% of their time dealing with complexity

348
00:20:08,720 --> 00:20:13,840
of their own tools, rather than solving the complexity of the problems that they need to

349
00:20:13,840 --> 00:20:18,640
achieve, right? And so it's extremely important, I think, that given that there is also dominance

350
00:20:19,360 --> 00:20:25,040
and the presence of people coming from web to essentially ensure that if they are to hop on

351
00:20:25,040 --> 00:20:33,280
things like Alucid and things that allow interaction with this, you have a great analogy for this

352
00:20:33,280 --> 00:20:40,400
actually, a decentralized operating system, right? It's a massive network that serves as a layer

353
00:20:40,400 --> 00:20:44,400
where you can execute and deploy your applications. And so I think it's important to ensure that the

354
00:20:44,400 --> 00:20:50,480
tools that we provide to these people are essentially not going to get in front of them, right? It

355
00:20:50,480 --> 00:20:54,480
should work, it should be convenient, it should be, as you said, pretty much. And I think that's

356
00:20:55,120 --> 00:21:00,480
something that may be a great relief for a lot of web developers, right? You don't have to worry

357
00:21:00,480 --> 00:21:08,560
about NPM or some person on NPM removing a left pad package and just like halting the entire industry

358
00:21:08,560 --> 00:21:15,440
relying on NPM. Things like that essentially is also, I would say, considerate to the Terence,

359
00:21:15,440 --> 00:21:21,120
Alucid, but to also expand on the other remark you did in regards to, I've also heard this quite

360
00:21:21,120 --> 00:21:27,520
often with the recent announcement of the new roadmap of mentioning that, well, obviously,

361
00:21:27,520 --> 00:21:32,000
it's a significant, I would say, change. It's one of the biggest changes we had so far,

362
00:21:32,000 --> 00:21:35,120
the algorithm protocol, right? The change to incentivization, which is, I think,

363
00:21:36,640 --> 00:21:40,960
I might actually argue that this goes against, obviously, this goes against the initial

364
00:21:40,960 --> 00:21:45,600
Sylvia's assumption in regards to the altruism, but largely to be frank, it's,

365
00:21:45,600 --> 00:21:49,520
it's, one could say it's also a reflection of the current financial system, right?

366
00:21:50,480 --> 00:21:54,880
Altruism is not always spared nicely when we talk, when we talk about money.

367
00:21:54,880 --> 00:22:00,880
But at the same time, I think it also still pretty much was in the spirit of Algorand,

368
00:22:00,880 --> 00:22:06,160
because another, I recall one of the points that Sylvia was actually doing in his very early talks is

369
00:22:07,120 --> 00:22:13,360
the ability for the consensus and the core protocol itself to be adaptable to changes

370
00:22:13,360 --> 00:22:17,040
in the industry and changes in the environment, basically. It's not like you have this,

371
00:22:17,680 --> 00:22:23,200
you know, fixed Bitcoin proof of work protocol, right? That is protected and guarded like a holy

372
00:22:23,200 --> 00:22:29,200
grail. It's actually a dynamic system. It's a software system, basically, that adjusts to the

373
00:22:29,200 --> 00:22:34,640
environment. It adjusts to the demands in the ecosystem as well. And I think this goes largely

374
00:22:34,640 --> 00:22:41,120
in spirit, because we clearly have a change in the environment. And this is, I think, a response

375
00:22:41,120 --> 00:22:46,560
to, to, to, to adapt to this new environment and ensure that this incentivization is actually

376
00:22:46,560 --> 00:22:50,240
even further propagated. But thank you for the answer, John. I think this is great.

377
00:22:50,240 --> 00:22:59,760
I would like to give the stage to Alessandro and delving a bit deeper into AlgorKit. Could you

378
00:23:00,400 --> 00:23:04,240
perhaps discuss some technical decisions behind

379
00:23:06,560 --> 00:23:10,160
one of its like most recent, I would say, feature developments and how

380
00:23:11,040 --> 00:23:14,080
it addresses a critical need within Algorand developer community?

381
00:23:14,080 --> 00:23:22,800
Yep. Also, hi, everyone. I'm Alessandro, head of product at the foundation. I lead the AlgorKit

382
00:23:22,800 --> 00:23:32,000
efforts. So our idea with AlgorKit, when we first started off, we, we wrote down a few key

383
00:23:32,000 --> 00:23:39,120
principles. And the most important is meet developers where they are. Blockchain development

384
00:23:39,120 --> 00:23:47,120
isn't as easy as web development. You're in a bit more confined space with virtual machines that

385
00:23:47,120 --> 00:23:53,520
are extremely powerful, but they don't have those, all those layers of abstractions where,

386
00:23:53,520 --> 00:24:01,680
that you're used to in normal web dev or normal programming. So a lot of the work with, that

387
00:24:01,680 --> 00:24:10,320
we did with AlgorKit was to, and you can see this with the Puyah compiler or with, with the

388
00:24:10,320 --> 00:24:21,520
generators approach that we took, are to remove tools from being a hurdle. If we want Algorand

389
00:24:21,520 --> 00:24:26,800
to grow, we need to enable developers to feel comfortable with the tooling they have. And

390
00:24:26,800 --> 00:24:34,080
the more hurdles you know, you'll have to face, the less big of a step you're willing to take as a

391
00:24:34,080 --> 00:24:41,520
first step. So with things, my favorite thing is the, my favorite feature on AlgorKit is

392
00:24:41,520 --> 00:24:49,680
decline generators, because smart contracts are the business logic. So that is what powers the

393
00:24:49,680 --> 00:24:54,960
heartbeat of your application. But an application isn't only composed of a smart contract. There

394
00:24:54,960 --> 00:25:03,120
are plenty of things around that for it to be successful. And the translating smart contract

395
00:25:03,120 --> 00:25:10,560
requirements to middleware or front end, that was extremely difficult. And so with, with the work

396
00:25:10,560 --> 00:25:17,280
of MakerX team with work and help of their roles in the community, we came up with a standard.

397
00:25:17,280 --> 00:25:25,600
And all of a sudden from a smart contract, you can have a set of functions that are available

398
00:25:25,600 --> 00:25:31,520
outside of your smart contracts to interact with it. This, in my opinion, is one of the things that

399
00:25:32,400 --> 00:25:39,840
our developer says, all right, if this easy, I can really focus on my business logic and make it

400
00:25:39,840 --> 00:25:47,280
as big a moon shots as it possibly can. Because then I have the client generator that does most

401
00:25:47,280 --> 00:25:53,760
of the work for me. And then I simply need to connect the dots. This was one of the proudest

402
00:25:53,760 --> 00:26:01,760
achievement and proudest release that we had last year. The other one is the Pouya compiler,

403
00:26:01,760 --> 00:26:09,440
always thinking meat developers where they are. The only thing that is sure in this,

404
00:26:09,440 --> 00:26:21,440
in our ecosystem is the AVM. Everything else will, can and will change. So if you look at languages in

405
00:26:21,440 --> 00:26:27,200
normal development, they come and go with its trending. It's like, first everything was on the

406
00:26:27,200 --> 00:26:33,200
server, then everything was on the client. Now we're moving back to everything on the server.

407
00:26:33,200 --> 00:26:39,200
It was first was monoliths, then all cloud, everything's a lambda, then back to,

408
00:26:39,200 --> 00:26:51,440
shifting back to monoliths. Industries are extremely trendy and biased towards trends. So

409
00:26:51,440 --> 00:26:56,720
there are a few things, there are a few languages that have been there through thick and thin.

410
00:26:56,720 --> 00:27:03,040
And one of them, and it's the one that is most taught in schools and everything. So it's the

411
00:27:03,040 --> 00:27:10,800
one that we could cast the net wide enough to have a gigantic double funnel is Python.

412
00:27:12,080 --> 00:27:19,120
So Python, if you don't know how to write Python, but you know how to speak English,

413
00:27:19,120 --> 00:27:24,800
you're already 80% there. That is the key thing. It's extremely similar to pseudo code,

414
00:27:24,800 --> 00:27:33,520
lead code exercises. So that is what we are trying to achieve is bringing the simplicity

415
00:27:33,520 --> 00:27:42,480
of Python development to something that is extremely intense and difficult, such as smart

416
00:27:42,480 --> 00:27:50,400
contract programming. So these are these are the things that I really enjoy about what we've

417
00:27:50,400 --> 00:27:56,960
done with AlgoKit. Then we have also we do a lot of our development, it's feedback driven.

418
00:27:58,080 --> 00:28:05,920
Because after all, we are building this for our community. And our community has the

419
00:28:05,920 --> 00:28:13,840
most important voice in shaping its requirements, because at the end of the day, they're the users,

420
00:28:13,840 --> 00:28:29,280
and we are building it for them. So the I'd say this is, we have seen our AlgoKit approach at the

421
00:28:29,280 --> 00:28:36,640
end of the day. And we have seen that in the last few years. Here's a huge blob of code. It

422
00:28:36,640 --> 00:28:44,000
already works. It's extremely well documented. But at first glance, you could say it might be a bit

423
00:28:44,000 --> 00:28:51,360
overwhelming. We heard that feedback. That's why for AlgoKit 2.0, we are working the in its

424
00:28:51,360 --> 00:29:00,240
own way to a generator first approach, where you only where AlgoKit only generates the pieces that

425
00:29:00,240 --> 00:29:08,080
you want at in that time. And then as your developer journey and that development journey

426
00:29:08,880 --> 00:29:15,760
evolves, AlgoKit will generate a bit more code. So first, you only do the smart contracts, you

427
00:29:15,760 --> 00:29:22,080
don't need a client right off the bat. You don't need a deployer right off the bat. So we're doing

428
00:29:22,080 --> 00:29:28,800
it, we're taking the approach of still giving you everything that you need, but more bite sized

429
00:29:28,800 --> 00:29:39,200
for it to be more, more easy going, more easy to start with, and less intense from, from a mid

430
00:29:39,200 --> 00:29:47,360
standpoint. And if I may expand on this, yeah, like this is quite an interesting, I would say,

431
00:29:48,000 --> 00:29:52,960
logical continuation of what was initially intended with the templates, right? Because

432
00:29:52,960 --> 00:30:01,120
the initial experience was also highly, I would say customizable, but the premise there was actually,

433
00:30:01,120 --> 00:30:05,760
okay, so here is sort of people for people, for example, who are familiar with things like

434
00:30:05,760 --> 00:30:12,080
create react app or any of the template builders that you would usually get and develop is here is a

435
00:30:12,800 --> 00:30:19,440
set of pieces that we think is a good starting point for you. Go ahead and pretty much, you know,

436
00:30:19,440 --> 00:30:25,840
it's up to you to do whatever you want with it. But there is some, I would say benefits to that

437
00:30:25,840 --> 00:30:31,120
approach, but certainly there's the realization that there's a lot more power to actually

438
00:30:31,120 --> 00:30:38,080
customize this experience by allowing it to treat them as as Lego blocks, right? Because you always

439
00:30:38,080 --> 00:30:44,240
start small, you always start with certain base requirements and then you keep expanding and

440
00:30:44,240 --> 00:30:49,760
functionality, but only functionality that you actually find and then need at a particular point

441
00:30:49,760 --> 00:30:54,480
in time. And I think, yeah, was, and I guess for some engineers, they will realize that what

442
00:30:54,480 --> 00:31:05,280
Alessandro just said is a bit of a spoiler alert. But basically, I think people are going to be,

443
00:31:06,000 --> 00:31:11,120
are going to find this really useful. And thank you. Thank you for the wonderful answer, Alessandro.

444
00:31:11,120 --> 00:31:21,680
I would love to move to ask a question to Rob. Our second is you. So it's not just one, it's not

445
00:31:21,680 --> 00:31:27,200
just two and best CTO is the best we have we have like a kind of top trumps.

446
00:31:30,480 --> 00:31:39,840
But as a as a CTO, what do you think are looking back at the set of the features that were delivered

447
00:31:39,840 --> 00:31:46,000
so far and all the work that went into the design of how we get. Are there any interesting

448
00:31:46,000 --> 00:31:53,120
engineering challenges that MakerX has faced when implementing those and what

449
00:31:54,480 --> 00:32:00,080
innovative solutions have you considered to overcome these? And I'm pretty sure we do have

450
00:32:00,080 --> 00:32:06,480
quite a good chunk of example there. Yeah, for sure. And hi, everyone. So Rob Moore,

451
00:32:06,480 --> 00:32:14,240
co-founder and CTO of MakerX, we're a business that works with startups, corporates and venture

452
00:32:14,240 --> 00:32:19,520
builders to build ventures and digital products. And as has been said, we've been working very

453
00:32:19,520 --> 00:32:26,800
closely with John and Alessandro and the Elgrand Foundation to build out the algorithm experience.

454
00:32:26,800 --> 00:32:31,520
And it's certainly, I know John was saying it's one of the things he's probably the most proud of

455
00:32:31,520 --> 00:32:37,440
in his career and same for myself because I'm immensely proud of what's been built. I think

456
00:32:37,440 --> 00:32:45,200
it's really cool. And yes, this is a really hard question to answer because pretty much every single

457
00:32:45,200 --> 00:32:54,320
thing that we've done over the last 12 months has been really interesting from a technical

458
00:32:54,320 --> 00:33:01,200
perspective. We've really been pushing the boundary of I guess what is possible and what has been done

459
00:33:01,200 --> 00:33:08,400
in the Web3 industry. And so I could probably sit here all day talking through that. The obvious one

460
00:33:08,400 --> 00:33:14,720
that first comes to mind is probably the Poyer compiler because naturally building a compiler is

461
00:33:15,440 --> 00:33:21,280
incredibly large technical challenge and certainly doing it in the really small time frame that we

462
00:33:21,280 --> 00:33:25,920
built it in was very interesting. But I have a suspicion we'll probably touch on the Poyer

463
00:33:25,920 --> 00:33:29,920
compiler later on. So I'm actually going to pick something else or maybe two other things. So

464
00:33:29,920 --> 00:33:35,920
the first one is probably the types deployment clients that Alessandro alluded to. This was

465
00:33:35,920 --> 00:33:43,120
a really fun challenge because if you think about it, you've got a smart contract in the

466
00:33:43,120 --> 00:33:48,560
metadata that describes a smart contract. And then the goal that we had, which was that someone

467
00:33:48,560 --> 00:33:55,440
interacting with that smart contract could write type, essentially type safe code in TypeScript

468
00:33:55,440 --> 00:34:02,000
or Python and have an idiomatic experience with that programming language to interact with that

469
00:34:02,000 --> 00:34:08,960
contract. And that we would abstract away as much as possible all of the intricate Algorand protocol

470
00:34:08,960 --> 00:34:14,880
knowledge that you would otherwise have to have to be able to successfully issue transactions that

471
00:34:14,880 --> 00:34:20,240
call those methods and pass the right parameters and marshal them in the correct way from the type

472
00:34:20,240 --> 00:34:27,120
system of TypeScript and Python through to the underlying binary encoding that the AVM expects

473
00:34:27,120 --> 00:34:32,080
based on the smart contract code that you have written. And so that's quite an interesting

474
00:34:32,080 --> 00:34:36,800
technical challenge. And I think in particular, the thing that was really exciting about it when

475
00:34:36,800 --> 00:34:41,920
we worked on it, and actually, this is one of the features that I personally did a bunch of work on

476
00:34:41,920 --> 00:34:49,280
it was really fun, is that the sky's the limit in terms of what do these clients that we're

477
00:34:49,280 --> 00:34:54,560
generating will like the code inside them and more importantly, the interface that they expose to

478
00:34:54,560 --> 00:35:00,080
the developers that are calling them, like that could be literally anything. And so,

479
00:35:00,800 --> 00:35:04,640
you know, we were guided by those principles, I said it should be idiomatic, it should hide the

480
00:35:04,640 --> 00:35:11,280
Algorand stuff and it should be type safe. And it was just a lot of fun, I guess, to, you know,

481
00:35:11,280 --> 00:35:17,600
iterate and get towards an experience that I myself have used multiple times and I'm very

482
00:35:17,600 --> 00:35:23,280
grateful for that feature when I am using it because it makes the experience of calling these

483
00:35:23,280 --> 00:35:29,840
smart contracts so much easier to do. And I understand the underlying protocol, you know,

484
00:35:29,840 --> 00:35:34,640
stuff and binary encoding, etc. quite deeply. But I don't want to be doing that day to day

485
00:35:34,640 --> 00:35:39,040
because that's the distraction from being productive as a developer to implement, say, a

486
00:35:39,040 --> 00:35:44,000
D app or a backend API or whatever it is that's abstracting this Algorand functionality. I don't

487
00:35:44,000 --> 00:35:48,240
want to be in that low level detail of binary encoding because it's not productive.

488
00:35:48,800 --> 00:35:52,960
CTOs like Rob, I call them ivory terror CTOs, they don't want to get their hands dirty. Rob

489
00:35:52,960 --> 00:35:56,800
wants to be kind of standing on a mountain, just kind of like thinking, you know,

490
00:35:57,840 --> 00:35:59,600
you know what I'm saying, like not down the detail.

491
00:36:02,000 --> 00:36:10,080
Nice troll, John. Rob is probably one of the most detail-oriented and down and down and down in

492
00:36:10,080 --> 00:36:14,000
the real work CTOs I've ever met. So he's brilliant. I'm only teasing.

493
00:36:14,640 --> 00:36:16,960
I love it. You owe me a beer for that troll.

494
00:36:20,000 --> 00:36:24,000
Anyway, so that was fun, right? It was fun and it was a big technical challenge, I guess,

495
00:36:24,000 --> 00:36:29,200
to whittle down the endless possibilities of, you know, what could a client experience look

496
00:36:29,200 --> 00:36:33,920
like down to what we ended up coming up with and making that idiomatic for each of them and

497
00:36:33,920 --> 00:36:40,640
including quite hardcore type inference things like when you call a method, it gives you the return

498
00:36:40,640 --> 00:36:46,560
type of that method from the smart contract. You know, so if, for instance, you had a struct

499
00:36:46,560 --> 00:36:51,120
with multiple fields, you get a, you know, same type script and interface with those fields there

500
00:36:51,120 --> 00:36:56,000
and all of the encoding and decoding is taken care of for you. And in your programming code,

501
00:36:56,000 --> 00:37:00,400
you have this type safe return value. Like that's, it was hardcore to get that working.

502
00:37:00,400 --> 00:37:07,120
But the end result is basically magic. And as I said, it was a lot of fun. So the second thing

503
00:37:07,120 --> 00:37:11,840
I thought would be interesting to talk about was the breakpoint debugging. And the reason why is

504
00:37:11,840 --> 00:37:17,120
because breakpoint debugging is something that like every developer generally would have some

505
00:37:17,120 --> 00:37:22,400
sort of experience of breakpoint debugging. It's a fairly foundational kind of software development

506
00:37:22,400 --> 00:37:28,560
skill, right? And the experience that you would have in traditional development and it could be

507
00:37:28,560 --> 00:37:34,640
anything like a web app and API, a console app, whatever, is that you attach a debugger to the

508
00:37:34,640 --> 00:37:40,000
running process. And the running process stops at a certain point where you've set a breakpoint,

509
00:37:40,000 --> 00:37:44,400
and you can kind of move bit by bit through lines of code and hover over variables and see what

510
00:37:44,400 --> 00:37:50,880
they are, et cetera. It makes it so much easier to debug issues that happen in the code that

511
00:37:50,880 --> 00:37:57,920
don't match your expectation when you programmed it. It's an incredibly productive kind of mechanism

512
00:37:57,920 --> 00:38:04,400
now the problem with the blockchain like Algorand, it's a decentralized kind of system, you can't

513
00:38:04,400 --> 00:38:09,440
pause Algorand and say, can you just stop executing the smart contract online free for a second there

514
00:38:09,440 --> 00:38:16,160
so that I can just see what's going on? You can't do that, right? It just fundamentally doesn't make

515
00:38:16,160 --> 00:38:23,920
sense. And so the challenge that we had for that feature was how can we create an experience that

516
00:38:23,920 --> 00:38:28,160
feels intuitive for developers that have spent years and years and years learning how to do

517
00:38:28,160 --> 00:38:33,040
breakpoint debugging where you attach the process and stop the process and all of that,

518
00:38:34,400 --> 00:38:41,520
which we can't do with Algorand, but craft it in such a way between the library code and the

519
00:38:41,520 --> 00:38:46,400
extension, Visual Studio, et cetera, that it feels like you've kind of done that. And where we

520
00:38:46,400 --> 00:38:51,120
landed frankly went beyond my expectations of what would be possible and is incredibly exciting.

521
00:38:51,120 --> 00:38:58,480
And I must call out the awesome work that Algorand Technologies did in creating the core debug adapter

522
00:38:58,480 --> 00:39:03,840
protocol, because they did some hardcore frankly and phenomenal work. And then we were able to build

523
00:39:03,840 --> 00:39:09,120
on top of that and integrating to Algor kit in this really intuitive like intuitive experience

524
00:39:09,120 --> 00:39:16,240
that feels, you know, as close as possible to normal breakpoint debugging as you could get. So

525
00:39:16,240 --> 00:39:21,280
those two in particular, I think we're really interesting from a technical challenge perspective.

526
00:39:21,280 --> 00:39:23,200
Shout out to Jason Paul.

527
00:39:23,200 --> 00:39:27,600
One extra thing to that, which is like, people expect debugging because they're used to it from

528
00:39:27,600 --> 00:39:30,560
a traditional software engineering background, you get debugging in C, whatever, you know, you get

529
00:39:30,560 --> 00:39:34,800
debugging in Rust, you get debugging in Swift. This stuff has to be built from the ground up. Like

530
00:39:34,800 --> 00:39:39,760
Rob just said, like we needed Algorand Technologies to add core things to the fundamental

531
00:39:39,760 --> 00:39:44,160
structure of the node and the tooling around the node. Then we needed

532
00:39:44,160 --> 00:39:50,080
Rob, Alessandro and the teams at MakerX and the foundation to work together to

533
00:39:50,880 --> 00:39:55,760
build up the entire debugging stack. And so it's like inventing fire for the first time. And so

534
00:39:55,760 --> 00:39:59,680
this is a huge technical challenge. I know debugging might sound like a kind of a fundamental to

535
00:39:59,680 --> 00:40:03,760
some software engineers who may be listening, but we're doing this in a context where it's never

536
00:40:03,760 --> 00:40:08,080
been done before. And so I just blown away with the results. So yeah, I just want to say very

537
00:40:08,080 --> 00:40:12,640
well done on that because it's critical to a normal developer journey. But again,

538
00:40:12,640 --> 00:40:19,920
something that wasn't there a year ago. And also, as Rob mentioned, shout out to people at Inc

539
00:40:19,920 --> 00:40:26,240
and for technologies for a lot of the work on the debug adapter protocol as well. And I guess,

540
00:40:26,240 --> 00:40:32,160
thank you to Big Enterprise is pushing for some of these standardization in terms of providing

541
00:40:32,160 --> 00:40:38,000
protocols to implement debug adapters. Because a great thing about this is that what we did with

542
00:40:38,000 --> 00:40:45,280
the Visual Studio extension is that it's actually relying on a language agnostic implementation

543
00:40:45,280 --> 00:40:51,520
that implies that it's actually fairly straightforward to extend it right now. It's

544
00:40:51,520 --> 00:40:57,760
available on VS Code. But that core is actually could be extended to pretty much any IDE that

545
00:40:57,760 --> 00:41:02,240
supports the debug adapter, which is another important part because a lot of things that

546
00:41:03,280 --> 00:41:06,800
Rob was also mentioning in regards to the AlgoKit is obviously in line with

547
00:41:06,800 --> 00:41:12,880
some of the core. And as a developer, you can actually go on AlgoKit repository and look up

548
00:41:12,880 --> 00:41:17,120
the documentation. And there's the chapter on the principles. And there's roughly around eight

549
00:41:17,120 --> 00:41:21,520
to nine principles on which AlgoKit operates. And I think modularity is extremely, extremely

550
00:41:21,520 --> 00:41:27,920
powerful and important concept that we are also trying to embed into a lot of the functionality

551
00:41:27,920 --> 00:41:34,800
and features on AlgoKit. And I definitely can agree with you more on this, Rob. I think that

552
00:41:34,800 --> 00:41:38,400
those were certainly very interesting technical challenges to tackle and solve.

553
00:41:39,040 --> 00:41:46,240
One thing that we do with AlgoKit is that we are championing VS Code, as it's the most common

554
00:41:46,240 --> 00:41:53,600
text editor. But everything that VS Code does, you can do from the CLI. So we are just simply

555
00:41:53,600 --> 00:42:01,120
packaging it up a bit nicer for VS Code. But every piece of AlgoKit works, either you're in

556
00:42:01,120 --> 00:42:08,160
NeoVim, Emacs, Visual Studio, Sublime Text, if people still use it. So this is the important thing.

557
00:42:08,160 --> 00:42:14,560
It's catering to everyone, but giving a premier experience.

558
00:42:15,440 --> 00:42:18,240
And if you're going after Europe?

559
00:42:19,200 --> 00:42:23,920
I was just going to say, you're basically describing two of the fundamental principles of

560
00:42:23,920 --> 00:42:28,400
AlgoKit that we've been very consistent in applying, one of which is meet developers where

561
00:42:28,400 --> 00:42:33,040
they are. So don't build something that only works if you say, on a Mac in this specific

562
00:42:33,040 --> 00:42:37,520
environment, blah, blah, blah, it's like, we're trying to build for whatever environment developers

563
00:42:37,520 --> 00:42:42,640
have so that they can be productive where they used to be productive. And secondly, it's the

564
00:42:42,640 --> 00:42:48,480
modularity principle, which is every single thing that we do for AlgoKit is built up of

565
00:42:48,480 --> 00:42:51,760
multiple building blocks. And we design every single building block to be able to be used

566
00:42:51,760 --> 00:42:56,240
independently so that if a developer wants to opt out of certain things or craft their own

567
00:42:56,240 --> 00:43:00,160
experience by pulling some of the building blocks together in a different way, they're

568
00:43:00,160 --> 00:43:04,320
totally open to do that. And that's like a deliberate thing that we've designed in.

569
00:43:04,960 --> 00:43:09,360
And I just want to say, if you take yourself seriously as an engineer, you should be in VIM

570
00:43:09,360 --> 00:43:13,040
and you should be in the command line. And I just want to say my VIM or C, I'll just check

571
00:43:13,040 --> 00:43:19,280
my VIM or C, right? My configuration for VIM is 848 lines. Can you imagine what that's like?

572
00:43:19,280 --> 00:43:21,040
How many years have you been crafting that, John?

573
00:43:21,040 --> 00:43:29,440
Decades. But actually, I use this. There's a great VIM or VIM or C bootstrap website,

574
00:43:29,440 --> 00:43:33,520
and it kind of gives you the basics, but VIM is so powerful. So is Emacs, of course. And so

575
00:43:33,520 --> 00:43:40,160
command line bros for the win. I like that you sidestep the war of VIM versus Emacs and just

576
00:43:40,160 --> 00:43:43,200
send both of them are really good there. So you haven't pissed off half the audience.

577
00:43:43,200 --> 00:43:48,240
It's like, yeah, yeah. It's like tabs versus spaces.

578
00:43:49,360 --> 00:43:54,800
By the way, the answer is spaces. And what you should do is bind your tab to four spaces,

579
00:43:54,800 --> 00:43:57,600
and then you won't have any problems. And then everything will be fine when you cat files.

580
00:43:58,640 --> 00:43:59,520
Exactly. Exactly.

581
00:44:01,120 --> 00:44:05,920
And by the way, if there's any other engineering kind of like serious questions you need to answer,

582
00:44:05,920 --> 00:44:10,240
we can do it now. We've done spaces and tabs. We've done Emacs VIM. What else is there?

583
00:44:10,240 --> 00:44:12,640
Algorithms or other blokechains?

584
00:44:13,520 --> 00:44:17,600
Algorithms. Unless you want privacy, in which case you can use Monero.

585
00:44:19,040 --> 00:44:21,840
Can I think anything else? Linux versus Mac?

586
00:44:23,040 --> 00:44:28,560
Linux. Linux, I think, if I had to pick one to die, I'd have to pick Apple to die,

587
00:44:28,560 --> 00:44:33,280
because it's more important for computing that Linux exists. But on a day to day,

588
00:44:33,280 --> 00:44:37,280
the MacBook is probably the best portable computer I've ever owned, the current generation Apple Silicon.

589
00:44:37,280 --> 00:44:46,960
Yeah. And to, I guess, expand on the next topic, which is hopefully going to delve a little bit

590
00:44:47,760 --> 00:44:52,640
deeper into the algorithm. And given that, John, you already provided a great,

591
00:44:53,200 --> 00:44:58,720
you know, outline of higher level deliverables and goals for this year. Is there anything

592
00:44:59,520 --> 00:45:04,640
that you would say makes you the most excited in regards to the upcoming algorithm features?

593
00:45:04,640 --> 00:45:10,880
Right? If we look at the current stack, right, we are, I guess, we are calling the 2023 as a V2,

594
00:45:10,880 --> 00:45:14,720
right, prior to that was establishing the fundamentals of the Alucid CLI and things

595
00:45:14,720 --> 00:45:19,280
like that. So we have already have a huge bundle, like, and actually the listeners of the same

596
00:45:19,280 --> 00:45:26,080
podcast can go back in time and listen for episode number one or two. And essentially seed

597
00:45:26,880 --> 00:45:31,280
the discussions and problems the engineers and smart-coded developers used to have back in

598
00:45:31,280 --> 00:45:37,280
then back then it was actually like you couldn't dream about an ability to execute a single command

599
00:45:37,280 --> 00:45:43,200
with the chance essentially sets up end to end tests unit tests, it sets up, you know, static

600
00:45:43,200 --> 00:45:50,800
analysis, it sets up conventions, CI, CD that already has the deployment into things like

601
00:45:50,800 --> 00:45:57,040
Netlify or VersaL. So and all of that just out of the box. And you pretty much can just

602
00:45:57,040 --> 00:46:01,120
focus on the actual problem rather than dealing with all of these tooling yet again, going back

603
00:46:01,120 --> 00:46:06,560
to that point with simplifying the complexity of the tools tool is should essentially never be in

604
00:46:06,560 --> 00:46:12,320
front of you, it should be beside you in some sense. But we have all of these great things in

605
00:46:12,320 --> 00:46:19,920
the baggage and obviously a lot of improvements are already being in works on each individual track

606
00:46:19,920 --> 00:46:24,960
of the features that are already available for the users. But what would you say are these sort of

607
00:46:24,960 --> 00:46:31,280
most exciting things that you think are the logical continuation of what's already available in the

608
00:46:31,280 --> 00:46:35,520
algorithm ecosystem? Yeah, and I just, you know, you just went through, it just reminded me of so

609
00:46:35,520 --> 00:46:40,480
much of the stuff that's been accomplished there in that preamble. And I just want to say, I'm so

610
00:46:40,480 --> 00:46:45,760
grateful that I met Alizandro, I hired someone on to the team who was able to actually do this.

611
00:46:45,760 --> 00:46:50,880
Like he's created this vision without any instruction. I mean, it didn't sound like I gave him a

612
00:46:50,880 --> 00:46:54,720
whole load of requirements and said, look, here's, here's, here's it in a nutshell. He's just

613
00:46:54,720 --> 00:46:59,600
incepted this stuff. And so, and with the incredible, hyper competent team at MakerX

614
00:47:00,160 --> 00:47:02,800
for the on the implementation, I'm just lucky that I met these people.

615
00:47:04,320 --> 00:47:08,480
Okay, so I'll keep this short because I spent a lot of time talking on the previous one. I'm most

616
00:47:08,480 --> 00:47:13,600
looking forward to Python getting to production level, which is mid 2024 or sorry, early 2024,

617
00:47:13,600 --> 00:47:17,920
like March, something like that. And so that'll be production, you can use it in your code day to

618
00:47:17,920 --> 00:47:23,760
day. And it just makes building and maintenance so much cheaper. You just have to hire a Python

619
00:47:23,760 --> 00:47:27,920
person, you don't have to hire like a TL expert. And it's also going to make it fun and super

620
00:47:27,920 --> 00:47:32,480
inclusive for the whole world from from teenagers in school all the way to to quantitative analysts

621
00:47:32,480 --> 00:47:38,720
and in FX options brokerages. That's number one, number two, moving that line by line debugging

622
00:47:38,720 --> 00:47:43,200
that Rob talked about to support things like Python. I mean, it's a hope. It's not an absolute

623
00:47:43,200 --> 00:47:47,360
certainty, but that's what one of the goals is for this year. And you'll be able to stay in

624
00:47:47,360 --> 00:47:53,920
Python as you debug. Super amazing. And then yeah, I think they're there are my two most

625
00:47:53,920 --> 00:48:00,320
favorite, I guess as well, reusing that incredible pipeline that LLVM style, efficient pipeline

626
00:48:00,320 --> 00:48:05,520
for compilation that we built or the team have built for Python, reusing that maybe to screw off

627
00:48:05,520 --> 00:48:08,960
the the front end and put a different language on. I think that'd be very exciting if we can do that.

628
00:48:08,960 --> 00:48:15,920
And I think that's part of this trip. So yeah, that's it. And another one, Nvidia versus AMD.

629
00:48:15,920 --> 00:48:22,720
The answer is an Ortiex 4090. And so if you bought an AMD card, I'm afraid you've made the wrong

630
00:48:22,720 --> 00:48:29,120
choice. But but they make very good CPUs. And so I'm a person who uses the 7800 X 3D over the i9

631
00:48:29,120 --> 00:48:36,480
1390 and 900 K or whatever. So AMD for the CPU and video for the graphics card. On point.

632
00:48:36,480 --> 00:48:45,840
And controversial, I like it. And to, I guess, expand on this algorithm, evolution, obviously,

633
00:48:45,840 --> 00:48:52,160
it's an open source project, right, which has its own benefits and challenges. And one might actually

634
00:48:52,720 --> 00:48:59,920
be curious about how how would one approach measuring, you know, key performance indicators

635
00:48:59,920 --> 00:49:06,000
for these things, how would you monitor the reception of features get and ensure that it's

636
00:49:06,000 --> 00:49:12,640
actually, you know, developer friendly and robust and navigating in an open source environment when

637
00:49:12,640 --> 00:49:18,000
dealing with the obligations of metrics such as that is sometimes could, you know, challenge

638
00:49:18,800 --> 00:49:26,320
and require very interesting and I would say very interesting solutions, basically, in order to

639
00:49:26,320 --> 00:49:32,720
achieve that. So on that point, Alessandro, anything that you can perhaps expand on in regards to

640
00:49:32,720 --> 00:49:39,280
how you could also try to ensure that it's always on point in regards to what's the actual demands

641
00:49:39,280 --> 00:49:47,760
from the users. Yeah, so we have first and foremost, it's tracking is extremely difficult

642
00:49:47,760 --> 00:49:54,960
in CLIs. You're not on the web where there is 1000 different types of trackers, cookies and

643
00:49:54,960 --> 00:50:03,600
everything and you can know where your user shops and everything. So on the CLI and neither would

644
00:50:03,600 --> 00:50:10,960
I want it to be honest, it's an address, his browser, his national average, everything, everything

645
00:50:10,960 --> 00:50:19,840
is right. It's invasive and CLIs and tools shouldn't be tracked to that level. They should just

646
00:50:19,840 --> 00:50:27,520
simply be tools that someone uses. So thankfully, with the approach, with the benefits of the modular

647
00:50:27,520 --> 00:50:34,480
approach that we set off to do since the beginning, we have split into different libraries,

648
00:50:35,680 --> 00:50:42,240
all the different steps of the algorithm development experience. And so we can compare

649
00:50:42,240 --> 00:50:50,560
simple CLI downloads and this would give us a ballpark figure. Then we have client generators

650
00:50:50,560 --> 00:50:59,280
when they're pulled. This is an extremely useful criteria to measure the usage of it. And we can

651
00:50:59,280 --> 00:51:08,080
see usage growing week after week with the, with simply the download analytics that come. Of course,

652
00:51:08,080 --> 00:51:14,560
they're not precise because there's no telemetry, never will be. I am here on record to say it.

653
00:51:15,840 --> 00:51:23,360
We will do everything in our, and we look at all these kind of things, all of the small pieces

654
00:51:23,360 --> 00:51:31,360
that compose our Gokit are self-standing packages. So we can see what is the usage of all those and

655
00:51:31,360 --> 00:51:40,640
when it's pulled in versus when it's not. That is one way we keep track and measure. The most

656
00:51:40,640 --> 00:51:47,760
important part though is the first line of feedback. Our DevRel team is extremely helpful,

657
00:51:47,760 --> 00:51:55,440
both to the core team, as because we first develop things in an MVP state.

658
00:51:55,440 --> 00:52:02,720
DevRel gives us the initial feedback. Once that is incorporated, we go out and we go out for the

659
00:52:02,720 --> 00:52:11,520
entire people to look at it as a main release. People could well build from branches. It's all

660
00:52:11,520 --> 00:52:19,360
in the open. There is no hidden things. But the DevRels are a key part of this experience. Then,

661
00:52:19,360 --> 00:52:24,240
of course, we monitor our Discord channels are extremely active. We are always there monitoring

662
00:52:24,240 --> 00:52:34,080
it. We get up issues when they arise. They are triage-stakes really quickly. We also run quite

663
00:52:34,080 --> 00:52:41,040
some bootcamps. For each new bootcamp, it's a fresh new batch of new developers, because it's

664
00:52:41,040 --> 00:52:47,920
usually beginner bootcamps. We can see and we can gather feedback from more experienced users on

665
00:52:47,920 --> 00:52:58,320
Discord and GitHub. But on the bootcamp side, we have the raw green to Algorand development

666
00:52:58,320 --> 00:53:08,480
feedback. That is important. That is treading the balance between experts and new developers.

667
00:53:08,480 --> 00:53:15,280
We should cater to both, because it's just simply a tool. A tool just works.

668
00:53:15,280 --> 00:53:22,240
We see a lot of things that maybe we should tackle either with helper libraries or new functions in

669
00:53:22,240 --> 00:53:30,640
the U2s libraries from an expert developer standpoint. There are things in the documentation or how we

670
00:53:30,640 --> 00:53:38,960
approach simply even the information given within the CLI. That we get most from the beginner side,

671
00:53:38,960 --> 00:53:48,320
because they are least biased. They don't have a history without it. It's cleaner and more

672
00:53:48,320 --> 00:53:54,720
unbiased. If I may just slightly expand on this. I actually quite recently was thinking about what

673
00:53:54,720 --> 00:54:01,760
are the origins of the term DevRel? Where does this came from? What kicked off this trend in the

674
00:54:01,760 --> 00:54:08,160
industry in some sense? I was very actually surprised and happy to learn that if you look at

675
00:54:08,160 --> 00:54:15,840
just general inception of this notion of a DevRel engineer, in general, there's a lot of companies

676
00:54:15,840 --> 00:54:23,760
nowadays that are actually misusing that particular role, which is DevRel is not just organizing

677
00:54:24,400 --> 00:54:31,440
conferences or having tech tools. DevRel is actually a very multifaceted and very nuanced

678
00:54:31,440 --> 00:54:42,240
role or profession where you actually create the environment in which it's friendly. That's one

679
00:54:42,240 --> 00:54:47,760
of the reasons why I actually got into Algorand, because I've met a few DevRels and the response

680
00:54:47,760 --> 00:54:52,560
and the support and just the inclusiveness of the ecosystem was unparalleled to anything I've

681
00:54:53,520 --> 00:54:59,520
experienced so far in terms of just if you compare that with say opening an issue on an

682
00:54:59,520 --> 00:55:04,800
open source repository where someone responds in a year because someone tipped in $5 on

683
00:55:04,800 --> 00:55:11,120
Tiffany Button on the markdown. That's one. But when you just tells you know, maybe you can

684
00:55:11,120 --> 00:55:16,080
implement it. Yeah, I'll be happy if you implemented yourself and I'll just approve it or something.

685
00:55:16,080 --> 00:55:21,680
We get and then you get a dedicated ecosystem at this core channel where you come in, you ask a

686
00:55:21,680 --> 00:55:26,960
question, you get a tailored personalized response and you get this very friendly attitude basically

687
00:55:26,960 --> 00:55:33,920
that sort of makes you want to build, makes you want to expand your knowledge base and the fact

688
00:55:33,920 --> 00:55:40,640
that it's all on this very interesting, very decentralized and very scalable ecosystem that

689
00:55:40,640 --> 00:55:48,720
literally can scale to billions of people. And I think that's a very important aspect to highlight

690
00:55:48,720 --> 00:55:53,120
and thank you for mentioning DevRels as well and shout out to all DevRels that are working at the

691
00:55:53,120 --> 00:56:01,120
foundation there. The folks are doing a really great job there. But to expand on this, to continue

692
00:56:01,120 --> 00:56:08,960
with Rop as well in building aggregate features. Are there any particular use cases? And once again,

693
00:56:08,960 --> 00:56:14,160
I'm also trying to be cautious of obviously your time and how hard it is to find a matching slot

694
00:56:14,720 --> 00:56:18,800
spanning across two continents. Right now we have Europe and Australia on the call.

695
00:56:18,800 --> 00:56:26,880
But can you share maybe some use cases where technical ingenuity directly translated into

696
00:56:27,440 --> 00:56:30,800
delivering a lot of value for our good.

697
00:56:30,800 --> 00:56:37,120
Yeah. I think there's one clear example that really truly stands out for me and that's

698
00:56:37,680 --> 00:56:43,520
it's around the Puerh compiler and more specifically something that John talked about before,

699
00:56:43,520 --> 00:56:48,640
which was the fact that we can actually add different front-end languages to it and basically

700
00:56:49,760 --> 00:56:57,520
reuse the engineering effort and the thinking and the optimizations and all the other awesome

701
00:56:57,520 --> 00:57:01,680
things that have been built into the compiler, but with a different language without having to

702
00:57:01,680 --> 00:57:09,360
rewrite an entire compiler and team. And I think the origin of that was, look, honestly, when we

703
00:57:09,360 --> 00:57:16,720
first dived into doing what turned into Puerh, we didn't really know what none of us knew what it

704
00:57:16,720 --> 00:57:24,160
was going to look like. And so we dived in Eyes Wide Open, trying not to remove any options.

705
00:57:24,160 --> 00:57:27,760
And the team did a lot of research and were reading a lot of pretty hardcore

706
00:57:28,480 --> 00:57:32,800
academic journal articles from people that write compilers for a living.

707
00:57:33,760 --> 00:57:39,120
A lot of them made my eyes glaze over when I saw them. But yeah, the team did a great job

708
00:57:39,120 --> 00:57:45,040
in figuring out what does it take to build a really good compiler. And one of the things that

709
00:57:45,040 --> 00:57:54,240
came out pretty early was this concept of having different layers, essentially, or stages that you

710
00:57:54,960 --> 00:58:00,800
go through in essentially a pipeline. And whilst on the surface, that might seem like that makes

711
00:58:00,800 --> 00:58:05,040
it more complex because there's probably more code and you've got to have all of these intermediate

712
00:58:05,040 --> 00:58:10,480
representations that you kind of translate between for each layer. What it means is that each layer

713
00:58:10,480 --> 00:58:15,440
in its own right is a hell of a lot simpler because it's doing one thing and doing one thing well,

714
00:58:15,440 --> 00:58:25,360
and also able to use sort of proven algorithms that have been proven for decades, in some cases,

715
00:58:25,360 --> 00:58:29,440
in that particular layer, because that algorithm is really great at doing that thing.

716
00:58:29,440 --> 00:58:35,920
And once we'd realized that, it became pretty clear to us that the first step after we

717
00:58:36,480 --> 00:58:42,880
pass the Python code is to turn it into an intermediate representation that essentially

718
00:58:42,880 --> 00:58:47,360
represents a high level language. And as soon as we had that on our architecture diagram,

719
00:58:47,360 --> 00:58:53,120
we were like, oh, we just realized that everything from that point on could be reused and you can

720
00:58:53,120 --> 00:58:58,720
plug another language in the front. And so from that moment, that kind of, you know, ingenuity,

721
00:58:58,720 --> 00:59:05,120
as you said, kind of made it clear to us that what we were building here wasn't just a Python

722
00:59:05,120 --> 00:59:11,360
compiler, it was an AVM compiler that happened to start with Python as the language in front of it.

723
00:59:12,880 --> 00:59:20,720
I think this is definitely a great example of a rather creative pivot because if you look

724
00:59:20,720 --> 00:59:24,480
into the original plans, right, there was a lot of fragmentation in the ecosystem and

725
00:59:24,480 --> 00:59:29,280
it was essentially initially assumed that maybe all of that could be solved by the

726
00:59:29,280 --> 00:59:33,040
direct transpilation, right? But there's so so much more power and thought that

727
00:59:33,040 --> 00:59:39,680
ended up going into delivering the compiler. And I'm very excited to look forward for the

728
00:59:39,680 --> 00:59:45,360
productization of the language and the compiler itself as well.

729
00:59:47,600 --> 00:59:51,680
Going forward towards the closing, I guess forward looking insights, I have a

730
00:59:51,680 --> 01:00:00,080
a slight pivot of myself actually for John. I wanted to ask a slightly, I guess,

731
01:00:01,440 --> 01:00:06,000
open-ended question to you and I think you might actually enjoy it quite a lot. But

732
01:00:07,120 --> 01:00:12,880
when we look into like this notion of layers, right, we have layer two on Ethereum,

733
01:00:12,880 --> 01:00:17,360
our grand is a layer one, but it's always important to look back and realize that,

734
01:00:17,360 --> 01:00:22,960
well, what's layer zero, right? Layer zero is our internet infrastructure and none of that

735
01:00:22,960 --> 01:00:27,920
would be possible without that. And obviously, when we look into internet, we have organizations

736
01:00:27,920 --> 01:00:33,840
like ICANN, we have the V3C consortium, right, the guys who develop basically the most fundamental,

737
01:00:33,840 --> 01:00:38,960
you could call them like atoms in physics, right, the most fundamental building blocks that

738
01:00:38,960 --> 01:00:46,480
essentially allow this massive global infrastructure that essentially is already

739
01:00:46,480 --> 01:00:50,400
being considered like, like it's an internet access, for example, being considered as a

740
01:00:50,400 --> 01:00:55,360
fundamental human right, like it's so embedded into human society and pushes us so much further

741
01:00:55,360 --> 01:01:02,720
with that. So when it comes to V3C, they also are very interested and keen on decentralization,

742
01:01:03,440 --> 01:01:08,400
but they do have a slightly different and more conservative look into it. And you could actually

743
01:01:08,400 --> 01:01:15,120
understand their point, for example, creator of World Wide Web Tim Berners-Lee, who actually also

744
01:01:15,120 --> 01:01:20,720
was from, I believe, started at MIT with this project called SOLID and then later on ventured

745
01:01:20,720 --> 01:01:26,160
off and created this company called INRUPT. And that's a lot more focused on linked data and

746
01:01:27,280 --> 01:01:32,880
semantic web. And it's yet, I would say, another angle of looking at how you can

747
01:01:32,880 --> 01:01:38,880
decentralize communication. And what he did with SOLID, and he, by the way, is a big proponent of

748
01:01:38,880 --> 01:01:45,360
going against the term Web3, which again, you could also understand his reasons, right? Because I

749
01:01:45,360 --> 01:01:51,360
would say Web3 was largely sort of borrowed in some sense by people in the blockchain community,

750
01:01:52,240 --> 01:01:58,160
while the guy is actually standing at the roots of the original notion of it. But basically,

751
01:01:59,120 --> 01:02:07,360
his premise with things like SOLID, for example, is introduction of new core sort of V3C

752
01:02:07,360 --> 01:02:14,480
RFCs that define new protocols that built upon established web protocols that allow you to

753
01:02:14,480 --> 01:02:19,600
further decouple data ownership from the applications. So that instead of, say, having

754
01:02:20,320 --> 01:02:26,720
Facebook storing all your images and Twitter storing, like storing all of your images, you say,

755
01:02:26,720 --> 01:02:32,160
okay, here's my folder with images, Facebook, you can access 10 images from here, Twitter,

756
01:02:32,160 --> 01:02:36,480
you can access 15 images from here, you can't really do anything else with that. And here I

757
01:02:36,480 --> 01:02:41,280
didn't information that you can apply on them, you can run them through AI algorithms for ads or

758
01:02:41,280 --> 01:02:47,600
whatever. And so his whole fixation right now is on decoupling ownership of data, which is,

759
01:02:47,600 --> 01:02:53,600
I think, is also a very interesting way of thinking about decentralization. And his main

760
01:02:53,600 --> 01:02:57,520
argument against blockchains is actually, and I'm quoting this from the CNBC.

761
01:03:00,800 --> 01:03:06,320
Sorry, just a second. So blockchain protocols may be good for some things, but they're not good

762
01:03:06,320 --> 01:03:11,840
for solid. A web decentralization project led by Tim Berners-Leach has said, they're too slow,

763
01:03:11,840 --> 01:03:19,040
too expensive, and too public. Personal data stores have to be fast, cheap, and private. And I

764
01:03:19,040 --> 01:03:26,960
obviously don't want to sort of go on the argument here, but there's a fair bit of generalization

765
01:03:26,960 --> 01:03:30,000
right when it comes to, and it's really hard to keep up with the things that are going in the

766
01:03:30,000 --> 01:03:35,840
blockchain industry. And to that extent, obviously, you can take big protocols that are slow and

767
01:03:35,840 --> 01:03:41,120
expensive and use proof of work still, it's 2024. But at the same time, when we look at things like

768
01:03:41,120 --> 01:03:46,320
Algorand, which is, I think, takes a lot of boxes and what he considers this is an important argument

769
01:03:46,320 --> 01:03:53,840
for prerequisites for having something like that done in proper decentralized matter. What are your

770
01:03:53,840 --> 01:04:00,640
sort of opinions on the ways how blockchain industry in general going to increase its

771
01:04:00,640 --> 01:04:11,280
interoperability with more sort of conservative and I guess more core layer zero sort of V3CRFCs

772
01:04:11,280 --> 01:04:17,360
and specs that they're introducing and that they consider it through decentralization.

773
01:04:17,920 --> 01:04:22,480
Sure. Yeah, so this is a huge topic. And so I'll try to be like a 30 second answer on it. But like,

774
01:04:23,280 --> 01:04:29,200
I also care deeply about this. And my eyes were opened at CFC. I was on a panel with Yuval from

775
01:04:29,200 --> 01:04:35,040
Kanton Chain. And like he was telling me, they built Damol, right, this kind of Markup language

776
01:04:36,240 --> 01:04:39,680
it's actually like an abstract syntax tree for like financial instruments. And you can model

777
01:04:39,680 --> 01:04:45,120
anything from a structured product to a butterfly to like a whole bunch of like exotic things,

778
01:04:45,120 --> 01:04:50,000
like bonds, knock ins, knock outs, all in this kind of like tree. And so he made the point to me and

779
01:04:50,000 --> 01:04:57,520
I think he's absolutely right. Interoperability really only gets there when an asset, when a

780
01:04:57,520 --> 01:05:04,000
bond is represented on an Algorand can be transferred to Ethereum without wrapping, without a translation

781
01:05:04,000 --> 01:05:09,120
where we have a standard baselayer representation of financial instruments where we have a standard

782
01:05:09,120 --> 01:05:15,680
baselayer representation of NFTs. Of course, on Ethereum, it's ERC721, ERC20 on Algorand,

783
01:05:15,680 --> 01:05:21,680
it's ARKTHIS, ARKTHAT, ARK19, whatever. Like that stuff is fine. And you're representing the same

784
01:05:21,680 --> 01:05:26,080
abstraction or you have an abstraction representing the same kind of fundamental concept, but like

785
01:05:26,080 --> 01:05:32,320
it's not portable. And so I do think that we need like IEEE, ISO level kind of level standards

786
01:05:32,320 --> 01:05:36,320
that just kind of, you know, the way same way all Wi-Fi access points use the same radio

787
01:05:36,320 --> 01:05:41,120
frequencies and all like, like, you know, quick or HTTPS uses the same, it doesn't matter what

788
01:05:41,120 --> 01:05:45,920
browser you're using, they all talk the same way. And so that's where I'd love to see it. I think

789
01:05:45,920 --> 01:05:52,240
things like the DREC Alliance, like, you know, non-partisan, non-biased technologies like that

790
01:05:52,240 --> 01:05:56,080
that Hedera and Algorand are doing together for key recovery, that's a first step into this kind

791
01:05:56,080 --> 01:06:00,640
of approach. But I would love to see leaders from or representatives or stewards from the various

792
01:06:00,640 --> 01:06:06,320
projects, all have a place that they can come to set standards globally, because sure, Ethereum's the

793
01:06:06,320 --> 01:06:11,200
leader in a lot of this stuff. And most of the other chains have kind of taken a derivative of

794
01:06:11,200 --> 01:06:15,280
what they've done. But I would just love to see it more standardized, because that's where we get

795
01:06:15,280 --> 01:06:22,720
real interoperability. And by the way, congratulations was the great cooperation initiative

796
01:06:22,720 --> 01:06:28,080
was Hedera on the DREC, which I think is one of the most fundamental sort of issues in terms of

797
01:06:28,080 --> 01:06:37,280
accessibility. Alessandro, is there anything you could, I guess, as a set of closing

798
01:06:37,280 --> 01:06:45,760
thoughts, you can share in regards to the house Algor kit is basically being designed to accommodate

799
01:06:45,760 --> 01:06:51,280
future advancement. Because right, what we're doing here is obviously targeting the user feedback

800
01:06:51,280 --> 01:06:55,200
and the needs and demands in the ecosystem. But at the same time, there's a lot of cool things

801
01:06:55,200 --> 01:06:59,520
that are happening and other chains, right? Everyone is working really hard in this particular

802
01:06:59,520 --> 01:07:06,080
industry. And there's a lot of innovation happening. What would you say? What would you say is the

803
01:07:06,080 --> 01:07:12,640
mechanism by which Algor kit is essentially trying to be designed such that it can easily

804
01:07:12,640 --> 01:07:18,560
accommodate certain periods like that? Yeah, we've touched it throughout a bit,

805
01:07:18,560 --> 01:07:25,760
the entirety of this episode, the modularity aspect of our look it and whatever we ship,

806
01:07:25,760 --> 01:07:33,520
we try it to be as modular and self standing as possible case in point, the Puyah compiler,

807
01:07:33,520 --> 01:07:40,800
the only certain thing at the moment in Algor and is the ATM. So languages come and go.

808
01:07:40,800 --> 01:07:49,760
We have Python for now, we'll add another language next year. But then if, and if all of a sudden

809
01:07:49,760 --> 01:07:55,600
zig brand new language gets into mainstream and everyone wants to develop the big,

810
01:07:56,400 --> 01:08:02,560
they'll have our integrations in commit histories and documentations that will do throughout the

811
01:08:02,560 --> 01:08:09,280
year on how to port a language to the Puyah compiler, they'll have that as a as a guiding

812
01:08:09,280 --> 01:08:17,200
principle. So the Puyah compiler stays there, but everything around it could change. And the same

813
01:08:17,200 --> 01:08:23,360
thing goes for Algor kit. At the moment, we are as a front end, we are championing react,

814
01:08:23,360 --> 01:08:29,520
because this looks like the industry standard. But client generators, which is the core thing

815
01:08:29,520 --> 01:08:37,200
that we have done. Those can be can be used everywhere with JavaScript front ends, or even

816
01:08:37,200 --> 01:08:45,040
with Python or JavaScript back ends. This is the key thing, we are building solid foundations.

817
01:08:46,400 --> 01:08:52,240
So that then everything that sits on top of it can change fast and can change easily.

818
01:08:52,240 --> 01:09:01,520
So this is, this is why with this year that we are not only building in open source, like we've

819
01:09:01,520 --> 01:09:08,480
always did, but we are building in the open. So all our developers and all our community members

820
01:09:08,480 --> 01:09:15,120
can see our whole process, how we go through tasks, scope them out, the ADR is behind them.

821
01:09:15,120 --> 01:09:20,640
They can see why and how we take certain decisions, and they can be a part of it,

822
01:09:20,640 --> 01:09:26,400
because we are only as good as all the information that we can have. So the more information we

823
01:09:26,400 --> 01:09:34,720
have, the better and the better choices we can make. So I'm looking forward to a year of building

824
01:09:34,720 --> 01:09:42,080
in the open, building with the community, even more than ever, and building things that are not

825
01:09:42,080 --> 01:09:49,040
opinionated and can therefore serve and cater to the community as long as possible.

826
01:09:49,040 --> 01:09:57,040
I can't agree with you more on that point. And historically, this podcast would always have

827
01:09:57,920 --> 01:10:02,080
the closing remarks by asking the guests on their opinions on sort of

828
01:10:04,400 --> 01:10:09,520
and advices for aspiring software engineers, but I think there has been 19 advices so far

829
01:10:09,520 --> 01:10:14,080
in the previous episodes. And this time, given the very special format, I wanted to ask

830
01:10:14,080 --> 01:10:20,480
the final question to Rob was a bit more, I guess, target towards a different audience. And this

831
01:10:20,480 --> 01:10:26,720
audience, in this case, I'm talking about this. There's a lot of, I would say, small to medium

832
01:10:26,720 --> 01:10:32,640
size tech startups and businesses out there, not necessarily within blockchain, right? And they

833
01:10:32,640 --> 01:10:40,160
are all looking for ways to solve unique problems. And sometimes those unique problems are solved

834
01:10:40,160 --> 01:10:50,080
with very unique distributed systems and technologies. And basically, if you are assuming

835
01:10:50,080 --> 01:10:55,680
them as a target audience, you know, from from their startup perspective, what technological trends

836
01:10:55,680 --> 01:11:00,320
should businesses be prepared to leverage and adopt if they're considering solving a problem with

837
01:11:01,440 --> 01:11:05,840
blockchain as the main key is a main tool to resolve this? And how do you think

838
01:11:05,840 --> 01:11:12,640
Algukit and Algorantin in a bigger scope can facilitate this? Yeah, so I do spend a lot of

839
01:11:12,640 --> 01:11:18,640
time talking to startups and founders naturally that, you know, the key kind of target that we

840
01:11:19,760 --> 01:11:28,080
work with. And what I'd actually say, maybe controversially, is that if the starting point

841
01:11:28,080 --> 01:11:32,400
is how can I use this tech, they're probably not actually starting at the right point,

842
01:11:32,400 --> 01:11:37,360
because I generally say to people, don't start with the tech, start with the business problem

843
01:11:37,360 --> 01:11:44,560
that you're solving, and what value means to that business problem. And, you know, as part of that,

844
01:11:44,560 --> 01:11:49,280
what is going to be a sustainable business model? Because it's a hyper competitive world. And if

845
01:11:49,280 --> 01:11:53,280
you don't have a sustainable business model, then you're going to go out of business. There's only

846
01:11:53,280 --> 01:12:00,640
so many funding rounds that you can do from VCs, etc. Right. So I guess step one from my perspective

847
01:12:00,640 --> 01:12:07,040
then is, you know, once you have a, you know, this deep understanding of your business model and what

848
01:12:07,040 --> 01:12:13,120
value means, that's when you can start looking at what technology can potentially solve that.

849
01:12:13,680 --> 01:12:18,400
And then that's the point where you can say, great, now that we know what you're trying to solve,

850
01:12:18,400 --> 01:12:24,240
is there unique ways that we can use technology, be it things like AI, which is obviously very

851
01:12:24,240 --> 01:12:30,800
big at the moment, or blockchain, or whatever other, you know, IoT, or whatever, there's so many

852
01:12:31,360 --> 01:12:37,920
technologies out there, potentially a combination of them that can help to solve business problems

853
01:12:37,920 --> 01:12:42,080
and create business models that otherwise wouldn't be possible, or they can make them more efficient,

854
01:12:42,080 --> 01:12:46,480
or they can make them cheaper, or, you know, something or more secure, or whatever it is, right.

855
01:12:47,600 --> 01:12:53,840
And what I would then say is great, once you've figured that out, now let's figure out if

856
01:12:53,840 --> 01:12:58,640
blockchain is a good solution. And for that, the mental model I generally take is,

857
01:12:58,640 --> 01:13:02,480
there are certain architectural properties of blockchains, particularly one as,

858
01:13:03,680 --> 01:13:11,520
as John, as so eloquently put so many times fit for purpose as our grand, that, you know, help you

859
01:13:11,520 --> 01:13:16,240
solve problems in a more, in a better or more efficient manner. And there's three categories

860
01:13:16,240 --> 01:13:21,120
of architectural properties, there's trust security and tradeability. So for trust, we're

861
01:13:21,120 --> 01:13:26,240
talking about things like business problems where immutability or public inspectability or

862
01:13:26,240 --> 01:13:35,840
transparency are of value, right, to that business interaction. From a security perspective, it might

863
01:13:35,840 --> 01:13:41,680
be things like multi-party atomicity of some sort of transaction, which doesn't have to be a financial

864
01:13:41,680 --> 01:13:46,320
transaction, it could be any kind of business transaction or exchange of information or data

865
01:13:46,320 --> 01:13:50,720
or whatever it might be, or things like cryptographic verifiability, or where you're trying

866
01:13:50,720 --> 01:13:56,960
to prove a fact that something happened at some point, or, and in particular, that that's tamper

867
01:13:56,960 --> 01:14:02,160
proof. There's obviously a number of interesting privacy kind of things that you can do naturally

868
01:14:02,160 --> 01:14:07,280
where you're not storing the actual data that needs to be private on a public blockchain.

869
01:14:08,160 --> 01:14:12,960
And certainly, if you want to have like enforced auditable history from a security perspective,

870
01:14:12,960 --> 01:14:17,200
that's a, that's really easy to do with blockchain. And then from a tradeability perspective, the

871
01:14:17,200 --> 01:14:21,920
interesting thing about blockchain is it transcends borders. So whilst you still need to be regulatory

872
01:14:21,920 --> 01:14:28,320
compliant, things like global tradeability, proof of ownership, automation of business,

873
01:14:28,320 --> 01:14:34,000
processes based on ownership or trading of data or informational assets or whatever it might be,

874
01:14:34,640 --> 01:14:39,520
and certainly encoding like process efficiency, particularly using things like smart contracts

875
01:14:39,520 --> 01:14:47,440
where you can encode parts of the process in a, you know, a trustless manner into, you know, this

876
01:14:47,440 --> 01:14:54,480
thing without needing humans to necessarily do things that in traditional kind of mechanisms,

877
01:14:54,480 --> 01:14:59,520
these are the things that blockchain technology and particularly a fit for purpose blockchain

878
01:14:59,520 --> 01:15:05,840
like Algran make really easy compared to what it would otherwise be. And then maybe to circle all

879
01:15:05,840 --> 01:15:12,240
the way back around, if you then look at something like Algor kit in the context of Algor and Algor

880
01:15:12,240 --> 01:15:18,160
kit is something that makes it way easier. Once you realize that blockchain is a great answer

881
01:15:18,720 --> 01:15:25,760
to build the solutions that use that technology with traditional engineering skills without having

882
01:15:25,760 --> 01:15:30,960
to have a real deep, deep understanding of this very different kind of technology ecosystem and

883
01:15:30,960 --> 01:15:37,120
the low level protocol. So yeah, that's that's kind of my thoughts on that. Thank you. Thank you

884
01:15:37,120 --> 01:15:42,880
for the great response. I think this is definitely a list of very important considerations to to

885
01:15:42,880 --> 01:15:49,200
keeping your head when you're once you obviously decide that it's indeed, you know, blockchain

886
01:15:49,200 --> 01:15:53,840
that is going to help me. But I absolutely agree with the point that the shouldn't start with

887
01:15:53,840 --> 01:16:01,680
speaking the technology, it should always start with speaking the actual problem to solve. How

888
01:16:01,680 --> 01:16:08,080
can you reach a product market and all of those things but exactly. Yeah. On that note, I think we

889
01:16:09,920 --> 01:16:17,200
had very amazing and detailed recap of a lot of different areas and news and announcements in the

890
01:16:17,200 --> 01:16:25,840
Algorand world. And hopefully did a slightly deeper dive into Algor kit and looking forward to

891
01:16:25,840 --> 01:16:31,520
potentially have a dedicated episode on Puyah, but closer to the stages when it's going to be a bit

892
01:16:31,520 --> 01:16:41,040
more. I would assume fit for production or prod. But other than that, once again, thank you very

893
01:16:41,040 --> 01:16:47,440
much for I know how hard it is to once again to make, you know, to organize something like this and

894
01:16:47,440 --> 01:16:51,680
make sure that everyone is comfortable and their time slot is available and things like that. So

895
01:16:52,240 --> 01:16:58,000
thank you very much for joining. It's an incredible privilege and pleasure to chat with you. And I

896
01:16:58,000 --> 01:17:03,520
hope the listeners are going to enjoy this episode and have a lot more insights behind what goes into

897
01:17:03,520 --> 01:17:16,640
Algor kit. Thank you. It's been awesome. Thanks buddy.

