The Non-Tech Tasks of a Principal/Staff Engineer

Note: This post has been migrated from Medium. The content will be updated here soon.

When people think about a Principal or Staff Engineer, they often think about the technical depth — the architecture decisions, the complex debugging sessions, the code reviews. But a large portion of the work at this level is non-technical, and it is often what makes the biggest difference in impact.

In this post, I want to talk about some of the non-technical responsibilities that come with a Principal or Staff Engineer role, and why they are just as important as the technical work.

[]

How to Add Defaults for Missing Properties in Play Scala JSON Serialization

I came across this interesting use case when I was trying to unmarshall some JSON into case classes and I wanted to take into account missing properties or keys. Since I have been using Golang prior to using Scala, this was quite natural in Golang as it automatically took care of missing properties. Let’s dive into the following example to find out what exactly I am talking about.

Consider the case class:

[]

Asynchronous Programming with Go

When I started learning Go, a couple of its features had really drawn me towards it. The first was the ease in which pointers could be used. The second was the ease with which its asynchronous capabilities could be used. In this blog, I would try to use the different ways you can solve a very simple problem.

Let us take a very common example where we would simply try to build a program which would check if a set of websites/urls are up and running or not. For this example, I have picked 5 airline websites.

[]

Integrating Kafka with Scala Play Framework

Note: This post has been migrated from Medium. The content will be updated here soon.

Apache Kafka is a distributed event streaming platform widely used for building real-time data pipelines and streaming applications. In this post, I’ll walk through how to integrate Kafka with a Scala Play Framework application.

Why Kafka?

When you need reliable, high-throughput, low-latency messaging between services, Kafka is an excellent choice. Common use cases include:

  • Decoupling microservices
  • Event sourcing
  • Real-time analytics pipelines
  • Log aggregation

Setting up Kafka

For local development, the easiest way to get started is with Docker:

[]

Getting Started with httprouter in Go

Note: This post has been migrated from Medium. The content will be updated here soon.

Go ships with a standard library HTTP multiplexer (net/http), but it has some limitations — particularly around routing with URL parameters. The httprouter package is a lightweight, high-performance HTTP request router that fills this gap nicely.

Why httprouter?

The standard net/http ServeMux is simple but limited:

  • No support for URL parameters (e.g. /users/:id)
  • No method-based routing
  • Performance overhead for large route tables

httprouter solves all of these while staying close to the standard library idioms.

[]