Other articles

  1. Retries Can Kill You

    In a large-scale distributed system, it's inevitable that some requests will fail. Even if your collaborating systems work perfectly, sooner or later you will experience temporary network issues and other intermittent errors. That's why a lot of people try to paint over this issue by implementing retries in their applications …

    read more
  2. The Curse of Convenience Methods

    In the old days, many Java APIs were fairly low level and pretty generic. You often had to explicitly select a concrete implementation, provide lots of parameters, and generally needed to know how things worked. This has changed in recent years - modern APIs provide lots of convenience functionality that raises …

    read more
  3. Let's Use TLS

    I have followed the HTTP/2 specification process closely and I like how the new protocol improves web performance and makes old workarounds obsolete. One drawback of deploying HTTP/2 is that most browser vendors only implement it on top of TLS. Since I've seen a lot of broken TLS …

    read more
  4. A Case for Guard Clauses

    One of my pet peeves in programming is that few people use guard clauses. A guard clause is an almost trivial concept that greatly improves readability. Inside a method, handle your special cases right away and return immediately.

    Have a look at the following example:

    private int doSomething() {
        if (everythingIsGood …
    read more
  5. Development Done Right

    In my projects, I've always been the one who took care of infrastructure, standardization and quality assurance from the development perspective. The funny thing is that I'm no admin and no QA guy, so most of it wasn't even my job. In this article, I'm going to list a few …

    read more
  6. Saving Session Data in Web Applications

    There are many ways to store session data in web applications. They all differ in scalability, failover capabilities, and complexity. I'll give you a quick rundown on the major themes.

    Session Data on the Client

    You can often implement simple personalization features or workflows by storing state on the client …

    read more
  7. Efficient Development Environment Setup

    Development environments and their configuration can become quite complex. It's not unusual that a complete workstation setup takes half a day or more and requires extensive help from other project members. Using virtual machines for the runtime environment can help to reduce setup and maintenance costs.

    For large Java web …

    read more
  8. Professional Deployment and Operation of Web Applications

    There are millions of web applications on the Internet that are under constant development. Paying software developers to work on bug fixes and new features is quite expensive already, but what's often neglected is the cost for deployment and operation. Well-run organizations invest in their deployment and runtime infrastructure and …

    read more