Linux dream machine under 900 euro

I write this on my current PC: a passive cooled (Akasa Plato-X case) Intel NUC i7 16gb RAM 512 GB NVMe in my living room. It hangs behind a 27’ Philips WQHD screen (VESA mounted) and it has a big Libratone speaker next to it. I use a laser mouse and a mechanical keyboard to operate it. It runs the Xubuntu operating system and it is not only completely silent… it is also lightning fast! ...

January 4, 2019 · Maurits van der Schee

35th CCC hacker videos online

Every year the Chaos Computer Club (CCC) has a hacker conference called the Chaos Communication Congress. It has grown out to be one the world’s largest hacker conventions. This year was the 35th time the convention was held. There were an an estimated 16,000 visitors at the convention in Leipzig. If you were not there you can still watch the videos. The videos are posted on the ccc.de website. Videos 2018-12-27 ...

December 31, 2018 · Maurits van der Schee

Doubly Linked Circular List in Ruby

For part 2 of the puzzle on day 9 of Advent of Code I needed an array with cheap insertion and removal. That was a perfect excuse to implemented a doubly linked circular list (in Ruby). It has 5 methods (append, remove, read, rotate and length) and a constructor. You can also convert to string, something that comes in handy for tests and during debugging. Methods These are the 5 methods: ...

December 9, 2018 · Maurits van der Schee

Security risk: a hidden cost of dependencies

Last week, it seemed like somebody tried to steal from Bitcoin wallets using a rogue release of event-stream a JavaScript dependency (that is used a lot). You can read about it on the “I dont know what to say” issue on it’s GitHub issue tracker. I’ll discuss the background of this event in this post. TLDR; JavaScript projects use lots of (often transitive) dependencies, because JavaScript has no good standard library. If one of these dependencies falls into the hands of a malicious actor, then many websites may be vulnerable (event-stream) or broken (leftpad). These problems have nothing to do with JavaScript or Node, but with the hidden costs of dependencies. ...

November 26, 2018 · Maurits van der Schee

Reduce the mental load for developers

I love Ruby on Rails and I was reading Ben Halpern review of David Heinemeier Hansson’s Keynote on Railsconf. I agree with Ben Halpern that the reduction of “the mental load for developers” is an undervalued concern in the world of web development frameworks. In this post I will define some even stronger goals for web development frameworks. New “useful” technology Ben Halpern continues: the JavaScript community proliferates new “useful” technology without giving as much thought to the mental overhead of constantly learning new things and finding out how to fit everything together. ...

November 18, 2018 · Maurits van der Schee

MintyPHP now on packagist!

I have created MintyPHP (formerly known as MindaPHP) to quickly build web applications on the LAMP stack. After using MintyPHP in production for 5 years (this site is created with it) this web framework is (finally) available on packagist! This means that updates will now go automatic with composer. The project is now divided in 4 packages with “MintyPHP” as the main package and 3 dependencies: “core”, “tools” and “debugger”. WARNING! MintyPHP claims to be “refreshingly different”, but for some people this is “a bit quirky” or even “completely wrong”. It is a web framework with a different approach than other frameworks (such as Laravel, Symfony or Slim). In this post I will try to explain what it does different and why you may like that it does. ...

October 26, 2018 · Maurits van der Schee

Deploy with Git: push to production

When you are building applications or websites in PHP, Ruby, Python or any other scripting language then you may still be using FTP to deploy to production. Please don’t! When you have SSH access to your production server (for instance when running on a VPS), then you may use Git to automatically deploy your software. We will setup your production server as a Git remote so that you can type “git push production” to deploy the latest version of your code to production. This post will show you the steps to take to achieve this. ...

October 22, 2018 · Maurits van der Schee

Microservice vs. dataservice architecture

All product companies have monoliths. They have many advantages, but they fail when scaling up and out. Most companies are moving to microservices. But microservices fail to protect data quality. The solution is the dataservice architecture as described in this article. Monolith architecture fails to formalize responsibilities and limit dependencies between software teams. Microservice architecture fails to ensure data quality as transactions and consistency checks are absent. Dataservice architecture will solve both issues. ...

October 17, 2018 · Maurits van der Schee

PHP-CRUD-API version 2 released

Yesterday I released version 2 of PHP-CRUD-API, the TreeQL reference implementation in a single PHP file. About 6 months ago I wrote about my progress on version 2. I was expecting it would take me about 2 months until I could release a final version 2. It took 6 months and I created 8 beta releases in the process. I’m very thankful to the people that were trying these beta versions out and for the issue reports that I have received. ...

October 14, 2018 · Maurits van der Schee

TreeQL vs. GraphQL

Many people compare GraphQL to REST and come to the conclusion that both have their strengths. In this post I argue that you can have the best of both worlds by using TreeQL, an improved REST protocol. Downsides of GraphQL According to Stubailo and Doerrfeld the downsides of GraphQL (compared to REST) are: It’s results can’t be cached using HTTP caching. It has limited endpoint security enforcement. It doesn’t have as many tools yet. That last point is fortunately changing fast, as GraphQL adoption is rising. ...

October 4, 2018 · Maurits van der Schee