Jenkins Build Status On Ninja Blocks RGB LED

Nestor v0.1.2 is out and one of its new features is nestor ninja for monitoring Jenkins and displaying the latest build status on Ninja Blocks RGB LED device (if you have a block, it’s the ninja’s eyes). Here’s a usage example: export JENKINS_URL=<url> export NINJABLOCKS_TOKEN=<token_from_https://a.ninja.is/hacking> nestor ninja Red for build failure, green for build success, yellow for build warning, and white for unknown status. The yellow light looks quite similar to green, and the white one does look blue-ish.…


more »

Akio Morita On Management

For the past few weeks, I’ve been reading Made In Japan, a story about Akio Morita’s life and the first three decades since the founding of Sony Corporation. I haven’t finished this book, but the last chapter titled ‘On Management’ was very interesting and it struck a chord with me. I’ve seen enough management decisions that were short sighted and proven to be wrong in the long run, throughout the 12 years I’ve been in the industry, and some of them could’ve been avoided or at least improved had the people behind them had better insights.…


more »

Private NPM Registry Replicator Document

For my future reference and to help others trying to set up a private NPM registry which sits behind a [corporate] proxy and requires authenticated CouchDB admin access, here’s the replicator document that I ended up using: { "_id": "registry", "source": "http://isaacs.iriscouch.com/registry/", "target": "registry", "user_ctx": { "name": "myadmin_username", "roles": ["_admin"] }, "continuous": true, "owner": "myadmin_username", "proxy": "http://proxy:8080" } For those who are not familiar with CouchDB, the above is a document that needs to be created in _replicator database, so that the replication rule from public NPM registry to your private NPM registry can be persisted and runs continuously.…


more »

Home Studio v0.3

This favourite corner of mine in the living room is the latest revision of my home studio. My main computer for the past couple of years has been an 11” MacBook Air, codename: kakashi. The study desk had been disassembled and now rests in the garage.…


more »

Roomba Twist Fix Attempt

A few months ago my awesome Roomba vacuum cleaner started dancing instead of cleaning the carpet like it’s supposed to. It reversed, then rotated to the right, left, right, left, all the time. I call it ‘doing the Twist’ (Chubby Checker’s). The closest explanation I could find on the Internet regarding this problem was something that’s commonly known as Roomba Circle Dance. The problem is that there are a number of solutions which various people claimed to have fixed the problem and I didn’t know which one was applicable to my case.…


more »

100 Kiva Loans Later

Today I made my 100th micro loan on Kiva.org . I joined Kiva in July 2007 and today I have $275 across 15 active loans, so I’m one of those people with a minimal fund who re-loan as soon as there’s enough repayment. Here are some stats from my portfolio: The interesting numbers here are the 1.62% delinquency rate and 0.68% default rate. Yep, default happens in microfinance world. Portfolio distribution: Gender: 65% female, 35% male.…


more »

Sapi, A Node.js Client For Sensis API

We had a hack day at Sensis a couple of days ago where I ended up writing Sapi, a Node.js client for Sensis API. This module is now available on NPM. The latest version (v0.0.5) was tested against Sensis API open beta version ob-20110511. I think I’ve got all of its documented features covered. Let me know if I missed anything. Sapi module provides a chainable interface to construct the endpoint parameters, here’s an example: sapi .query('restaurants') .location('Melbourne') .search(function (err, result) { ...…


more »

DataGen: Generate Large Test Data Files - Like A Boss

A couple of months ago I was doing some volume and performance testing against an application that was expecting a 500% data growth, which meant I had to generate lots and lots of dummy data to test whether the storage would hold up and whether the application itself would still perform well. I quickly came up with a script that loops through N times, generates dummy data, and creates an XML file.…


more »