TL;DR: HTTP compression can delay rendering of web resources HTTP permits content to be served with different encodings, some of which can be used to compress [1] the data volume transferred over the network, which has become a frequent suggestion [2] towards optimising websites for performance. It turns out that the deflation phase of the … Continue reading HTTP compression and incremental rendering
Category: performance
Unjam CSS
Abstract: Unjam CSS is a technique for removing render-blocking CSS from pages over which we have only partial control, such as CMS or portals. The problem: a portal generates HTML pages based on a template. Custom HTML can be inserted at specific place holders, but we can't modify the rest of the page HTML. The … Continue reading Unjam CSS
Scalability through client-driven workflows
This post discusses a way to increase a service architecture's scalability by removing any communication paths between services and instead burdening clients with that communication. Bureaucracy in real life is a trade-off between ease of work for the applicant vs. ease of work for officers In "Les 12 travaux d'Astérix" [1], Asterix and Obelix are … Continue reading Scalability through client-driven workflows
Tomcat starts slowly in docker container
Just a little reminder to self: when running Tomcat with Java 8 in an Ubuntu Docker container, Tomcat will take a very long time (minutes!) to start with even the simplest web application. The issue is actually documented (not entirely Docker-related). The solution is to modify JAVA_OPTS to use a different random device: JAVA_OPTS=-Djava.security.egd=file:/dev/urandom
Formatting USB flash drives for write speed
Flash drives enjoy a reputation for being fast and that certainly goes for high-end models with their elaborate memory controllers and multi-bank layouts. A fundamental "problem" with current flash memory technology is that writing even a single bit of information requires that an entire block of flash memory is reset first [1], which greatly reduces … Continue reading Formatting USB flash drives for write speed
Solving the 8 Queens puzzle with bit operations
The 8 queens puzzle is a classic (and quite fun to solve) toy problem: place eight queens on a chess board in such a way that all queens could fully move without being obstructed by any other queen. While without practical applications, it illustrates a number of aspects of designing algorithms and implementing programmes: - … Continue reading Solving the 8 Queens puzzle with bit operations
Speeding up initial page view of Ajax applications with static HTML
Many Ajax applications build the UI programmatically, i.e. think of GWT's UI builder or one of the many convenient jquery widgets which incurs a visible delay between the time of the initial page load and the time the page has finished rendering. The delay can be mitigated by a static "please wait while loading" message … Continue reading Speeding up initial page view of Ajax applications with static HTML
The "exe" process on slow Ubuntu bootchart
Ubuntu 11.10 does already a good job at starting faster, but if you've read one of my previous posts on Ubuntu startup time [1] then you know that there is always something to be tweaked for better or for worse. Part of the process is to defer services that are not needed immediately (i.e. printing) … Continue reading The "exe" process on slow Ubuntu bootchart
The impact of network packet loss on HTTP latency
Over the course of my involvement [1] in my Indonesian company's website, the question of how to design a website to deal with slow and bad network links presented itself over several occasions as most of our users surf either over a mobile connection or a similarly dimensioned fixed line. While optimizing design and resources … Continue reading The impact of network packet loss on HTTP latency
HTTP pipelining, Tomcat 7 and Firefox 4
During an optimisation cycle for Bazarooma aimed at further reducing latencies I started experimenting with Firefox' HTTP pipelining [1] feature, which is disabled by default. This can be enabled by typing about:config in the URL bar, locating the network.http.pipelining entry and setting it to true. While Firebug did not report any measurable improvement, it turned … Continue reading HTTP pipelining, Tomcat 7 and Firefox 4