βοΈ All my blog posts
Posts in chronological order...
π 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
π 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
π 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
π 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
π 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
𧱠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
π΅ 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
π π»ββοΈ 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
π 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
πΉ 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
πͺ 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
π 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
π’ 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
π£ 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
πͺ 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
π€© 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
π 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
π« 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
βΌοΈ 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
π 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
π 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
β 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
π 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
π¨π»βπ« 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
π’ 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
𧱠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
π’ 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
π΅ 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
π€ 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
π 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
π 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
π₯ 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
πΊ 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
π³ 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
π 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
π¦ 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
π 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
π± 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
π 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
π― 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
π 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
π¦ 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
π 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
π― 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
β±οΈ 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
βοΈ 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
π₯ 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
π΄ 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
πΊ 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
π 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
πΈ 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
π 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
π 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
π 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
π 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
π₯³ 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
βοΈ 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
βοΈ 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
π 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
βοΈ 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
π 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
βοΈ 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
πͺ 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
πͺ 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
π 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
𧨠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
π 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
π 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
βοΈ 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
π 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
π² 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
π€ 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
π€ 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
π€ 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
π 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
π€ 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
β±οΈ 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
π¨βπ§ 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
π©βπ§ 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
π 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