Image for post
Image for post

Email support is one of the most basic things almost any webservice need. It should work, be reliable and doesn’t cost a ton of money. In this comparison I take a look at the 5 most popular providers and what services they offer.

Please notice that this guide focuses on transactional and regular marketing emails you send directly from your service, like password reset emails. Providers like Mailchimp which are specialized on email campaigns and advanced marketing are out of scope right now. As you are more likely to just get started with sending emails, I focus on the smallest plans too. …

About 3 weeks ago my good old DevLorem project was a simple PHP website that generated Lorem Ipsum text made from movie quotes of famous actors and actresses. I decided to rewrite the whole thing with Go to dive into the language and its features.

Yesterday I released version 2, the complete rewrite with many more features. A demo of the website and API is available on

Image for post
Image for post

Using Go to develop a feature-rich application

The main idea was to have one single binary that could be used as a web server handling the website, as well as a CLI tool to generate quotes right in the terminal. The first steps of getting a simple website up and running with Go were fairly straight forward. I used the gorilla/mux package, which provides a set of tools to run a HTTP web server. …

Just three weeks ago I decided to move all my static websites from my own server to a hosting server and went with Netlify. I made the switch in a couple of hours and now all those sites are running within the free plan of Netlify. I am quite impressed by the simplicity of the service.

Last week I found that Vercel (formerly Zeit) offers a very similar service to Netlify. Free hosting of static sites and SPAs with some minor restrictions. Out of curiosity I decided to compare both in terms of service quality and hosting.

Please notice that this is a comparison of the services based on their free plan which targets small sites and hobby projects. …

Dark Mode is a new trend in operating system design which changes the appearance of your system, be it Windows, macOS or a Linux distribution, to a dark themed look. It’s better for your eyes to look at dark colors when working in the evening or night, instead of having several bright white windows glare at you.

Those are my favourite 15 desktop wallpapers, selected from a big collection of 50 wallpapers which can be found available on

Image for post
Image for post
Image for post
Image for post

As a developer, the chances are pretty high that you have your own keys to connect to servers, and be it only the server hosting the git repository. At least I haven’t heard of anybody typing his username and password into the terminal while pushing the latest commits to the remote repository. Those keys are mostly generated by using the RSA algorithm, which was and still is the standard for generating the cryptographic keys.

If you are not interested in the why, but in the how, you may jump directly to the third headline.

Why RSA might not serve you well for the next decades

Invented back in 1977, RSA seemed to be the best solution to generate secure keys. Computers were slow and it might take several decades until RSA would be rendered insecure by cracking the algorithm. However, advancing 40 years, keys are no longer really secure if they are less than 1024 bit. The ENISA (European Union Agency for Cybersecurity) recommends the usage of keys with a length of 2048 bit for short-term security only. Therefore, do not generate new keys shorter than 4096 bit characters!

Image for post
Image for post

In my first article about PHP Hash Algorithms I explored the current status of the algorithms and how they perform in a race against each other. In this post I want to dive a bit deeper into the results generated by an updated version of my code.

Like with the first version of the results, the code and the generated .csv file can be found in the repository.

Updated results for all Hash Algorithms

As explained in the first post, I wanted to generate more results based on the different string lengths passed into the hash() function. Besides the normal generation of hashes for the CLI, I added another file containing the code for generating a complex .csv file. This file contains the time it takes for each algorithm to generate strings from a length of 512 up to a length of 33554432, which equals 2^25. …

Image for post
Image for post

Not too long ago I got an email from my hosting provider, actually a forwarding from the BSI (German Institute for Information Security) that stated my Elasticsearch installation was accessible from the outside. I was flushed, as I thought I had secured the Elasticsearch Docker container behind nginx, which had basic authentication enabled. Fact is: Docker had bound the 9200 port directly in the iptables configuration, ignoring the UFW firewall completely. Oops.

How Docker is handling ports

Well, not so oops. Thankfully, the Elasticsearch setup did not contain any sensible data as it was a playground for a Docker-based testing of Elasticsearch. …

Oh my ZSH is one of the more popular alternatives to the basic Bash shell. It provides a lot of useful functions to
speed up your work with the shell. To complete the package, the shell also offers themes, which alter the way the shell
looks like and which output it shows. The corresponding wiki page
contains more than 100 themes which are actually built-in right now into Oh my ZSH.

The “problem”: you can’t easily compare all those themes because the screenshots differ too much to have at least a
little bit of objective view on them. …

Image for post
Image for post

I work with Docker all the time. Ditching my MAMP stack for Docker was one of the most convenient and useful decisions I’ve ever made. If you are interested in Docker you should take a look at my current Docker Stack which describes how I use Docker for PHP projects.

Useful Shell aliases

If you work with Docker you have to issue a lot of shell commands to start, stop and manage the containers. Most of the commands are usually targeted towards Docker Compose which is a managing layer for Docker. …

Image for post
Image for post

I really do love the concept of Docker and containerization. I haven’t touched my MAMP dev setup for more than a year now and barely use my local PHP CLI. But there is and always was one problem: performance. Response times of a second for Laravel apps and 3–7 seconds for a larger Wordpress stack are quite common. Thankfully, there is a solution for this problem, that does not require changing your whole tech stack: docker-sync.

What is docker-sync?

The Docker for Mac (and for Windows) performance problems have their roots in the OS file system layer between Docker and OS. On Linux, Docker can directly mount files and folders from file system, while on Mac Docker has to pass the request to the OS which takes care of writing the file to the disk. In case of macOS, OSXFS is the elephant in the room. While this does not sound like a big deal, it really is. Even a millisecond difference can pile up to half a second for your whole app, if you have a 500 source files which need to be read. …


Kevin Woblick

Web Developer | Creator of and InvoicePlane

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store