What's brewing

Fujitsu Liberouch

My first interaction with a “keyboard” is the traditional type writer by Olympia. I still remember the click sound, and also the weight of each key. Later on, I get my first computer, which is the Apple II and I realize the keyboard is so much lighter and the click sound is just lovely. Flying forward and I came across all sort of keyboards for both PC and Mac, from the “no-frills” to different kinds of Apple keyboard - those for the Bondi Blue iMac, or those for the PowerBook.

I love the touch of Apple Keyboard and hope to find a similar keyboard for my Visor

I believe my journey into keyboard starts here. I love the PowerBook keyboard and when I start using the Visor, I tried to look for one that resemble the touch. And it was the Newton keyboard that satisfied my desire; very portable, key size big enough to type continuously and I can fool myself typing on the Apple Keyboard. Since then, I came across the keyboard by Logitech, the Apple bluetooth keyboard and so on. I know nothing about mechanical keyboard and my focus is wireless connectivity.

HHKB is the geeky keyboard with no print on caps and feature the UNIX keyboard layout

This is when I first heard about Happy Hacking Keyboard, which is more than 10 years ago. I was intrigued by the fact that, a keyboard that is geeky with no print on caps and feature the UNIX/Solaris keyboard layout. But it never caught on as no way I could afford the expensive keyboard.

One day in 2013, I finally get to know the world of mechanical keyboard. And I got my first - the HHKB Pro (which worth a separate entry on it’s own)! Since then, I extended my collection and today, I get an interesting keyboard which isn’t truly mechanical but the working mechanism is similar to another legendary keyboard, the IBM Model M which are both membrane type keyboard. So here it is, the Fujitsu Libertouch!

My first impression is how sturdy and heavy the keyboard is. With a weight of over 1Kg, it definitely won’t slide on the table while you type. The pressure of the key is controlled by the plastic dome. Fujitsu is very thoughtful in providing dome of different “resistance” so that we can arrange our own zoning. Keys are laser edged, and typical 101 keyboard layout which means I need to adjust since I am more used to the HHKB layout (i.e. CTRL and CAPS position are swapped).

I like the little pool on the top right hand corner which I could put some pins or even a small post-it. The touch of typing is in between the cherry red and capacitive switch. If I have to choose, I would say it resemble more to capacitive than Cherry. And more towards the Realforce than HHKB. It’s quiet, but not as quiet as the silenced HHKB Pro 2 type s or Realforce silent. Another different is, it can’t be programmed. Since I am a Mac user and I surely would want to switch the key of the Windows key with the Alt key. And like I have mentioned before, I am feeling more comfortable in having the key next to my left little finger as CTRL then CAPS. But again, I can’t do anything with it. The keyboard is quite high without pulling out the feet already and I hope to use the palm rest from Filco but sadly, it doesn’t fit.

It’s a nice keyboard but it probably will not be my primary for the reason of key layout (alt/windows key, CTRL and CAP. I know I can change the keyboard mapping in OS but not my preference) as well as size (prefer 10keyless).


Technology - solution to a problem

During a lunch, our boss is showing off his version of NFC iPhone - sticking an octopus card at the back of the iPhone. He elaborates that, from the dictionary, technology means a solution to a problem.

I am a bit skeptical, not because of the definition but his interpretation.

Using technology to solve a problem is always right, but one of the semantic is missing in the statement - quality of the solution. For example, cars in the early days are powered by steam engine, it sucessfully substituted moving cars by animals but they are slow and break down easily. 

If the easiest approach is always taken, we are sacrificing quality for speed.

Let me share with you a story. We have a system that would send goods picking message to the warehouse system. Overtime, there are messages gone missing which results in late order delivery. The current approach to transmit the message is to replicate the data via some intermediate data table. There are times that data failed to replicate, which is due to network or database level issues. A developer is working on a change, suggesting to write directly to the warehouse system instead of relying on the intermediate tables.

Seems to be a logical move as writing data directly to the target system get around the issues of replication. But I have to pull him back, and reminded him on the coupling now increases. Any schema change on the warehouse system would break our application, and not to mention our system's availabilty is now depending on the warehouse system as well. 

Like a clown juggling balls, architect juggle the decision around technical attributes. 

As the architect is the person responsible to device a solution to a problem, one of the challenge is finding the optimal sacrifice, or finding the right solution. It is our job to explain to the user, on all the concerns taken. We are responsible for the end product, not only delivering it but ensure it works all the time efficiently. And we are not only dealing with the delivering team, but also with the business team, remind and persuade them that things are not always that simple.



Doing it properly

When I begin working on Project Rhea, the first thing I remind myself is to do it properly - proper infrastructure, using the tools I pick in the proper way, defining a proper development procedure and only release application with proper testing.

With the project now gone through a couple of sprint, I am seeing "proper" a little differently.

I start off the project with the installation and configuration of Jenkins, which soon I told myself, "Wait a minute! Provisioning and configuration should be automated!" So I steered away from Jenkins to Puppet. And I realize it is a beast quite hard to tame (I will leave it on why I say so in another article) but anyway, I have finally get some configuration written. From there, I realize another thing - I should have the configuration versioned and now I need a GIT server. So there you go, I dropped everything and start working on GIT installation.

Do you still remember what is my original intent? Jenkins installation. But instead of working on Jenkins, I am now dealing with 3 different other things!

All the tasks I mentioned are proper things that should be done but none would resolve my immediate needs - I want to setup a CI server and get a feeling on what it is, how it should blend into our development process.

What's more, the split hinder you from getting the feedback you need and the struggle give you stress (as nothing is achieved), instead of satisfaction.

So here is my first challenge - balancing immediate needs, against taking the time to pave the foundation.

Now with the barrier of adopting Puppet been overcome, the amount of configuration defined start to grow, too. Also, I begin to define the Jenkins pipelines and I am struggling if I should use a single pipeline for all instances or one pipeline for each.

And here comes another challenge on "proper" - am I doing the changes properly?

These conflict lies in the struggle of doing both things on the same environment. And the way I resolved this is, I pulled up a throw away environment so that I could fast track in getting the information I need, while at the same time, I can refine my plan and decide the tasks that needs to be taken. With free starter plan from AWS or Azure, it costs nothing to do experiment. In later stage of my project, I extent this throw away experimental approach to other things as well. For instance, instead of defining the puppet configuration for packages or changes right away, I will first experiment on the sandbox and only until I feel "this is it!", I will then put the changes back into Puppet as configuration.

One day, I came across an article written by an engineer in Google (https://conf-slac.stanford.edu/xldb-2013/sites/conf-slac.stanford.edu.xldb-2013/files/JDean.pdf), talking about the infrastructure development history in Google. It inspired me with my new principle. 

Nothing is final, we can always revisit and refactor as needed. If the Puppet conf growth t oa point of losing control, we refactor.If we rolled out a pipeline that didn't work for the developer, we go back and tune. The flip side of this appraoch is, we got a more concrete statement on what is wrong and what issue to tackle.

Lastly, I want to share with you on how I am seeing "proper" now. Proper, to me, is a state of mind. What is proper depends on what is needed now. Also, don't be afraid of change. Re-define when you feel you are diverting from your original intent.



Have been using vSphere extensively over the years and we finally started using vCenter to manage all the hosts. I am happy but not excited, not because it is bad but I just don't feel the craftsmanship.

I use a lot of tools at work and I picked what to use all with a reason. Lately, I spend a lot of time in configuration management and Puppet is what I am using. A similar offering by VMWare is the Orchestrator.

With both tools on hand, why would I prefer learning Puppet than Orchestrator? Probably comes down to,

I am not confining myself to a particular stack of technology, I can use Puppet to manage instance virtualizing on whatever platform.

User base
I can pick up a lot of resources on this tool since this is so common.

Best of breed
Puppet focus on what it do best and rely on (or people find a way to) other tools to fulfill the other needs. For instance, we are using GIT to manage all the .pp files versioning, access control by PKI, etc. While for Orchestrator, it is taking care all by itself. If vSphere is the only tools we use, this will not be a problem but we are not.

By the same token, this explain why I would use New Relic, Zabbix, Jenkins and Nexus instead of vFabric.


Stepping forward to 120

I love photography.

I love seeing around and always want to capture the special moment. The falling leaves, the sparkling eyes of the kids, their un-reserved smile.

I am stunned when I see the the photos taken by Hideaki Hamada - the atmosphere, the framing, the facial expression of the boys, the color, the tone. And I found the framing is interesting and turns out they are taken by a "medium format camera".

So I started looking around on what it meant, how does it differ from the 135. From there, I learnt about the format, the camera and seeded the desire to step forward.

I looked at all the format and decided 6x6 or 6x7 is what I want. The square format always hold a place (that's why I love using Hipstmatic) and I think I am quite ready to compose in this format. And next comes down to gears. Looked through Mamiya, Pentax and Fuji. Unsurprisingly, I go for Fuji, for it to be the lightest among all and the EBC coated prime lens is always my favorite. But I am not too certain about the focal length (28mm as in 135) as it's not the focal length I am most comfortable in.

After weeks of struggle and analysis, rolls of films I have taken. I know that I WANT to take pictures and this gear can bring me the sharpness in focus and clarity in imaging that I always strive for.

So after two trip to Filme, I have brought the Fuji 670W home, together with 3 rolls of films. Film, like fountain pen, give me a sense of un-repeatable happening. Unlike using digital camera, which you can just blast the shoot and pick one you feels right. For film camera, you have to be totally focused in getting the absolute right.

Now I have to get myself familiar with this, take a lot of picture and enjoy.