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

10 reasons async programming is a bad idea

Async (asynchronous) programming is very popular. It is advocated in JavaScript (NodeJS) and in the JVM (Akka). In this post you find 10 reasons why it may not be such a good idea. 1. Async makes your code hard to read IMHO the most important reason to not do async is that synchronous code gets executed more linearly and is thus easier to reason about. The amount of possible states in an async programming model easily explodes, which makes the code hard to read and understand. Of course there are people with strategies (like Flux) to avoid your code to turn into a big ball of mud (also known as spaghetti code), but why would you when you can better say “no” to async programming anyway? ...

November 9, 2017 · Maurits van der Schee

The myth of the "right tool for the job"

Discussions about “the best programming language or technology” are common in software development, but also arguably pointless. Choosing a programming language is very unlike construction work: you don’t need the “right tool for the job”. It is more like choosing clothes to wear: you shouldn’t pick shorts when it’s freezing, but all sensible choices are a matter of taste and maybe even a way of expressing your identity as a developer. ...

October 24, 2017 · Maurits van der Schee