What’s a trie? A trie is a datastructure that’s optimized for prefix retrieval. It’s basically a prefix tree with each node being the letters seen till that point. For example - A trie with apple Now if we add apply to the tree above, we get: What if we add something without a common prefix - say boat I needed a trie recently and was checking Nuget for available libraries - surprisingly there aren’t too many datastructure libraries available for .

Read more →

I just pushed version 1.1.0 of EasyBlogger to pypi. Notable changes are that it now exposes ability to set pandoc filters. Pandoc filters basically let you write plugins that can affect the document conversion. For example, my filter - mermaid-filter will let you embed diagrams in text using mermaid syntax and then when you convert a markdown document, generate a .png file on the fly, upload it to imgur and embed the link in the generated HTML file - so that your final HTML shows the image and not a fenced code block!

Read more →

Of late, we’ve been working with more and more customers who want to adopt DevOps friendly engineering culture and practices. While customers love what they hear about DevOps, esp that it lets you ship features sooner out of the door and shorten feedback cycles, my experience with customer organizations has been somewhat a mixed bag in terms of true on the ground adoption. A recent experience that has gotten me thinking is about feature branches vs feature flagging.

Read more →

If you’re a fan of Vim, then no doubt you’ve heard of Neovim - in fact, neovim has been a key driver in much of the changes that have made it into the latest version of vim (async, job control etc). Neovim works extremely well as a daily driver on Linux - but for Windows support has been lagging. I’ve been using a fork from contributor equalsraf who’s been behind a lot of the windows support.

Read more →

Cleaned out my desktop machine today. It’s been a long time since I did and it’s got loads of dust and dust bunnies inside. The fan’s been whining away for sometime and gotten irritating. It’s been a good ten days since I felt good - had come down with another attack of pancreatitis and after the usual running around, finally was feeling ok. Anyway, armed with a compressed air can, microfiber gloves, screwdrivers, thermal paste and isopropyl alcohol, opened up my case.

Read more →

Being able to reload configuration on change is typically a key requirement. ASP.NET core configuration infrastructure provides a reloadOnChange property that you can set: var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); However, your application still has to handle the change. In asp.net core, this is via a IChangeToken and the Configuration class provides a GetReloadToken().RegisterChangeCallback - the only trouble is that this is fired only once since the change token can change.

Read more →

As I play with .NET core, I was getting a little frustrated with waiting for docker build and docker push to complete - the docker images for .net core are pretty large - weighing in at a gig as shown below. My trivial web service is hardly 80mb with dependencies - so this did not feel good at all. rraghur/webapi-app v3 9ff77929c379 25 hours ago 976.5 MB The .

Read more →

Yesterday I noticed that blogger API now supports posting as draft. This wasn’t the case when I wrote easyblogger - a cli tool to edit and post to Blogger from Vim. In any case, since the API now has the ability, I updated EasyBlogger to post as draft. Trouble came when I went to update an existing draft - it fails with a 404 C:\Users\raghuramanr>easyblogger file c:\Users\raghuramanr\blogentries\a.sample.draft.md raise HttpError(resp, content, uri=self.

Read more →

GCP live k8s visualizer is a cool project to visualize your k8s cluster. As pods, services & other resources come in and go out, it shows a visual map of your cluster gcp live k8s visualizer The animation above is from this guide. Followed the instructions there in but ran into javascript null errors . Anyway, took a look this morning and while it was a simple fix, I’m not sure why the kube api is returning null for something that’s a collection?

Read more →

The .minikube folder location So I was recently getting Minikube on my work laptop. As it happens, this did not go painlessly. My C drive has a measly 100G (free 8G) so almost all tools I install, if their dot file folder is going to hold anything significant like virtualbox images, I usually symlink it off to my D drive which is a lot roomier. DON’T DO THAT WITH MINIKUBE YET…​.

Read more →