Marc Duiker

I ❤️ Serverless, Dev Community, and Creative Coding


Live streaming the meetups and conference for ServerlessDays Amsterdam - Part 1

Everyone is live streaming!

Well, ok, not everyone, but a lot of meetups & conferences which were previously only offline and IRL have an online presence these days. It really lowers the boundary of attending these events, and I think this is great!

ServerlessDays Amsterdam (which I’m co-organizing) is also moving online for both the meetups and the conference. In this post, I’m highlighting some details on how we’re setting this up.


Discovering the Durable Functions API - Human Interaction (DurableOrchestrationClient part 4)

Human Interaction Pattern

This is the fourth part of the Durable Functions series where I look into the DurableOrchestrationClient. In the video I’ll talk about the Human Interaction pattern, which deals with raising events from the client and waiting for events in the orchestrator.

Here’s the video, please give it a thumbs up if you like it and subscribe to my channel so you’ll be notified of new videos.

Resources

The source code that is used for this demo can be found on GitHub.


My learnings from running the Azure Functions Updates Twitterbot for half a year

Azure Functions Updates component diagram

Some quick facts about the Twitterbot

In my previous post, I wrote about why and how I created the Azure Functions Updates Twitterbot. This bot has been posting updates about Azure Functions related GitHub repositories (and Azure Service announcements) since February 2019, so that’s well over 6 months. It monitors 24 repositories, including itself, and the Azure Service Updates RSS feed, filtered for Azure Functions related updates. The full list of sources is listed on GitHub. The function app that runs the bot has captured 128 GitHub releases, 8 Azure Service Update posts and posted 154 messages to Twitter (the introductory tweets were posted manually).

In this post, I want to highlight some of the actions I took and the insights I’ve got after I put the Twitterbot live. I’m going to cover: failure & resiliency, monitoring & alerts, performance, and costs.






Durable Functions - The Anatomy of Function Naming

How to name your Azure Functions

Function Names in the Wild

Whenever I see examples or implementations of Azure Functions I always see this:

[FunctionName("myfunction")]

Where the function name is present as a direct string literal. I’m not questioning that it is a string because that’s simply the way the FunctionName attribute works currently. I’m more concerned how the string got there.

I’d like to show two ways to refer to function names in a safe and consistent way. This is especially useful when you’re using Durable Functions and need to refer to activity function names in your orchestration function.


Durable Functions on YouTube (part 3) - The Function Chaining Pattern

The Function Chaining Pattern

This is the third part of the Durable Functions series. In this video I’ll talk about the function chaining pattern which can be used to create function workflows.

Here’s the video, please give it a thumbs up if you like it and subscribe to my channel so you’ll be notified of new videos.

Resources

The source code that is used for this demo can be found on GitHub.


Durable Functions on YouTube (part 2) - Eternal orchestrations & external events

Eternal orchestrations & external events

This is the second part of the Durable Functions series. In this video I’ll talk about eternal function orchestrations and external events.

Here’s the video, please give it a thumbs up if you like it and subscribe to my channel so you’ll be notified of new videos.

Resources

The source code that is used for this demo can be found on GitHub.


Azure Functions Tips: Grouping Functions into Function Apps

Simple serverless architecure example

Guidelines for Function Apps

Earlier today I read a tweet where a developer wasn’t sure when to group several Azure Functions in one Function App. The Azure Function engineers responded swiftly and they’ll extend the official docs with some guidelines in this area soon. I think this is a really interesting topic so let’s start with a few ideas of my own.


Durable Functions on YouTube (part 1)

Durable Functions Videos

I’ve decided to create some video’s to explain and demonstrate the Durable Functions framework.

The first video covers a very basic ‘Hello World’ example and shows how to use the OrchestrationClient and DurableOrchestrationContext objects.

Here’s the video, please give it a thumbs up if you like it and subscribe to my channel so you’ll be notified of new videos.

Resources

The source code that is used for this demo can be found on GitHub.


Azure Durable Functions - Stateful function orchestrations (part 2)

HttpStart DurableFunction

Durable Function Walkthrough

In my previous post I gave an introduction on Durable Functions, an extension on Azure Functions which can be used to write stateful and long-running orchestration functions.

In this post we’ll look into more detail at the HttpStart and HelloWorld functions from the previous post. We’ll run them locally by triggering them using Postman and looking at the responses.


Azure Durable Functions - Stateful function orchestrations (part 1)

HttpStart DurableFunction

Durable Functions

Since my Getting started with Serverless Architectures using Azure Functions session at Techdays I’ve been closely monitoring the latest news about Azure Functions. The most recent addition is called Durable Functions. With this extension long running and stateful function orchestrations can be developed. This is a welcome addition to the Azure serverless product suite since it is now much easier to implement function chaining and fan-in/fan-out messaging scenarios.


Getting started with Serverless Architectures using Azure Functions

Marc Duiker on stage

Techdays 2017

A few weeks ago I was presented with a fantastic opportunity, to speak at the biggest Microsoft conference in the Netherlands, TechDays 2017. The session was about my favorite subjects nowadays, serverless architectures and Azure Functions.

Below you can find my slides of this session and a link to the demo I made.


Installing the Python Azure SDK on a Raspberry Pi Zero

Pi Zero with camera module

Holiday Project

This summer holiday I’m working on a hobby project which involves a Raspberry Pi Zero and a Pi camera module. Part of the solution is uploading the pictures the Pi takes to the cloud, Microsoft Azure to be more specific. I plan to write a couple of blog posts about this project. This first post is about installing the Azure SDK on the Pi Zero.




Hands-on with Sitecore Helix: Anatomy of the Add-HelixModule.ps1 PowerShell script

Add-Feature PowerShell function

In my previous post I showed how I got to a solution which allows the developers in my team to create new Feature and Foundation modules with ease.

I showed the moving parts of the solution but I did not go into much detail of the most important part so that’s what I’ll do in this post. This would be particularly useful if you want to change the script yourself to match it to your needs.


Hands-on with Sitecore Helix: Using PowerShell to add a new module

PowerShell plus Visual Studio equals Sitecore Helix

Embracing Sitecore Helix

Ever since I attended Anders Laub his presentation at SUGCON Europe 2015 about component based architecture in Sitecore solutions I have been a strong advocate of these modular principles. I even went to Pentia to learn about this in full detail.

I was very happy to see that Sitecore finally got their act together and published their Helix guidelines and recommended practices on the web.

For the last half year my team is using the modular Helix style architecture with success and it’s time to share some experiences.


Blog upgrade: Post excerpts, microformats and improving performance

Time for an upgrade

I finally made some time available to work on this blog. There were a couple of things I wanted to improve since I moved to GitHub Pages/Jekyll.

  1. Better looking index page. Before todays change it was a very simple (and boring) bulleted list of links containing the date and title of individual blogposts.
  2. Improved content structure. Having a well defined content structure improves SEO.
  3. Higher performance. Faster page loads makes both users and Google happy.

Improving unit test readability: helper methods & named arguments

‘Uncle Bob’ wrote the following in Clean Code: A Handbook of Agile Software Craftsmanship:

“The ratio of time spent reading (code) versus writing is well over 10 to 1 … (therefore) making it easy to read makes it easier to write.”

So think about that when you write your next bit of code. You need to make sure your code is easily readable and understandable for others, you hardly ever write code just for yourself.


Workflow Management SPE Module

Workflow Management SPE Module

Sitecore PowerShell Extensions first encounter

Although I had heard of Sitecore PowerShell Extensions (SPE) several years ago I never used it myself until earlier this month. My interest was raised again during the Accelerated development with Sitecore PowerShell Extensions session by Adam Najmanowicz during SUGCON Europe 2016.

Right after I got back from SUGCON the project I was working on had a nice challenge. Workflows were being set on existing templates and hundreds of content items had already been created using these templates and had no workflow or workflow state set on them. We needed a way to update the content items with the workflow that was set on the Default workflow field on the updated templates.

For me this was an excellent opportunity to try SPE. I wrote a Sitecore PowerShell script to update Workflow and Workflow state fields, posted it in a gist and tweeted about it. I got in contact with Michael West and Adam Najmanowicz (the developers of SPE) who made some excellent suggestions to improve the user friendliness of the script.


Sitecore investigation: Errors installing a content package with item buckets

Bucket icon

A colleague showed me this error today in the Sitecore log:

ERROR There is no appropriate index for [item path - {GUID}]. You have to add an index crawler that will cover this item

‘I’ve never seen that!’ was my first reaction…

This issue occurred when a Sitecore zip package with content items was installed on another environment. There were quite some lines in the Sitecore log which mentioned the same error but for different item paths and GUIDS. I looked up the GUIDS on my local machine and they were all Bucket folder items with no content items in them.

Here’s an example of how that looks like (when you’ve checked the Buckets option in the View toolbar):

Item bucket with an empty bucket folder




Marc Duiker profile

Marc Duiker

Sr Developer advocate @ Ably

Twitter || LinkedIn || Github