UTM Zone WGS84 Latitude Longitude Bounding Box

We are using to calculate the UTM Easting/Northing values for a given pair of WGS84 Latitude/Longitude coordinates. But I couldn't find an easy way to determine the correct UTM Zone for a WGS84 coordinate pair. The Zone had to be provided for the library to calculate the Easting/Northing values. I wanted the library to decide the best UTM zone based on the lat/lng coordinates.

To assist with this, I created the following table containing the "bounding box" lat/lng values for each UTM Zone in North America.

Test Code and CSV file:

The easiest way I found to determine these values was to use the centroid point for each UTM Zone, then add +/- 4 degrees Latitude (North/South) and +/- 3 degrees Longitude (East/West).

I have also provided some C# code to convert these into arrays, and then an example using a "point in polygon" function to determine the appropriate UTM Zone.

Hope this helps,

Azure HTTP Web Server Logs to SQL

If you enable File System Web Server logs for your Azure App Service...

Settings > Diagnostics logs > Web server logging > File System

You'll start to see logs on the file system for your app service here:

(you can find your FTP host and credentials in the publish profile file)


Alternatively, you can see these logs through the Kudu UI:


Instead of downloading these one and a time and parsing through them, you can use the following library to assist in loading them into a relational database.

You could even run this as a webjob within your app service.

Get the code here:

**Update: This repo now includes a web project that references the console app as a WebJob.

You may also want to check out the LogParser tool by Microsoft…

Store Amazon SES Delivery Notifications in DynamoDB using SNS and Lambdas

I spent way too much time configuring my Amazon AWS account to store Simple Email Service SES Delivery Notifications to a DynamoDB Table. I thought I'd put this guide together to hopefully help future developers.

This guide does not currently cover these topics, but I may include them in the future:
1. Setting up your Amazon AWS Account.
2. Setting up Amazon SES. (dkim, domain/email identities, etc.)
3. Integration with Amazon SES from your app.
4. SNS Topic creation/configuration.

1. Amazon AWS account has been created/configured.
2. Amazon SES has been created/configured.
3. Amazon SNS Topic has been created/configured.
4. Delivery Notifications for the Amazon SES Domain Identity have been configured to be sent to the SNS Topic.
5. Your app is integrated with Amazon SES and successfully sending email.

Step by Step Guide to Storing SES Delivery Notification messages into a DynamoDB Table:

So at this point, you're successfully integrated with Amazon Simple Email S…

Update Azure SQL Firewall Rule using PowerShell (update 2018)

Microsoft Azure SQL only allows connections from whitelisted IP addresses. My ISP seemed to change my external/public IP address daily. The combination of these two things was very annoying for me.

I assembled the powershell script below to make my life a little easier. It updates the firewall rule for each Azure SQL instance, and ensures they are all set to my current IP address.

Note: There are two categories of Azure PowerShell scripts/cmdlets. There are Resource Management cmdlets and Service Management cmdlets. I will describe how to perform this task with both below:

Service Management (the older way)
1. Install and Configure

2. Execute Get-AzurePublishSettingsFile to get the publishsettings file for the subscription you're going to be working with (a browser window will open, select the profile there. Note: you can add multiple publish settings.).

3. Execute Import-AzurePublishSettingsFile and provide the path to the f…

Convert SQL Server Varbinary to Byte Array

I had a need to convert the HEX output from SQL Server Management Studio's Results to Grid output of a varbinary column back to the byte array of the file it represented. I couldn't find an all-in-one script online, so I thought I'd create this C# gist. (original parse script here)

Hope this helps,