The "Boring Software" manifesto

As software developers we are tired of the false claims made by evangelists of the latest and greatest technology. We will no longer confront them with their lack of understanding of computer science fundamentals, nor will we defend our lack of knowledge of their hyped and volatile technologies. The state of industry is forcing us to value: Not only working software, but also well-crafted software, built exclusively with popular and proven tools. Not only responding to change, but also steadily adding value, while reducing the dependencies and complexity. Not only individuals and interactions, but also a community of professionals, that share best practices with verifiable claims. Not only customer collaboration, but also productive partnerships, to reduce the scope of the software we build. That is, in pursuit of “agility and craftsmanship” we have found “boring software” to be indispensable. ...

June 18, 2018 · Maurits van der Schee

Will the GDPR kill Google analytics?

My common sense says that visits to any website should only be recorded by the operator/owner of the website (and for operational purposes only). This may change when agreed otherwise with the visitor (opt-in). My understanding of the “cookie law” is that such opt-in is required and that Google analytics without opt-in has thus already been forbidden (in the Netherlands) several years ago. My reasoning is that A) your site functions fine without Google analytics and B) you are giving (employees of) another company (Google in this case) access to personal information of your visitors. C) it is clear an analytics service costs money to operate and since you are not paying for it, you should question how they make money. I understand that just A and B create a thin line and that you could argue by that logic that the entire spectrum of public cloud services (from renting software to infrastructure) requires opt-in. ...

May 30, 2018 · Maurits van der Schee

PHP-CRUD-API version 2 uses PDO

PHP-CRUD-API is now 4 years old. It is my most successful open source project and it has acquired 1400 Github stars, 150 watchers, 17 contributors and over 500 forks. I have also ported the core of the script into 7 languages and did performance analysis on that. I have answered over 300 github issues and I am very thankful for the people in the community that were helping out with these issues. I also handled over 40 pull requests and 36 where merged. I have learned some lessons about it’s good and bad parts and I’m trying to apply these lessons in a new version. ...

April 12, 2018 · Maurits van der Schee

The "JustForFunc" Go YouTube videos

Francesc Campoy Flores is the VP of Developer Relations at source{d}. He has a passion for developer relations, specifically when it comes to Go and anything that can help developers be more productive and happier (source). Previously, he was a Developer Advocate for the Go team at Google and for Google Cloud Platform. He has been working closely with the Go team at Google since 2012, working to make the language as accessible as possible to everyone. ...

March 9, 2018 · Maurits van der Schee

Intel 110T 82572EI (e1000e) PCI-e

The Dell R730xd is a really awesome machine. It has 2 CPU’s and you can put 24 drives in it. It also sports a high performing H730 (LSI MegaRaid) controller. It is certified for Ubuntu and CentOS, so you have guaranteed smooth sailing when installing Linux… right? Yes, you do! Booting to a black screen But not when you install an Intel 82572EI based HP 110T PCI-e gigabit ethernet card in the machine like I did. In that case newer kernels won’t boot. They will try to load the kernel, but then give a black screen and possibly a blinking cursor, but nothing will happen. This has nothing to do with the R730, but everything with this specific PCI-e card, the power saving features in new kernels and how the (e1000e) kernel driver handles these features. ...

February 27, 2018 · Maurits van der Schee

REST API using Spring Boot and jOOQ

Almost every backend application that is created today has a REST API. And most “serious” applications have a hundred database tables or more. In such case there are two ways to create a consistent REST API: code generation and reflection in runtime. Both methods have upsides and downsides. I have implemented a runtime reflection based REST API before (in PHP) and have now done this again in a Java library. Ambitions are high I have seen many slow and inconsistent REST API’s in my career. That’s why the ambitions of this library are high: ...

February 17, 2018 · Maurits van der Schee

Upgrading Go 1.6 in Ubuntu 16.04

Go is an awesome new language that I love to write code in. I’m working on Ubuntu 16.04 and it comes with Go version 1.6. This works fine, until you need something new, such as the “context” package. In this post I’ll share the commands needed to upgrade your Go version. Installing Go 1.6 in Ubuntu 16.04 To install go 1.6 in Ubuntu 16.04 from the repository run: sudo apt-get install golang golang-golang-x-tools Set your “GOPATH” and “GOROOT” by adjusting your “~/.bashrc” file so that it reads: ...

February 14, 2018 · Maurits van der Schee

On Meltdown, Spectre and sandbox isolation

Our worst fears have been proven true. Sandboxed code execution on most Intel chips in the past 20 years has been unsafe. And it’s even worse than that: there is no fix, as Intel has been trading security for performance with a technology called “speculative execution”. For more information read about the Meltdown and Spectre CPU flaws. This post will explain the impact and what we can do about it. Tin foil hat People laugh at me when I tell them running untrusted code in a sandbox is doomed to fail. ...

January 6, 2018 · Maurits van der Schee

Choosing a high performance web stack

In a previous post I told you that there is no such thing as the “right tool for the job”. And this true for most businesses. Nevertheless there are companies that want to prepare for scaling up operations to “world domination” level. In that case there is one more factor to take into consideration when choosing a web development stack: performance. Why performance matters To understand why performance matters you first need to know that we are not talking about a few or even tens of percents of better performance. We are talking about factors and even magnitudes of better performance. Also we should consider the costs of rewrites and the costs of switching stacks. ...

November 17, 2017 · Maurits van der Schee

Porting PHP-CRUD-API to Python

I have ported the core of PHP-CRUD-API to Python and the results are encouraging. In PHP 7 the core executes at 6500 requests per second, while in Python I can get it to do about 9000 requests per second. It must be noted that I’m not using connection pooling, but just reusing the same single connection per thread. With connection pooling (as PHP and other implementations do) I can’t get it above 2600 requests per second. ...

November 12, 2017 · Maurits van der Schee