Game Dev Diary – Cat Herder – Part 1

Over a year ago, I released my first "idle clicker" game, IdleFleet. IdleFleet is a simple "space merchant" game built with Alpine.js. I’ve worked on it off and on since the initial release (which was in Vue.js by the way) and still have updates I want to add, but a few weeks ago I started work on a new game I’d like to share with you, Cat Herder. The Game # Cat Herder is very much in its early stages so while I’ll (eventually) link to it, you can’t do much with it now. The basic idea is that you have one cat… to start with that is – and have to keep it happy. Cats have three basic moods: Wanting to be left alone Wanting to be fed Wanting... more →
Posted in: JavaScript

Earth Nose Game Champion 2024

Welcome to the 2024 Earth Nose Game World Championship! This year’s event promises to be the most exciting and innovative yet, as players from around the globe gather to showcase their unique skills and compete for the coveted title of World Earth Nose Champion. Players in this year’s competition will have to be at the very top of their nasal game as the 2024 Nose Game World Championship Maps Mania… more →
Posted in: Interactive Maps

Tracking Gemini Models with Pipedream

APIs, tools, consumer features, and heck, pretty much every aspect, of generative AI is changing at an incredibly rapid pace. I mostly focus on just Google Gemini and even that is pretty difficult to keep up with. Recently, Linda Lawton shared that she actually uses an automation script to keep track of the models currently available in Gemini. I thought that was a great idea and decided to see if I could build something similar using Pipedream. Here’s what I came up with. Getting Available Models via API # Normally, if I wanted to know what models I had available, I’d go to AI Studio and just look, or check the docs. While that’s fine usually, there’s actually an API... more →
Posted in: JavaScript

Update to My Table Sorting Web Component

Just a quick note. Last year, I blogged a demo of a web component that lets you wrap an existing HTML table and progressively add table sorting. I’m rather proud of that demo and was actually planning on doing a quick video about it, but while testing I encountered two small bugs that somehow missed my earlier rigorous testing. (And by rigorous testing I mean a few minutes of clicking around.) Specifically, the issue is in the "when clicking to sort, notice if we sorted this column before and if so, reverse the sort" area: sortCol(e,i) { let sortToggle = 1; if(this.lastSort === i) { this.sortAsc = !this.sortAsc; if(!this.sortDir) sortToggle = -1; } this.lastSort = i; this.data.sort((a,b)... more →
Posted in: JavaScript

The Loss of the Great American Grasslands

The Cornell Lab of Ornithology and the Act for Grasslands. have teamed up to map the loss of grasslands in the United States. Over 2 million acres of American grasslands are lost on average every year. The result of which has a devastating effect on American wildlife. Using historical satellite records Map for Grasslands has tracked grassland loss in the USA over the last 30 years. By Maps Mania… more →
Posted in: Interactive Maps

Adding Recommendations to my Blog with Algolia

I’ve been using Algolia for my site’s search functionality for a few years now and it works great, especially once the free tier expanded to cover the size of my content somewhat better. In that time, I’ve mainly just stuck to basic search functionality and haven’t really touched any of the more advanced features. This weekend I took a look at one I’ve been meaning to play with for some time, Recommendations. My thinking was, of course, a way to recommend/suggest content related to the current blog post you may be reading. This distinction is important because as I looked at the Recommendations marketing and documentation, the content is heavily focused on product... more →
Posted in: JavaScript

Old Maps Online

Old Maps Online, MapTiler and the David Rumsey Map collection have launched TimeMap.org, a new interactive world map which allows you to explore the history of human civilization over the last 6,000 years. TimeMap promises to throw open the doors to the past, allowing you to explore bygone eras, trace the shifting boundaries of nations, encounter history’s most powerful figures, and witness the Maps Mania… more →
Posted in: Interactive Maps

Using the Gemini File API for Prompts with Media

Using media in your prompts (what’s called ‘multimodal’) with the Gemini API is fairly simple in small cases. You can encode your input with base64 and pass it along with your prompt. While this works well, it’s got limitations that may be quickly hit – most specifically a file size limit of 20 megs. A few months ago, I shared a demo of using your device’s camera to detect cat breeds. With today’s cameras taking incredibly detailed pictures, I hit that limit right away and had to write some code to resize the image to a smaller size. Luckily, the Gemini API has a better way of handling that, the File API. The File API # This API provides a separate method... more →
Posted in: JavaScript
1 15 16 17 18 19 190