Category · 94 posts

cloud

  1. Using tasks with streaming in Google Agent2Agent (A2A)

    In a previous post we created a simple A2A agent that uses synchronous message exchange. An A2A client sends a message and the A2A server, via the Agent Executor, responds with a message. But what if you have a longer running task to perform and you want to inform the client that the task in…

    ai
  2. Create a Copilot declarative agent that calls an API with authentication

    In a previous post, we looked at creating a Copilot declarative agent. The agent had one custom action that called the JSONPlaceholder API. Check that post for an introduction to what these agents can do. Using a dummy, unauthenticated API is not much fun so let’s take a look at doing the same for a…

    ai
  3. Creating a Copilot declarative agent with VS Code and the Teams Toolkit

    If you are a Microsoft 365 Copilot user, you have probably seen that the words “agent” and “Copilot agent” are popping up here and there. For example, if you chat with Copilot there is an Agents section in the top right corner: Above, there is a Visual Creator agent that’s built-in. It’s an agent dedicated…

    ai
  4. Using your own message broker with Diagrid Catalyst

    In a previous post, I wrote about Diagrid Catalyst. Catalyst provides services like pub/sub and state stores to support the developer in writing distributed applications. In the post, we discussed a sample application that processes documents and extracts fields with an LLM (gpt-4o structured extraction). Two services, upload and process, communicate via the pub/sub pattern.…

    ai
  5. Writing an multi-service document extractor with the help of Diagrid’s Catalyst

    Many enterprises have systems in place that take documents, possibly handwritten, that contain data that needs to be extracted. In this post, we will create an application that can extract data from documents that you upload. We will make use of an LLM, in this case gpt-4o. We will use model version 2024-08-06 and its…

    ai
  6. Working with Recipes and Gateways in Microsoft’s Radius

    In a previous post, we looked at the basics of deploying a multi-container app that uses Dapr with Radius. In this post, we will add two things: a recipe that deploys Redis a gateway: to make the app available to the outside world Find the full code and app.bicep in the following branch: https://github.com/gbaeke/raddemo/tree/radius-step1. Recipes…

    automation
  7. Giving Microsoft’s Radius a spin

    Microsoft recently announced Radius. As stated in their inaugural blog post, it is “a tool to describe, deploy, and manage your entire application”. With Radius, you describe your application in a bicep file. This can include containers, databases, the connections between those and much more. Radius is an open-source solution started from within Microsoft. The…

    azure
  8. Enhancing Semantic Search with a Streamlit UI

    In a previous blog post, we discussed two Python programs, upload_vectors.py and search_vectors.py. These programs were used to create and search vectors, respectively. The upload_vectors.py script created vectors from chunks of a larger text and stored them in Pinecone, while the search_vectors.py script enabled semantic search on the text. In this blog post, we will…

    ai
  9. Enhancing Blog Post Search with Chunk-based Embeddings and Pinecone

    In this blog post, we’ll show you a different approach to searching through a large database of blog posts. The previous approach involved creating a single embedding for the entire article and storing it in a vector database. The new approach is much more effective, and in this post, we’ll explain why and how to…

    ai
  10. Pinecone and OpenAI magic: A guide to finding your long lost blog posts with vectorized search and ChatGPT

    Searching through a large database of blog posts can be a daunting task, especially if there are thousands of articles. However, using vectorized search and cosine similarity, you can quickly query your blog posts and retrieve the most relevant content. In this blog post, we’ll show you how to query a list of blog posts…

    ai
  11. Step-by-Step Guide: How to Build Your Own Chatbot with the ChatGPT API

    In this blog post, we will be discussing how to build your own chat bot using the ChatGPT API. It’s worth mentioning that we will be using the OpenAI APIs directly and not the Azure OpenAI APIs, and the code will be written in Python. A crucial aspect of creating a chat bot is maintaining…

    ai
  12. Authenticate to Azure Resources with Azure Managed Identities

    In this post, we will take a look at managed identities in general and system-assigned managed identity in particular. Managed identities can be used by your code to authenticate to Azure AD resources from Azure compute resources that support it, like virtual machines and containers. But first, let’s look at the other option and why…

    azure
  13. AKS Workload Identity Revisited

    A while ago, I blogged about Workload Identity. Since then, Microsoft simplified the configuration steps and enabled Managed Identity, in addition to app registrations. But first, let’s take a step back. Why do you need something like workload identity in the first place? Take a look at the diagram below. Workloads (deployed in a container…

    azure
  14. A quick look at Azure App Configuration and the Python Provider

    When developing an application, it is highly likely that it needs to be configured with all sorts of settings. A simple list of key/value pairs is usually all you need. Some of the values can be read by anyone (e.g., a public URL) while some values should be treated as secrets (e.g., a connection string).…

    automation
  15. First steps with Crossplane

    Image Source: crossplane.io Although Crossplane has been around for a while, I never got around to trying it. Crossplane has many capabilities. However, in this post, I will focus on the following aspects: Installing Crossplane on a Kubernetes cluster (AKS); you can install on a local cluster as well (e.g., k3s, kind, minikube, …) but…

    automation
  16. Learn to use the Dapr authorization middleware

    Based on a customer conversation, I decided to look into the Dapr middleware components. More specifically, I wanted to understand how the OAuth 2.0 middleware works that enables the Authorization Code flow. In the Authorization Code flow, an authorization code is a temporary code that a client obtains after being redirected to an authorization URL…

    cloud
  17. Publish your AKS Ingress Controller over Azure Private Link

    In a previous article, I wrote about the AKS Azure Cloud Provider and its support for Azure Private Link. In summary, the functionality allows for the following: creation of a Kubernetes service of type LoadBalancer via an annotation on the service, the Azure Cloud Provider creates an internal load balancer (ILB) instead of a public…

    azure
  18. Azure Kubernetes Service and Azure Private Link Integration

    If you have done any work with Azure, you have probably come across terms such as Azure Private Link Service (PLS) and Private Endpoints (PEs). To quickly illustrate what Azure PLS is, let’s look at a diagram from the Microsoft documentation for Azure SQL database: Above, Azure SQL Database uses Azure Private Link Service (PLS)…

    azure
  19. Draft 2 and Ingress with Web Application Routing

    If you read the previous article on Draft 2, we went from source code to deployed application in a few steps: az aks draft create: creates a Dockerfile and Kubernetes manifests (deployment and service manifests) az aks draft setup-gh: setup GitHub OIDC az aks draft generate-workflow: create a GitHub workflow that builds and pushes the…

    azure
  20. Trying out Draft 2 on AKS

    Sadly no post about good Belgian beer 🍺. Draft 2 is an open-source project that aims 🎯 to make things easier for developers that build Kubernetes applications. It can improve the inner dev loop, where the developers code and test their apps, in the following ways: Automate the creation of a Dockerfile Automate the creation…

    cloud
  21. Quick Guide to Flux v2 on AKS

    Now that the Flux v2 extension for Azure Kubernetes Service and Azure Arc is generally available, let’s do a quick guide on the topic. A Quick Guide, at least on this site 😉, is a look at the topic from a command-line perspective for easy reproduction and evaluation. This Quick Guide is also on GitHub.…

    azure
  22. Quick Guide to the Secret Store CSI driver for Azure Key Vault on AKS

    Yesterday, I posted the Quick Guide to Kubernetes Workload Identity on AKS. This post contains a similar guide to enabling and using the Secret Store CSI driver for Azure Key Vault on AKS. All commands assume bash. You should have the Azure CLI installed and logged in to the subscription as the owner (because you…

    azure
  23. Quick Guide to Kubernetes Workload Identity on AKS

    IMPORTANT: the steps below are not relevant anymore; the steps in the quick guide have been updated; see https://github.com/gbaeke/quick-guides/blob/main/workload-identity/README.md for the correct steps. Some things that have changed: you can now use managed identities instead of app registrations; federated token configuration is at the managed identity level you do not need to install the webhook…

    azure
  24. A look at some of Azure Container App’s new features

    A while ago, I created a YouTube playlist about Azure Container Apps. The videos were based on the first public preview. At the time, several features were missing or still needed to be improved (as expected with a preview release): An easy way to create a container app, similar to az webapp up Managed Identity…

    azure
  25. Kubernetes Workload Identity with AKS

    When you run a workload, no matter how simple or complex, you often need to access protected resources in both a secure and manageable way. Often, a resource’s security is integrated with an identity store. Azure resources, for instance, can be secured with roles assigned to Azure Active Directory (AAD) users, groups, or service principals.…

    azure
  26. Taking Azure Container Apps for a spin

    At Ignite November 2021, Microsoft released Azure Container Apps as a public preview. It allows you to run containerized applications on a serverless platform, in the sense that you do not have to worry about the underlying infrastructure. The underlying infrastructure is Kubernetes (AKS) as the control plane with additional software such as: Dapr: distributed…

    azure
  27. Kubernetes Blue-Green deployments with Argo Rollouts

    In this post, we will take a look at 🟦/🟩 blue-green deployments in Kubernetes. With blue-green deployments, you deploy a new version of an application or service next to the live and stable version. After manual or automatic checks, you promote the new version to become the live version. Switching between versions is simply a…

    cloud
  28. Trying out WebAssembly on Azure Kubernetes Service

    Introduction In October 2021, Microsoft announced the public preview of AKS support for deploying WebAssembly System Interface (WASI) workloads in Kubernetes. You can read the announcement here. In short, that means we can run another type of workload on Kubernetes, besides containers! WebAssembly is maybe best known for the ability to write code with languages…

    cloud
  29. Azure AD pod-managed identities in AKS revisited

    A long time ago, I wrote a blog post about assigning managed identities to pods in Azure Kubernetes Services (AKS) to authenticate to Azure Storage. The implementation was based on the aad-pod-identity project on GitHub. You can look at the walkthrough to see how it worked. Microsoft recently released a preview that enables you to…

    azure
  30. Azure Key Vault Provider for Secrets Store CSI Driver

    In the previous post, I talked about akv2k8s. akv2k8s is a Kubernetes controller that synchronizes secrets and certificates from Key Vault. Besides synchronizing to a regular secret, it can also inject secrets into pods. Instead of akv2k8s, you can also use the secrets store CSI driver with the Azure Key Vault provider. As a CSI…

    automation
  31. An introduction to Flux v2

    If you have read my blog and watched my Youtube channel, you know I have worked with Flux in the past. Flux, by weaveworks, is a GitOps Kubernetes Operator that ensures that your cluster state matches the desired state described in a git repository. There are other solutions as well, such as Argo CD. With…

    automation
  32. Docker without Docker: a look at Podman

    I have been working with Docker for quite some time. More and more however, I see people switching to tools like Podman and Buildah and decided to give that a go. I installed a virtual machine in Azure with the following Azure CLI command: Just replace RESOURCEGROUP, VMNAME and PASSWORD with the values you want…

    azure
  33. Azure Private Link and DNS

    When you are just starting out with Azure Private Link, it can be hard figuring out how name resolution works and how DNS has to be configured. In this post, we will take a look at some of the internals and try to clear up some of the confusion. If you end up even more…

    azure
  34. From MQTT to InfluxDB with Dapr

    In a previous post, we looked at using the Dapr InfluxDB component to write data to InfluxDB Cloud. In this post, we will take a look at reading data from an MQTT topic and storing it in InfluxDB. We will use Dapr 0.10, which includes both components. To get up to speed with Dapr, please…

    cloud
  35. Using the Dapr InfluxDB component

    A while ago, I created a component that can write to InfluxDB 2.0 from Dapr. This component is now included in the 0.10 release. In this post, we will briefly look at how you can use it. If you do not know what Dapr is, take a look at https://dapr.io. I also have some videos…

    azure
  36. Dapr Service Invocation between an HTTP Python client and a GRPC Go server

    Recently, I published several videos about Dapr on my Youtube channel. The videos cover the basics of state management, PubSub and service invocation. The Getting Started with state management and service invocation: Let’s take a closer look at service invocation with HTTP, Python and Node. Service Invocation with HTTP The services you write (here Service…

    azure
  37. Integrate an Azure Storage Account with Active Directory

    A customer with a Windows Virtual Desktop deployment needed access to several file shares for one of their applications. The integration of Azure Storage Accounts with Active Directory allows us to provide this functionality without having to deploy and maintain file services on a virtual machine. A sketch of the environment looks something like this:…

    azure
  38. Adding SMB1 protocol support to Windows Server 2019

    I realize this is not a very exciting post, especially compared to my other wonderful musing on this site, but I felt I really had to write it to share the pain! A colleague I work with needed to enable this feature on an Azure Windows Server 2019 machine to communicate with some old system…

    azure
  39. Adding Authentication and Authorization to an Azure Static Web App

    In a previous post, we created a static web app that retrieves documents from Cosmos DB via an Azure Function. The Azure Function got deployed automatically and runs off the same domain as your app. In essence, that frees you from having to setup Azure Functions separately and configuring CORS in the process. Instead of…

    api
  40. First Look at Azure Static Web Apps

    Note: part 2 looks at the authentication and authorization part. At Build 2020, Microsoft announced Azure Static Web Apps, a new way to host static web apps on Azure. In the past, static web apps, which are just a combination of HTML, JavaScript and CSS, could be hosted in a Storage Account or a regular…

    api
  41. Azure SQL, Azure Active Directory and Seamless SSO: An Overview

    Instead of pure lift-and-shift migrations to the cloud, we often encounter lift-shift-tinker migrations. In such a migration, you modify some of the application components to take advantage of cloud services. Often, that’s the database but it could also be your web servers (e.g. replaced by Azure Web App). When you replace SQL Server on-premises with…

    azure
  42. Progressive Delivery on Kubernetes: what are your options?

    If you have ever deployed an application to Kubernetes, even a simple one, you are probably familiar with deployments. A deployment describes the pods to run, how many of them to run and how they should be upgraded. That last point is especially important because the strategy you select has an impact on the availability…

    cloud
  43. Trying Windows Virtual Desktop

    Update: Windows Virtual Desktop 2020 Spring Update brings an new fully ARM-based deployment method and portal experience. As of May 2020, these features are in public preview. Check the documentation. Links to the documentation in this article will also reflect the update. It was Sunday afternoon. I had some time. So I had this crazy…

    azure
  44. Writing a Kubernetes operator with Kopf

    In today’s post, we will write a simple operator with Kopf, which is a Python framework created by Zalando. A Kubernetes operator is a piece of software, running in Kubernetes, that does something application specific. To see some examples of what operators are used for, check out operatorhub.io. Our operator will do something simple in…

    api
  45. Giving Argo CD a spin

    If you have followed my blog a little, you have seen a few posts about GitOps with Flux CD. This time, I am taking a look at Argo CD which, like Flux CD, is a GitOps tool to deploy applications from manifests in a git repository. Don’t want to read this whole thing? There are…

    automation
  46. Kustomize and Flux

    Flux has a feature called manifest generation that works together with Kustomize. Instead of just picking YAML files from a git repo and applying them, customisation is performed with the kustomize build command. The resulting YAML then gets applied to your cluster. If you don’t know how customisation works (without Flux), take a look at…

    azure
  47. Creating Kubernetes secrets from Key Vault

    If you do any sort of development, you often have to deal with secrets. There are many ways to deal with secrets, one of them is retrieving the secrets from a secure system from your own code. When your application runs on Kubernetes and your code (or 3rd party code) cannot be configured to retrieve…

    automation
  48. Deploy AKS with Nginx, External DNS, Helm Operator and Flux

    A while ago, I blogged about an Azure YAML pipeline to deploy AKS together with Traefik. As a variation on that theme, this post talks about deploying AKS together with Nginx, External DNS, a Helm Operator and Flux CD. I blogged about Flux before if you want to know what it does. I added the…

    azure
  49. Front Door with WordPress on Azure App Service

    Here’s a quick overview of the steps you need to take to put Front Door in front of an Azure Web App. In this case, the web app runs a WordPress site. Step 1: DNS Suppose you deployed the Web App and its name is gebawptest.azurewebsites.net and you want to reach the site via wp.baeke.info.…

    azure
  50. GitOps with Weaveworks Flux

    If you have ever deployed applications to Kubernetes or other platforms, you are probably used to the following approach: developers check in code which triggers CI (continuous integration) and eventually results in deployable artifacts a release process deploys the artifacts to one or more environments such as a development and a production environment In the…

    automation
  51. Back to basics: DNS ALIAS records

    A few days ago, I had to map the domain inity.io to a Netlify domain. If you have only worked with DNS once in your life, you probably know about these two types of records: A: an A record maps a name to an IP address CNAME: a CNAME record maps a name to another…

    azure
  52. Deploy AKS and Traefik with an Azure DevOps YAML pipeline

    This post is a companion to the following GitHub repository: https://github.com/gbaeke/aks-traefik-azure-deploy. The repository contains ARM templates to deploy an AD integrated Kubernetes cluster and an IP address plus a Helm chart to deploy Traefik. Traefik is configured to use the deployed IP address. In addition to those files, the repository also contains the YAML pipeline,…

    cloud
  53. Quick Tip: deploying multiple Traefik ingresses

    For a customer that is developing a microservices application, the proposed architecture contains two Kubernetes ingresses: internal ingress: exposed via an Azure internal load balancer, deployed in a separate subnet in the customer’s VNET; no need for SSL external ingress: exposed via an external load balancer; SSL via Let’s Encrypt The internal ingress exposes API…

    api
  54. Publishing and securing your API with Kong and Azure Front Door

    In the post, Securing your API with Kong and CloudFlare, I exposed a dummy API on Kubernetes with Kong and published it securely with CloudFlare. The breadth of features and its ease of use made CloudFlare a joy to work with. It didn’t take long before I got the question: “can’t you do that with Azure…

    api
  55. Azure API Management with public APIs on Kubernetes

    In my previous blog post, I looked at Azure API Management in combination with private APIs hosted on Kubernetes. The APIs were exposed via Traefik and an internal load balancer. To make that scenario work, the Azure API Management premium SKU is required, which is quite costly. This post describes another approach where the APIs…

    api
  56. Azure DevOps multi-stage YAML pipelines

    A while ago, the Azure DevOps blog posted an update about multi-stage YAML pipelines. The concept is straightforward: define both your build (CI) and release (CD) pipelines in a YAML file and stick that file in your source code repository. In this post, we will look at a simple build and release pipeline that builds…

    cloud
  57. A first look at Rancher Rio

    As explained on https://github.com/rancher/rio, Rancher Rio is a MicroPaaS that can be layered on top of any standard Kubernetes cluster. It makes it easier to deploy, scale, version and expose services. In this post, we will take a quick look at some of its basic capabilities. To follow along, make sure you have a Kubernetes…

    cloud
  58. Streamlined Kubernetes Development with Draft

    A longer time ago, I wrote a post about draft. Draft is a tool to streamline your Kubernetes development experience. It basically automates, based on your code, the creation of a container image, storing the image in a registry and installing a container based on that image using a Helm chart. Draft is meant to…

    api
  59. Azure Kubernetes Service and Azure Firewall

    Deploying Azure Kubernetes Service (AKS) is, like most other Kubernetes-as-a-service offerings such as those from DigitalOcean and Google, very straightforward. It’s either a few clicks in the portal or one or two command lines and you are finished. Using these services properly and in a secure fashion is another matter though. I am often asked…

    azure
  60. Revisiting Rancher

    Several years ago, when we started our first adventures in the wonderful world of IoT, we created an application for visualizing real-time streams of sensor data. The sensor data came from custom-built devices that used 2G for connectivity. IoT networks and protocols such as SigFox, NB-IoT or Lora were not mainstream at that time. We…

    azure
  61. Trying Google Cloud Run

    With the release of Google’s Cloud Run, I decided to check it out with my nasnet container. With Cloud Run, you simply deploy your container and let Google scale it based on the requests it receives. When your container is not used, it gets scaled to zero. As such, it combines the properties of a…

    cloud
  62. Hosting an Angular app in Kubernetes

    We recently had to deploy an Angular application to Kubernetes in three different environments: development, acceptance and production. The application is not accessed via the browser directly. Instead, it’s accessed via a Microsoft Office add-in. The next sections will provide you with some tips to make this work. In practice, I do not recommend hosting…

    api
  63. Creating and containerizing a TensorFlow Go application

    In an earlier post, I discussed using a TensorFlow model from a Go application. With the TensorFlow bindings for Go, you can load a model that was exported with TensorFlow’s SavedModelBuilder module. That module saves a “snapshot” of a trained model which can be used for inference. In this post, we will actually use the…

    ai
  64. AKS Managed Pod Identity and access to Azure Storage

    When you need to access Azure Storage (or other Azure resources) from a container in AKS (Kubernetes on Azure), you have many options. You can put credentials in your code (nooooo!), pass credentials via environment variables, use Kubernetes secrets, obtain secrets from Key Vault and so on. Usually, the credentials are keys but you can…

    automation
  65. Kubernetes on DigitalOcean

    Image: from DigitalOcean’s website Yesterday, I decided to try out DigitalOcean’s Kubernetes. As always with DigitalOcean, the solution is straightforward and easy to use. Similarly to Azure, their managed Kubernetes product is free. You only pay for the compute of the agent nodes, persistent block storage and load balancers. The minimum price is 10$ per…

    automation
  66. Building a real-time messaging server in Go

    Often, I need a simple real-time server and web interface that shows real-time events. Although there are many options available like socket.io for Node.js or services like Azure SignalR and PubNub, I decided to create a real-time server in Go with a simple web front-end: For a real-time server in Go, there are several options.…

    api
  67. Infrastructure as Code: exploring Pulumi

    Image: from the Pulumi website In my Twitter feed, I often come across Pulumi so I decided to try it out. Pulumi is an Infrastructure as Code solution that allows you to use familiar development languages such as JavaScript, Python and Go. The idea is that you define your infrastructure in the language that you…

    automation
  68. Azure API Management Consumption Tier

    In the previous post, I talked about a personal application I use to deploy Azure resources to my lab subscription. The architecture is pretty straightforward: After obtaining an id token from Azure Active directory (v1 endpoint), API calls go to API Management with the token in the authorization HTTP header. API Management is available in…

    api
  69. Recognizing images with Azure Machine Learning and the ONNX ResNet50v2 model

    Featured image from: https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852 In a previous post, I discussed the creation of a container image that uses the ResNet50v2 model for image classification. If you want to perform tasks such as localization or segmentation, there are other models that serve that purpose. The image was built with GPU support. Adding GPU support was pretty…

    ai
  70. Creating a GPU container image for scoring with Azure Machine Learning

    In a previous post, I discussed how you can add an existing Kubernetes cluster to an Azure Machine Learning workspace. Adding an existing cluster is necessary when the workspace does not support auto creation of a cluster. That is the case when you want to use the Standard_NC6s_v3 virtual machine image. I also used a…

    ai
  71. Attaching Kubernetes clusters with NVIDIA V100 GPUs to Azure Machine Learning Service

    Azure Machine Learning Service allows you to easily deploy compute for training and inference via a machine learning workspace. Although one of the compute types is Kubernetes, the workspace is a bit picky about the node VM sizes. I wanted to use two Standard_NC6s_v3 instances with NVIDIA Tesla V100 GPUs but that was not allowed.…

    ai
  72. Deploying Azure resources using webhookd

    In the previous blog post, I discussed adding SSL to webhookd. In this post, I will briefly show how to use this solution to deploy Azure resources. To run webhookd, I deployed a small Standard_B1s machine (1GB RAM, 1 vCPU) with a system assigned managed identity. After deployment, information about the managed identity is available…

    api
  73. Using certmagic to add SSL to webhookd

    A while ago, I stumbled upon https://github.com/ncarlier/webhookd. It is a simple webhook server, written in Go, that can execute shell scripts. To use it, simply install it on a Linux box and execute it. By default, the executable looks at the ./scripts folder and maps each shell script to a URL you can call. It…

    api
  74. Draft: a simpler way to deploy to Kubernetes during development

    If you work with containers and work with Kubernetes, Draft makes it easier to deploy your code while you are in the earlier development stages. You use Draft while you are working on your code but before you commit it to version control. The idea is simple: You have some code written in something like…

    api
  75. Adaptable IoT

    On May 24, 2017 I gave a short partner session at Techorama, a technology event in Belgium for both developers and IT Pros. You can find the slides on SlideShare: https://www.slideshare.net/gbaeke/adaptable-iot Since it was a short session and a short slide deck, this post provides a bit more background information. First, what do I mean…

    analytics
  76. IoT Hub Device Twin and MQTT

    When you connect to IoT Hub with MQTT directly, you need to connect with a ClientId, username and password. Those three values need to be set according to Azure IoT Hub specificiations: ClientId: use the IoT Hub deviceId Username: use {iothubhostname}/{deviceId}/api-version=2016-11-14 Password: use a SAS token When you connect with MQTT, you will notice it…

    api
  77. IoT Hub and Azure Time Series Insights

    Azure Time Series Insights is a new service that makes it very easy to store and visualize time series data. In this blog post, we will create a dashboard that looks like the one below (click to enlarge): The dashboard has four sections: Query1: a heat map of events per device; in this case there…

    analytics
  78. Communication between microservices in Kubernetes with Go Micro

    In this post, we continue the story we started with two earlier posts: Getting started with Kubernetes on Azure Microservices on Kubernetes: a simple example in Go In the previous post, I described a very simple service written with the help of Go Micro. It exposes an RPC call Get that retrieves a device from a…

    api
  79. Microservices on Kubernetes: a simple example in Go

    In the previous post, Getting started with Kubernetes on Azure, we talked about creating a Kubernetes cluster and deploying a couple of services. There are basically two services: Data: a service that exposes an endpoint to pick up data for an IoT device; you call it with http://service_endpoint:8080/data/devicename Device: a service that can be used…

    api
  80. Temboo, Twilio and Nexmo: SMS and voice messages from your IoT device

    In this post, I will provide an overview of how to use Twilio and Nexmo to send SMSs and voice messages directly from your device. I will use a Particle Photon but this also works from an Arduino, or a Raspberry Pi or basically any other system. The reason for this is that I will…

    api
  81. Controlling Sonos from a Particle Photon

    Now for something fun! Let’s control a Sonos from a Particle Photon and a connected button. I connected a Grove Button to the Particle with simple male-to-female wires. The SIG line on the button should go to a digital port (D0 in my case). When the button is pressed, the port will read HIGH and…

    arm
  82. Particle and Azure IoT Hub: forward events for storage and analysis

    In a previous post about Partice published events, you have seen how to publish custom events to the Particle Cloud. Other devices or applications can subscribe to these events and act upon them. What if you want to do more and connect these events to custom applications? In that case, Particle has a couple of…

    arm
  83. IoT with Particle and Porter

    In an earlier article, we took a look at Particle Functions and Variables. We wrote a simple application that can blink an LED with a function and read the value of a photoresistor with a variable. Although you can easily call the function or read the variable with the Particle CLI or with a REST…

    arm
  84. IoT with Particle: publishing events

    In the two previous posts, we discussed setup and talked about triggering actions and reading sensor data. Particle also allows you to publish events. You can subscribe to these events or pass them to other systems such as Azure IoT Hub. Let’s build on the previous example with the LED and the photoresistor. When we…

    arm
  85. IoT with Particle: Functions and Variables using the Build IDE

    In yesterday’s post, I talked a bit about the setup process and initial configuration of a Particle Photon. To start quickly, we used the Tinker firmware and the Particle iOS app to light up a LED using digitalWrite to light it up with full brightness (full 3.3V) but also with analogWrite to vary the brightness…

    arm
  86. IoT with Particle: a smooth experience

    At ThingTank, the IoT brand of Xylos, we make our own IoT hardware which can be quite complex if you need to connect multiple sensors efficiently, or even multiple MCUs where each MCU has its own set of sensors. Most people that want to start with IoT (typically at home or for a small company…

    arm
  87. Have some fun with Slash Webtasks and Slack

    At ThingTank we really love a tool like Slack because of its simplicity and extensibility. Like so many, we use it to get notifications from all sorts of systems. A lot of websites and tools integrate with Slack such as Azure Logic Apps or CI systems like Shippable. Those types of integrations are very easy…

    chatops
  88. Azure Automation and PowerApps

    One of our applications in our “test playground” is running some code in an Azure WebApp that needs to be restarted once in a while. Rather than trying to fix the underlying problem (no fun in that right?), I decided to create a small mobile app to restart the WebApp when needed. To make it…

    azure
  89. Fault Domains in Azure IaaSv2

    With the availability of IaaSv2 in Microsoft Azure, several new features are available that dramatically change the way resources are deployed and maintained. One profound change is the introduction of three fault domains for IaaSv2 virtual machines as opposed to two fault domains for IaaSv1 virtual machines. In the case of Azure, a fault domain…

    azure
  90. Windows Azure Point-to-Site Networking

    If you are having trouble with the point-to-site VPN configuration in Windows Azure, here are some tips about the procedure: Follow the procedure located at http://msdn.microsoft.com/en-us/library/windowsazure/dn133792.aspx for creating the virtual network and the gateway. When configuring the certificates for the VPN connection, first create the self-signed root certificate with the following command: makecert -sky exchange…

    azure
  91. Office 365 Identity Management with DirSync without Exchange Server On-Premises

    This post describes how users, groups and contact are provisioned in Office 365 from the on-premises Active Directory. By using DirSync, these objects are created in and synchronized to Office 365. Without an Exchange Server and Exchange Management tools in place, it is not always obvious how these objects should be created. The following sections…

    cloud
  92. A quick look at Windows Azure IaaS

    I played around a bit with Windows Azure IaaS to see how it stacks up against Amazon EC2. We use Amazon EC2 internally for some test and demo setups that don’t always have to be running. As a practical test, I wanted to install a Windows Server 2012 domain controller in a subnet of my…

    azure
  93. Enabling and disabling DirSync in BPOS and Office 365

    If you have some experience with BPOS or the Office 365 Beta, you know there’s a tool called DirSync that allows you to synchronize your Active Directory with Microsoft’s Online Services. During a course last week, I was asked if you can use DirSync temporarily to sync users, contacts and groups and, after migration, turn…

    bpos
  94. Windows Intune available on March 23rd

    Windows Intune, Microsoft’s cloud-based pc management service will be available for trial and purchase on March 23rd. It will become available in several countries, including Belgium. The service can be acquired for around 11$ per computer per month. This includes a Windows 7 Enterprise license. For 1$ extra, you can acquire MDOP as well which…

    cloud