✍️ All my blog posts

Posts in chronological order...

  1. 😎 Using GitHub actions to release a WordPress plugin

    The GraphQL API for WordPress plugin (launched last week) has plenty of PHP dependencies, managed through Composer. These dependencies, which are located under vendor/, are not stored in the GitHub repo, because they do not belong there. However, these... Read more

  2. ❓ Why I built GraphQL API if there was WPGraphQL?

    When announcing the launch of my brand-new GraphQL API plugin for WordPress on Reddit, I got this question: Why build your own when one already , and is developed by a gatsby dev? I reproduce my response here. Why I built GraphQL API when there already... Read more

  3. πŸŽ‰ Introducing the GraphQL API for WordPress

    Yesterday I launched the project I've put all my efforts into: the GraphQL API for WordPress, a plugin which enables to retrieve data from a WordPress site using the increasingly popular GraphQL API. I've been developing this plugin full time for most of... Read more

  4. πŸ‘¨πŸ»β€πŸ« Gutenberg tips for newbies

    Yesterday I had a new article about WordPress Gutenberg published for the LogRocket blog: Essentials for building your first Gutenberg block This article gives a few tips for starting a new Gutenberg project, as I discovered them in my own journey. It's... Read more

  5. 😒 My CouchSurfing photos

    Because Couchsurfing is dead, I requested to get all my data from the site, and got the images too. Here they are, the images of some of my travels, when I was young and energetic (I was even smiling in many of those pics!): Read more

  6. 🧱 Setting up your first Gutenberg project

    I started using Gutenberg several months ago, so I'm in that stage of being an experienced newbie. Coming from a PHP background, not much JS, some things were easier to understand and pull off, some others more difficult. I have the impression than most... Read more

  7. 😒 Last glimpses of my CouchSurfing profile, before gone.

    Because Couchsurfing is dead, I requested to get all my data from the site, before having my account deleted. I just got the data: the images are resized down (they don't have the original dimensions I uploaded them with), and the data is a dull .json... Read more

  8. 😡 Couchsurfing is dead

    Bye bye Couchsurfing, you've been good to me, you've hosted me all over Europe and Japan, trips I couldn't have afforded otherwise. I met many friends. I met my wife. Those were good times. But that's no more. Couchsurfing (with a lowercase s) is dead.... Read more

  9. πŸ€” Why GraphQL needs to support the union of scalars

    In my latest article on LogRocket, Creating an @export GraphQL directive, I showed the screenshot of a GraphiQL client with red lines over the query argument definitions, which indicate there is an issue going on: Why is this happening? For the... Read more

  10. πŸ™ƒ Opening modal windows in the WordPress admin, with/out Gutenberg

    I have recently wrote 2 articles which, in general terms, accomplish the same objective: to show documentation to users of my plugin through a modal window in the WordPress admin. However, they use 2 different strategies: with and without Gutenberg. 🎩... Read more

  11. πŸ› Architecture design - Executing GraphQL directives through a pipeline

    TL;DR: I published a new article on my GraphQL series: Treating GraphQL directives as middleware In the series on GraphQL I'm writing for LogRocket, I've been arguing that good support for custom directives may be the most important factor for choosing a... Read more

  12. πŸ”₯ Registering a Gutenberg block for a specific Custom Post Type only

    For my GraphQL API for WordPress plugin (to be released soon, yay!), I have created several Custom Post Types, which are elegantly operated through custom Gutenberg blocks. For instance, the GraphiQL block is used to create persisted GraphQL queries: Now,... Read more

  13. πŸ“Ί Creating persisted GraphQL queries

    One of the issues with GraphQL is its lack of security: the single endpoint it provides can be accessed by anyone, legit users but also attackers trying to get private data, or attempt to bring the server down by sending complex queries. My upcoming... Read more

  14. 😳 GraphQL directives are underrated

    Not many articles (if any) comparing REST and GraphQL mention directives to be a key differentiator. Yet, I believe that directives are one of the most powerful features in GraphQL, which alone justifies migrating an API from REST to GraphQL. Coming from... Read more

  15. 😎 Adding symlinks in Lando to speed-up development

    My laptop just broke, but I was lucky enough to be lent another laptop to keep working until I can have mine fixed. I didn't want to mess up this computer installing all the software I need to run my development web server (MAMP, MySQL, configuring hosts... Read more

  16. 🎦 Video - Creating custom endpoints with the GraphQL API for WordPress plugin

    The upcoming GraphQL API for WordPress plugin (to be released this May!) allows to create multiple GraphQL endpoints, each of them with a different configuration, as to expose only the require data, add a corresponding access control strategy, set-up... Read more

  17. πŸ‘€ Video showing the GraphQL API for WordPress brand-new plugin

    The video for the sneak preview to my upcoming GraphQL API for WordPress plugin (to be released this May!) has been published: The quality of the video uploaded to YouTube is terrible though 😒, the videos are pretty much static. So in the upcoming days... Read more

  18. πŸ“± Exposing WordPress site data for mobile apps

    Gutenberg can help build better mobile apps (and other apps that need to consume data from our site), since it enables to cleanly identify and extract pieces of data (like images or videos) which can be referenced within the mobile app directly, instead... Read more

  19. πŸ‘€ Slides for the sneak preview to the GraphQL API for WordPress brand-new plugin

    I just gave a sneak preview to my upcoming GraphQL API for WordPress plugin for CMS Philly (to be released this May!). I will share the video once it's ready. In the meantime, I share my beautiful slides: Read more

  20. πŸ’― Generating the schema with independently versioned fields and directives

    A few weeks ago I had added the ability to independently version fields and directives in GraphQL by PoP, by passing the version constraint as a field/directive argument when executing the query. This works well but has a problem: that specific version of... Read more

  21. πŸ™Œ Finally working on the documentation for GraphQL by PoP

    I have finally started working on the documentation site for GraphQL by PoP: https://graphql-by-pop.com This site is powered by VuePress, the Vue-centric static site generator for documentation. And it's soooo beautiful! I'm extremely pleased with the... Read more

  22. πŸ“¦ Added @cache and @traceExecutionTime directives to GraphQL by PoP

    I seem to be in a custom-directive-creation spree for GraphQL by PoP: 2 days ago I added directive @removeIfNull (as to be able to distinguish between null and omission values in the response), and today I created directives @cache and traceExecutionTime.... Read more

  23. πŸš€ Added @removeIfNull directive to GraphQL by PoP

    Directives allow to implement those features which are not natively-supported by the GraphQL spec. Then, if any implementor has come up with a compelling way to address a problem, it may be decided to incorporate it into the spec. Being able to difference... Read more

  24. πŸ’― GraphQL by PoP now supports field/directive-based versioning

    I just added support for another lovely new feature in GraphQL by PoP: the ability to independently version fields and directives, which can then be selected in the query through field/directive arguments. It is similar to how REST supports versioning,... Read more

  25. ⏱️ Merge Composer to speed up development time

    When your PHP project uses the great Composer to manage dependencies, and it links to your own dependencies which are being concurrently developed, and you have the source code for these dependencies in your local drive, then you can speed up development... Read more

  26. βš™οΈ Mandatory directives for fields/directives in GraphQL by PoP

    I just added support for a lovely new feature in GraphQL by PoP: the ability to execute mandatory directives whenever a specific field or directive is present in the GraphQL query. This means that the GraphQL engine will: Whenever a specific field from... Read more

  27. πŸ₯Š Code-first vs. schema-first development in GraphQL

    I wrote my third article for the LogRocket Blog, where I explain my journey on conceptualizing, designing and implementing a GraphQL server, as I have done for GraphQL by PoP: Code-first vs. schema-first development in GraphQL This article describes the 2... Read more

  28. πŸ›΄ Simplifying the GraphQL data model

    I wrote my second article for the LogRocket Blog, where I explain my journey on conceptualizing, designing and implementing a GraphQL server, as I have done for GraphQL by PoP: β€œDon't think in graphs, think in components: Simplifying the GraphQL data... Read more

  29. 😺 Bootstrapping a new WordPress site with Composer and WP-CLI

    I wrote a guide on automating the launch of WordPress sites through Composer and WP-CLI for Design Bombs: Bootstrapping WordPress projects with Composer and WP-CLI Following the method I described in this guide, it literally takes seconds to launch a new... Read more

  30. 🏎 Designing a GraphQL server for optimal performance

    Starting from today, I will be publishing a series of articles for the Log Rocket Blog concerning the conceptualization, design and implementation of a GraphQL server. All these articles describe the foundations of my GraphQL server in PHP, GraphQL by... Read more

  31. 😸 Submitting my first RFCs to the GraphQL spec

    I have just submitted my very first RFCs (Request For Comments) to the GraphQL spec: [RFC] Composable fields [RFC] Composable directives The first one would enable to have fields compose other fields, like this: query { posts { date: if( condition:... Read more

  32. πŸ‘ Types and interfaces in GraphQL by PoP are now namespaced!

    I have just made the types and interfaces in GraphQL by PoP be automatically namespaced! This is how the normal schema looks like in the GraphQL Voyager: This is how it looks in its namespaced version: In the namespaced schema, all types are automatically... Read more

  33. πŸ‘ Visualize the GraphQL-powered WordPress schema!

    I just discovered an awesome new tool to visualize and interact with the application schema: GraphQL Voyager. It enables to have a bird eye's view of the schema, and zoom in into the different types, their properties, and the relationships with other... Read more

  34. πŸš€ Updated slides for my GraphQL server in PHP

    I updated my slides introducing my GraphQL server in PHP with all the new developments and features, including how it now complies 100% with the GraphQL spec. Here they are: Read more

  35. πŸ™ Adding 100% compliance with GraphQL!

    I have added support to the GraphQL introspection fields, so my implementation of a GraphQL server in PHP is now 100% GraphQL-spec compliant! Because now it's officially GraphQL, I will simply call this project GraphQL by PoP 😁. The API comes in 2 modes:... Read more

  36. πŸ₯³ The PoP API is now a GraphQL server!

    After several months of work, I can announce that my project GraphQL API for PoP finally provides a spec-compliant implementation of a GraphQL server in PHP! Yay!!!!! The missing part, which I finished adding today, was the GraphQL syntax parser. Until... Read more

  37. ✍️ Reflexions on writing - Doing the writing

    So you have decided to write an article. Good! Below are my recommendations to make the intention become a reality and, even beyond, allow you to become a better writer with each passing day. Write. Write. Write. Good news is that, as with many other... Read more

  38. ✍️ Reflexions on writing - Deciding what to write about

    Many people wanting to write for an online magazine will possibly find it difficult to even answer the most fundamental question: What to write about? Indeed, coming up with a response to this question has proved unsurmountable in several cases I know of,... Read more

  39. 😎 I've been named Smashing person of the week

    This week I have been named person of the week by Smashing Magazine, the popular web design and development online magazine for which I regularly contribute. OMG, look at that picture of mine in their site, I look huge! Read more

  40. ✍️ Reflexions on writing - Attempting to become a good writer

    Let's talk about what is needed to be able to write good articles, those that people find valuable and will thank you for writing. Good-enough writing skills You will need a proper command of English, without making grammar errors or typing typos.... Read more

  41. πŸš€ Improving GraphQL - How the PoP API achieves new heights

    I had originally started implementing the GraphQL spec using server-side components, providing yet another implementation of GraphQL on PHP (such as those based on the popular graphql-php library), but attempting to also support those features that... Read more

  42. ✍️ Reflexions on writing - Why, when, how, and more...

    Yesterday I had my 20th article published on Smashing Magazine. This fact fills me with pride! To celebrate this personal milestone, starting from today I'll publish a series of blog posts sharing my experience, as to encourage everyone to also dare try... Read more

  43. πŸ”ͺ Decoupling PoP from WordPress - How it was achieved

    When some time ago I started modernizing PoP's codebase to using Composer as its foundational framework for package management, I decided to also decouple PoP's codebase from WordPress, making it CMS-agnostic. Oh boy, that was a lot of work, but sure it... Read more

  44. πŸ’ͺ The PoP API now features HTTP caching!

    The GraphQL API for PoP now features HTTP caching! From now on, whenever requesting the API, the response will be cached (in the server, intermediate caches such as CDNs, and the user's browser) as indicated through the Cache-Control header. (Really,... Read more

  45. πŸš€ Here they are => All the features from my GraphQL server in PHP

    Alright, I just finished my slides for the NomadJS webinar that I presented yesterday (yeah, I finished them 1 day later!), but if you take a look at them, you may understand why... There's sooooo much stuff here! If I'm proud of anything, this is it! I... Read more

  46. 🧨 Demonstrating the PoP API, an implementation of GraphQL on steroids

    I have recently introduced the PoP API for GraphQL, an implementation of GraphQL in PHP, and then described some of its advantages over a typical implementation of GraphQL. In this blog post, I will demonstrate some of its superpowers by implementing a... Read more

  47. πŸ—“ Webinar on the β€œPoP API” GraphQL server

    I will be presenting a webinar on my implementation of GraphQL for PHP on November 13th at 6 pm PST. To watch it, it's necessary to have an account with NomadJS, however it is free to create one, so be welcome to come join me! Title: Introduction to β€œPoP... Read more

  48. 😎 Components all the way down - A better GraphQL implementation!

    I have recently introduced a new implementation of GraphQL for PHP, which is based on the PoP API. In this post, I will write about the improvements that using the component-based architecture can achieve over a typical schema-based implementation of... Read more

  49. ✏️ Backstage to "Create Once, Publish Everywhere" with WordPress

    Yesterday I published a new article on Smashing Magazine: "Create Once, Publish Everywhere" with WordPress. It describes how the new WordPress, through Gutenberg, can accomplish a comprehensive management of our content towards sharing it for... Read more

  50. πŸš€ Introducing an implementation of GraphQL through components

    Imagine using GraphQL but with plenty of improvements: Server-side caching, better security (reducing the amount of time and energy spent in countering DoS attacks), removing the need to set-up the hundreds (or even thousands) of properties on the schema,... Read more

  51. 😲 Making GraphQL cacheable through a new, single-line query syntax!?

    GraphQL is great, but it has a very big issue: It is not easy to cache in the server (while it is doable, it doesn't come out of the box and requires a good amount of extra engineering). The problem is GraphQL's query, which generally spans multiple... Read more

  52. 🎀 I just submitted 9 proposals for ConFoo... I need only 1 accepted! Want to vote for me?

    Applying to speak in tech conferences is so much work! However, it is well worth it, since it makes me dream that I may be chosen and, who knows, it may even happen! I just applied to speak in ConFoo, a developer-oriented, French/English conference taking... Read more

  53. πŸ€” Bringing Laravel Vapor to WordPress, anyone?

    I just watched the introduction by Laravel's founder Taylor Otwell of Laravel Vapor, a new managed solution for Laravel applications that is fully based on the "serverless" concept, enabling to deploy PHP applications without having to worry... Read more

  54. 🀘 Today I published my 1st WordPress plugin, yay!

    Today is a special day for me: I published my first ever plugin on the WordPress repository! The plugin is called Block Metadata, and its use case is very simple: it extracts all the metadata for all the blocks inside of a blog post, converting this... Read more

  55. πŸ’‹ Hylia rocks!

    Welcome to my blog, which took 2 years for me to launch, but actually 2 hours to code and deploy! My quest to have my own blog, which was delayed for a loooong time (for reasons I'll explain below), was resolved in less time than a Bollywood film (not... Read more

  56. 🎀 I'm presenting on WordCamp Singapore 2019!

    Actually, I've just presented my talk! It's called COPE with WordPress, where COPE stands for "Create Once, Publish Everywhere", a strategy for publishing all of our content into different mediums (web, email, apps, AR/VR, home assistants, etc),... Read more

  57. ⏱️ Pointing to local Composer packages, to speed up development time

    I love Composer. This incredible tool has greatly simplified the dependency management of my project PoP, making it feasible to split the tens of thousands of lines of code into autonomous packages that depend on each other. Indeed, for several years PoP... Read more

  58. πŸ‘¨β€πŸ”§ Using environment constants when installing WordPress (a.k.a. How to not hardcode wp-config.php)

    I recently created project Install WordPress through Composer and WP-CLI which fully installs WordPress through a script, without having to manually edit file wp-config.php to enter the database configuration and other variables during the installation... Read more

  59. πŸ‘©β€πŸ”§ Installing WordPress through Composer and WP-CLI

    Some time ago, I wrote article Using Composer With WordPres for Smashing Magazine to describe how to integrate WordPress and Composer together, with the aim to install WordPress more easily than through the official, manual way. One of my observations was... Read more

  60. πŸ‘‹ Hello world!

    Howdy friends! It took some time, but finally I have my own blog on my own domain, leoloso.com. Hurray! πŸ˜ƒπŸ˜ƒπŸ˜ƒπŸ˜ƒπŸ˜ƒ I will be blogging about those small things that I encounter every day when coding on PoP, attending events, working on random projects,... Read more