php[architect] logo

Want to check out an issue? Sign up to receive a special offer.

Internal Journeys – October 2018

You may be used to helpers and frameworks which rapidly generate new code at the press of a button. However, understanding what these tools are doing is immensely valuable when they don’t work or you need to develop a lean solution. This month, we’ll investigate how things work under the hood to find new tools and applications for them.

Rapid Prototyping a Board Game with PHP

After designing and coding many computer games, I recently got around to designing and publishing a tabletop game. But wait, a board game is hardware! Using PHP to design a board game seems unconventional. How did that come about? Here’s the project history showing how I used PHP as a tool for rapid prototyping. Given I teach game design and have been a professional game designer for 35 years, I’ll include a few other important principles of game design as well. by Marcia Burrows, The Logical Woman

A Journey Through PHP Internals

In everyday work, it’s easy to forget just how many things are happening under the hood, how many concepts are abstracted away to make our code run and make it run efficiently. It wasn’t always the case—at first, there were languages we now call “assembly languages”—designed to faithfully represent what the CPU will execute, and one had to write these crude lines of machine instructions to make computers execute anything at all. Eventually, new languages emerged which abstracted away a lot of concepts and allowed programmers to focus on the code rather than on the machine for the most part. Among these languages were C and C++, which to this day underlie many other more abstracted languages like PHP, Java, Ruby, Python, and many others. by Alexandru Pitis

Creating Zend Expressive Applications by Hand

Zend Expressive is the latest iteration of Zend Framework. Like a lot of modern frameworks, it supports a lot of command line tooling to make life easier when bootstrapping applications with it. In Zend Expressive’s case, when creating new applications, you can use the Zend Expressive Skeleton Installer to rapidly create a new application that is ready-to-go with basic routing, dependency injection, templating, and error handling. While that can be a logical way to go, it’s not the only way. You don’t need to use the Skeleton Installer. You can create applications by hand. by Matthew Setter

SQL Windowing Functions

Structured Query Language, or SQL, was a boring, ho-hum declarative programming language for many years until the fairly recent additions of common table expressions and windowing functions. CTEs and windowing functions turn SQL into a much more robust programming language which provides increased power for your SQL queries. Most popular databases have them and as you will see windowing functions provide some amazing capabilities for data analytics. by Dave Stokes

The Dev Lead Trenches: Burning Out

Read Article PDF

The tech industry is a double-edged sword. On the one side, we (generally) have well-paying jobs with nice perks, but on the other, we can easily slip into not only boring, repetitive work but figurative death marches. The former is used by most companies as an offset to the latter, but that rarely works out well. This leads many developers to come face-to-face with burnout. Burnout is unhealthy for any individual, but it will kill your team’s productivity, increase turnover, and make it harder to recruit as people learn about the environment at your company. by Chris Tankersley

Artisinal: Producing Packages, Part One

PHP developers can now easily share their code for others to use. You can also easily bundle your application’s domain logic into a package to share between multiple projects. This month we are diving into creating PHP packages and ensuring our packages are held to a high standard of having tests, license information, and other best practices for creating and maintaining high-quality PHP packages. by Joe Ferguson

Education Station: Producer-Consumer Programming Techniques

This month we have a “cookbook” of producer-consumer programming examples. We work through a complete example of timing production web page loads. We then consider techniques for message versioning, funneling, and feature migration. by Edward Barnard

Security Corner: Subdomain Takeover

In a previous issue, we discussed technical debt—the small compromises made by a development team to ship a product. Over time, every team should try to “pay down” this debt by investing time in refactoring, shoring up unit/integration tests, and conducting deeper code audits. Not every form of technical debt is code-related, though. Infrastructure-related debt can accrue as well and be an enticing target for would-be attackers. This month, we take a look at one such exploit: subdomain takeovers. by Eric Mann

Community Corner: Mental Health in the Tech Industry

Mental health issues are prevalent across the globe, in all walks of life. In my anecdotal experience, however, I have observed a huge number of people speaking out about mental health issues they have experienced, speaking in conference talks, in general conversation, and sometimes in private. Whilst I am not a medical practitioner in any form, so cannot give qualified medical advice, I wanted to share my thoughts on mental health in the tech industry. by James Titcumb

finally{}: The Seven Deadly Sins of Programming: Gluttony

Continuing our series on the sins of programming, I want to touch on the sin of gluttony in programming. (And no, I don’t mean to infer anything about the size of our waists.) Over the years, over decades, we have continued to add layers of complexity to our code, under the auspices of making it easier to understand, or easier to maintain. by Eli White