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 →

Last weekend I setup torrent complete push notifications to be delivered via pushover. I have my media center box running ubuntu 16.04 with Kodi. It also serves as my torrent box with qbittorrent. On Android Transdroid is great to manage torrents but it doesn’t have auto refresh. Given that I rediscovered my pushover account last week, it seemed just begging to be used. Here’s a shell script to send push notifications - just set it up in in qbittorrent (or whatever you use) to run at torrent completion - like so /bin/user/bin/push.

Read more →

So this is just sharing my long time azure automation script to start/stop a vm. I have this on a schedule so it starts on weekdays in the morning and is shutdown in the evening. There’s also a couple of webhooks so I can start/shutdown using my phone. The latest addition is integrating push notifications to my phone - I have a Pushover which offers a nice api to send push notifications to your devices.

Read more →