CSEND: P2P Chatting Across the Decades

A graphical user interface for the QEMU virtual machine emulator, showing a window with various controls and information related to the virtual machine.

It's been super rewarding diving back into C programming lately, and the main focus has been my little project, `csend`. It's a peer-to-peer chat application I've been tinkering with. The big idea is to get it running smoothly on different systems, specifically modern POSIX platforms like Linux, and, for a bit of a retro challenge, classic Mac OS.


Getting back into C programming

A vintage Apple Macintosh SE personal computer with a CRT display and a beige, boxy design.

Having finished the core features of Willow CMS I was thinking about starting up a second side project. I was tinkering on my Mac SE and wondered what it would be like to write software on it. It was about 25 years ago that I last fired up CodeWarror on a Power Macintosh 7500 and first tinkered with C/C++ and about 20 since I last actually studied it at university. I decided to have a crack at it by aiming to write a peer-to-peer chat application. I'll start by making it work on Ubuntu, then modern macOS and hopefully in the not too distant future System 6 using the Think C IDE.


Understanding the CakePHP Queue Plugin and Jobs

A large crowd of people dressed in medieval-style clothing, including robes, cloaks, and hats, walking in a procession through an ornate, dimly lit cathedral-like structure with arched ceilings and sunlight streaming through the windows.

In this post, we look at how to use CakePHP's Queue Plugin to efficiently manage and execute background tasks. We'll explore the structure, implementation, and benefits of this approach, with a focus on the `src/Job` directory and related components of Willow CMS.


Building "MarkItLikeItsHot": A FastAPI Wrapper for Microsoft's MarkItDown Conversion Engine

A bearded chef in a rustic kitchen carefully preparing a beef wellington dish, with pastry dough, herbs, and other ingredients visible on the counter.

This post details the development of a Python microservice named “MarkItLikeItsHot,” designed to streamline content conversion into Markdown within Willow CMS. This microservice uses a FastAPI wrapper around Microsoft’s powerful MarkItDown library, enabling seamless conversion of files, URLs, and raw text into clean, formatted Markdown. We’ll explore the underlying technologies, get into the code structure, and highlight key aspects like Docker deployment, testing, and configuration.


Refactoring Model Layer Code in Willow CMS with CakePHP Behaviors

An elderly wizard with a long white beard and pointed hat sits at a desk, surrounded by books and candles, intently studying ancient scrolls and manuscripts.

This post covers refactoring code related to the CakePHP Tree Behavior and slugs in Willow CMS. Originally, both Articles and Tags had duplicated code for tree operations. This was refactored into the OrderableBehavior, making the code reusable and testable. Similarly, slug management, previously scattered across multiple locations, was consolidated into the new SlugBehavior. This behavior handles slug generation, validation, and history, simplifying the ArticlesTable and TagsTable classes while adding features like automatic slug generation from titles, custom slugs, and slug history tracking for better SEO. This refactoring significantly reduced code duplication and improved maintainability and testability.


Migrations in CakePHP

An elderly wizard with a long white beard sits at a desk in a dimly lit library, writing in an ancient tome by candlelight. The room is adorned with ornate, gilded frames and shelves filled with books.

Migrations are a tool in CakePHP for managing database schema changes. They provide a version-controlled way to modify your database structure, making it easier to track, share, and deploy changes across different environments or installations of your application. CakePHP has tools to generate snapshots of your database structure and migrations between them. Given that migrations can also execute query language statements on your database, they can also be used to modify data. Willow CMS has evolved through several releases since going live for this site, with some of those releases requiring changes to the database schema and data. In this post I'll talk you through some practical examples of how I handled this.


Page 1 of 2, showing 6 record(s) out of 11 total