BUCK Is My New Friend
January 26, 2016
Happy belated New Year everybody! New year, new resolutions, new thing. There were a lot of things I want to write this year and for my first article is about my passion: software build. I’ve spent my last few years optimising developer productivity, and one most important thing that takes a lot of precious developer time, other than loading the over-bloated IDE and ever-slow emulator/simulator is compiling. To increase the productivity, we need to minimise and fasten the feedback loop. After ditching the whole IDE my next target is to find a faster build system than Gradle, and luckily I found one, and it’s called buck, and it is amazing.
Building Microservices on Contexts
October 15, 2015
Technology space is now buzzing with the word “Microservices”. People are talking about it, companies sell things around it. Hackers and open source developers make tools for it. Microservices seems to be “the next big thing”. Is that true, or not? Is Microservices is just another snake oil which will die faster than SOAP? Does the language you use now define “scalability”? Is that anything to do about Microservices and programming language you use? Those are the legitimate questions one may ask.
Under The Bonnet 1 - NodeJS
October 10, 2015
Tufte-style Jekyll blog
February 20, 2015
The Tufte Jekyll theme is an attempt to create a website design with the look and feel of Edward Tufte’s books and handouts. Tufte’s style is known for its extensive use of sidenotes, tight integration of graphics with text, and well-set typography.
Reactive Programming with RxJava in Android
February 20, 2015
Every UI element on your Android application emits events. The code that you’ve been writing is a reaction to some event, such as user tapping a button or a REST response from your backend service. We usually handle it by multiple instances of event listeners such as
OnClickListener. All is well until you try track and handle multiple states. The common example is validation of registration form. To tackle this, smart people from Netflix have made a nifty little library called RxJava and its binding for Android named RxAndroid. This library will add Functional Reactive Programming extension to your Android application to handle complex asynchronous multiple event handling. This tutorial is loosely based on Ray Wenderlich’s excellent tutorial on ReactiveCocoa on iOS.
The Beauty of Move Semantics in C++11
November 25, 2014
In the olden days of C++98, we were introduced to copy constructor. Copy constructor is a special kind of constructor in C++ that is executed on initialisation, on being passed to function arguments by value, and on return value. Copy constructor has served well for many cases. However, this poses problem on rvalue objects. They are short-lived objects which will be copied several times. If you create a class holding a big memory blob, this is very inefficient. In C++11, move semantics makes this operation very efficient and almost free.
The Superficial Look at C++11 with some nips to Java
November 22, 2014
I remembered when I was opening my first book of C++: The C++ How to program out of necessity (I don’t recommend this book anymore). It was immediately obvious that I would not be the fan of C++ syntax and I also found out that my friends were driven away by it. Java was a new kid on the block that time and it bravely took jab on C++ complexity and syntax. I am not fond of Java. but I thought that its syntax is easier to comprehend than C++.
Using StringReader and transient sequence in Libil Clojure
September 9, 2014
Clojure never stops to amaze me. I’ve implemented libil in Clojure too. The
0.1.0version of clojure implementation makes use of persistent data and head-tail idiom, as you’ve usually see in LISP. I think it’s already good until I read the implementation of clojure-csv. I discovered new and faster way to tokenise string.
The Writing of Libil
September 5, 2014
In the past few days. I’ve been playing with some new languages that I’ve not been familiar with. One of them is Ruby. I want to be familiar with this language ever since I started writing
Vagrantfilefor my infrastructure needs, and
Rakefilefor my iOS development need. I currently have fully automatic workflow that can be easily plugged to any Continuous Integration software based on Ruby. I haven’t played with Rails yet as I didn’t find any need of it. For a new language, I decided to create a common algorithm to be solved. When I was studied in Yogyakarta, there’s a slang language used there. This slang language is a form of vocalised Caesar Cipher with local script as the rule. I decided to create a RubyGems based on it for fun.
August 31, 2014
Have you ever been in the situation, when you include two or more dependencies only to find out that there are duplicates object file on your dependencies and a proprietary library included on your XCode Project? The proprietary library, say
AFHTTPClient.ofrom open source AFNetworking version 1.3.0 for example. You want to update it to 1.3.3 but you can’t, you stuck with old version embedded in the proprietary library. If this situation is familiar to you, then
chocis the right tool for you. Read on.
RAII, JNI, and Android NDK
April 7, 2014
If you have been doing multi-threaded C++ code, you’ll know that RAII (Resource Acquisition is Initialisation) idiom is very valuable to ease the burden of manually typing resource initialisation and release. You might have applied that for mutex, threads, and other kind of locks. But how about JNI? I’ll show you in this post.
Bumpy Road to Android NDK
February 24, 2014
I was very agitated with the fact that doing native development on Android actually sucks. There are many flowery stories about android, from market dominance to adoption of it by many manufacturers, or even Google’s own competitors. However, there’s one story that will leave you a nightmare. It’s Android Native Development.