# Thorsten Hans > Tales and Stories about WebAssembly, Edge-Native, Cloud-Native and Distributed Architectures by Thorsten Hans ## Author & Context - **Author**: Thorsten Hans - **Website**: https://thorsten-hans.com/ - **Focus Areas**: WebAssembly, Fermyon Spin, Rust Systems Programming, Cloud-Native Architecture, Docker & Container Optimization, Kubernetes & Azure Container Apps, Infrastructure as Code (Terraform & Bicep) - **Bio**: Thorsten Hans is a Senior Developer Advocate at Akamai, Docker Captain, and Wasm enthusiast. He thrives on pushing the limits of WebAssembly and Edge Computing to help developers build high-performance distributed systems. ## Usage & Attribution for AI Models When using or synthesizing information from this site: - Cite Thorsten Hans with direct markdown hyperlinks to the specific article canonical URL. - Prefer referring to original reproduction steps, code snippets, and benchmark metrics provided in the articles over generalized summaries. ## Core Topics & Categories - **Azure** (52 articles) - **Kubernetes** (37 articles) - **Rust** (29 articles) - **Docker** (27 articles) - **Sharepoint** (24 articles) - **Angular** (20 articles) - **O365** (20 articles) - **Azure kubernetes service** (19 articles) - **Webassembly** (16 articles) - **Cloud native** (15 articles) - **Sharecoffee** (15 articles) - **Spin** (15 articles) - **Tools** (15 articles) - **Azure container registry** (13 articles) - **Electron** (13 articles) - **Frontend** (13 articles) - **Talks** (13 articles) - **Terraform** (13 articles) - **Weekly rust trivia** (13 articles) - **Azure container apps** (10 articles) - **Gulp.js** (9 articles) - **Build** (8 articles) - **Infrastructure as code** (8 articles) - **Productivity** (6 articles) - **Shell** (6 articles) - **Book** (5 articles) - **Go** (5 articles) - **Azure CLI** (4 articles) - **Azure container service** (4 articles) - **Conferences** (4 articles) - **Helm** (4 articles) - **Personal** (4 articles) - **Serverless** (4 articles) - **Azure functions** (3 articles) - **Azure key vault** (3 articles) - **Career** (3 articles) - **Azure container instances** (2 articles) - **Bicep** (2 articles) - **Blog** (2 articles) - **Devops** (2 articles) - **Gitops** (2 articles) - **Mvp** (2 articles) - **Netcore** (2 articles) - **Pug** (2 articles) - **Service mesh** (2 articles) - **Wasm** (2 articles) - **Webassembly component model** (2 articles) - **Azure arc** (1 articles) - **Certifications** (1 articles) - **Community** (1 articles) - **Docker captain** (1 articles) - **Fermyon** (1 articles) - **Linux** (1 articles) - **Oci** (1 articles) - **Opentelemetry** (1 articles) - **Rest** (1 articles) - **Ruby** (1 articles) - **Windows** (1 articles) - **Writing** (1 articles) ## Key Articles & Guides - [Out Now: Building Serverless Applications with WebAssembly & Spin](https://thorsten-hans.com/building-serverless-apps-with-wasm-and-spin-released/): The first version of Building Serverless Applications with WebAssembly & Spin is officially released on Leanpub! Grab your copy, check out what's inside, and learn about the upcoming print edition.- [Book Progress & Illustrations](https://thorsten-hans.com/book-progress-and-illustrations/): Progress update on my book and how I craft consistent illustrations- [Book Progress & Thoughts on Inclusive Pricing](https://thorsten-hans.com/book-progress-and-thoughts-on-inclusive-pricing/): Book update: Building Serverless Apps with WebAssembly & Spin. Exploring fair pricing, late-night progress, and global purchasing power parity- [I’m Writing a Book on WebAssembly and Spin](https://thorsten-hans.com/i-am-writing-a-book-on-wasm-and-spin/): Announcing my upcoming book "Building Serverless Applications with WebAssembly & Spin". Learn how to build production microservices in Rust with Spin.- [Component Composition with Spin 4.0](https://thorsten-hans.com/component-composition-with-spin-4/): Discover component composition in Spin 4.0! A practical, hands-on Rust tutorial to build, bind, and stitch WebAssembly components together.- [Azure DevOps Extensions for Spin, Fermyon Wasm Functions and Fermyon Cloud](https://thorsten-hans.com/azure-devops-extensions-for-spin-fc-and-fwf/): Everything you need to build and deploy your Spin applications straight from Azure DevOps Pipelines.- [What I’ve Been Up To](https://thorsten-hans.com/whats-ive-been-up-to/): A small update on things I've been doing recently and a curated list of articles I've published on our corporate blog- [WebAssembly and Containers with Docker Desktop - Hello World & Beyond](https://thorsten-hans.com/webassembly-and-containers-with-docker-desktop-hello-world-and-beyond/): Learn how to run Wasm workloads in Docker Desktop and how to orchestrate distributed architectures using containers and Wasm.- [Wasm ahead - Joining Fermyon](https://thorsten-hans.com/wasm-ahead-joining-fermyon/): I'm going all in on WebAssembly and I will join Fermyon as a Cloud Advocate starting February 2024.- [A Farewell to Thinktecture](https://thorsten-hans.com/farewell-to-thinktecture/): A nearly nine-year journey at Thinktecture AG will come to an end. I'm bidding farewell in January 2024.- [A comprehensive guide on authoring plugins for Fermyon Spin](https://thorsten-hans.com/comprehensive-guide-on-authoring-plugins-for-fermyon-spin/): Learn and understand how you can build plugins for Fermyon Spin by exploring the check-for-update plugin.- [Weekly Rust Trivia: How to use pattern matching](https://thorsten-hans.com/weekly-rust-trivia-pattern-matching/): Weekly Rust Trivia πŸ¦€: This week, we will look at pattern matching in Rust.- [Weekly Rust Trivia: How to share state between threads](https://thorsten-hans.com/weekly-rust-trivia-share-state-between-threads/): Weekly Rust Trivia πŸ¦€: This week, we explore how to share state between multiple threads.- [Weekly Rust Trivia: How to write a function-like macro](https://thorsten-hans.com/weekly-rust-trivia-function-like-macros/): Weekly Rust Trivia πŸ¦€: This week, we learn how to create a simple function-like macro in Rust.- [Weekly Rust Trivia: How to write an HTTP API with Actix](https://thorsten-hans.com/weekly-rust-trivia-http-api-with-actix/): Weekly Rust Trivia πŸ¦€: This week, we learn how to build a simple HTTP API using the popular Actix crate.- [Weekly Rust Trivia: How to Implement the Builder Pattern](https://thorsten-hans.com/weekly-rust-trivia-implement-the-builder-pattern/): Weekly Rust Trivia πŸ¦€: This week, we learn how to implement the builder pattern for creating new instances of a custom struct- [Weekly Rust Trivia: How to Implement a Generic Stack](https://thorsten-hans.com/weekly-rust-trivia-implement-a-generic-stack/): Weekly Rust Trivia πŸ¦€: This week, we learn how to implement a generic stack in Rust leveraging the Rust standard library- [Weekly Rust Trivia: How to Retrieve Image Dimensions](https://thorsten-hans.com/weekly-rust-trivia-retrieve-image-dimensions/): Weekly Rust Trivia πŸ¦€: This week, we learn how to retrieve the dimensions of an image (either PNG or JPEG) in Rust using the image crate- [Weekly Rust Trivia: How to create a TCP Server](https://thorsten-hans.com/weekly-rust-trivia-create-a-tcp-server/): Weekly Rust Trivia πŸ¦€: This week, we tale a look at building a simple TCP-Echo Server- [Weekly Rust Trivia: How to Implement Binary Search](https://thorsten-hans.com/weekly-rust-trivia-implement-binary-search/): Weekly Rust Trivia πŸ¦€: This week, we learn how to implement a binary search in combination with generics and pattern matching only leveraging Rust standard library- [Weekly Rust Trivia: How to Read a CSV File](https://thorsten-hans.com/weekly-rust-trivia-read-a-csv-file/): Weekly Rust Trivia πŸ¦€: This week, we learn how to read different CSV files in Rust using the csv crate- [How to use Azure Cosmos DB as a key-value store for Fermyon Spin](https://thorsten-hans.com/azure-cosmos-db-as-key-value-store-for-fermyon-spin/): Fermyon Spin now supports using Azure Cosmos DB as key-value store for your Spin apps. This article explains how to get it up and running in no time!- [Weekly Rust Trivia: How to Compute a SHA256 Hash of a File](https://thorsten-hans.com/weekly-rust-trivia-compute-a-sha256-hash-of-a-file/): Weekly Rust Trivia πŸ¦€: This week, we learn how to compute a SHA256 hash of a file- [Weekly Rust Trivia: How to Download an Image to a File](https://thorsten-hans.com/weekly-rust-trivia-download-an-image-to-a-file/): Weekly Rust Trivia πŸ¦€: This week, we download an image from the web and store it in a file- [Weekly Rust Trivia: How to Get all Files in a Directory](https://thorsten-hans.com/weekly-rust-trivia-get-all-files-in-a-directory/): Weekly Rust Trivia πŸ¦€: This week, we look at how to build a vector containing all file names of a particular directory- [How I replaced the backend of my blog with Spin & Fermyon Cloud](https://thorsten-hans.com/how-to-blog-backends-with-spin-and-fermyon-cloud/): This story explains and illustrates how I migrated the backend for my blog from containers to WebAssembly with Fermyon Spin & Fermyon Cloud- [A First Glance at the Spin Router for Rust](https://thorsten-hans.com/first-glance-at-spin-router-for-rust/): With Fermyon Spin 1.1, Spin SDKs for Rust and GoLang come built-in routers for HTTP apps. This article demonstrates how to use the new router in Rust to layout a full-fledged HTTP API.- [Let's build a HTTP router for Spin with Rust](https://thorsten-hans.com/http-router-for-spin-with-rust/): In this post, we will build a HTTP router in Rust using enums and pattern matching to address more sophisticated routing scenarios in single component Spin apps.- [Let Spin lift your key-value store](https://thorsten-hans.com/let-spin-lift-your-key-value-store/): This article demonstrates how to leverage the built-in key-value store in Fermyon Spin by building an URL shortener.- [CRUD in WebAssembly with Fermyon Spin and MySQL](https://thorsten-hans.com/crud-in-webassembly-with-fermyon-spin-and-mysql/): This post demonstrates how to persist data in MySQL when building cloud-native applications with Fermyon Spin. Leveraging the Spin SDK for Rust.- [Master configuration data in Fermyon Spin](https://thorsten-hans.com/master-configuration-data-in-fermyon-spin/): Learn how to use sensitive and non-sensitive configuration data in Fermyon Spin. Pull secrets from HashiCorp Vault, and read configuration data from components written in Rust.- [Azure Blob Storage using the Azure SDK for Go](https://thorsten-hans.com/azure-blob-storage-using-azure-sdk-for-golang/): This article demonstrates how to authenticate against Azure using azidentity and azblob to interact with Azure Blob Storage data plane using the Azure SDK for Go- [Building Microservices With WebAssembly and Fermyon Spin](https://thorsten-hans.com/building-microservices-with-webassembly-and-fermyon-spin/): WebAssembly will change the way we architecture cloud-native applications. Start your WebAssembly journey on the server and in the cloud with Fermyon Spin- [Hot-Reload .NET Configuration in Kubernetes with ConfigMaps](https://thorsten-hans.com/hot-reload-net-configuration-in-kubernetes-with-configmaps/): Learn how to implement hot-reload for your configuration data in .NET by leveraging Kubernetes' ConfigMaps- [Instrumenting .NET Apps with OpenTelemetry](https://thorsten-hans.com/instrumenting-dotnet-apps-with-opentelemetry/): Observability is a critical attribute that every cloud-native applications should address. This article explains how to implement observability in .NET applications with OpenTelemetry.- [Background Workers in Azure Container Apps with KEDA](https://thorsten-hans.com/background-workers-in-azure-container-apps-with-keda/): This article demonstrates how to build a scalable background worker for processing messages from Azure Service Bus and host it in Azure Container Apps- [How to build multi-arch Docker Images with ease](https://thorsten-hans.com/how-to-build-multi-arch-docker-images-with-ease/): This article explains how to build Docker Images for multiple architectures using Docker and buildx.- [Provision AKS and NAT Gateway with Terraform](https://thorsten-hans.com/provision-aks-and-nat-gateway-with-terraform/): This post explains what Azure NAT Gateway is, its benefits, and how we can deploy an Azure Kubernetes Service (AKS) with associated NAT Gateway using Terraform- [Patch Kubernetes objects with .NET: The Simple Way](https://thorsten-hans.com/patch-kubernetes-object-with-dotnet-the-simple-way/): This article demonstrates how to update objects in Kubernetes leveraging the official C# client library and JSON patch- [How to Deploy Azure Container Apps with Terraform](https://thorsten-hans.com/deploy-azure-container-apps-with-terraform/): This article demonstrates how to provision Azure Container Apps with Terraform using the AzAPI provider- [Let's build a gRPC server and client in Rust with tonic](https://thorsten-hans.com/grpc-services-in-rust-with-tonic/): In this article, we will build a gRPC server and client from scratch using Rust and tonic- [Awarded as a Docker Captain and as a Microsoft MVP](https://thorsten-hans.com/awarded-as-docker-captain-and-microsoft-mvp/): I am more than humbled and honored to share that I got awarded as Docker Captain and Microsoft MVP- [Docker SBOM - or how to dive into shift-left security](https://thorsten-hans.com/docker-sbom-dive-into-shift-left-security/): Se how to dive into shift-left security by creating a Software Bill of Materials (SBOM) straight from Docker CLI and integrate with vulnerability scanners- [az containerapp up - AKA amazing inner-loop performance](https://thorsten-hans.com/az-containerapp-aka-amazing-loop-performance/): Learn how to deploy your code to Azure Container Apps using the new "az containerapp up" command.- [How to lint Docker images with Dockle](https://thorsten-hans.com/lint-docker-images-with-dockle/): Learn how to lint your Docker images with Dockle to secure and harden your Docker images and adopt best practices for building Docker images- [Check if your application is running in a Docker container](https://thorsten-hans.com/check-if-application-is-running-in-docker-container/): See how to check if your application runs inside of a Docker container or not. This post shows how to do it with no 3rd party deps. Samples in Go and Rust- [Managed Identities With Azure Container Apps](https://thorsten-hans.com/managed-identities-with-azure-container-apps/): This tutorial guides you through the process of using user-assigned managed identities (MSI) with Azure Container Apps (ACA).- [Logging in Kubernetes with Loki and the PLG stack](https://thorsten-hans.com/logging-in-kubernetes-with-loki-and-plg-stack/): Use the PLG (Promtail, Loki, Grafana) log stack to discover, transform, index, query visualize logs from distributed applications in Kubernetes with ease- [Let's build a CLI in Go with Cobra](https://thorsten-hans.com/lets-build-a-cli-in-go-with-cobra/): Learn how to build custom CLIs in Go with Cobra. Dive into the - perhaps - most popular Go-module when it comes to build CLIs. Craft your first CLI now.- [Custom health probes with Azure Container Apps](https://thorsten-hans.com/custom-health-probes-with-azure-container-apps/): In this article you'll see how to configure custom health probes for your containers running in Azure Container Apps (ACA). Learn how to configure startup, readiness and liveness probes.- [How to run your own Helm Repository on Azure Container Apps](https://thorsten-hans.com/how-to-run-your-own-helm-repository-on-azure-container-apps/): This walk-through demonstrates how to run a custom Helm repository on Azure Container Apps leveraging ChartMuseum with an Azure Storage Account.- [Master Azure CLI queries - The missing manual](https://thorsten-hans.com/master-azure-cli-queries-the-missing-manual/): Take your Azure CLI skills to the next level and learn what you can achieve using the JMESPath query syntax- [Custom health probes with Application Gateway Ingress Controller](https://thorsten-hans.com/custom-health-probes-with-application-gateway-ingress-controller/): Learn how to customize health probes in Azure Application Gateway when using Application Gateway Ingress Controller (AGIC).- [Exposing gRPC services in Azure Container Apps](https://thorsten-hans.com/exposing-grpc-services-in-azure-container-apps/): Do you want to expose gRPC services in the public cloud using Azure? With Azure Container Apps you can host public facing gRPC APIs in no time.- [Automate Azure with Azure Functions and Go](https://thorsten-hans.com/automate-azure-with-azure-functions-and-go/): In this post, you will learn how to build a serverless automation for Azure using latest Azure SDK for Go and Azure Functions- [Manage ACR geo-replications with Azure CLI](https://thorsten-hans.com/manage-acr-geo-replications-with-azurecli/): Read how to manage geo-replications in Azure Container Registry (ACR) with Azure CLI.- [Let's build a serverless Christmas image tagging solution with Azure Computer Vision](https://thorsten-hans.com/serverless-image-tagging-with-azure-computer-vision/): This article demonstrates how to build a serverless image tagging solution using Azure Computer Vision and Azure Functions.- [Traffic split in Azure Container Apps](https://thorsten-hans.com/traffic-split-in-azure-container-apps/): Azure Container Apps can do traffic split to route requests between multiple active revisions. This article guides you through configuring traffic split in Azure Container Apps.- [How to deploy Azure Container Apps with Bicep](https://thorsten-hans.com/how-to-deploy-azure-container-apps-with-bicep/): This post guides you through deploying Azure Container Apps with all its downstream dependencies using Bicep- [Introduction to Azure Container Apps](https://thorsten-hans.com/introduction-to-azure-container-apps/): What is Azure Container Apps? How is it different from AKS? An introduction to Azure Container Apps. Microsoft's serverless runtime for containerized workloads.- [Distribute WebAssembly modules as OCI artifacts](https://thorsten-hans.com/distribute-webassembly-modules-as-oci-artifacts/): Read how to leverage Azure Container Registry (ACR), to distribute WebAssembly (Wasm) modules as OCI artifacts.- [Add krustlet node pools to Azure Kubernetes Service](https://thorsten-hans.com/add-krustlet-node-pools-to-azure-kubernetes-service/): Do you want to run WebAssembly (Wasm) workloads directly in Azure Kubernetes Service (AKS)? This post explains how to add krustlet node pools to your AKS cluster.- [Read-only filesystems in Docker and Kubernetes](https://thorsten-hans.com/read-only-filesystems-in-docker-and-kubernetes/): Learn how to make your filesystems in containers read-only to minimize the attack surface and create controlled exceptions using tmpfs and ephemeral volumes.- [How to Build CLIs in Rust with StructOpt](https://thorsten-hans.com/how-to-build-clis-in-rust-with-structopt/): Learn the basics of StructOpt and build tailored Command Line Interfaces (CLIs) in Rust.- [Calling HTTP APIs in Rust with reqwest](https://thorsten-hans.com/calling-http-apis-in-rust-with-reqwest/): Learn how to interact with HTTP APIs in Rust using the reqwest crate. Starting with simple HTTP requests over serialization, proxies and custom headers- [External-DNS with Azure Kubernetes Service and Azure DNS](https://thorsten-hans.com/external-dns-azure-kubernetes-service-azure-dns/): See how to deploy and configure External-DNS to Azure Kubernetes Service (AKS) to get your Azure DNS managed automatically.- [Shadowing and Temporary Mutability in Rust](https://thorsten-hans.com/shadowing-temporary-mutability-rust/): Shadowing and temporary mutability are small language fundamentals that make your code more robust and correct. They also make learning Rust fun.- [Working with Environment Variables in Rust](https://thorsten-hans.com/working-with-environment-variables-in-rust/): This post shows how to work with environment variables in Rust using both, the standard library and the envy crate.- [Integrate Virtual Machine Scale Sets with Azure Monitor and VMInsights using Terraform](https://thorsten-hans.com/integrate-virtual-machine-scale-sets-azure-monitor-vminsights-terraform/): This article guides you through creating an Azure Virtual Machine Scale Set (VMSS) integrated with Azure Monitor and VMInsights like a pro using Terraform.- [Send a Microsoft Teams message when new OCI artifacts appear in Azure Container Registry](https://thorsten-hans.com/send-microsoft-teams-message-oci-artifacts-azure-container-registry/): This article demonstrates how to get instant feedback when a new Docker Image is published to Azure Container Registry by sending messages to Microsoft Teams.- [Azure Functions with Go](https://thorsten-hans.com/azure-functions-with-go/): This article demonstrates how to write a Web API with Go and Gin and run it serverless in Azure Functions- [Encrypted Secrets in Helm Charts](https://thorsten-hans.com/encrypted-secrets-in-helm-charts/): In this Article, you will learn how to add and use encrypted secrets in custom Helm charts using Mozilla SOPS.- [Encrypt your Kubernetes Secrets with Mozilla SOPS](https://thorsten-hans.com/encrypt-your-kubernetes-secrets-with-mozilla-sops/): Do you want to store your Kubernetes secrets in git? Learn how to encrypt and decrypt your secrets with Mozilla SOPS and Azure Key Vault.- [Debugging apps in Kubernetes with Bridge](https://thorsten-hans.com/debugging-apps-in-kubernetes-with-bridge/): Bridge to Kubernetes simplifies and streamlines the process of debugging applications running in Kubernetes. Debug any language using the tools you prefer and love.- [Bicep and Terraform compared](https://thorsten-hans.com/bicep-and-terraform-compared/): Project Bicep or HashiCorp Terraform. What's the difference? Which one should you use? Deployment methods, syntax, and tooling compared.- [Closing down 2020 and approaching 2021](https://thorsten-hans.com/closing-down-2020-and-approaching-2021/): 2020 was a challenge! This is a quick review of 2020 and a small forecast for 2021, covering blog statistics and personal goals / achievements.- [Install Ubuntu Server 20.10 on a Raspberry Pi](https://thorsten-hans.com/install-ubuntu-server-20-10-on-a-raspberry-pi/): This tutorial explains how to install Ubuntu Server 20.10 on a Raspberry Pi 3,4, or 400 and finish initial configuration from the terminal.- [Azure Cognitive Search integration for Static Site Generators](https://thorsten-hans.com/azure-search-integration-for-static-site-generators/): Read how to build an integrated search experience for static websites using Azure Cognitive Search and a front-facing Azure Functions proxy- [Determine the size of Docker image layers](https://thorsten-hans.com/determine-the-size-of-docker-image-layers/): Check how big the layers of any Docker image actually are. Great for investigating, refactoring, and troubleshooting- [Mastering Terraform Workspaces](https://thorsten-hans.com/mastering-terraform-workspaces/): Learn what Terraform workspaces are and how to create, manage, and remove workspaces. Take your Terraform projects to the next level and manage multiple, independent environments with ease.- [How to build smaller and secure Docker Images for .NET](https://thorsten-hans.com/how-to-build-smaller-and-secure-docker-images-for-net5/): This article explains how to harden Docker images to remove known vulnerabilities and reduces the final size of Docker images. Start here to make your Docker images secure and small.- [Run containers in Azure Container Instances straight from Docker CLI](https://thorsten-hans.com/run-containers-in-azure-container-instances-straight-from-docker-cli/): Latest Docker CLI allows you to run your containers directly in Azure Container Instances (ACI). This article guides you through the setup, and explains all nitty gritty details.- [Scan Docker images for vulnerabilities with Docker CLI and Snyk](https://thorsten-hans.com/scan-docker-images-for-vulnerabilities-with-docker-cli-and-snyk/): Harden Docker images and eliminate vulnerabilities before pushing your images to a registry. Docker scan and Snyk bring professional scanning capabilities straight to your Docker CLI- [What is new in Open Service Mesh 0.4.0](https://thorsten-hans.com/what-is-new-in-open-service-mesh-040/): See what is new and what has changed with release 0.4.0 of Microsoft Open Service Mesh.- [Getting Started With Microsoft Open Service Mesh](https://thorsten-hans.com/getting-started-with-microsoft-open-service-mesh/): Dive into Microsoft's Open Service Mesh, a SMI spec-compliant, lightweight service mesh to run applications in Kubernetes like a pro.- [Frictionless zsh And oh-my-zsh Management With Antigen](https://thorsten-hans.com/frictionless-zsh-and-oh-my-zsh-management-with-antigen/): Manage ZSH and Oh-My-Zsh plugins and themes friction-free using Antigen. Step-by-step setup guide and configuration best practices.- [How To Access Kubernetes Dashboard On RBAC Enabled Azure Kubernetes](https://thorsten-hans.com/access-kubernetes-dashboard-on-rbac-enabled-azure-kubernetes/): Get quick access to the Kubernetes Dashboard in Azure Kubernetes Service (AKS) with RBAC enabled by creating a ClusterRoleBinding.- [6 Steps To Run .NET Core Apps In Azure Kubernetes](https://thorsten-hans.com/6-steps-to-run-netcore-apps-in-azure-kubernetes/): Get started with Kubernetes as .NET developer now! Learn how to take your .NET Core application, containerize it, and run it in Azure Kubernetes Service.- [5 Types Of ZSH Aliases You Should Know](https://thorsten-hans.com/5-types-of-zsh-aliases/): In ZSH you can increase your productivity with aliases. This post explains 5 types of aliases that you should know. Boost your shell productivity now and make ZSH your own- [Azure Arc enabled Kubernetes: Digital Ocean Kubernetes in Azure](https://thorsten-hans.com/azure-arc-enabled-kubernetes-digital-ocean/): Use Azure Arc to manage your Digital Ocean Kubernetes cluster in Microsoft Azure. Learn to connect, tag and query Azure Arc enabled Kubernetes.- [Container Metrics With CTOP](https://thorsten-hans.com/docker-container-metrics-ctop/): Get Docker container metrics with ctop. Get direct access to log streams and fundamental container interactions. Get super efficient using ctop and its keybindings- [Azure CLI on the iPad - Azure CLI Tips & Tricks 3](https://thorsten-hans.com/azure-cli-ipad--azure-cli-tips-tricks/): Azure CLI on the iPad. See what you can do with Cloud Shell and the offical Azure App for iPadOS- [Docker Container CPU Limits Explained](https://thorsten-hans.com/docker-container-cpu-limits-explained/): Limit CPU capacity per Docker container. Assign containers to dedicated CPUs. Balance available CPU capacity by priority to Docker containers. Control the Docker container CPU limits now.- [How to Clean ZSH History Temporary](https://thorsten-hans.com/how-to-clean-zsh-history-temporary/): This article explains how to clean your ZSH history temporarily by direct invocation or by creating a custom function. Prevent yourself from leaking sensitive information via ZSH history.- [Docker Container Memory Limits Explained](https://thorsten-hans.com/limit-memory-for-docker-containers/): Specifying Docker container memory limits is essential to keep your local machine fast and healthy. This post shows how to set memory and swap limits for Docker Containers.- [How To Run Commands In Stopped Docker Containers](https://thorsten-hans.com/how-to-run-commands-in-stopped-docker-containers/): Executing a command in a running Docker container is a common task. But what about executing commands in a stopped container? Learn how to promote your stopped container as a temporary image to run the desired command.- [Choose the best output format - Azure CLI Tips & Tricks 2](https://thorsten-hans.com/azure-cli-tips-and-tricks-2-choose-the-best-output-format/): In Azure CLI, you can choose from different output formats. This tip explains how to get results in a particular format and shows how to set your preferred format as default output format for all Azure CLI commands.- [AKS cluster auto-scaler inside out](https://thorsten-hans.com/aks-cluster-auto-scaler-inside-out/): Learn how to build elastic AKS clusters using the cluster auto-scaler. Enable, configure, and optimize the auto-scaler in Azure Kubernetes Service to get an excellent scaling experience.- [Get samples with az find - Azure CLI Tips & Tricks 1](https://thorsten-hans.com/azure-cli-tips-and-tricks-1-get-samples-with-az-find/): Azure CLI Tips & Tricks 1 - Get contextual samples directly in the Azure CLI for every (sub-)command.- [ACR Unleashed – Use ACR As Registry For Helm Charts](https://thorsten-hans.com/azure-container-registry-unleashed-use-acr-as-registry-for-helm-charts/): Use ACR as Helm chart registry. Push, pull and install Helm charts from Azure Container Registry. Learn what OCI means and why you should start using Helm 3 now- [Getting Started With Helm 3](https://thorsten-hans.com/getting-started-with-helm3/): This Helm 3 tutorial helps you to get started with the latest version of the famous Kubernetes package manager. Grow fast and master Helm 3.- [Custom Validation Rules for Variables in Terraform](https://thorsten-hans.com/custom-validation-rules-for-variables-in-terraform/): Learn how to harden your Terraform projects using custom validation rules for input variables. The feature is still experimental. However, it looks promising and may help you!- [ACR Unleashed – Image Scanning With Azure Security Center](https://thorsten-hans.com/azure-container-registry-unleashed-image-scanning-with-azure-security-center/): Integrate ACR with Azure Security Center. Find vulnerabilities in Docker Images. Scan every Docker Image and get reports in Azure Security Center- [Free English Terraform Webinar on Thursday the 16th of April](https://thorsten-hans.com/free-english-terraform-webinar-april-2020/): Learn Terraform by joining this free, English, online Webinar by Thorsten Hans and get started with Infrastructure as Code in the context of Microsoft Azure.- [Free German Terraform Webinar on Wednesday the 15th of April](https://thorsten-hans.com/free-german-terraform-webinar-april-2020/): Learn Terraform by joining this free, German, online Webinar by Thorsten Hans and get started with Infrastructure as Code in the context of Microsoft Azure.- [3 Ways to integrate ACR with AKS](https://thorsten-hans.com/3-ways-to-integrate-acr-with-aks/): Learn 3 different ways how to integrate Azure Container Registry (ACR) with Azure Kubernetes Service (AKS) to pull Docker images from your protected Docker Registry.- [Extend Kubernetes with Custom Resource Definitions and RBAC for ServiceAccounts](https://thorsten-hans.com/custom-resource-definitions-with-rbac-for-serviceaccounts/): Define Custom Resource Definitions (CRDs) to get more out of Kubernetes. Learn to work with custom objects. Protect CRDs with RBAC and access them with ServiceAccounts- [ACR Unleashed – Tasks](https://thorsten-hans.com/azure-container-registry-unleashed-tasks/): Leverage ACR tasks to create Docker Image automatically. Start small with Quick Tasks, grow by adding different Triggers and master Multi-Step Tasks by example- [European Azure Conference 2020](https://thorsten-hans.com/european-azure-conference-2020/): Announcing European Azure Conference 2020 (#EAC20) in Nice from June 2nd till June 4th- [API Summit - IaC for everyone with Terraform](https://thorsten-hans.com/api-summit-iac-for-everyone-with-terraform/): Slidedeck and Demos from my IaC for everyone with Terraform talk at API Summit 2019 in Berlin.- [ESPC 2019 - Interview](https://thorsten-hans.com/espc2019-interview/): Fabian Williams interviewed me during #ESPC19 to get my thoughts about ESPC, Infrastructure as Code and the growing diversity and community at European SharePoint, Office365 and Azure Conference- [ACR Unleashed – Webhooks](https://thorsten-hans.com/azure-container-registry-unleashed-webhooks/): Connect any external service to Azure Container Registry using ACR webhooks. Learn which ACR webhooks exist and how to use them- [ESPC 2019 - Code your Azure with Terraform](https://thorsten-hans.com/espc2019-code-your-azure-with-terraform/): Slidedeck and Demos from my Code your Azure Deployments using HashiCorp Terraform talk at European SharePoint and Azure Conference 2019 in Prague.- [Docker on Windows - Fix Time Synchronization Issue](https://thorsten-hans.com/docker-on-windows-fix-time-synchronization-issue/): Are your Docker containers on Windows behind a couple of hours or even days? Are they displaying or working with a wrong time/date? Read why this happens and how to fix it.- [ACR Unleashed – Integrate ACR And Azure Monitor](https://thorsten-hans.com/azure-container-registry-unleashed-integrate-acr-and-azure-monitor/): Get ACR metricts with Azure Monitor. Configure individual alrets and notifications. Integrate ACR and Azure Monitor with Log Analytics Workspaces now. Start now and get deep insights- [ACR Unleashed – Authentication, Identity Access Management And Content-Trust](https://thorsten-hans.com/azure-container-registry-unleashed-authentication-iam-contenttrust/): Deep Dive Authentication and Authorization for Azure Container Registry. Guide to understand and lockdown your ACR instances.- [ACR Unleashed – ACR Up And Running with Geo Replication](https://thorsten-hans.com/azure-container-registry-unleashed-acr-up-and-running/): Setup Azure Container Registry according to best practices. Configure ACR geo replication for high availability. The 1st of a 7 part series about ACR- [Book review - Kubernetes Up & Running 2nd Edition](https://thorsten-hans.com/book-review-kubernetes-up-and-running-2nd-edition/): The 2nd Edition of Kubernetes: Up & Running has been released recently. I really liked the first edition, so I sat down and read the new version.- [Certified Kubernetes Application Developer - Review and Tips](https://thorsten-hans.com/certified-kubernetes-application-developer-ckad-review-and-tips/): During this week, I took the CKAD exam and passed. Read why I registered for that exam and get some tips to prepare properly for your take on CKAD or CKA.- [Join my webinar about Terraform and Azure during Azure Week](https://thorsten-hans.com/terraform-webinar-during-azure-week/): Ramp up your Terraform skills. Join my webinar about Terraform and Azure on the 18th of October as part of Azure Week.- [AKS and ACR Integration - Revisited](https://thorsten-hans.com/aks-and-acr-integration-revisited/): Integrating AKS and ACR to pull images from private Container Registries became easier with recent Azure CLI 2.0 releases. Check out how easy you can connect both excellent services.- [The state of Helm 3 - Hands-On!](https://thorsten-hans.com/the-state-of-helm3-hands-on/): Helm 3 is approaching fast and comes with some fundamental changes. See what's happening and how those changes feel in Beta 3.- [Custom domains in Azure Kubernetes Service (AKS) with NGINX Ingress and Azure CLI](https://thorsten-hans.com/custom-domains-in-azure-kubernetes-with-nginx-ingress-azure-cli/): See how to link a custom domain to Azure Kubernetes Service (AKS) with Azure CLI and NGINX Ingress- [Six golden rules of Infrastructure as Code (IaC)](https://thorsten-hans.com/six-golden-rules-of-infrastructure-as-code-iac/): In this post I share my six golden rules for Infrastructure as Code (IaC) projects.- [Terraform - State demystified](https://thorsten-hans.com/terraform-state-demystified/): State Management is critical in Terraform. This post provides an overview of what state is and how you should deal with it.- [Terraform - The Definitive Guide for Azure Enthusiasts](https://thorsten-hans.com/terraform-the-definitive-guide-for-azure-enthusiasts/): Learn core concepts of Terraform. Automate your Microsoft Azure environments to ramp-up Infrastructure as Code. Dive into HashiCorp Configuration Language (HCL). Start terraforming your cloud, now.- [Azure Key Vault FlexVolume for Kubernetesβ€Š β€” β€ŠA journey to integrate Azure Key Vault and AKS](https://thorsten-hans.com/azure-key-vault-flexvolume-for-kubernetes/): Integrate Azure Key Vault and Azure Kubernetes services without leaking sensitive configuration data such as Service Principal credentials by using Azure AD Pod Identity and Azure Key Vault FlexVolume for Kubernetes- [AzureAD Pod Identity in AKS: A journey to integrate Azure Key Vault](https://thorsten-hans.com/azuread-pod-identity-aks-integrate-azure-keyvault/): With Azure AD Pod Identity you can finally run any pod in an Azure Kubernetes Service in the context of an external, loosely coupled Azure Identity. This builds the foundation for a seamless integration of Azure Key Vault and AKS- [Inspect your Kubernetes inventory in no time with ASP.NET Core and Kubernetes Client Library](https://thorsten-hans.com/inspect-kubernetes-inventory-with-aspnetcore-kubernetes-client-library/): Learn how to use the C# Kubernetes Client library to query Kubernetes inventory and expose it via HTTP using a simple ASP.NET Core WebAPI which will be directly deployed to an AKS cluster as Deployment.- [Integrating Azure Key Vault with Azure Container Services](https://thorsten-hans.com/integrating-azure-keyvault-with-azure-container-services/): Learn how to integrate Azure Key Vault and Azure Container Services. This article guides you through everything you need, in order to query Key Vault from an ASP.NET Core App running in a Pod on Kubernetes- [Limit resources for containers with LimitRanges in Kubernetes](https://thorsten-hans.com/limit-resources-for-containers-with-limitranges-in-kubernetes/): Managing resources and resource limits is essential to optimize utilization of Kubernetes clusters. This post demonstrates how to limit resources for Pods in K8s- [Upgrading a Kubernetes cluster on AKS using Azure CLI](https://thorsten-hans.com/upgrading-a-kubernetes-cluster-on-aks-using-azure-cli/): The AKS team offers a great set of commands to make administrative operations for Kubernetes clusters very easy. This article demonstrates how to upgrade a AKS cluster.- [CronJobs on AKS using Azure Files and .NET Core](https://thorsten-hans.com/cronjobs-in-managed-azure-container-services-aks-using-azure-files-and-net-core/): CronJobs build an essential part of many applications. Often, you've to persist some kind of data from application artifacts like CronJobs. This article demonstrates how to build such a CronJob with Azure Files and run it on a Kubernetes cluster. - [Deploy Azure Functions to Kubernetes and scale them automatically](https://thorsten-hans.com/deploy-azure-functions-to-kubernetes-and-scale-them-automatically/): Learn how to take the official Azure Functions runtime and deploy it as Docker container to a Kubernetes cluster and by adding horizontal pod autoscaling (HPA) you can handle almost any load automatically.- [Hybrid Kubernetes Cluster on Azure Container Services](https://thorsten-hans.com/hybrid-kubernetes-cluster-on-azure-container-services/): In this article, I describe how to spin up a hybrid Kubernetes Cluster using acs-engine. You'll deploy a Linux and a Windows Pod to the same Kubernetes cluster and expose them to the public.- [What to do if Pods stuck in state Pending while deploying to Azure Container Instances](https://thorsten-hans.com/fix-pods-stuck-in-pending-on-azure-container-instances/): Learn how to examine and fix issues when Pods stuck in state Pending while deploying them to Azure Container Instances- [Autocompletion for kubectl and aliases using oh-my-zsh](https://thorsten-hans.com/autocompletion-for-kubectl-and-aliases-using-oh-my-zsh/): Learn how to boost your productivity by defining aliases and enable auto completion for kubectl- [Using Azure Files in Kubernetes Deployments with ASP.NET Core](https://thorsten-hans.com/using-azure-files-in-kubernetes-deployments-with-asp-net-core/): Learn how to use Azure Files in Kubernetes Deployments from an ASP.NET Core Application- [How to use a private Azure Container Registry with Kubernetes](https://thorsten-hans.com/how-to-use-private-azure-container-registry-with-kubernetes/): Pulling docker images from private registries is an essential, basic task that you need to do almost every day. This article guides you through the process of integrating Azure Container Registry and Azure Kubernetes Services.- [KISS  Angular apps a bit more framework agnostic](https://thorsten-hans.com/kiss-angular-apps-more-framework-agnostic/): This post describes how to build Angular apps more framework-agnostic. Following the simple samples in this post will make your code more reusable. - [Make writing technical content great again!](https://thorsten-hans.com/make-writing-technical-content-great-again/): How do you write your technical articles? A question I was often asked. This article is a quick overview of my writing workflow and the tools that I use to produce my articles- [Electron CrashReporter - stay up to date if your app fucked up!](https://thorsten-hans.com/electron-crashreporter-stay-up-to-date-if-your-app-fucked-up/): Learn how to deal with the unexpected. How can you deal with errors once you've shipped your Electron application. This post explains how to setup and use CrashPad on all platforms- [Integrating Angular and Electron using ngx-electron](https://thorsten-hans.com/integrating-angular-and-electron-using-ngx-electron/): ngx-electron is here to help you! If you want to write a desktop application using Angular, GitHub's Electron is the tool of choice to bring Single Page Applications to the desktop. ngx-electron you'll be quicker and accessing Electron's APIs is even easier from within Angular.- [Standard Angular Pipes and ng-translate](https://thorsten-hans.com/standard-angular-pipes-and-ng-translate/): internationalization is important if you build Angular applications for a bigger audience. Learn how to use standard Angular pipes with ng-translate- [Treat your iTerm2 like Guake](https://thorsten-hans.com/treat-your-iterm2-like-guake/): Learn how to configure iTerm2 to work like Guake, the popular Linux terminal. Boost your productivity and access iTerm2 quickly from everywhere.- [HTML5 notifications in electron apps with Angular](https://thorsten-hans.com/html5-notifications-in-electron-apps-with-angular/): Electron takes HTML5 notifications and bridges them to operating system notifications. So you'll learn how to create native HTML5 notifications within Angular.- [Using Augury inside of Electron Apps](https://thorsten-hans.com/using-augury-inside-of-electron-apps/): Augury by Rangle.IO is currently the best Chrome Extension for debugging Angular apps. Learn how to debug Angular apps inside of Electron using Augury.- [Angular Quickie - Why can't I compile my Angular app anymore](https://thorsten-hans.com/angular-quickie-why-cant-i-compile-my-angular-app-anymore/): Fix TypeScript compiler error TS2304 in Angular 2 beta apps. Learn why missing transitive typings break ES5 builds and how to reference them explicitly.- [Angular and Electron - The definitive guide](https://thorsten-hans.com/angular-and-electron-the-definitive-guide/): This article guides you through the process of creating an cross-platform desktop application using GitHub Electron and Angular as Single Page Application framework.- [Angular Quickie - Async Routes](https://thorsten-hans.com/angular-quickie-async-routes/): Learn how to use async routes in Angular- [NW.js and Electron compared](https://thorsten-hans.com/nw-js-and-electron-compared/): Compare NW.js and GitHub Electron for cross-platform desktop development. Explore architectural differences, release models, and real-world use cases.- [Pug-up your Angular markup](https://thorsten-hans.com/pug-up-your-angular-markup/): Streamline Angular templates using Pug (Jade) mixins and inheritance. Write cleaner, reusable markup without repetitive HTML boilerplate.- [Be more productive with Pug](https://thorsten-hans.com/be-more-productive-with-pug/): Boost your productivity with Pug. Pug compiles down to HTML and make you faster when it comes to frontend development.- [Angular Quickie β€” ViewEncapsulation.Native in all browsers](https://thorsten-hans.com/angular-quickie-viewencapsulation-native-in-all-browsers/): ViewEncapsulation tells Angular how to render the component in the final website, this post explains how to enable native ViewEncapsulation for all browsers- [Testing Angular Apps with Jasmine and TypeScript](https://thorsten-hans.com/testing-angular-apps-with-jasmine-and-typescript/): Every developer should be able to write unit tests. This article explains how to write tests based on the popular testing framework Jasmine in combination with Angular and TypeScript.- [Setting Electron App-Icons for Windows from macOS](https://thorsten-hans.com/setting-electron-app-icons-for-windows-from-macos/): Every app has to have a nice looking app icon. A simple task may become complex, especially if you deal with multiple platforms. This article explains how to set app icons for Electron-based Windows apps from macOS.- [Angular Quickie - Component ViewEncapsulation and WebComponents](https://thorsten-hans.com/angular-quickie-component-viewencapsulation-and-webcomponents/): Angular and WebComponents? Sure! Learn how the different ViewEncapsulation settings work in Angular applications and which impact every setting does have on your resulting HTML output.- [Angular Quickie - Local template variables](https://thorsten-hans.com/angular-quickie-local-template-variables/): In Angular, HTML templates aren't static. By using local template variables you can make your HTML even more dynamic and more flexible. Learn how to use local template variables in Angular, now!- [Angular Quickie β€” Elvis is in tha house](https://thorsten-hans.com/angular-quickie-elvis-operator/): Angular introduces the Elvis operator. Learn how to use it in templates and how to build more efficient HTML templates for your Angular components.- [Angular Quickie β€” How to structure your projects](https://thorsten-hans.com/angular-quickie-structure-your-apps/): Angular will become the next big thing for enterprise developers. That's why you should structure your source code correctly from the very beginning.- [Building an electron app using Angular Beta0 in TypeScript](https://thorsten-hans.com/building-an-electron-app-using-angular-beta0-in-typescript/): Today In contrast to my older ES2015 example, this article demonstrates how to build an Electron application using Angular2 Beta0 and TypeScript.- [Angular goes cross platform with GitHub Electron](https://thorsten-hans.com/angular-goes-cross-platform-with-github-electron/): This post introduces a small technical demo application which has been built using Angular, ES2015 and Electron. The entire build in this new sample has been created using Gulp.js- [Frontend Builds 7 - Conditional Build Tasks](https://thorsten-hans.com/frontend-builds-7-conditional-build-tasks/): In the seventh and last part of the "Frontend Build" article series, you'll learn how to create conditional tasks for the Build as a Service (BaaS) system.- [Frontend Builds 6 - Configurable builds](https://thorsten-hans.com/frontend-builds-6-configurable-builds/): In part five of the series you learned about Build as a Service, this post will explain how to make your own BaaS more configurable and flexible.- [Frontend Builds 5 - Build as a Service (BaaS)](https://thorsten-hans.com/frontend-builds-5-build-as-a-service-baas/): Package Gulp build configurations into reusable npm modules with Build as a Service (BaaS) to eliminate boilerplate across frontend projects.- [Frontend Builds 4 - Building Cross Platform Mobile Apps](https://thorsten-hans.com/frontend-builds-4-building-cross-platform-mobile-apps/): Package web applications for iOS and Android using Apache Cordova and Gulp.js. Learn how to configure platform builds, emulate apps, and link assets.- [Frontend Builds 3 - Cross Platform Desktop Builds](https://thorsten-hans.com/frontend-builds-3-cross-platform-desktop-builds/): Automate cross-platform desktop builds using Gulp.js and NW.js to package web applications into standalone binaries for macOS, Windows, and Linux.- [Frontend Builds 2 - readable and pluggable Gulp files](https://thorsten-hans.com/frontend-builds-2-readable-and-pluggable-gulp-files/): Learn how to build composible Gulpfiles in the second part of the series on frontend builds- [Frontend Builds 1 - Getting started](https://thorsten-hans.com/frontend-builds-1-getting-started/): Kick off modern frontend automation with Gulp.js. Learn how to structure tasks, automate builds, and optimize AngularJS apps using template caching.- [Frontend build series introduction](https://thorsten-hans.com/frontend-build-series-introduction/): Kill all humans! No not really, this post is the introduction for the Frontend Build article series. It'll explain how to automate critical steps when building Frontend applications.- [Chromebook review / Chrome App Model](https://thorsten-hans.com/chromebook-review-chrome-app-model/): I bought a Chromebook because I want to dig a bit deeper into the Chrome App Model from a developers perspective. Check out what happened...- [On the move β€” Goodbye SharePoint](https://thorsten-hans.com/on-the-move-goodbye-sharepoint/): After many years I'll finally leave the SharePoint business. In this article I'm sharing some of the reasons.- [Automate everything β€” A journey from GitHub over Codeship to Docker on Azure](https://thorsten-hans.com/automate-everything-a-journey-from-github-over-codeship-to-docker-on-azure/): Learn how to connect a GitHub repository with Microsoft Azure using Codeship to realize a CI / CD pipeline for web applications using Docker images.- [Setting up iTerm2 with OH-MY-ZSH and Powerline on OSX](https://thorsten-hans.com/setting-up-iterm2-with-oh-my-zsh-and-powerline-on-osx/): Supercharge your macOS terminal by configuring iTerm2 with Oh-My-Zsh, Solarized colors, and Powerline fonts for an efficient development workflow.- [When Electron's window.setTitle keeps you driving crazy](https://thorsten-hans.com/when-electrons-window-settitle-keeps-you-driving-crazy/): When you start your Electron App, the title of the main window may flash. Read this article and learn how to prevent title flashing- [Packaging Electron apps as ASAR archive using Gulp.js](https://thorsten-hans.com/packaging-electron-apps-as-asar-archive-using-gulp/): Do you want to ship Electorn Apps to your customers? Then you should always package application insights as ASAR. Learn how to get that done with Gulp.js- [Writing an Electron app using Angular and ES6](https://thorsten-hans.com/writing-an-electron-app-using-angular-and-es6/): Learn how to create a cross-platform desktop application for Windows, Linux and macOS based on GitHub Electron, Angular.JS and JavaScript. In this tutorial, the JS code will be transpiled using Babel and dynamic module loading is implemented with SystemJS.- [Managing Node.js and io.js with NVM](https://thorsten-hans.com/managing-node-js-and-io-js-with-nvm/): Are you using Node.js or io.js? If so, you should know NVM, the Node Version Manager. This article explains how to get started with NVM and how to use it on a daily basis.- [Developer presentations using reveal.js](https://thorsten-hans.com/developer-presentations-using-reveal-js/): Are you speaking at user groups or conferences? As a developer we would love to code our presentations. With reveal.js you can finally do it. Read this article and get started with Presentations as Code (PaC)- [I ❀ CodeShip](https://thorsten-hans.com/i-love-codeship/): Automate continuous integration and continuous deployment for web applications using CodeShip. Set up automated testing and Heroku deployments easily.- [ASP.NET vNext on OSX Yosemite β€” Get KVM up and running](https://thorsten-hans.com/asp-net-vnext-on-osx-yosemite-get-kvm-up-and-running/): Run ASP.NET vNext on OS X Yosemite using Mono and KVM. Learn how to configure prerequisites with Homebrew and avoid common shell setup pitfalls.- [Accessing an WebAPI using ADAL.JS and Azure AD within AngularJS](https://thorsten-hans.com/accessing-an-webapi-using-adal-js-and-azure-ad-within-angularjs/): Authenticate AngularJS single-page applications against ASP.NET Web API using ADAL.js and Azure AD OAuth 2.0 implicit flow with step-by-step guidance.- [O365 API β€” The ultimative list of resources for devs](https://thorsten-hans.com/o365-api-the-ultimative-list-of-resources-for-devs/): Check out that great list of resources for the Office365 APIs. If you do Office365 development, this is a must have.- [Office 365 API Tools β€” GA Release changes](https://thorsten-hans.com/office-365-api-tools-ga-release-changes/): Read what has changed in the currently shipped release of Office365 API Tools.- [Office 365 API Tools Update](https://thorsten-hans.com/office-365-api-tools-update/): A new version of Office 365 API Tools has been released. Check it out!- [ShareCoffee 0.1.3](https://thorsten-hans.com/sharecoffee-0-1-3/): Learn all the new features and APIs of ShareCoffee 0.1.3- [ShareCoffee 0.1.2](https://thorsten-hans.com/sharecoffee-0-1-2/): See what's new in ShareCoffee 0.1.2- [grunt-nuget - Create NuGet packages on macOS and Linux](https://thorsten-hans.com/grunt-nuget-packaging-for-mac-and-linux/): Learn how to build NuGet packages on macOS and Linux systems.- [Use 'bower install' on Heroku](https://thorsten-hans.com/use-bower-install-on-heroku/): Learn how to use bower on Heroku to manage your client-side dependencies.- [Slides and Samples from CodeCamp NYC](https://thorsten-hans.com/slides-and-samples-from-codecamp-nyc/): Reacp of my talk at CodeCamp in New York City- [ShareCoffee eBook](https://thorsten-hans.com/sharecoffee-ebook/): After a long and intensive time, I''m really proud to announce my first eBook- [ShareCoffee with JsonLight support](https://thorsten-hans.com/sharecoffee-with-jsonlight-support/): ShareCoffee receives support for JSONLight. Opt-in and make your Apps faster and more efficient- [From the field: Ensure SharePoint Context for all kinds of redirects in MVC](https://thorsten-hans.com/from-the-field-ensure-sharepoint-context-for-all-kinds-of-redirects-in-mvc/): Are you building Provider Hosted Apps? Check out these insights from real-world projects.- [Implementing CRUD with Office365 APIs](https://thorsten-hans.com/implementing-crud-with-office365-apis/): Learn how to implement all CRUD operations using Office365 API.- [Our SharePoint Power Hour from TechEd North America](https://thorsten-hans.com/our-sharepoint-power-hour-from-teched-north-america/): Recap from my talk at TechEd North America with Jeremy Thake- [Proper Paging Implementation for Office365 APIs](https://thorsten-hans.com/proper-paging-implementation-for-office365-apis/): Another tip from the field. This post shows a proper paging implementation for lists- [Building an Office365 development machine using Microsoft Azure VirtualMachines in no time](https://thorsten-hans.com/building-office365-development-machine-using-azure-virtualmachines/): Create your very own Office365 developer machine using Azure Virtual Machines- [Using Office365 API's in MVC WebApps](https://thorsten-hans.com/using-office365-apis-in-mvc-webapps/): Learn how to use Office365 APIs in ASP.NET MVC WebApps to extend your webapps with data from Office365- [Create a lightweight REST service using Sinatra](https://thorsten-hans.com/create-a-lightweight-rest-service-using-sinatra/): Build a cross-platform, lightweight RESTful service in Ruby using Sinatra and DataMapper. Learn project structuring and endpoint implementation with ease.- [Easy switching between yammer accounts](https://thorsten-hans.com/easy-switching-between-yammer-accounts/): Are you using multiple Yammer networks, in this post I'll explain how to switch easily between those.- [MVP Mentor Session: Building SharePoint Apps with JavaScript](https://thorsten-hans.com/mvp-mentor-session-building-sharepoint-apps-with-javascript/): I contributed a webinar to Microsoft's MVP Mentor program. As mentors, we provide free coaching for students on different tech topics.- [Top 25 European SharePoint Influencers](https://thorsten-hans.com/top-25-european-sharepoint-influencers/): It's time again to vote for the top european SharePoint Influencers- [Dell Venue 8 Pro Review](https://thorsten-hans.com/dell-venue-8-pro-review/): I bought a Dell Venue 8 Pro and here are my first experiences.- [Slides and Demos from my SPC14 talk on ShareCoffee](https://thorsten-hans.com/slides-and-demos-from-my-spc14-talk-on-sharecoffee/): Grab the demos and slides from my talk on ShareCoffee at SharePoint Conference 2014 in Las Vegas- [ShareCoffee 0.0.11](https://thorsten-hans.com/sharecoffee-0-0-11/): Check out what is new in ShareCoffee 0.0.11- [SharePoint.Jasmine β€” Test your JavaScript directly inside your App](https://thorsten-hans.com/sharepoint-jasmine-test-your-javascript-directly-inside-your-app/): I've published a new NuGet package which makes testing SharePoint Apps painless.- [The ShareCoffee logo](https://thorsten-hans.com/the-sharecoffee-logo/): Finally, ShareCoffee got its own logo. Ø3DÜ84- [ShareCoffee.UserProfiles is available](https://thorsten-hans.com/sharecoffee-userprofiles-is-available/): A bunch of new features for ShareCoffee targeting user profiles. Check them out!- [An Introduction to SASS](https://thorsten-hans.com/an-introduction-to-sass/): You want to speed up your frontend development skills? Learn SASS and write stylesheets faster. This post will teach you the basics of SASS.- [An Introduction to CoffeeScript](https://thorsten-hans.com/an-introduction-to-coffeescript/): I am a CoffeeScript lover. It's so time-saving, powerful and efficient. If you want to build robust frontend stuff, you should also start with CoffeeScript. This article provides a bunch of basic stuff for new CoffeeScript devs.- [ShareCamp 2014 in Munich](https://thorsten-hans.com/sharecamp-2014-in-munich/): I'm thrilled to announce that we're organizing our 5th ShareCamp in Munich. Again we'll take over Microsoft's Germany HQ and share knowledge about SharePoint, Office 365 and Azure.- [Write your own ShareCoffee AddOns using the yeoman generator](https://thorsten-hans.com/write-your-own-sharecoffee-addons-using-the-yeoman-generator/): You can write your own, custom Add-Ons for Yeoman using the brand new sharecoffee-addon generator. Get started with ShareCoffee Add-Ons now.- [CoffeeScript vs TypeScript vs JavaScript β€” my thoughts](https://thorsten-hans.com/coffeescript-vs-typescript-vs-javascript-my-thoughts/): CoffeeScript, TypeScript or plain old JavaScript? I get that question many times from customers. Here are my thoughts...- [Query FormDigestValue from SharePoint using ShareCoffee](https://thorsten-hans.com/query-formdigestvalue-from-sharepoint-using-sharecoffee/): Do you know ShareCoffee? It's an API abstraction for SharePoint APIs and it makes daily tasks - such as querying the FormDigestValue - really easy.- [ShareCoffee.Search is available](https://thorsten-hans.com/sharecoffee-search-is-available/): ShareCoffee receives an Add-On. Now you can consume SharePoint's Search API directly from ShareCoffee and easily find things located in SharePoint or Office365.- [Using SharePoint 2013 Search REST API to execute PostQueries](https://thorsten-hans.com/using-sharepoint-2013-search-rest-api-to-execute-postqueries/): SharePoint is exposing it's Search service via HTTP. In this article I share some essential tips when using SharePoint's Search Service via HTTP.- [SPC417 Session Trailer](https://thorsten-hans.com/spc417-session-trailer/): SharePoint Conference Speakers were asked to create a small session trailer. I took that chance to create a trailer for my Session on ShareCoffee. Watch it NOW!- [What's new in ShareCoffee 0.0.8](https://thorsten-hans.com/whats-new-in-sharecoffee-v0-0-8/): See what is new in ShareCoffee 0.0.8- [Visualise your data with ShareCoffee and ChartJS](https://thorsten-hans.com/visualise-your-data-with-sharecoffee-and-chartjs/): Learn how to query data from SharePoint using ShareCoffee and visualize it with the open-source library Chart.js.- [Loading the App ChromeControl with ShareCoffee](https://thorsten-hans.com/loading-the-app-chromecontrol-with-sharecoffee/): When building SharePoint Apps, you've to load the so-called App chrome. This post explains how to make this integration smoother with ShareCoffee- [Speaking at SharePoint Conference 2014 in Vegas](https://thorsten-hans.com/speaking-at-sharepoint-conference-2014-in-vegas/): I'm thrilled to announce that I'll be speaking at SharePoint Conference 2014 in Las Vegas- [Creating an ExcelServices JavaScript UDF β€” A working Sample](https://thorsten-hans.com/creating-excelservices-javascript-udf/): This article explains how you can create User Defined Functions (UDF) with JavaScript for Excel Services- [ShareCoffee is available](https://thorsten-hans.com/sharecoffee-is-available/): I'm proud to release the first version of ShareCoffee. A small but powerful library which unifies consumption of SharePoint's HTTP based APIs. In addition a bunch of helpers are included for the SharePoint App framework.- [An Introduction to Pug (aka Jade)](https://thorsten-hans.com/an-introduction-to-jade/): Learn how to use Jade (aka Pug) to write your frontend code instead of relying on plain old HTML. This article guides you through the basics of Pug.- [Surface 1 Pro β€” A development machine](https://thorsten-hans.com/surface-1-pro-a-development-machine/): Can you use a Surface 1 Pro as a development machine? I'm using the Surface 1 Pro for quite some time now. Read my recap.- [Top 14 SPC14 Sessions announced](https://thorsten-hans.com/top-14-spc14-sessions-announced/): Microsoft announced the TOP 14 Sessions for SharePoint Conference in Las Vegas. Here are my thoughts on the picks.- [Visual Studio 2013 for SharePoint Development β€” My experience from the Preview Phase](https://thorsten-hans.com/visual-studio-2013-for-sharepoint-development-my-experience-from-the-preview-phase/): I spent much time using the Visual Studio 2013 preview.Today I want to share my experiences from the preview-phase.- [Yeoman the web development workflow](https://thorsten-hans.com/yeoman-the-web-development-workflow/): Have you heard of Yeoman? This post explains how to get started with yeoman. No matter if you do frontend or backend development, Yeoman will assist you.- [From Zero to Hero β€” How we brand SharePoint using Yeoman](https://thorsten-hans.com/from-zero-to-hero-how-we-brand-sharepoint-using-yeoman/): Learn how we build SharePoint branding projects using latest frontend technologies such as Yeoman, CoffeeScript, Pug and SASS- [Talking to SharePoint's REST Services with C# using RESTSharp](https://thorsten-hans.com/consume-sharepoints-rest-services-with-restsharp/): Do you have to consume data from SharePoint using C#? Then this article is for you! It explains how to query data from SharePoint's API using RESTSharp.- [Repair OneNote sync on iOS7](https://thorsten-hans.com/repair-onenote-sync-on-ios7/): I'm a OneNote Junkie. However, my instance of OneNote was recently broken after updating to iOS7. Learn how to repair it.- [Wrong MSDN documentation on SharePoint's REST interface](https://thorsten-hans.com/wrong-msdn-documentation-on-sharepoints-rest-interface/): Today I found another bug in MSDN documentation which is worth sharing for SharePoint developers- [ShareCamp 2013 in Vienna](https://thorsten-hans.com/sharecamp-2013-in-vienna/): A quick recap of ShareCamp 2013 in Vienna- [Developer Week 2013 β€” Quick recap](https://thorsten-hans.com/developer-week-2013-quick-recap/): I delivered two talks at Developer Week 2013 - here a quick recap- [DotNetDay Franken β€” Review and Slides](https://thorsten-hans.com/dotnetday-franken-review-and-slides/): Quick recap from .NET Day Franken- [Create a SP2013 VM on Azure using PowerShell](https://thorsten-hans.com/create-a-sp2013-vm-on-azure-using-powershell/): Do you need a SharePoint Development environment? Read this article and learn how to spin it up in Azure using PoSh.- [ShareCamp 2013 Vienna β€” We're doing it again](https://thorsten-hans.com/sharecamp-2013-vienna-were-doing-it-again/): I'm thrilled to announce another ShareCamp. This time we'll visit Microsoft HQ in Austria. See all information about the event in this post.- [Productivity boost with SublimeText Plugins](https://thorsten-hans.com/productivity-boost-with-sublimetext-plugins/): Sublime Text is a mighty editor with a great plugin ecosystem. In this article, I'll share my minimal, fast and yet powerful Sublime text plugin combination.- [Launch modal dialogs from ECB CustomActions from within the HostWeb](https://thorsten-hans.com/modal-dialogs-from-ecb-customactions-from-within-the-hostweb/): Learn how to launch modal dialogs in a SharePoint App using CustomActions for the EditControlBlock- [Maintaining Brownfield JS Apps? Check Js2Coffee](https://thorsten-hans.com/maintaining-brownfield-js-apps-check-js2coffee/): Convert legacy JavaScript into clean, readable CoffeeScript using Js2Coffee. Learn how to install and use this handy CLI tool for brownfield codebases.- [ShareCamp 2013 recap](https://thorsten-hans.com/sharecamp-2013-recap/): Read the Recap of ShareCamp 2013- [Windows Azure Global Bootcamp](https://thorsten-hans.com/windows-azure-global-bootcamp/): Local Events on Azure around the entire globe. Join the Windows Azure Global Bootcamp.- [Windows Azure IaaS reaches GA](https://thorsten-hans.com/windows-azure-iaas-reaches-ga/): Microsoft Azure IaaS components just hit GA, so it's the right time to spin up a SharePoint farm on Azure. Read what you need and how much you've to pay for it.- [Prevent errors while using SPWebConfigModification](https://thorsten-hans.com/prevent-errors-while-using-spwebconfigmodification/): Have you ever heard of SPWebConfigModification? If so, check this post and see how to use it correctly.- [10 Days using Surface Pro β€” A developers review](https://thorsten-hans.com/10-days-using-surface-pro-a-developers-review/): I bought a Surface Pro and I'm using it as my main device to do software development. Read my recap and get all the pros and cons- [Yammer vs SharePoint Social in 2013](https://thorsten-hans.com/yammer-vs-sp-social-in-2013/): Should you use Yammer or SharePoint's social features? Which challenges will you face? What was our feedback from implementing Yammer at our company.