In-depth review of Irresistible APIs: Designing web APIs that developers will love


This blog post (15-min read) is a starting point for a series of in-depth book reviews.

I read around 10-15 books a year, I know how much time it cost and how crucial it is to pick up the right one. If you are investing your own money in a book, it’s even more important to get as much information as possible. You want to be sure that you are not buying a pig in the poke.

Before scheduling anything to read, I search for recommendations and reviews in the following places.

  • Goodreads
  • Publisher websites like O’Reilly, Manning, Packt.
  • Book marketplaces like Amazon or Bol

Unfortunately, recommendations put there are of little value. What is the difference between 3 stars and 5 stars?

Reviews tend to be either too personal and opinionated, or too short and devoid of details. In my experience, the most trustful ones pop up from time to time on Goodreads and Amazon. Yet, it is still hard to draw a proper conclusion.

The nice thing is that some publishers give you an option to read one or two chapters for free. This is better, but it’s still not enough to give you a good picture of the entire book.

Because of this, I came up with an idea to create in-depth reviews of technical books. If the topic interests me, which is in case of APIs, Domain Driven Design, Test/Behavioral Driven Development, Software Architecture, Object Orientation, Design Patterns or Web Development with PHP and Symfony, my mission is to read out all the possible books out there.

So the first book I’ve crunched and reviewed for you is “Irresistible APIs: Designing web APIs that developers will love” by Kirsten L. Hunter.

Continue reading “In-depth review of Irresistible APIs: Designing web APIs that developers will love”

Quick recap of “TDD, DDD & Teamwork” workshop


On the 30th of August 2018, I attended a workshop about “TDD, DDD & Teamwork” given by Pim Elshoff and Joop Lammerts. The venue was Vrieling Adviesgroep, situated in a small village of Dedemsvaart, Overijssel.

Thanks to the local Dutch group VechtdalDev, such sessions occur four times a year, free of charge. Primary language is Dutch and everyone is welcome.

Continue reading “Quick recap of “TDD, DDD & Teamwork” workshop”

Journey to mastery of ML – The very beginning


Machine Learning (ML) is recently gaining momentum, expressing itself in many areas of our lives, trying to solve things that were not possible before. We are able to get more answers now, because over the years, we collected fairly huge amount of data as well as our computers, through continuous upgrades, gained lots of computation power, that can be utilized in the cloud to our benefits. All of this gives us an amazing foundation for Machine Learning, so let’s shortly demystify this term.

In essence,”Machine Learning means giving a computer the ability to write its own rules and learn about new things, on its own”. Sounds scary, but how can we literally achieve that? Where to start? Is it something for your or me or it’s rather meant for data scientist who understand complex math and statistics ?

Trying to answer those questions, I’ve decided to write my “Journey to mastery of ML” series. This is going to be a set of articles, from the perspective of avid learner, who wants to nurture Machine Learning topic.

By doing that I want to prove that if something truly interests you, you can learn it, no matter how complex the topic may sound at the beginning or how late you joined the game. Additionally I want to track my unique and personal Learning Path, so I can verify later on how long it took me to master this topic and whether I was persistent enough to get there.

As a side effect, for some of you, my dear readers, it can be also the source of an inspirational material, full of web links, blog posts, books and tutorials descriptions.

I invite you to discover the world of Machine Learning with me. Are you ready?

Continue reading “Journey to mastery of ML – The very beginning”

PHP 7.2 and Argon2 Password Hashing


PHP 7.2 version appeared for the first time on 30th of November 2017, Time goes fast and more than a half year later, on 21st of June 2018, PHP announced 7.2.7 patch release. Among all the new features introduced in PHP 7.2, there is one, namely Argon2 Password Hashing, which will be the topic of our today’s post. Let’s explore this great addition together and verify whether Argon2 is a good contender to Bcrypt or not.

As always, all the other features of PHP 7.2 can be found under Request For Changes wiki page.

Continue reading “PHP 7.2 and Argon2 Password Hashing”

PHP 7.2 and Object Typehint


PHP 7.2 is around the corner.  On the 26th of October 2017, the 5th version of PHP Release Candidate has been announced, which was preceded by 3 alpha, 3 beta and 4 RC versions. First alpha version was announced on the 8th of June 2017 and the final version is about to be released by the end of November 2017.

If you are impatient and curious as I am, it’s right time to take a sneak peak at what PHP team is cooking for us. You can track all implemented features by studying PHP Request For Comments wiki page.

Without further ado, let’s explore the first feature together, an amazing Object Typehint

Continue reading “PHP 7.2 and Object Typehint”

Modern JavaScript syntax – ES6 const variables


ES6 brought lots of new features. Among them is support for constants. Instead of using var while declaring variables, you are now free to choose between const and let.

In this tutorial I will focus primarily on const and its “immutability” quirks, while let will be tackled in the following one. Without further ado, let’s start it off by going through the handful of examples.

Continue reading “Modern JavaScript syntax – ES6 const variables”

How to start using modern Javascript syntax within minutes


Everyone, including browsers, got used to the JavaScript syntax from 90-ties. But time passes by and JavaScript becomes more and more popular, so ECMA, the committee behind the changes in JavaScript, woke up and started to release new features.

The most recent major update to the specification was approved on 17th of June 2015 and is called by many names: ECMAScript 6, ES6, ES2015, and ES6Harmony.

Based on current plans, new specs will be released on a yearly cycle. Please monitor ECMA’s news page, especially changes related to the ECMA-262 document, if you are really interested.

Shall we as developers be excited? Definitely, cause we love bleeding-edge features, however we should also consider the browsers’ compatibility list.

It turns out that main players as Google Chrome, Mozilla Firefox, Apple Safari, and Windows Edge adopt new JavaScript syntax slowly, each one in different pace and priority, so it’s literally impossible to write modern Javascript syntax as it is. So what is the way then?

As you know JavaScript is an interpreted language: the browser interprets the code as text, so there is no need to compile JavaScript. Since we want to use the latest features, we need a way to convert fancy source code into something that poor browsers can interpret. This process is called transpiling, and it is what Babel is designed to do.

In this tutorial I will show you a few easy ways of tinkering with modern JavaScript syntax, without the need of installing anything nor going into complexity of Nodejs, NPM and Module bundlers.

Continue reading “How to start using modern Javascript syntax within minutes”

How to configure Browser Sync live reloading in your current or next Laravel project running on Homestead Virtual Machine


Browser Sync is an open source tool that can instantaneously synchronize your code changes with your browser. As soon as the file is saved, automatic webpage reload happens, without any action from your side.

You could use Browser Sync outside Laravel and without Laravel Mix asset bundler, however in this tutorial I will focus primarily on how to harvest its greatest features with truly minimalistic configuration.

All the hardest work has already been done by Laravel Mix, which lets you incorporate Browser Sync into your project with little effort. If you are interested, Laravel Mix uses Webpack module bundler with plugin browser-sync-webpack-plugin under the hood.

So, do you want to gain some time while developing your current or future Laravel project? If the answer is yes, then let’s start it off right away!

Continue reading “How to configure Browser Sync live reloading in your current or next Laravel project running on Homestead Virtual Machine”

Is it beneficial to add Laravel Collective HTML package into your Laravel project?


Laravel Collective is a set of components that have been removed from Laravel’s core framework and are no longer maintained by Taylor Otwell. Instead there is group of volunteers who decided to maintain following once famous packages:

In this tutorial, we are going to examine laravelcollective/html, trying to verify its usefulness in your future projects. Let’s start then!

Continue reading “Is it beneficial to add Laravel Collective HTML package into your Laravel project?”