What's new and changing in PHP 7.3

Ayesh Karunaratne made a good summary of the new stuff coming in PHP 7.3 which will be released by the end of the year.

This is a live document (until PHP 7.3 is released as generally available) on changes and new features to expect in PHP 7.3, with code examples, relevant RFCs, and the rationale behind them, in their chronological order.

https://ayesh.me/Upgrade-PHP-7.3

The trailing comma in function and method calls seems nice!

Read more

Combing legacy code string by string

Mattias Noback gives some good tips for refactoring legacy code.

"Combing" legacy code by untangling the strings is a good way to improve it and take back control over it. In existing legacy code, you should stop (re)using existing methods, making them ever more generic. Instead, you create new methods, and copy code from existing ones, allowing you to simplify this copied code and end up with a manageable class.

https://matthiasnoback.nl/2018/04/combing-legacy-code-string-by-string/

Read more

Join 9,500+ smart developers

Get my monthly newsletter with what I learn from running Spatie, building Oh Dear, and maintaining 300+ open source packages. Practical takes on Laravel, PHP, and AI that you can actually use.

No spam. Unsubscribe anytime. You can also follow me on X.

FP vs. OO

In a new post Uncle Bob explains that you shouldn't have to choose between functional programming and object orientation.

In this blog I will make the case that while OO and FP are orthogonal, they are not mutually exclusive. That a good functional program can (and should) be object oriented. And that a good object oriented program can (and should) be functional. But to accomplish this goal we are going to have to define our terms very carefully.

http://blog.cleancoder.com/uncle-bob/2018/04/13/FPvsOO.html

Read more

How CircleCI Improved Our Build Time

In a new post on his Medium Blog, Laravel.io maintainer Dries Vints wrote how he managed do drastically improved the build time of the popular forum.

CircleCI 2.0’s builds run with Docker which makes spinning up new instances super fast. If you use pre-built images which are customized to your needs, you don’t even need to do any provisioning during the build which saves you quite a bit time. Pulling various images and orchestrating them in a CircleCI 2.0 config allows for very rapid build times. If you add their new workflows to their mix you could easily enable parallelization and speed things up even more.

https://medium.com/laravelio/how-circleci-improved-our-build-time-8d5c40b8cc60

Read more

What PHP can be

My colleague Brent shares some interesting thoughts on which direction PHP could go forward.

Let's take, for example, the debate about strong types in PHP. A lot of people, including myself, would like a better type system. Strong types in PHP would definitely have an impact on my daily work. Not just strong types, I also want generics, better variance and variable types. Improvements to PHP's type system in general would have quite the impact on my programming life. So what's stopping us from reaching a solution?

https://www.stitcher.io/blog/what-php-can-be

Read more

How to use Laravel with Socket.IO

Most of the UI in my sideproject Oh Dear! is realtime. Because there is a vast amout of events being broadcasted using Pusher would be too expensive at this stage. So for our broadcasting we use socket.io and laravel-echo-server mentioned in the article below.

I had this challenge where I needed it to show a list of people who are currently viewing a specific URL in Laravel. So I started thinking. Part of me wanted to do a quick hack (luckily that’s not the strongest side of mine), whilst the other wanted to build something cool, reusable and long-lasting.

https://medium.com/@adnanxteam/how-to-use-laravel-with-socket-io-e7c7565cc19d

Read more

Creating custom stream filters in PHP

In this post we will see how to create a custom stream filter. Streams, first introduced in PHP 4.3, provide an abstration layer for file access. A number of different resources besides files – like network connections, compression protocols etc. can be regarded as “streams” of data which can be serially read and written to.

https://www.codediesel.com/php/creating-custom-stream-filters/

Read more

Examples of everything new in ECMAScript 2016, 2017, and 2018

It’s hard to keep track of what’s new in JavaScript (ECMAScript). And it’s even harder to find useful code examples. So in this article, I’ll cover all 18 features that are listed in the TC39’s finished proposals that were added in ES2016, ES2017, and ES2018 (final draft) and show them with useful examples.

https://medium.freecodecamp.org/here-are-examples-of-everything-new-in-ecmascript-2016-2017-and-2018-d52fa3b5a70e

Read more

Learn to create an RSS Feed from scratch in Laravel

Over at Laravel News Paul Redmond, author of Docker for PHP developers, wrote a good post on how to use our RSS package to add a feed to a Laravel app.

Creating an RSS feed in Laravel isn’t the most challenging task, but using a package and a few tips can help you create an RSS feed relatively quick.

We are going to use the spatie/laravel-feed package to walk through going from a brand new Laravel 5.6 project to serving RSS feeds.

https://laravel-news.com/learn-to-create-an-rss-feeds-from-scratch-in-laravel

Read more

Certificate Transparency, an introduction

Scott Helme, creator of securityheaders.io, wrote a good introduction to certificate transparency.

Certificate Transparency is an open framework for monitoring and auditing the certificates issued by Certificate Authorities in near real-time. By requiring a CA to log all certificates they generate, site owners can quickly identify mis-issued certificates and it becomes much easier to detect a rogue CA.

https://scotthelme.co.uk/certificate-transparency-an-introduction/

Oh Dear!, my side project leverages certificate transparency logs to send you a notification as soon as a new certificate is issued for your domain.

Read more

Building Blocks

Steven Vandevelde wrote a beautifully illustrated post on some cool functional concepts.

This is a more visual approach to the topic of purely-typed functional programming. What does it mean to have a “functional” programming language? What are types? What makes a functional-programming language “pure”? These are the questions we will answer here, with a focus on simplicity.

https://icidasset.com/writings/building-blocks/

Read more

1.1.1.1 is the new 8.8.8.8

For years I've used Google's public DNS service. It's famous IP address is 8.8.8.8. It's a resolves addresses faster that my internet provider.

Yesterday Cloudflare launched their DNS service which promises to be faster and better for your privacy. It has an awesome IP address: 1.1.1.1. Here are some benchmarks.

Unfortunately, by default, DNS is usually slow and insecure. Your ISP, and anyone else listening in on the Internet, can see every site you visit and every app you use — even if their content is encrypted. Creepily, some DNS providers sell data about your Internet activity or use it target you with ads. We think that’s gross. If you do too, now there’s an alternative: 1.1.1.1

The announcement: https://blog.cloudflare.com/announcing-1111/

More info + how to set it up on your device: https://1.1.1.1/

Read more

Doing less original

by Freek Van der Herten – 6 minute read

Last week I stumbled upon this article titled "GitLabbers share how to recognize burnout". It list these points to recognize burnout: You're constantly tired You no longer enjoy things Your job performance suffers Your relationships are strained (You have a hard time remembering…

Read more