Tag: web development

  • 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.

  • One Rep Max Calc and SSL oh my!

    One Rep Max Calc and SSL oh my!

    Today I touched up https://strong.rudyfaile.com/ by adding SSL and forcing http redirects. I should have done this in the first place, seeing how easy SSL with Let’s Encrypt is but hey, it’s done now. I also put SSL on the other subdomain projects.

    I also added a one rep max calculator which lives at https://max.rudyfaile.com/ (and is linked in the 5/3/1 program generator, see below:)

    😄

    The purpose of the one rep max calculator is to help you find a 1 rep max if you aren’t looking to necessarily lift the absolute amount of weight that you absolutely can in a single rep. In a perfect world, you should always try.

    Let’s say however that you generate a four-week program and on week 3 you miss your lift for 1+ reps in the last set (set 3). It will be tough to calculate an accurate four week program without a number, and it’s never a good idea to guess. Instead, you could lift a lower weight (not too much lower) for as many reps as you can using the 1 rep max calculator. This will allow you to use a decently estimated number for the next program generator.

    In other news: https://strong.rudyfaile.com/ and https://game.rudyfaile.com/ have SSL now too. One cool thing about that is you can play Lucy’s Adventure offline as a result (assuming you’ve already loaded the game) 😄

  • MC-Impressions.com

    MC-Impressions.com

    MC Impressions is a family owned and operated screen printing and embroidery business proudly serving customers in Claremont, California and the surrounding areas.

    After developing a site for my good friend and expert hairstylist Rickey Windust, I was referred by Rickey to this small business to re-vamp their Business website.

    One of the owners, Christine, reached out to me and we got to work. MC Impressions was a dream client to work with! I highly recommend anyone looking for screen printing, embroidery, or promotional products in the Los Angeles, Riverside, or San Bernardino county area to reach out!

    The final product can be viewed here.

  • rickeywindust.com

    rickeywindust.com

    Browsing through Facebook, I saw that my long time friend Rickey was actively working to re-structure and re-energize her massively successful hair styling business.

    It looked like she had most of the pieces in place. She already had a solid business model, loyal customer base, and was actively creating content on social media sites like Facebook and Instagram.

    On a whim, I reached out to her to see if she’d like some help developing a professional portfolio site to showcase her skills. Being a savvy business owner, she had already realized that a website was the missing piece to her puzzle, and was delighted to enlist my help!

    We got to work shortly after. I initially developed a site using the Profile Theme Demo, but it seemed like Rickey was more intrigued with the WordPress platform itself! She ended up making a lot of changes (Even switching themes to our Twenty Seventeen Theme) all on her own!

    I had a lot of fun working on this site! Successfully teaching my friend and passing along WordPress to another person as an excellent way to manage a website was a great bonus!

    You can view the completed project here.