Catfood Earth 4.30

Updated on Sunday, October 23, 2022

Catfood Earth Satellite Composite Image of Earth including Volcanoes and Earthquakes

Catfood Earth 4.30 is available to download.

This update fixes a couple of problems with the screensaver. It now has improved support for multiple monitors (the image will repeat rather than stretch). There was a problem with the screensaver not starting in some cases. This should now be fixed. After upgrading to 4.30 please find and run the 'Catfood Earth Screensaver Settings' shortcut to configure the screensaver.

4.30 also includes version 2022d of the time zone database.

(Related: Catfood Earth; Improving the accuracy of the new Catfood Earth clouds layer; Catfood Software Support)

(You might also like: Google Trends for 'impeach supreme court justice' This Week; San Francisco; Age and Life Expectancy Weighted Voting)

(All Code Posts)

Autumnal Equinox 2022

Catfood Earth render of the exact moment of the Autumnal (Fall) Equinox 2022.

Autumn (or Fall) starts now (23 September 2022, 01:04 UTC) in the Northern Hemisphere, Spring if you happen to be south of the Equator. Rendered in Catfood Earth.

(Related: Autumnal Equinox 2021; Autumnal Equinox 2014; Autumnal Equinox 2015)

(You might also like: Twenty-Four Hours with Twilio; Coronavirus Hikes: April 2020; ESRI Shapefile Reader in .NET)

(All Code Posts)

Catfood WebCamSaver 3.29.0002

Updated on Saturday, September 24, 2022

Catfood WebCamSaver 3.29.0002

Catfood WebCamSaver 3.29 is now available to download.

This release updates the webcam list and includes a selection of new webcams provided by a long-time user.

(Related: Catfood WebCamSaver; Catfood: WebCamSaver and PdfScan; ESRI Shapefile Reader in .NET)

(You might also like: Sutro Baths Timelapse; Email Alerts for new Referers in Google Analytics using Apps Script; Do useful things with the volume shadow copy service (VSS))

(All Code Posts)

Catfood WebCamSaver 3.28

Updated on Friday, June 24, 2022

Catfood WebCamSaver 3.28

Catfood WebCamSaver 3.28 is available to download.

This release updates the webcam list.

(Related: Catfood WebCamSaver; Fortune Cookies for Android; Catfood: WebCamSaver and PdfScan)

(You might also like: Stars over Lake Tahoe; Presidio Theatre; Moon, Sutro Tower (from Bernal Heights))

(All Code Posts)

Catfood WebCamSaver 3.27

Updated on Saturday, March 19, 2022

Catfood WebCamSaver 3.27

Catfood WebCamSaver 3.27 is available to download.

This release contains the latest webcam list and will upgrade any current set of webcams. I'm currently releasing updates for WebCamSaver every three months with the latest cams.

(Related: Catfood WebCamSaver; Catfood: WebCamSaver and PdfScan; Catfood Earth)

(You might also like: Clouds Over The Farallones; Is Intuit Insane?; Timelapse, Week of Jan 10)

(All Code Posts)

Catfood Earth for Android 4.20

Updated on Tuesday, January 25, 2022

Catfood Earth for Android 4.20

Catfood Earth for Android 4.20 adds support for Material You, the custom color scheme introduced in Android 12. By default every wallpaper update will also subtly change your system color palette. You can override this from settings -> Wallpaper & style and switch back to basic colors if you don't like the Catfood Earth colors. This update was surprisingly painful. You can install Catfood Earth from Google Play, or for existing users it will automatically update in the next day or so.

(Related: Catfood Earth; Catfood Software Support; Improving the accuracy of the new Catfood Earth clouds layer)

(You might also like: Email marketing - don't shoot yourself in the foot; Game of Death; Coronavirus Hikes: March 2020)

(All Code Posts)

The Secret Diary of a Xamarin Android Developer, Aged 48 1/3


I have been trying to update Catfood Earth for Android to support Material You in Android 12. This sets a color palette from your wallpaper and other than making notifications harder to manage seems to be the main thing that Google has been working on for the past year. Live wallpaper isn't automatically supported, it's up to you to tell the system about your colors.

Happily there is an overridable OnComputeColors in WallpaperService.Engine, and you can create a WallpaperColors object from a bitmap so this looked like a five minute update. Hahahahahahhahahahah.

I spent a few weeks waiting for the Android 12 SDK to be available in Xamarin. I found some pointers to their GitHub and assumed it would show up there and so waited a few weeks. It still isn't there. I found some article about forcing it to install in Visual Studio 2019 that didn't work for me, and then realized that Visual Studio 2019 update checks were crashing. While trying to fix that I found that Visual Studio 2022 has been released and this installs with the Android 12 SDK!

These days I work on side projects when I get the occasional free hour. Almost inevitably that hour is consumed with updating two or three things and then hoping that the next time I get some time at least I'll be ready to go. But when that hour arrives I'm back to updating again.

So finally I have the right SDK and drop in an OnComputeColors and a call to NotifyColorsChanged when my wallpaper is updated. Time to start testing. The good news is that Material You is now working with Catfood Earth selected as the current wallpaper. The bad news is that every time I call NotifyColorsChanged the launcher disappears and I'm just left with the wallpaper and no icons or search box. Probably not a good experience. I try moving the NotifyColorsChanged call around to different points in code and it makes no difference. This simple update is rapidly spiraling from minutes to days to weeks.

Maybe it's some Xamarin bug, or something in Android 12 or maybe a change in the solemn contract between live wallpaper services and the rest of the system. Can't find any hint of any of this on the Internet.

It's also possible that the bitmap I'm passing is too large or too complex or too something else. So let's try just sending back a simple WallpaperColors in OnComputeColors and see if that helps.

The Android documentation for WallpaperColors suggests that you can construct it from three colors which seems sensible. The Xamarin implementation takes ColorObject instead of Color. What is a ColorObject? The sparse Xamarin documentation suggests that it has an empty constructor that creates an opaque black color and then properties like Red that are read only. So an immutable black? That can't be right? When constructing a color the constructor would seem like a great place to tell the class what color it is. Failing that, a FromColor or FromArgb would seem to follow the right sort of convention. But no. You need to find ValueOf. To create a color that is a class and not a value. Sigh. Maybe that is some kind of deep Android convention that I would just know if I did this more often than once a year or so.

Although, maybe most Google Developers can't figure out how to make a non-black color and that's the origin of Material Design 2. Everything else is just marketing rationalization on top of a terrible API.

Finally I have a simple WallpaperColors to test with but my build has broken. At some point while figuring out how to get a ColorObject that isn't black I thought a NuGet package would help. My project is now completely broken. My experience with touching NuGet is that you can either spend several days unpicking the carnage or just start over. Git reset --hard  HEAD it is then.

After quickly reimplementing the changes so far, returning a vanilla WallpaperColors object works... and so does the FromBitmap version. So 90% chance that I bodged something subtle the first time and didn't make the mistake on the second pass. 10% chance it was something strange in Visual Studio.

(Related: Got It; 1,000th Post!; Export Google Fit Daily Steps, Weight and Distance to a Google Sheet)

(You might also like: bye, bye, Miss Deprecated API; Enable GZIP compression for Amazon S3 hosted website in CloudFront; Tree)

(All Code Posts)

Winter Solstice 2021

Winter Solstice 2021

Winter Solstice 2021 rendered in Catfood Earth (15:59 UTC, December 21, 2021). Winter begins in the northern hemisphere, summer if you happen to be south of the equator.

(Previously: Winter Solstice 2020)

(Related: Winter Solstice 2017; Winter Solstice 2020; Winter Solstice 2015)

(You might also like: ASCII Sunset; Robot Ahead; Correlation is not causation but...)

(All Code Posts)

Catfood WebCamSaver 3.26

Updated on Saturday, February 19, 2022

Catfood WebCamSaver 3.26

Catfood WebCamSaver 3.26 is available to download.

This update includes the latest list of webcams. It has also been updated to use .NET 4.8 which means it will install with no additional downloads needed on Windows 10 and 11. The installer is now signed. You might get a warning from Defender about the program being infrequently used, you will need to ignore this to install. Lastly WebCamSaver will now automatically check for updates so you'll get a desktop notification when a new version is available.

(Related: Catfood WebCamSaver; Monitor page index status with Google Sheets, Apps Script and the Google Search Console API; ESRI Shapefile Reader in .NET)

(You might also like: SETIcon 2; Worst special TiVo offer ever; Has France Cracked Fixing Education?)

(All Code Posts)

Catfood Earth 4.20

Updated on Saturday, December 4, 2021

Catfood Earth 4.20

Catfood Earth 4.20 is available to download.

This update includes the 2021d time zone database.

After procrastinating for far too long I have also migrated to .net 4.8 and renewed my code signing certificate. You'll get at least one less warning when installing and you no longer need to enable .net 3.5 on Windows 10 which was a pain. This shouldn't make any difference but please let me know if you have any trouble installing or running this version.

(Related: Catfood Software Support; Catfood Earth; I just want to get rid of Windows 10 Notifications with one click)

(You might also like: Bernal Bug; Winter Solstice 2019; Long term solar powered time lapse camera using Arduino)

(All Code Posts)