Code the Infra

April 13, 2013

Code the infra. There is no other way to make operations predictable and repeatable. The opposite of coding the infra is what I call as “box hugging”. If you log into boxes to configure, install packages, start/stop services, or do any maintenance, you are a box hugger. Coding the infra requires that you treat automation [...]

39 comments Read the full post →

Getting Paid to do What you Love

December 31, 2012

Just imagine being able to get group of so-called "individual contributors" together and build software with freedom to execute in a manner that works best for the team, with minimal or no project management overhead, no architect(s) or committees to ratify design decisions, and the empowerment to quickly change the course as necessary. There is [...]

19 comments Read the full post →

Milestone.js – Project Tracking for GitHub Projects

December 28, 2012

We use GitHub Enterprise at work for almost all of our activities at work. In addition to maintaing source in git, we also use GitHub for code reviews, issue tracking, milestones, incident reports etc. However, what we lack most are (a) an ability to quickly track project progress, and (b) someway to track large features [...]

11 comments Read the full post →

HTTP Pipelining is a Hit and Miss

July 19, 2012

The idea behind pipelining in HTTP 1.1 is to allow clients submit multiple idempotent HTTP requests over a connection to a host, let the server to process them in parallel and respond in the order in which the requests were made. In theory, pipelining has some benefits: Increased parallelism on the server – this seems [...]

19 comments Read the full post →

Your MVC may be Slowing Down Your Site

July 2, 2012

One of most common design patterns used on the Web is the model-view-controller. Though some variations of this pattern exist, the basic idea is simple – a controller parses and processes the incoming HTTP request, thinks for a while, and then writes a view as HTTP response. The point of this post is not to [...]

39 comments Read the full post →

QCon NY Slides on “Making Things Work Together”

June 20, 2012

Here are the slides from my QCon NY talk where I presented ql.io as a way to interop across servers. Making Things Work Together View more PowerPoint from Subbu Allamaraju See qcon2012.pptx for the original deck.

1 comment Read the full post →

Want SPDY?

June 15, 2012

Web performance is a complex topic with many contributors to poor latency. Of all the bottlenecks to site speed, HTTP traffic interests me the most. We know that both Google and Twitter run their primary domains on SPDY for performance reasons. But does this approach make sense for other sites? Here is my observation from [...]

9 comments Read the full post →

Code Coverage Games

May 7, 2012

You can easily game this. But not this.

4 comments Read the full post →

Protocols vs Styles

April 28, 2012

My RESTful Web Services Cookbook has been out for nearly 26 months. From Feb 2010 till the end of 2011, O’Reilly sold 13,052 copies (both print and eBook format combined, per the royalty statements received to date) of this book. Given that O’Reilly’s eBooks are DRM free, I would like to think that several thousands [...]

48 comments Read the full post →

Node.js – Cost of IPC

March 23, 2012

I ran a quick test to quantify the cost of IPC between workers and the master in a node.js cluster. The test code is below (which I borrowed from node’s docs). On receiving an HTTP request, each worker process sends a message to the master. I ran three variations – no messages, send one message, [...]

13 comments Read the full post →

My Gripes with Cloud Foundry

March 22, 2012

I tried setting up Cloud Foundry this week using Micro Cloud Foundry. See my post on ql.on Cloud Foundry for details. The setup and experience is not that hard – it took two late nights to figure out the details. But I’m not sure if it is ready for the prime time. Here are my [...]

9 comments Read the full post →

Async I/O and Fork-Join

March 13, 2012

Parallelizing network IO is a common problem as it can help reduce overall latency for user-facing tasks. But implementing an efficient and easy to use abstraction for fork/join for network I/O is hard. This often leads to frameworks to simplify task scheduling, joining on task completion, and synchronization. Most solutions for this include one of [...]

9 comments Read the full post →