✍️ All my blog posts

Posts in chronological order...

  1. πŸŽ‰ Gato GraphQL v1.0 is finally out!

    Development of the Gato GraphQL plugin has finally reached v1.0. Yayyyyyyyyy!!!!!! Check it out under its new home, gatographql.com. Read more

  2. πŸ† Reaching #1 on Google <= How it happened

    This weekend I had a very nice surprise: My latest blog post on gatographql.com made it to the top of Google's search results, when searching for "wordpress core graphql": I noticed because, as I woke up on Sunday morning and I checked my... Read more

  3. 🏠 GraphQL API for WP has its first home πŸ‘‰ gatographql.com

    Well, that took time! After several months, I finally launched the site for my plugin GraphQL API for WordPress: https://gatographql.com It took so long, because when you're doing everything on your own (which is my case, I don't have a team), you... Read more

  4. πŸŽ‰ Released GraphQL API v0.7, with support for mutations, and nested mutations!

    Note: This blog post has been crossposted from gatographql.com (the GraphQL API for WordPress plugin's new site). I released version 0.7 of the GraphQL API for WordPress, supporting mutations, and nested mutations! πŸŽ‰ Here is a tour showing the new... Read more

  5. πŸš€ Coding in PHP 7.4 and deploying to 7.1 via Rector and GitHub Actions

    I've written a step-by-step guide about transpiling PHP code, from PHP 7.4 to 7.1, when creating a WordPress plugin: Coding in PHP 7.4 and deploying to 7.1 via Rector and GitHub Actions It explains all the hows and whys: Why the target is PHP 7.1 and not... Read more

  6. 🧱 Reusing code in WordPress plugins with blocks

    I've written a new article about Gutenberg (the WordPress editor), exploring: πŸ‘‰ What is the most effective way to reuse code, within a (single or multi-block) WordPress plugin? The answer is here: Reusing Functionality for WordPress Plugins with Blocks... Read more

  7. πŸ’΅ Funding a plugin through sponsorware, how successful is it?

    I've learnt about Caleb Porzio's sponsorware model as a way to fund an open source project. The idea is to release a new feature only to the funders and, once you got X new funders, only then the new feature becomes open source, available to everyone. But... Read more

  8. πŸ™…πŸ»β€β™€οΈ How the Jamstack is failing at comments

    A few weeks ago I added this comment in WPTavern, on an article where WordPress founder's Matt Mullenweg clarifies his earlier remarks that the Jamstack is "a regression for the vast majority of the people adopting it". Since I like owing my own... Read more

  9. πŸŽ‰ I got my 1st big sponsor for the GraphQL API for WordPress

    My plugin GraphQL API for WordPress just got a new sponsor! This is the second sponsor that I get, and the first one at the u$d 1400/m tier (the other was is at u$d 70/m). This is a huge step forward, since it gives me the economic certainty as to keep... Read more

  10. πŸ“Ή Video of my talk @ WPLDN is now on Youtube

    My talk "Intro to the GraphQL API for WordPress" for the WordPress London meetup from last week is now available in Youtube: My presentation starts at 25:37. It is only around 20 min long (15 min presenting + 5 min of Q&A). Please check it... Read more

  11. πŸ’ͺ Scripting capabilities in non-standard GraphQL server

    Last week I made a proposal to add embeddable fields to GraphQL, but it didn't get a lot of support. I got the feedback that the extra complexity added to the server doesn't justify the benefits of this new feature, as in this comment on Reddit (which I... Read more

  12. πŸ”‘ Justifying "Embeddable Fields" for GraphQL

    This post is my response to this comment on Reddit concerning my proposal to add embeddable fields to GraphQL. If we want to make GraphQL good at transforming data, we need much more than string interpolation. I don't disagree with this, but I don't have... Read more

  13. πŸ“’ Proposal for "Embeddable fields" in GraphQL

    I'd like to make a proposal for a new feature for GraphQL, not to be appended to the official spec, but as an optional feature that GraphQL servers may decide to support (similar to the GraphQL Cursor Connections spec). This post is part of the groundwork... Read more

  14. πŸ“£ Released v0.6 of GraphQL API for WordPress

    I have just released version 0.6 of the GraphQL API for WordPress πŸŽ‰. This is a mighty new version, with several new features and improvements: βœ… The GraphiQL Explorer has been added to all the GraphiQL clients, including the public ones βœ… Added support... Read more

  15. πŸ’ͺ Fancy this GraphQL query? I'm on my way to build it!

    The query is this one: mutation { comment(id: 1) { replyToComment(data: data) { id @sendEmail( to: "{{ parentComment.author.email }}", subject: "{{ author.name }} has replied to your comment", content: " <p>On {{ comment.date(format: \"d/m/Y\") }}, {{... Read more

  16. 🀩 Personal milestone - My first GitHub sponsor!

    2 days ago I subscribed to GitHub sponsors to fund my work on the GraphQL API for WordPress, and I already got my first sponsor! Following the example set by Caleb Porzio (who's making more than u$d 100k/y doing open source), I have decided to use the... Read more

  17. πŸš€ Adding directives to the schema in code-first GraphQL servers

    I wrote a new article for my series on designing a GraphQL server for the LogRocket block: Adding directives to the schema in code-first GraphQL servers This time, I explore several topics: A strategy to add directives to the schema when there is no SDL... Read more

  18. 🚫 GDPR illegal - Couchsurfing may be keeping your (deleted) photos

    Because Couchsurfing is dead (or, more appropriately, Couchsurfing has been killed), I requested to delete my account from the site. And it's been done: my profile does not exist anymore. But, surprise surprise, they had not deleted my photos! For... Read more

  19. ‼️ Single source of truth => 2 presentations for doc

    Today I released v0.3 for plugin GraphQL API for WordPress, shipping one of the most urgent requests: documentation for the plugin! The plugin now ships 37 modules from 10 categories, distinguished by color: The docs have been implemented as Markdown, and... Read more

  20. πŸš€ Executing multiple queries in a single operation in GraphQL

    Update 23/01/2021: I created the guides for the Multiple Execution Query in gatographql.com: Demo Explanation It's been only 15 days since releasing the GraphQL API for WordPress, and I couldn't help myself, so this week I added yet a new feature: the... Read more

  21. 😎 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

  22. ❓ 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

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

    Update 04/02: The plugin is now scoped! So it is fully ready for production, and will be soon uploaded to wp.org πŸ₯³ Update 23/01: The GraphQL API for WordPress has its own site now: gatographql.com. Yesterday I launched the project I've put all my efforts... Read more

  24. πŸ‘¨πŸ»β€πŸ« 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

  25. 😒 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

  26. 🧱 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

  27. 😒 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

  28. 😡 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

  29. πŸ€” 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

  30. πŸ™ƒ 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

  31. πŸ› 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

  32. πŸ”₯ 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

  33. πŸ“Ί 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

  34. 😳 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

  35. 😎 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

  36. 🎦 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

  37. πŸ‘€ 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

  38. πŸ“± 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

  39. πŸ‘€ 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

  40. πŸ’― 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

  41. πŸ™Œ 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

  42. πŸ“¦ 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

  43. πŸš€ 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

  44. πŸ’― 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

  45. ⏱️ 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

  46. βš™οΈ 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

  47. πŸ₯Š 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

  48. πŸ›΄ 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

  49. 😺 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

  50. 🏎 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

  51. 😸 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

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

    Update 23/01/2021: I created the guides for the Schema Namespacing in gatographql.com: Demo Explanation 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... Read more

  53. πŸ‘ 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

  54. πŸš€ 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

  55. πŸ™ 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

  56. πŸ₯³ 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

  57. ✍️ 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

  58. ✍️ 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

  59. 😎 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

  60. ✍️ 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

  61. πŸš€ 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

  62. ✍️ 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

  63. πŸ”ͺ 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

  64. πŸ’ͺ 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

  65. πŸš€ 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

  66. 🧨 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

  67. πŸ—“ 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

  68. 😎 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

  69. ✏️ 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

  70. πŸš€ 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

  71. 😲 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

  72. 🎀 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

  73. πŸ€” 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

  74. 🀘 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

  75. πŸ’‹ 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

  76. 🎀 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

  77. ⏱️ 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

  78. πŸ‘¨β€πŸ”§ 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

  79. πŸ‘©β€πŸ”§ 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

  80. πŸ‘‹ 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