{"feed":{"title":"Raymond Camden","link":"https://www.raymondcamden.com/"},"entries":[{"title":"A Simple Alpine.js Template with Vite and TypeScript","published":"2026-09-22T18:00:00+00:00","content":"This will be a quick one - but as I think more about TypeScript and how I'd like to learn (and play, and build silly demos), I naturally thought it may make sense to look at how I'd use <a href=\"https://alpinejs.dev/\">Alpine.js</a> with that stack. Alpine's been my go to library for web apps that reach the level of complexity where I'd like some help with DOM manipulation and such. I don't <em>always</em> use it, because (imho) the default stack should be as vanilla as possible (obviously I'm going a bit off ranch with these explorations into TypeScript and Vite) but Alpine is lightweight and simple and just a great little library in general. What follows isn't necessarily a &quot;template&quot; as it's got a bit of template code with it, but I thought it would be helpful to share. As always, let me know what you think!","link":"https://www.raymondcamden.com/2026/09/22/a-simple-alpinejs-template-with-vite-and-typescript"},{"title":"Links For You (9/20/26)","published":"2026-09-20T18:00:00+00:00","content":"Happy &quot;Football is Back&quot; season to those of you who celebrate. I'm currently watching my Saints take on the Ravens (who are also a favorite of mine) and hoping for our first win. The last few weeks have been incredibly busy (I feel like I always say that, sorry) with a trip for work that then morphed into a short vacation with my wife and I which included my first Blizzcon (which is freaking cool as hell) and our first visit to Disneyland. (We've been to Disney World a few times.) I think we both agreed that Disney World is cooler, but the crowds and - most importantly - the weather - was much better in California.","link":"https://www.raymondcamden.com/2026/09/20/links-for-you-92026"},{"title":"It's only a decade late, I'll learn TypeScript!","published":"2026-09-18T18:00:00+00:00","content":"I've been a bit worried lately. Of course, my friends will tell you that's my norm. But more specifically, I've been worried about my coding skills. As I use AI to generate more and more code, and it does that job well, I kinda miss actually <em>writing</em> code. I've also had a bit of writer's block in terms of <em>topics</em> to cover, and especially in the area of the web platform. A few days ago it occurred to me - I've never <em>really</em> dug into <a href=\"https://www.typescriptlang.org/\">TypeScript</a>. Sure, I've used it, many times, in the fourteen or so years it's been out, but many times I kinda guess at what I'm doing and it was never my default for projects. Partly that's due to my philosophy of avoiding a build step in my projects and just KISS in general.","link":"https://www.raymondcamden.com/2026/09/18/its-only-a-decade-late-ill-learn-typescript"},{"title":"Building a Document Q&A System with On-Device AI","published":"2026-09-06T18:00:00+00:00","content":"Every now and then I build a demo for a presentation and think to myself - this deserves its own blog post. I then promptly forget to actually do that. Even better, I completely forget to even show the demo in the presentation. A few weeks ago I made my first presentation at RenderATL and gave my talk on Chrome's <a href=\"https://developer.chrome.com/docs/ai/built-in\">on-device AI</a> technology. I've been blogging about this particular set of APIs for a few years now and I've given talks on it at numerous conferences. While these APIs are still evolving, many of them (and the ones I'm using today in particular) are now fully GA for Chrome. For this demo, I put together a few things I've done before into one cohesive tool - a completely client-side application that lets you pick a file, get a summary, and then chat with it.","link":"https://www.raymondcamden.com/2026/09/06/building-a-document-qa-system-with-on-device-ai"},{"title":"My Family Allowance - a Simple Allowance Tracking Site","published":"2026-09-02T18:00:00+00:00","content":"As you can probably tell, I've been on a bit of a builder kick the last few weeks. Today's &quot;release&quot; (it's been live for a few days already) is a tool to help fix a manual process we had in our family - tracking allowance for the kids.","link":"https://www.raymondcamden.com/2026/09/02/my-family-allowance-a-simple-allowance-tracking-site"},{"title":"Weather Nerd? Check out My OSX Radar Widget","published":"2026-09-01T18:00:00+00:00","content":"I know I'm not alone in being a bit of a weather nerd. Along with four or five weather apps on my phone, I've got two physical devices in my office that show the weather and a weather widget on my Mac that shows the day's forecast. That's not enough. What I really wanted was a radar widget as well, so I built one:","link":"https://www.raymondcamden.com/2026/09/01/weather-nerd-check-out-my-osx-radar-widget"},{"title":"Like LEGO? Got a Mac? Get My Screensaver","published":"2026-08-26T18:00:00+00:00","content":"Good morning my fabulous readers. This will be a quick post as I just wanted to share something cool I built with Cursor over the past couple of days - a LEGO screensaver. I'm a huge fan of &quot;show me something random from something I like&quot; and have built multiple bots in that vein. I recently discovered <a href=\"https://rebrickable.com/downloads/\">Rebrickable's LEGO datasets</a> which contains a CSV file of LEGO sets. The data looks like so:","link":"https://www.raymondcamden.com/2026/08/26/like-lego-got-a-mac-get-my-screensaver"},{"title":"Links For You (8/23/26)","published":"2026-08-23T18:00:00+00:00","content":"Greetings, programs. Once again, I'm a bit behind on these posts, but I just got back from two weeks of travel and I'm so happy to be home for a while. My last trip was pretty stressful. On the way out, our plane blew a tire (or tires) which required an emergency landing in Dallas (which is where we were scheduled to stop anyway). Everything ended up fine, but as I said, stressful. Then coming home we were <em>minutes</em> from our destination when the pilot had to turn around due to storms. You can actually see exactly where in the route where they said NOPE:","link":"https://www.raymondcamden.com/2026/08/23/links-for-you-82326"},{"title":"Using the Cursor SDK to Build a Project Documenter","published":"2026-08-22T18:00:00+00:00","content":"I've shared a few posts recently talking about how I'm using Cursor to learn and employ agentic development. Primarily that work has all been done via our Agent view, but this is just one of the surfaces you can use with the platform. I had a chance recently to try out the SDK and I thought I'd share a little demo I built with it.","link":"https://www.raymondcamden.com/2026/08/22/using-the-cursor-sdk-to-build-a-project-documenter"},{"title":"<file-preview> - A simple web component for file previews","published":"2026-08-11T18:00:00+00:00","content":"This was a &quot;I can't fall asleep and my mind is wondering&quot; type of idea and honestly, I'm surprised at how good it came out. For a while now I've shared demos where a user picks an image and ... something. It doesn't matter. But I typically add a preview of the image when it's selected. This works because once the user selects a file on their local system, JavaScript can then access the bits of that file, making it trivial then to render it. The idea I had, late at night, was simple - what if this could be a web component and expanded to cover different file types?","link":"https://www.raymondcamden.com/2026/08/11/file-preview-a-simple-web-component-for-file-previews"}]}