Latest Updates

Documenting code, one commit at a time.

Enhancing Application Logging with Tenant Context

Introduction

Effective logging is crucial for monitoring and debugging applications, especially in multi-tenant environments. This post explores how to enhance application logging by incorporating tenant-specific context, enabling better isolation and analysis of log data.

The Importance of Tenant-Aware Logging

In a multi-tenant system, logs from different tenants are often interleaved,

Read more

The Pitfalls of Premature Optimization

Developers often strive for efficiency, but sometimes, optimizing too early can lead to more problems than solutions.

The Danger of Early Optimization

Optimizing code before understanding its performance bottlenecks can waste time and introduce unnecessary complexity. It's tempting to micro-optimize, but it's crucial to identify the actual performance-critical sections first.

Read more
PHP Laravel OOP

Extending Models with Method Overrides: A Case Study

Sometimes, the core functionality of a framework needs a little customization to perfectly fit the nuances of a specific application. Recently, we faced a situation where we needed to extend our Tenant model to directly handle subscription checks, which required overriding some core Cashier methods.

The Challenge

Our application uses a multi-tenant architecture. Each tenant needs to manage

Read more

Enhancing Data Retrieval Robustness in Data Processing Services

Introduction

This article outlines an approach to enhance the resilience of data processing components when interacting with database tables, specifically addressing scenarios where tables might be temporarily unavailable or not yet provisioned in certain environments.

The Challenge

In dynamic environments, data processing tasks sometimes encounter situations where expected database

Read more

Adding Full-Text Search to Your Portfolio with PostgreSQL

Implementing full-text search can significantly enhance the user experience of your portfolio or blog. This post details how to add PostgreSQL-powered full-text search to a Laravel application, focusing on accent-insensitive prefix searching across multiple fields.

The Problem: Basic Search Limitations

Simple LIKE queries in SQL often fall short when dealing with complex search

Read more

Fixing Silent GitHub Scope Update Failures

When integrating with GitHub, users sometimes encounter issues when updating the granted permissions (scopes). A recent update addresses a scenario where these updates would silently fail, leaving users confused.

The Problem

When a user attempted to update their GitHub scope (e.g., from public-only access to all repositories) via the integrations page, a failure in the Socialite OAuth

Read more
PHP MySQL Laravel

Code Formatting and Database Schema Updates

Overview

Recent development activity focused on code style consistency and updates to the database schema.

Code Formatting

Applied automated formatting fixes using php-cs-fixer. This ensures consistent code style across the project, improving readability and maintainability. The tool automatically adjusts spacing, indentation, and other stylistic elements according to predefined rules.

Read more
PHP MySQL Laravel

Tenant-Based Billing: Fixing Cashier Customer Model

Introduction

After consolidating billing to a tenant-based system (Phase 3), we encountered an issue with the Cashier package. The default customer model was still set to User, causing errors when Stripe webhook events triggered.

The Problem

The stripe_id column, expected by Cashier, was not found because it was looking in the User model instead of the Tenant model.

Read more

Extending Horizon Job Retention for Enhanced Monitoring

Introduction

We've increased the retention period for jobs within Laravel Horizon, our Redis-powered queue monitoring dashboard. This enhancement provides a more comprehensive view of queue activity, aiding in debugging and performance analysis.

The Problem

Previously, Horizon was configured to trim recent, pending, and completed jobs after only 60 minutes.

Read more