'Fork me on GitHub' SVG ribbons

Ten years ago, Tom Preston‐Werner released his iconic ‘Fork me on GitHub’ banners (original post). 6 years ago Aral Balkan made high-res versions for retina displays. In this post you find the SVG versions that were created for InvoiceLion.com (a project I’m working on). Usage (see upper-right corner) Here are the ‘Fork me on GitHub’ ribbons in SVG. You may save the SVG file using right-click and “Save Image As” and use the HTML next to it. Alternatively you can download github-ribbons.zip containing the HTML page and all the SVG files. ...

January 29, 2019 · Maurits van der Schee

PHP templating in 165 lines of code

Instead of choosing Twig, Mustache or Smarty as PHP templating language I decided it would be much more fun to write my own. In 165 lines I wrote a sandboxed templating system that supports ‘if’ and ‘for’ and can be extended with functions. Considerations The code does not use regular expressions, but it tokenizes and uses a syntax tree (without any dependencies). This means that it supports nested ‘for’ and ‘if’ constructs. The syntax looks a bit like Mustache and Twig, but is stricter to optimize for rendering speed. It outputs rendering errors in the rendered output, so that you can easily debug it as a user. ...

January 25, 2019 · Maurits van der Schee

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