PHP 7 at Tumblr

Another big boy on the web upgraded to PHP 7. If you're not yet on the train heading for PHP7-ville, best get your ticket soon, you won't regret it.

At Tumblr, we’re always looking for new ways to improve the performance of the site. This means things like adding caching to heavily used codepaths, testing out new CDN configurations, or upgrading underlying software. Recently, in a cross-team effort, we upgraded our full web server fleet from PHP 5 to PHP 7. The whole upgrade was a fun project with some very cool results, so we wanted to share it with you.

https://engineering.tumblr.com/post/152998126990/php-7-at-tumblr

Read more

Laravel service provider examples

On his blog Barry van Veen listed some examples of things you can do within a Laravel service provider.

Currently, I'm working on my first Laravel package. So, it was time to dive into the wonderful world of the service container and service providers.

Laravel has some great docs about, but I wanted to see some real-world examples for myself. And what better way than to have a look at the packages that you already depend on?

This post details the different things that a service provider can be used for, each taken from a real open-source project. I've linked to the source of each example.

https://barryvanveen.nl/blog/34-laravel-service-provider-examples

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.

Testing interactive Artisan commands

For a new package I'm working on I had to test some Artisan commands. The commands I want to test contain calls to ask and confirm to interactively get some input by the user. I had a little trouble finding a way to tests such commands, but luckily a blogpost by Mohammed Said pointed me in the right direction, which was to leverage partial mocks.

Here's the most interesting part, Artisan Commands can ask the user to provided specific pieces of information using a predefined methods that cover all the use cases an application might need. ... So we mock the command, register the mocked version in Kernel, add our expectations for method calls, and pretend the user response in the form of return values. ...

http://themsaid.com/building-testing-interactive-console-20160409/

Read more

On Being Explicit

Mathias Verraes, one of the organizers of DDD Europe, recently gave a talk at DDD London on how to name things to both improve your code and to improve communication with the business.

“Make the implicit explicit” must be one of the most valuable advices I ever got about software modelling and design. Gather around for some tales from the trenches: stories from software projects where identifying a missing concept, and bringing it front and centre, turned the model inside out. Our tools: metaphors, pedantry, type systems, the age old heuristic of “Follow the money”, visual models, and a healthy obsession with language.

https://skillsmatter.com/skillscasts/8806-ddd-meetup

Read more

Does code need to be perfect?

Andreas Creten explains his view on wether you should always try to write perfect code. Spoiler: no.

The engineers want to write perfect code using the latest techniques, make sure that the code is well documented so they can fully understand how everything works and that it has tests so they can easily update things later. Product owners on the other hand just want things to be done, fast and cheap, so they can ship new features or convince new clients. How can you make these conflicting views work together?

https://medium.com/we-are-madewithlove/does-code-need-to-be-perfect-a53f36ad7163

Read more

Some people to follow on Twitter original

by Freek Van der Herten – 2 minute read

There are a lot of developers active on Twitter. Most of them tweet out interesting links, their opinions or stuff they're working on. I think Twitter is an excellent tool to stay in touch with what's going on in the Laravel and PHP community. If you're looking for some people to follow here are…

Read more

How I Learned to Stop Worrying and Love Giving a Talk

Iain Poulson wrote a good article on public speaking.

"But Speaking Is For Experts" This is a common fallacy that needs to be dispelled if you are to get up and start speaking. Conference speakers are not necessarily experts that know more than you. They are just people who have stood up! ... Anyone can do a talk, regardless of your background and skills – you have something to offer.

https://deliciousbrains.com/stop-worrying-love-giving-a-talk/

Read more

A magic memoization function original

by Freek Van der Herten – 4 minute read

Last friday Taylor Otwell tweeted an easy to use memoization function called once: Wanted a slick way to generalize class method memoization. Y'all don't even want to know how it works. ? ? pic.twitter.com/xRJAY1C14y— Taylor Otwell (@taylorotwell) November 4, 2016 Taylor was kind…

Read more

How to open source at Zalando

Zalando, a large online fashion plaform, published it's guidelines around open source creation and usage.

Why Open Source? Because it can: improve quality, mitigate risk, increase trust, save us money, expand our technology choices, be fun, enable us to give back to the community, strengthen our tech brand, and attract talent. ... Do “Open Source First”: If your Zalando project can also be useful to non-Zalandos, release it as open source from the start.

https://github.com/zalando/zalando-howto-open-source

Read more

Building a switch Blade directive

Inani El Houssain created a switch Blade directive. It's a good primer if you want to learn how to create Blade directives yourself.

One of the good points of Laravel’s framework is that it allows you to make your own components, macros and directives. so today we will make use of Laravel’s Custom Blade directives and make something good.

https://medium.com/@InaniT0/build-your-own-switch-statment-using-laravels-custom-blade-directives-218244e41a7c

Read more

Creating a multiplayer snake game in PHP

On the sitepoint blog Bruno Skvorc explains some of the inner works of the PHP version of snake created by Andrew Carter.

At a recent conference in Bulgaria, there was a hackathon for which Andrew Carter created a PHP console version of the popular “snake” game.

I thought it was a really interesting concept, and since Andrew has a history of using PHP for weird things, I figured I’d demystify and explain how it was done.

https://www.sitepoint.com/howd-they-do-it-phpsnake-detecting-keypresses/

Read more

Structuring PHP exceptions

Alain Schlesser wrote an article on how to manage exceptions in a large codebase.

I seem to constantly work on improving my habits regarding the use of exceptions. I think it is an area that I haven’t yet fully explored, and it is very difficult to find anything more than very basic explanations and tutorials online. While the consensus is to use exceptions, there is very little information on how to structure and manage them in a larger codebase. The larger and more complex your projects become, the more important it is to start with a proper structure to avoid expensive refactoring later on.

https://www.alainschlesser.com/structuring-php-exceptions/

In my opinion a good exception message in most cases contains three things:

  • the reason why something went wrong
  • the data that caused the problem
  • suggestions on how to solve the problem

Named constructors for exceptions are the perfect place to build up such a message. Want to learn more? Ross Tuck wrote a good blog post on the subject too.

Read more

An opinionated tagging package for Laravel apps original

by Freek Van der Herten – 4 minute read

There are a lot of quality tagging packages out there. Most of them offer the same thing: creating tags, associating them with models and some functions to easily retrieve models with certain tags. But in our projects at Spatie we need more functionality. Last week we released our own - very…

Read more

How to refactor code with PhpStorm

Matthew Setter demonstrates PhpStorm's handy refactorings. Personally I use "extracting code to a new method" quite a lot.

Refactoring covers a range of different techniques, including moving, extracting, copying, deleting, and renaming. These cover all the types of changes which you are likely to make to your code on an ongoing basis.

Gladly, PhpStorm’s refactoring functionality, which is included as part of the core package, has support for all of these. In this tutorial, I’m going to step through a couple of them; specifically:

  • Extracting code to a new method
  • Renaming a function
  • Changing a function's signature

https://www.matthewsetter.com/refactoring-code-with-phpstorm/

Read more

Varnish explained

Varnish is a piece of software that, amongst other things, can make your website much faster. In a new post on his blog, Mattias Geniar tells you all about it.

Varnish can do a lot of things, but it's mostly known as a reverse HTTP proxy. It brands itself as an HTTP accelerator, making HTTP requests faster by caching them. ... Varnish is usually associated with performance, but it greatly increases your options to scale your infrastructure (load balancing, failover backends etc) and adds a security layer right out of the box: you can easily let Varnish protect you from the httpoxy vulnerability or slowloris type attacks.

https://ma.ttias.be/varnish-explained/

Be sure to watch Mattias' excellent talk he gave at this years Laracon:

Read more

Top 5 programming fonts

Eric L. Barnes of Laravel-news and dotdev fame, did a little research on the most used fonts for programming.

Everyone has their ideal development setup, and many have spent countless hours customizing it to perfectly suit their needs. Outside of a color scheme, the next typical change is the font in use and every year new fonts are introduced giving us more to choose from than ever before.

To find out what everyone is using, I asked on Twitter and Facebook and had a ton of responses. Based on the answers here is a list of the top 5 programming fonts in use today

https://laravel-news.com/2016/10/top-5-programming-fonts/

I'm a big fan of Fira Code myself. It has some nice ligatures and it just looks very good. Here it is in action in my IDE:

screen-shot-2016-10-21-at-23-56-34

Read more