Author: withinboredom

  • Building a New Type of Database
  • Optimizing CGO handles

    Optimizing CGO handles

    I work on FrankenPHP quite a bit, which is a PHP SAPI written in Go. For the uninitiated, PHP is written in C, so FrankenPHP uses cgo to interface with PHP. This also means that it uses Handles. Just to give you a bit of a background on Handles and what they are used for:…

  • Classifying Pull Requests: Enhancing Code Review Effectiveness

    Classifying Pull Requests: Enhancing Code Review Effectiveness

    In today’s rapidly evolving software development landscape, increasingly complex systems present new challenges in code reviews. As projects grow in size and scope, efficient code review processes become essential to maintain code quality and developer productivity. By understanding and categorizing pull requests (PRs), developers can streamline reviews, improve code quality, and foster better collaboration. Research…

  • Hacking PHP’s WeakMap for Value Object D×

    Hacking PHP’s WeakMap for Value Object D×

    This guide will allow you to use value objects in PHP without a special$obj->equals() method. Instead, you can use the=== or == operator to compare two value objects. This guide will also show you how to use a WeakMap to ensure that you don’tcreate multiple instances of the same value object and how to hack…

  • Algorithms in PHP: Deques (and circular buffers + linked lists)

    If you’ve ever tried to use an array as a queue or stack (via array_pop, array_push, array_unshift and array_shift), you may have discovered they are slow, particularly array_unshift which requires shifting the entire array. Here are the limits of the awesome PHP array: prepending. Prepending to an array is a very costly operation in PHP,…

  • Where is my birthday day?

    I was born on a Wednesday, and for some reason, when my birthday falls on a Wednesday, I always consider it a “special” birthday: a Birthday Day. It’s been a long time since I’ve had a Birthday Day — almost ten years! When I was 12-13 years old, I did some work to discover that…

  • Building DPHP: Authz and Ownership

    Durable PHP is an evolving framework intended for writing scalable, complex code, currently focusing on advanced authorization concepts like fine-grain resource interactions including orchestration and entity management. It provides strict user-resource interaction rules enforced by the system’s infrastructure, enhancing security by limiting access based on ownership and permissions. Special provisions for admin roles allow flexible,…

  • Building DPHP: Distributed Locks

    Durable PHP is an evolving framework designed for creating complex, scalable code, currently exploring distributed locking mechanisms. It facilitates locking multiple entities in a single operation, which poses significant deadlock risks. By adhering to rules like deterministic lock ordering and mandating lock release on orchestration termination, most deadlocks are preventable. The developer also discusses past…

  • Building DPHP: Event Sourcing

    Building DPHP: Event Sourcing

    From the beginning, I knew Event Sourcing would be a big part of Durable PHP, and I learned from several Event Sourced projects I’ve built or worked on over the years. Specifically, I knew what issues any project would have to deal with, and I wanted to create a framework where none of those issues…

  • Building DPHP: What is it?

    Building DPHP: What is it?

    Durable PHP is a framework inspired by Akka, Durable Functions, and Dapr, designed to simplify building complex software and enhance testability. It introduces three main components: Activities, Orchestrations, and Entities. Activities handle side effects and are stateless; Orchestrations manage event-sourced code execution, providing linearity despite non-linear event sequences; Entities maintain core application state and behavior,…