Did you know I’m a huge fan of the Microsoft / Azure docs? Did you also know that the docs websites are powered by GitHub repositories? Let that one sink in… So you can leverage the same way you collaborate on code, work on publishing documentation?!? How awesome is that!
After a bit of looking around, it appears DocFX is actually powered to do this. I don’t know if this is the tool used behind the docs website. Though there seem to be a lot of similarities. Anyhow, today’s post will be a quick walkthrough on how to setup DocFX with VSTS to publish your GitHub driven repo to an Azure Web App.
So what will we be needing?
- GitHub repository
- VSTS Account
- Azure App Service
- A tool to do the conversion : DocFX
- Chocolatey to install DocFX
Initialize the repository
Be sure to install DocFX on your dev station to initialize the repository. This is done by running “docfx init -q” inside of your repository.
Afterwards do your typical Git magic to sync your local version with GitHub (or equivalent). Now you’ll have a dummy skeleton ready for usage, and you can now structure it to your liking! My effort is going into making docs for VMchooser.
Continue reading “Generating a docs website powered by Git & Markdown”
The concept of Service Endpoints has been around for a while now. Though for today’s post I would like to guide you through the typical process. Here we’ll take a glance of how they work and so that you know what to expect.
For this post we’ll be connecting the Azure PostgreSQL Service to a VNET by leveraging a Service Endpoint. Afterwards we’ll make a connection from a VM within that VNET, and see what route is being taken!
Continue reading “Taking a look at Azure Service Endpoints”
WordPress is probably the most popular CMS around. Though when I look at my home country, then I see a lot of Drupal deployments too. This might be due to the fact that the creation is of Belgian origin? Though for the region I live in, Drupal is amongst the most popular CMS systems.
That being said, Drupal is a very resource hungry system. When you enable the WebProfiler (part of the Devel module), then you can see that typical page will execute between 90 and 200 database queries. This puts a lot of stress on the underlying database system, but also on the local file system.
Due to this we see a lot of articles on how to improve the performance of Drupal. Most commonly seen is the implementation of ;
- Varnish on the front end side, as a web application accelerator / caching HTTP reverse proxy
- Redis or Memcache, as a way to cache data (in memory instead of hammering the database)
For today’s post, we’ll briefly discuss the various options and afterwards delve into a more advanced scenario where we leverage the Azure Linux App Service’s multi container capability.
What options do I have for running Drupal on Azure?
In essence there are various ways to run Drupal on Azure ;
Continue reading “Drupal on Azure – Leveraging the Linux App Service for a Managed Platform Experience”
For today I’ll show you two major cost optimizations for your Azure Virtual Machines ;
- Reserved Instances
- Windows Licensing
As the baseline for the cost projections, I’ll be using a commonly used “D2v3”-machine (deployed in West Europe & currency set to Euro) ;
For the Cost Optimization calculations, I’ll be using VMchooser, which returns the following results ;
So what to make of this? Let’s dive into those two topics!
Continue reading “Azure Virtual Machines – Two major cost optimizations everyone should know!”
Earlier this week I tweeted my excitement of using an Azure B-series machine for my Dev VM in Azure. And Jan was curious to know what type I used…
Which got a response from Sven that I would probably blog on it…
Continue reading “Using B-series for your Dev VM in Azure”
A bit less than 10 years ago I posted about “Inbox Zero“. Though for as long as I’ve known the concept, I’ve been an avid fan/believer of it. Over the course of the years, I’ve evangelized about the concept to many, where a lot of people typically asked me : “Isn’t that really time-consuming?!?”. My answer has always been ; “It is a habit… And indeed, you invest a bit of time into it, though the gains of not having to pick up the same email(s) over and over again is where you easily win!”.
The basic premise of Inbox Zero is that your inbox is at all times.. EMPTY!
For a lot of people this seems impossible to achieve, though you realize this by going though the following flow for each mails that comes in… at the time it comes in. So yes, you “immediately” (as in the moment you open your mailbox) process all new mails. How do you do that, by the following rule set…
- Do I/we need to care?
- No, Delete.
- Yes. Great! Is the mail something I should do?
- No, Delegate (forward).
- Yes. Interesting! Can I reply in less than 2-3 minutes?
- Yes, Respond (reply).
- No, Defer (flag for follow-up). => And schedule times to where you’ll focus on burning through your “backlog” (read: deferred mails), so Do.
That sounds quite simple to do? So why don’t we all do it?!? From what I’ve seen, it starts with not knowing / being taught the system. And on the other had, it also requires a given level of discipline / organization to achieve it. Though in my mind, it can be accomplished by all if you are just given a bit of practical guidance. That’s what we’ll be talking about today!
Continue reading “Inbox Zero – How I (still) do it after about 10 years…”
When you have an SPA (Single Page App), all your code is being run inside of your browser. This means that, from a network perspective, you’ll be talking to the APIs directly. It’s often (rightfully) said that SPAs are an untrusted client, where a typical server-side app is seen as a trusted client. Why is an SPA seen as untrusted? Because from the publisher side (the one providing the service/app), you do not control the device running the code. So this has a huge effect on the security risks involved and how you should mitigate them.
One of those mitigations is “CORS” ;
Cross-origin resource sharing (CORS) is a mechanism that allows restricted resources (e.g. fonts) on a web page to be requested from another domain outside the domain from which the first resource was served. A web page may freely embed cross-origin images, stylesheets, scripts, iframes, and videos. Certain “cross-domain” requests, notably Ajax requests, are forbidden by default by the same-origin security policy. (Source : Wikipedia)
With CORS, the request will indicate from which domain the calls would originate (and what actions / headers it would like to do). Therefore, the backend can check if the call is warranted or not…
Continue reading “When your Single Page App needs CORS and meets Azure API Management with a Function Backend”