WEBVTT

00:00:00.000 --> 00:00:16.085
Over the holiday break, something interesting happened. Anthropic gave you a two x increase in your rate limits on Claude Code. And I decided that I wanted to try my best to hit it. And man, have I had a wild ride. I never thought I'd see the day where I'm running six Claude Code instances in parallel,

00:00:16.405 --> 00:00:18.645
but this is basically my life now.

00:00:18.965 --> 00:00:21.205
I haven't opened an IDE in days.

00:00:21.445 --> 00:00:27.365
I have been building more than I've ever built. And I'm questioning what the future looks like for us as an industry.

00:00:28.090 --> 00:00:37.290
I knew Claude code had improved since I last used it and I knew Opus 4.5 was capable of things that I didn't think were possible using LLMs previously.

00:00:37.450 --> 00:00:52.375
I did not think this would fundamentally change the way that I write code. Over the holiday break, I built two full projects from scratch, a web and mobile app for one of them, did some crazy overhauls to those projects throughout, published a bunch of work for new features in t three chat and just

00:00:52.855 --> 00:00:59.370
configured my entire operating system using Cloud Code. I think it's safe to say at this point in time, I am

00:00:59.770 --> 00:01:41.255
a little Cloud Code pilled, and I wanna share a bit about why. That said, Anthropic is certainly not paying me any money. In fact, I had to bump the $200 a month subscription to do this, so we're gonna do a quick break for somebody who is paying me, today's sponsor. A lot of people say my products are only successful because I'm popular. And they're kind of right, but not for the reason you think. Turns out if you have a bad product and you put it in front of a bunch of people, they don't care. If you have a good product and put it in front of people, they do. But that's the key. You have to have a good product. In order to do that, you need a good team. This is the benefit I have from being popular. I have access to millions of the best engineers in the world. And I don't know how I would build without that, because I remember the days where I was recruiting the old school way, and it was hellish.

00:01:41.335 --> 00:01:46.775
If I didn't have access to the engineers I do, I would certainly be using today's sponsor, G2i.

00:01:46.775 --> 00:02:05.565
These guys know how to hire. In fact, they have placed some of the best people in my community at really cool companies. I've been blown away at the projects that G2I's involving themselves in. Everything from Webflow to 1Password to Facebook themselves. Yes, Meta hires through G2I now. And it makes sense why. They really understand what developers

00:02:05.565 --> 00:02:27.140
need to be successful. They run things like React Miami, the people who work there watch every video that we post, they know how to integrate with your team in a way that doesn't feel like some weird third party arm doing recruiting for you. They're building a platform to help you find the best people for the gig when you need them. It doesn't matter what you're trying to fill, junior, senior, front end, back end, full stack, mobile, data scientist,

00:02:27.220 --> 00:02:49.360
all the above, for all sizes of companies, by the way. If you just got out of your YC batch and you're trying to get a good engineer, don't waste all of your time going through recruitment hell when you can work with a partner like G2i and have a much, much better time. Their goal is to get the first PR in within seven days of joining, and I've seen this happen enough times to believe it. Stop wasting your time hiring, get back to building at soydev.link/t2i.

00:02:49.360 --> 00:02:53.520
I'll admit, this was a demo I just rigged up for the sake of this video.

00:02:53.920 --> 00:02:58.400
I just had a bunch of Cloud Code instances editing pages on my personal site.

00:02:59.215 --> 00:03:03.215
But it's not too too far from how I've been using things in reality.

00:03:03.375 --> 00:03:06.095
I have been making a lot of real work

00:03:06.335 --> 00:03:08.335
and doing a lot of surprisingly

00:03:08.335 --> 00:03:19.630
difficult tasks with Claude Code. I've gone so deep that even Ben is surprised. I'm doing things he didn't think the models were capable of. Just to get us started, I wanna show you guys the main project I cooked throughout break.

00:03:19.950 --> 00:03:22.110
This is my new Image Studio app.

00:03:22.190 --> 00:03:30.365
This is meant to be a prototyping playground to figure out what we want the image generation experience to be like in t three chat. And yes, it's that ImageGen

00:03:30.365 --> 00:03:34.685
mock demo I've been doing all the time. The difference is it's no longer a mock.

00:03:35.450 --> 00:03:40.090
So apparently, I never set up scrolling for the sidebar which is kind of hilarious.

00:03:40.570 --> 00:03:43.850
Normally, my screen's a little higher resolution than it is when I'm filming.

00:03:44.090 --> 00:04:00.285
So I can't actually hit the generation button because I never set up a scroll view here. So I'm just gonna show you how I've been using things. The sidebar in the web app does not allow me to scroll. This means that on small screens, I'm unable to hit the generate button. And now, we wait not even that long,

00:04:00.525 --> 00:04:02.285
and this issue will be fixed.

00:04:02.605 --> 00:04:04.685
You might have noticed I specified web app.

00:04:05.490 --> 00:04:11.170
There's a reason for that. Not only did I build this app as a fully functioning web interface,

00:04:11.570 --> 00:04:19.890
I actually went as far as to make it a mono repo with a mobile app too. And how I did that is possibly even crazier than the fact that I did both.

00:04:20.575 --> 00:04:30.655
We'll get there, don't worry. One of the things of note is that when you start a new session, it doesn't really keep track of any context. You can slash resume to go to an old session ID,

00:04:30.895 --> 00:04:33.615
but if you don't, it has to recontextualize

00:04:33.615 --> 00:05:11.040
its knowledge of the code base. It's actually been really nice to be in a long running thread where I just tell it to do something else and it knows enough from previously to know where to start. I no longer find myself clearing the history and starting a new chat thread for every single thing I do when I'm doing agent decoding with Cloud Code. Especially if it has a pretty good idea of where things are in a code base for a medium sized project like this. To be fair, the implementations on any of the pieces of this project are still relatively small, but the amount of service area there is to cover now across the multiple packages is actually quite reasonable, especially considering the fact that I have yet to open an IDE for this project.

00:05:11.920 --> 00:05:18.640
Forgot to turn on bypass permissions because I'm running it aloud dangerously now. That's the point I'm at in life. Unrun dev.

00:05:19.695 --> 00:05:22.255
Oh, it does not appear to have worked.

00:05:22.655 --> 00:05:30.575
When I try and scroll on the sidebar, it attempts to do a whole page scroll, which doesn't work because the only scroll container currently functioning

00:05:30.575 --> 00:05:32.255
is the scroll container for the grid.

00:05:32.830 --> 00:05:36.750
I think we need a different approach to make scrolling work properly on the sidebar.

00:05:37.230 --> 00:05:43.790
Of course, the thing isn't working the way it does almost always when I am using it, when I am now here trying to film.

00:05:44.190 --> 00:05:48.110
Chat making a very good point that this alone just disqualified new vibe coders.

00:05:48.625 --> 00:05:49.265
Yeah.

00:05:49.665 --> 00:05:54.625
This is still the problem. And I wanna make sure that when I do content about this stuff, that I emphasize this point.

00:05:54.945 --> 00:06:03.000
These tools are significantly better if you already know how to code. Their strengths are much weaker if you don't yet. But now that I've made this one specification,

00:06:03.000 --> 00:06:06.520
it was able to make the right changes and get this all working as expected.

00:06:06.840 --> 00:06:14.840
Awesome. Sidebar form fields now scroll independently when the generate button stays fixed at the bottom, and I will command minus a bunch to make sure it goes away when it's zoomed out enough. It does.

00:06:15.240 --> 00:06:15.640
Awesome.

00:06:16.585 --> 00:06:27.225
So now that we know this all is working as expected, I sure, we'll do 16 by nine. Why not? Standard resolution because some of these models don't support high res. Actually, if I turn off Nano Banana, we can do high res. Generate.

00:06:27.465 --> 00:06:31.145
And now we have three models separately generating images

00:06:31.305 --> 00:06:51.515
for this random test I wanted to do. Of course, the back end is all through Convex. You guys know, I've been loving Convex. Front end is a standard v tail end app. All of the UI was done by Claude. We had a lot of back and forth. This is rendition like five or six, like full UI overhauls Because those types of things are surprisingly easy to do with a tool like ClaudeCode.

00:06:51.515 --> 00:07:04.340
If you just spin up a few work trees, throw Claude in them, and tell it, you can even copy paste the exact same prompt, like, want to redesign this homepage. Something stupid I have been doing recently is having it spin up three different routes

00:07:04.580 --> 00:07:48.655
with the exact same feature, like slash one, slash two, slash three, then I go and compare them and tell them, I like this in route one, but there are some things I like about route two and three. Can we bring these ideas over but focus on the design from route one? And it handles this stuff incredibly well. And good point, Chad, I did also use Chad CN. Chad CN has made my life much easier. By the way, if you like these types of exploratory videos about how the dev world is changing and how my own development work is changing, love doing this type of content, and one of the best signals for the team that you like this is to hit that subscribe button. Less than half of y'all are subscribed, we're so close to hitting 500 k. So if you don't mind, hit that button, helps us out a lot. But let's pick one of these that we like. This looks good enough. Obviously, arrow navigation works plenty, but I didn't even need to tell it to do that. It just did.

00:07:48.895 --> 00:08:04.550
Sea Dream did not honor the aspect ratio I gave it. That's a good thing to know. Banana Banana Pro did. Let's do one of the features I was most excited about here. You can't see this button, but there's a little chat icon right there because any picture you generate in this app can become a conversation.

00:08:04.950 --> 00:08:16.985
Let's say we specifically want Nano Banana Pro and Sea Dream to do this. Replace the sea lion with a corgi. And now we have a chat interface for follow ups.

00:08:17.225 --> 00:08:31.440
Of course, image generation models still aren't the fastest thing, but they're more than fast enough. And here we are. We made a new generation with a corgi. Still one click to download if you wanna do that. We can zoom in and see him if we wanna get better look. Not bad. How's this one?

00:08:31.920 --> 00:08:42.320
I like this one more. So we'll pick the Nano Banana one, and we will do one more follow-up. In this follow-up, I will tell it to, I don't know, change the text to say

00:08:42.640 --> 00:08:43.440
Corgeco.

00:08:43.965 --> 00:08:58.110
I'll be more specific. On the sign. This has been a super fun side project both for playing around with Cloud Code and trying to push its limits, but also for playing around with new UX flows. I wanted to see how it would feel to have a two style view, where we hop between

00:08:58.190 --> 00:09:11.310
a gallery view and a chat view. I was just really curious how it would feel to use a UI like this. And I'm finding that for the most part, it's really good. There are catches. There are always catches. But I am actually overall quite enjoying this experience.

00:09:11.965 --> 00:09:13.165
Especially because,

00:09:13.405 --> 00:09:22.445
thanks to Convex, not only does it sync fully, it syncs fully with the mobile app. I wanna show you guys some of the most absurd prompts I've run-in my life,

00:09:22.765 --> 00:09:24.205
because I did not think this would work.

00:09:24.860 --> 00:09:27.900
Here is a real prompt that I sent to Claude Code.

00:09:28.460 --> 00:09:34.460
I wanna turn this project into a mono repo with the current web app and a React Native mobile application.

00:09:34.940 --> 00:09:50.910
For the mobile app, use the following stack. Expo, React Native, Expo Router, TypeScript, Bun, Uniwind for tailwind bindings, and Convex using existing Convex bindings. We only care about iOS for now, so don't put meaningful effort into multi platform support. Ideally,

00:09:50.910 --> 00:09:54.830
the convex bindings and definitions will be shared between projects.

00:09:54.910 --> 00:09:59.710
Use TurboRepo for managing the mono repo and sub packages. Write a thorough plan.

00:10:00.110 --> 00:10:03.070
This was meant to be a task it could not complete.

00:10:03.995 --> 00:10:08.235
I got here because I am now convinced there are very few tasks

00:10:08.315 --> 00:10:10.635
Opus in the right harness cannot complete.

00:10:10.955 --> 00:10:20.180
I mostly did this as a joke. I was planning on taking a screenshot of this prompt and posting it on Twitter saying, l o l, nothing can possibly do this.

00:10:20.580 --> 00:10:22.020
And then it did.

00:10:22.660 --> 00:10:23.380
Yeah.

00:10:23.860 --> 00:10:27.220
This run took over an hour, if I recall correctly.

00:10:27.700 --> 00:10:30.500
The plan took, like, twenty minutes by itself.

00:10:31.435 --> 00:10:35.195
Can I go to this plan? Look at that. The plan is still saved.

00:10:36.075 --> 00:10:37.435
This is just the

00:10:37.835 --> 00:10:39.915
mobile app feature implementation.

00:10:39.915 --> 00:10:41.115
Is there a

00:10:41.755 --> 00:11:01.915
or maybe it, like, overrode this at some point? Yeah. I think it overrode this at some point. So the history here is the right one. Convert the current web into a Turbo repo monorepo with a new Expo React Native mobile app sharing the Convex back end. You have apps, web mobile, packages, back end shared, TypeScript config for sharing TypeScript config stuff between things, turbo JSON, package JSON, and pmrc.

00:11:02.315 --> 00:11:04.395
It had names for all the new packages,

00:11:04.795 --> 00:11:07.995
designed the foundation with a root workspace config,

00:11:08.475 --> 00:11:14.770
and pmrc in order to handle the weirdness that is how packages are linked between things in node and mono repos,

00:11:15.490 --> 00:11:20.290
created the different packages that needed to, moved things over to app slash web,

00:11:20.690 --> 00:11:23.810
even calls out critical files it's gonna have to modify and change.

00:11:24.130 --> 00:11:26.450
Phase two, it extracted the shared packages.

00:11:26.945 --> 00:11:39.585
You get the idea. I wrote a very thorough plan. I gave it a really quick once over. I don't even think I told it to change anything else, if I recall. I think I just said do it. Looks from here like that's exactly what happened.

00:11:40.065 --> 00:11:41.265
And then it just ran.

00:11:42.530 --> 00:11:43.650
And it ran.

00:11:44.690 --> 00:11:45.730
And it ran.

00:11:46.210 --> 00:11:54.050
It even remembered to use its front end design skill, which, by the way, is just a markdown file saying don't make it look like AI Slop. It tried running bun install,

00:11:54.210 --> 00:11:55.330
it got errors,

00:11:55.730 --> 00:11:57.330
it went and fixed a bunch of the versions,

00:11:58.185 --> 00:12:00.505
It updated the package JSON accordingly.

00:12:00.745 --> 00:12:06.345
It still got errors. It went and fixed more things. Then it stopped getting errors when it tried to build.

00:12:07.385 --> 00:12:10.985
It moved from Uniwind to Nativewind at some point because it was having problems with Uniwind.

00:12:11.510 --> 00:12:19.110
But it just kept going. Noticed more mistakes with how it was calling the APIs. I need to fix the mobile app to use the correct API functions. Let me update the home screen.

00:12:19.510 --> 00:12:20.710
And then suddenly,

00:12:20.950 --> 00:12:21.910
it was done.

00:12:22.390 --> 00:12:25.910
The mono repo conversion is complete. Here's a summary of what was done.

00:12:26.310 --> 00:12:26.630
Yeah.

00:12:27.235 --> 00:12:27.875
Yeah.

00:12:28.595 --> 00:12:32.595
To be fair, the mobile repo had a good number of problems.

00:12:33.235 --> 00:12:34.035
Specifically,

00:12:34.035 --> 00:12:35.475
the convex URL

00:12:35.555 --> 00:12:45.530
was not loading into the mobile app properly. It also did a bad job of copying over my environment variables, both because I had changed to a mono repo and to a workspace,

00:12:45.610 --> 00:12:53.850
which is the JJ equivalent of a work tree, at the same time as I did this. So I just kinda lost track of environment variables, did a tiny bit of moving files around in Finder to fix that.

00:12:55.305 --> 00:12:59.625
Then I kept hitting weird server side errors that apparently were from native wind.

00:13:01.065 --> 00:13:09.865
Apparently, messages are missing from the history. They're not really great about history with this stuff. So I'm just gonna show you guys the PR. Here is the mobile mono repo PR.

00:13:10.200 --> 00:13:13.000
The thing that was craziest to me was this.

00:13:13.800 --> 00:13:19.320
GREPTILE did a review of this PR and gave it a five out of five confidence score the first try,

00:13:19.960 --> 00:13:22.200
which I just didn't think made any sense.

00:13:22.520 --> 00:13:25.640
Called out some places where there were duplicate imports but didn't really matter.

00:13:26.725 --> 00:13:30.245
And this is a huge PR. That's 2,300

00:13:30.245 --> 00:13:32.325
lines added and 400 removed.

00:13:33.045 --> 00:13:48.290
It was able to break up one project into five packages with a somewhat complex turbo repo setup with no issues and add a mobile app. There was a slight problem with it adding the mobile app though, which is that it ran the expo init command, which by default includes git,

00:13:48.690 --> 00:13:57.170
which caused a sub git tree to exist and JJ just ignored it. So I actually forgot to include the mobile app in this when I merged it,

00:13:57.865 --> 00:14:02.985
Which shows you how thoroughly I was reviewing the code. I didn't even notice that the app was missing.

00:14:03.225 --> 00:14:18.620
This ended up bothering me much later as I was trying to do other things with WorkTrees and the mobile app was missing when I did it. Again, turns out I had forgotten that. Ended up asking Claude for help with JJ, fixed my history because again, JJ just doesn't give a fuck. You can go edit your history. It's so nice.

00:14:19.260 --> 00:14:22.780
And then re added the mobile app on a separate branch,

00:14:23.100 --> 00:14:27.185
asked Scriptile to review again, and again, got a perfect fucking score.

00:14:27.425 --> 00:14:39.740
My hand rolled changes that are like 200 lines of code usually get like a three out of five. And I was hitting fives out of fives constantly with the changes that Opus was making. Now, is GREPTILE going to be the objective perfect

00:14:39.740 --> 00:14:48.700
way to review code? It's saying five here and three there means that this is better than that? No. But it is fucking fascinating to see. And if you look through the code,

00:14:50.855 --> 00:14:57.975
that all makes sense. Maybe a thousand line of code TSX file isn't the greatest thing in the world, but welcome to React dev.

00:14:59.575 --> 00:15:02.615
We have all the mutations for all the things that we are doing in a thread.

00:15:04.710 --> 00:15:10.550
A timeout that will help with the scroll to end, that all makes sense. My god, the GitHub UI is obnoxious.

00:15:12.950 --> 00:15:17.830
It didn't quite get the keyboard avoiding view properly, but it wasn't too far off either.

00:15:18.605 --> 00:15:19.565
But honestly,

00:15:19.805 --> 00:15:21.325
I can just show you guys.

00:15:21.725 --> 00:15:26.845
I should use another mobile phone for this, but I'm dumb. So let's just do it.

00:15:27.245 --> 00:15:31.005
And here we are, the mobile version. MacOS's

00:15:31.085 --> 00:15:33.725
mobile share thing is really annoying with resolutions,

00:15:34.470 --> 00:15:43.350
but we have the mobile app and it works. And since, again, we were using Convex, everything stays in sync. So if I go and create a new gen here,

00:15:44.710 --> 00:15:46.070
two corgis

00:15:46.070 --> 00:15:49.830
sharing an ice cream cone, and I hit gen here,

00:15:51.085 --> 00:15:53.325
it syncs with the web UI as well,

00:15:53.725 --> 00:16:08.010
with no special anything. I didn't tell the model to do this. This is just Convex, which is another one of those things that has fundamentally changed how I build. But one of the things that makes all of this so powerful is that Convex is just a folder in the code base that you configure,

00:16:08.250 --> 00:16:14.010
which means the models that need some crazy MCP bullshit to go change settings in a dashboard, it just edits the folder.

00:16:14.330 --> 00:16:27.845
You get the idea, though. This is a full functioning mobile app that's a lot less laggy on my phone. It's actually been pleasant. Like, I've been using this to do random image gen for some work stuff. The hardest parts of this project by far

00:16:28.005 --> 00:16:35.090
were dealing with GCP and the Google Cloud dashboard to get the tokens I needed to do off, and then configuring

00:16:35.090 --> 00:16:36.770
Clerk, Convex,

00:16:37.250 --> 00:16:42.530
and all of the Vercel stuff to handle build and deployment properly for a productionized version.

00:16:43.025 --> 00:16:52.625
The thing that was hard for this was getting it into prod because I had to fight all of these legacy dashboards and tools and things. Everything else

00:16:52.945 --> 00:17:02.010
was super smooth. Even other annoying bullshit like implementing auth, which even with the best tools, even with things like Clarke and WorkOS,

00:17:02.330 --> 00:17:25.115
is not the easiest thing, especially when you have multiple platforms and three different packages in your code base that need to have auth added. I need it in the mobile app, I need it in the web app, and I need it in Convex in a way that convex functions know the user is off and they know who the user is. All of these layers are annoying to get right, even on a good day, and it just did it. It's another 1,800 lines of code added,

00:17:25.275 --> 00:17:29.330
but it did it and got another five out of five confidence score.

00:17:29.490 --> 00:17:30.690
So I merged it.

00:17:30.930 --> 00:17:36.770
Would I put this code in front of all of our users for t three chat without a more thorough audit? Absolutely not. But

00:17:37.250 --> 00:17:41.090
is it worth talking about the fact that I was able to, from scratch,

00:17:41.835 --> 00:17:45.675
build all of this without opening an IDE a single fucking time?

00:17:45.915 --> 00:17:49.835
I think that's worth talking about. That's 11,900

00:17:49.835 --> 00:17:50.875
lines of code.

00:17:51.275 --> 00:18:00.920
That's a real code base. That's not a massive code base, but that's a that's a real code base. And this entire thing was generated on the $200 tier of Claude code.

00:18:01.320 --> 00:18:06.840
That's just absurd if you think about it. This isn't just tab complete in our editors.

00:18:06.920 --> 00:18:08.200
This isn't just like,

00:18:08.745 --> 00:18:12.025
go change these three files for me or deprecate this thing.

00:18:12.425 --> 00:18:16.585
This is a fundamental change in how I think about writing code.

00:18:17.145 --> 00:18:24.830
And also a bit of a change on how I think about using my computer. We'll get to that in a sec. But I wanna show one other project I built using all of this.

00:18:25.230 --> 00:18:31.550
One of the problems I have with Cloud Code and tools like it is now that I'm running these jobs that can take forty five minutes to multiple hours,

00:18:31.950 --> 00:18:33.630
I find myself getting distracted.

00:18:33.950 --> 00:18:43.615
And then I don't go back when the work is done, and I don't wanna set up some audio queue or some shit. Even if I did, I don't have the discipline. I'm just gonna browse Twitter, which is why I made an extension.

00:18:44.095 --> 00:18:52.630
That locks me out of Twitter unless I have work going in one of my Cloud Code terminals. I'll ask it to make the UI look better, just some bullshit busy work.

00:18:52.950 --> 00:18:58.950
And now my Twitter's unlocked, and I can once again see my tweet where I complain to the Cloud Code team that I can't hide my email address.

00:18:59.830 --> 00:19:03.190
But as soon as the work is done, I will be locked out of Twitter again.

00:19:04.045 --> 00:19:06.365
This has been a weirdly powerful

00:19:06.445 --> 00:19:08.205
boost to my productivity.

00:19:08.445 --> 00:19:13.405
And I have also not opened up an IDE to look at the code for this project at any point.

00:19:13.805 --> 00:19:15.485
Do I look at it on GitHub sometimes?

00:19:16.150 --> 00:19:17.670
A little. Not much.

00:19:17.910 --> 00:19:27.510
Would I trust this code with my life? No. Not at all. But is it a fun side project that I had an idea for that I was able to build in half an hour instead of a day? Yeah.

00:19:27.990 --> 00:19:43.760
That's what's cool here. It's changing whether or not I'm willing to make a project, not whether or not I'm capable. I was always capable of building things like this. I'm not doing things I couldn't do before. I'm doing things that I didn't bother doing before. Because suddenly,

00:19:43.920 --> 00:19:48.640
they are so much easier to do. Who wish UI service do I wanna improve?

00:19:49.520 --> 00:19:52.240
Never mind. I like it as is.

00:19:52.720 --> 00:19:53.520
Nah.

00:19:54.400 --> 00:20:22.500
And now it's done, and I'm back to locked out of Twitter. That's cool. The fact that I hacked this together in, thirty minutes of work where I was doing other things and working on the mobile app at the same time, that's really cool. I had two of these Claude code instances running for the mobile app, and then one running for this project all at the same time, And would constantly get kicked out of Twitter when I went to talk about it and ask people questions, because when all of the jobs ended, I would get booted. This was such a fun little thing to build. This one's open source, by the way.

00:20:22.980 --> 00:20:31.165
Claude Blocker is live on GitHub if you want to play with it. I've already submitted it to the Chrome web Store so we can get the extension out ASAP. Those take a while to get reviewed, especially when you have more

00:20:31.565 --> 00:20:35.725
grandiose permissions because you need access to tabs to do things to pages.

00:20:36.045 --> 00:20:41.085
But I could do it. I could do it without much effort. I put this whole thing together without much time spent.

00:20:41.560 --> 00:20:51.000
People are already making changes to it, which is really cool. But man, like, this type of thing was stuff that I would maybe do if I had a lot of free time sometimes.

00:20:51.240 --> 00:21:00.625
And I really wanna emphasize this point, like, these tools aren't just good for making your job simpler or trying to like do work that is tickets from Jira or whatever.

00:21:00.785 --> 00:21:50.690
The thing that's really fun for me with AI code is that there are all of these ideas and vague things that I like could have done. Like I could have built an app that was just to parse my Notion history, which I did today. I have a different file in Notion for every month where I log every day what I did that day. And I wanted it all to be in one file so I could hand it to LMs to make them judge me and roast me. Just getting all of the content out of those in order was annoying. So I put them in a directory, I opened Cloud Code, I said make these one file, and it wrote scripts to run and make the changes to make it one file. These are all things I could do before. I knew how to write all of this code. But if I was going to spend certain amount of time in a day writing code, it was more important that that time went to projects that mattered, and I didn't have as much left over to do fun side projects. And if I did, I would pick the single biggest most fun side project,

00:21:50.930 --> 00:21:59.495
not dozens of them. Now I find myself spinning up random projects all of the time. And sometimes I find myself using Cloud Code for things that aren't even projects.

00:21:59.655 --> 00:22:02.695
Remember that thing I said earlier about the way I use my computer change?

00:22:02.855 --> 00:22:04.295
Let's just look at some examples.

00:22:05.530 --> 00:22:13.290
I need you to update my JJ config to sign commits the same way that my git config does. This one, I think I had multiple messages for.

00:22:14.410 --> 00:22:17.690
I guess it's just not restoring properly.

00:22:17.850 --> 00:22:21.565
That is really annoying. It seems like resume is just kinda broken.

00:22:21.965 --> 00:22:22.685
Whatever.

00:22:23.085 --> 00:22:39.200
The thing I wanted to show is that I was able to update my JJ config to fix my commit signing by asking it to, and then it did. I was able to add a new script to my z shell that was a script that will automatically break something out into a work tree, change to that directory,

00:22:39.440 --> 00:22:44.560
and copy over all of my ENV files from that project by just asking it to do that.

00:22:44.880 --> 00:22:50.855
I'm not just asking Claude Code to edit files in a code base and occasionally search the web for more context.

00:22:51.015 --> 00:23:04.560
I'm asking it to use my computer and make changes to my setup in my environment the way I normally would between like five different tabs, a bunch of searching, a bunch of trial and error, or I can just tell Claude Code to do it and go grab a tea. It's unbelievable.

00:23:05.600 --> 00:23:09.200
There are so many things that just didn't make sense for me before,

00:23:09.360 --> 00:23:14.000
be it a new side project, be it a weird extension I wanna build, be it configuration

00:23:14.000 --> 00:23:23.705
changes I wanna make to my system, be it the move to JJ instead of Git, where I'm starting to move off of Git as my default, like, CLI and way of managing repositories,

00:23:24.025 --> 00:23:27.225
these types of things weren't as viable before,

00:23:27.545 --> 00:23:37.620
and now with things like ClaudeCode, they are suddenly much more viable. If you're still new to tools like this, I won't necessarily recommend that you do what I'm about to show you immediately.

00:23:37.860 --> 00:23:43.220
Definitely keep it in the standard prompt you for edits mode, then when you have the confidence, switch over to auto accept edits.

00:23:43.460 --> 00:23:57.015
And then, after you've done this for a while and you've let it run commands that edit your system, change things, and take risks maybe a little more than you expected, and were surprised with the results, like I and many others have been, you can switch over to allow dangerously.

00:23:57.590 --> 00:24:01.430
I understand why they hide it. I understand why they are so strict about this.

00:24:01.830 --> 00:24:03.830
But allow dangerously skip permissions,

00:24:04.150 --> 00:24:05.270
it's so fun.

00:24:05.750 --> 00:24:14.525
It's genuinely so fun. I admittedly have a bias here, which is that if I end up being one of those people where Claude randomly nukes my home folder,

00:24:14.685 --> 00:24:31.280
I get really good content out of that. If that happens to you, you probably don't have benefits. It probably just sucks. If that happens to me, it'd be one of the greatest days of my life. I could make so much good content about that. But it probably won't. But it could. But I'm also doing a few things to prevent it, because I wanna do my best.

00:24:31.680 --> 00:24:39.520
Due to a series of unfortunate events on Twitter I do not feel like going into, I was made aware of this new project, the Claude Code Safety Net.

00:24:40.095 --> 00:24:51.215
This is a plugin that you can add to ClaudeCode. Shout out Daisy for the plugin system. It's awesome, one of the coolest things about it. It's a ClaudeCode plugin that acts as a safety net, catching destructive git and file system commands before they execute.

00:24:51.455 --> 00:24:55.775
So if the model decides to do some crazy shit with git or some crazy shit with rm,

00:24:55.855 --> 00:24:58.710
it will prevent it from doing that and give you one last

00:24:58.870 --> 00:25:03.670
check to the user even when it's in the dangerously modes. Will this catch everything?

00:25:03.830 --> 00:25:24.725
Absolutely not. You could still write a bash file and then put it in your system and then execute it that does those things, and it can and it will, the models love to try and work around the restrictions they have. If they can't edit a file by using the edit tool, they will run a bash script to edit it instead. If they can't do that, they'll run a Perl script to do it instead. The models are very, very

00:25:25.440 --> 00:25:30.720
weirdly willing to work around the restrictions you give them. So know that this will never be perfect.

00:25:31.040 --> 00:25:40.755
But again, for my risk profile and the things that I'm concerned about, the combination of the Cloud Code Safety Net plugin and my own traditional usage of ClaudeCode

00:25:40.755 --> 00:25:42.275
in AllowDangerously

00:25:42.275 --> 00:25:44.675
has not come close to causing me any problems.

00:25:44.995 --> 00:25:46.115
I've been impressed.

00:25:46.435 --> 00:25:51.875
This has been a wild deep dive over the last two weeks, and I don't know

00:25:52.195 --> 00:26:25.045
how it's going to affect the way I code long term. Obviously, I still love Cursor. I still have my investments there, so account for the biases accordingly. When I actually want to see the code and do my job as an engineer, not just dick around with a lot of different things and ideas, I still very much like using a tool such as Cursor. And when the code base already exists and has things going on in it, and I'm working in a code base as my job, Cursor's whole agentic environment is still something I really enjoy. But when I'm experimenting, when I'm screwing with my system, when I am in some crazy greenfield thing,

00:26:25.580 --> 00:26:57.570
I just wanna let something run-in the background for an hour on some crazy task, I've been impressed with Cloud Code. Now, there's two questions I know are already swarming in the comments section because the people who are asking these probably didn't watch till the end. Sorry to them. Question one. What about OpenCode? OpenCode's really good. Not gonna pretend otherwise. I wanted to try out the new Cloud Code updates in the new Cloud Code subscription tier in the way that a lot of people have been using it, because I haven't really had the Cloud Code clicked for me moment yet. And this is what pushed me over the edge. It's a combination of Opus 4.5 being an unbelievably smart model,

00:26:57.890 --> 00:27:04.610
and the harness getting mature enough that it's in a really good spot. OpenCode is still the best option for almost every model.

00:27:05.225 --> 00:27:25.010
And it probably is almost as good when using Opus. And they also have a way that you could use your Cloud Code subscription, and Open Code is a bit hacky, but it seems to work fine. I just didn't feel like dealing with any of that. I'll evaluate it more in the near future. And now the next question, which is the Ralph Loop. This website is questionable. I'm assuming it was made by a model that was not given the

00:27:25.410 --> 00:27:26.850
front end design skill.

00:27:27.330 --> 00:27:39.735
That said, if you're not familiar with Ralph Wiggum, he's a character from Simpsons. Also, hi, Gen Z. Good to see you guys. I know everybody else is familiar with The Simpsons. The point of the Ralph Wiggum loop is to let Claude code continuously

00:27:40.055 --> 00:27:56.590
keep working even when it thinks it's done until some higher order, this is probably done, gets hit. Also, Miles decided to come say hi. Now that I am doing more vibe coding, I spend a lot more time petting my cat when I'm coding. So he now assumes when I'm working on code

00:27:57.550 --> 00:27:59.230
that it's cat petting time.

00:27:59.870 --> 00:28:01.630
You like Claude code a lot, don't you, buddy?

00:28:02.745 --> 00:28:06.425
He prefers Codex because it's so much slower, so I get more time to pet him.

00:28:07.785 --> 00:28:09.865
Aw. He's being so cute.

00:28:10.185 --> 00:28:24.800
Anyways, as I was saying, Ralph is a bash loop. This is a way to run Claude code and keep running Claude code even when it stops and asks, are you sure or do you want me to reconsider this or I finished phase one, should I start phase two?

00:28:25.120 --> 00:28:30.640
Just run-in a bash loop and keep telling it continue, continue, continue until eventually it actually finishes.

00:28:30.800 --> 00:28:31.680
It's a fun strategy.

00:28:32.125 --> 00:29:01.385
Personally, I found that Claude code is pretty willing to just go for an hour or two without being told, it's okay, you can continue. I've had one time total thus far, where it would stop after each phase and I'd be like, no, keep working, please. No, keep working, please, over and over. But only once ever did I hit that, and it was actually a pretty short run. Like, that whole run only took five to ten minutes. But I've had other ones that took an hour and didn't stop at any point. So I still personally don't know how necessary this is. But believe me,

00:29:01.705 --> 00:29:04.985
the Ralph loop is something I very much have planned.

00:29:05.225 --> 00:29:05.785
So

00:29:06.265 --> 00:29:20.520
if you don't see a video about the Ralph loop from me soon, know that I wasn't impressed enough or didn't find it interesting enough to do one. But if you are interested in this, keep an eye out. I will almost certainly be talking about it. I think that's everything I had to say here. I'm impressed.

00:29:20.840 --> 00:29:26.040
Claude Code's gotten a lot better. I have my complaints. Like, the hooks still suck and feel half finished.

00:29:26.495 --> 00:29:31.455
Plug ins are awesome, but don't have all the functionality I need to be able to rely on them directly.

00:29:31.695 --> 00:29:34.575
Skills are kind of a joke. They're literally just markdown files.

00:29:34.655 --> 00:29:40.815
There's a lot of little UX things like the way stashing works sucks. If you wanna change things after you wrote your prompt, you're screwed.

00:29:41.410 --> 00:29:53.730
Context compaction feels really strange still. The way history management works and the way picture uploads work is still jank as hell. There's lots of little places it can improve. I don't want this to seem like it's just this perfect magical solution.

00:29:53.890 --> 00:29:54.530
But goddamn,

00:29:55.595 --> 00:29:57.595
I have been able to do a lot with this.

00:29:57.915 --> 00:29:59.435
And I've been really impressed.

00:29:59.835 --> 00:30:02.075
And one actual last thing,

00:30:02.315 --> 00:30:07.195
my usage. Remember, I was on the $200 a month tier with the two x limits.

00:30:07.435 --> 00:30:12.530
I did manage to hit the limit on the $20 tier. I considered going to the five x, which is $50.01,

00:30:12.530 --> 00:30:15.410
and then up to the $200.20

00:30:15.410 --> 00:30:29.525
x one. But I decided to just go all the way and see how much I could use. Like, I was going out of my way. I was running two or three of these in parallel during most of my waking hours. I want you all to guest chat mostly between like 1390%,

00:30:29.525 --> 00:30:31.125
some people with some jokes.

00:30:31.605 --> 00:30:35.045
You can't really know your usage and they work really hard to hide it.

00:30:35.365 --> 00:30:37.605
But if we look at the dashboard,

00:30:38.245 --> 00:30:40.245
you'll see that my weekly limit,

00:30:41.100 --> 00:30:43.500
I'm at about 2% of my usage.

00:30:43.660 --> 00:30:49.580
So this just reset. So that one being 2% makes sense. But this top level one, my plan usage,

00:30:49.820 --> 00:30:50.860
which resets

00:30:50.860 --> 00:30:53.580
thirty four minutes for this session, 12%.

00:30:54.085 --> 00:30:59.525
And the highest I managed to get in my weekly limit last week was 7%.

00:31:00.005 --> 00:31:01.205
7%

00:31:01.525 --> 00:31:05.765
going as hard as I could. Take off that two x and I was 14%

00:31:06.005 --> 00:31:06.725
for the week.

00:31:07.690 --> 00:31:11.050
From my napkin math from the tokens I was able to log,

00:31:11.210 --> 00:31:13.210
I did about $1,500

00:31:13.210 --> 00:31:14.730
of inference in that time.

00:31:15.050 --> 00:31:16.330
I paid $200

00:31:16.330 --> 00:31:27.195
and I got 1,500 out. As a user, I love this. That is a really good deal. As a company also selling inference that pays API pricing for a lot of Anthropix

00:31:27.195 --> 00:31:28.155
APIs,

00:31:28.555 --> 00:31:30.715
I am pissed that I'm subsidizing this.

00:31:31.035 --> 00:31:35.515
The reason these subscriptions can give you 10 x the inference you pay for

00:31:35.970 --> 00:31:40.210
is because they are subsidized by people like me paying full price over API.

00:31:40.610 --> 00:31:42.130
So on one hand,

00:31:42.370 --> 00:31:47.010
cool. I love using this. On the other, you're welcome, you ungrateful bastards.

00:31:47.170 --> 00:31:47.570
God.

00:31:48.445 --> 00:31:55.085
So much clicked over the last few weeks for me. I I have a whole different world view, a whole different view on how

00:31:55.325 --> 00:31:57.085
code works and where it's all going,

00:31:57.725 --> 00:31:59.485
and why people like Claude code so much.

00:32:02.100 --> 00:32:06.500
I got nothing else. I hope you enjoyed this, this descent into chaos.

00:32:09.220 --> 00:32:15.675
Let me know what you guys think, and if Claude Code is driving you mad as well. Hope this was useful. But until next time, peace nerds.
