Category Archives: Programming

Related to some aspect of programming, software development, related tools, or supporting technologies, related standards, etc.

Talk: Logic Apps at Boston Azure

Last night’s Boston Azure meetup featured two talks – No App Left Behind by Kevin Brown of SoftNAS after an opening talk on Logic Apps by me. My slides are below.

I did not have time to show it, but the Slack => Email process did succeed. I saw this later when I checked my email. Subject: bill-tux-full.png, Body: 1504739903F6YKE996C bill-tux-full.png bill-tux-full.png. And you can see the photo for yourself in the Boston Azure slack #demo channel.

If you’d like to learn more about Serverless Azure, check out these upcoming talks: Azure Functions and Logic Apps Thu Sep 7 in NHAzure Functions Thu Sep 14 in Cambridge MA (NERD), and various playing of Serverless Azure (Azure Functions and Logic Apps) on Sat Sep 16 in Burlington Vermont, Tue Sep 26 in Burlington MA, and (if my talk is accepted for the Sharepoint event) Sat Oct 28 in Burlington MA.

As always, please let me know if you are interested in more talks at Boston Azure. 🙂

Advertisement

Talk: When NOT to use PowerShell with Azure

Today at PowerShell in Action I spoke twice about not going TOO far in your PowerShell when managing Azure resources.

The point of the talks wasn’t really that using PowerShell is bad/wrong, more that it might not be the best tool for the job in certain scenarios. In particular, an ARM template is a powerful modeling tool in support of a “no pets” policy, which is interesting to consider as your cloud environments grow more complex while also wanting to make environments easier to manage. Another benefit stems from keeping the ARM template itself as an “infrastructure as code” artifact that can be used to document – and, more to the point, as executable documentation – for stamping out environments predictably. And still another feature: the ARM runtime handles a lot of the complex parts that could come by trying to script one resource at a time via imperative PowerShell scripts – for example, error recovery and retries.

The deck is on the event shared github repo.  There are lots of otherPowerShelly resources on that repo that you may find worth checking out.

(Added 03-June) For those of you who attended my Advanced session, when I attempted to clean up at the end using Remove-AzureRmResourceGroupDeployment, my PowerShell command had an error in it. Here is the correct version. In the first screen shot I show how to ascertain the correct value for  the first the parameter using Get-AzureRmResourceGroupDeployment.

Get-AzureRmResourceGroupDeployment

Remove-AzureRmResourceGroupDeployment `
   -Name Microsoft.Template -ResourceGroupName k1

Remove-AzureRmResourceGroupDeployment.png

Once that PowerShell command executed, all 8 resources associated with that deployment were removed (deleted, and billing stopped).

Ta da!

Hope to see all you locals at Boston Azure (@bostonazure) in the future for more Azurey action.

Talk: Spy vs. Spy (SQL Server vs. SQL #Azure SQL DB) at @NorthBTownAzure

Last night I spoke at the North Boston Azure cloud group, where the topic was Azure SQL Database – not just a cloud version of SQL Server. So much of the talk was interactive — a really high-energy discussion — big thanks to Jason for hosting me and to the group for a great conversation.

Here’s the deck I used:

comparing-azure-sql-database-and-sql-server-North-Boston-Azure-28-Mar-2017-bill-wilder

And here is some of the CLI 2.0 action, including the last line to clean up a resource group:


az login
az account set --subscription MySubscriptionName
./show-resourcegroup-contents.sh nbazure
z group delete -n nbazure --no-wait

Talk: my two talks from the 27th @BostonCodeCamp: 1. MFA & 2. #Azure Security Tips #boscc

Today the amazing Boston technology community put on their 27th Boston Code Camp. As usual, there were tons of great talks.

I presented twice. Materials are below.

Talk #1: 2FA, MFA, 2SA, OTP, RFP, OMG, WTF? How MFA works. 

Deck #1: BostonCodeCamp27-MFA-BillWilder-2017-Mar-25

Talk #2: 18 Specific Azure Security Tips. 

Deck #2: BostonCodeCamp27-18AzureSecurityTips-BillWilder-2017-Mar-25

 

 

Talk: SecureWorld Boston 2017 #SWBOS17- Using Public Cloud Platforms to Increase Enterprise Security

Spoke earlier today at SecureWorld Boston on Using Public Cloud Platforms to Increase Enterprise Security.

Deck is below:

SecureWorld Boston 2017 – Bill Wilder – Improving Enterprise Security with the Public Cloud – PUBLISHED

 

 

Talk: #Azure Cloud Platform – Guest Lecture for Zoran’s Harvard Class

Thanks Zoran for having me back again this year as a guest lecturer to help ensure your students don’t think AWS is the only cloud in the sky!

At the end I attempted to show how I could use the CLI from my macbook to clean up all my demo resources at once by deleting the containing resource group. It failed because I got the syntax wrong. I was typing something like azure resource delete Zoran, but ‘resource’ should have been ‘group’ and I failed to realize that at the time. I ran the correct command when I got home and it worked better. Here is my evidence… 🙂

delete-group

In case folks were wondering, the PowerShell command equivalent to azure group delete is:

Remove-AzureRmResourceGroup

The patterns I dug into are discussed in my book in chapters 2 (horizontal scaling) and 3 (queue pattern):

book-cover-medium.jpg

Talk: IoT has a dark side; #Azure DNS can help; Happy 7th Bday @BostonAzure

Boston Azure is 7 years old!

At today’s October Boston Azure meeting, we celebrated turning 7 years old, and had two talks. I presented one talk related to the Dyn DDoS outage from Friday Oct 21, which illustrated the dark side of IoT since it was used to power a huge DDoS attack on Dyn, taking down Netflix, Github, Spotify, and lots of other sites as collateral damage. In my talk I explained some of the background and how we addressed it with Azure DNS.

Here’s the deck for the “IoT has a dark side” talk:

Jim O’Neil provides some resource relating to his talk. There are listed AS A COMMENT on the meeting page (scroll below the meeting description page to comments – Meetup.com does not allow changing a meeting description after the meeting begins, so amendments tend to be as comments).

And here’s a photo of the evening – taken by @jimoneil (Jim), showing (L->R) Mark (@MHEisenberg), I’m in the middle (@codingoutloud), and @nazik_huq (Nazik Huq) – all who have helped @bostonazure (Boston Azure) thrive through the years. And not to forget about some others who were not present – like @georgebabey (George Babey), @haleyjason (Jason Haley), Michael Stiefel, and @squdgy (Maura Wilder) – who have all deserve credit for the success of the group through the years.

cv0rnylxyaetg_k

And finally, here’s Jim, the event’s featured speaker and the photographer and tweeter of the above photo. I think this photo was taken by @nazik_huq (Nazik Huq).

highres_455490152

Talk: Azure SQL Database – Not just a cloud version of SQL Server

Earlier today I presented at the Get to know SQL Server 2016 / Business Intelligence / Azure event at 1cc. My talk was “Azure SQL Database: Not just a cloud version of SQL Server” to an inquisitive Cambridge audience.

My deck is here: Azure SQL Database – not just a cloud version of SQL Server – NESQL -June-24-2016 – Bill Wilder – posted

The PowerShell script I demo’d is included in the gist referenced below.


$subName = 'my azure subscription name here'
$rgName = 'nesql-june24-demo2'
$region = "East US"
$serverName = 'billwilder911'
$myIp = "107.92.120.203" #### CHANGES A LOT!
Add-AzureRmAccount # then log in interactively, including with 2FA
Select-AzureRmSubscription SubscriptionName $subName
# How many regions am I allowed to deploy SQL to?
$sqlRegionCount = (Get-AzureRmResourceProvider ListAvailable | Where-Object {$_.ProviderNamespace -eq 'Microsoft.Sql'}).Locations.Length
Write-Host "$sqlRegionCount regions available for creating Azure SQL Databases:"
(Get-AzureRmResourceProvider ListAvailable | Where-Object {$_.ProviderNamespace -eq 'Microsoft.Sql'}).Locations
# create a RESOURCE GROUP for this demo
New-AzureRmResourceGroup Name $rgName Location $region
(Get-AzureRmResourceGroup Name $rgName).Location
# create a DATABASE SERVER
New-AzureRmSqlServer ResourceGroupName $rgName ServerName $serverName Location $region ServerVersion "12.0"
#create a DATABASE FIREWALL RULE
New-AzureRmSqlServerFirewallRule `
ResourceGroupName $rgName `
ServerName $serverName FirewallRuleName "one ip to rule them all" `
StartIpAddress $myIp EndIpAddress $myIp
# -AllowAllAzureIPs
# create a DATABASE ************************************
Get-AzureRmSqlCapability LocationName $region
$dbName = 'BillDb'
$dbEdition = "Basic"
$dbLevel = "S0" # https://azure.microsoft.com/en-us/documentation/articles/sql-database-service-tiers/
$dbLevel = "Basic" # https://azure.microsoft.com/en-us/documentation/articles/sql-database-service-tiers/
$db = New-AzureRmSqlDatabase ResourceGroupName $rgname `
ServerName $serverName `
DatabaseName $dbname `
Edition $dbEdition `
RequestedServiceObjectiveName $dbLevel
$db
Write-Host "Firewall?"
Write-Host "${dbName}.database.secure.windows.net"
# comment out to NOT delete right away
Write-Host "Remove-AzureRmResourceGroup -Name $rgname -Force"
$subName = 'Bill Wilder – Finomial MSDN(Converted to EA)'
$rgName = 'nesql-june24-demo2'
$region = "East US"
$serverName = 'billserver981'
$myIp = "107.92.120.203" #### CHANGES A LOT!
Add-AzureRmAccount # then log in interactively, including with 2FA
Select-AzureRmSubscription SubscriptionName $subName
# How many regions am I allowed to deploy SQL to?
$sqlRegionCount = (Get-AzureRmResourceProvider ListAvailable | Where-Object {$_.ProviderNamespace -eq 'Microsoft.Sql'}).Locations.Length
Write-Host "$sqlRegionCount regions available for creating Azure SQL Databases:"
(Get-AzureRmResourceProvider ListAvailable | Where-Object {$_.ProviderNamespace -eq 'Microsoft.Sql'}).Locations
# create a RESOURCE GROUP for this demo
New-AzureRmResourceGroup Name $rgName Location $region
(Get-AzureRmResourceGroup Name $rgName).Location
# create a DATABASE SERVER
New-AzureRmSqlServer ResourceGroupName $rgName ServerName $serverName Location $region ServerVersion "12.0"
#create a DATABASE FIREWALL RULE
New-AzureRmSqlServerFirewallRule `
ResourceGroupName $rgName `
ServerName $serverName FirewallRuleName "one ip to rule them all" `
StartIpAddress $myIp EndIpAddress $myIp
# -AllowAllAzureIPs
# create a DATABASE ************************************
Get-AzureRmSqlCapability LocationName $region
$dbName = 'BillDb'
$dbEdition = "Basic"
$dbLevel = "S0" # https://azure.microsoft.com/en-us/documentation/articles/sql-database-service-tiers/
$dbLevel = "Basic" # https://azure.microsoft.com/en-us/documentation/articles/sql-database-service-tiers/
$db = New-AzureRmSqlDatabase ResourceGroupName $rgname `
ServerName $serverName `
DatabaseName $dbname `
Edition $dbEdition `
RequestedServiceObjectiveName $dbLevel
$db
Write-Host "${dbName}.database.secure.windows.net"
Write-Host "Run this later to delete this resource group containing database server and database"
Write-Host "Remove-AzureRmResourceGroup -Name $rgname -Force"
#Remove-AzureRmResourceGroup -Name $rgname -Force

Talk: Comparing Azure SQL Database and SQL Server

I spoke tonight at the New England SQL Server Group to a large audience of feisty SQL experts. Thanks for all the tough questions. And thanks to George for backing me up on questions I couldn’t answer.

Abstract:

The Microsoft Azure cloud platform offers a service called Azure SQL Database. How does this compare to SQL Server, the venerable boxed product so many DBAs have come to know and love? In this talk from long-time Azure MVP Bill Wilder, we will look at similarities and differences. We will also briefly talk about complementary data storage sources that may also interest DBAs. At the end of the talk, you will understand the big picture of database options in the cloud, how Azure SQL Database is positioned and stacks up relative to SQL, and leave with an appreciation of key scenarios where it might make sense to use one over the other.

One thing I didn’t get to work was the PowerShell cleanup at the end. I ran it later and here is the code (the last line is the one I botched during the demo):

Add-AzureRmAccount # then log in interactively, including with 2FA 🙂
Select-AzureRmSubscription -SubscriptionName MyAzureSubsriptionNameHere
Get-AzureRmSubscription # optional
Find-AzureRmResource -ResourceGroupNameContains sqltest # optional
Remove-AzureRmResourceGroup -Name sqltest -Force

For those interested, here is the deck:

Talk: Boston Code Camp 25 – 17 Specific #Azure Security Tips and Tricks

At Boston Code Camp 25 (yes, this was the 25th Boston Code Camp!) I presented 17 Specific Azure Security Tips and Tricks. The talk was pretty rapid-fire, with a lot of information. For folks interested in following-up, the deck (included below) includes lots of links to more information.

Also, for those interesting in more information, please check out Boston Azure (bostonazure.org/meetup and @bostonazure), the world’s oldest Azure-focused user group – right here in Boston. We have an all-day bootcamp coming up April 16, among other coming Azure-related action.

My Cloud Architecture Patterns book is available: https://bit.ly/billbook

cfdjhouwaaa-rq7

The powerpoint deck: 17 Specific Azure Security Tips and Tricks – Boston Code Camp 25 – 02-Apr-2016 – Bill Wilder

@codingoutloud

(photo via Frank Wu (@FrankWWu))