February 25-27, 2026
Montreal, Canada

Training

Refactoring Legacy PHP for Maintainability

Read more Register for the training

You have a large legacy PHP codebase that resists change, full of procedural patterns, global configuration, and hard-to-track dependencies.

I will help by demonstrating techniques, but also imparting on you repeatable thought processes so you can solve your unique challenges. By the end, you will be equipped with tools and knowledge to make your system easier to maintain, more portable, and more resilient to change.

Full-Stack security for web applications

Read more Register for the training

Every day we hear about apps being hacked, and data breaches causing enormous disruption; let's learn how to avoid being the subject of such bad news! In this 1-day workshop, we will look at the whole deployment stack of a typical web application, and work through a set of configuration and code examples using vanilla PHP to discuss and demonstrate security problems, solutions, and defence-in-depth at every layer of the deployment stack, from cloud infrastructure all the way through firewalls, SSH & TLS config, injections, validation & escaping, and XSS.

We will also look at numerous testing and attack tools to check that what you're doing is actually working.

You'll work through examples (using PHP) using your own laptop and a provided Ubuntu VM.

DDD, CQRS and Hexagonal Architecture - the good parts

Read more Register for the training

Domain-Driven Design, Command Query Responsibility Segregation and Hexagonal Architecture are commonly seen as the holy trinity of modern application development.

But it is easy to get trapped and end up with unnecessary complexity or missing the point of those patterns altogether. In this workshop, let's approach all three by focusing on the parts that can help you the most, leaving you with a solid foundation when you truly need to apply them.

From Zero to Agentic AI with Google Gemini & MCP

Read more Register for the training

This comprehensive workshop equips you with the skills to harness Google AI Studio and the latest Gemini AI models to develop cutting-edge voice-first agentic applications using Angular. Starting with foundational chatbot development, you'll progress to building an AI agent integrated with the Model Context Protocol (MCP), culminating in a client-side voice-first agent capable of streaming voice and video using Gemini Live. Materials will be updated to the latest Gemini models.

Passkeys, an implementation

Read more Register for the training

After a slow adoption, Passkeys will become the norm for authentication in the next few years. The main advantage is to do away with passwords altogether, making data breaches a lot less dangerous; more localized.

In this workshop we will dive deep into PassKeys, the mechanics, explaining in detail why it’s more secure than passwords and describing how it impacts the UX flow for signups and logins. Depending on the audience we will build either a NodeJS or Java implementation, complete with the front-end VanillaJS code.

The contents of the API exchange will be broken down, you will get familiar with the tools that allow you to debug your implementation, understand where things can go wrong and know how to fix them.

I will show you how different browsers treat the passkey flows, as they don’t behave exactly the same, and how to adapt the UX to create a seamless experience.

Finally we will look at passkey management from your client’s side.

Sample code will be provided in VanillaJS, Java, NodeJS and PHP.

Montreal 2026 sponsored by

Become a sponsor