From Monolith to Microservices
The first step in the rebuild of our web platform is a proper foundation: the infrastructure. And our title has already given away the first decision that weβve made: weβre going for microservices.
The first step in the rebuild of our web platform is a proper foundation: the infrastructure. And our title has already given away the first decision that weβve made: weβre going for microservices.
Getting to Know and Love Xdebug
Itβs been 15 years since Xdebug first came out. We think this is the perfect opportunity to re-introduce it to the world, and explain how and why it does what it does.
Itβs been 15 years since Xdebug first came out. We think this is the perfect opportunity to re-introduce it to the world, and explain how and why it does what it does.
PHP and immutability: difficulties and scalars - part one
Being a weakly typed dynamic language, PHP has not really had the concept of immutability built into it. Weβve seen the venerable define() and CONSTANTS of course, but theyβre limited. Whilst PHP does ship with an immutable class as part of itβs standard library, DateTimeImmutable, there is no immediately obvious method to create custom immutable objects.
Being a weakly typed dynamic language, PHP has not really had the concept of immutability built into it. Weβve seen the venerable define() and CONSTANTS of course, but theyβre limited. Whilst PHP does ship with an immutable class as part of itβs standard library, DateTimeImmutable, there is no immediately obvious method to create custom immutable objects.
PHP and immutability: modified copies - part two
There were a few issues to work through, but we got there in the end. Now onto making the immutable class more useful and easier to create modified copies. Note that these are copies and not modifications, in-place, to the original objects.
There were a few issues to work through, but we got there in the end. Now onto making the immutable class more useful and easier to create modified copies. Note that these are copies and not modifications, in-place, to the original objects.
PHP and immutability: objects and generalisation - part three
This one is going to tackle an issue I have hitherto skirted around and avoided. Objects in immutable data structures.
This one is going to tackle an issue I have hitherto skirted around and avoided. Objects in immutable data structures.
Message bus to every PHP application
It is a pattern that enables separate applications to work together, but in a decoupled fashion such that applications can be easily added or removed without affecting the others.
It is a pattern that enables separate applications to work together, but in a decoupled fashion such that applications can be easily added or removed without affecting the others.
Achieving Modular Architecture with Forwarding Decorators
As your web application becomes larger, you certainly start to think more about designing a flexible, modular architecture which is meant to allow for a high amount of extensibility. There are lots of ways to implement such architecture, and all of them circle around the fundamental principles: separation of concerns, self-sufficiency, composability of the parts of an app.
As your web application becomes larger, you certainly start to think more about designing a flexible, modular architecture which is meant to allow for a high amount of extensibility. There are lots of ways to implement such architecture, and all of them circle around the fundamental principles: separation of concerns, self-sufficiency, composability of the parts of an app.
Programming With Yii2: Building Community With Voting, Comments, and Sharing
In today's tutorial, I'm going to show you how to extend Yii to easily mimic a site like Reddit with voting, comments, and sharing.
In today's tutorial, I'm going to show you how to extend Yii to easily mimic a site like Reddit with voting, comments, and sharing.
An open-source web platform for the new President of France
In April 2016, Emmanuel Macron, now President of France, created a political movement called "En Marche!" ("On the Move" in English), initially as a door-to-door operation to ask the public what was wrong with France.
In April 2016, Emmanuel Macron, now President of France, created a political movement called "En Marche!" ("On the Move" in English), initially as a door-to-door operation to ask the public what was wrong with France.
The List Function & Practical Uses of Array Destructuring in PHP
PHP 7.1 introduced a new syntax for the list() function. I've never really seen too much list() calls in the wild, but it enables you to write some pretty neat stuff.
This post is a primer of list() and it's PHP 7.1 short notation, and an overview of some use cases I've been applying them to.
PHP 7.1 introduced a new syntax for the list() function. I've never really seen too much list() calls in the wild, but it enables you to write some pretty neat stuff.
This post is a primer of list() and it's PHP 7.1 short notation, and an overview of some use cases I've been applying them to.
PHP Language Trivia
Some tidbits about weird behavior and/or performance characteristics in PHP
Some tidbits about weird behavior and/or performance characteristics in PHP
Extracting Value Objects
Software systems usually get more complex over time. In the beginning a variable starts out to represent something very simple with very few rules and constraints that can are enforced in a single location of the code.
Software systems usually get more complex over time. In the beginning a variable starts out to represent something very simple with very few rules and constraints that can are enforced in a single location of the code.
Web Developer Security Checklist
Developing secure, robust web applications in the cloud is hard, very hard. If you think it is easy, you are either a higher form of life or you have a painful awakening ahead of you.
Developing secure, robust web applications in the cloud is hard, very hard. If you think it is easy, you are either a higher form of life or you have a painful awakening ahead of you.
Building Searchable Encrypted Databases with PHP and SQL
This question shows up from time to time in open source encryption libraries' bug trackers. This was one of the "weird problems" covered in my talk at B-Sides Orlando (titled Building Defensible Solutions to Weird Problems), and we've previously dedicated a small section to it in one of our white papers.
The question is, How do we securely encrypt database fields but still use these fields in search queries?
This question shows up from time to time in open source encryption libraries' bug trackers. This was one of the "weird problems" covered in my talk at B-Sides Orlando (titled Building Defensible Solutions to Weird Problems), and we've previously dedicated a small section to it in one of our white papers.
The question is, How do we securely encrypt database fields but still use these fields in search queries?
When to be a Software Architect
Many of the constraints I have in my day-to-day job as a developer come from this mysterious world of the software architect. After listening to Martin Fowler on the Ruby Rogues podcast talk about his book Patterns of Enterprise Application Architecture (PoEAA), I decided to pick up a copy (i.e. I ordered it from Amazon) and read a bit more into architecture. Not understanding the domain very well, I also watched a few talks and read a few different articles trying to get a feeling for the important aspects.
Many of the constraints I have in my day-to-day job as a developer come from this mysterious world of the software architect. After listening to Martin Fowler on the Ruby Rogues podcast talk about his book Patterns of Enterprise Application Architecture (PoEAA), I decided to pick up a copy (i.e. I ordered it from Amazon) and read a bit more into architecture. Not understanding the domain very well, I also watched a few talks and read a few different articles trying to get a feeling for the important aspects.
Microservices Migration: Lessons Learned
βMicroservicesβ is a buzz word that has been going around the tech space in recent times. We ultimately decided to migrate to a microservices architecture and want to share why we did it, how we did it, and what we learned along the way.
βMicroservicesβ is a buzz word that has been going around the tech space in recent times. We ultimately decided to migrate to a microservices architecture and want to share why we did it, how we did it, and what we learned along the way.
Expressive Code & Real Time Facades
Recently, I worked on some code that surfaced my most common use-case for Laravel 5.4βs βreal-timeβ facades. If youβre not familiar with this feature, it allows you to use any of your applicationβs classes as a Laravel βfacadeβ on-demand by prefixingFacades to the namespace when importing the class. This is not a feature that is littered throughout my code, but I find it occasionally provides a clean, testable approach to writing expressive object APIs.
Recently, I worked on some code that surfaced my most common use-case for Laravel 5.4βs βreal-timeβ facades. If youβre not familiar with this feature, it allows you to use any of your applicationβs classes as a Laravel βfacadeβ on-demand by prefixingFacades to the namespace when importing the class. This is not a feature that is littered throughout my code, but I find it occasionally provides a clean, testable approach to writing expressive object APIs.
Best practices for handling exceptional behavior
Dealing with exceptional situations is often neglected aspect of application development. For most, the first association of the notion is throwing/catching exceptions, but actually it is quite a broad topic.
Dealing with exceptional situations is often neglected aspect of application development. For most, the first association of the notion is throwing/catching exceptions, but actually it is quite a broad topic.