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

By Marcia Burrows

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.

A Journey Through PHP Internals

By Alexandru Pitis

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.

Creating Zend Expressive Applications by Hand

By Matthew Setter

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.

SQL Windowing Functions

By Dave Stokes

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.

The Dev Lead Trenches: Burning Out

By Chris Tankersley

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.

Artisinal: Producing Packages, Part One

By Joe Ferguson

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.

Education Station: Producer-Consumer Programming Techniques

By Edward Barnard

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.

Security Corner: Subdomain Takeover

By Eric Mann

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.

Community Corner: Mental Health in the Tech Industry

By James Titcumb

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.

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

By Eli White

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.

Leave a comment

Use the form below to leave a comment: