Posts

Showing posts from March, 2017

Deadlines vs. Technical debt

Dilemma: We don't want to incur more technical debt, but we do have an important business partner that needs a bunch of development done within (too short of) a time period, which means that we'll need to take shortcuts. What should we do? This reflects a recent discussion within a group of colleagues. After some back-and-forth, we decided to declare a payback period up-front, giving each development team something akin to a credit  which they could use up to get their deliveries done in time. During the development period, the teams will create time-estimated backlog items for any technical debt they incur, thereby discussing the debt on a regular basis and also motivating them to keep their debt low. Finally, visualizing the period after the deadline, will enable management to reorganize teams as needed to deal with debt spikes.

Binding to a container or a list of blobs. #webjobs rocks

Image
So I just learned today, that they (our friends at Microsoft), added support for binding to blob containers or a list of blobs, back in August of 2015. This WebJob thing is becoming more and more comfortable, which is extra nice, since most of the knowledge acquired - at least on a conceptual level - is transferrable to Microsoft's Serverless  offering - it's Azure Functions. Speaking of which - check out the nice documentation over at  https://docs.microsoft.com/en-us/azure/azure-functions/ . What I did, was to download a PDF and then read the docs in peace on my iPad as I commute back and forth to the office. Aaaaanyway... Binding. Check this out:         public static async Task Handler(             [QueueTrigger("input-queue")] Input input,             [Blob("stuff/{BlobFolderNameAsDefinedInInput}")] IEnumerable< CloudBlockBlob> inputBlobs)         {            ... sweet, sweet code ...         } The two bindings above make the WebJobs r

Prototyping bots with Microsoft QnA Maker

Image
Microsoft's QnA Maker allows you to go from FAQ to Bot in minutes!  by copying and pasting the URL to an existing FAQ web page or uploading a set of questions and answers tsv-file (tab-separated file). There's a nice quick start video that you can watch here . In this post, I will focus on using the QnA Maker to prototype a more elaborate bot - one that would need a hefty dose of LUIS and (Microsoft's) other Cognitive Services if built "for real". What I'm talking about, is a pre-written chat script: When we (the human), say "Hello?", the QnA service will return "Ah, hello there! How can I help you today?". As you can imagine, putting these phrases together takes a lot less time than to write a bot (refer to my other articles here )! But yet, with this simple configuration, we have something that is immediately testable, demoable and something we can use as a base for further discussion. Let's step over to the Test  section o