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 the light of my recent interest in programming languages and their design (time to write N++ ? …


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, and I will try to summarize it. In terms of code we are starting off at part 2 of golang monorepo…


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 language agnostic way of defining a message which can be used across different languages. …


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 feature to a stateful system…


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…, there was a moment when I started playing on the piano starting from G# all the way to next octave and asked my teammate to replicate it on the flute. …


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 ? Sure there are going to be a lot of moving parts but I need a key my_featureto spit out different values based on the map[string]interface{} that I am passing in. …

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