Author Archives: cbroccoli

Reading List 2024

So I did not manage to keep up with my lists from 2022 and 2023 just because I was lazy, so picking up with 2024. In 2022 I finished a total of 7 books; 2 fantasy, 2 non-fiction (political science and history), and 3 science fiction. In 2023 I read a total of 9 books evenly split across genres; 3 science fiction, 3 non-fiction (popular science) and 3 fantasy. 2024 was an even better year with a total of 13 books as follows (in order of reading):

Miss Peregrine’s Home for Peculiar Children [Ransom Riggs]

Book one of a lot of books. Picked up the hard copy in a hotel in Lenzerheide while on a trip for my birthday. Kept me amused enough to finish it and buy the second.

Hollow City [Ransom Riggs]

Hollow City [Ransom Riggs]

Book 2 of the series, good ending, may pick up book 3 some day.

Ancillary Sword [Ann Leckie]

Book 2 of the series, read book one in 2023. Great book, told from the perspective of a former AI.

Ancillary Mercy [Ann Leckie]

Third and final book of the series. Not often I go back to back in a series, so that is something.

Binti [Nnedi Okorafor]

One of a couple of alternative culture books I read. This one a novella about an African woman who ends up fighting aliens in space. Interesting perspective since today’s astronauts do not retain any outward cultural identity.

Empire of the Damned [Jay Kristoff]

My least favorite book of the year after being so excited with the release. A lot of whining and repetitive introspection by the protagonist, could have been a hundred pages shorter.

Churchill Walking with Destiny [Andrew Roberts]

The first of two biographies I read this year. This one inspired by watching Dunkirk and then wondering whether he really was as great as they said. Very educational, especially around the events of both WW I and WW II. Strangely, although I knew how it ended, I was sad when he died in the end.

King a Life [Jonathan Eig]

Learned a lot about the civil rights movement and the segregation era. Although he accomplished so much, I can’t help feeling a lot is still left to do, even after all this time.

Adventures in Space [various short stories]

More alternative culture science fiction, this time from Chinese writers. Wasn’t sure I would like reading short stores but ended up enjoying it. The stories were all very different, some were deep, some not so deep.

On Trails [Robert Moor]

Bob and Amy left a hard copy behind after babysitting Rosie and the cat, thinking it was something I would enjoy. They were right, it was a very interesting and entertaining story on how trails are formed and followed, not just by humans but by all creatures (past and present).

The Saint of Bright Doors [Vajra Chandrasekera]

The last of my alternative culture adventure, this time fantasy. Very different to anything I have read before, the Indian perspective made the whole story hard to relate to, but still an entertaining book.

Some Desperate Glory [Emily Tesh]

I cruised through this book in a just a week or two. I really enjoyed the twists and turns, the AI aspect and the perspective on how humanity really would be if let loose on the universe.

Jonathan Strange and Mr Norrell [Susanna Clarke]

Still working on this one at the time of this writing… the sample kept my interest and it continues to get better the farther along I am getting.

Reading List 2021

I always feel like I have not spent enough time reading so thought I would start tracking my reading lists per year. Looking back I think I actually covered a decent amount of material and am glad to see that my reading list does not just include IT related reading.

The Exponential Age: How Accelerating Technology is Transforming Business, Politics and Society by [Azeem Azhar]

The Exponential Age: How Accelerating Technology is Transforming Business, Politics and Society by [Azeem Azhar]


Really enjoyed reading this book. If you work in IT, you should read this book to help you to appreciate the fact that we are living in a transformative era which is changing the world, much as the invention of the steam engine, telephone and the widespread adoption of electricity.

The Stone Sky (The Broken Earth Book 3) by [N. K. Jemisin]

The Stone Sky (The Broken Earth Book 3) by [N. K. Jemisin]

Book 3 of the fantasy trilogy. Not hard to understand why all 3 books received the Hugo award individually.

The Invention of Nature: Alexander von Humboldt's New World by [Andrea Wulf]

The Invention of Nature: Alexander von Humboldt’s New World by [Andrea Wulf]

Got this book as a birthday gift from my daughter. I also love good history books and this one was especially good. Not only did I learn about Humbolt and all of the things he came up with but also the times he lived in and his contemporaries.

Burn: New Research Blows the Lid Off How We Really Burn Calories, Lose Weight, and Stay Healthy by [Herman Pontzer]

Burn: New Research Blows the Lid Off How We Really Burn Calories, Lose Weight, and Stay Healthy by [Herman Pontzer]

Non-fiction, not related at all to IT or technology in general. Great insight into how we burn calories. Read it to better understand how to stay healthy through diet and what the effect of diet vs. exercise have on overall fitness.

The End of Everything: (Astrophysically Speaking) by [Katie Mack]

The End of Everything: (Astrophysically Speaking) by [Katie Mack]

I enjoy popular science and this astrophysics book was fascinating, even though it was a bit depressing given the end of everything, is really the end of everything.

Azure ARM Templates

Spending a lot of time working with customers to define an Azure adoption framework, so thought I would look into ARM templates to get a better feel for how to automate and code-ify the deployment of Azure resources and policies.

ARM templates can be deployed in a similar manner to GCP deployment manager templates. ARM templates are defined in JSON, GCP DM in YAML/Jinja. Both have a deployment manager where you can monitor the success or failure of the deployment in the console.

ARM templates consist of 3 basic parts; parameters, variables and resources. Parameters define the inputs needed to execute the template (including the type, default value and acceptable values if you need to limit them), variables are a way of providing parameter values dynamically or by building them based on a standard structure (e.g. a naming convention). Resources are the definition of which resources need to be deployed in the template.

{
 "$schema":"https://schema.management.azure.com/schemas/2018
 -05-01/subscriptionDeploymentTemplate.json#",
 "contentVersion": "1.0.0.0",
 "parameters": {
   "budgetName": {
      "type": "string",
      "defaultValue": "MyBudget",
      "metadata": {
         "description": "Name of the Budget. It should be
         unique within a resource group."
      }
    },
   "amount": {
     "type": "string",
     "defaultValue": "1000",
     "metadata": {
       "description": "The total amount of cost or usage to
       track with the budget"
     }
   },
...
 }
},
 "variables": {
   "uniquebudgetName": "[concat(parameters('amount'), '-',
   parameters('firstThreshold'), '-budget')]"
},
 "resources": [
   {
   "type": "Microsoft.Consumption/budgets",
   "apiVersion": "2019-10-01",
   "name": "[variables('uniquebudgetName')]",
   "properties": {
     "timePeriod": {
       "startDate": "2021-02-01T00:00:00Z",
       "endDate": "2022-02-01T00:00:00Z"
     },
   "timeGrain": "[parameters('timeGrain')]",
...
   }
 ]
}

Parameter inputs which are not defined already via variables, can be defined either at run time through the command line, via a parameter file or via the console with an input form.

{
 "$schema": "https://schema.management.azure.com/
 schemas/2019-04-01/deploymentParameters.json#",
 "contentVersion": "1.0.0.0",
 "parameters": {
   "budgetName": {
     "value": "budget1"
   },
   "startDate": {
   "value": "2021-02-01T00:00:00Z"
   },
   "endDate": {
     "value": "2022-02-01T00:00:00Z"
   },
   "timeGrain": {
     "value": "Monthly"
   },
   "amount": {
     "value": "10"
   },
   "firstThreshold": {
     "value": "10"
   },
   "contactEmails": {
     "value": [
       "chris@broccolifamily.net"
     ]
   }
 }
}

There are a couple of ways to execute a template file. Either through the console (didn’t bother with this since it seems counter productive), CLI, or a CI/CD pipeline.

az deployment group create \
  --name armbudget \
  --resource-group resourcegroup1 \
  --template-file $templateFile \
  --parameters $prodParameterFile

Of course the two environment variables, need to be set to point to the appropriate files. The –parameter flag can also have a list of parameters and their values instead of pointing to the file.

My tests followed one of the canned tutorials but I extended it to add my own parameter file. Executing a CI/CD pipeline requires a parameter file to be used if you don’t want to keep updating the pipeline every time you change a parameter value (just update the parameter file and the pipeline can just run triggering on the change to the parameter file).

The final template which I used, along with the working parameter file are located here.

The result in the console looks like this…