Thanks duder! It's a fun project.
HN user
snide
A chaotic good web designer trying to not piss off the Internet. I'm currently building Table Slayer, tooling for tabletop map displays. Previously I was an early designer at Elastic and led their UX team for 6 years. Before that I was a founder of Whiskey Media.
You can find more info about me on my website https://davesnider.com
Can contact me dave.snider [at] gmail.com
I've been working on a fairly complicated real-time app [0] for playing dungeons and dragons on a TV. It has to do a lot of complicated "Figma-like" things to keep the real-time nature and multi-editor possibilities in check. Oh, and the battlemap is a Three JS canvas with lots of effects and clipping going on.
I'm VERY impressed with Claude 5. I had long ago given up hope that my real-time systems would work without a lot of hacky time-windows and throttle checks. On a lark to try things out, I decided to try out the new model and talk in the output I wanted for a rewrite [1], not the solution. I just listed my problems and places I've had keeping track of my code. It went off and rewrote everything in a much more elegant solution where the state followed a very clear pipeline. It had to navigate YJS, Partykit, Svelte, Three JS, R2 hosting, and a Turso DB I was running in an embedded state for speed.
I watched it hit the wall a few times, and then sudden say... fuck it, i'm making something easier to reproduce over in /tmp to try and solve this (with a more minimal setup). I'm utterly bewildered with how well it did and how much better my app runs. The /usage would have cost me $230 bucks based on how many tokens it consumed if I wasn't already on a max plan. I'm going to miss not having it when the time-window runs out later this month, and will likely occasionally dip in for big projects and just pay my way out of some problems.
I'll also say I like it's MOOD much better now. It's a lot less congratulatory, and talks through it's reasoning in a much better way. Look, it's not a real coder, and I'm sure there is some flaws, but it took my crappy ideas and said... hey, i understand what you want to do, here's a way to do it better. Also, I removed 2x the amount of code that it added. Really impressive.
I mostly share Josh's opinion, but I think a lot of these posts that talk about Senior vs. Junior experience when working with AIs is kind of rubbish. Sure, you get better results as a Senior working with AI tooling and struggle more as a Junior. Nothing has changed in that equation except the amplification.
What folks seem to avoid is that a Junior (in ANY subject) has the ability to LEARN so much faster with an AI research assistant, and that becoming an expert has accelerated for those with the personal stamina to dig deep (this as a requirement hasn't changed). I spend just as much time with my AI tooling asking questions as I do asking it to "build" or "fix" things. "How does this work?". "Can you suggest other tools?".
I think some people always think about AI as an input / output relationship, when a lot of the time, the fiddling in between, with or without AI was always the important part. Yes people will suck in the beginning, against they always did. I think the good folks though will suck for a MUCH shorter time than I did getting into things.
A lot of people will drop out and get discouraged. That happened before too. Learning things requires persistence. I think the only real case to be made is that AI's sense of immediate pleasure can neuter people away from running into friction. AI natives likely won't understand friction and question it.
Guitars are not about aesthetics
My wife used to work at Acoustic Guitar magazine. She said the most common sales line to sell a guitar at Guitar Center was "it looks good on you". The sound of guitars might not be aesthetics, but in regards to sales, it most certainly is. Everyone plays the same guitars because they grew up seeing their idols play those guitars.
Counter Slayer uses the same UI library I hand built for Table Slayer[0], so it was a little easier for me to get that one going. I used to run design for Elastic, and built their React design library (with some great coworkers) so I'm used to heavy visualization work (having redesigned Kibana years ago). It's just fun for me to take all that experience and build weird little projects as far as I can take them!
I built Counter Slayer specifically for 3D board game inserts, and that's really all I use it for. It sits on the shoulder of Svelte and Threlte (Three.js) for most of the hard stuff.
Being a user of your own product is everything. Every designer I've ever hired were good, not so much because they were a great designer, but because they understood the product and could sit in the user's seat.
This is why I'm so thankful I went with Lucia early. They sort of sunset their library and replaced it with documentation (and some small utilities) for how to manage and host authentication for yourself. It's always presented as some big, scary thing you can't manage yourself, but I found that taking the week to learn how security and basic salting works, I was able to feel more confident about how everything worked.
The NYTimes did a nice write-up about how The Giving Pledge is dropping out of vogue.
https://www.nytimes.com/2026/03/15/business/the-billionaire-...
Stores are now putting QR codes for pricing, not listing the prices out on stickers/paper. You check on your phone, and often times walk through "scan and go" making direct payment on your phone.
This is often done in stores where they say that prices can change daily, and that these tools help them keep prices up to date. The darker pattern is what this law prevents, and that even with this sort of labeling, they can't charge you different from what they charge me in the same store.
I find this essay from Roger Ebert pretty wild in context of the times. I always think about it whenever I listen to the latest advances in AI voice technology.
Hey, I'm the OP. I originally started with FreeCAD. There's not much to "hook up" to Claude. It can natively write for FreeCAD. You don't need to use the FreeCAD editor and can point to an external, local file with an import. At that point there's not much more than pointing your LLM to that file. You'll need to tell the FreeCAD desktop app to update on changes.
Eventually I moved to JSCAD for the application mentioned in my blog post because I realized I wanted a more complex UI (which meant a web app) than what FreeCAD provided natively. If you're looking for something simple with some var statements though, FreeCAD might be enough.
In my experience, the MCP isn't really needed. Claude at least already can write the code pretty well. The problems are more with getting it to understand the output, which the blog post covers.
I'm building two things, both game related.
Over the last year I've been hacking on Table Slayer [0] a web tool for projecting DnD maps on purpose built TV-in-table setups. Right now I'm working on making hardware that supports large format touch displays.
Since I also play boardgames, this past month I threw together Counter Slayer [1], which helps you generate STLs for box game inserts.
Both projects are open source and available on GitHub. I've had fun building software for hobbies that are mostly tactile.
I have 2012 Sonos hardware. You can still get the original Sonos S1 controller, which works with old stuff. It's pretty annoying that all the new stuff is S2 (and that app is better supported), but it's not as hard as you're describing it. You can get it off Google Play and just use it.
The quality of the software, and the fact that it isn't really updated, is another thing, but the actual software availability is there.
Yep. That's what IR frames do, and that's exactly the problem. What I've built actually works really well, it's just hard to justify that pricing.
There are so many kiosks out there though. It's more that I think because it's a commercial audience, the pricing hasn't reached down too much.
All that said, it's still odd there's not at least one boutique option for hobbyists.
One place where "TVs" still remain fairly expensive is in large format touch screens. Outside of using IR frames, getting a large (40 inch) touch capacitive display still requires quite a lot of legwork. I've been trying to find them for my DnD map system Table Slayer [0] and I had to contact factories in China directly. It's still many hundreds of dollars per device even for raw hardware.
Fun anecdote time.
I worked on (and very briefly ran) MP3.com after the CNET acquisition of the domain (CNET only bought the domain, which I think was for $1 million). It had nothing to do with the original site mentioned here (good on them for archiving it).
The initial idea of the CNET version of the site was that in 2004 we assumed you would need a directory of which music was on which service. At the time there were quite a few (itunes, recently legal Napster, Rhapsody, eMusic...etc) and the thought was that the labels would sign deals separately on each, splitting where legal MP3s could be bought. Rhapsody was the only one where you paid a monthly fee for access, the rest were pay per song or album. The directory was similar to something like justwatch.com now, and it was really hard to build the data catalog from the early Internet spiderweb of music content from these services. Believe it or not, we got most of the data from FTP drops from each service. The site also would review all the different MP3 players of the time (there were a lot of them!).
The iPod and iTunes devoured the industry to a degree that no one needed such a directory. Everyone was happy to pay 99 cents per song, or get it illegally. Rhapsody, which was way ahead of its time, was too niche, and pre iPhone, no one could "stream" on anything buy a computer.
Everyone of course hated our new site. It didn't carry the spirit or the catalog of the indie bands from the original version (we didn't own any of the rights to keep the content), and all of those artists were rightfully very angry about losing a pay stream (which again, was a nod to what was coming later with YouTube partners). It got so bad that we had to remove the message boards completely because it was pure vitriol. We later added independent artist uploads, but by 2005 it was too late and the site mostly made money converting "eyeballs" (search any artist + mp3) into money through ads.
Despite all this, I had a lot of fun working on it, and as a young 24 year old who just moved to San Francisco it was a great way to learn about online communities and how they could turn on a dime. Other, later sites of mine took the lessons learned from MP3.com and became successful, but I'll always have a soft spot for MP3.com.
Here's a screenshot from the site in 2004! https://www.davesnider.com/file/d979a4b48bb
Small note that a lot of these tool makers allow sponsorship on GitHub. I use bat / fd almost every day. Happy to support https://github.com/sponsors/sharkdp#sponsors
I read a really interesting post in The NY Times (having trouble finding it) that really broke down how crazy sports betting has gotten in the last couple years. The gist is that states love betting, because they can tax them at high rates with little pushback from citizens who are marketed that the money goes to schools. The sportsbooks have to eat the new tax, and change the odds so that they can make a profit. This forces more losers in the state, and causes possible indirect costs from people losing so much. It’s an ugly cycle where no one wins.
I'm building Table Slayer[0]. It provides tooling to display battlemaps on TV-based tabletops for games like Dungeons and Dragons. The source is open[1] and it's built with Svelte, Partykit, Turso and Three JS.
I'm currently building a prototype hardware component (essentially a large format touch screen) that people can purchase alongside.
For those that are looking for something more advanced in the Android space a friend of mine built https://limitphone.com/ to handle something like this. It requires a reset, but comes with a lot more options.
This is why I love Lucia. They took the "teach a man to fish" route when they converted to a docs only approach. Now I've got my own auth system and understand a lot more about security.
I've always like Ben Franklin's 13 virtues. It's a short list.
TEMPERANCE. Eat not to dullness; drink not to elevation.
SILENCE. Speak not but what may benefit others or yourself; avoid trifling conversation.
ORDER. Let all your things have their places; let each part of your business have its time.
RESOLUTION. Resolve to perform what you ought; perform without fail what you resolve.
FRUGALITY. Make no expense but to do good to others or yourself; i.e., waste nothing.
INDUSTRY. Lose no time; be always employ’d in something useful; cut off all unnecessary actions.
SINCERITY. Use no hurtful deceit; think innocently and justly, and, if you speak, speak accordingly.
JUSTICE. Wrong none by doing injuries or omitting the benefits that are your duty.
MODERATION. Avoid extremes; forbear resenting injuries so much as you think they deserve.
CLEANLINESS. Tolerate no uncleanliness in body, cloaths, or habitation.
TRANQUILLITY. Be not disturbed at trifles, or at accidents common or unavoidable.
CHASTITY. Rarely use venery but for health or offspring, never to dulness, weakness, or the injury of your own or another’s peace or reputation.
HUMILITY. Imitate Jesus and Socrates.
This is a little disingenuous. As far as I know, v3 isn't going anywhere. There's what... weeks until May 2025, which would be four years?
4 years in JavaScript land is actually pretty long. Zod has a pretty good maintenance record. I don't see how a statement like yours can be made without snark. Calling it a "throw-away" library is pretty brash.
This looks like a good update that sticks to the formula.
I just launched the beta for Table Slayer. It lets you build animated maps for in person RPG games (DnD, Pathfinder...etc) where you have a digital table top. It's built on Svelte + Turso + websockets.
The video here best shows it off. The source is available and free to use for non-compete, personal use.
https://bsky.app/profile/davesnider.com/post/3lkvum6xtjs2e
Mostly a labor of love. I don't expect there to be a super large audience for this one, it was just something I needed myself.
Well. I think that's sort of what I like about Svelte. There's a lot less opportunity to make bad decisions.
I'm almost finished with a large, complex app written with Svelte 5, web sockets and Threlte (Three JS) [0]. Previously, I'd written React for about a decade, mostly on the UI side of things.
I vastly prefer Svelte, because of how clean the code feels. There's only one component per file, and the syntax looks and writes deceptively like vanilla JS and HTML. There's a bit of mind-warp when you realize Svelte doesn't want you passing components with props as props into another component. Svelte gives you "Snippets" instead, which work for some reusability, but are limited. It sort of forces simplicity on you by design, which I like. Most of React's deep nesting and state management doesn't exist in Svelte and is replaced with simple, better primitives.
The bigger gain though for me was Svelte(kit) vs. Next JS. It's very clear what is on the server and what is on the client, and there's none of that "use client" garbage with silly magic exports for Next JS things. The docs are great.
Svelte's biggest disadvantage is that the UI library ecosystem isn't as large. For me that wasn't as big of an issue because it was my expertise, but everyone else looking for a drop in UI library will find the Svelte versions a little worse than their React counterparts.
Because svelte is compiled, it also is by default very snappy. I think choosing Svelte would likely give most devs a speed boost vs. the spinner soup that I've seen most React projects become. A lot of that is going to be in the skill of the programmer, but I love how fast my app is.
[0] https://bsky.app/profile/davesnider.com/post/3lkvum6xtjs2e
Big sharkdp fan. Ty you for making awesome software that i use DAILY.
bat, fd, hexyl, hyperfine
I'm going to take this moment to remind all of you well-paid engineers that if we each spread $10 a month sponsoring talented software makers like sharkdp the Internet would be a better place.
So many great little tools out there and we should try to support an ecosystem for them.
So many ways!
fa;
(f)find (a) (;)repeat
That would be the generic vim way. I could mash on semicolon to get to each instance of "a" in the line. Here's another.
2fa
2 (2nd instance) f (find) (a)
Most people use a plugin called easy motion instead.
You type some two character key command to start it. For me it's "ff".
After ff, i type any two characters. It will then highlight each place in the document that start with those two characters (think an inline table of contents) that I can then select.
https://github.com/easymotion/vim-easymotion
I write all this knowing it looks and sounds like madness, so again, don't take this as anything other than someone explaining their madness, but once you learn all this stuff (it takes about a month) you realize your mouse is actually the slowest way to do it.
For example, jumping to a specific position in a source code file, scrolling and clicking gets me there much quicker than navigating with the keyboard alone
I say this with the intention of providing context, not to say the way you do things is bad. It's all user preference in the end and there is no wrong way.
Lots of folks consider your "fast" example with a mouse as their "slow" example that forced them into learning more advanced features of their editor. For example. Most Vim users can get to any character or partial string, or parameter, or line, or paragraph, or function start or what you have within three quick keys on their home row. They do this quickly, and can immediately start doing other things right after because their hands never moved.
The mouse is fast because people don't need to memorize things. The keyboard is fast because the keyboard is fast.
It's like the old joke from the movie Heist. "What do you mean you don't like money? That's why they call it money".