Autumnal Equinox 2020

Autumnal Equinox 2020

Autumn starts now (September 22, 13:31 UTC) north of the Equator, Spring to the south. Rendered in Catfood Earth.

(Previously: Autumnal Equinox 2019)

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: Autumnal Equinox 2020 #code #catfood #earth #equinox #autumnal The exact moment of Autumnal Equinox 2020 as rendered in Catfood Earth. )

Catfood Earth 4.01

Updated on Monday, May 31, 2021

Catfood Earth 4.01 is available for download.

The timezone database has been updated to 2020a. There is also a small fix to a problem with screensaver installation on recent versions of Windows 10.

Add your comment...

Related Posts

(All Code Posts)

Catfood WebCamSaver 3.21

Updated on Sunday, September 5, 2021

Catfood WebCamSaver 3.21 is available for download.

This update fixes a screensaver install issue on recent versions of Windows 10 and has the latest webcam list.

Add your comment...

Related Posts

(All Code Posts)

Summer Solstice 2020

Updated on Saturday, February 19, 2022

Summer Solstice 2020

In 2020 the Summer Solstice is at 9:44pm UTC on June 20.

We get solstice from the Latin sol (sun) and sistere (to cause to stand) - the moment when the Sun stands still in its journey from north to south and back again.

Summer Solstice is the instant when the Sun is at its highest point in the sky, on the longest day of the year for the Northern hemisphere. This happens because the Earth is tilted by a little over 23 degrees (our planet rotates once a day, but relative to our orbit around the Sun the axis of rotation is at an angle). As we orbit the Sun this tilt means that different latitudes experience more or less sunlight over the course of a year. This pattern is most extreme near the poles. In the Arctic Circle the Sun never sets at the height of summer and never rises in the depth of winter. We mark two solstices each year, summer and winter. At the Summer Solstice the Sun is directly over the Tropic of Cancer (a little over 23 degrees north). We also observe two equinoxes, spring and fall (vernal and autumnal), halfway through the cycle when the Sun is directly over the Equator and a day is the same length everywhere.

The video below shows how the pattern of day and night changes over one year. You can see when the poles are completely dark or light, and the moment when the Sun 'stands still' before days start to get longer or shorter again.

Here's another perspective. This video shows a view from San Francisco made from pictures that each show a complete day (each vertical line on the picture was shot at a different time with noon at the center). You can see the length of day changing throughout the year. On less foggy days you can also see the position of sunset moving, especially with the days getting longer towards the end when San Francisco experiences less fog.

Summer Solstice isn't always on June 20th - sometimes it's June 21st or June 22nd. Irritatingly a day on your clock is not the same as a solar day and a calendar year is not the same thing as one trip around the Sun. This is why we have leap years and leap seconds to stay roughly in sync with celestial mechanics.

It's also interesting to note that Summer Solstice isn't when we're closest to the Sun or when temperatures are the highest. The Earth's orbit is elliptical and we're actually furthest away around the Summer Solstice (for now - this changes over time). Our Northern hemisphere summer is driven by sunlight hitting us directly rather than at an angle (seasons are driven by the 23 degree tilt and the position of the orbit more than our distance from the Sun). Temperatures continue to rise after the Summer Solstice mainly because it takes a while to heat up water, and so warmer weather lags the increase in direct sunlight (and vice versa as we head into colder weather after the Winter Solstice).

The exact moment of Summer Solstice pictured at the start of the post and the video of day/night over a year were created using Catfood Earth. Catfood Earth generates wallpaper from NASA Blue and Black Marble images to show the current extent of day and night combined with near real time cloud cover. Catfood Earth is totally free and available for Windows and Android.

(Previously)

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: Summer Solstice 2020 #code #solstice #summer #winter #earth #northern #estival #video In 2020 the Summer Solstice is at 9:44pm UTC on June 20. Summer Solstice is the moment when the Sun is at its highest point in the sky, on the longest day of the year for the Northern hemisphere. This happens because... )

4K One Year Global Cloud Timelapse

Updated on Saturday, February 19, 2022

Hurricane Dorian in Catfood Earth

Six 4K images a day at 24 frames per second (so each second is four days) from April 18, 2019 to April 17, 2020:

I made a version of this video a couple of years ago using xplanet clouds. That was lower resolution and only had one frame per day so it's pretty quick. This version uses the new 4K cloud image I developed for Catfood Earth just over a year ago. I've been patiently saving the image six times a day (well, patiently waiting as a script does this for me). It's pretty amazing to see storms developing and careening around the planet. The still frame at the top of the post shows Dorian hitting Florida back in September.

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: 4K One Year Global Cloud Timelapse #code #software #video #timelapse #animation #clouds #earth Animation of a year of global cloud cover from April 18, 2019 to April 17, 2020. You can see storms developing and careening around the planet. Rendered from six daily 4K images. )

Using the Azure Monitor REST API from Google Apps Script

Updated on Saturday, February 12, 2022

Average Server Response Time in Azure Metrics

This post describes how to get metrics (in this case average response time) from an Azure App Service into a Google Sheet. I’m doing this so I can go from the sheet to a Data Studio dashboard. I already have a report in Data Studio that pulls from Ads, Analytics and other sources. I’d rather spend hours adding Azure there than be forced to have one more tab open. You might have different reasons. Read on. 

  1. Create a Google Sheet and give it a memorable name. Rename the first sheet to AvgResponseTime and put ‘Date’ in A1 and ‘Average Response Time’ in B1.
  2. Create a script (Script editor from the Tools menu) and give that a good name as well.
  3. In the script editor pick Libraries from the Resources menu. Enter 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF which is the Google OAuth library, pick the latest version and click Save.
  4. Select Project properties from the File menu and make a note of the Script ID.
  5. Log into your Azure Console and then go to https://resources.azure.com/. You are looking for a metricdefinitions node for the resource that you want to monitor. In my case it’s subscriptions / MyName Subscription / resourceGroups / providers / Microsoft.Web / sites / MySite / metricdefintions. Browse through this list to find the id of the metric you’re interested in. For me it’s AverageResponseTime. Finding this was the hardest part. Microsoft’s documentation for resourceUri is literally ‘The identifier of the resource.’ Why even bother Microsoft? Make a note of the id and remove the ‘metricDefinitions/AverageResponseTime’ from the end, because of course the ID isn’t quite right for some reason. Mine looks something like this: /subscriptions/mylongid/resourceGroups/mysomethingResourceGroup/providers/Microsoft.Web/sites/mysiteid
  6. Go back to the Azure Console and open Azure Active Directory. Select App registrations under Manage and create a New registration. Time to come up with another name. You probably want ‘Accounts in this organizational directory only’. The redirect URL is https://script.google.com/macros/d/SCRIPTID/usercallback - replace SCRIPTID with the Script ID you made a note of in step 4.
  7. Click the View API permissions button, then Add a permission and then pick Azure Service Management. I’m using Delegated permissions and the user_impersonation permission. Then click Grant admin consent for Default Directory.
  8. Go to Certificates & secrets (under manage) and create a new client secret. Make a careful note of it.
  9. Go to Authentication (under Manage), check Access tokens under Implicit grant and then click Save at the top of the page.
  10. Go to Overview and make a note of your Application (client) ID and Directory (tennant) ID.
  11. You are getting close! Go to the script editor (from step 2) and paste in the code at the bottom of this post. There are four variables to enter at the top of the script. ClientID and TennantID are from step 10. ClientSecret is from step 8. ResourceID is from step 5. Save the script.
  12. Reload the spreadsheet (back from step 1). You should get an Azure Monitor menu item. Choose Authorize from this menu. Google will ask you to authorize the script, do this for the Google account you’re using. Choose Authorize again, this time a sidebar will appear with a link. Follow the link and authorize against Azure (if you’re logged in this might just go directly to success). If you get authorization errors in the future run this step again. If that does help use Reset Settings and then try again.
  13. You should be ready to get data. Choose Fetch Data from the Azure Monitor menu. If this doesn’t work check through steps 1-12 carefully again!
  14. Last step - automate. Go back to the script editor. Choose Current project’s triggers from the Edit menu. Add a trigger (the small blue button hidden at the bottom right of the screen - not everything needs a floating action button Google!) to run fetchData daily at some reasonable time.
You should now have a daily record of average response time flowing to a Google sheet. This can easily be extended to support other metrics, and other time periods (you could get data by minute and run the script hourly for instance. See the metrics documentation for more ideas. I got this working for an App Service but it should be roughly the same flow for anything that supports metrics, you’ll just need to work on finding the right resourceUri / ID.

Add your comment...

More Google Apps Script Projects

(All Code Posts)

(Published to the Fediverse as: Using the Azure Monitor REST API from Google Apps Script #code #azure #appsscript #gas #google #microsoft How to call the Azure Monitor REST API via OAuth from Google Apps Script. Worked example shows how to log average response time for an Azure App Service. )

Backup locked files on Windows 10: Volume Shadow Copy Update

Updated on Friday, January 13, 2023

Demo of ShadowTask

The Volume Shadow Copy Service (VSS) can be used to mount a copy of a drive in a crash consistent state (like you just unplugged your computer) as a different drive letter. My shadow task command line tool makes it easy to do this. Here's an example:

ShadowTask64 C V test.bat

This creates a shadow copy of the C: drive, mounts it as V: and then runs test.bat. When test.bat completes the shadow V: drive is removed.

What can you do with this?

The simple case is grabbing a copy of a locked file. In this case test.bat could just run pause and then grab the file you need from V:.

It's also a great way to run a backup. In this case the batch file can run XCOPY (to a network share or portable drive) and you'll get all your files including anything locked like running executables or Outlook PST files.

Grab the latest from GitHub: abfo/shadow/releases. You'll find a ZIP file and source code if you want to use/extend this. There are 32 and 64-bit binaries - you need to use the right one for your computer and you also need to run the tool with administrative privileges. This only works with NTFS drives.

(Previously)

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: Backup locked files on Windows 10: Volume Shadow Copy Update #code #vss #backup Command line tool that mounts a shadow copy of any NTFS drive in Windows 10 so you can grab a locked file or run a complete crash-consistent XCOPY backup. )

Vernal (Spring) Equinox 2020

Spring Equinox 2020 rendered in Catfood Earth

Spring starts right now in the Northern Hemisphere (Autumn if you find yourself south of the Equator). Rendered in Catfood Earth.

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: Vernal (Spring) Equinox 2020 #code #earth #equinox #spring #autumn #vernal The exact moment of Vernal (Spring) Equinox 2020 as rendered in Catfood Earth. )

Catfood Earth for Android 4.00

Updated on Monday, May 31, 2021

Catfood Earth for Android 4.00

Catfood Earth for Android 4.00 is available for download and is updating through the Google Play Store.

As with the 4.00 update for Windows all images have been remastered to 4K resolution. Earth for Android has also been updated to better support Android 10 (updates are faster and the settings layout looks much better). You'll need to grant location permission in settings to have Earth automatically center on your current location. It's also possible to set a center longitude manually (I find -90 works well for centering most of the Americas).

Add your comment...

Related Posts

(All Code Posts)

Catfood WebCamSaver 3.20

Updated on Sunday, September 5, 2021

Catfood WebCamBrowser

Catfood WebCamSaver 3.20 is available for download.

WebCamSaver is a Windows screensaver that shows you a feed from open web cameras around the world. It also includes WebCamBrowser which allows you to explore the directory and launch a URL where you can control each cam.

Version 3.20 includes an updated list of working webcams - if you are an existing user this will replace any current list the first time you run the updated version.

(Previously)

Add your comment...

Related Posts

(All Code Posts)