Posts

September 15, 2020

A Better Code Review

"Everyone gets the experience. Some get the lesson." T.S. Eliot Contributing to a project is not an easy task, especially if you're new to the project, new to coding in general, or just not an active contributor. I have been on both sides, the…
August 28, 2019

Levels of Us Vs. Them

I've recently finished reading John C. Maxwell's The 5 Levels of Leadership - an excellent analysis of the levels of leadership, categorized by the manager's influence. Although the author's descriptions and points are mostly spot-on, I've found that…
June 03, 2019

Using Bastion Host to SSH Tunnel to Mongo Replica Set

We have a Mongo Replica set inside a AWS VPC that's inaccessible from the outside world. The common practice for this is to create a Bastion Host which has a leg in the VPC, but also an available leg to the outside world (usually over a non-standard…
May 25, 2019

Limitations of Running AWS Lambda Functions Inside VPC

Lambda technology is often decorated with misleading superlatives, such as "unlimited scale" and "no ops". In our data-pipeline project I found that working with AWS Lambda functions at scale, meaning thousands of concurrent operations a second, and…
March 20, 2019

AWS Kinesis Producer Retry Strategy

Pushing data to AWS Kinesis Data Streams can and does fail, especially if you do not have enough shards or your shards are not evenly balanced. Under-provisioning will usually get you the all-dreaded ProvisionedThroughputExceededException. It's…
March 14, 2019

Package AWS Lambda Python Code With Docker

In this guide I'll explain how to package (zip) your AWS Lambda Python 2.7 (Edit: Included Python 3.7 as well) code for deploying it to your Lambda function. The main issue I stumbled upon was using Pipenv, most of the guides explain how to handle…
March 10, 2019

AWS SNS Topic Subscription With Pagerduty Using Terraform

Automatically reporting alerts using AWS SNS Subscription to Pagerduty is super easy, especially with Terraform. I recently attempted to integrate the services using email subscription, but found that because of the async nature of email confirmation…
March 05, 2019

Spring Boot Remote JMX

Debugging applications is a key part in any developer's toolkit. Debugging applications in non-development environment is an even harder and more difficult challenge. It is only after your production application crashes, or you find yourself spending…
February 27, 2019

Conditions Are Power-Law Distributed - A JS Example

I read Kent Beck's Conditions Are Power-Law Distributed: An Example today, and it made perfect sense. In a codebase there are lots of conditions used once, and few conditions used many times, the distribution following a power law. Kent had some Bash…
February 18, 2019

Code Retreat - Game of Life Notes

Today we had a code retreat at the office. I had a really good learning experience and wanted to share my thoughts. In general, a developer's most important skill (and perhaps everyone's) is the ability to constantly learn. This relies on many…
February 10, 2019

AWS Lambda Analysis Via Cloudwatch Logs Insights

We've been using AWS Lambda in our Data Pipeline in my company. Needless to say the experience so far has been far from great. Deploying isn't trivial. Debugging is far from trivial. Even logging, a developer's coarsest debugging buddy, isn't easy…
February 04, 2019

Limiting Chrome Extensions Malicious Scope

Chrome Extensions have access to a wide range of native Chrome APIs, some which require special permission from the user, and some are "free" to request. (See here) One of most hated permissions to be requested by a Chrome Extension, is the…
February 04, 2019

Opening A Blog

Always wanted to open a blog and write about life, adventure & technology. The blog-o-sphere was hot early 2010s, but now, it kind of seems late to the game. Adding to that, being primarily a web developer, I didn't want to use a turn-key blog of…