Some Projects Handover

Due to lack of coding time outside of work hours, I’ve handed some projects over to these intrepid volunteers: Repoman is now maintained by Bastian Krol SiteMonitor Plugin is now maintained by Francisco Hernández Suárez Some other Jenkins plugins had organically been inherited by the community: ChuckNorris Plugin with Baptiste Mathus NodeJS Plugin with Nicolas De loof Thanks, folks! Much appreciated. And just as a reminder, all of the Jenkins plugins I created eons ago are up for adoption.…


more »

Custom AWS AMIs Dependency Tree

As awesome as those AMIs from AWS Marketplace are, it’s often not possible to use most of them AS-IS at various organisations due to policies that enforce: Mandated operating system with specific distro and version Blacklisted operating system packages for security reasons Whitelisted versions of various tech stacks, tools, libraries, etc I’ve never found a marketplace AMI that fulfils all of the above requirements without some further provisioning, which can sometimes defeat the purpose of using an AMI in the first place.…


more »

Home Studio v0.4

I finally had some time to set up the balcony for a weekend code and coffee session. Now the problem is to get some free time to code.…


more »

My Ninja Blocks Setup

Now that the fine folks at Ninja Blocks already started shipping their next generation IoT controller, the Ninja Sphere, I better write about my old school Ninja Blocks setup before it gets too late. First off is the Watts Clever socket that I used with Ninja rules to switch a table lamp on at 8.30pm and then switch it off at 10.30pm during weekdays. The second socket is used to switch my Tivoli radio on and off on the rare occasion when everyone is away travelling and the house is empty, you know, like Home Alone but minus the kid.…


more »

Wrapping AEM cURL Commands With Python

If you ever had the experience (no pun) of using Adobe Experience Manager (AEM), you would already know that curl commands are arguably the de facto way of interacting with AEM over http. Whenever you google for various AEM /CQ HOWTOs, it’s easy to find examples with curl commands: Adobe CQ- Is it possible to execute CURL command? How to create pages using curl command in CQ / WEM How to find out CURL command for any CQ operation?…


more »

Human-Readable Ansible Playbook Log Output Using Callback Plugin

One problem I’ve had with Ansible playbook since its early 0.x days is with its verbose log output. Jsonified by default, it’s hard to read, and pretty much impossible for a human to review when its stdout or stderr contains tens/hundreds of lines combined into one lengthy string. Here’s how it looks like: changed: [gennou.local] => {"changed": true, "cmd": "/tmp/sample.sh", "delta": "0:00:00.019164", "end": "2014-03-30 21:05:33.994066", "rc": 0, "start": "2014-03-30 21:05:33.974902", "stderr": "", "stdout": "gazillion texts here with lots of \n in between gazillion texts here with lots of \n in between gazillion texts here with lots of \n in between gazillion texts here with lots \n in between"} When –verbose flag is set, I believe that the intention is for a human to eventually review the verbose log output.…


more »

Roombox - Node Knockout 2013

A few weeks ago I participated in Node Knockout 2013 (NKO4), a 48-hour hackathon with 385 teams competing for the top spot in 7 categories (team, solo, innovation, design, utility/fun, completeness, and popularity). And here’s a video of what I hacked: Roombox, a Roomba vacuum cleaner turned into a boombox using node.js . This demo shows the Roomba playing Rocky theme, Beverly Hills Cop theme, Hey Jude (The Beatles), Scar Tissue (Red Hot Chilli Peppers), Super Mario Bros.…


more »

NodeUp 53: NodeUp Listeners On NodeUp

About a month ago, I joined D-Shaw, Nizar Khalife, Erik Isaksen, and Matt Creager on NodeUp 53 where we discussed about NodeUp podcast and node.js community from NodeUp listeners point of view, and I also talked a bit about Australia, kangaroos, and node. Thanks to Rodd Vagg for pinging me about this particular episode. Recording the show itself was an interesting experience :). For one, it started at 4am Melbourne EST.…


more »

An Old Dryer, A Watts Clever, and A Ninja Blocks

This was another quick weekend hack to fix my old dryer’s busted timer problem (busted timer = having to stay around when it’s time to switch off the dryer). Step one was to use Watts Clever Easy-off Remote Control Socket which allowed me to switch the power on and off remotely. This product comes with a remote control which saved me from having to get out of the house to get to the garage during winter.…


more »

Monitor Jenkins From The Terminal

Here’s how I’ve been monitoring my Jenkins setup… A combination of Nestor + watch + Terminator » one view for monitoring failing builds, one view for executors status, and one view for job queue. A summary of Jenkins status info on a small screen estate that I can place at the corner of my workspace. If you want to set up something similar, here are the commands: (assume JENKINS_URL is…


more »