• How I learned about event-driven design in the late 90's

    Das Keyboard Ultimate - I have one and it's awesome

    The event-driven design has already been around for a while. Like many other trendy patterns, it’s far older than what we think. Before the web era, it was quite normal to design stand-alone desktop applications using this design. But it is even older than that. It has already been used massively since the mainframe era (and probably even before).

    This is the story of how I learned about event-driven design without even knowing what it’s called in the late 90s when I was just getting started to learn how computers work.

  • Kubernetes translated to AWS

    K8s to AWS

    I use analogy whenever I need to explain something in the clearest and fastest possible way. Gaining knowledge in an abstract manner is hard and costly. Using existing knowledge as a foundation speeds up the learning process and prevents misunderstandings. When a C# developer, for instance, asks me what’s flatMap in Scala, I’ll ask if they know what’s SelectMany? If they do, explaining how flatMap works on non-list types would be far faster and easier.

    Now let’s do this with Kubernetes and AWS. Let’s see what are the Kubernetes components closest equivalents in AWS.

    The point is that an analogy doesn’t provide a deep understanding of a new concept, but it provides the foundation to speed up the learning process. So don’t expect a conclusive 1:1 mapping from Kubernetes elements to AWS ones.

  • Chromium to Firefox Experience (Setup Multiple Profiles)

    A while ago, I decided to give Firefox a try. Here I’m going to share why and how it happened. Also I’ll share how I configured my work and personal browser profiles on my Gnome desktop.

    Screenshot of Firefox profile launchers

  • Don’t listen to them, learn Cats this way

    OK, you came to the conclusion that type-safety is good. It helps you get things done in a safer manner, at least for whatever you’re working on at the moment. So you started using types more than before to describe what a piece of code does without the need to run. In another word, to bring forward unwanted errors.

  • Learning about the way we learn

    Sometimes, we need to invoke our own brain to describe some facts about itself but in a more pleasant way to help ourselves move on. It’s not a bad thing at all, but I prefer to know the scientific facts, no matter what’s the cost.

  • How to apply settings to multiple projects using SBT triggered plugins

    SBT is the main build tool for Scala projects. It’s simply one of the most powerful build tools available. You’re not limited to a single method for doing a specific job and there is no predefined and restricted rules. You can automate things as much as you want. And the good news is that SBT tries to run the tasks in parallel as much as possible.

  • Comparing Scala Editors

    Choosing the best editor/IDE for your favorite programming language is not as easy as it seems to be. Obviously, that’s not the case if you work with the main-stream technologies or if you don’t consider yourself a geek programmer!

    Right now, Scala is my favorite language and fortunately, contrary to what most developers think, there are a good number of available choices as editor/IDE. This post is about my experiences of using these tools.

  • Back to Ubuntu from Arch

    Several month ago, I left Ubuntu for Arch. This post is about my experiences and the reasons that led me to move back to Ubuntu.

    Update 2017-01-21: As the VirtualBox bug, which made me go back to Ubuntu, is resolved, I couldn’t resist going back to Arch. This time I tried i3 instead of a full fledged DE and I’m very happy so far.

  • Type Injection in Scala

    I’m not sure if it’s a good name but as we inject types into our classes, type injection seems a good name. I used this technic in my latest project to build a database-agnostic data-access layer on top of Slick 3.

  • Running SBT on a Linux encrypted home

    If you use Linux and encrypt your home folder, you may get the following error when compiling a SBT project:

    [error] File name too long
    [error] one error found
    [error] (compile:compile) Compilation failed
  • The hacker scripts in Scala

    You may have read or heard about that amazing true story about a hacker scripts which inspired hackers who enjoy living inside the terminal!

  • How to run 32-bit Andorid SDK on 64-bit Arch Linux

    Andorid SDK is a 32-bit application and needs some extra works to run on a 64-bit Arch Linux.

  • Non-verbose SEO friendly internationalization for Play framework

    Default internationalization support in Play works with cookies which is not SEO-friendly. It would be very nice if it was possible to use route parameters instead of cookies but as Play routes are (nicely, truly and correctly) type-safe, this will come at some cost; verbosity. Albeit it’s not true for smart people who code in Scala :D

  • Akka: Integration Tests for Single Node Cluster Sharding

    Multi-JVM tests are the default way of testing an Akka cluster sharding application. But sometimes you just need the sharding functionality where multi-JVM tests are just overkill. I didn’t find any sample or guide describing the best practices for this situation.

  • How I Deploy My Play! Apps

    I don’t use services like Heroku as deployment infrastructure. They are amazing but I have my reasons.

  • Installing RVM on Ubuntu Desktop

    RVM installation is clearly described at, but I’ve always had problem loading the Ruby after installing RVM.

  • Why Functional Programming?

    There are plenty of reasons why functional programming are becoming mainstream, but I came across the one I think is the most visible.

  • Hello World (with the help of the community)

    I’ve always liked to have an international blog. I’m not very fluent in English and I’m afraid to share my experiences in English in the fear of making mistakes.

subscribe via RSS