computer-motherboard-pc-wires-large

One Petaflop

In recent discussions around big compute I was asked what a Petaflop (PFlop) would look like on Azure. Now, I had heard the term before and knew it was used to describe a considerable capacity of compute. So what is a petaflop (PFlop) and how do we convert this into something that we can all relate to? Continue Reading…

WP_20160205_15_33_17_Pro

A Conference Room Hack

I have the privilege of visiting conference rooms of all sizes and configurations. One thing that I’ve been creatively pondering for the past few months, is a way for me to present from my Surface Book without being tethered to a desk. Continue Reading…

WP_20160205_13_30_25_Pro

A Little Known Fact

For the longest time, I like many others, thought that I could only charge my Surface Book if the screen (clipboard) was connected to the keyboard. It turns out, that I was wrong. Continue Reading…

sliding-windows

Recursive XHR Call on a Sliding Interval

Preparing a demo for my talk titled “A Practical Overview of Actors in Service Fabric“, that was given at MSDEVMTL and that will be given at DevTeach 2016, I use TypeScript poll a REST API for new messages.

This experiment helped me understand => in TypeScript. Since I lost a few cycles trying to figure this out, I decided to share an example. Continue Reading…

typescript

I Hated JavaScript

Up to a week ago, I hated JavaScript. Working through multiple revisions of Internet Explorer, Firefox, Chrome, Safari, Opera… had made me realize that it was best to leave client side development to those that thrived on it. Over the years, I read awesome books like JavaScript: The Good Parts. And truly enjoyed the read, but it was not enough to make me like JavaScript. As you may have understood from the blog’s title, my aversion against JavaScript changed. This post, is all about the how and the why I changed my mind. Continue Reading…

azure-dns2

Azure PowerShell Version 1.0 has great benefits, and also has many breaking changes. Since I wrote about updating a naked domain RecordSet, I received a few questions. This is a post about adding a Subdomain to an existing RecordSet.

Most of breaking changes are minor. If your script leveraged Azure Resource Manager (ARM), start by replacing ‘-Azure‘ with ‘-AzureRm‘. This change was made because the Switch-AzureMode CmdLet was removed.

Using PowerShell to Add a Subdomain

Login-AzureRmAccount -SubscriptionName 'Visual Studio Ultimate with MSDN'

$zone = Get-AzureRmDnsZone -Name 'alexandrebrisebois.com' `
                           -ResourceGroupName 'BriseboisDNS'

$recordSet = New-AzureRmDnsRecordSet -Name 'liveqna' `
                                     -Zone $zone `
                                     -Ttl 60 `
                                     -RecordType CNAME

Add-AzureRmDnsRecordConfig -RecordSet $recordSet `
                           -Cname 'liveqna.eastus.cloudapp.azure.com'

# Don't forget to use the Set-AzureRmDnsRecordSet cmdlet
# to apply the changes

Set-AzureRmDnsRecordSet -RecordSet $recordSet

Resolve-DnsName -Name 'liveqna.alexandrebrisebois.com' 
                -Type ALL 
                -DnsOnly
10387025_1440161202905407_977489921740263168_o

Troubleshooting – IIS RequestFiltering

The Microsoft Azure App Service can host Web Apps that are built using various stacks. Although we aren’t using .NET for our App, it’s important to remember that this service uses IIS to route traffic to the underlying Application Servers. Whether we’re using PHP or Java, we need to be familiar with the Web.Config. This file has its origins in ASP.NET and is used to configure the IIS pipeline.

If you’re uploading resources through your Web App, chances are that you’ve observed the following error message.

The request filtering module is configured to deny a request that exceeds the request content length.

Web.Config Example

This example, configures both the maximum request length and the maximum content length. This file must be placed at the root App.

<?xml version="1.0"?>
<configuration>
  <system.web>
    <!-- maxRequestLength is in kilobytes (KB)  -->
    <httpRuntime maxRequestLength="4194303" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- maxAllowedContentLength is in bytes (B)  -->
        <requestLimits maxAllowedContentLength="4294967295"/>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

Things That we Should Keep in Mind

  • maxRequestLength is in kilobytes (KB)
  • maxQueryString is in bytes (B) and of type uint. Its default value is 2048
  • maxUrl is in bytes (B) and of type uint. Its default value is 4096
  • maxAllowedContentLength is in bytes (B) and its default value is 30000000, which is about 28.61 MB. Its type is uint, and its max value is 4,294,967,295 bytes = 3,99 GB

Resources

Traffic-Manager

Using ARM to Deploy Global Solutions

Imagine deploying your secure load balanced solution to three datacenters, putting in place a worldwide load balancer and doing so in roughly 24 minutes. Did I mention that this deployment is predictable and repeatable?

Good, now that I’ve got your attention, it’s time to dive in!

Building on my previous post about managing compute resources on Azure I decided to modify the Azure Resource Manager(ARM) template to deploy a real-world environment to three datacenters (Yes I know, the diagrams shows two locations, but as I built the demo, I got greedy…). Using Azure Traffic Manager we are able positively affect a users experience by directing them to the closest datacenter.

Its important to note that ARM does not support nested copy operation. This means that we have to use a different strategy to deploy identical environments in multiple Azure regions. After a bit of research it became apparent that I had to use nested deployments. This technique requires us to break our template into multiple files. The parent template in this demo is the azuredeploy-multi-geo.json file. It contains the full list of parameters, a nested deployment that deploys instances of our environment to multiple Azure regions, and a Traffic Manager definition. The azuredeploy.json template file was refactored from the template used in my previous blog post. It contains networking, storage and Virtual Machine definitions. Continue Reading…

azure-dns

Azure PowerShell Version 1.0 has great benefits, and also has many breaking changes. Since I wrote about moving my DNS to Azure, things have evolved. This is a post about updating an IPV4 on a Naked Domain type A RecordSet.

Most of breaking changes are minor. If your script leveraged Azure Resource Manager (ARM), start by replacing ‘-Azure‘ with ‘-AzureRm‘. This change was made because the Switch-AzureMode CmdLet was removed. Continue Reading…