• Misconceptions when scale applications

    Once in a while, engineering managers and software engineers would triumphantly tell me to use a particular piece of technology because it is scalable or good for concurrency. Unfortunately, scaling an application means trading off different factors affecting an app’s performance and no single technology comes as silver bullet to solve them all. Below are some of the misconceptions I often hear.

  • How regex is implemented

    Recently at work, I need to take a deeper look at how optimization is done by different regex libraries and how they combine regex patterns. This document is examining 2 regex implementations: java.util.regex of OpenJDK and re2 of Google.

  • How java load classes

    For a while, I have delegated the task of managing java run command to IDE. Eclipse, Netbean and IntelliJ and all seem to do a decent job of masking away complexity of supplying java with JVM parameters, classpath, debugging options… Compared to other languages, the java run command can get horrendously long, not very suitable for handcrafting. Recently, when working on some sort of command generating at work and playing around with java command line arguments, I encountered some minor gotchas.

  • I no longer use dual monitor at work

    When I first started out my career as a software engineer, professionals working with multiple displays seemed cool and power packed. Such desk arrangement creates an impression of a lots of things going on. People would quickly move their gazes between one montior and another as open files scattered across screen. Perhaps that helped multi-tasking as you can code on one monitor and refer to documents on another. I used to do that too. But now I’m more comfortable using a single monitor. It helps with the neck since I don’t have to turn around. And screen estate is small. That limitation forces me to close unnecessary stuff. Focus on one thing at a time.

  • Let people decide for themselves what is good

    The road to hell is paved with good intentions

  • Reality is not what it seem by Carlo Rovelli

    In Reality is not what it seem, Dalio weaves the beautiful thread of atomicism from when it was first conceived by philosophers of antiquity (Democritus), through banishment under Christain Roman Empire to Renaissense and modern time. The book was both historical and scientific.

  • Shortcomings of web technologies in building a robust desktop application.

    As computation power and data are shifting to the edge, web applications are more and more like installed desktop applications with (limited) file system access, threading, offline storages… Frameworks such as Electron, which allow browser-based application to be packaged as standalone app, are gaining popularity. However, with great power comes great responsibility. Javascript, html, css have always been used to build webpages, which is a stateless and forgiving environment. A broken webpage can be remedied by hitting refresh button. The web is not used to be fast, users’ expectation for it is lower than for an installed application.

  • Java byte literal for value greater than 0x80

    In porting a piece of code from C++ to Java, I encountered statement like this:

  • C++ '&' operator

    Some note on C++ references

  • The Black Swan

    By Nassim Nicholas Taleb

Subscribe via RSS