When working on enterprise projects, it’s common to have to download private dependencies that require authentication to be installed (usually, internal or paid packages). In modern setups, you’ll most likely use Docker to package your application (or service) and all its dependencies into a standalone image. Typically, building the Docker image is automated through a…
Author: Kévin Dunglas
Goroutines, threads, and thread IDs
If you attended AFUP Day 2022, you might know that I am currently working on a PHP module for web servers written in Go. While testing my upcoming library, I encountered strange memory access issues related to the threads created by the Go runtime (you know, cgo…). By default, the Go scheduler runs many goroutines…
New in Caddy 2.5: Redact Sensitive Data from Your Logs
Caddy is the rising star of web servers. It is fast, easy to configure, fully featured (automatic TLS certificate generation and renewal, HTTP/3, cloud-native, config hot reloading…), and secure (it is written in Go, not in C). Thanks to its unmatched extensibility that makes it a top-notch app platform, Caddy has a thriving ecosystem! To…
Building Decentralized Web Apps with Solid and PHP
At SymfonyLive Paris, I introduced a new PHP library to build Solid applications: Solid Client PHP. In this presentation, I present the Solid protocol and how it could give back the control of their personal data to end-users. View the recording (slides in English, talk in French). This presentation is about decentralized web applications, but…
JSON Columns and Doctrine DBAL 3 Upgrade
Version 3 of the popular Doctrine DBAL library has been released at the end of 2020, almost 10 years after the initial release of version 2. In September 2021, Doctrine ORM 2.10 added support for DBAL 3, while still supporting DBAL 2 at the same time. Versions prior to 2.10 aren’t compatible with DBAL 3….
Preventing CORS Preflight Requests Using Content Negotiation
In modern web applications, it’s a common pattern to serve the web API and the frontend app from different subdomains: https://api.example.com: your web API, usually serving JSON documents https://example.com: your web application, usually built in JavaScript, generating HTML documents from the raw JSON data retrieved from the API This was the pattern implemented by API…
Symfony’s New Native Docker Support (Symfony World)
I’m very excited to announce that after 6 years of teamwork, Symfony and API Platform now include an industry-first set of tools designed to automatically create, manage and run the Docker containers needed for your applications. Read my article on the Symfony blog Watch my Symfony World talk Browse my slides deck:
Edge Side APIs
Here is the slide deck I used for my talk “Edge Side APIs” at ForumPHP 2021. I introduced a new architecture for web APIs derived from REST and inspired by Jamstack: ESA.
Installing a LaTeX environment on a Mac
Installing LaTeX on Mac is straightforward. Install Homebrew if not already done, then run: brew install –cask mactex That’s all! If you need a good editor, I recommend the LaTeX Workshop extension for VS Code (brew install –cask visual-studio-code or brew install –cask vscodium). Alternatively, try VimTex for Neovim (brew install neovim).
Introducing Edge Side APIs (#APIPlatformCon Keynote)
Here are the slides I presented during my keynote at the API Platform Conference. I introduced a new API architecture inspired by Jamstack: Edge Side APIs (ESA). My colleague Antoine Bluchet gave another talk giving more details about how API Platform started implementing ESA: The talks have been recorded. They will be published in the…