Streaming Swagger CodeGen Ruby Client File Download

Few days ago I received an error report about a number of file download failures on one of the applications that I was working on. And after some troubleshooting effort, I found out that the failures happened only on files with size ~2Gb or greater. A colleague also dug up this important clue in one of the log files: failed to allocate memory, but there was no stack trace to be found. Great start.

Read more

Share Comments

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.

This colour combinations knowledge helped me with my first few gigs as a front end developer during my university days. But it certainly hasn’t helped with ignoring badly colour coded diagrams that I encountered for the following decade and a half.

Read more

Share Comments

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 using Swagger Codegen. 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?).

Read more

Share Comments

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 for each person in order 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. The idea is similar to Chaos Monkey, but the difference is that the randomness is determined by the messages that people sent to a Slack channel. The bot won’t know in advance what people will say and when they will say those particular messages.

Read more

Share Comments

Some Projects Handover

Due to lack of coding time outside of work hours, I’ve handed some projects over to these intrepid volunteers:

Some other Jenkins plugins had organically been inherited by the community:

Thanks, folks! Much appreciated.

And just as a reminder, all of the Jenkins plugins I created eons ago are up for adoption.

Read more

Share Comments

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. Another challenge with marketplace AMIs is the reliance on the providers to actively update their AMIs, in a manner that suits your schedule.

Read more

Share Comments

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.

Read more

Share Comments

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:

Share Comments

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. And whenever the human did review the log, the person never failed to tell me that the jsonified message was impossible to read, to which I replied with “They will fix it someday.”

Read more

Share Comments

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. theme, and Airwolf theme.

Read more

Share Comments