RSSAmplifier

Blog

A Day In The Life Of...

Recent content on A Day In The Life Of...

adayinthelifeof.nlRSS feed ↗174 posts

Latest posts

Last night an AI saved my life

Last night an AI saved my life. Well, not literally, and not even last night. But I really believe it saved the browser engine project I’ve been working on for years. We are steadily going through all the hard phases of trying to understand what we are building and how to build it. Turns out we were right all along: building a browser engine is really hard. But yes, we knew that already. But…

Make things work, make things right, make things fast

I have always lived by the mantra “Make things work, make things right, make things fast”. It’s a great way to approach software development, and it has served me well over the years. Lately, though, I see more and more developers, especially newer ones, trying to do all three steps at once, or worse, skipping the first two and focusing purely on making things fast.

Elliptic Curves introduction

Elliptic curves often feel like mathematical magic. Somehow, with relatively simple arithmetic operations on points, we can build secure cryptographic systems. But the underlying ideas are actually not that difficult once we break them down step by step.

CipherSmith: a browser-based crypto toolkit

For years I had a small private page on my machine with a bunch of hacky tools for day-to-day crypto work. Hashing a string, base64 encoding something, generating a random key. Nothing fancy. Just stuff I got tired of copy-pasting terminal commands for every single time. The problem with most online tools is that they want you to paste sensitive data into some random form on some random server.…

Verifying your age in a privacy preserving manner

There is a lot going on in the world regarding age verification. Why does every website or operating system (and possibly later: smart appliances like your fridge??) need to know your age? While I don’t agree with a generic “think of the children” excuse, I do understand that there are certain sites you want to restrict for younger ages, like adult and gambling sites. But are we…

Posting on the internet freightens me

First of all, please understand that I’m someone who has a clear way of visualizing my thoughts, but struggles to communicate them verbally or through written text like posts. Being Dutch already brings a certain directness or bluntness into the mix, so when I try to be concise, it can sometimes come across as me being an a-hole. Sometimes that’s probably true, but most of the time, it’s not meant…

Endless - A dive into a C64 game

Almost 40 years ago, in 1985, a game was released for the Commodore 64 called “Eindeloos” (“Endless”, in dutch). In this game you needed to find your way around a labyrinth while avoiding all kind of enemies and obstacles. The map was so huge, that it was almost impossible to finish the game. It truly was endless for most players.

I'm still fed up and a browser is coming along fine

Three months ago, I wrote a small story about being fed up with things and trying to do something about it. Three months in, we’ve got a small community sharing the same goal: let’s try writing a browser.

I'm fed up with it, so I'm writing a browser

This blogpost starts with me switching of my car radio, and ends with me writing a browser. There is some stuff in between as well.

A list of 100 opinions I hold

“That’s just like, your opinion, man” - the dude Here’s a list of 100 opinions I hold. These are opinions, not hard facts or truths. There will be many people disagreeing with some of them, maybe even most of them, and there will be very few that will agree with all of them.

A comprehensive list of failed projects

I’m full of ideas. Most of them are stupid, though. But sometimes, some of these ideas get stuck in my head like an itch I must scratch, and voila: a new side-project is born. I don’t start projects with a direct goal. Sometimes it’s just to figure out: “how hard could it be” (hint: always), or sometimes: I could get rich with this (hint: never). Even though I’m…

Let's talk about your privates

In the software development world, there are a lot of debates going on: tabs vs. spaces, vim vs. emacs, Linux vs. mac, and so on. In most, if not all, these debates, there is no clear winner: both sides are equally right (or wrong), and most likely, there is no majority on one side. I, however, am part of a debate on the “losing” side in such that I’m part of the minority. And…

My first attempts with Unity

For a while now, I’m thinking about doing something with Unity to see how it works. And what a better way to figure things out is to try and develop a game with it.

Go maps vs switches

Sometimes, things aren’t faster because you think it is,.. but because you benchmarked them. One of Go’s nice things is that it makes it easy to benchmark things to see if your hunches are correct quickly. And sometimes, they turn out not.

From Mac to Windows

I’ve moved from a Macbook Pro to a Dell PS running Windows 10. I decided against MacBook after their annoucement to move to ARM. Even though the macbook 16" was the only system i actually was thinking of buying, i’ve decided against it and give windows a new try. I’ve heared more and more good stories about windows, and more and more bad stored about mac over the last few years.…

Introducting BitMaelum - A new mail concept

What if you can design an email system with a clean sheet. You don’t need to care about existing email clients or servers or anything at all. Even the concept of an email address can be touched. What would such a system look like? This is my attempt,..

Amazon Web Services

More often than not, I’m using Amazon Web Services (AWS) as my “cloud”. Not only for my own projects, but almost all customers I’m working for use Amazon for hosting their applications. So over time you build up a lot of experience on AWS service: you know how to (correctly) setup VPC’s, know when to you ECS, EC2 or lambda to host code and even services like S3, SNS…

Symfony's autowiring

When asking people if they use Symfony’s autowiring functionality, an often heard excuse why people don’t use it is because of all the magic that is happening during autowiring. But just like most impressive magic tricks, once explained, it all boils down to a few simple principles and Symfony’s autowiring is nothing different in that perspective. In this blogpost I will explain…

Write your own GitHub clone

Shower thought: What would it take to write your own GitHub clone? Answer: not that much! I’ve spend a few hours on tinkering with some of the basic concepts, and it turns out it’s actually quite easy to set something up from scratch. And before you all go and write comments that it not feature-complete: yes, I know. But most of them are fairly trivial to implement though, and my goal…

My guide to commenting on joind.in

If you are visiting pretty much any (random) PHP conference these days, you will hear a lot of talk about “rating talks on joind.in ”. For those not familiar with this site: it’s a site where you can find additional information about the talk (like slides), and where you can leave a rating and/or comment about the talks and conferences that you have attended. It’s a great…

Moving to Jekyll

As you might notice, i’ve switched my blogging engine from Wordpress to Jekyll. There are actually a few reasons for this:

Benford's law in frameworks

In a new talk I’m currently presenting at conferences and meetups, I talk - amongst other things - about Benford’s law. This law states that in natural occurring numbers, the first digit of those numbers will most often start with a 1 (around 30% of the time), and logarithmically drops down to the number 9, which occurs only 5% of the time. This might sound strange: why would a number…

Symfony, XDebug and the maximum nesting level

Here you are, developing your code based on the Symfony2 framework. Creating a form here, add a Twig template there, until suddenly, boom! Your site doesn’t work anymore, and all the info you can find in your PHP logs is: PHP Fatal error: Maximum function nesting level of '100' reached, aborting! in Unknown on line 0 What just happened? Did I create some kind of recursive function I…

Incrementing values in PHP

Take a variable, increment it with 1. That sounds like a simple enough job right? Well.. from a PHP developer point of view that might seem the case, but is it really? There are bound to be some catches to it (otherwise we wouldn’t write a blogpost about it). So, there are a few different ways to increment a value, and they MIGHT seem similar, they work and behave differently under the hood…

Understanding Symfony2 Forms

To actually use Symfony2 forms, all you need to do is read some documentation, a few blog posts and you’ll be up and running in a couple of minutes. Understanding Symfony2 forms however, is a whole different ballgame. In order to understand a seemingly simple process of “adding fields to a form”, we must understand a lot of the basic foundation of the Symfony2 Form component. In…

The PHP Elephant stampede

Do you have a toy PHP elephant? A blue one, or an exotic other color, maybe even a jumbo version? Maybe even more than one? Good, put it or them down on the floor, step away from it for a about 5 meters or so, and look back. You bought this with your hard owned money. You’ve earned it. It’s yours. But think about this for a while: what if the literally thousands of dollars we as a…

The secret success of PHPNL

Jelrik and I wanted to share something (I forgot what it was) during the PHPBenelux conference. Probably too lazy to send it through email (tarring, getting it into the email client, sending.. blergh.. tired already) and most likely because the dislike of Skype, we turned to Slack, where both of us were already in (too) many teams already. Strangely enough, we didn’t had a common team where…

Advanced user switching

A really neat trick in the Symfony Security component is the fact that you can impersonate or “switch” users. This allows you to login as another user, without supplying their password. Suppose a client of your application has a problem at a certain page which you want to investigate. Sometimes this is not possible under your own account, as you don’t have the same data as the…

Debugging Symfony components

Don’t you hate it when you are stepping through your debugger during a Symfony application debug session, and all of a sudden it cannot find files anymore as Symfony uses code located in the bootstrap.php.cache instead of the actual Symfony component. Symfony creates these cache-classes in order to speed up execution, but it makes that xdebug cannot find the correct code to step through…

vagrant-share issues

As a reminder (mostly for myself, but any googlers out there): After updating Leopard to OSX Mavericks (yes, I know it&rsquo;s 2014!), i had to reinstall vagrant again. Using the latest version (1.7.0) gave me the following error while running: /opt/vagrant/embedded/gems/gems/vagrant-share-1.1.2/lib/vagrant-share/activate.rb:8:in 'rescue in <encoded>': vagrant-share can't be installed without…

Deepdive into the symfony2 security component: part 1

Once in a while I like diving into code and see how things work under the hood. And as the symfony2 framework consists of many different components, bundles and bridges, there is a lot to discover. But ultimately, the code itself mostly isn&rsquo;t really as complex as it might seem from the outside world: just like a good magic trick, once unraveled, it all seems very simple and makes sense.…

Symfony2: logging out

One of the &ldquo;golden rules&rdquo; of symfony2 is to never hardcode urls or paths inside your code or templates. And letting symfony deal with the generation of your urls and paths makes your life a lot easier as a developer. But one of the things I see regularly is that people are still hardcoding their logout urls like using &ldquo;/logout&rdquo;. But logging out is actually a bit more…

Conditional app permissions

I know: free software comes with a price. Most likely this price is your privacy. I&rsquo;m not talking about 3-letter agencies snooping in on each and every call or email, but the &ldquo;normal&rdquo; companies, setting up user profiles based on your addres sbook, phone calls, emails and whatnot. And nobody seems to care: we don&rsquo;t mind selling ourselves if it means we can enjoy the next 5…

Internal PHP function usage: revisited

A small update on the blogpost about PHP&rsquo;s internal function usages: https://www.adayinthelifeof.nl/2014/07/25/internal-php-function-usage/

Shuffling elements in Gatling

On a project where I worked alongside @basdenooijer , we needed to do a quick performance-test on a server. Since our shared hatred against (too) complex gui&rsquo;s, Bas found an awesome cli-tool called gatling . Basically, like ApacheBench but smarter, and like jMeter, only less complex. With the help of simple scala scripts (yes, that&rsquo;s a first), you can easily program your tests which in…

Internal PHP function usage

How many internal PHP functions (things like count() , strpos() , array_merge() etc), does PHP have? Depending on which version you use, and how many extensions you have loaded, somewhere between 1000 and 2000 would be a good guess. But how many of these internal functions are you REALLY using? I don&rsquo;t hear many people talking about iconv_strlen() , is_soap_fault() or mb_http_output() , yet…

A toolbox for less than $100 / month

There are a lot of tools out there which can help you as a developer / self-employed contractor. And even though most of these tools are free (as in beer), I don&rsquo;t mind spending a certain amount of money on tools that help me do my business. So with all the tools out there, all the paid plans, the freemiums and the trial periods, what can a crispy 100 dollar bill every month buy?

The first few milliseconds of HTTPS

PHPMagazin.de has published my presentation about the first few milliseconds of HTTPS. This presentation has been presented by me at the International PHP Conference in Berlin last month.

Throttle your API calls: RateLimitBundle

A web application is not complete without an API nowadays. APIs allow third parties - or just end users - to use the data from the platform for whatever they want. But by allowing applications to make automated calls to your API can result quickly in our systems overloading. Too many times third party applications will be polling your API when they don&rsquo;t really need too, and maybe you can…

Dynamic form modification in Symfony2

Sometimes (or actually, a lot of the time), handling forms will go beyond the basics. And even though Symfony2 gives you out-of-the-box a really clean way of creating forms, it sometimes just isn&rsquo;t enough. Fortunately, you are not alone in writing forms, and many posts exists with information on how to handle complex forms. In this post, I will try and demonstrate how to create a dynamic…

Bitwise mask emulation with Solr

Solr is great for searching through a massive data collection in lots of different ways. But one thing Solr lacks is the possibility to search bitwise. And this by itself makes sense: Solr uses inverted indexing and doing bitwise operations on it&rsquo;s indexes might result in a loss of performance. There are, however, some plugins that will allow you to use bitwise operations, but there might…

SPL Deepdive: RegexIterator

If everything goes according to plan (which never is the case), I&rsquo;ll try and highlight some of the fascinating stuff that can be found inside the SPL. I do a lot of presentations about the SPL, and one of the things I like to tell people is that even though the SPL, - iterators particularly - is a magnificent piece of code that is often underused and misunderstood, it does come with some…

Email Subaddressing

Sometimes you are looking so hard for a solution, that you won&rsquo;t even see them even if they punched you in the face. Email Subaddressing is one of those issues I couldn&rsquo;t get fixed.

Realtime PHPUnit

Not all IDEs (actually, i haven&rsquo;t seen even one IDE that does this), can run your unit-tests as soon as something changes.

Symfony2 app/console bash completion

If you do command line work under Linux, you probably are aware that when pressing <TAB> automatically completes your command, or give you options for it that are currently available. For instance, when entering cd l en pressing <TAB> , bash gives you a list of all directories starting with an l , which you can select instead of type. If there is only one available directory that starts with an l…

Decoding TLS with PHP.

As a proof of concept I wanted to see in how far I could decode some TLS data on the client side. Obviously, this is very complex matter, and even though TLS looks deceptively simple, it isn&rsquo;t. To make matters worse, PHP isn&rsquo;t quite helping us making things easy neither.

External code coverage with travis / scrutinizer

I really love the travis-ci and scrutinizer-ci combo. Between them there are not many things missing like you would find in more complex systems like Jenkins for instance. Both travis and scrutinizer are really easy to setup (just click on which github repository you want to test), setup your yaml config files and off you go: instant CI.

TeleHash: an encrypted p2p network for your apps

In the current day and age, using a plain HTTPS connection might not be the most secure way to communicate anymore. Sure, for your purposes and goals we can assume that this communication is safe enough, but cracks are appearing in the security, and we might need to move to better, more secure ways in maybe a shorter period than anyone expected. But how do we do this? We are not crypto-experts,…

Yearly mail routine

**January 1, ** This year will be different. I will sort all my mail directly into different mailboxes. I will make sure my inbox will be 0 at all times. Yes! This is going to be an awesome worry-free mail year!

FullSpectrumLaser aka: why you should think twice on buying from them

After buying a secondhand generic Rabbit laser cutter, I immediately fell in love with laser cutting and engraving. It really rocks, you can make really neat things and we even use it for promotion for my company. Awesome stuff, but our laser cutter wasn&rsquo;t good enough: it&rsquo;s a pretty cheap chinese manufacturing, with buggy software that only can communicate through a LPT port (remember…