Winter Solstice 2016

Winter Solstice 2016

This is the first time I've been late with a solstice or equinox post. On the 21st of December at 10:44 UTC it was the start of Winter for the Northern hemisphere, Summer down south. Rendered in Catfood Earth (back dated to the right date and time... Windows, Android).

(Previously, Previously, Previously)

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: Winter Solstice 2016 #code #earth #solstice #winter #summer #hibernal #southern The exact moment of Winter Solstice 2016 rendered in Catfood Earth. )

Enable GZIP compression for Amazon S3 hosted website in CloudFront

Updated on Tuesday, November 12, 2019

Enable GZIP compression for Amazon S3 hosted website in CloudFront

By default compression doesn't work in CloudFront for a website backed by an Amaxon S3 bucket.

The first step is pretty obvious - switch on compression in CloudFront:

Compress Objects Automatically option in Amazon CloudFront

To get to this setting open you distribution, go to the Behaviors tab and edit your behavior(s). Scroll down to the bottom and toggle Compress Objects Automatically to On. Save and drum your fingers while the distribution updates.

The less obvious piece is that CloudFront will only compress files between 1,000 and 10,000,000 bytes (as of writing this post) and it detects the filesize from the Content-Length header. What the documentation doesn't mention is that S3 does not send the Content-Length header by default and so no compression is applied.

Go to S3 and open the properties for your bucket (not for individual files). Expand Permissions and then click Edit CORS Configuration. You need to add Content-Length as an allowed header like this:

Amazon S3 CORS Configuration

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: Enable GZIP compression for Amazon S3 hosted website in CloudFront #code #software #s3 #cloudfront #aws How to configure Amazon CloudFront to apply gzip compression for websites hosted using Amazon S3 (Simple Storage Service) )

Autumnal Equinox 2016

Autumnal Equinox 2016

It's Autumn in the Northern Hemisphere, Spring down south. Rendered in Catfood Earth (Windows, Android).

(Previously, Previously, Previously)

Add your comment...

Related Posts

(All Code Posts)

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

Summer Solstice 2016 in Catfood Earth

Summer Solstice 2016 in Catfood Earth

It's the start of Summer (or Winter in the Southern Hemisphere). Unusually for June it even feels like Summer in San Francisco today. Rendered in Catfood Earth (Windows, Android).

(Previously, Previously, Previously)

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: Summer Solstice 2016 in Catfood Earth #code #solstice #summer #winter #earth #northern #estival The exact moment of Summer Solstice 2016 as rendered in Catfood Earth )

Catfood Earth 3.42

Updated on Monday, May 31, 2021

Catfood Earth 3.42

Catfood Earth 3.42 is a small update to the latest (2016d) timezone database and the latest timezone world and countries maps from Eric Muller. If you use the political borders, places or time zones layers in Catfood Earth then you'll want to install this version.

Download the latest Catfood Earth.

(Previously)

Add your comment...

Related Posts

(All Code Posts)

Automate Google PageSpeed Insights and Core Web Vitals Logging with Apps Script

Updated on Friday, September 30, 2022

Upload

Here's a quick script to automatically monitor your Google PageSpeed Insights desktop and mobile scores for a web page, together with core web vitals (LCP, FID and CLS):

You need a spreadsheet with a tab called results and an API key for PageSpeed Insights (activate the API in the console and create an API key for it, the browser based / JavaScript option). Paste the code above into the script editor for the spreadsheet and add your API key and URL to monitor. Then just choose triggers from the Resources menu and schedule the monitor function to run once per day.

The script will log the overall PageSpeed score out of 100 for the monitored page. It also logs 75th percentile origin level core web vitals (largest contentful paint (LCP, seconds), first input delay (FID, seconds) and cumulative layout shift (CLS, percent)). If your origin does not have enough data the metric will be omitted. You can change from origin to page level web vitals if you have enough data, just change originLoadingExperience to loadingExperience in the script.

The results are repeated for desktop and mobile, so your spreadsheet header should be Desktop PSI, Desktop LCP, Desktop FID, Desktop CLS, Mobile PSI, Mobile LCP, Mobile FID, Mobile CLS.

There are a lot of other values returned (like number and types of resources on the page) that you could choose to monitor as well. It would also be easy to extend this to monitor more URLs, or to send you an email if the score drops below a threshold.

Updated May 5, 2019 to use version 5 of the PageSpeed API.

Updated June 13, 2021 to include core web vitals.

Add your comment...

More Google Apps Script Projects

(All Code Posts)

(Published to the Fediverse as: Automate Google PageSpeed Insights and Core Web Vitals Logging with Apps Script #code #google #appsscript #gas #pagespeed How to automatically monitor page load performance using the Google PageSpeed Insights API and Apps Script )

Vernal Equinox 2016

Vernal Equinox 2016

It's the start of Spring, unless you're equatorially challenged in which case welcome to Autumn.

Rendered in Catfood Earth (Windows, Android).

(Previously, Previously)

Add your comment...

Related Posts

(All Code Posts)

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

Catfood Software Support

Updated on Sunday, December 18, 2022

Catfood Software Support

Need help with a Catfood Software product? Please leave a comment below.

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: Catfood Software Support #code #software #support #earth #webcamsaver #pdfscan #fortune #weather #mail #nosleep #camsaver #ftp #cookies The fastest way to get support for Catfood Software is to leave a comment on this post. Includes Catfood Earth and WebCamSaver. )

Get an email when your security camera sees something new (Apps Script + Cloud Vision)

Updated on Saturday, February 12, 2022

Get an email when your security camera sees something new (Apps Script + Cloud Vision)

Nest (previously DropCam) can email you when it detects activity but that gets boring quickly. How about an email only when it sees something totally new?

The script below downloads a frame from a web cam and then calls the Google Cloud Vision API to label features. It keeps a record of everything that has previously been seen and only sends an email when a new feature is detected. You could easily tweak this to email on a specific feature (i.e. every time your dog is spotted), or to count the number of times a feature appears. I'm using a Nest cam but any security camera that has a publicly visible image download URL will work.

There is a bit of setup to get this working. Create a new Apps Script project in Google Drive and paste the code above in. You'll need to provide you own values for the three variables at the top.

OAuthCreds is the contents of the JSON format private key file for a Google Developer Console project. Go to the console, create a new project and enable the Cloud Vision API. You'll also need to enable billing (more on this below) - a trial account will work fine for this. Once the API is enabled create a service account under Credentials and download the JSON file. Just paste the contents of this into the script.

That's the hard part over. Now enter the URL of the image to monitor (see this post for instructions on finding this for a Nest / DropCam device) as MonitorImageUrl and your email address for SendEmailTo.

One last thing - follow the instructions here to reference the OAuth2 for Apps Script library.

Once this is all done run the script (the main() function) and authorize it. You should get an email with a picture attached and a list of the labels detected together with a confidence score from 0 to 1. If this doesn't happen check the logs (under the View menu).

You can now schedule the script to run repeatedly (Resources -> Current project's triggers). You get up to 1,000 units a month for free so once an hour should be safe. If you need more frequent updates check the Cloud Vision pricing guide for details.

After a few runs you should only get an email when something new is detected. If you're seeing too many wild guesses then add a filter on the score to exclude low confidence features.

Enjoy, and leave a comment if you have problems (or modify this in interesting ways).

(Previously)

Add your comment...

More Google Apps Script Projects

(All Code Posts)

(Published to the Fediverse as: Get an email when your security camera sees something new (Apps Script + Cloud Vision) #code #drive #google #dropcam #nest #appsscript #vision How to use Apps Script and the Google Cloud Vision API to monitor a webcam and send email when it spots something new )

Shapefile Update

Updated on Sunday, May 23, 2021

A few people have asked for 3D shape support in my ESRI Shapefile library. I've never got around to it, but CodePlex user ekleiman has forked a version in his ESRI Shapefile to Image Convertor that supports PointZ, PolygonZ and PolyLineZ shapes. If that's what you need please check it out.

Add your comment...

Related Posts

(All Code Posts)