Software Development Side Projects

Here are some side projects that I've been working on recently, as of 2022.

Combining Lists of Recommended/Best Seller Books With Library eBooks

A long-in-the-making little project of mine was to combine lists of recommended books with the ability to check if my local library system has them available as eBook or audiobook. Please take a look at these pages for more details. I made the one for The New York Times just because I could. I don't particularly recommend just grabbing whatever is selling best.

Rotating Family Dashboard

Inspired by DAKboard and seeing a few other developers who came up with similar custom-built dashboards, I spent some free hours I had during a week off developing a web page to display family calendars, weather, and other info. What I expected to be one page quickly expanded to two, three, and then four different pages, which are rotated through, each page displaying for 90 seconds.

The Met
The Met

I did not go as far as some other did, with soldering, building a wood frame, putting it behind a 2-way mirror, etc. But I had a nice spare monitor with minimal bezels and bought a small, used Chromebox to basically just display the pages in the browser. (Raspberry Pi 4 were particularly hard to find during 2022, so I just went with what I could get my hands on quickly.)


Each page uses a random background image that I grab by scraping the page that servers as the screen saver on Chromecast devices. Embedded in that page is some JSON that I parse and randomly select an image from.


For all of the pages, I display at least some weather data provided by Visual Crossing, with the National Weather Service acting as a back-up in case of failure of the Visual Crossing API, or for cases where I've made too many requests to Visual Crossing's API and am getting HTTP 429 (Too Many Requests) errors because I've been refreshing too often, usually during active development. This sometimes happens even though I'm caching the weather data for a period of time.

The weather display has morphed from something very simple to something maybe a bit too flashy. I added the vertical bars for the next 12 hours after I added the multi-day forecast. Getting the colors right took a few tries. I played with setting the colors via CSS, with one color for every two degrees. I also tried using CSS's hsl(), which was cool, but not quite the range of colors I wanted. I eventually settled on a color gradient scale from the National Weather Service that looks like this: National Weather Service temperature gradient. Each day's forecast has a background with a gradient, starting with the high temperature's color starting at the top, and the low temperature's color at the bottom.

Main Calendar Page

The 4 week calendar
The 4 week calendar

I've got the main calendar-like display, the first page I wrote, showing up to four weeks of events from my work calendar, my Google calendar, a shared family calendar, and my wife's Google calendar. It will also display “Happy Birthday!” messages for our family members and close relatives. This gets very busy with work calendar events at times. Other pages show an agenda-style summary of today and tomorrow's events.

News Page

The news page
The news page

The next page I worked on was the News page. I went through quite a number of news sources before deciding on a rotating, random mix two of the following, which include images:

And a rotating, random mix of the following sources, which don't provide images:

Some Comic Relief

Happy fun time, super awesome comics page
Happy fun time

After reading too many headlines working on the news page, I wanted something fun. Maybe something uplifting. So, I turned to web comics. I randomly rotate through comics like The Far Side, XKCD, The New Yorker, Speed Bump, and a few others. Sizing the images is the tricky part. Some are very tall and some are very wide. With my monitor in portrait mode, vertical ones aren't much of a problem. But I'm still working on finding a good solution for horizontal comic images.

At the bottom of the page, I put the National Weather Service's current radar, just to fill up remaining space, if any.

Art & Artifacts

Next, I thought it would be great to show some beautiful or inspiring artwork and images. To do that, I integrated with a variery of museum's APIs and data sets, including the Art Institute of Chicago, the The Metropolitan Museum of Art, Whitney Museum of American Art, The Rijksmuseum, Dallas Museum of Art, The Harvard Art Museum, NASA's Astronomy Picture of the Day, Réunion des musées nationaux – Grand Palais, or “Rmn-GP” for short, and the The National Gallery of Art.

The art page
The art page

Once again, sizing the images is the tricky part. I have to wait for the image to finish loading, using the imagesLoaded JavaScript library, and then resize them, taking into account whatever height the weather, date, time, and agenda take up, plus the little bit at the bottom of the image displaying creator, title, media, etc. It took a bit of experimenting, but works really well now.

Rmn-GP is a problematic one, often going down, or their image servers failing to return images in a timely manner, so I did have to write some code to check for broken or timed out images (using the imagesLoaded JavaScript library). That's too bad, because they have quite a collection from museums across France, some 600,000 images, including the Mona Lisa. You can get a taste for what they have at Google Arts & Culture.


All company and organization names, trademarks, registered trademarks, service marks, trade names, trade dress, product names and logos appearing on the site are the property of their respective owners.