Color Harmony By Hideaki Chijiiwa

My dad is visiting Melbourne and he brought his 1987 copy of Hideaki Chijiiwa’s Color Harmony - A guide to creative color combinations for me to keep. This is one of the many books from his home office’s library in Jakarta which I flipped through far too many times during my childhood.…


more »

Adobe Marketing Cloud Community Expo

With the same squad as AWS Chatbot Hackathon, I also participated in another hackathon as part of Adobe Marketing Cloud Community Expo (AMCCE). We presented Swagger AEM, an ecosystem of AEM API clients that Shine Solutions recently open sourced. The idea is to build an OpenAPI specification for AEM, and then generate a number of API clients in various languages like Ruby, Python, Java, and JavaScript for a start. These clients will then be used by the next layer of tools like Puppet and Ansible, or by custom applications, or who knows, maybe wearable devices (why not?).…


more »

AWS Serverless Chatbot Hackathon

Last month me and two buddies from work, Michael Diender and Stephen Shim, participated in AWS Serverless Chatbot Hackathon hosted by Devpost. This hackathon was announced by Jeff Barr on AWS Blog on August 10th this year. Even though they allowed about 1.5 months submission period, our team only spent 8 hours to build two entries due to our busy schedules: Chaos Slackbot and SiteChecker Slackbot. The first one, Chaos Slackbot, is a serverless Slack bot for randomly terminating EC2 instance from Auto Scaling Groups whitelist.…


more »

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 »