WEBVTT

1
00:00:06.519 --> 00:00:12.279
Hello everybody, and welcome to another
episode of JavaScript Jump. On our panel

2
00:00:12.320 --> 00:00:16.239
today, we've got a j O'Neill. Hey, a j yo yo yo

3
00:00:16.359 --> 00:00:25.000
coming at you live from tactile keyboard
switches. That's that's a fact that I

4
00:00:25.079 --> 00:00:28.920
never actually got. But you know, I know that people really get excited

5
00:00:28.960 --> 00:00:33.840
about it, so good for you. It's just a test board, okay.

6
00:00:35.280 --> 00:00:40.159
And and another panelist on today is
Steve Edwards. How are you?

7
00:00:40.240 --> 00:00:44.640
Steve? Been busier than in one
legged mannered a butt kicking contest this morning.

8
00:00:44.759 --> 00:00:51.520
But hello from cold and rainy Portland. Hello Steve. By the way,

9
00:00:51.560 --> 00:00:55.200
just so you know that I'm sitting
here with the window open because the

10
00:00:55.240 --> 00:01:00.039
weather is really nice here and I
am I appreciate that. Yeah, the

11
00:01:00.240 --> 00:01:03.840
other issues as unfortunately, there are
other issues. So for those of you

12
00:01:03.879 --> 00:01:07.879
don't remember, I'm coming from Tel
Aviv, which is in Israel, which

13
00:01:07.920 --> 00:01:14.000
is at war, which is in
fun to say the least. Uh.

14
00:01:14.040 --> 00:01:19.359
And our guest today is Andreas Mulla. Did I pronounce it correctly? Yes?

15
00:01:19.680 --> 00:01:25.359
Pretty much. Yeah, I'm coming
at you from Copenhagen. Then not

16
00:01:26.920 --> 00:01:30.680
wonderful, wonderful Copenhagen. Let's see
who gets the reference. Everybody, is

17
00:01:30.680 --> 00:01:37.760
probably way too young anyway. So
Andreas, tell us a little bit about

18
00:01:37.799 --> 00:01:41.599
yourself, who you are, what
you do. We like to ask people

19
00:01:41.680 --> 00:01:46.640
why they while they're famous, you
know, or they think they're famous.

20
00:01:47.319 --> 00:01:51.120
I am pretty convinced I'm not famous. I'm pretty sure. Yeah I'm not.

21
00:01:51.680 --> 00:01:53.640
But once you get once you're on
here, then your famed increases and

22
00:01:53.680 --> 00:01:57.959
you start getting autographed multiple people in
the past. Yeah, no, I

23
00:01:59.280 --> 00:02:05.480
expect that, family man. I
am. Well, I'm famous because I

24
00:02:05.519 --> 00:02:09.159
was on the JavaScript Jabba podcast,
which is where people will know me from.

25
00:02:09.280 --> 00:02:14.080
I think, uh, yeah,
I'm I'm a software engineer that's been

26
00:02:14.280 --> 00:02:19.360
building web applications for what is probably
a little bit over two decades now,

27
00:02:19.800 --> 00:02:23.039
uh, and work with a ton
of different frameworks, a ton of different

28
00:02:23.240 --> 00:02:29.159
stacks and technologies, always with a
lot of focus on web because I always

29
00:02:29.159 --> 00:02:32.560
found the it kind of to be
the most fun platform. The fact that

30
00:02:32.599 --> 00:02:42.000
you can deploy apps right away has
just always been fantastic. Now there's all

31
00:02:42.080 --> 00:02:47.840
sorts of building and packaging and bundling
and transpiling and whatnot getting in the way.

32
00:02:49.840 --> 00:02:53.879
If only there was a way to
get out of that. Yeah,

33
00:02:53.879 --> 00:03:00.000
I think that might be what we're
going to be talking about today. Yeah,

34
00:03:00.039 --> 00:03:04.000
yeah, so yeah. I've been
always working with the web, and

35
00:03:04.719 --> 00:03:08.080
in the most recent couple of years, I've been sort of obsessed with this

36
00:03:08.360 --> 00:03:13.719
year if there's a at least it
might brook a better way of building web

37
00:03:13.719 --> 00:03:19.919
applications, like something that lets you
ship faster, lets you work faster,

38
00:03:20.360 --> 00:03:24.919
and sort of more seamlessly. We've
seen a ton of sort of progress in

39
00:03:24.960 --> 00:03:30.159
this space, I think over the
last especially five years actually, but also

40
00:03:30.159 --> 00:03:35.080
the last ten years, like a
lot have happened, right, and most

41
00:03:35.120 --> 00:03:38.639
recently a lot of the new build
tools and hosting platforms has just made this

42
00:03:38.719 --> 00:03:43.360
process so much easier. But there's
every time you make a progress, there's

43
00:03:43.400 --> 00:03:46.199
like you can see the next step, you can see the next place you

44
00:03:46.240 --> 00:03:50.360
want to go to. Right.
So for me, this sort of meant

45
00:03:50.759 --> 00:03:54.479
is the way to build applications faster. And I spend most of my time

46
00:03:54.520 --> 00:03:59.520
building the front and part of applications, so specifically it is that way to

47
00:03:59.520 --> 00:04:04.120
build you faster for web applications,
and that sort of led me to start

48
00:04:04.240 --> 00:04:10.759
Title, which is a platform for
building web applications without actually writing code.

49
00:04:10.840 --> 00:04:15.439
So you build all the UI in
the title editor just like you would do

50
00:04:15.560 --> 00:04:18.759
in a tool like webflow or any
sort of similar tools. So that but

51
00:04:18.839 --> 00:04:24.319
what set Toddle a little bit apart
is the fact that you can take you

52
00:04:24.319 --> 00:04:27.480
can build the UI title, but
you can also actually build the logic and

53
00:04:27.519 --> 00:04:30.360
all the data fetching and everything else
in total, so you never have to

54
00:04:30.480 --> 00:04:34.120
leave that tool. You can build
the entire application there. And that is

55
00:04:34.199 --> 00:04:38.240
actually you can do all these things, but actually having to write any code

56
00:04:38.240 --> 00:04:45.319
to make that happen. Yeah,
so no code and low code have been

57
00:04:45.560 --> 00:04:50.879
quite the rage in recent years.
It seems to me it's kind of like

58
00:04:51.120 --> 00:04:57.560
it's if our market is kind of
splitting. You know. Some people are

59
00:04:57.720 --> 00:05:02.560
betting on, you know, meta
frameworks and frameworks and meta frameworks which are

60
00:05:02.600 --> 00:05:09.279
really heavy into the coding part.
You know, you write your UI as

61
00:05:09.480 --> 00:05:14.920
lines of code. Others are,
like you said, are betting on a

62
00:05:14.959 --> 00:05:21.160
no code or low code approach of
dragging and dropping their way to a web

63
00:05:21.199 --> 00:05:26.399
application. A website or web application. By the way, I mentioned,

64
00:05:26.720 --> 00:05:30.040
people who have listened to this podcast
probably know that I used to work at

65
00:05:30.040 --> 00:05:33.439
wigs up until two years ago,
which is very much in the space as

66
00:05:33.439 --> 00:05:41.000
well. Its main focus though,
is on the visual building of the websites

67
00:05:41.120 --> 00:05:46.040
only recently as it also started,
you know, starting to target a similar

68
00:05:46.079 --> 00:05:50.560
place that you seem to be at, which is building actual business logic on

69
00:05:50.680 --> 00:05:57.920
top of the of the user interface
that gets constructed. So I looked at

70
00:05:57.959 --> 00:06:01.319
the total website, and I looked
at some of your demos and videos and

71
00:06:01.720 --> 00:06:10.040
whatnot, And what got me really
interesting is less the visual editing part.

72
00:06:10.240 --> 00:06:14.040
I mean, it's really cool the
way the fact that you can build a

73
00:06:14.199 --> 00:06:18.720
user interface with drag and drop like
a bit like you do with with like

74
00:06:19.040 --> 00:06:24.759
you said, with Webflow, or
maybe with Figma, and then somehow translated

75
00:06:25.079 --> 00:06:30.399
into an actual web web application or
website or web page. But what got

76
00:06:30.439 --> 00:06:41.480
me more interested is the way that
you implement business logic in a no code

77
00:06:41.560 --> 00:06:48.079
type approach. Your ability to actually
specify interactivity and computational parts. And one

78
00:06:48.079 --> 00:06:55.839
of the videos that I saw was
you actually using your tool to do like

79
00:06:57.399 --> 00:07:03.079
coding challenges. So it's really using
a no code tool to implement to solve

80
00:07:03.519 --> 00:07:11.480
coding challenges. So how does that
work? Yeah, exactly, coding with

81
00:07:11.519 --> 00:07:17.079
a visual editor. Yeah, that
was exactly. I only did the first

82
00:07:17.079 --> 00:07:21.360
of December and I released it on
the fourth of December to make sure that

83
00:07:21.439 --> 00:07:29.279
I was not like giving away anything
but essentially just showing that the flake flexibility

84
00:07:29.319 --> 00:07:32.519
of Totles, especially Logic Engine,
means that you can you can solve edwin

85
00:07:32.560 --> 00:07:36.000
of code challenges in total, and
again you can do it without writing code.

86
00:07:38.879 --> 00:07:46.279
That's the headliner right there. Yeah, but it's not exactly not writing

87
00:07:46.360 --> 00:07:50.360
code. It's you're kind of drawing
code as it were. I mean,

88
00:07:50.560 --> 00:07:56.439
it's it's empty complete. I think
for those you know, more technically minded

89
00:07:56.480 --> 00:08:03.439
of our listeners, correct, yes, so can you explain that? Well?

90
00:08:05.759 --> 00:08:09.480
So, I think I think that's
this. This is not entirely new.

91
00:08:09.959 --> 00:08:15.439
I realized before we did that that
someone had done it in Sketch,

92
00:08:16.279 --> 00:08:20.480
the visual programming language for children,
So we're not exactly the first first tool

93
00:08:20.560 --> 00:08:24.879
to do that. I think it
still surprises a lot of people that it's

94
00:08:24.879 --> 00:08:30.639
possible, often because it's not really
what we associate. We don't associate visual

95
00:08:30.680 --> 00:08:35.679
programming with anything complex. It's generally
used, and I think this actually kind

96
00:08:35.679 --> 00:08:39.480
of applies to a lot of no
code. Most people see it as tools

97
00:08:39.480 --> 00:08:43.399
for people who can't code, and
so if you know how to code,

98
00:08:43.440 --> 00:08:46.720
why would you ever touch one of
those? Right? It seems unnecessary.

99
00:08:48.159 --> 00:08:50.960
But I think what we're seeing in
the more recent years is that there's actually

100
00:08:50.000 --> 00:08:54.320
really a point to that, and
there's a power and flexibility in this that

101
00:08:54.519 --> 00:08:58.600
rivals code. You can do all
the same thing. And I think you

102
00:08:58.720 --> 00:09:01.960
said sort of, well, it
is kind of code, and I think

103
00:09:01.039 --> 00:09:05.000
you're right. We we I like
making this distinction that it's programming but it's

104
00:09:05.039 --> 00:09:20.639
not code. So there's My wife
is an accountant and she can't write a

105
00:09:20.720 --> 00:09:24.519
visual basic script to save her life. It doesn't make sense to her.

106
00:09:24.039 --> 00:09:28.200
She will, you know, copy
and paste something off of the internet,

107
00:09:28.320 --> 00:09:35.080
but like the very idea of indentation
being a way to logically group something like

108
00:09:35.120 --> 00:09:39.080
she's done PowerPoint presentations, just bullet
points, but for some reason like that,

109
00:09:39.120 --> 00:09:43.000
it just doesn't Maybe it's a mental
block. I don't know. I

110
00:09:43.279 --> 00:09:46.480
would I would say that she is
smart enough and capable enough to be able

111
00:09:46.519 --> 00:09:54.039
to decide a logical flow, but
she no texts. She couldn't do it.

112
00:09:54.080 --> 00:09:58.120
So I'm wondering if, if maybe
this could open up an avenue for

113
00:09:58.159 --> 00:10:01.519
people like that where they I don't
I don't understand it, but like just

114
00:10:03.559 --> 00:10:13.279
can't grasp the textual representation maybe could
grasp like a nested flow representation. Yes,

115
00:10:13.720 --> 00:10:16.799
I mean we're seeing that all the
time, so I think I think

116
00:10:16.799 --> 00:10:20.679
there's a very big benefit, which
is that it just looks a lot less

117
00:10:20.720 --> 00:10:24.480
scary. And And the thing is
like, when you've been coding for a

118
00:10:24.519 --> 00:10:28.960
long time, you kind of forget
what it was like, Like you forget

119
00:10:28.039 --> 00:10:35.519
the early days. My wife will
never forget PHP. No, but you

120
00:10:35.639 --> 00:10:39.120
might forget some of the journey of
learning it, right. I mean,

121
00:10:39.240 --> 00:10:41.840
my wife just changed to be a
programmer. She just got a job last

122
00:10:41.919 --> 00:10:46.639
year as a front end developer,
which is super I running now that I'm

123
00:10:46.679 --> 00:10:50.480
trying to move the industry away from
it, but it's sort of as an

124
00:10:50.519 --> 00:10:52.440
opportunity for me to go back and
see, like, oh, yeah,

125
00:10:52.559 --> 00:10:56.960
it was really hard to figure out
how variable bindings work and why this value

126
00:10:56.960 --> 00:11:01.480
is there now and not before.
It's just you forgot because you've been thinking

127
00:11:01.519 --> 00:11:07.000
about it for years. You've just
been thinking in a certain way. It's

128
00:11:07.200 --> 00:11:13.879
really interesting, you know. I
kind of like to compare coding to the

129
00:11:13.960 --> 00:11:18.759
way that lawyers write contracts. You
know, we need to describe something in

130
00:11:18.799 --> 00:11:24.799
a super precise way, but it
still needs to be kind of readable.

131
00:11:24.840 --> 00:11:35.120
And writeable by humans. So lawyers
in contracts invented like they took the English

132
00:11:35.200 --> 00:11:39.480
language and they kind of twisted it. So it's still English, but it's

133
00:11:39.519 --> 00:11:43.120
not the English that you would write
as a normal person. It's contract English,

134
00:11:43.480 --> 00:11:46.679
you know, party of the first
part, part of the second part,

135
00:11:46.759 --> 00:11:52.879
and so forth. We as programmers
took it a step further. We

136
00:11:52.960 --> 00:12:01.679
went further away from human languages to
something that's you know, more alien to

137
00:12:01.759 --> 00:12:05.559
most people, which is why I
think a lot of people really struggle with

138
00:12:05.639 --> 00:12:09.240
it. Like, you know,
the way that it executes the whole line

139
00:12:09.360 --> 00:12:15.480
after a line that seems to make
perfect sense to us is really challenging to

140
00:12:15.519 --> 00:12:18.759
a lot of people that are not
from from this space. Now, you

141
00:12:18.799 --> 00:12:24.399
know, we try to explain it
by saying it's it's like a cookbook recipe

142
00:12:24.120 --> 00:12:28.879
or stuff like that, or the
instructions that you might get from Ikia,

143
00:12:28.080 --> 00:12:37.320
but that just scares people even more. But but but yeah, but so

144
00:12:37.919 --> 00:12:43.679
talking about total for instead of code, which you know, most of our

145
00:12:43.679 --> 00:12:46.399
listeners I assume know how code looks
like. Now, obviously this is a

146
00:12:46.440 --> 00:12:50.159
podcast, this is not a visual
medium, so it's kind of challenging.

147
00:12:50.559 --> 00:12:58.799
But can you try to describe how
Total Programming looks and feels like, yeah,

148
00:13:00.000 --> 00:13:05.120
asolutely. So one of the things
that are a little bit different with

149
00:13:05.279 --> 00:13:11.720
Total than other sort of previous visual
programming languages is that in Total we kind

150
00:13:11.720 --> 00:13:16.360
of split programming into three separate parts. So that's the first part, as

151
00:13:16.360 --> 00:13:20.799
you mentioned, the visual building,
which is just building UI and essentially saying

152
00:13:20.799 --> 00:13:24.080
I want a div and a button
inside the div, and it needs some

153
00:13:24.120 --> 00:13:26.840
attributes and I need to apply some
styling, and it is all If people

154
00:13:26.879 --> 00:13:31.200
are familiar webflows, it's pretty much
exactly the same thing you're doing in web

155
00:13:31.240 --> 00:13:33.679
flow, right, So that's kind
of one editor one part of it.

156
00:13:35.000 --> 00:13:41.759
Then we have workflows, which are
essentially large flow charts, and they come

157
00:13:41.799 --> 00:13:46.320
in every time you have a set
of actions you want to perform. So

158
00:13:46.360 --> 00:13:50.240
let's say when a user clicks a
button, you can attach a workflow and

159
00:13:50.279 --> 00:13:54.840
say I want you to do this. If this, then do that,

160
00:13:54.000 --> 00:13:58.799
otherwise do that, then do this
bit right, very sort of flow chart

161
00:14:00.960 --> 00:14:05.240
style execution, and it's visually built
to look like a flow shot, right,

162
00:14:05.279 --> 00:14:07.759
it's got our own spin on it. But I mean, if you

163
00:14:07.840 --> 00:14:11.639
read a flow shot, you can't
immediately understand what's going on there, right,

164
00:14:11.799 --> 00:14:18.159
And if you're familiar with functional programming
paradigms, this is sort of everything

165
00:14:18.200 --> 00:14:22.519
that has a side effect is an
action in total, So flow shots are

166
00:14:22.559 --> 00:14:26.039
like actions or like do this side
effect, then do that side effect,

167
00:14:26.080 --> 00:14:31.320
then do that side effect. So
it can be update a variable, it

168
00:14:31.360 --> 00:14:35.159
can be call and API, it
can be set page title, anything that

169
00:14:35.679 --> 00:14:39.480
where you're sort of making a change
in your system. That's an action.

170
00:14:39.919 --> 00:14:43.679
And the third part is then the
formula editor. And again this is very

171
00:14:43.759 --> 00:14:50.120
much boring from functional programming. Formulas
are entirely pure. I say entirely.

172
00:14:50.200 --> 00:14:52.759
We do have a few like date
and time and now, so we're not

173
00:14:54.000 --> 00:14:56.639
entirely strict to that process, but
there at least no side effects. So

174
00:14:56.679 --> 00:15:03.519
there's only ever like computer value.
And this looks if anybody's ever done Blender

175
00:15:05.480 --> 00:15:09.240
or like three D any sort of
three D two, you know that there's

176
00:15:09.360 --> 00:15:13.279
like a material section to do that. This might not be all of your

177
00:15:13.639 --> 00:15:18.120
listeners, but if you ever seen
any like three D two, you realize

178
00:15:18.159 --> 00:15:22.120
that actually visual programming is huge in
the three D space. When people are

179
00:15:22.120 --> 00:15:28.840
building materials and assigning material like different
kind of notes, they're always doing these

180
00:15:28.960 --> 00:15:35.799
massive like computation graphs, and in
this space like visual programming is entirely dominant,

181
00:15:35.840 --> 00:15:39.000
right, nobody's writing code for this. I never really understood why.

182
00:15:39.200 --> 00:15:46.399
I think the basic reason is just
that people didn't, like most materialists didn't

183
00:15:46.440 --> 00:15:48.759
know how to code. So it's
easy to build a visual interface, right,

184
00:15:48.200 --> 00:15:52.639
but some of these can be incredibly
complex in the three D world,

185
00:15:52.279 --> 00:15:56.080
and toddles visually look the same.
It's a bunch of notes with graphs in

186
00:15:56.120 --> 00:16:03.600
between, and it's essentially function.
It's essentially like just like you would have

187
00:16:03.639 --> 00:16:07.960
a JavaScript function. It produced one
output, takes any number of inputs.

188
00:16:07.360 --> 00:16:11.960
This is the same thing. Just
the range. There's a big graph where

189
00:16:11.000 --> 00:16:15.000
on the right side you'll get your
output, and then every node can have

190
00:16:15.080 --> 00:16:18.799
more one or more inputs, and
you have this big tree graph structure.

191
00:16:18.279 --> 00:16:26.799
That's your computation graph right now.
So I have a couple of questions about

192
00:16:26.840 --> 00:16:32.639
that. I'm thinking about where to
start. Okay, So one thing that

193
00:16:32.679 --> 00:16:37.799
I remember from looking at your demos
and also your videos is that there's a

194
00:16:37.879 --> 00:16:45.279
strong reactive aspect to the way that
you work. So you talked about actions

195
00:16:45.320 --> 00:16:51.200
being side effects, but what I
saw is that very often that side effect

196
00:16:51.320 --> 00:16:57.240
is actually update variable. Where a
variable is basically just the name value that

197
00:16:57.360 --> 00:17:07.279
can change. And whenever a variable
changes, that variable is bound to things.

198
00:17:07.920 --> 00:17:12.480
So it might be bound to some
aspect of the user interface, for

199
00:17:12.519 --> 00:17:21.000
example, or it might be bound
to other computations maybe, and whenever you

200
00:17:21.119 --> 00:17:27.160
update the variable, then everything that
is bound to that variable automatically changes accordingly.

201
00:17:29.559 --> 00:17:33.559
Yeah, that's correct, and so
the basic model here we use for

202
00:17:33.640 --> 00:17:38.720
how total works is exactly the same
you'd seen React of view Angular today.

203
00:17:38.799 --> 00:17:44.720
Right. The underlying premise is a
different between each framework, but the general

204
00:17:44.759 --> 00:17:48.200
idea is the same. Right.
You have some state you have either from

205
00:17:48.279 --> 00:17:53.079
variables or maybe from an API,
and then every time that changes, you

206
00:17:53.160 --> 00:17:59.000
update the UI automatically. Right,
And each platform has a slightly different mechanism

207
00:18:00.039 --> 00:18:03.880
in which that happens, but the
overall concept is the same. And again

208
00:18:03.880 --> 00:18:06.880
that's the same model we adopted to
Toddle. Right, So we tried not

209
00:18:06.960 --> 00:18:11.279
to reinvent everything about web development.
We're kind of just saying, what is

210
00:18:11.359 --> 00:18:18.160
that dominant component architecture that has won, so that pretty much every modern framework

211
00:18:18.279 --> 00:18:22.279
uses exactly the same idea today,
right, and how can we apply that

212
00:18:22.880 --> 00:18:30.039
into a visual development context. So
a few questions about that. So first

213
00:18:30.079 --> 00:18:33.920
of all, just to understand the
scope of what you're doing. Everything is

214
00:18:33.000 --> 00:18:37.200
running client site. Correct. You
don't actually code the back end, or

215
00:18:37.240 --> 00:18:42.319
do you? No. Tottle is
front end only, so it's set up

216
00:18:42.319 --> 00:18:45.880
to work with whatever back end you
provide. And there's actually quite a few

217
00:18:47.440 --> 00:18:51.440
like no code back ends you can
use as well, but a lot of

218
00:18:51.440 --> 00:18:53.480
them a little bit newer. So
I think for larger projects, most of

219
00:18:53.519 --> 00:19:00.799
our customers are still coding the back
end and you basically just access to back

220
00:19:00.920 --> 00:19:04.599
end via ajax calls. So an
action might be an ajax call that either

221
00:19:06.400 --> 00:19:12.240
sends some data or retrieves some data
and then uses it to update whatever part

222
00:19:12.279 --> 00:19:18.400
of the user interface. Yeah,
so in terms of backhands, from what

223
00:19:18.440 --> 00:19:21.680
I was seeing on your list there, it looks like it's stuff that's like

224
00:19:21.839 --> 00:19:26.079
headless CMSs that are hosted elsewhere.
Can you build in your own you know,

225
00:19:26.119 --> 00:19:29.200
say you want or do you have
your own customizble database for a back

226
00:19:29.279 --> 00:19:32.799
end? Is that something you can
do as well? Yeah? So title

227
00:19:33.039 --> 00:19:37.000
title just communicates over rest, so
it really works with any back end you

228
00:19:37.039 --> 00:19:41.359
want, like you can you can
coach your own you can use one of

229
00:19:41.400 --> 00:19:44.920
the no code ones that I established, but like, as long as it

230
00:19:45.039 --> 00:19:47.440
speak, you can talk to it
over an a scp API, you can

231
00:19:47.519 --> 00:19:51.160
use it with tunnel. So how
does it work with local development? Is

232
00:19:51.200 --> 00:19:55.160
this? I mean you have everything
is done on the tuttle dot dev site

233
00:19:55.200 --> 00:19:57.000
that's where editing happens. Or is
there something you can do locally, like

234
00:19:57.000 --> 00:20:02.519
if you're working with local copy of
a database. I mean, so you

235
00:20:02.559 --> 00:20:07.359
could set up total so that it
would change based on parameters to redirect to

236
00:20:07.400 --> 00:20:11.319
different back ends. So you could
say, for example, I would like

237
00:20:11.359 --> 00:20:15.559
to use a different base u L
for these requests based on whether you're setting

238
00:20:15.240 --> 00:20:19.559
some local storage data, whatever you're
doing. But there's no local version of

239
00:20:19.599 --> 00:20:23.240
total that all runs in the cloud
on total of them, so you could

240
00:20:23.240 --> 00:20:27.680
in theory you could set up something
like an in rock RL that's open to

241
00:20:27.720 --> 00:20:33.599
the outside and communicate with your your
rest API that way. Yeah, as

242
00:20:33.640 --> 00:20:38.000
long as again, as long as
it's reachable from totles back in. Yeah,

243
00:20:38.279 --> 00:20:42.519
though to be fair, I would
imagine such a solution. The more

244
00:20:42.559 --> 00:20:48.160
popular approach would be to use some
sort of a headless CMS rather than trying

245
00:20:48.200 --> 00:20:52.000
to run a local database or something
like that. So even during development you're

246
00:20:52.279 --> 00:20:59.160
working with the cloud based service or
something like that. Okay, so going

247
00:20:59.359 --> 00:21:03.440
these are my this is my geek
things coming to mind as a developer.

248
00:21:03.279 --> 00:21:08.960
Since I live inside the bugging I'm
just thinking about recent hours I've spent debugging

249
00:21:10.000 --> 00:21:12.880
something because I was able to run
everything locally. How does that work?

250
00:21:12.920 --> 00:21:17.119
Are you stuck with strictly like log
files. There's the way to use break

251
00:21:17.160 --> 00:21:22.880
points and you know, just access
through your webdev tools when you're not local,

252
00:21:22.960 --> 00:21:23.799
or how does the bugging going to
work in a case like this.

253
00:21:25.680 --> 00:21:29.000
Before i'dressed answers, I just have
to say that you beat me to the

254
00:21:29.000 --> 00:21:33.400
punch, because that was exactly going
to be my next question. How does

255
00:21:33.440 --> 00:21:40.640
debugging work in a visual coding type
environment? So, yeah, it's a

256
00:21:40.640 --> 00:21:45.119
great question, and we don't have
a particularly complex debugging set up yet.

257
00:21:45.680 --> 00:21:51.359
It's something we've gotten the pipeline,
but we haven't really needed it very much

258
00:21:51.440 --> 00:21:56.319
yet. And that's because quite a
lot of times the browsers debugging tools work

259
00:21:56.440 --> 00:22:04.559
for like very complex issues, but
also totle itself. The way the formula

260
00:22:04.720 --> 00:22:10.960
editors we call it works is that
you're always working with live data. So

261
00:22:11.400 --> 00:22:17.319
as you're building your formulas, you're
always seeing the next value that you're producing.

262
00:22:17.400 --> 00:22:22.599
And it's very similar in a way
to coding and a rebel where you're

263
00:22:22.640 --> 00:22:26.480
sort of writing each line at a
time. Similar here you see all the

264
00:22:26.559 --> 00:22:30.440
data all the time. So when
code, we sort of have a tendency

265
00:22:30.480 --> 00:22:34.200
to, you know, code for
about ten minutes or maybe twenty if we're

266
00:22:34.200 --> 00:22:37.279
getting comfortable with typescript or something like
that, we'll go in code and then

267
00:22:37.319 --> 00:22:41.240
we'll see how it works, and
then eventually we'll go and figure out why

268
00:22:41.240 --> 00:22:45.319
it didn't work right. But in
total, you're really running every part of

269
00:22:45.359 --> 00:22:48.359
your code all the time, so
you have a tendency to catch things really

270
00:22:48.400 --> 00:22:56.039
early. So we haven't really had
a lot of need for it yet and

271
00:22:56.079 --> 00:23:00.039
therefore we haven't really prioritized it too
much as we sort of go on.

272
00:23:00.160 --> 00:23:04.599
Obviously, there are cases where we
now end up debugging issues by adding log

273
00:23:04.680 --> 00:23:10.359
statements, et cetera. Way you
could definitely improve on that, but we're

274
00:23:10.480 --> 00:23:12.759
just we're not seeing it that much
on the front end, to be honest.

275
00:23:14.240 --> 00:23:17.880
Yeah, to be honest, you
could probably add some sort of a

276
00:23:17.960 --> 00:23:22.119
simple log if you don't have it
already, could probably add a simple logging

277
00:23:22.160 --> 00:23:26.400
mechanism into total so that certain actions. You know, like you said,

278
00:23:26.400 --> 00:23:30.079
in action is a side effect,
and the side effect might be log So

279
00:23:30.200 --> 00:23:34.519
you could easily add an action that
either logs locally into the deav tools console

280
00:23:36.279 --> 00:23:41.799
or sends it to some sort of
a telemetry service to be collected, you

281
00:23:41.839 --> 00:23:47.240
know, for sessions in general,
stuff like that, you probably want to

282
00:23:47.279 --> 00:23:51.079
have some sort of telemetry service at
one point or another. In any event,

283
00:23:52.599 --> 00:23:56.440
we have a log to console action
that we use quite rigorously right now,

284
00:23:57.000 --> 00:24:02.599
and it's quite easy because again it's
mostly pure functions are almost always pure

285
00:24:02.640 --> 00:24:06.200
functions you're working with, or formulas, right, you can really just copy

286
00:24:06.279 --> 00:24:10.759
part of a formula over and log
it out and you can be quite confident

287
00:24:10.759 --> 00:24:15.039
that it's going to generate the same
result. So logging logging is sort of

288
00:24:15.079 --> 00:24:19.880
our main approach to debugging when needed. But again, because it's easy to

289
00:24:19.880 --> 00:24:25.920
build UI, sometimes you're just like
building You'll just add like a paragraph into

290
00:24:26.000 --> 00:24:29.279
the page and write it there because
then you can kind of track it in

291
00:24:29.319 --> 00:24:33.039
real time. Right, So if
I'm doing like more complex mouse interactions,

292
00:24:33.079 --> 00:24:38.240
like some sort of swipe demo or
something, right, I'm often just logging

293
00:24:38.319 --> 00:24:42.880
values live to the to the UI. I'll throw in a span and put

294
00:24:42.920 --> 00:24:45.839
whatever my mouth off set is in
there, and then I can sort of

295
00:24:45.839 --> 00:24:49.200
figure out, Okay, why is
this not working? And as I'm dragging

296
00:24:49.240 --> 00:24:52.880
the mouse around, I can see, Okay, it's it's not setting it

297
00:24:52.920 --> 00:24:56.079
here, or I forgot to subtract
some window with or whatever. It is

298
00:24:56.119 --> 00:25:03.079
the problems you always run into and
trying to do math. So pull it

299
00:25:03.160 --> 00:25:07.640
back a bit. Can you talk
to us about, like through the process

300
00:25:07.839 --> 00:25:14.119
of how you actually start using Total
Like what let's say I'm saying, Okay,

301
00:25:14.200 --> 00:25:18.200
this sounds really cool, I want
to try it out. What what

302
00:25:18.319 --> 00:25:22.880
do I do? So you can
simply go to our website and sign up

303
00:25:22.960 --> 00:25:29.480
right now. So there's a free
tier that's sort of yeah, you go

304
00:25:29.559 --> 00:25:33.039
to Total dot Devin. You can
sign up right there and then get started

305
00:25:33.079 --> 00:25:37.720
building a new project. We have
a little tutorial project that's kind of a

306
00:25:37.759 --> 00:25:41.160
project build in Total that also at
the same time explains to you, like

307
00:25:41.200 --> 00:25:45.440
there's also a website that explains how
to build projects in Total. So you

308
00:25:45.519 --> 00:25:49.480
sort of go between interacting with it
and editing it to get to the next

309
00:25:49.519 --> 00:25:52.480
level all the time to figure out
how does this actually work? And each

310
00:25:53.160 --> 00:26:00.200
page in that application teaches you a
new concept, and after that, I'd

311
00:26:00.200 --> 00:26:02.880
say, if you want to really
dive in and understand more, we have

312
00:26:02.920 --> 00:26:07.000
a ton of videos on YouTube,
both of us explaining different concepts, but

313
00:26:07.000 --> 00:26:11.319
also a lot of us just building
applications in total and showing how to achieve

314
00:26:11.359 --> 00:26:19.519
different things. Cool, and what
you described is free. Correct if I'm

315
00:26:19.599 --> 00:26:26.839
just building a demo website, and
the restriction is that that demo website is

316
00:26:26.880 --> 00:26:33.799
hosted on your own platform, correct, yeah, yeah, so, and

317
00:26:33.839 --> 00:26:37.920
it'll be hosted on our domain.
You'll get a subdomain of dot total dot

318
00:26:37.920 --> 00:26:42.279
site. If you then upgrade to
pay tier, then you can add your

319
00:26:42.279 --> 00:26:48.400
own domain and also remove our little
branding logo on the bottom of the So.

320
00:26:49.799 --> 00:26:56.720
So purchasing is a let's call it
the premium plan basically gets rid of

321
00:26:56.759 --> 00:27:02.640
the advertiser, the on page advertising, and gets you your own domain that

322
00:27:02.680 --> 00:27:06.559
you can Basically, I purchased a
domain somewhere and I can associate it with

323
00:27:06.720 --> 00:27:14.279
the total website that I've built exactly
anything else that I can purchase well,

324
00:27:14.279 --> 00:27:18.200
So we have different plans. The
initial startup plans are for we sort of

325
00:27:18.440 --> 00:27:23.400
price that quite low at twenty dollars
per user, and the Ateria is for

326
00:27:23.440 --> 00:27:27.920
small startups to get started and start
building in total. Right, So wait

327
00:27:27.960 --> 00:27:33.319
a minute, it's twenty dollars per
user, not per website or something like

328
00:27:33.400 --> 00:27:37.640
that. It's twenty dollars per month
for up to three users, and then

329
00:27:37.680 --> 00:27:41.440
you pay sixteen dollars a month if
you do it annually. Yeah, but

330
00:27:41.519 --> 00:27:45.519
that is also today per project.
So if you have multiple projects you need

331
00:27:45.559 --> 00:27:48.519
to be that needs to be in
a paid plan. You're paying for each.

332
00:27:49.559 --> 00:27:56.160
Okay, so I've questioned what is
the tool set used to build tottle?

333
00:27:56.000 --> 00:28:02.920
What's protecting? Well, that's my
favorite question, and because well,

334
00:28:03.000 --> 00:28:10.160
there's there's quite a few things.
Our database is hosted by by Superbase,

335
00:28:10.680 --> 00:28:14.279
which is also where we get authentication
a few other things. So we're running

336
00:28:14.640 --> 00:28:18.920
our whole data off Superbase. Uh. Then we have sort of a back

337
00:28:19.039 --> 00:28:22.839
end slash middle back end. I
don't know if this needs a new word

338
00:28:23.119 --> 00:28:26.160
or have one I'm not familiar with, but we're running on cloud flower workers.

339
00:28:27.680 --> 00:28:32.279
We use them for two things.
We both use them for server rendering

340
00:28:32.319 --> 00:28:38.640
applications because obviously we're storing total code. If you will it's like an adjacent

341
00:28:38.680 --> 00:28:44.480
format. We store the data in
right and that needs to be rendered out

342
00:28:44.480 --> 00:28:48.000
as HTML, and we do that
on cloud flow workers, so it's very

343
00:28:48.039 --> 00:28:52.480
close to the use always right and
cloud Fly is also kind of our back

344
00:28:52.559 --> 00:28:56.880
end for the total Editor, so
we use the feature they have callt durable

345
00:28:56.880 --> 00:29:04.000
objects that lets you essentially create a
singleton instance of a data store where you

346
00:29:04.000 --> 00:29:08.400
can in memory store a lot of
information, and then you can connect to

347
00:29:08.440 --> 00:29:12.440
that with web sockets. And they
kind of have this property where there can

348
00:29:12.480 --> 00:29:17.720
only ever be one globally one instance
of that globally, so when you create

349
00:29:17.759 --> 00:29:22.440
a branch of your product or a
project, you'll connect to your instance of

350
00:29:22.440 --> 00:29:29.519
this server, which in memory keeps
all the files up to date. So

351
00:29:29.559 --> 00:29:36.160
that means we can get things like
live collaboration going by just having people right

352
00:29:36.240 --> 00:29:40.599
to that, and we can actually
solve a lot of concurency issues by having

353
00:29:40.880 --> 00:29:44.799
the server close to people and not
and just saying, well, the latest

354
00:29:44.920 --> 00:29:49.319
the latest right wins because there's never
more than a few milliseconds latency between the

355
00:29:49.400 --> 00:29:56.279
user and the gerbil object. So
that's sort of the back in part all

356
00:29:56.319 --> 00:29:59.400
of the front and the whole editor. Our website, our block. Everything

357
00:29:59.440 --> 00:30:03.359
is built in top So we built
the whole project in the project itself.

358
00:30:03.880 --> 00:30:10.720
Nice. Well that's very cool indeed. So you mean all the complex logic

359
00:30:11.519 --> 00:30:18.359
of you know, the editing process
and whatnot, all of that is actually

360
00:30:18.440 --> 00:30:26.119
done in your visual programming language.
Yes, everything from like the left panel

361
00:30:26.240 --> 00:30:30.240
sidebar where you're showing all the elementaries
with all the different nodes and all the

362
00:30:30.319 --> 00:30:36.880
drag and drop interactions of those,
the formulateds that you can space pan around

363
00:30:36.960 --> 00:30:42.519
and summing it out while also editing
these notes that are aligning themselves. Everything,

364
00:30:42.839 --> 00:30:45.920
everything is built in total of that
project. So I think the current

365
00:30:47.000 --> 00:30:51.119
phrases that you're eating your own dog
food? Is that correct? Ah?

366
00:30:51.279 --> 00:30:53.519
It's such a negative term though,
isn't it? But yes, I think

367
00:30:53.559 --> 00:30:59.960
so. I think that's have you
had dog food? Well, don't you?

368
00:31:00.119 --> 00:31:02.440
By some of the ads I've seen
as a newer dog foods might not

369
00:31:02.480 --> 00:31:06.000
be so bad anymore. Oh okay, good quality stuff out there. So

370
00:31:06.119 --> 00:31:11.000
it depends on what you're eating,
I guess. But it definitely highlights the

371
00:31:11.079 --> 00:31:15.079
fact that you know, this tool
is powerful. I mean, if you're

372
00:31:15.119 --> 00:31:21.160
able to build Toddle, then anything
that the user might want to build is

373
00:31:21.200 --> 00:31:26.400
probably covered. Yeah, I would
say I I've been working on a lot

374
00:31:26.440 --> 00:31:30.279
of projects. I used to do
a lot of contracting. I lived in

375
00:31:30.279 --> 00:31:34.000
London for like six years and jump
company every six months because when you're young,

376
00:31:34.240 --> 00:31:41.160
that's really fun. And I've been
working on anything from small startups to

377
00:31:41.440 --> 00:31:45.920
like enterprise companies, And I don't
think I've ever built anything as complicated as

378
00:31:45.960 --> 00:31:49.160
a no code as like this,
right, this is in pure complexity,

379
00:31:49.279 --> 00:31:55.240
This is by far the worst because
there's so many things like you only ever

380
00:31:55.319 --> 00:31:59.480
work with recursive data structures, right, that's the only everything's a tree,

381
00:32:00.079 --> 00:32:04.960
everything's like recursion. Everything is like
trying to figure out how how do I

382
00:32:05.079 --> 00:32:07.319
how does it work when you have
like five hundred components on the screen at

383
00:32:07.319 --> 00:32:12.279
the same time, because these editor
interfaces are very complex, right, Yeah,

384
00:32:12.880 --> 00:32:16.039
yeah, I know, I know, I know what you mean.

385
00:32:16.559 --> 00:32:20.480
As I said, I've worked at
Wix, I've worked on the wis editor.

386
00:32:20.559 --> 00:32:23.440
The Wix editor is a huge applications, one of the largest I've ever

387
00:32:23.480 --> 00:32:31.759
worked on. It is actually implemented
in React and it's a hundreds of thousands

388
00:32:31.799 --> 00:32:37.160
of lines of code. But to
be fair, Wix actually does a lot

389
00:32:37.240 --> 00:32:40.920
of dog fooding as well. So
the editor is built on Native, but

390
00:32:42.160 --> 00:32:46.279
a lot of the UH interfaces there
are built using Wix, and I think

391
00:32:46.359 --> 00:32:51.319
that's the same. It's true for
workflow and and I really dig this approach

392
00:32:51.440 --> 00:32:55.759
because it really shows that you're serious
about the tool your building when you're able

393
00:32:55.799 --> 00:33:00.680
to use it for that sort of
thing. But it does bring me up

394
00:33:00.319 --> 00:33:08.400
bring me to another question. When
you start thinking code, you start thinking

395
00:33:08.680 --> 00:33:17.200
version control. Yes, how do
you do version control in total? Well,

396
00:33:17.319 --> 00:33:22.039
so that was one of the things
I had a lot when I started

397
00:33:22.039 --> 00:33:25.200
this project, was that there's all
these there's all these different things that needs

398
00:33:25.240 --> 00:33:29.119
to happen for this to work.
And when I said work, I mean

399
00:33:29.240 --> 00:33:31.559
work for me. Right. You
can build a version, you can build

400
00:33:31.559 --> 00:33:35.880
a no code tool that lets do
do version control, and most of them

401
00:33:35.920 --> 00:33:38.880
have some version of that, but
it's usually the live version and the development

402
00:33:38.960 --> 00:33:45.559
version, right. And I mean
I'm coming from teams of like five if

403
00:33:45.559 --> 00:33:47.920
it's a small team, or twenty
people for last teams, and like that

404
00:33:49.200 --> 00:33:52.240
is never going to work, right, And live collaborations all cool, but

405
00:33:52.279 --> 00:33:54.759
the reality is we don't use it
very much because people work asynchronously, right,

406
00:33:55.480 --> 00:34:00.960
So you need essentially something like it
gigs gets style version control if you

407
00:34:01.039 --> 00:34:05.119
want to be able to work in
a team, and like we're a small

408
00:34:05.200 --> 00:34:08.199
team at TOTL, but we're still
pushing like new features all the time and

409
00:34:08.239 --> 00:34:15.599
we're working asynchroously. So unfortunately GIT
is kind of tied to lines of code,

410
00:34:15.239 --> 00:34:19.760
so GIT wasn't really an option,
or at least I couldn't find any

411
00:34:19.760 --> 00:34:23.039
way to make that work based on
at different kind of diffing, right,

412
00:34:23.039 --> 00:34:28.840
you need a different diffing algorithm when
you're working with adjacent data structure compared to

413
00:34:28.960 --> 00:34:32.920
just lines of code. So we
had to build own, and we actually

414
00:34:32.960 --> 00:34:40.920
build it in a procedural sequel because
we wanted to run directly in our database

415
00:34:44.039 --> 00:34:49.000
so that we could essentially store all
our files. So when we're storing files

416
00:34:49.039 --> 00:34:54.039
and super base, we have a
table called blobs, which is stolen exactly

417
00:34:54.119 --> 00:34:57.599
from GIT. I spent like a
couple of months trying to figure out,

418
00:34:57.719 --> 00:35:00.159
well maybe weeks, maybe it was
months, trying to figure out how kit

419
00:35:00.320 --> 00:35:07.159
actually works, like going around looking
up looking up like little hash keys and

420
00:35:07.199 --> 00:35:10.119
how do I get ls all these
things and get cats or what they're called,

421
00:35:10.199 --> 00:35:14.480
right, to try and figure out
what is the actual storage model and

422
00:35:14.519 --> 00:35:17.840
how does this work? And then
replicate it like probably three percent of that,

423
00:35:19.400 --> 00:35:22.039
which is a lot, right,
because gives a kid is massive,

424
00:35:22.199 --> 00:35:27.599
right, But it's the same basic
concept, like all files are stored based

425
00:35:27.599 --> 00:35:31.840
on the hash of their content,
so that you can store these snapshots all

426
00:35:31.880 --> 00:35:37.639
the time of your files without actually
and like a snapshot can be the whole

427
00:35:37.840 --> 00:35:43.320
project. But you don't have to
double right files that hasn't changed, right.

428
00:35:44.360 --> 00:35:46.880
And since we don't actually ever do
like you just never do a manual

429
00:35:46.920 --> 00:35:51.880
commit, what we do instead is
that every time you save, we basically

430
00:35:51.920 --> 00:35:58.920
start a throttled say commit timer,
so it automatically commits every ten seconds if

431
00:35:59.000 --> 00:36:04.800
you're making changes, and then every
one of these becomes a snapshot in the

432
00:36:04.880 --> 00:36:12.400
database that has a reference to these
content in theexpiles. It's interesting because last

433
00:36:13.000 --> 00:36:16.840
a few episodes back, we actually
had I forget his name. I'll remember

434
00:36:16.840 --> 00:36:24.880
in a second, the guy from
Bito dev Uh. It was guillade Cham

435
00:36:25.199 --> 00:36:31.440
from Bitto dev uh and uh,
and they also kind of have their own

436
00:36:31.480 --> 00:36:37.599
substitute for for get for from for
a different reason uh. Even though there

437
00:36:37.679 --> 00:36:44.280
is a certain amount of similarity in
a sense, but It's interesting to see

438
00:36:44.320 --> 00:36:50.239
people coming up with with GIT alternatives
effectively for various reasons, although I'm not

439
00:36:50.239 --> 00:36:52.599
sure the term alternative is the correct
one, because you're not coming to a

440
00:36:52.679 --> 00:36:57.800
regular project and saying, hey,
use this instead of GIT. You're you're

441
00:36:57.920 --> 00:37:02.199
using GIT for your own very special
use case, uh, which which I

442
00:37:02.239 --> 00:37:06.880
appreciate. Oh. I mean if
I if I could have used skit,

443
00:37:06.960 --> 00:37:09.079
I would absolutely have used SKIT.
I would not have gone down this road

444
00:37:09.119 --> 00:37:14.679
if I had an alternative, Right, but you still have the possibility to

445
00:37:14.800 --> 00:37:20.400
like go back to a previous revision
or version, or maybe even do something

446
00:37:20.480 --> 00:37:24.840
like a diff between you know,
or bisecting or stuff like that. All

447
00:37:24.920 --> 00:37:30.079
all this, all the the good
stuff that people associate with visual editing with

448
00:37:30.360 --> 00:37:34.159
not visual think with source control.
I mean, sorry, Yeah, we

449
00:37:34.360 --> 00:37:37.840
we have a somewhat limited set,
Like obviously we're not implementing all of GIT,

450
00:37:38.000 --> 00:37:43.360
right, so we've we've made some
We've made some high level decisions that

451
00:37:43.440 --> 00:37:45.760
at least for now, seems to
work just fine. So it's always trunk

452
00:37:45.800 --> 00:37:50.760
based. You only ever merging out
from like branching out from from the main

453
00:37:50.800 --> 00:37:54.840
branch and only ever merging into the
main branch. Right, and that sort

454
00:37:54.840 --> 00:38:00.400
of lets you push real quick like
that frequently and that that's seems to be

455
00:38:00.679 --> 00:38:02.239
just fine. That was kind of
similar to the workflow we used to have

456
00:38:02.840 --> 00:38:07.519
when working in code as well.
So for now we're sort of we're doing

457
00:38:07.559 --> 00:38:13.440
some shortcuts compared to full get set
up right. Yeah. By the way,

458
00:38:13.480 --> 00:38:22.239
it is worth mentioning that Donus Torvaldez
actually wrote git in like a weekend

459
00:38:22.239 --> 00:38:29.679
and people, you know, people
know him for Linux, but they maybe

460
00:38:29.719 --> 00:38:35.039
they should know him forget Uh.
It took me longer to copy it that

461
00:38:35.159 --> 00:38:38.920
it took him to write it.
Then. Yeah, he basically was committing

462
00:38:39.000 --> 00:38:44.320
get into get by by the beginning
of the week or something like that.

463
00:38:45.599 --> 00:38:52.880
Yeah, it's an interesting story.
He's quite a guy. Yeah. So

464
00:38:53.719 --> 00:39:00.679
how big do your flow charts get? Well? Interesting, the flow charts,

465
00:39:01.159 --> 00:39:06.039
which is sort of an us the
action part, they never get very

466
00:39:06.039 --> 00:39:14.079
big. I think the biggest we
have is something like twenty nodes or so,

467
00:39:14.119 --> 00:39:17.039
like they're they're not that complex,
and that's because again we all the

468
00:39:17.199 --> 00:39:22.800
actual computation logic is moved into formulas, right, so we have this separation,

469
00:39:22.679 --> 00:39:27.280
but the actual steps is like if
this, then do that each of

470
00:39:27.320 --> 00:39:31.000
these workflows are like one action happening
when you, for example, you click

471
00:39:31.039 --> 00:39:35.280
a button. So if you end
up taking a look at like let's say

472
00:39:35.280 --> 00:39:37.679
your rat code and go, well, how many things am I doing when

473
00:39:37.679 --> 00:39:43.119
I click this button? The reality
is you're rarely doing that. Many most

474
00:39:43.159 --> 00:39:45.599
of the lines are in order to
computer value, and then some of them

475
00:39:45.719 --> 00:39:50.840
actually are aren't working side effects.
Right, So the float charts are usually

476
00:39:50.920 --> 00:39:54.480
quite small. We actually in our
UI we actually have a very small window

477
00:39:54.559 --> 00:40:00.440
initially dedicate to them because that sort
of sits on top of the editor because

478
00:40:00.599 --> 00:40:06.400
most of them are just two or
three actions in a row, or even

479
00:40:06.440 --> 00:40:08.800
one is the most popular, right
most of the times, just when you

480
00:40:08.840 --> 00:40:12.960
click this button, do this one
thing, or do these two things or

481
00:40:12.960 --> 00:40:16.440
these three things, and so most
of them are really really simple. The

482
00:40:16.519 --> 00:40:22.239
more complex one again, it never
gets out of hand for them. Formulas

483
00:40:22.239 --> 00:40:27.400
are kind of a little bit different. We have some formulas in total that

484
00:40:27.480 --> 00:40:34.800
are definitely not small, but we
also have the options of like you can

485
00:40:34.840 --> 00:40:37.599
go and say this part of the
logic, I can extract that into what

486
00:40:37.639 --> 00:40:40.880
we call a component formula and then
essentially give it a name. Right,

487
00:40:40.920 --> 00:40:45.519
so you have all the same just
like you wouldn't write all this in one

488
00:40:45.599 --> 00:40:47.840
function and JavaScript, you can do
the same in totals. I'm going to

489
00:40:47.880 --> 00:40:53.280
extract this assign that a name.
So this thing is manageable, right,

490
00:40:54.639 --> 00:41:00.920
and so effectively you only view one
flow charge at a time, really correct?

491
00:41:00.119 --> 00:41:06.079
Yeah? Yeah? So and and
a quote unquote program might have a

492
00:41:06.119 --> 00:41:08.400
lot of flow charts in it,
but each one of them would be small,

493
00:41:08.840 --> 00:41:14.199
and you only view each flow chart
by itself. But you can nest

494
00:41:14.360 --> 00:41:21.360
flow charts by associating flow charts with
functions. Yeah, we don't really have

495
00:41:21.400 --> 00:41:25.519
anything we specifically called functions. We
we sort of functions are it are divided

496
00:41:25.559 --> 00:41:35.119
into actions and formulas I mean formula
yeah, yeah, by the way,

497
00:41:35.320 --> 00:41:38.280
so a question about that. I
mean, over the years, there has

498
00:41:38.360 --> 00:41:44.880
been a lot of research into visual
programming h. Most of it, by

499
00:41:44.920 --> 00:41:49.719
the way, from what I know, kind of failed. H. There

500
00:41:49.719 --> 00:41:53.920
have not been a whole lot of
really successful visual programming environments. You might

501
00:41:54.000 --> 00:42:00.519
say that small talk was a visual
programming environment and that it's aceeded, but

502
00:42:00.599 --> 00:42:07.760
it was actually based on code and
and actual and actual solutions like you mentioned

503
00:42:07.840 --> 00:42:13.239
one that was like for for kids. I know that there were a lot

504
00:42:13.320 --> 00:42:17.519
of attempts in that area. So
so my two questions I guess are,

505
00:42:20.400 --> 00:42:23.400
how did you come with your own
unique model for doing it? Is like,

506
00:42:23.559 --> 00:42:28.840
is it like based on research or
just your ideas or what or things

507
00:42:28.840 --> 00:42:34.480
that you've read elsewhere? And why
do you think yours will succeed where so

508
00:42:34.639 --> 00:42:40.239
many previous attempts have you know,
effectively failed. That is a good question,

509
00:42:40.440 --> 00:42:46.960
and it's very very true that this
is like visual programming is not something

510
00:42:46.960 --> 00:42:52.280
where most programs go, oh,
that's definitely the future, because it's very

511
00:42:52.280 --> 00:42:57.880
definitely the past. And I think
I think it's been fun when people come

512
00:42:58.000 --> 00:43:00.039
like, oh, this is brand
new, you got to go. The

513
00:43:00.199 --> 00:43:06.039
earliest example I've found is nineteen seventy
six, so it's not that new.

514
00:43:06.920 --> 00:43:10.960
It's before we had visual operating systems. The first visual program language was created.

515
00:43:13.320 --> 00:43:15.760
So there's nothing new about it,
right. It's it's very much an

516
00:43:15.800 --> 00:43:23.280
elephant graveyard of a tech technology choice
to get into. But I think I

517
00:43:23.840 --> 00:43:29.960
think I at least have a theory
as to why the other languages failed or

518
00:43:30.000 --> 00:43:34.360
why this never really made it anywhere. And essentially, whether I'm right or

519
00:43:34.400 --> 00:43:38.159
not, it's probably going to determine, you know, the success But my

520
00:43:38.360 --> 00:43:44.320
theory is that when you take a
programming language and then translated one to one

521
00:43:44.519 --> 00:43:49.599
into a visual programming language, which
most of the attempts are right. Sketch

522
00:43:49.679 --> 00:43:52.119
is also a good example of this, right, which is the one I

523
00:43:52.199 --> 00:43:54.480
mentioned earlier. Right, when you
try to do it one to one,

524
00:43:55.400 --> 00:44:00.599
what you end up with is a
programming language that takes up a lot more

525
00:44:00.639 --> 00:44:07.880
screen space than code, and so
and tuddle has the same a feature or

526
00:44:07.000 --> 00:44:12.880
problem depending on your perspective. Right, it takes a lot more space on

527
00:44:13.079 --> 00:44:17.679
screen for something that like what would
essentially be like four or five lines of

528
00:44:17.719 --> 00:44:22.480
code, will take up an entire
screen in total. And if you start

529
00:44:22.519 --> 00:44:27.199
then going through your code and saying, well if I needed an entire screen

530
00:44:27.239 --> 00:44:30.239
for every four or five lines of
code, it's very clear why that's not

531
00:44:30.360 --> 00:44:37.400
a particularly good setup, right,
So the trick to visual program I'll interrupt

532
00:44:37.400 --> 00:44:40.519
you for a second just to make
it clear for our listeners why this is

533
00:44:40.519 --> 00:44:45.119
the case. One example that I
saw on your demos was the simple if

534
00:44:45.519 --> 00:44:52.800
statement that in code, if is
literally like four lines of code. If

535
00:44:52.039 --> 00:44:59.480
condition you know, then something else, something else. So that's literally like

536
00:44:59.599 --> 00:45:04.920
four lines code, and in your
case it's a box and a line and

537
00:45:04.960 --> 00:45:12.199
a box and a line. So
obviously all that visual representation takes much more

538
00:45:12.920 --> 00:45:15.840
screen area than, like you said, than just four lines of code.

539
00:45:16.079 --> 00:45:21.559
Yeah, and that it's kind of
the same thing as this code. If

540
00:45:21.559 --> 00:45:24.239
it fits on the screen, it's
a lot easier to understand than if you

541
00:45:24.280 --> 00:45:30.000
have to start navigating right once functions
start to not fit on a single screen

542
00:45:30.000 --> 00:45:31.440
and in all they start to get
a lot more complicated to work with.

543
00:45:31.639 --> 00:45:35.800
It's not the only dimension, but
it's a pretty good indication. And the

544
00:45:35.880 --> 00:45:39.119
same thing is true for visual programming. So if you just translate code one

545
00:45:39.159 --> 00:45:44.000
to one to a visual medium,
you'll just have a like you'll do a

546
00:45:44.000 --> 00:45:46.880
lot of panning all the time,
and that's the worst possible way to find

547
00:45:46.920 --> 00:45:52.079
anything right. That's never going to
work. So the trick is the trick

548
00:45:52.119 --> 00:45:55.239
at least what toddled us is always
to try and say, when can we

549
00:45:55.360 --> 00:46:00.800
break this up into smaller parts that
are easy to navigate. And because we

550
00:46:00.920 --> 00:46:07.400
sort of broke up at like the
action's workflows and the formulas here, it

551
00:46:07.559 --> 00:46:12.840
means that normally one workflow with twenty
notes might have been massive, right,

552
00:46:12.880 --> 00:46:15.599
it might have been take up like
one hundred screens or something, maybe not

553
00:46:15.679 --> 00:46:20.239
quite but something along those lines,
right, because it's just takes up so

554
00:46:20.320 --> 00:46:27.400
much space. But because you're navigating
this visually and quite effectively, you don't

555
00:46:27.400 --> 00:46:30.239
have to look at it all of
it at the time, So you get

556
00:46:30.280 --> 00:46:35.800
to sort of break your program up
into smaller bits and only like really easily

557
00:46:35.880 --> 00:46:39.320
navigate to the part of your code
or visual code in this case that you

558
00:46:39.360 --> 00:46:44.960
need to work with. And that
kind of lets us get away with using

559
00:46:45.000 --> 00:46:49.440
a lot more space for all of
it because the tools we've given you to

560
00:46:49.599 --> 00:46:52.000
navigate your code, if you want
to say, like or your app are

561
00:46:52.000 --> 00:46:59.119
a lot more efficient. Interesting,
And again it has to do with the

562
00:46:59.199 --> 00:47:04.679
fact that you're never seeing the flow
chart as a whole. It's never listed

563
00:47:04.719 --> 00:47:08.920
this one big flow chart. It's
always a specific flow chart that's associated with

564
00:47:08.960 --> 00:47:17.840
a particular event leading to a particular
action, let's say, through some formulas.

565
00:47:19.480 --> 00:47:22.800
Yeah, and and I guess also
the reactive aspect is also a big

566
00:47:22.840 --> 00:47:30.039
help here, because again you split
things and at the reactivity boundary. Yeah,

567
00:47:30.079 --> 00:47:35.599
for sure. I mean in terms
of it's not entirely something I mean,

568
00:47:35.639 --> 00:47:37.960
I mean, nothing is ever something
you invented entirely right, it's always

569
00:47:38.000 --> 00:47:43.320
based on a hundred other things.
There was a lot of as you probably

570
00:47:43.360 --> 00:47:46.079
heard already me talking about functional program
I think I took a lot of inspiration

571
00:47:46.119 --> 00:47:52.239
for that paradigm exactly because it does
make this hard split between what is in

572
00:47:52.599 --> 00:47:59.800
functional program impure and impure and and
it's a it's a quite nice and quite

573
00:48:00.159 --> 00:48:04.280
sensible way to divide your program and
actually saying, okay, when if I

574
00:48:04.320 --> 00:48:07.039
separated into what is an action,
what is the side effect, and what

575
00:48:07.159 --> 00:48:12.840
is not there's there's, it sort
of becomes a nice logical boundary to split

576
00:48:12.920 --> 00:48:15.639
your program down, and that that's
a big part of why it works quite

577
00:48:15.679 --> 00:48:21.559
well. And actions I assume always
work as if they're synchronous, correct,

578
00:48:22.239 --> 00:48:27.920
Yes, but an action can emit
an event, yeah, sure, but

579
00:48:28.559 --> 00:48:31.880
for example, it's waiting for it's
downloading data. Until you get the data,

580
00:48:31.960 --> 00:48:36.960
you won't proceed to the next step. Yeah. So when they're listed

581
00:48:37.000 --> 00:48:40.599
sort of underneath each other in a
in an action chain, they're executing synchronously,

582
00:48:40.719 --> 00:48:45.000
and if you want to wait for
something, right, that action can

583
00:48:45.000 --> 00:48:47.440
then say I'm going to admit an
event eventually, and then you can start

584
00:48:47.480 --> 00:48:52.559
a new workflow of that. M
okay, cool, So it's really,

585
00:48:53.840 --> 00:48:59.360
as you said, you were inspired
by various things, but it was really

586
00:48:59.400 --> 00:49:04.880
your own invention. Yeah, I
mean, it depends on how much you're

587
00:49:04.880 --> 00:49:09.519
inspired. I suppose it's definitely a
new take. It's not entirely original.

588
00:49:09.639 --> 00:49:15.360
Like, you can find a lot
of examples of products and different kind of

589
00:49:15.440 --> 00:49:20.159
visual programming that are very similar in
many ways, but I hadn't really seen

590
00:49:20.199 --> 00:49:25.360
anyone do it in the same way
for solving the same kind of problem.

591
00:49:27.000 --> 00:49:32.239
So really I have two more quick
questions. One is what's your solution for

592
00:49:32.280 --> 00:49:37.159
authentication? I mean, if you
build Toddle with it, and obviously you

593
00:49:37.199 --> 00:49:40.400
have I think you mentioned that you
have authentication built in, but does it

594
00:49:40.480 --> 00:49:45.000
mean that also if I'm using total
for my own app, I can integrate

595
00:49:45.039 --> 00:49:53.199
authentication into it. And the second
question is is it is any part of

596
00:49:53.239 --> 00:50:00.360
it open source? Yes, good
question. I'll take them in in the

597
00:50:00.159 --> 00:50:05.519
order of the given. Then,
So the way we handle authentication is that

598
00:50:05.599 --> 00:50:09.800
because we're front and only, we
don't technically handle authentication, right, Authentication

599
00:50:09.920 --> 00:50:15.880
kind of have to live with your
data because that's what you're authenticating and essentially

600
00:50:15.920 --> 00:50:22.000
limiting access to so authentication is very
much a back end problem. What we've

601
00:50:22.079 --> 00:50:29.280
done is essentially create a simple way
for storing an authentication token as an HDP

602
00:50:29.440 --> 00:50:34.480
only cookie, and then we have
a proxy layer also on cloud layer,

603
00:50:34.800 --> 00:50:37.440
where you can proxy API request too, and we can essentially just smack that

604
00:50:37.519 --> 00:50:45.519
token onto it. So let's say
you are making a request for your API

605
00:50:45.679 --> 00:50:49.719
and for that to work, it
needs to have a specific user token as

606
00:50:49.760 --> 00:50:53.119
an outhheader. Right. What you
would do in Total is essentially you would

607
00:50:53.119 --> 00:50:59.119
first authenticate through your service and then
either come back to Total while redirect,

608
00:50:59.280 --> 00:51:01.679
or you might be like use a
name password log in and then get a

609
00:51:01.760 --> 00:51:07.320
token back, and then you're send
essentially told token Total to stall that token,

610
00:51:08.039 --> 00:51:10.760
and we'll store it as an outtoken, and that'll be stored in ACP

611
00:51:10.880 --> 00:51:15.039
only, so there's no even if
there's foreign scripts on the side, they're

612
00:51:15.039 --> 00:51:16.719
not going to be able to sniff
that out because it's never actually sent back

613
00:51:16.760 --> 00:51:22.800
to the client again. And then
when you're making an API request from Total,

614
00:51:22.960 --> 00:51:25.880
it first goes through our cloud fly
worker and there you can then configure

615
00:51:25.920 --> 00:51:30.239
to say I want to I want
to add this token in as authentication for

616
00:51:30.280 --> 00:51:34.239
this request, and then that'll make
the authenticate request and come back with the

617
00:51:34.320 --> 00:51:38.159
data. So you're using the cloud
Flare worker as a sort of a segregation

618
00:51:38.280 --> 00:51:45.920
layer. In this context, you're
offloading what needs to be secure off of

619
00:51:45.079 --> 00:51:51.519
the front end into the cloud flow
worker where third party code can't access it.

620
00:51:52.159 --> 00:51:55.559
Take that. That was not actually
the point of doing that. It's

621
00:51:55.599 --> 00:52:00.840
just I really hate cause issues.
So that's kind of that was the original

622
00:52:00.880 --> 00:52:06.079
point of saying, if I just
added real simple proxy here, I never

623
00:52:06.159 --> 00:52:09.679
have to deal with that again.
And that sounds very nice, But actually

624
00:52:09.679 --> 00:52:15.920
authentication became a really nice added solution
there. And I think we're sort of

625
00:52:15.960 --> 00:52:22.280
looking at can we build some more
interesting like right now we cash response based

626
00:52:22.280 --> 00:52:24.840
on the service send cash head,
but we can see a lot of cases

627
00:52:24.880 --> 00:52:30.559
what it might actually be nice to
be able to override that locally and say,

628
00:52:30.199 --> 00:52:32.519
I know the service edge you can
only cast for this long, but

629
00:52:32.559 --> 00:52:37.079
actually I would like you to cast
for just a few seconds or set some

630
00:52:37.119 --> 00:52:42.440
stale vi revalidate for extra performance.
Right, So it's sort of it sort

631
00:52:42.480 --> 00:52:45.440
of adds on a lot of benefits
that we can also tap into down the

632
00:52:45.480 --> 00:52:52.760
line. Cool and about the open
source part, there's nothing right now that

633
00:52:52.920 --> 00:52:59.559
is open source we are talking about
it. I'm not quite sure the main

634
00:52:59.599 --> 00:53:04.079
reason it's not open sources actually just
that we thought it would take longer to

635
00:53:04.159 --> 00:53:12.559
develop in public than private. And
the other bit is we're quite tied into

636
00:53:13.920 --> 00:53:15.920
cloud Flare at this point. Right
there's quite a lot of our text that

637
00:53:16.039 --> 00:53:20.559
is built on cloud Flair, and
I think we're probably going even further that

638
00:53:20.599 --> 00:53:23.840
way because there's a lot of that
technology that just kind of fits really perfectly

639
00:53:23.880 --> 00:53:29.639
with this. Well. You know, there's an interesting argument going on happening

640
00:53:29.719 --> 00:53:35.119
currently about how tied to versaill is
next year. Yes, and that's like

641
00:53:35.320 --> 00:53:42.519
kind of the quote unquote epitome of
open source development environment. Yes, yet

642
00:53:42.559 --> 00:53:50.400
it turned out it turns out at
least that's what For example, Kent wrote

643
00:53:51.119 --> 00:53:57.280
in his critique that it's a lot
of it is tied to versall services,

644
00:53:57.360 --> 00:54:00.719
but you know, it is what
it is liking at home that is epitome.

645
00:54:02.719 --> 00:54:07.280
E me, sorry, It's okay. I said it epotone for a

646
00:54:07.320 --> 00:54:09.880
long time too, because you read
it and you never hear anyone say it.

647
00:54:10.199 --> 00:54:14.920
Did you also say fake aid instead
of pasade? No? But I

648
00:54:14.960 --> 00:54:23.239
said subtle when I was in third
grade, or so I said subtle before

649
00:54:23.320 --> 00:54:28.440
we wrap up, because we are
really approaching the end of our of our

650
00:54:28.639 --> 00:54:36.039
show. Is there anything else that
our listeners really need to know about total,

651
00:54:36.599 --> 00:54:39.360
you know, additional things that are
worth mentioning. Yes, I would

652
00:54:39.400 --> 00:54:42.920
like to know where the name came
from myself, if you have like little

653
00:54:42.920 --> 00:54:47.280
toddlers running around at home or what
was the what were you trying to emphasize

654
00:54:47.280 --> 00:54:52.519
with that name? I do,
well, I don't actually have a toddlers

655
00:54:52.599 --> 00:54:54.320
right now. I've got a six
year old and a three months old,

656
00:54:54.880 --> 00:55:04.320
so I've got on either side.
But well, the name is my wife

657
00:55:04.360 --> 00:55:07.519
came up with that. I am
not sure. I'm tiredly understand why it's

658
00:55:07.519 --> 00:55:13.239
called Totle, but when she suggested
it, everyone liked it, and eventually

659
00:55:13.320 --> 00:55:16.320
I sort of felt powerless to do
anything about it. And now I've kind

660
00:55:16.360 --> 00:55:22.719
of grown to like it, like
it's it's sort of just become. You

661
00:55:22.760 --> 00:55:25.519
know, when you name something long
enough, right, eventually anything else sounds

662
00:55:25.559 --> 00:55:30.480
weird anymore? Is the epitome of
a great name? I mean epitome?

663
00:55:30.719 --> 00:55:38.559
Sorry it is. So while while
we've been talking, I've been playing around

664
00:55:38.599 --> 00:55:42.760
with this thing, and I got
into the calculator app because I figured,

665
00:55:42.800 --> 00:55:45.320
Okay, that's going to be simple
programming. I'll be able to understand.

666
00:55:45.239 --> 00:55:53.280
And I actually don't. I fundamentally
don't get how this is working, like

667
00:55:53.719 --> 00:55:57.400
somewhere very well. I guess i'd
have to go through the tutorial, but

668
00:55:57.440 --> 00:56:00.920
I just opened up the example app
and I oh, and I click on

669
00:56:00.000 --> 00:56:05.679
the equals button and I look at
the click action and I can see there's

670
00:56:05.679 --> 00:56:12.199
the flow chart just going down and
it and it sets result to zero,

671
00:56:12.519 --> 00:56:19.000
which seems weird because I wanted to
set the result of whatever the previous operations

672
00:56:19.000 --> 00:56:22.880
were put together. It sets the
operator to nothing and then it sets the

673
00:56:22.920 --> 00:56:27.840
current value to zero. That's not
my experience. When I click on two

674
00:56:27.920 --> 00:56:32.559
plus two equals, I get four, not zero. So is there how

675
00:56:34.280 --> 00:56:37.639
what? What's what's the paradigm here
or the thing that I need to know

676
00:56:38.000 --> 00:56:43.880
to to make this work? From
a brain, I think, I think

677
00:56:43.920 --> 00:56:45.960
this is less of a total thing. And just like I had a really

678
00:56:45.960 --> 00:56:50.280
weird idea in my head about how
the dates a model for calculator should be.

679
00:56:51.199 --> 00:56:54.280
Oh okay, but it's essentially it's
sort of evolved because I wanted that

680
00:56:54.400 --> 00:56:59.639
additional features and a lot of calculus
have when you when you keep planting pressing

681
00:56:59.679 --> 00:57:04.119
equals, like, there's a lot
way when it sort of repeats these things.

682
00:57:04.639 --> 00:57:07.519
So I ended sort of doing a
few versions of that, and I

683
00:57:07.559 --> 00:57:09.199
think this was sort of what I
came up with was a smart way of

684
00:57:09.320 --> 00:57:16.519
in a relatively minimal way to store
this. But yeah, I don't think

685
00:57:16.519 --> 00:57:20.440
that it's not so much the total
thing is. It's just I mean I

686
00:57:20.480 --> 00:57:22.719
would have probably done the same thing
in code, had I've been in the

687
00:57:22.760 --> 00:57:25.199
same mindset at that point. Well, I see where it sets the variable,

688
00:57:25.199 --> 00:57:29.840
but I don't see where it actually
carries out the actions, Like where

689
00:57:29.960 --> 00:57:36.239
is the logic stored in this thing? So the logic is usually stored in

690
00:57:36.280 --> 00:57:39.800
the formulas, right, that's usually
where you compute the values. Let me

691
00:57:39.960 --> 00:57:49.639
check and see, because I don't. I don't see it right until AJA

692
00:57:49.840 --> 00:57:53.280
finds it. Anything else undressed that
you want to mention, Yeah, I

693
00:57:53.280 --> 00:57:58.920
think I think one thing that's that's
because we've been talking very much developer focused

694
00:57:58.960 --> 00:58:02.079
on on this podcast. One of
the really nice benefits of tottle, and

695
00:58:02.159 --> 00:58:07.559
actually one of the main things that
we find out that we found out we

696
00:58:07.599 --> 00:58:13.760
were solving here is that in a
traditional setup, especially when you work on

697
00:58:13.760 --> 00:58:16.199
the front end, we sort of
end up having like an assembly line of

698
00:58:16.719 --> 00:58:22.679
usually a product manager that feeds the
idea for a feature to a designer that

699
00:58:22.760 --> 00:58:27.440
then builds a design that feeds it
the developer that then goes to a QA

700
00:58:28.320 --> 00:58:31.199
and then all of this goes back
and forth in certain circles depending on how

701
00:58:31.239 --> 00:58:35.360
much many people get back in the
iterations. Right, it rarely ever goes

702
00:58:35.440 --> 00:58:38.320
once. And even though we do
say agile a lot, and we love

703
00:58:38.400 --> 00:58:43.800
saying agile all of us, I
think it's still kind of an assembly line,

704
00:58:43.840 --> 00:58:46.840
right, it still kind of follows
this frokite off. And one of

705
00:58:46.880 --> 00:58:52.480
the things we really found about Tottle
that was quite unique is that everyone in

706
00:58:52.559 --> 00:58:57.360
our company are building in total.
So my co founder is a designer and

707
00:58:57.400 --> 00:59:00.960
he's not I mean, he's not
how very capable in total and can do

708
00:59:01.119 --> 00:59:06.480
quite complex logic, but he doesn't
like to do it, so he rarely

709
00:59:06.480 --> 00:59:10.239
does. Right, He'll just work
on the design and the fact that we

710
00:59:10.280 --> 00:59:15.719
can build in the same platform,
and it's not like a handoff where he

711
00:59:15.840 --> 00:59:19.599
first does all the visual design and
figma and then shows me a picture of

712
00:59:19.599 --> 00:59:22.440
an UI and now can you go
and build it from scratch? Right?

713
00:59:22.000 --> 00:59:25.519
But actually he'll just build it and
if he needs help with the logic,

714
00:59:25.599 --> 00:59:31.280
I can step in fix that,
or I'll build something and it'll look absolutely

715
00:59:31.360 --> 00:59:35.679
horrible, which actually happens a lot, and then he'll just go in after

716
00:59:35.840 --> 00:59:37.320
and make it look like what did
you look like? And the fact that

717
00:59:37.360 --> 00:59:43.400
we don't have to work in cereal
but can work in parallel for this has

718
00:59:43.440 --> 00:59:47.440
been an incredible speak boost. And
it's not just us, like our new

719
00:59:47.480 --> 00:59:52.719
head of marketing is like building our
partnership platform in total because he didn't want

720
00:59:52.719 --> 00:59:55.440
to, like, we were doing
other things right and this was important,

721
00:59:55.440 --> 01:00:02.960
so it's better he just did it
it. Interesting point here there are a

722
01:00:04.039 --> 01:00:12.480
growing number of solutions out there that
are implementing some mechanism of taking figma and

723
01:00:12.559 --> 01:00:19.599
translating it into code, So that
step seems to be I wouldn't quite call

724
01:00:19.679 --> 01:00:23.400
it solved, but much easier than
it used to be. So it's much

725
01:00:23.480 --> 01:00:30.000
less about the process of here's a
pigma drawing or whatever, now recreate it

726
01:00:30.039 --> 01:00:35.119
in code. You can't get the
initial code very often these days, or

727
01:00:35.159 --> 01:00:39.320
at least something that you can start
from. What is missing from my perspective,

728
01:00:39.800 --> 01:00:45.519
and I think the total is a
very interesting solution. Here is the

729
01:00:45.559 --> 01:00:51.639
other way around. I mean that
figma to code is kind of a one

730
01:00:51.719 --> 01:00:57.000
time thing. You can't really take
the code and the changes you've made in

731
01:00:57.039 --> 01:01:04.199
the code and then take it back
into Pigma up uh and so so it's

732
01:01:04.239 --> 01:01:09.159
like one shot uh. And and
if some if the designer then wants to

733
01:01:09.199 --> 01:01:15.559
make a change, the process needs
to kind of happen again in a lot

734
01:01:15.639 --> 01:01:21.280
of ways, or it becomes a
very manual process then and and and what's

735
01:01:21.320 --> 01:01:24.400
really great about the solutions like puddles
is that they kind of you know,

736
01:01:25.039 --> 01:01:30.840
this throwing things over the wall doesn't
doesn't exist. It's it's the same.

737
01:01:30.960 --> 01:01:36.239
It's a single tool that handles the
entire flow. So so yeah, for

738
01:01:36.320 --> 01:01:39.320
sure, I see that a lot
of value there. And it's not just

739
01:01:39.400 --> 01:01:44.360
the signus, right, Like if
if a product manager goes in and says,

740
01:01:44.360 --> 01:01:46.880
like, why on earth is this
text there? This makes this is

741
01:01:46.920 --> 01:01:50.679
not descriptive role, This doesn't make
any sense, right, this is the

742
01:01:50.719 --> 01:01:52.480
worst way of explaining this feature.
They can just go and fix it,

743
01:01:52.559 --> 01:01:57.599
right, And it doesn't break everything. It doesn't like it's not going to

744
01:01:57.880 --> 01:02:02.199
automatically not compile because they're changing text
or they're changing an image, and that's

745
01:02:02.280 --> 01:02:06.800
really easy to do, right,
So like a lot of time, making

746
01:02:06.800 --> 01:02:09.239
a change in tottle is as easy
as making a jury ticket for that change,

747
01:02:09.480 --> 01:02:14.320
and then you can just not do
that and that the amount of speed

748
01:02:14.400 --> 01:02:19.679
and velocity you get from that is
like like unlike anything I've seen before.

749
01:02:20.840 --> 01:02:25.480
And Total right now is a five
person company that are building a no code

750
01:02:25.480 --> 01:02:30.480
platform or a visual development platform for
building this right, It's not an easy

751
01:02:30.519 --> 01:02:34.719
problem to solve, and the reason
why we can do that is because we

752
01:02:34.800 --> 01:02:39.199
can be incredibly efficient with our time
by actually using Total to ship this way.

753
01:02:42.599 --> 01:02:46.679
Okay, I think we're more or
less hitting the end of our show.

754
01:02:46.880 --> 01:02:51.719
So before we go to picks,
if people want to contact you undress

755
01:02:51.800 --> 01:02:55.960
to you know, learn more about
Totle, try it out, you know,

756
01:02:57.840 --> 01:03:02.280
discuss your thoughts and ideas about no
code and stuff like that. What's

757
01:03:02.519 --> 01:03:07.000
the best way to reach you and
discuss these things with you? So they

758
01:03:07.000 --> 01:03:10.880
can definitely find me on Twitter.
I'm quite a lot on there. My

759
01:03:12.039 --> 01:03:15.320
Twitter handle is color of It,
which is a character from the hit Tiger's

760
01:03:15.320 --> 01:03:19.760
Guide to the Galaxy. But I
spelled his name wrong, so maybe we'll

761
01:03:19.760 --> 01:03:24.000
add it in a note somewhere.
But they can also find both me and

762
01:03:24.039 --> 01:03:28.159
everything about I'm totled a dev There's
a lot of links to both Twitter and

763
01:03:28.199 --> 01:03:32.400
social platforms and total. Maybe we
should have set it up, Francis t

764
01:03:32.559 --> 01:03:39.000
O D D L E. Yeah, obviously it will be in the show

765
01:03:39.039 --> 01:03:45.760
notes and the episode title and whatnot. Okay, then I think it's time

766
01:03:45.840 --> 01:03:51.079
to push on into picks. So
who wants to start a j You want

767
01:03:51.079 --> 01:03:57.599
to go first this time? Sure? Okay, let's see what if I

768
01:03:57.639 --> 01:04:04.719
got to pick here? Ah.
I watched the movie A Man Called Auto

769
01:04:05.159 --> 01:04:12.039
with Tom Hanks, and I have
mixed feelings about it. Give me both.

770
01:04:13.320 --> 01:04:18.159
But so it started out so hilarious, and then about halfway through the

771
01:04:18.199 --> 01:04:26.760
movie it kind of switched from being
a comedy to being the message and I

772
01:04:26.800 --> 01:04:30.159
it just I yeah, And then
I started to feel like I was getting

773
01:04:30.199 --> 01:04:35.599
preached to, and so the ending
I just felt like they ruined it.

774
01:04:35.679 --> 01:04:40.519
They had such a strong comedy and
then but they had to make sure that

775
01:04:40.599 --> 01:04:45.280
I got the message. They could
have just had the elements that they had

776
01:04:45.320 --> 01:04:50.840
without explicitly telling us that, you
know, men are stupid nitwits and you

777
01:04:50.880 --> 01:04:55.559
know, like this, like it
just it got weird. It got weird

778
01:04:55.679 --> 01:05:01.719
somewhere between half and halfway through and
three quarters through. And but I think

779
01:05:01.760 --> 01:05:10.400
I'd still recommend it because the first
half was so good. I just,

780
01:05:10.480 --> 01:05:15.480
I mean, just the opening scene
was comic gold. Comic gold. He's

781
01:05:15.559 --> 01:05:23.960
buying a length of rope at the
hardware store, right and they won't sell

782
01:05:24.039 --> 01:05:30.639
him five feet of rope because the
computer system doesn't have a way to It's

783
01:05:30.719 --> 01:05:33.119
just yeah, and he's he's like, you mean to tell me the computer

784
01:05:33.199 --> 01:05:38.880
can't do math on five feet anyway? It just so for me, and

785
01:05:38.920 --> 01:05:43.360
being a grumpy old man myself,
I just I loved it. It was

786
01:05:43.519 --> 01:05:46.599
it was just so good. And
until he got to the part where he's

787
01:05:46.639 --> 01:05:54.400
got a really weird relationship with his
neighbor who is married and has a husband,

788
01:05:54.760 --> 01:05:59.480
and yet he and her are going
on dates. And I didn't say

789
01:05:59.480 --> 01:06:01.400
it that way out, but that
part was pretty good. Oh okay,

790
01:06:02.000 --> 01:06:05.800
but yeah, that scene in the
story reminds me of the father of the

791
01:06:05.800 --> 01:06:09.639
Bride of Steve Martin where he goes
to the store and he's raging about how

792
01:06:09.679 --> 01:06:13.039
there's so many buns and a hot
dog package. But you know, there's

793
01:06:13.079 --> 01:06:15.760
more hot dogs in a package than
there are buns in a package, and

794
01:06:15.760 --> 01:06:19.440
he's taking out and yeah, get
short in jail because of his rampage at

795
01:06:19.440 --> 01:06:26.519
the store. Yeah, so that
that anyway, So I still recommend it.

796
01:06:26.599 --> 01:06:30.400
I just I just wish they would
have just kept the comic tone the

797
01:06:30.440 --> 01:06:34.880
whole way through rather than switching over
to I just I don't know whatever it

798
01:06:34.920 --> 01:06:42.679
was towards the end there. But
but then let's see, other than that,

799
01:06:42.800 --> 01:06:45.519
I had something, had something I
was gonna pick, and I don't

800
01:06:45.519 --> 01:06:51.920
remember what it is, so well, will uh, I'll pick the Super

801
01:06:51.960 --> 01:06:56.280
Mario Brothers movie as well. Oh
no, wait, wait there was a

802
01:06:56.320 --> 01:07:00.199
The Prime again? What he did
something? Oh now I remember John them

803
01:07:00.199 --> 01:07:02.679
Blow? So the Prime again?
Primagen, Primagen, primage. I keep

804
01:07:02.679 --> 01:07:10.280
on saying it wrong. I'm sorry, my apologies to the Prime. He

805
01:07:10.280 --> 01:07:14.840
he I watched a video of his
where he did a reaction to Jonathan Blow,

806
01:07:14.880 --> 01:07:18.000
but he did actually watch the full
Jonathan Blow video. Jonathan Blow is

807
01:07:18.039 --> 01:07:23.000
another crotchety old man that I would
just get along with swimmingly, I am

808
01:07:23.039 --> 01:07:31.159
sure, and his his talk,
the full one, was that the snippet

809
01:07:31.239 --> 01:07:35.440
was being reacted to. It is
called Preventing the Collapse of Civilization, and

810
01:07:35.480 --> 01:07:41.280
there was some pure comic gold in
this as well. But he talks about

811
01:07:41.280 --> 01:07:46.599
how we have all these records of
civilizations with ancient mysteries that we can't unravel

812
01:07:46.800 --> 01:07:51.840
or we know a process by which
it works or how it works, but

813
01:07:51.880 --> 01:07:57.920
we don't know how to reproduce it. And he talked about how software engineering

814
01:07:58.599 --> 01:08:05.320
may be in one of these peaks
of civilization before the decline, where the

815
01:08:05.360 --> 01:08:11.440
wisdom of the ancients is lost and
then people aren't able to to Uh.

816
01:08:11.480 --> 01:08:14.079
You got to watch the talk actually, and I'm not doing a justice and

817
01:08:14.119 --> 01:08:17.680
I'm making it sound probably more complicated
and stupid, but it was super entertaining,

818
01:08:18.239 --> 01:08:26.000
great history lesson and some good laughs. And now now I've been watching

819
01:08:26.000 --> 01:08:31.079
some of Jonathan Blow's other stuff and
he's based as they say, so Jonathan

820
01:08:31.119 --> 01:08:39.720
Blow by the way people are saying
that, you know, archaeologists are saying

821
01:08:39.800 --> 01:08:44.520
that our age is our era is
very problematic, that we're probably not going

822
01:08:44.560 --> 01:08:48.680
to leave any a lot of any
records behind because everything is digital, so

823
01:08:50.600 --> 01:08:56.399
you know, in in a thousand
years, there will be nothing left that's

824
01:08:56.520 --> 01:09:01.720
readable or accessible from from this era. And that's what kind of makes us

825
01:09:01.760 --> 01:09:08.159
think, you know, maybe the
Egyptians did have supercomputers. Maybe maybe AI

826
01:09:08.319 --> 01:09:13.560
generated the pyramids. Yeah, okay, moving on, Steve, what about

827
01:09:13.600 --> 01:09:16.119
you. Let's see I actually have
a couple of picks before we get to

828
01:09:16.119 --> 01:09:20.439
the high point of the episode,
which is my dad jokes if you didn't

829
01:09:20.479 --> 01:09:26.800
know that Andreas So. First of
all, AJ made a comment that reminds

830
01:09:26.880 --> 01:09:34.439
me of one of my favorite XKCD
cartoons called Wisdom of the Ancients h and

831
01:09:34.680 --> 01:09:41.840
I think about it often, and
it basically shows it says, never have

832
01:09:41.920 --> 01:09:45.119
I felt so close to another soul
and so helplessly alone as when I google

833
01:09:45.159 --> 01:09:48.399
an error and there's one result a
thread by someone with the same problem and

834
01:09:48.439 --> 01:09:54.439
no answer, last posted in two
thousand and three, and it shows the

835
01:09:54.479 --> 01:10:04.960
guys shaking his is Denver Coder nine, Actually Denvercoder nine, what did you

836
01:10:05.000 --> 01:10:10.159
see? And I have I've actually
used that comic in the past, like

837
01:10:11.079 --> 01:10:14.520
where I have posted a question like
on stack overflow and never got an answer.

838
01:10:14.520 --> 01:10:17.000
And I'll come back and say,
in order to avoid being this guy,

839
01:10:17.039 --> 01:10:20.079
and put a link to this cartoon
and then I'll provide my answer,

840
01:10:20.760 --> 01:10:25.479
so God bless you. It's a
great cartoon. It's not quite as good

841
01:10:25.479 --> 01:10:29.800
as Nerd Sniping or Bobby Tables in
my estimation of x k CD cartoons,

842
01:10:29.800 --> 01:10:33.600
but it's one of the best.
Or the pseudo pseudo make me a sandwich,

843
01:10:33.640 --> 01:10:42.039
that's the other one anyway. And
then a definite highbrow piece of something

844
01:10:42.039 --> 01:10:45.039
to pick is an ad I have
to see on Twitter. Normally I can't

845
01:10:45.039 --> 01:10:48.119
stand ads on Twitter and just get
past them. But this is a very

846
01:10:48.119 --> 01:10:51.000
effective tool made by a company called
I don't know, I said, resik

847
01:10:51.119 --> 01:10:58.880
b R e z K. And
it is a fart machine toy rubber.

848
01:10:58.880 --> 01:11:01.640
It's awesome and just a little thing
you hold in your hand and squeeze it

849
01:11:01.680 --> 01:11:08.279
and you can understand guess the sound
that it makes. But looks like a

850
01:11:08.359 --> 01:11:12.039
very amazing tool and only thirteen bucks. So if anybody's got all that,

851
01:11:12.319 --> 01:11:17.399
Dad wasn't tempted, Oh, I
was so tempted. Well, it's funny.

852
01:11:17.800 --> 01:11:25.039
Reminded me also because I got had
a white elephant exchange at my gym

853
01:11:25.079 --> 01:11:28.439
here recently within the past couple of
weeks, and one of the things that

854
01:11:28.720 --> 01:11:33.640
I gave as a toy that somebody
else got was a whoopee cushion. So

855
01:11:33.960 --> 01:11:39.119
that tells you all you need to
know about my humor. Anyway, now

856
01:11:39.159 --> 01:11:43.319
to the talking about your humor.
Yes, speaking of my humor, the

857
01:11:43.399 --> 01:11:45.399
dad jokes of the week, and
this here's a this is a Christmas themes

858
01:11:45.479 --> 01:11:51.239
question. What do you call a
broke Santa Claus, Saint Nichol less.

859
01:11:54.520 --> 01:11:57.159
So well, by the way,
I did figure out how to upload sound

860
01:11:57.199 --> 01:11:59.560
effects. I just got to get
it done so I will have the rim

861
01:11:59.560 --> 01:12:04.560
shots for those who enjoy that.
Number two, a Roman walks into a

862
01:12:04.600 --> 01:12:08.399
bar, holds up two fingers and
says, I'll have five beers please,

863
01:12:09.479 --> 01:12:14.119
you know five? Okay, okay, that's a good one. If you

864
01:12:14.359 --> 01:12:16.039
if you've ever seen mel Brooks History
of the World Part one, you know

865
01:12:16.079 --> 01:12:19.640
he's got all the visual gags throughout
all his movies like this, and there's

866
01:12:20.399 --> 01:12:24.560
one of them is the X and
V Tent X and V sent Store.

867
01:12:26.399 --> 01:12:30.239
Well you remember is that it's good
to be the King? Yes, it's

868
01:12:30.239 --> 01:12:34.760
good to be the king. I
think Patrick Stewart used the same thing in

869
01:12:34.800 --> 01:12:39.399
one of the rock in Robin Hood
Men and Tights when he kisses made Marion

870
01:12:39.520 --> 01:12:43.760
it's good to be the king,
and then finally questioned, so, how

871
01:12:43.800 --> 01:12:48.399
can a room full of married people
be empty because there's not a single person

872
01:12:48.439 --> 01:12:57.359
in it anyway. Okay, so
now it's my turn before we hand it

873
01:12:57.399 --> 01:13:01.840
over to you, Anderson and dressed. Sorry, So if you have you

874
01:13:01.920 --> 01:13:05.159
have a few moments more to think
about what you want to pick. So

875
01:13:05.920 --> 01:13:11.039
I usually pick something about the war
in Israel and Ukraine and depress everybody.

876
01:13:11.119 --> 01:13:15.720
So instead I won't talk about it
that much. I just mentioned that I

877
01:13:15.239 --> 01:13:20.159
tweeted something in kind of a relation
to that, which is one of my

878
01:13:20.239 --> 01:13:25.960
tweets that got the most likes ever. I think it got something like nineteen

879
01:13:26.000 --> 01:13:30.439
hundred likes, which is a lot
for me, which is somebody tweeted that

880
01:13:30.800 --> 01:13:40.520
a stupid statement that you know that
Jesus was Palestinian. Now you can be

881
01:13:40.600 --> 01:13:44.640
in favor of the Palestinians on this
side of the debate. You can be

882
01:13:44.680 --> 01:13:47.800
in favor of Israelis. You can
in fact be in favor of both sides,

883
01:13:48.640 --> 01:13:53.640
which is what I kind of tried
to be, especially when I'm in

884
01:13:53.640 --> 01:13:59.680
a giving mood. But you know, don't try to rewrite history, please.

885
01:14:00.319 --> 01:14:05.319
You know Jesus was a Jewish Man
living in a Kingdom of Judea.

886
01:14:06.079 --> 01:14:13.439
Yes, Palestinian hadn't even been created
with a couple of centuries. That's that's

887
01:14:13.560 --> 01:14:15.600
kind of true. There was,
there was the well, it's not exactly

888
01:14:15.640 --> 01:14:19.399
one hundred percent true. I mean, the Greeks living there did use the

889
01:14:19.520 --> 01:14:26.119
term Palestine or Philistine as as as
a way to refer to the coastal region,

890
01:14:26.720 --> 01:14:30.159
but the province wasn't called Palestine until
about a century and a half later

891
01:14:31.319 --> 01:14:35.800
anyway. So but you know,
so I tweeted that, and I got

892
01:14:35.840 --> 01:14:39.600
a lot of likes for that,
so wo be for me about that.

893
01:14:39.960 --> 01:14:45.520
By the way, epic too.
Yeah. The other thing is that I

894
01:14:45.600 --> 01:14:48.159
really like the community notes feature.
I mean, I'm I'm critical of a

895
01:14:48.199 --> 01:14:54.279
lot of things that Elon Musk did
you know, does and did and whatnot,

896
01:14:54.840 --> 01:14:59.600
But the community notes are a great
addition to Twitter. I think it

897
01:15:00.319 --> 01:15:02.880
x or whatever it's called these days, because you know, it makes a

898
01:15:02.960 --> 01:15:06.840
huge difference about these sort of things. And and in this case as well,

899
01:15:06.880 --> 01:15:10.920
I mean, people put you know, after I wrote my tweet,

900
01:15:11.000 --> 01:15:15.159
people put a community note in there
that basically said something along the same lines,

901
01:15:15.640 --> 01:15:19.159
and and it's it's really I've yet
to see a community note which I

902
01:15:19.239 --> 01:15:23.159
really objected to. Let's put it
this way. Most of them have been

903
01:15:23.199 --> 01:15:31.520
really on point anyway. So and
my final pick is we we watched the

904
01:15:32.039 --> 01:15:36.800
series on TV, which unfortunately turns
out it's going it's going to have this

905
01:15:38.039 --> 01:15:43.039
only one season. It wasn't continued, but we really enjoyed it. It's

906
01:15:43.039 --> 01:15:49.840
called Lucky Hank. It's with Bob
Odenkirk, who might be you know,

907
01:15:50.199 --> 01:15:56.119
very familiar from his roles on you
know, on Breaking Bad and uh on

908
01:15:58.720 --> 01:16:04.920
ah, what's the better call?
So exactly I've was having like my brain

909
01:16:05.000 --> 01:16:14.359
throws uh. And he plays the
department chairman of the English of the English

910
01:16:14.439 --> 01:16:19.960
department in this like small college and
it's like a comedy drama and we enjoyed

911
01:16:19.960 --> 01:16:25.359
it a lot. Uh. And
unfortunately, like I said, it's it's

912
01:16:25.399 --> 01:16:30.079
not going to be continued for a
second season. But I still really recommend

913
01:16:30.199 --> 01:16:33.520
watching watching this and you know,
we enjoyed it. So those would be

914
01:16:33.560 --> 01:16:41.560
my picks, and what and do
you have any picks for us? Yes,

915
01:16:41.640 --> 01:16:44.479
I do actually have a couple of
picks. I think the first one

916
01:16:44.600 --> 01:16:46.800
since since we had a movie as
the first pick, I want to add

917
01:16:46.800 --> 01:16:51.600
one in. I just finished watching
The Last Action Hero with my wife.

918
01:16:51.720 --> 01:16:57.039
Not exactly a recent movie, but
you hadn't seen it before, and I

919
01:16:57.119 --> 01:17:00.039
got to say, I think that's
a classic that still holds up. So

920
01:17:00.079 --> 01:17:02.800
that's gonna be my first pick.
I can still remember the ads for that

921
01:17:02.880 --> 01:17:08.279
when that movie first came out,
and they had they would do. They

922
01:17:08.279 --> 01:17:14.800
had two voice actors doing spoofs of
stallone and Schwartzenegger, And the one line

923
01:17:14.800 --> 01:17:17.399
I always remember for this is you
have more like Last Action zero, you

924
01:17:17.439 --> 01:17:20.720
know, still on making fun of
Schortzenegger. But yeah, that brings back

925
01:17:20.760 --> 01:17:26.600
some memories. Excellent, just sneaking
another dead joke in like that. That's

926
01:17:26.760 --> 01:17:29.439
masterfully done. By the way,
Oh thank you. Lots of practice.

927
01:17:29.600 --> 01:17:31.239
That was I can't take credit because
that was actually a line from the ad,

928
01:17:31.279 --> 01:17:35.520
but it was still a good one. But yeah, I think that

929
01:17:35.520 --> 01:17:40.479
that one still holds up with my
book. The other thing is a little

930
01:17:40.479 --> 01:17:45.319
bit on topic. Actually it's a
it's a talk you can find it on

931
01:17:45.399 --> 01:17:51.000
YouTube by god called Brett Victor,
who for studying different kinds of use of

932
01:17:51.000 --> 01:17:57.560
interfaces and the kinds of ways we
interact with computers, and he did a

933
01:17:57.600 --> 01:18:01.239
talk called the future of programming,
and the whole setting, the whole sort

934
01:18:01.239 --> 01:18:05.119
of theme of the talk is that
he's pretending to be giving this talk I

935
01:18:05.159 --> 01:18:12.279
think in nineteen seventy something around there. It's actually in like I think,

936
01:18:12.319 --> 01:18:15.560
early two thousands, but he's sort
of pretending. So he brought an overhead

937
01:18:15.600 --> 01:18:18.439
projector on stage and he's changing all
the slides and doing the whole thing,

938
01:18:18.520 --> 01:18:23.760
playing it long, and he's talking
about that from this point in time when

939
01:18:24.520 --> 01:18:29.560
computers really started to take off and
everybody could see it was going to be

940
01:18:29.600 --> 01:18:32.039
the future, but nobody had any
idea what that future looked like. He

941
01:18:32.159 --> 01:18:35.880
stood there and said, what are
the predictions we're making, and what will

942
01:18:35.880 --> 01:18:40.840
it definitely look like? And obviously
none of those predictions actually ended up being

943
01:18:40.880 --> 01:18:45.520
true. But it's a really interesting
take both in how many times people couldn't

944
01:18:45.880 --> 01:18:49.880
dream big enough compared to what was
actually going to happen, but also how

945
01:18:49.960 --> 01:18:55.960
many times where we may be settled
for something that wasn't what it could be

946
01:18:56.239 --> 01:18:59.439
right, like we could have probably
had more right why didn't this happen?

947
01:19:00.159 --> 01:19:04.399
The interesting thing about people making predictions
is that we generally take what we know

948
01:19:05.239 --> 01:19:11.359
and we extrapolate on it. We
we rarely think about you know, it's

949
01:19:11.439 --> 01:19:15.399
essentially impossible to think about the new
ideas. So like when people in like

950
01:19:15.520 --> 01:19:21.199
the fifties imagined what our century will
look like, they thought, hey,

951
01:19:21.239 --> 01:19:27.119
we have cars, we know about
planes, so we'll probably have flying cars.

952
01:19:27.840 --> 01:19:32.920
But nobody thought about, I don't
know, like like an iPhone,

953
01:19:33.279 --> 01:19:40.560
because you know, the concept just
you know, it wasn't there. So

954
01:19:41.199 --> 01:19:45.840
you take the ideas that you have
and you extrapolate from that. There's a

955
01:19:45.960 --> 01:19:50.520
famous story about, you know,
when when semiconductors were starting to happen,

956
01:19:50.640 --> 01:19:56.159
you know, prior to that,
they had the vacuum tubes, before they

957
01:19:56.239 --> 01:20:01.279
had the semiconductors and transistors, and
what one of the scientists was actually asked,

958
01:20:01.399 --> 01:20:06.840
you know, how small would have
would a single bit get or would

959
01:20:06.840 --> 01:20:12.600
the and and he said, as
small as small as possible, where when

960
01:20:12.680 --> 01:20:17.600
you where you can still replace one
when it burns out. Now today obviously

961
01:20:17.680 --> 01:20:24.359
we we just take this entire wafer
with billions of bits on it and just

962
01:20:24.399 --> 01:20:29.279
throw it in the garbage. But
he couldn't envision that. Uh, you

963
01:20:29.319 --> 01:20:31.479
know, so we kind of like
stuck in the paradigms that we know.

964
01:20:32.039 --> 01:20:40.039
It's really it's it's such an impossible
to think of an alternative paradigm. One

965
01:20:40.119 --> 01:20:45.399
of the one of the founders of
the university I went to, is quoted

966
01:20:45.399 --> 01:20:51.640
for saying flying machines that are heavier
than air are impossible. There's a few

967
01:20:51.680 --> 01:20:58.159
people that made Yeah, it's it's
an interesting statement. I saw interesting talk

968
01:20:58.199 --> 01:21:01.239
about it. Where the point of
the speaker was is that they should have

969
01:21:01.399 --> 01:21:06.720
known it was possible because they could
have opened the window and looked at birds.

970
01:21:08.239 --> 01:21:13.239
So if birds can do it,
then you know, it's theoretically possible

971
01:21:13.319 --> 01:21:15.359
to build a machine that can do
that can do it. But you know,

972
01:21:15.880 --> 01:21:21.479
which is his argument why self driving
cars are eventually bound to happen,

973
01:21:23.000 --> 01:21:25.960
that if people can do it,
we can eventually be able to build a

974
01:21:26.000 --> 01:21:31.640
machine that does it. Anyway,
I think that more or less concludes our

975
01:21:32.079 --> 01:21:38.600
episode for today, So Undressed,
thank you very much for coming on and

976
01:21:38.640 --> 01:21:43.239
telling and explaining total to us and
telling us about it. It's very very

977
01:21:43.279 --> 01:21:46.560
interesting project and a very interesting take, and you know, I highly recommend

978
01:21:46.640 --> 01:21:53.840
for our listeners to check it out. And that's it. By everybody.

