Month: December 2025

  • Claude is kind of good

    Claude is kind of good

    Image credit @fireship / TheCodeReport on YT.

    A few months ago I wrote about how Claude failed to build a simple macOS menu bar application. After burning through $5 in API credits and multiple sessions, it eventually gave up and suggested I reset my NVRAM. GPT-4o built it on the first try.

    I still think that critique was fair. But I’ve started using Claude Code for the past few weeks after all the opus 4.5 hype, and I need to update my assessment: Claude is actually pretty good.

    I used it to re-write crapslesscraps.com from scratch, and I am very pleased with the results. Here is the before & after:

    Before

    Screenshot of the Crapless Craps game interface, displaying a virtual betting table, current bank amount, and options to roll dice. The table features various betting options with a vibrant green background.

    After

    Screenshot of the Crapless Craps game interface showing the betting options and game controls.

    In addition to looking way better, I went from this insanely complex project for something so simple:

    .
    ├── assets
    │   └── initial.png
    ├── eslint.config.mjs
    ├── next-env.d.ts
    ├── next.config.ts
    ├── out
    │   ├── _next
    │   │   ├── qZpjdeMzF2EBa0T0miGAH
    │   │   └── static
    │   │       ├── chunks
    │   │       │   ├── 4bd1b696-1962bfe149af46cd.js
    │   │       │   ├── 684-80ddbd5c2fee50a3.js
    │   │       │   ├── 748-170506f584844847.js
    │   │       │   ├── app
    │   │       │   │   ├── _not-found
    │   │       │   │   │   └── page-6bf1735bae9e04ee.js
    │   │       │   │   ├── layout-bb587b94ee6256a7.js
    │   │       │   │   └── page-b1329367083c88ad.js
    │   │       │   ├── framework-f593a28cde54158e.js
    │   │       │   ├── main-477a2845a0a3ba6c.js
    │   │       │   ├── main-app-cb108c2984af81c8.js
    │   │       │   ├── pages
    │   │       │   │   ├── _app-da15c11dea942c36.js
    │   │       │   │   └── _error-cc3f077a18ea1793.js
    │   │       │   ├── polyfills-42372ed130431b0a.js
    │   │       │   └── webpack-f029a09104d09cbc.js
    │   │       ├── css
    │   │       │   └── 643c490fd7af8faf.css
    │   │       ├── media
    │   │       │   ├── 4cf2300e9c8272f7-s.p.woff2
    │   │       │   ├── 747892c23ea88013-s.woff2
    │   │       │   ├── 8d697b304b401681-s.woff2
    │   │       │   ├── 93f479601ee12b01-s.p.woff2
    │   │       │   ├── 9610d9e46709d722-s.woff2
    │   │       │   └── ba015fad6dcf6784-s.woff2
    │   │       └── qZpjdeMzF2EBa0T0miGAH
    │   │           ├── _buildManifest.js
    │   │           └── _ssgManifest.js
    │   ├── 404
    │   │   └── index.html
    │   ├── 404.html
    │   ├── about.txt
    │   ├── android-chrome-192x192.png
    │   ├── android-chrome-512x512.png
    │   ├── apple-touch-icon.png
    │   ├── favicon-16x16.png
    │   ├── favicon-32x32.png
    │   ├── favicon.ico
    │   ├── file.svg
    │   ├── globe.svg
    │   ├── icon.svg
    │   ├── index.html
    │   ├── index.txt
    │   ├── next.svg
    │   ├── playonlinefree.png
    │   ├── site.webmanifest
    │   ├── vercel.svg
    │   └── window.svg
    ├── package-lock.json
    ├── package.json
    ├── postcss.config.mjs
    ├── public
    │   ├── about.txt
    │   ├── android-chrome-192x192.png
    │   ├── android-chrome-512x512.png
    │   ├── apple-touch-icon.png
    │   ├── favicon-16x16.png
    │   ├── favicon-32x32.png
    │   ├── favicon.ico
    │   ├── file.svg
    │   ├── globe.svg
    │   ├── icon.svg
    │   ├── next.svg
    │   ├── playonlinefree.png
    │   ├── site.webmanifest
    │   ├── vercel.svg
    │   └── window.svg
    ├── README.md
    ├── src
    │   ├── app
    │   │   ├── globals.css
    │   │   ├── layout.tsx
    │   │   └── page.tsx
    │   ├── components
    │   │   ├── AnimatedBankroll.tsx
    │   │   ├── AuthenticCrapsTable.tsx
    │   │   ├── ChipClearAnimation.tsx
    │   │   ├── CrapsTable.tsx
    │   │   ├── DiceAnimation.tsx
    │   │   └── WinDisplay.tsx
    │   ├── contexts
    │   │   └── UserContext.tsx
    │   └── lib
    │       ├── game-logic.ts
    │       └── sound-manager.ts
    ├── tsconfig.json
    └── tsconfig.tsbuildinfo
    
    20 directories, 79 files

    ^ that’s before node_modules which added an additional 1949 directories and 22,781 files (lol):

    1969 directories, 22860 files

    to this:

    .
    ├── favicon.ico
    ├── index.html
    ├── public
    │   ├── apple-touch-icon.png
    │   ├── favicon-16x16.png
    │   ├── favicon-32x32.png
    │   ├── favicon.ico
    │   └── icon.svg
    └── README.md
    

    A favicon, and an 800 line html file that spits in the face of every flavor of the month javascript framework. I love it.