• How dk.brics.automaton regex library works

    This brics regex library is by far the fastest when comparing with openJDK java.util.regex and com.google.re2j. Let looks at what lie under the hood. dk.brics.automaton is a Finite automata library with application in Regex. The idea is similar to google re2j, which is to construct a DFA from regex string and matching an input string means advancing from one state to another. (google re2j is surprisingly the slowest in my test case. Which is probably due to my particular regex input, or some bug with Java port. I have not examined it yet)

  • 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

Subscribe via RSS