Hey folks ! First things first, this is written from the perspective of an infra engineer with no experience in app development whatsoever. I generally write golang and have written and loved C++ in the past.

I spent some time learning swift and ios app development recently, I will highly recommend this Stanford course for learning it. If you are an infra / backend programmer like me I can testify that you will understand the lectures and appreciate them.

Right now I am on lecture #6 of the course and I wanted to share my impressions of swift especially in…


If you haven’t noticed I have developed quite a liking to building golang with bazel. So much so that the first two posts of this publication have been about how to do golang monorepo.

When I was exploring writing golang + protobufs and compiling with bazel, much like most people I came to realize that my editor will not work with bazel generated code. This post explores my workaround for that, it is a hack so use at your own peril.

UPDATE: I wrote a library for this solution here

Image for post
Image for post
A tiny gopher hack with questionable existence

Problem Statement

Here is a GitHub issue that talks about the problem…


As I promised in the last post about How to golang monorepo, we will talk about how to use Grpc in golang + bazel and customize the bazel docker image setup a little bit.

Key Terms

Grpc is a RPC framework developed at Google, and if you are writing services then I highly recommend you use it. Please read this for introduction about grpc.

Protocol Buffers are a way of serializing data and sending from one service to another. If you are writing a service in a polyglot monorepo then you can’t go wrong with using protocol buffers because they are a…


Some weeks ago, I was trying to setup golang in a monorepo and I could not really find a definitive guide on how to do it easily. I have linked some articles in the references below that were useful to me, but I am hoping this article series is a definitive guide and has all the information about how to do your golang monorepo the “right” way, relevant in 2020.

Guiding principles behind the choices in this article are:

  1. Easy to write code in monorepo keeping dev xp in mind. …


Move fast and (un)break things

Why Dynamic Configuration?

Your code is often powered by many constants and configurations. Imagine passing this static configuration to your code:

Config {
whitelisted_customers: [customer_1, customer_2],
feature_1_turn_on_percentage: 0.1,
}

You wrote your code with this static config and deployed it to 100 machines. All is good in the world until you need to change it. For us, these changes were frequently motivated by one of the following reasons:

  • Adding a customer to a new alpha feature
  • Remove a customer from said alpha to debug query failures
  • Rate limit a particular client to avoid resource starvation
  • Rolling out a…


Welcome to part 2 of my attempts at describing music theory in terms of basic math. Read part 1 if you missed out on it, let’s learn some music theory because

Image for post
Image for post

Quick recap, repeat with me

Do Re Mi Fa So La Ti Do or Sa Re Ga Ma Pa Dha Ni Sa

is equal to

C D E F G A B C


One of my co-workers plays the flute and he is pretty good at improvising and has an overall very good intuition for music. I started learning from him about the flute, and then somehow, don’t ask me how, but it devolved into learning how to play individual notes on the flute. Cause I really wanted to learn how just placing your fingers on different holes on the flute is able to produce different sounds.

Now, my teammate has not learned music theory at all, and though I know some music theory I can’t read music to save my life. Anway……


Image for post
Image for post
rules ? I dont need no stinking rules

Just the other day one of my friends asked me to write an architecture document for what an ideal dynamic configuration system would look like. If you don’t know what I mean by dynamic configuration, you can check out this paper (configuration at Facebook) or this twitter eng blog entry. I might write an entry about it myself at some point.

Anyway, I digress. So let’s say if you were building a dynamic config system, and you deployed your code that gets some value from a configuration key:

if config_client.GetInt64(`my_feature`, map[string]interface{}{
"country": r.URL.Query()["country"],
})

How do you design this …

Nikunj Yadav

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store