Tag: Software

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

  • crapslesscraps.com

    crapslesscraps.com

    I recently returned from a work trip in Las Vegas, Nevada. I’ve always enjoyed playing live craps, but I discovered a new fondness for bubble craps, specifically the crapsless variant. If you aren’t familiar with craps in general it’s the famous game where everyone stands around a table and make bets on numbers while one of the players, called The Shooter, rolls the dice.

    A lively crowd gathered around a craps table in a casino, with players engaged in the game and a dealer presenting the dice.

    A lot of folks shy away from craps because they find the game confusing, but it really isn’t. At its core, it’s just making bets on the outcome of the dice roll, which can be any number between 2 and 12. As there are the most ways (6) out of 36 possible outcomes on two die to make 7, it is the most commonly rolled number. On a regular craps table, the way most people play is on the Pass line. On the pass line, 7 or 11 wins on the first phase of the game or the “come out” roll, while rolling a 2, 3, or 12 loses. Any other number becomes the point. From then on, the goal is to roll the point number again before rolling a 7. That’s it.

    So now that you’re a craps expert, crapsless craps is basically the same game except 2, 3, and 11, 12 can also be points. That’s really it. If you roll one of those numbers on the come out, they become the point, and you’re trying to roll the point number again before a 7.

    Like I mentioned above though, craps is just making bets on the outcome of the dice roll. So you don’t have to play that way. You can bet on any single number, multiple numbers, all the numbers, or even that all the low numbers or all the high numbers, or all the numbers that are not 7 will roll before a 7 appears (called the ATS bet) which I managed to hit during my business trip on the last night I was there:

    Display screen showing a hand pay amount of $3,006.89 for a craps game with betting options for low rolls, high rolls, and 'Roll'em All' on a green background.

    Anyway, when I got back home I wanted to play more, just for fun with play money. I looked, and there are different craps games I found online, but no crapsless craps! So I decided I would just write the game myself from scratch using some new frameworks while having an opportunity to test out some different AI tools and development patterns. Whenever I do this kind of stuff, I always have a strong instinct to make whatever I end up making available to other people, free of charge and free of ads or anything like that, just like other tools I’ve built for myself like my 5/3/1 workout program generator or any of the little games I made like Draw! or Lucy’s Adventure (Speaking of Lucy, my dog the game was named after, passed away 2 weeks ago at 16.5 years old ๐Ÿฅฒ).

    A dog sitting in a car, looking happy with its tongue out, next to a red water bottle.
    ๐Ÿ‘ผ

    Anyway, I found the domain crapslesscraps.com was unregistered so I registered it then set up an auto deploy pipeline for merges to my master branch in version control to deploy the game there:

    Screenshot of the online Crapless Craps game interface showing dice rolling area, betting options, and player bank balance.

    So, if you like craps or want to learn more about it by playing online with play money, there is now a crapsless variant available for free at crapslesscraps.com ๐Ÿ˜Š. If you have feedback for me about the game or find a bug, feel free to contact me.

  • Conference: Handmade Seattle 2020

    Conference: Handmade Seattle 2020

    Table of Contents:
    Intro
    Speakers Day 1
    Freya Holmรฉr
    Nuno Leiria
    Joey de Vries
    Ramรณn Santamarรญa
    Elizabeth Baumel
    Andrew Kelley, Ginger Bill, Joshua Huelsman
    Speakers Day 2
    Gal Zaban
    Vegard Nossum
    Hannah Gamiel, Eric A. Anderson
    Randy Gaul
    Abner Coimbre
    Allen Webster, Ryan Fleury
    Project Demos
    Ripcord
    WhiteBox
    SYZYGY
    Footnotes

    I spent this past weekend attending Handmade Seattle which is an independent, low level programming conference. It is usually held in Seattle but due to the ongoing COVID-19 pandemic, this year’s conference was held online.

    First things first: wow. I was blown away.

    I was really impressed at the quality of speakers and the content they brought to the table. It never ceases to amaze me how many smart folks are out there deep diving into complicated topics and sharing what they learn with the rest of us. Huge kudos as well to Abner Coimbre for organizing the event and the job he did facilitating as its host. Abner did a fantastic job of being professional and informed with the topics he discussed with the speakers while managing to keep it real in true indie fashion ๐Ÿ˜Ž.

    Some of the talks were interviews between the speakers and the host, some were pre-recorded presentations or podcasts, but all ended with a Q&A with the speakers where all ticket holders were able to engage directly with the speakers using a private Matrix chat for which an invite was sent upon ticket purchase. It was really cool to see Matrix used like this in the wild, especially as it’s a project that my company recently invested millions into. I love the idea of this open, decentralized communication platform of the future. If you do too, we’re hiring engineers to help bring Matrix to Automattic ๐Ÿ˜Š.

    Without further ado – I have included a list of the speakers below with a brief take on some of their topics with links to where you can check out more of what some of these folks are doing.

    Speakers: Day 1, November 14th 2020

    Freya Holmรฉr
    Indie Game Dev – Developing Shader Expertise

    This was my first exposure to Freya as I haven’t dipped many toes into the shader world but oh. my. god. This is the person that accidentally created the industry standard shader editor for the biggest game engine in 2014?

    What a way to kick off this conference. Freya spoke heavily to the value in focusing on one thing and really digging down. In that, however, she emphasized a few points that I think is fantastic advice in general:

    1. Only learn the things you need to learn to do what you need to do.
    2. Don’t try to step into dozens of different topics, drill down and master one.
    3. Laser focus on one thing will result in getting more done faster.

    I love this because it’s a super common problem in the tech world and for learning in general. You start working on a project, but there is so much to learn that it’s easy to get distracted or never progress because you start looking into the various adjacent technologies. You end up becoming okay at the basics in a dozen technologies but have no deep understanding required to truly innovate.

    By the way, her YouTube channel is so good. Among other things, she has a dedicated series called “Math for Game Devs” which will make you a better game developer.

    References:
    https://acegikmo.com/


    Nuno Leiria
    Polystream Senior Engineer – Modern CPU Optimizations: From the kernel to the cloud

    This was so good. I know I probably sound like a broken record, but wow. Here was a AAA production solve for a performance bottleneck. The first obstacle had all of us laughing. Whoever had “Adobe Updater on the Server” on their systems bingo card, cash in that ticket!

    Beyond that, Nuno orchestrated a deep dive into performance profiling. On this particular project, he and his team went so deep into the matrix that they ended up discovering a bug in the Microsoft kernel. What’s more, they were able to provide specific enough information to have that bug patched, fixing their application.

    Yes, I couldn’t believe Microsoft actually patched a kernel bug either ๐Ÿ˜Š.

    References:
    https://twitter.com/nunopleiria
    Full list of profiling tools at the bottom of this post1


    Joey de Vries
    Author – The History behind learnopengl.com

    Really great talk about the history behind learnopengl.com and how Joey ended up starting what many to be the definitive resource behind learning what is basically the industry standard in graphics rendering.

    Joey also has a new book: Learn OpenGL: Learn Modern OpenGL Graphics Programming in a Step-by-step Fashion which I will definitely be picking up!

    References:
    https://learnopengl.com/
    Book: Learn OpenGL: Learn Modern OpenGL Graphics Programming in a Step-by-step Fashion


    Ramรณn Santamarรญa
    Epic MegaGrants Recipient – Developing a Handmade Mindset for raylib

    This guy. I have pretty much been Ramรณn’s self-proclaimed #1 fan for about a year now, and I knew that this talk was going to be amazing but holy moly.

    How do you make an entrance into an indie programming conference? How about starting your presentation by compiling it from vanilla C source to web live using the software you wrote.

    Do you think it stopped there? Um…..

    I can fit on zero hands the amount of folks that thought guitar, cooking, and tree pruning would be the core tenants of a software conference talk.

    Ramรณn expertly translated how he applied these three passions from his life to his approach to software development. I won’t be able to give this talk its due justice here, so I highly recommend checking out the recorded video.

    References:
    https://www.raylib.com/


    Elizabeth Baumel
    Unity3D Engineer – You CAN Teach an Old Programmer New Paradigms!

    Data Oriented Design. This is the content I purchased my ticket for. Elizabeth teaches DOD for a living and expertly broke down components of DOD using various worksheets throughout her talk:

    This is my favorite software presentation slide ever:

    Slap ๐Ÿ‘ that ๐Ÿ‘ shit ๐Ÿ‘ together ๐Ÿ‘ — PREACH!

    References:
    https://twitter.com/icetigris


    Andrew Kelley, Ginger Bill, Joshua Huelsman
    Compiler Writers – The Race to Replace C and C++

    Excellent podcast between uber smart developers who work heavily with compilers and bring different perspectives to the table. Bill is the creator of the Odin Programming Language and converted many of his strong opinions into actions into his programming language. Josh is the creator of the Jiyu programming language and also worked on Johnathan Blow‘s upcoming Jai Language at Thekla. Andrew is the creator of the Zig Programming language. Abner keeps everything in order ๐Ÿ˜Š.

    References:
    https://twitter.com/andy_kelley
    https://twitter.com/thegingerbill
    https://twitter.com/machinamentum

    Speakers: Day 2, November 15th 2020

    Gal Zaban
    Security Researcher – Linux Kernel Adventures: Reversing & Exploiting a Linux Driver

    ๐Ÿคฏ. A very humbling talk about exploiting systems via kernel device drivers. Gal’s talk goes deep into the matrix, discussing and breaking down ioctl syscalls in depth.

    This is one of those talks I’ll need to watch again….more than once ๐Ÿ˜….

    References:
    https://twitter.com/0xgalz


    Vegard Nossum
    Kernel Developer – Parallelisation in the Linux Kernel

    Outstanding presentation from a true legend in the space. Check out this rig that his friend built:

    This is a computer with 6,144 cores. Yes, Linux supports this.

    As a point of reference, Windows supports a max of 256 cores.

    Linux Parallelism is state-of-the-art

    Vegard Nossum

    This talk perfectly covered the topics required to understand parallelism without going too deep into the rabbit hole on each branch (note: it is easy to do this). This is another talk I’m not capable of delivering justice to and highly recommend checking out Vegard’s work, white paper, and the talk itself.

    References:
    https://twitter.com/vegard_no
    White Paper – Ksplice: Automatic Rebootless Kernel Updates
    White Paper – Compact NUMA-aware Locks


    Hannah Gamiel & Eric A. Anderson
    Myst VR Directors – Cyan, Inc.

    Myst is upcoming VR game – but you already knew that. This interview was a cool chat between Abner and the directors of the project.

    One recurring topic in the podcast was the obstacles encountered via a sudden switch to remote work during the global pandemic. In the private chat I told Hannah she could reach out if she wanted some insight on some best practices, as I know a few folks who set the gold standard for remote work ๐Ÿ˜.

    Other than that, it was just super cool getting a behind the scenes look at the folks @ Cyan and how they approached work on Myst and their transition to remote.

    References:
    Myst on Steam


    Randy Gaul
    Microsoft Engineer; Cute Headers

    Randy is a legend in the low level programming game space. If you’ve ever worked in this area you know about the Cute Header Libraries.

    This talk highlighted how good these small and useful libraries actually are and referenced future improvements I wasn’t even aware of, like networking libraries supporting both TCP and UDP. He also laid out the roadmap for the project and what we can expect to be released within the next year or so. It’s always cool to know awesome projects are under active development working towards features everyone wants ๐Ÿ˜€.

    References:
    https://github.com/RandyGaul/cute_headers
    https://twitter.com/randypgaul


    Abner Coimbre
    System Software Engineer – A New Terminal Emulator

    I was super looking forward to this as I basically live in the terminal, but it was postponed and totally understandably so. Abner has a working demo and is ready to present but was working so hard to host and keep everything organized that he chose to delay this a bit. Respect.

    References:
    https://twitter.com/AbnerCoimbre
    https://www.handmade-seattle.com


    Allen Webster, Ryan Fleury
    The How And Why Of Reinventing The Wheel / (Introduction To Dion)

    DION

    DION

    DION!!

    It turns out the hype was worth the wait as Allen and Ryan revealed Dion to the world in a big way.

    These guys weren’t kidding about reinventing the wheel. Imagine programming as you know it re imagined. When writing this I had a really hard time defining everything I was seeing, so I’ll let Ryan share his take:

    Dion is our experiment at a new iteration of what it means to program. Our existing programming tools are hamstrung, and it shows; they are often dumber, slower, and more difficult to use than it feels like they should be. We (Dion Systems) have a theory about why that is, and we’re focused in on demonstrating what we think is the solution.

    Dion aims to be an entire computing environment with one key tweak to the architecture of the programming systems we’re familiar with. Instead of storing code as text files, we store it as a more direct, structured representation that more closely maps to a traditional abstract syntax tree (which is a data structure that a compiler, for example, will use to store extracted semantic information from code).

    Instead of storing code as text files, we store it as a more direct, structured representation that more closely maps to a traditional abstract syntax tree

    This key tweak opens many doors. We now have the freedom to render code in different ways, achieve much smarter tools with much less effort, iterate on the user-interface and user-experience of the programmer, surface more sophisticated information about code, provide more insight for experts, improve the educational experience for beginners, and more, all with much less work.

    We’re not done with our experiment, and our demo is just a first glimpse into the kind of future that rethinking the architecture of our programming environments can bring, but we’re really excited with what we’ve found so far, and wanted to share that vision with the Handmade community.

    our demo is just a first glimpse into the kind of future that rethinking the architecture of our programming environments can bring

    There were too many “omg” moments for me to count but a few include:

    • All functions/procedures can be built by themselves.
    • How you view the code is up to you. Inline braces, newline braces, no braces, it’s all on the table.
    • Instant feedback on changes, errors, etc. The system knows not to build until something is fixed.
    • Zooming in and out on code granularity. This is crazy to watch. You can look at all definitions and calls, or just the calls or definitions.
    • Function arguments, variable declarations update their references instantly. By the way, this isn’t matching a string to do it. What? ๐Ÿคฏ

    I’m so excited to see where this project goes. There are a few hurdles the team will need to overcome (e.g. version control) – but there are more possibilities than there are obstacles…. you can count on that.

    References:
    https://twitter.com/DionSystems
    https://twitter.com/ryanjfleury
    https://twitter.com/AllenWebster4th
    https://twitter.com/debiatan


    All of these talks were recorded and will be available soon at: https://www.handmade-seattle.com/


    Bonus!

    Between the interviews, there were “5 minute indie demos” which showcased some extremely interesting up-and-coming projects. Here were a couple that stood out to me:

    Ripcord

    This is one of the coolest cross-platform chat clients I’ve seen in a long time. It reminds me a lot of the old Trillian days. Remember Trillian? It would bring your AIM/ICQ/IRC convos into a single client.

    Built in qt, it is a program designed to bring all of your various modern-day chat programs into one place in a localized client – without needing four 2GB electron apps murdering all of your CPU and RAM.

    From the website, check out some of the features (emphasis mine):

    Features

    • Not made from a web browser
    • Tabs
    • Multiple windows
    • Multiple accounts
    • Voice chat (Discord OK, Slack WIP)
    • Graphical emoji and custom emoji
    • Tab completion for user names and emoji
    • Customizable fonts, colors, and sizes
    • Custom bookmark lists for easily accessing only the channels you actually use
    • Variable DPI and multi-monitor support
    • Low CPU and memory usage
    • Zero GPU usage
    • No tracking or analytics
    • No installer or forced updates

    Here are some screenshots of the software:

    I’m already tooling around with this, and really excited to see how this project evolves!

    WhiteBox

    A really cool tool that compiles, runs, and debugs real time as you write code ๐Ÿ˜ฒ. Is there more to say? Check it out below:

    SYZYGY

    Syzygy is a crazy cool puzzle game which uses topology deformations as a game mechanic. I haven’t seen something like this before.

    Get it here on Steam. Releasing 20 November 2020 (this Friday!)


    Footnotes:

    1Full list of profiling tools from Nuno Leiria’s talk

    System wide profiling tools:
    https://developer.nvidia.com/nsight-systems
    https://docs.microsoft.com/en-us/windows-hardware/test/wpt/
    https://github.com/google/UIforETW

    GPU profiling:
    https://gpuopen.com/rgp/
    https://developer.nvidia.com/nsight-graphics
    https://software.intel.com/content/www/us/en/develop/tools/graphics-performance-analyzers.html

    Sampling/Instrumented profilers:
    http://www.codersnotes.com/sleepy/
    https://superluminal.eu/
    https://github.com/wolfpld/tracy
    https://github.com/Celtoys/Remotery
    https://github.com/jonasmr/microprofile
    https://www.puredevsoftware.com/framepro/index.htm

    Micro-architecture profilers:
    https://software.intel.com/content/www/us/en/develop/tools/vtune-profiler.html
    https://developer.amd.com/amd-uprof/NVIDIA Nsight Systems

  • The Krimm

    With 2020 leaving me unsure if the Mayans were off by eight years, I have been doing whatever I can to stay busy. Aside from pouring myself into work, I have been working on my small game Draw! and tackling my project backlog.

    One of the things my wife used to subscribe to was something called “The Skimm”. The Skimm was basically an aggregation of news that would get emailed to you every day. She really liked it, but I thought I could make something better for her. This was in 2015 so in true husband fashion, I took care of it in 2020.

    Introducing, the Krimm

    The Krimm (Kristen + Rudy Skimm) is similar to the Skimm, except heavily customized to my wife’s liking. Every morning at 8:30am, she gets an email with the top three news stories in each category she’s interested in, which includes a summary and a link to the full story. What I like in particular is the sources tend to be diversified, and the lack of images allows me to fit more information on the screen and her to be more objective as she’s choosing which stories look interesting hopefully based on substance rather than imagery.

    How does it work?

    It’s very simple. All I did was SSH into one of my servers and install Jarun’s “googler” utility which I use often and highly recommend. One of the flags on the library is to pull results from news sources only. Perfect.

    From there, I made two simple bash scripts. One to run the utility for what she wants:

    simplicity scales

    and a one-liner to send the content of the generated text file to our emails with the subject “Today’s Krimm! 2020-06-01” (or whatever the date is ๐Ÿ™‚) using postfix.

    So, pretty simple. From there I set up a simple cron to run the make_file script at 8:29am at our local time in the system’s time and then I fire off the postfix email script at 8:30am.

    So now, every day at 8:30am my wife gets a customized news feed from Google news consisting of the top 3 stories in the world from different sources based on keywords she’s interested in:

    That’s it?

    That’s it. It took me about an hour start to finish to hack this together, and she is satisfied with the result. I subscribed myself as well because well, hey, it’s pretty useful!

    What else have you been doing?

    Trying to stay sane. I have a really nice post in the works that I’ve been meaning to make about an enlightening conversation I had with one of my co-workers at Automattic. In the meantime, I also had the pleasure of interviewing the lead of the Handmade Network on their podcast:

    Which was very insightful and a lot of fun! Highly recommend the Handmade Network as always. Catch my post on Handmade here.

  • strong.rudyfaile.com

    strong.rudyfaile.com

    I couldn’t sleep last night so I decided to whip up a 5/3/1 barbell training program generator in PHP for all to use freely ๐Ÿ˜„. Since finishing my 100 days of running I have more time available to me to both program and lift weights, and combining these two hobbies is one of my favorite things to do ๐Ÿ’ช๐Ÿค“ ๐Ÿ’ช.

    The program lives here: http://strong.rudyfaile.com/

    If you aren’t familiar with Jim Wendler’s 5/3/1 I highly recommend looking into it. Jim is a no-bs strength guru and I’ve found his program, as is its namesake, as the Simplest and Most Effective Training System to Increase Raw Strength. The beauty of the program is its built around you, and adjusts to your progress every four weeks. Essentially, you start out by testing your one rep maxes in the four core compound lifts: Overhead Press, Deadlift, Bench Press, and Squat. From there, the calculator generates a 4 week program based on your lifts. In week 1 you’re doing 5 reps across the board, week 2 three reps, and week 3 is your 5/3/1 week where you’re looking to max out. This is the most important week as the lifts here determine the following 4 weeks’ program. Thus, you have an ever-evolving, infinite duration strength training program custom tailored to your needs.

    This was the first time I’ve cracked my knuckles to square off with PHP in a long time but I was extremely pleased with how fast I was able to jump back into it and rapidly port my command line Python version of this program to a web-driven one.

    Mostly, I’m a terrible designer and I’m so pleased with how this came out on both the web and mobile ๐Ÿ™‚ – especially considering this was developed bare-bones from the ground up.

    I did a decent job of sanitizing input and ensuring validation with functions like isset() – right now the only bug I’m aware of that I need to work out is the sizing on mobile but it’s tough to keep things readable in a table and still have it fit on the screen, still works though ยฏ\_(ใƒ„)_/ยฏ. I also chose to use $_GETmethods instead of _$POST so that folks could save the permalink if they wanted to revisit their program without re-entering the numbers (I added a nifty one-click button for this, too!)

    On top of enjoying PHP development for once I got deep in the woods in Apache’s virtual hosts to set Lucy’s Adventure and my 5/3/1 calculator as separate directories on the same web server which is pretty cool. I’m having fun tinkering with all this stuff and am excited to add more projects to the *.rudyfaile.com subdomains!

    If you have any questions about how to use the program or strength training theory in general feel free to leave a comment below ๐Ÿ‘‡ or contact me privately. Also looking for feedback on what would make the program more intuitive (design suggestions are probably hopeless ๐Ÿ˜….)