Adding My Latest CodePens to My Blog

I’ve been a fan of CodePen for many, many years, and it’s one of the few services I spend money on to help support. A few months back, they released an entirely new version that dramatically improved the service (CodePen 2.0) and it just made me more happy I was a supporter. Just a few days ago they announced more changes including a full API. I thought it would be fun to add a display of my recent pens. Yes, I thought that would be fun, because that’s the kind of nerd I am. Adding Dynamic Content to a SSG It has been a very long time since I blogged about anything related to static site generators. There’s no particular reason for that, but I figure this is a good time... more →
Posted in: JavaScript

A Not-So-Simple RSS App in TypeScript

Ok, I lie, this demo is also pretty simple, but I wanted to break the pattern of the last few posts and at least pretend this example is a bit more complex. As I try to find excuses to write more TypeScript, I thought a great example of that would be a simple RSS aggregator. You hit the site, tell it the feeds you care about, and it renders a date sorted list of entries. Because RSS typically can’t be parsed in client-side JavaScript (don’t know why? ask me below!) so I’d have to make use of a serverless function to proxy the calls (and at the same time, handle turning the XML into JSON). Now, to be fair, I had built nearly the same thing back in February: Building an RSS Aggregator... more →
Posted in: JavaScript

A Simple Weather App in TypeScript

Happy Sunday, my fellow nerds. If you’ve been keeping up with my posts (all 4 of you – thank you!) then you know I’ve been experimenting with TypeScript (and Vite) recently. This past week I decided to try building a real "app", and of course by app I mean something incredibly small, but a bit "real world"-ish to kind of get a feel for what the development process felt like. I decided on a fairly simple weather application. The application would prompt you for a location. That location gets geocoded to longitude and latitude values. With those values, I’d grab a simple weather forecast. After you add one, you can add another, and delete as well. Finally,... more →
Posted in: JavaScript

A Simple Alpine.js Template with Vite and TypeScript

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 Alpine.js 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 always 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 "template"... more →
Posted in: JavaScript

Links For You (9/20/26)

Happy "Football is Back" 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. RSS Lookup First up for the links today... more →
Posted in: JavaScript

It’s only a decade late, I’ll learn TypeScript!

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 writing code. I’ve also had a bit of writer’s block in terms of topics to cover, and especially in the area of the web platform. A few days ago it occurred to me – I’ve never really dug into TypeScript. 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... more →
Posted in: JavaScript

Building a Document Q&A System with On-Device AI

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 on-device AI 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... more →
Posted in: JavaScript

My Family Allowance – a Simple Allowance Tracking Site

As you can probably tell, I’ve been on a bit of a builder kick the last few weeks. Today’s "release" (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. Previously we made use of a Google Sheet. Each kid had a column. When a kid would ask for something, we’d look to see when we last added allowance, multiply the number of weeks by their rate, add it, and then add another row to reduce by the amount they were spending. A simple formula on the right hand side would give a running total so they could see what their current balance was. I decided to take this manual process and... more →
Posted in: JavaScript
1 2 3 … 116