LibreOffice 5.2 released

On August 3rd, 2016 the Document Foundation released LibreOffice 5.2, “a feature-rich major release of the best free office suite ever created” as they say on their website. I think they are very humble, because it is not only the best free office suite ever created. No commercial office suite (not even Microsoft Office) comes close to the UI consistency and speed of this office suite. 3 notable new features in LibrOffice 5.2: Google Drive’s Two-Factor Authentication (2FA) now supported. Pressing Shift + Return in the multi-line input will now insert a new line in Calc. Calc now has a set of forecasting functions that use triple and double exponential smoothing and handle seasonal effects. See: release notes ...

August 7, 2016 · Maurits van der Schee

Features are an asset, code a liability

Lines of code shouldn’t be used to measure productivity, but it is a very good metric that tells you a lot about the state of the project. Especially when separated into testing and non-testing code and combined with number of features. I think that if you manage to add a requested/desired (!) feature without adding too many lines of code you are doing a good job. A project should also have a decent amount of code dedicated to automatic testing. Next to that active monitoring and automatic bug reporting are required to run a smooth web application. ...

August 4, 2016 · Maurits van der Schee

High performance JavaScript web service using Cluster

You can’t start a discussion nowadays about high traffic web services or somebody will bring up NodeJS and it marvelous performance. Skeptic as I am I test these claims before I believe them. The following code runs pretty fast on my machine, but only uses one core of my CPU: const http = require('http'); http.createServer(function (req, res) { res.writeHead(200); res.end('hello world\n'); }).listen(8000); I ran the following Apache Bench command to test the performance: ...

August 1, 2016 · Maurits van der Schee

Active cache invalidation is an anti-pattern

I strongly believe that active cache invalidation is an anti-pattern, a symptom of bad software architecture. In this post I will sum up the reasons people give for explicit cache purging and explain what’s wrong with them. It is not wrong to allow purging of the cache manually and by exception, but it is wrong when cache invalidating is part of the algorithm. The rule of thumb is: your software should not delete from the cache during normal operation. ...

July 29, 2016 · Maurits van der Schee

High performance OLTP myths busted

When building high performance OLTP (online transaction processing) systems you need CPU and IOPS and preferably a whole lot of them. Alternatively you can build a distributed system in the cloud. This will not work (as well) and cloud providers will make you change to this losing strategy one or two magnitudes too fast. That is an awful lot of development time wasted at a moment you are still small and can’t afford to lose any. In this post I will bust the common myths about the cloud and high performance OLTP systems. ...

July 26, 2016 · Maurits van der Schee

Symfony Memcache bundle v3 released

I have released version 3 of the Symfony Memcache Bundle which is now renamed from “LswMemcacheBundle” to “TqdMemcacheBundle”. I started the bundle to provide mature cache management to Symfony2. It now supports Anti-Dog-Pile, session locking, Doctrine query caching and other important features, such as server pooling support and Windows compatibility. Application level cache in PHP It can be important in a PHP based web application to apply aggressive application level caching. PHP is not a fast language and many web applications use the majority of the time to request, retrieve and transform data they receive from the database. The results of this process are very suitable to be cached in Memcache with a timeout that is specific to the data and it’s use. ...

July 23, 2016 · Maurits van der Schee

SVG editing without Illustrator or Inkscape

In order to make your HTML5 games responsive you may choose to create vector graphics in SVG. The commercial Adobe Illustrator and open-source Inkscape software can both be used for this job. I did not like these tools and decided to create my own tool that stays very close to the W3C specification for SVG and allows for high precision editing. Writing SVG by hand Instead of using Inkscape I found myself writing SVG by hand using nothing more than a text-editor and a browser. This was mainly because I did not like the verbose Inkscape output of the SVG and that I had trouble making my vector drawings properly symmetric and properly smooth by having symmetric control points on connecting lines. ...

July 19, 2016 · Maurits van der Schee

PyCon 2016: videos online

The videos of PyCon 2016, (that was held a month ago in Portland, Oregon) are online! PyCon is the largest annual gathering for the open-source programming language “Python”. The impressive list of keynote speakers included: Parisa Tabriz (Security Princess), K Lars Lohn (Hippie Biker at Mozilla), Lorena Barba (Computational Scientist), Cris Ewing (Plone Foundation Member), Guido van Rossum (Python’s Creator) and Van Lindberg (Chair of the Python Software Foundation). Free Python videos I think it is amazing that you can watch all these high quality Python talks for free on YouTube. To make it easy for you to choose to pick an interesting talk I made a list of all the videos: ...

July 16, 2016 · Maurits van der Schee

GopherCon 2016: videos online

13th of July was the last day of GopherCon 2016, the “Largest event in the world dedicated to the Go programming language.” It was held in the Colorado Convention Center in Denver. There are 16 videos online now and 22 lightning talks, so most of the conference is available here. Also interesting are the videos from the previous year and from “dotGo 2015” and the “London Go Gathering 2015” (they may be older, but they are still very relevant). ...

July 13, 2016 · Maurits van der Schee

Windows 10 clean install

In order to keep Windows running smoothly you need to reinstall it every now and then. In this blog post I’ll explain how you can make a USB drive to perform a clean install. Booting a UEFI machine from USB (without using legacy boot) may be a bit harder than you are used to. Get Windows 10 installation media This is where it is at: https://www.microsoft.com/en-us/software-download/windows10 On Windows the above link allows you to download the “Media Creation Tool”. On Linux on the other hand this allows you to download ISO files of Windows 10. You can use the user-agent switcher to choose either method. Note that the page contents depend on the operating system in the user-agent string and not the browser. ...

July 10, 2016 · Maurits van der Schee