Onedrive for Business (16) Greedy Cache Problem

For the past week I’ve been struggling with my c: filling up quickly despite me having cleared the temporary files and even moved my ost file to a different drive… I noticed that Onedrive4B was refusing to complete its sync and then it occurred to me that probably it was the culprit… Every time i freed up some space I found the pending file count to reduce and then stall while the OS started complaining of low space in c:

After googling and a few hacks later I found the main culprit. Onedrive4B cache cannot be moved to other location other than its pre-designated location! That’s IMO a capability there in pre 14 versions but now not supported!

Anyway I went to the C:\Users\<username>\AppData\Local\Microsoft\Office\16.0 folder and to my horror saw multiple OfficeFileCachexxx.old folders with each occupying GBs of space! I just deleted all the *.old folders and my c drive gained plenty of spare GBs it started off with! Now problem partially solved… Onedrive now syncs and maintains only one copy of cache and leaves the rest of space in c: alone… But why doesn’t microsoft not allow the cache to be moved to more spacious locations? I wonder!

console.log for golang

If you are like me coming from a Nodejs background, then there is a possibility that the whole logging using fmt.Printf and log.Printf and fmt.Errorf  in golang may prove counter intuitive…So I made up the Nodejs/JS console.log like package that works on similar lines. You can get it by importing “”

import (



then you can use it just like in javascript

console.Log("Life is cool but Chennai is hot")
var city:="Chennai"

var feel:="Hot"

console.Log("%s is %s !",city,feel) //Outputs Chennai is Hot !

For Errors it gets even better as it returns the string formatted as per your pattern and returns an error object


errorObjectIWantToPassToLogger:=console.Error("Got this error in my function %s",err.Error()

If logging to console needs to be restricted then just trn the LogMode and ErrorMode on and off

console.ErrorMode=true//Turn on Logging to console on call

console.LogMode=false//Stops Logging to console

Hope this makes life simpler! Enjoy!!

Speech to Text for PSTN using Twilio cPaaS

I’ve been looking for Speech Recognition capability on Cloud that can work for Plain Old Telephone Services (PSTN)…but looks like there only three options that I’m aware of….

  1. Cisco Tropo ASR

    Tropo Automatic Speech Recognition (ASR) has been there in the market for over 2 years. I have a sample code that you could try on github ( The limitation that I felt with this solution was that it is a word spotting solution. So you provide a set of words or sentences that you expect to hear and Tropo ASR matches them to the set. While this is cool a decade back, we live in an era where Google Chrome Browser is capable of converting spoken sentences from voice to text immediately on budget phones! I found the Tropo ASR to have a delay of average 3-7 seconds between the user stopping their utterance and the ASR providing its detection result. So I give this a skip.

  2. Jugaad Solution

    I have seen some trials that used the ‘Recording’ available in Twilio’s Gather verb, send it to Cloud based Speech to Text Providers like IBM Watson and then use the result. While this solution works, the UX suffers as the delay is upwards of 10 seconds! So this too is not a practical solution

  3. Twilio Speech to Text

    Twilio has now announced its own Speech to Text Capability as part of its Gather verb and it works perfectly from my tests. This service is in beta right now and costs about $0.02 for 15 second batches of speech. Of course the rate reduces with volume.

In this blog I’ll show how to quickly try out the Twilio Speech to Text in 10-15 mins.

I’m going to use the glitch WebIDE to build the code. You can remix your own version quickly from the url provided to get started even more quickly.

The Plan

So I’m going to make a very simple app that will receive the call, Look at the Result and Tell the Caller what it heard and then disconnect…Simple. As per the Gather Documentation there are three important receivers that we need to build in our app.

Call Hook -> This is the url that you would configure on Twilio Portal as part of the number procurement. When Twilio gets a call on this number it will immediately send the available call details to the ‘call-hook’ url. For this blog I’m going to use the ‘;. You can replace the url as per your solution later.

This URL Needs to return a Twiml XML Message with the next steps. I plan to just tell Twilio to Gather the Speech and send it back to the ‘action url’ . 

action -> This is the url that will be contacted by Twilio when the user has stopped speaking and Twilio has done the speech to text conversion. As per my test this takes less than a second. Twilio will expect a return Twiml on what to do next. I Intend to just parse the Incoming message for SpeechResult and Confidence and speak them back…

partialResultCallback -> This is the most exciting part and is similar to the google StreamingRecognize Solution. Here Twilio sends the text (UnstableSpeechResult) as the user speaks instead of waiting for the user to stop. This feature could be useful if your solution is actually doing some real-time NLP.

Show me the Code

I have used a simple swagger based NodeJS app to implement this…You can find the code at 

Hope this helps ….

Skype for Business & Azure AD Application Proxy As Reverse Proxy — Skype for Business Blog by Mark Vale

I always thought Reverse-Proxies were over hyped…I see Mark Vale having similar view…

Often when speaking with customers, there is a large discussion about what reverse proxy is used for Skype for Business deployments, cost of them and network dependencies. Experience has taught me that reverse proxies often take up far too much time on the discussion table because customers usually do not understand their need. They view […]

via Skype for Business & Azure AD Application Proxy As Reverse Proxy — Skype for Business Blog by Mark Vale