1
00:00:00,312 --> 00:00:02,574
code reviews can be a pain, right?

2
00:00:02,855 --> 00:00:07,780
A lot of people don't like them, and we see many cases where code reviews are not that
great.

3
00:00:07,800 --> 00:00:10,824
And again, surprise, AI can help.

4
00:00:10,824 --> 00:00:17,451
We see a rise in AI code reviewers that can help you assess your code or improve it before
you reach production.

5
00:00:17,451 --> 00:00:18,607
Let's have a look.

6
00:00:25,625 --> 00:00:29,447
Hi everyone, welcome to technology explorations at Dataminded.

7
00:00:29,447 --> 00:00:33,140
In this series, we give you an initial look in new or interesting technologies.

8
00:00:33,140 --> 00:00:35,981
My name is Jonny, knowledge lead here at Dataminded.

9
00:00:35,981 --> 00:00:39,634
And today we're going to look into AI assistance for code reviews.

10
00:00:39,634 --> 00:00:41,757
And for that, I brought with me Hannes.

11
00:00:41,757 --> 00:00:42,618
Welcome Hannes.

12
00:00:42,618 --> 00:00:43,887
Hi, thanks for having me.

13
00:00:43,887 --> 00:00:44,684
How are you doing today?

14
00:00:44,684 --> 00:00:45,250
All good?

15
00:00:45,250 --> 00:00:46,377
All good, all good.

16
00:00:46,377 --> 00:00:47,997
Ready to show you some things.

17
00:00:47,997 --> 00:00:50,639
So what brought you to this topic?

18
00:00:50,639 --> 00:00:52,380
AI assisted code reviews.

19
00:00:52,380 --> 00:00:54,092
What is the reason this triggered you?

20
00:00:54,092 --> 00:01:01,346
Yes, so I think we were all quite amazed when we first used whatever model it was.

21
00:01:01,346 --> 00:01:04,629
Was it a GPT model or Gemini model or Claude or whatever.

22
00:01:04,629 --> 00:01:05,700
or a lot of people are...

23
00:01:05,700 --> 00:01:09,863
utilizing that or at least to some extent should, I think, that's my opinion.

24
00:01:09,863 --> 00:01:14,937
But you've also noticed, think, Jonny, that it sometimes doesn't know really what it's
doing.

25
00:01:14,937 --> 00:01:22,022
It doesn't have enough context, which is most of our time our fault, but sometimes it also
just makes mistakes and you've been there.

26
00:01:22,022 --> 00:01:24,484
It's not always a walk in the park.

27
00:01:24,484 --> 00:01:25,967
if you accept that and

28
00:01:25,967 --> 00:01:28,389
want to go to production, you go through PRs.

29
00:01:28,389 --> 00:01:35,198
But after a while, the PRs start to become so big because people are producing so much
code because it's so easy to produce code.

30
00:01:35,198 --> 00:01:40,515
And I was really interested, if you're automating software engineering itself, writing the
code, can we also automate

31
00:01:40,515 --> 00:01:42,989
or leverage AI to do the PRs itself.

32
00:01:42,989 --> 00:01:48,751
And so if I understand correctly, we generate a lot more code due to AI systems.

33
00:01:48,751 --> 00:01:53,689
And essentially you were looking for a system that would reduce the burden of the code
review mechanism.

34
00:01:53,650 --> 00:01:55,670
Yes, and I think it's twofold.

35
00:01:55,670 --> 00:02:01,933
Indeed, it removes the burden but on the other hand, you will always miss things as a
human,

36
00:02:01,933 --> 00:02:08,111
it's easy to overlook something, especially if you don't know the repo, and you only have
a few people to get things done.

37
00:02:08,111 --> 00:02:12,124
The chance that you miss a mistake, even a small one, it's very big.

38
00:02:12,124 --> 00:02:17,909
So I think that's another benefit next to the burden itself of doing it.

39
00:02:17,909 --> 00:02:20,277
So also increasing the quality of the reviews.

40
00:02:20,277 --> 00:02:21,644
Yes, yes,

41
00:02:21,644 --> 00:02:27,632
If I look at my own experience, what I personally like in pull request reviews is if they
go beyond a code review.

42
00:02:27,632 --> 00:02:29,463
to me this is beyond coding.

43
00:02:29,463 --> 00:02:31,466
This is also about checking the logic.

44
00:02:31,466 --> 00:02:32,258
checking whether...

45
00:02:32,258 --> 00:02:36,982
everything works, doing a local test with the code and giving feedback on that also on the
design.

46
00:02:36,982 --> 00:02:42,957
quite often I do see at companies that there's lots of rubber stamping, like people just
approving stuff

47
00:02:42,957 --> 00:02:51,082
so I do think there is a huge chance to optimize this workflow to have better reviews So
I'm very looking forward to what you're going to show me.

48
00:02:51,082 --> 00:02:53,316
So I would say let's dive in.

49
00:02:53,295 --> 00:02:55,858
I've looked at a few tools that I can test out.

50
00:02:55,858 --> 00:03:02,489
the space is quite big already, so it's really growing, And here are a few of the big
players out there.

51
00:03:02,489 --> 00:03:04,704
There is Code Rabbit, which we will take a look at.

52
00:03:04,704 --> 00:03:05,826
There is Qodo,

53
00:03:05,826 --> 00:03:10,491
We have also Greptile, Sourcery, Beto and quite a few others.

54
00:03:10,491 --> 00:03:18,614
we'll try to do just two different ones, but I, in general, validating AI seems always as
a hard task, at least to me.

55
00:03:18,614 --> 00:03:19,760
Yeah, indeed.

56
00:03:19,760 --> 00:03:25,148
There's a few benchmarks you could use, but I think it would be good if we could already
get a feeling on how these things work.

57
00:03:25,148 --> 00:03:25,980
Yes, indeed.

58
00:03:25,980 --> 00:03:27,962
So let's just dive into the first.

59
00:03:27,962 --> 00:03:34,489
So what I've been doing, Jonny, is this project It's called the Sandi Insights Project.

60
00:03:34,489 --> 00:03:37,672
It's a little internal project for the people listening or watching.

61
00:03:37,672 --> 00:03:41,596
And Jonny asked to review something, to do a few changes

62
00:03:41,596 --> 00:03:52,603
uh Me, not knowing the repo, I started vibe coding, So I asked some feedback of what it
was, I checked, okay, what do need to change, where, made a few changes.

63
00:03:52,603 --> 00:03:53,806
I have cursor.

64
00:03:53,806 --> 00:03:57,917
it's VS Code with an extra layer with AI integration basically.

65
00:03:57,917 --> 00:04:00,418
And one of the extensions I installed is CodeRabbit.

66
00:04:00,418 --> 00:04:04,530
So in here you see I'm logged in as myself on GitHub.

67
00:04:04,530 --> 00:04:07,163
and I installed the CodeRabbit extension.

68
00:04:07,163 --> 00:04:12,501
And in here I can see I'm on a separate branch and I can compare to main.

69
00:04:12,501 --> 00:04:14,382
And in here I can review all my changes.

70
00:04:14,382 --> 00:04:17,997
So I will already start that because it takes a while.

71
00:04:17,997 --> 00:04:20,668
It's setting up, reviewing the changes, et cetera.

72
00:04:21,109 --> 00:04:21,474
And...

73
00:04:21,474 --> 00:04:32,119
made a branch and then you, you vibe coded some things or you programmed yourself and now
you have the chance to let it review the pull request already that you could create.

74
00:04:32,119 --> 00:04:35,264
This is not a pull request yet, this is just the two branches that we'll compare.

75
00:04:35,264 --> 00:04:36,416
Yes, very good point.

76
00:04:36,416 --> 00:04:38,410
So indeed it's not yet a pull request.

77
00:04:38,410 --> 00:04:40,184
I will make a pull request right now.

78
00:04:40,184 --> 00:04:42,187
I don't think I have any local changes.

79
00:04:42,187 --> 00:04:43,250
Everything is up to date.

80
00:04:43,250 --> 00:04:48,722
So let me quickly go to GitHub while we're waiting for the review anyway.

81
00:04:48,722 --> 00:04:52,421
So this is the code base.

82
00:04:52,421 --> 00:04:54,844
So let's contribute, let's open a request.

83
00:04:54,844 --> 00:04:56,585
I will just create a pull request for now.

84
00:04:56,585 --> 00:05:01,660
I know Jonny in the future, I would like to add some extra descriptions, But for now I'll
just create a pull request.

85
00:05:01,660 --> 00:05:06,084
um For once this is okay, I'm allowed.

86
00:05:06,084 --> 00:05:07,977
So let's go back to CodeRabbit.

87
00:05:07,977 --> 00:05:10,649
So CodeRabbit has been very helpful.

88
00:05:10,649 --> 00:05:15,251
The rabbit has been working and you see here quite a few things popping up.

89
00:05:15,251 --> 00:05:19,113
So again, we're looking at a certain branch and we're comparing it to main.

90
00:05:19,113 --> 00:05:23,386
it's checked 12 files and it's detected nine issues.

91
00:05:23,386 --> 00:05:28,068
So what you can do is either I go here through the comments or you click here on the
files.

92
00:05:28,068 --> 00:05:28,529
So

93
00:05:28,529 --> 00:05:33,209
This is the biggest file I've changed to the file with the most changes of myself.

94
00:05:33,209 --> 00:05:35,040
So there's a potential issue.

95
00:05:35,040 --> 00:05:37,402
So I can say, click on it.

96
00:05:37,402 --> 00:05:39,653
And that brings me to the actual line question.

97
00:05:39,653 --> 00:05:43,524
So here it tells me there's a type mismatch for origin column prefill.

98
00:05:43,524 --> 00:05:47,804
So the multiselect column says it's a streamlit column type.

99
00:05:47,804 --> 00:05:54,115
So it's a streamlit application and the multiselect column allows you to select multiple
aspects.

100
00:05:54,115 --> 00:05:55,486
So the prefill here.

101
00:05:55,486 --> 00:06:03,172
is currently set on an empty string, but that does not make sense since the default value
should be a list because it can be multiple values.

102
00:06:03,172 --> 00:06:09,565
that's CodeRabbit is complaining and it seems to me that this is actually a valid remark.

103
00:06:09,565 --> 00:06:16,959
I could do is indeed look this up and validate with actual documentation of Streamlit that
this is actually the case.

104
00:06:16,959 --> 00:06:18,331
So let's assume

105
00:06:18,331 --> 00:06:20,603
that the AI is correct in this regard.

106
00:06:20,603 --> 00:06:28,859
Then I can either apply the suggested change, fix with AI, or I can also ignore when I
think it's not relevant in this case.

107
00:06:28,859 --> 00:06:30,781
So let's fix it with AI.

108
00:06:30,781 --> 00:06:32,453
And something very cool is happening.

109
00:06:32,453 --> 00:06:34,311
I don't know if you saw what happened, but.

110
00:06:34,311 --> 00:06:36,220
popped up, it opened up a new chat.

111
00:06:36,220 --> 00:06:37,260
Yes, exactly.

112
00:06:37,260 --> 00:06:46,025
So in Cursor, it directly start a new chat with in this file, around lines, blah, blah,
blah.

113
00:06:46,025 --> 00:06:47,676
And then it says actually what it found.

114
00:06:47,676 --> 00:06:53,087
So it gives a bit of context where it should find it and then it gives the error.

115
00:06:53,087 --> 00:06:55,788
So this allows me to fix it with AI.

116
00:06:55,788 --> 00:06:58,421
So you basically had these different options.

117
00:06:58,421 --> 00:07:07,952
The first one was actually the diff that it proposed to directly apply it, which is
already suggested by CodeRabbit, but you chose the option to fix with AI, which then

118
00:07:07,952 --> 00:07:16,512
transfers this request to fix to a chat window for Cursor, which can then use different
models and maybe more powerful things to fix it.

119
00:07:16,512 --> 00:07:17,213
Exactly.

120
00:07:17,213 --> 00:07:24,110
So I'm not sure how this indicates, for example, to co-pilot or if you're using another
integration within VS code.

121
00:07:24,110 --> 00:07:28,072
But for example, for Cursor, it works out of the box, So here.

122
00:07:28,072 --> 00:07:35,974
you opt for this AI system to kick in like here with the supplied context versus just
pressing the apply now button?

123
00:07:35,974 --> 00:07:37,005
Yes, good question.

124
00:07:37,005 --> 00:07:45,068
So I think applying now, you should always and only do when It is actually correct and you
agree with it and you say, yes, this is indeed much better.

125
00:07:45,068 --> 00:07:48,624
A simple rename here, indeed a simple default value.

126
00:07:48,624 --> 00:07:53,981
Either this is my research and I ask, is this the case?

127
00:07:53,981 --> 00:07:56,265
And I basically ask for a second opinion here

128
00:07:56,265 --> 00:08:04,580
So I would use this mainly for either you want to ask more context, more feedback, or if
you're unsure about the implementation, sometimes

129
00:08:04,580 --> 00:08:06,902
it does say it can confirm the issue.

130
00:08:06,902 --> 00:08:10,366
It knows about the issue from the context that was given to it.

131
00:08:10,366 --> 00:08:15,933
And it will, in this case, confirm that the fix is indeed what Code Rabbit proposed.

132
00:08:15,933 --> 00:08:22,120
Yes, and it even suggested a second edit because somewhere else I seem to have made the
same mistake.

133
00:08:22,120 --> 00:08:24,863
So it even went one step above.

134
00:08:24,863 --> 00:08:26,256
Maybe I'll open a second.

135
00:08:26,256 --> 00:08:29,581
which here is nice, it seems like a critical logic error.

136
00:08:29,581 --> 00:08:30,022
So.

137
00:08:30,022 --> 00:08:41,200
Here it starts complaining again about regarding the same column that returns a list of
selected values and the conversion expecting it by comma produces incorrect results.

138
00:08:41,200 --> 00:08:48,256
It gives an example, client work training and I expected to split on comma which wouldn't
work because then string, etc.

139
00:08:48,256 --> 00:08:51,400
So here it proposes yet another change.

140
00:08:51,400 --> 00:08:57,808
And it also asks to update the error raising because here I use the same logic.

141
00:08:57,808 --> 00:09:00,240
So let's say, okay, I agree with this.

142
00:09:00,240 --> 00:09:01,031
I've checked this.

143
00:09:01,031 --> 00:09:02,001
I validated it.

144
00:09:02,001 --> 00:09:04,344
I tested it myself in my Python terminal.

145
00:09:04,344 --> 00:09:06,447
I can now apply the suggested change.

146
00:09:06,447 --> 00:09:08,608
Whoop, you see something going over.

147
00:09:08,608 --> 00:09:09,860
Looks very fancy.

148
00:09:09,860 --> 00:09:10,581
And then it's done.

149
00:09:10,581 --> 00:09:14,044
I can also unresolve the comment and go in again.

150
00:09:14,044 --> 00:09:16,385
But now it changed a few lines.

151
00:09:16,385 --> 00:09:21,931
So you can here again, see the changes it made from the test strip, And that's fixed it.

152
00:09:21,931 --> 00:09:23,572
And now can go all through the rest.

153
00:09:23,572 --> 00:09:24,824
I can either ignore.

154
00:09:24,824 --> 00:09:29,023
If I say, well, this issue, I don't think this is an issue, I press ignore.

155
00:09:29,023 --> 00:09:30,370
And then you go through the list.

156
00:09:30,370 --> 00:09:33,889
I do it actually one by one on my own and I go through this.

157
00:09:33,889 --> 00:09:38,213
What CodeRabbit can also do is if you take a look at the website,

158
00:09:38,213 --> 00:09:44,979
next to CLI work, which is actually what I did now, you can also comment on PRs itself.

159
00:09:44,979 --> 00:09:48,282
So what I did now is actually, I call it a pre-flight check.

160
00:09:48,282 --> 00:09:54,744
So basically before I even create the PR, I check myself locally, well, did I do anything
wrong or whatever?

161
00:09:54,744 --> 00:09:59,467
But if I make the PR, if you have it enabled and pay for it,

162
00:09:59,467 --> 00:10:02,019
then it can actually do it in the UI itself.

163
00:10:02,019 --> 00:10:07,925
So here you can see a few screenshots and commenting on PR itself, which is really cool.

164
00:10:07,925 --> 00:10:12,659
So you have two places in your whole development process where you can run this app.

165
00:10:12,659 --> 00:10:16,322
So before you're creating a PR and after creating the PR,

166
00:10:16,322 --> 00:10:20,979
And for the PRs, then it needs a GitHub integration, suppose, or Bitbucket or whatever you
use.

167
00:10:20,979 --> 00:10:27,064
So you need to allow access to your GitHub repo to make changes.

168
00:10:27,209 --> 00:10:32,042
It's essentially a bot, assume that just visits your PR and then gives comments.

169
00:10:32,621 --> 00:10:40,929
And what I wonder is what you showed locally, Does it only consider code that was
committed on that branch or does it also consider uncommitted code?

170
00:10:40,929 --> 00:10:41,750
Good question.

171
00:10:41,750 --> 00:10:44,202
So it basically, there is your answer.

172
00:10:44,202 --> 00:10:48,926
It can review uncommitted changes, committed changes or all changes, which is quite useful
indeed.

173
00:10:48,926 --> 00:10:51,999
So you can even before you commit the change.

174
00:10:51,999 --> 00:11:03,298
So even if you do test-driven development and you're very meticulous in the way you never
commit non-working code well, this is a nice feature that it even reviews uncommitted

175
00:11:03,298 --> 00:11:04,280
changes before you.

176
00:11:04,280 --> 00:11:11,633
And so the comments that are generated, Are these all applicable only to the changes that
you've made or does it go beyond that?

177
00:11:11,633 --> 00:11:14,696
Cause there could be a bug in your main code already.

178
00:11:14,696 --> 00:11:15,918
will simply ignore

179
00:11:15,918 --> 00:11:27,827
Yeah, so it will ignore code that's already there in the sense of it will not review it,
but it will look for it as but it will not assume say, hey, last year or last month you

180
00:11:27,827 --> 00:11:32,294
made a change to this or looks like the method is not really correct.

181
00:11:32,294 --> 00:11:33,436
it will not comment on it.

182
00:11:33,436 --> 00:11:35,561
So it's really only on your changes.

183
00:11:35,561 --> 00:11:36,242
Yeah, okay.

184
00:11:36,242 --> 00:11:39,686
I also see there in the pro version, you can use coding guidelines.

185
00:11:39,686 --> 00:11:41,129
That sounds very interesting to me.

186
00:11:41,129 --> 00:11:46,257
Like if you have specific standards, if you can ship them and the review also checks that.

187
00:11:46,257 --> 00:11:48,158
Yeah, I think this is very useful.

188
00:11:48,158 --> 00:11:55,832
also, there is a lot of options as well in AI assets and coding, both with GitHub Copilot,
with Cursor, with Joony, whatever you use.

189
00:11:55,832 --> 00:12:04,784
I think all products now have an option to give you guidelines, That in combination with
pre-commit hooks that allow you to automatically do other checks as well.

190
00:12:04,784 --> 00:12:05,436
I think...

191
00:12:05,436 --> 00:12:09,256
It also limits the need of this, but it is useful nonetheless.

192
00:12:09,256 --> 00:12:12,868
So this is something I use myself actually.

193
00:12:12,868 --> 00:12:18,599
So I highly recommend testing it out for yourself to see if it works.

194
00:12:18,599 --> 00:12:24,624
For a repo I know pretty well it can be that 50 % or more or 80 % of the comments can
disregard.

195
00:12:24,624 --> 00:12:32,415
Basically because I have enough context about what's going on I can say I can ignore this
and this and this because I'm quite sure

196
00:12:32,415 --> 00:12:39,200
It's an overkill what they suggest, I think it's not needed or too defensive programming
in that case and then I just ignore the comments.

197
00:12:39,200 --> 00:12:40,300
But that's interesting.

198
00:12:40,300 --> 00:12:45,331
that means like 80 % of the comments are not really useful for you personally.

199
00:12:45,331 --> 00:12:57,274
So it depends, in this case, I think it was very useful because I vibe-coded quite a lot
the first two comments seemed very plausible and I don't understand the repo well.

200
00:12:57,274 --> 00:13:11,075
If I have a repo where I handwritten, so to say the code base 95 % or 90%, then often I
feel the tendency that indeed 80 % of the comments is,

201
00:13:11,075 --> 00:13:21,140
not really that useful, but I have got, for example, few variables that I used the wrong
variable name for example, which got through a unit test, And if he didn't catch it, it

202
00:13:21,140 --> 00:13:22,361
would have been a bug later on.

203
00:13:22,361 --> 00:13:27,676
So I actually caught a few bugs which would have caused at least some trouble in
production with this.

204
00:13:27,676 --> 00:13:33,565
I do want to dive in maybe on one of these issues, like there's this PII exposure, always
interesting.

205
00:13:33,565 --> 00:13:36,060
So I'm actually curious what it suggests there.

206
00:13:36,060 --> 00:13:38,216
Remove or mask the email address from the UI.

207
00:13:38,216 --> 00:13:42,399
Yes, so this is a point which doesn't make that much sense, right?

208
00:13:42,399 --> 00:13:49,240
So I added this as a debug information that I am logged in as
hannes.desmet[at]dataminded.com

209
00:13:49,240 --> 00:13:50,620
is that personal information?

210
00:13:50,620 --> 00:13:54,480
Yes, but it's displayed only for me.

211
00:13:54,480 --> 00:14:00,992
So this doesn't make that much sense because it's in the session state of the current user
shows you the user email.

212
00:14:00,992 --> 00:14:04,303
So does it make sense that it's actually a PII issue?

213
00:14:04,303 --> 00:14:05,934
I don't think so.

214
00:14:05,934 --> 00:14:08,463
So in this case, I would ignore it.

215
00:14:08,463 --> 00:14:09,010
Yeah, indeed.

216
00:14:09,010 --> 00:14:15,342
And the solution gives us like, it says remove this from the UI, which I can see it does
there.

217
00:14:15,342 --> 00:14:21,305
It only shows the number of uh user answers and it also adds something extra in the if
test.

218
00:14:21,305 --> 00:14:23,666
It also adds like, and user answers.

219
00:14:23,666 --> 00:14:33,700
So when I saw this, had to actually extend my mental context because I was looking for ah
It will just remove the email, but it actually added a few things to the test as well.

220
00:14:33,700 --> 00:14:35,052
which I had to think about.

221
00:14:35,052 --> 00:14:40,806
I would prefer if it gave me a bit more explanation on what it did there, but it seems to
be correct.

222
00:14:40,806 --> 00:14:42,801
And then it gives you a second option.

223
00:14:42,801 --> 00:14:49,986
So it says you can mask it and it gives you a way of masking the email address, which I
also like that it does that.

224
00:14:50,427 --> 00:14:55,262
But now we don't get an in place button, like apply this, you get different options I see.

225
00:14:55,262 --> 00:15:00,296
Yes, so it's not always there, the button of automatically accepting.

226
00:15:00,296 --> 00:15:05,412
So sometimes you have to do it yourself, either copy pasting it and changing it, or just
manually typing it.

227
00:15:05,412 --> 00:15:09,484
sometimes it makes you think also about other aspects, which is quite nice.

228
00:15:09,484 --> 00:15:16,121
If you, maybe you wouldn't just thought of the PII data or you wouldn't think of security
logging

229
00:15:16,121 --> 00:15:26,287
tool I tested out as well, which I can't unfortunately anymore, which is quite interesting
and I would like to mention as well is um Sourcery So Sourcery is also a code quality

230
00:15:26,287 --> 00:15:26,899
tool.

231
00:15:26,899 --> 00:15:30,941
And it also states it does code review for the AI era.

232
00:15:30,941 --> 00:15:33,713
So it does also security scanning and team.

233
00:15:33,713 --> 00:15:35,945
analytics, not sure what that means.

234
00:15:35,945 --> 00:15:40,029
But the code review, very interesting, is free for open source projects.

235
00:15:40,029 --> 00:15:50,200
So it also comments on the PR itself, like in in GitHub, but it's also a tool you can use
in your IDE as code review, So it also works on

236
00:15:50,200 --> 00:15:54,745
both places in your development flow, And I also got quite nice results.

237
00:15:54,745 --> 00:16:04,223
And the nice thing about Sourcery, at least with the comments here in the IDE was that my
Cursor could actually see them all.

238
00:16:04,223 --> 00:16:06,705
It had the context of all the comments it posted.

239
00:16:06,705 --> 00:16:11,959
I could just start typing and it could see all the comments, and it integrated really well
with Cursor, which was quite nice.

240
00:16:11,959 --> 00:16:17,263
if you want to use it for private repos, at least in the IDE, you have to take a pro
license.

241
00:16:17,263 --> 00:16:20,035
it is another nice option, especially for open source projects.

242
00:16:19,755 --> 00:16:24,098
Is this possible to demo it on one of our public repositories?

243
00:16:24,098 --> 00:16:27,479
Yes, I think so.

244
00:16:27,479 --> 00:16:29,439
Live, we can try that.

245
00:16:31,481 --> 00:16:32,109
we have the technology explorations repository, which is public.

246
00:16:32,109 --> 00:16:32,804
Yeah, that one.

247
00:16:32,804 --> 00:16:34,315
technology explorations.

248
00:16:34,315 --> 00:16:35,359
Opening new window.

249
00:16:35,359 --> 00:16:37,543
I don't know if the files are already...

250
00:16:38,727 --> 00:16:39,788
Plugin.

251
00:16:40,749 --> 00:16:42,243
Yes, the extension is installed.

252
00:16:42,243 --> 00:16:44,013
I am currently...

253
00:16:44,013 --> 00:16:45,721
I don't know...

254
00:16:46,224 --> 00:16:47,388
Yeah, I think so.

255
00:16:47,388 --> 00:16:48,261
compare with main

256
00:16:48,261 --> 00:16:49,503
here it gave an overview.

257
00:16:49,503 --> 00:16:59,818
There's one general issue found, the issue division by zero in percentage calculation,
which is one of the most default risks you can have, think, in programming.

258
00:16:59,818 --> 00:17:06,275
But at least it is indeed a possible, if your amount of employees is zero, you have an
issue,

259
00:17:06,275 --> 00:17:14,887
Here is the comment, so if I hover over it, the blue squiggly line is actually the
problem.

260
00:17:14,887 --> 00:17:18,198
So I don't know how it integrates with it.

261
00:17:18,198 --> 00:17:25,181
But here it says on both lines, because it's two lines, it takes it together again I can
fix it in chat.

262
00:17:25,181 --> 00:17:25,746
Enter.

263
00:17:25,746 --> 00:17:30,174
in terms of comparison to CodeRabbit, CodeRabbit gave already a proposal quite often.

264
00:17:30,174 --> 00:17:32,377
It says like, this is what you can do to change.

265
00:17:32,377 --> 00:17:36,334
Here we don't get a proposal and we need to use the chat to actually get a fix.

266
00:17:36,334 --> 00:17:38,236
Yeah, so here, cursor

267
00:17:38,236 --> 00:17:39,916
So it made the changes for me.

268
00:17:39,916 --> 00:17:45,610
Again, down here it seems to be the same issue, which wasn't getting flagged.

269
00:17:45,610 --> 00:17:52,652
I don't see anything saying about lines 81 to 83, but cursor seemed smart enough to fix
that.

270
00:17:52,652 --> 00:17:53,623
A suggestion.

271
00:17:53,623 --> 00:17:55,051
for some dates.

272
00:17:55,051 --> 00:17:57,857
And here it does give a potential change.

273
00:17:57,857 --> 00:17:59,300
give proposed changes.

274
00:17:59,300 --> 00:18:01,405
But again, I think I have to...

275
00:18:01,405 --> 00:18:02,027
Quick fix.

276
00:18:02,027 --> 00:18:05,816
So here if I do the quick fix, I can actually apply the fix - baf.

277
00:18:05,816 --> 00:18:08,173
This was confusing, there were many quick fixes.

278
00:18:08,173 --> 00:18:09,368
Yes, so it seems to be...

279
00:18:09,368 --> 00:18:13,233
I'm not sure why, it is a bit confusing also targeting the same...

280
00:18:14,276 --> 00:18:16,878
No, I think it's always duplicate it seems.

281
00:18:16,878 --> 00:18:18,685
Yes, see it's always...

282
00:18:18,685 --> 00:18:24,432
And if we look at this compared to Code Rabbit, it seems like Code Rabbit was actually a
bit more advanced.

283
00:18:24,432 --> 00:18:29,319
In general, I thought the integration was better.

284
00:18:29,319 --> 00:18:33,482
the sense that I don't know if CodeRabbit by then had to fix it with AI button.

285
00:18:33,482 --> 00:18:34,855
I don't think it had it.

286
00:18:34,855 --> 00:18:41,892
So it was back then only the quick fix or ignore but not a fix with AI.

287
00:18:42,413 --> 00:18:46,497
Which that was the part I really liked about the integration.

288
00:18:46,497 --> 00:18:48,390
One cool thing it had,

289
00:18:48,390 --> 00:18:51,634
It had the option to create diagrams, which was very cool.

290
00:18:51,634 --> 00:18:53,895
So it has the context of the open file.

291
00:18:55,578 --> 00:18:57,791
the UI is maybe not the best.

292
00:18:57,791 --> 00:18:58,813
Okay, nice.

293
00:18:58,813 --> 00:19:00,127
So that is quite cool.

294
00:19:00,127 --> 00:19:02,849
this one is actually quite useful, I think.

295
00:19:03,090 --> 00:19:07,115
I mean, it's still very minimal, but I can imagine what it could do.

296
00:19:07,115 --> 00:19:08,828
Yeah, I really liked the diagram.

297
00:19:08,828 --> 00:19:14,152
this was quite fun to play with, but I don't know how useful is.

298
00:19:14,070 --> 00:19:17,280
Do you have a rough idea on the cost and the cost models?

299
00:19:17,280 --> 00:19:20,073
CodeRabbit it's per developer as well.

300
00:19:20,073 --> 00:19:29,283
Sourcery pricing, let's quickly check, Pro, seat So all it's per seat so depending on the
size of your organization, except if it's enterprise,

301
00:19:29,283 --> 00:19:36,503
Okay, so they're all charging per seat and it's roughly in the 20, 30 dollar range, more
or less.

302
00:19:36,494 --> 00:19:41,311
But so if I understand correctly, CodeRabbit and Sourcery are quite similar.

303
00:19:41,311 --> 00:19:43,363
They have this cursor integration.

304
00:19:43,363 --> 00:19:46,227
They also have this dashboard and GitHub integration.

305
00:19:46,227 --> 00:19:48,220
So they're direct competitors.

306
00:19:48,220 --> 00:19:49,741
Yeah, yeah, exactly.

307
00:19:49,741 --> 00:19:52,343
I think CodeRabbit is the biggest player out there in general.

308
00:19:52,343 --> 00:19:59,226
I think this, to be fair, having this for free in open source projects, yeah, count me in
I would say.

309
00:19:59,295 --> 00:20:05,261
I am curious to see at least in the space we're in, if it's gonna change.

310
00:20:05,787 --> 00:20:05,399
Yeah.

311
00:20:05,554 --> 00:20:07,657
and how much it will improve.

312
00:20:07,657 --> 00:20:15,996
because if you need context over different repos, then it becomes, I think, very difficult
for AI, at between, especially in data engineering, platform engineering.

313
00:20:15,996 --> 00:20:19,420
There's a lot of integrations, a lot of glue between components.

314
00:20:19,420 --> 00:20:21,643
You still need to have that context.

315
00:20:21,643 --> 00:20:24,764
You mean also between different projects and repositories?

316
00:20:25,452 --> 00:20:26,732
but we have a video for that.

317
00:20:26,732 --> 00:20:34,016
Emil demoed Cursor workspaces, which allows you to go beyond your project and beyond your
code base.

318
00:20:34,083 --> 00:20:37,830
Yeah, that's very well hidden promotion.

319
00:20:37,830 --> 00:20:39,472
It's good, it's good.

320
00:20:39,472 --> 00:20:41,266
I like it, I will check it out actually.

321
00:20:41,250 --> 00:20:47,536
How would you summarize your experience with all these AI code assistants or pull request
assistants?

322
00:20:47,536 --> 00:20:50,209
I would say, first of all, it was fun playing around with.

323
00:20:50,209 --> 00:20:55,037
So if you are curious, try it out for yourself, see what works.

324
00:20:55,037 --> 00:20:59,593
If you have a team that maybe wants to use it, at least give it a chance.

325
00:20:59,593 --> 00:21:00,825
find out what works for you.

326
00:21:00,825 --> 00:21:02,108
Is it a preflight check?

327
00:21:02,108 --> 00:21:08,221
Is it having both Sourcery and CodeRabbit on the same repo and doing it all?

328
00:21:08,221 --> 00:21:09,895
go ahead and play with it.

329
00:21:09,895 --> 00:21:10,326
Yeah.

330
00:21:10,326 --> 00:21:11,246
Okay.

331
00:21:11,246 --> 00:21:16,191
My takeaway on all of this is basically you showed me that you have two variants.

332
00:21:16,191 --> 00:21:20,986
You have this local variant and the preflight check is always a good idea before you push.

333
00:21:20,986 --> 00:21:28,616
And then just like with pre-commit hooks, you could also run something on your PRs so that
everybody can benefit from that in a centralized way.

334
00:21:28,616 --> 00:21:30,087
We saw several different tools.

335
00:21:30,087 --> 00:21:33,381
The space there is getting a bit crowded it seems.

336
00:21:33,381 --> 00:21:38,728
I think this is very nice to automate also some review systems and to get feedback fast.

337
00:21:39,248 --> 00:21:39,901
Yes.

338
00:21:39,901 --> 00:21:44,686
And one thing I might forgot to say is that I showed you two UI integrations.

339
00:21:44,686 --> 00:21:47,907
So both Sourcery and CodeRabbit here via UI extension.

340
00:21:47,907 --> 00:21:51,580
But for example, CodeRabbit released, a CLI tool.

341
00:21:51,580 --> 00:21:55,543
So you can also use it in the CLI, which makes, for example, I'm also a PyCharm user.

342
00:21:55,543 --> 00:21:57,033
I don't only use Cursor.

343
00:21:57,033 --> 00:22:01,246
And there you don't have an extension for CodeRabbit, so that it becomes a bit more
difficult.

344
00:22:01,246 --> 00:22:04,940
So there I could, for example, use the CLI, which is maybe a nice thing to know.

345
00:22:04,940 --> 00:22:05,943
All right, good.

346
00:22:05,943 --> 00:22:11,523
Hannes, thanks a lot for showing us around in the space of the AI pull request reviewers.

347
00:22:11,523 --> 00:22:12,771
Very happy to do so.

348
00:22:12,771 --> 00:22:14,264
All right, let's wrap it up.

349
00:22:14,264 --> 00:22:15,998
I want to thank everybody for watching.

350
00:22:15,998 --> 00:22:18,032
Thank you all and I hope to see you next time.

351
00:22:18,032 --> 00:22:18,737
Bye bye.

352
00:22:18,737 --> 00:22:19,585
See ya.