Skip to content →

Jesper Jarlskov's blog Posts

November-2017.php

Oh yes, Unix

The Unix philosophy focuses on minimalist, modular software. A beautiful example of this is the yes command, which repeatedly prints the character ‘y’. This sounds really simple, but Matthias Endler wrote a little story about the yes Unix command where he dives into writing his own copy of the tool and runs into some quite interesting issues.

PHP Versions Stats

Once again Jordi Boggiano has released the PHP version stats collected from packagist.org.

Software architectures, putting it all together

Last month I mentioned Herberto Graca‘s Event Driven Architecture article. The article is a part of a larger theme on software architecture. In his new article DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together he talks about just that, putting it all together.

PHP 7.2 release

The release of the newest feature release of the PHP 7 branch, PHP 7.2 has been announced. All new features can be found in the PHP 7.2 RFC and more details on the changes and upgrading can be found in the PHP 7.2 migration guide

Some notable features worth mentioning are:

Leave a Comment

October-2017.php

Asynchronous stack traces: why await beats .then()

First up, Mathias Bynens has an interesting look into how JavaScript stack traces are generated, and why await beats .then() when it comes to debugging.

Writing speaking code & ineffective coding habits

As always I’ve been watching a bunch of recorded talks, but two of them really spoke to me. The first one is Caleb Porzio’s talk at this year’s Erie Day of Code. His talk Writing Code That Speaks reiterates how code is written way more times than it’s written as he dives into the language expressed in the code.

The second talk is Kevlin Henney‘s talk from the 2016 Istanbul Teck Talks where he discusses Seven Ineffective Coding Habits that makes code harder to maintain.

HTTP/2 and APIs

I’ve previously written about some of the advantages of HTTP/2, and I’m generally a proponent of the protocol upgrade. In his article Let’s Stop Building APIs Around a Network Hack Phil Sturgeon argues how HTTP/2 will help make APIs simpler and more performant, by deprecating concepts like compound documents.

Event-Driven Architecture

In his article about Event-Driven Architecture Herberto Graca gives some background to the concept and some of it’s advantages and disadvantages. He also has some interesting examples of where using events can help clean an application’s structure, as well as where it shouldn’t be used.

Software architecture is failing

On a more negative note Alex Hudson has a piece claiming that Software architecture is failing in which he argues that some architectural patterns are being hyped so much that we as developers forget to be critical when choosing which makes sense for the problem we’re trying to solve.

Leave a Comment

September-2017.php

Another month is coming to an end, and again that means I’ll try to summarize some of the most interesting articles I’ve read. Because of holidays, it’s been a pretty short month for me work-wise. That also means that this month’s list is pretty short, but the content is really high quality.

For a while, I’ve been considering how to prevent my controllers to get too bloated. Laravel 5.5 introduces the responsable interface, which I believe will help provide a nice convention for where to put the logic that often ends up in the controllers. Another option suggested by Jens Segers, is to turn the normal entity-based controllers into callable request handlers, narrowing their focus, which I also think is an interesting approach.

I first heard about Event Sourcing at last year’s Laracon EU at Mitchell van Wijngaarden’s talk Future is a thing of the past. Mitchell’s background was very theoretic, though, meaning that at the time he hadn’t built any large-scale applications using the approach. That’s why I found it really interesting when Barry O Sullivan wrote his article Event Sourcing: What it is and why it’s awesome, providing an introduction to the concept of event sourcing, from somebody who works with it in the trenches of every day development.

I also found this list of 5 interesting Vuex plugins, for the Vue state management plugin Vuex.

Leave a Comment

August-2017.php

Once again a month is coming to an end and, as is becoming the habit, I’ve gathered a bunch of interesting tech articles that caught my eye during the last month.

First up, Matthias Noback has a 3-part series about his approach to application architecture and layered architecture. First part is a preface where he tells about his early experiences, and how he became interested in layered architecture. In the second part, he talks about layers and gives an outline of what a layered architecture is, and how he approaches the class structure in his applications. In the third and last article, he talks about ports and adapters, and he goes more into depth with how he handles communication between different layers of his applications.

Josh Justice from CodingItWrong has an interesting piece about his experiences with adding functional programming to his toolbox, on top of his existing knowledge on OO programming.

Christian Maioli writes about a project he took over. The people who had written it was really solid and experienced developers, but the project still ended up being a complete mess. This made him consider some of the barriers that can be set for developers, and some of the things that can cause terrible code to be written by perfectly sane people.

On a more curious note, Bruno Skvorc posted an article where he introduces bitwise operators, and whether they’re still relevant today. Bitwise operators, in my view, is a pretty core concept and knowing more about where the technology comes from helps make it easier to understand how stuff works, so I’d definitely recommend giving it a read, whether you’ll be needing bitwise operators or not.

Laracon US was held about a month ago, and now the videos are available. The page itself doesn’t provide a lot of info about the talk, besides the name or company of the speaker, and the website itself is not at all helpful in that regard, but luckily Sid K has done a Laracon US 2017 recap where he provides a short description of all of the talks, to give some hints to which might be of interest.

Laracon EU just ended, and as what seems to be becoming a habit, Taylor Otwell spent some of his conference time finishing up the new Laravel release. This means that Laravel 5.5 LTS has been released.

Leave a Comment

July-2017.php

Even though July was a pretty quiet month online due to everybody being on vacation, I still came across some interesting articles.

Earlier in the year, there was a big discussion in the PHP community after some people suggested that pretty much everything in your code was cruft, and that code should be as concise as possible. One argument for being the opposite is to type-hint all the things which present an argument for how type hinting reduces the cognitive load of reading code.

In security training, Brute Logic presents The 7 main XSS cases everyone should know.

We’ve recently moved our entire front-end build process at work to WebPack. This has very much been a black box to me, so I was happy to see WebPack core contributor Sean Larkin announce his new online course WebPack the core concepts.

Of course, there’s also something Laravel related. First a tweet by Mohammed Said, subtlely announcing a nice new way for queue jobs in Laravel to determine whether they should actually go to the queue.

Matt Stauffer posed the question What packages do you install on every Laravel application you create?. The result is a list of interesting packages I’d recommend looking through. Most of them are not Laravel specific, so other PHP developers might find something interesting as well.

Leave a Comment

June-2017.php

Summer is on, June is over, and it’s time for yet another summary of a month passed. This month’s focus will be on PHP and Laravel, with an emphasis on performance, but many of the tricks are also useful if you work with other technologies. There’s also a gem about database encryption.

I’ve had a hard time finding a proper plugin to provide proper syntax highlighting and folding capabilities when working with JavaScript, but Vim-vue seems to meet most of my needs when working with Vue components, finally!

The entire symfony.com frontend was refactored. This provided a lot of useful insights that was documented in a post on refactoring the symfony.com frontend. This process also formed the basis for the new Symfony frontend component, a Webpack wrapper and asset manager Webpack Encore which will be introduced in a coming version of Symfony.

StyleCI founder Graham Campbell has an interesting post on the architecture of a Laravel package. Besides the Laravel specifics it also contains some interesting points on advanced composer usage.

Performance is always an interesting topic. Chris Fidao from the awesome Servers for Hackers released a new section dedicated to Laravel Performance. The focus is on low-hanging fruits, and I believe most people will find something they can do right now to improve the performance of their application. Even though the emphasis is on Laravel, most of the tips are around object caching that can be used on any PHP projects, and different database optimisations, that can be used in any project where a database is in use.

Olav van Schie also has a performance focus in his Make your Laravel app fly with PHP OPCache. Again, even though the title says Laravel, OPCache optimisations can help improve performance on any PHP project, and the article gets a bit deeper into how to set up your OPCache settings.

The last article of the month focuses on security. Scott Arciszewski from the Paragon Initiative has a very interesting article about Building searchable encrypted databases. He both talks about the implementations of database encryption, both good and bad, and how to setup your database to make it possible to search your encrypted data in a performant way, without lowering your security.

Leave a Comment

May-2017.php

The month of May is over, and as usual, it’s time for a summary of interesting tech related articles I’ve found during the month.

We start out with some numbers. Jordi Boggiano published a new updated version of his PHP version stats. A range of stats on the PHP version usage, based on the install stats on packagist.org. This does not comprise the full worldwide PHP usage, but provides some nice insights on the current trends.

On a meta-programming note, Robert Basic posted an article about how open source taught him to work with legacy code. It provides some nice points about working with legacy code and the thoughts of the people who came before you.

DHH posted an interesting view on his love of the implicit parts of programming. A nice piece about questioning common assumptions and defining best practices around your actual context, instead of expecting the same best practices to be the best in every circumstance.

On the geeky side, I really enjoyed a Stack Overflow response explaining the difference between language constructs and built-in functions. It is not knowledge that is useful in a programmer’s day-to-day life, but it’s always good to know more about how your tools actually work.

Leave a Comment

April-2017.php

April is almost over, and it’s time for another monthly roundup of interesting articles and links.

During the month I’ve read some interesting articles providing a pretty good spread ranging from introductions to JavaScript tools over best practice for working developers to a deep dive into the PHP engine.

The world of JavaScript tooling and frameworks seems to be an ever moving target, even so, the purpose of these tools is to make the everyday life of developers easier. Npm seems to be something like a current de facto standard for JavaScript package management. Sitepoint posted a beginner’s guide to npm, which gives a bit more background info for people who wants to know a bit more than how to write npm install.

At our company we recently switched to the Webpack module bundler, it’s been working quite well, but it was interesting to read Tutorialzine’s learn Webpack in 15 minutes and gain a few more insights into how it all works.

JavaScript as a language is also a moving target. The latest version is ECMAScript 2015 (aka. ES2015, aka. ES6), if you want to know more about what’s new in this new version, you can Learn ES2015 with Babeljs.

On a more general development note, TechBeacon published an article called 35 bad programming habits that make your code smell. Despite the link batish title, the article contains some good points about bad programming habits worth keeping in mind when doing your development.

Developers often complain about having to maintain other peoples’ code, and sometimes you get the impressions that only greenfield projects are fun to work with. Tobias Schlitt from Quafoo has some very interesting points about the advantages of improving existing code bases in his Loving Legacy Code. I think the article presents some really interesting advantages that are often forgotten when we get too focused on the code itself.

I’ve written a few deployment scripts by myself, but it’s always interesting to learn about other peoples’ experiences, Tim MacDonals has some interesting points in his Writing a Zero Downtime Deployment Script article.

It’s always interesting to know how our tools actually work internally. Even though it’s a bit too low level for me I always find Nikita Popov‘s PHP internals articles interesting, the same goes for the new deep dive into the PHP 7 Virtual Machine.

As a last thing I’d like to share a PHP library that I’d like to play around with; Spatie’s Crawler a PHP library for crawling websites. I could imagine this would work well together with Fabian Potencier’s Goutte web scraper library. I currently use Goutte for a small “secret” side project I call Taplist, a web scraper that scrapes the websites of beer bars in Copenhagen, to collect the lists of what’s currently on tap in the bars in one place.

Leave a Comment

March-2017.php

The month of march is ending, so it’s time for this month’s roundup of recommended reads. This month consists of 3 main topics: PHP, JavaScript and project management.

Even though I work a lot with PHP there’s always something new to learn. I’ve previously dived a bit into how Composer works. Earlier in the month my attention was called towards the Composer documentation, namely the part about autoloader optimization, which features hints on how to make the Composer autoloader work faster in your production environment.

I’m working a lot with JavaScript these days, especially with the Vue framework. A lot of stuff is currently happening in the JavaScript space, and I’m struggling to both get updated and keep at least partly on top about what’s going on in that space.

JavaScript ES6, aka. ECMAScript 2015 is the newest version of the ECMAScript standard and comes with a bunch of new features. Sitepoint has a nice article about 10 ES6 native features that you previously needed external libraries to get. They also have a quick rundown of 3 JavaScript libraries to keep your eyes on in 2017, including the before mentioned Vue.

“Awesome”-lists, curated lists of links somebody finds noteworthy, seems to be the big thing on Github these days. So much so that there is even awesome awesomeness meta listsa popping up. Any respectable (and all other) technology seems to have at least one dedicated awesome list, and of course, there is also an awesome Vue list.

When working with a Framework and a related template engine, there is usually a standard way of sharing data between the application and the frontend. But as the physical distance between the front- and the back-end of an application grows, with more functionality moving to the browser, sharing data gets a bit more complex. Jesse Schutt has a nice article about some different strategies for sharing data between Laravel and Vue applications, but despite the name, the strategies are applicable to any application where the back-end and front-end are separated and needs to share data.

On a less technology focused note PHPStan author Ondřej Mirtes wrote a nice article on How PHPStan got to 1000 stars on Github. Despite the rather click baitish title, the article has some really nice points on how to keep your focus on building, launching and growing an open source project and the community around it. Most of the points are very relevant in any development process, not only for open source projects, and they’re definitely worth being aware of.

On the same project building, I stumbled upon an article about the self-limiting habits of entrepreneurs, which is also worth a read for anybody trying to build a project, open source or otherwise.

Leave a Comment

February-2017.php

February is coming to a close, and it’s time for a monthly round-up.

Even though February is the shortest month of the year I doubt it will be the least eventful. Especially the security scene has been on fire this month, and I doubt we’ve seen the final debris of this.

The month gave us two major security related findings from Google.

First, they announced the first practical way to create SHA-1 hash collisions, putting the final nail in the coffin for SHA-1 usage in any security relations.

Later in the month, Google’s security research team, Project Zero, announced how Cloudflare’s reverse proxies would, in certain cases return private data from memory, a bug which came to be known as Cloudbleed. The Google researchers worked with Cloudfare to stop the leak, but according to Cloudfare’s incident report, the issue had been open for a while.

On a slightly different note. Laravel is popular PHP framework. Articles online about the framework seems to be about equal amounts of hype, and belittlement. Earlier this month a critical analysis of Laravel were going its rounds in the Twittersphere. I believe it provides a nice description of the pros and cons of Laravel, without falling for neither the hype nor the hatred that is often displayed in framework discussions in general, and Laravel discussions in particular.

As a lead developer, I spend a lot of time thinking about and making decisions on software architecture. So it’s always nice with some inspiration and new ideas. Even though it’s a rather old article by now, I believe Uncle Bob has some nice points when discussion Screaming Architecture, when he points out that the architecture of a piece of software should make it obvious what the software does, rather than which framework it’s built upon.

Developers seem to find incredible performance gains when upgrading to PHP 7, all from Tumblr reporting more than 50% performance improvement to Badoo saving one million dollars per year in saved hosting and server costs. For the nerds out there, PHP core contributor Julien Pauli did a deep dive into the technical side of PHP 7’s performance improvement.

On the topic of performance, I found Sitespeed.io, a collection of open source performance testing/monitoring tools, that I’d like to look more into.

Want to know more about what’s going on in the PHP community? Here is a nice curated list of PHP podcasts.

Leave a Comment