Game Quotes is one of my oldest projects. It was launched back in 2013 as a small side project. At that time there was a site similar to what Game Quotes is now: an archive of funny, inspiring or awfully weird quotes from video games. I loved browsing through the archives, but the site seemed abandoned, as no new quotes were added over months. Today, the old archive is gone and with it a handful of great content. Besides that archive, there was no other place on the internet where you could find curated quotes from video games. …

Refactoring code isn’t easy. It is probably one of the hardest things to do in programming. Here are 7 things to consider before starting to refactor any code.

1. Get to know your Code

Take a look at the whole code first and find out its strengths and weaknesses. Make notes about what problems are actually solved very well and where the original writers took shortcuts or hacks to make the thing work and which solutions are actually holding your further development back. Only if you get the whole picture you are able to make reasonable decisions where to start first. …

I recently implemented Laravel Scout, Laravel’s own full text search package, into one of my projects. One of the models which Scout was enabled for had global query scopes implemented. They are used to defining specific query constraints for all queries run on this model. You must be careful with defining them, as they affect everything done with the model.

Let’s say, you have an Article model, which has some database fields that should be indexed, and a language field which is used to query articles per language, because our site is multilingual.

class Article extends Model

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…

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

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…

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…

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

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…

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…

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. …

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