Skill Acquisition Model


It’s a known fact that every expert starts from a novice and slowly building acquiring skills. But how does it work?

Dreyfus brother tried to answer this question and came up with Dreyfus Model of Skill Acquisition. This theory said that there five stages of skill acquisition: Novice, Advanced Beginner, Competent, Proficient, and Expert.

This presentation dissects each stages and helps you figure out what stage you’re currently in in order to achieve mastery while also avoiding pitfalls in each stages.

Legacy Codes


Legacy codes is always an intimidating topic for engineers. Nobody would be happy to receive or maintain legacy codes. What’s legacy codes anyway? And what’s supposed to do with legacy codes?

Shall we git push origin -D master? Shall we rewrite it? Find out more in the presentation below.

The Simplicity Cycle


Every successful software project starts simple. Along the way in its lifetime, however, this kind of software becomes victim of its own success, it will be more complex. One moment in its lifetime will become especially important: the software will be complicated, or it will be simpler than before.

Find out more about this cycle (and when software rewrite is justified) in the presentation below.

Introduction to MVVM for iOS


Most of iOS Developers are familiar with MVC (Model-View-Controller). Some call it Massive View Controller. That’s certainly how it felt at the time. One of the key architectural changes I would make would be to use an alternative to Model-View-Controller called Model-View-ViewModel (MVVM).

Model-View-ViewModel (MVVM) is basically another architectural paradigm for GUI applications. Although it seems similar to MVC (except with a ViewModel object in place of the controller), there’s one major difference — the view owns the view model. Unlike a controller, a view model has no knowledge of the specific view that’s using it.

There are three really important points about MVVM:
– MVVM is compatible with your existing MVC architecture.
– MVVM makes your apps more testable.
– MVVM works best with a binding mechanism.

Devops – Culture


Some of us, when talking about Devops, will say that DevOps is about a role who manage or create tools that automates things e.g. CI/CD. But another people will see that Devops is about culture.

At ChefConf 2015, Adam Jacobs delivered a great presentation about Devops titled Chef Style Devops Kungfu. This presentation talked about Devops movement, Devops definition and building Devops practice through repetition and skill development.

Continue reading

Apache Thrift


Apache Thrift website define Thrift as a software framework for scalable cross-language services development. It combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml, Delphi,and other languages.

In simple word, Thrift allow programming language in client side to communicate directly to server side (usually called RPC or Remote Procedure Call) although in different languages. Almost all step handled by Thrift, we just implement the function in server side, using any programming language (which is supported by Thrift) and use that function in client side by calling  that directly, even with another programming language.

Take a look to this presentation for more information:


To use Thrift, write the Thrift definition file which contains interface and variable definition, and then build it. Thrift will generate code for both client and server, and we just input code for implement the function. As you can see in slide 3 (Thrift architecture), we just do the top part in architecture and let Thrift handle the rest.

Laravel 5 – Event & Queue


Laravel’s has their own implementation for observer (event handling) and queue implementation. Laravel’s event handling allowing you to subscribe and listen for events in your application.  The Laravel queue service provides a unified API across a variety of different queue back-ends.

This presentation try to give a simple example about laravel’s queue and event handling.