Dries Buytaert

Blog

2016 product survey top content author improvements
The results of the State of Drupal 2016 survey show the importance of the media initiative for content authors.
The top content author improvements for Drupal
The results of the State of Drupal 2016 survey show the importance of the Media Initiative for content authors.
Logos of various content management systems, including Drupal, WordPress, Joomla, and Adobe, arranged in a circular pattern.
A diagram showing the five layers of the Acquia Cloud Site Factory solution stack, including personalization and site management.
The different layers of the Acquia Cloud Site Factory solution stack.
A pop-up from Acquia advocates for net neutrality, urging users to join an internet-wide day of action.
Adobe acquires Magento for $1.68 billion
A terminal displays AI generating image descriptions, showing suggested title and alt-text for each photo that scrolls by.
Abstract image representing an infinite wave
A browser window displaying a simple "Hello world!" webpage on IPNS.
My Web3 site in Brave using IPNS.
Brave showing a HTML file hosted on IPFS
Brave showing my webpage hosted on IPFS.
Website promoting paid blog comments with pricing packages, testimonials, and a call-to-action for purchasing comment services.
A confirmation screen stating that buytaert.eth was registered successfully
A confirmation screen stating that buytaert.eth was registered successfully.
Chart that shows my cameras and when I used them
The timeframe I used each camera for. The white numbers on the blue bars represent the number of photos I published on my website.
The evolution of Amazon, Alphabet, Google, IBM and Oracle's CAPEX between 2008 and 2018
The percentage growth of Amazon, Alphabet, Google, IBM and Oracle's CAPEX between 2008 and 2018
The CAPEX of Amazon, Alphabet, Google vs Coca-Cola between 2008 and 2018
A screenshot of Drupal's editorial UI that shows a few integrations with ChatGPT.
A screenshot of Drupal's editorial UI that shows a few integrations with ChatGPT in the sidebar. The ability to suggest similar titles, summarize content and recommend taxonomy terms.
Chatgpt peloton in volkswagen california
A screenshot of ChatGPT answering the question: "Does a Peloton bike fit in the back of a Volkwsagen California T6.1?".
Color-coded chart indicating stable, healthy CO2 levels throughout the night.
A chart from my CO2 monitor that displays hourly air quality over four consecutive days. Each row is a day, and each square is an hour. Green squares mean normal CO2 levels and clean air; red squares mean high CO2 levels that can affect sleep and focus. The chart shows that CO2 levels remain healthy after we turned on the Nest's air cycling feature.
Color-coded chart that illustrates gradually increasing CO2 concentrations during sleep.
A chart from my CO2 monitor that displays hourly air quality over four consecutive days. Each row is a day, and each square is an hour. Green squares mean normal CO2 levels and clean air; red squares mean high CO2 levels that can affect sleep and focus. Every day, the squares shift from green to red, showing air quality decreases during sleep.
A person works on a laptop as a hologram of an AI agent hovers beside them.
Two computer screens compare old commerce, showing a shoe catalog, with new content-driven commerce featuring a branded lifestyle image.
Lush.
Lush.com is a nice example of a content-rich shopping experience built with Drupal and Drupal Commerce.
An image of a copyright sign
Comparison of a CSS flex container and flex items, showing their structure and arrangement within a layout.
Diagram showing CSS Flexbox with "flex-direction: column", stacking "Site name" and "Navigation" vertically.
A website header using CSS Flexbox with "flex-direction: row" to align site name and navigation horizontally.
Diagram showing different CSS Flexbox justify-content properties: flex-start, center, flex-end, and space-between, with aligned boxes.
A CSS grid layout displaying an article structure with text, metadata, and an image section.
Diagram of a CSS grid layout with seven columns, showing an "Article" section placed within the grid.
A CSS grid layout diagram showing column lines labeled with numbers and arrows indicating their positions.
A CSS grid layout diagram showing multiple columns with different widths, spacing, and labeled content areas.
Diagram illustrating CSS Grid layout with labeled row and column lines, showing content placement within the grid structure.
A CSS grid layout with multiple rows and columns, displaying text elements and an image in structured sections.
Diagram of a CSS page layout with a flexbox header and a grid-based main content area.
An animated image of my site switching between dark mode and regular mode
An image of Facebook's account deletion confirmation screen
A 3x3 grid compares digital distributors and the open web, showing different future scenarios for publishers' profitability and user experience.
This image summarizes different scenarios for the future of the web. Each scenario has a label in the top-left corner which I'll refer to in this blog post. A larger version of this image can be found at https://dri.es/sites/buytaert.net/files/images/blog/digital-distributors-vs-open-web-who-will-win.jpg.
A digital animation of interconnected lines and icons forming a network, representing digital market trends and technology connections.
Diversity in data
The text "buytaert.
A man with glasses and a beard looks slightly to the side with a neutral expression.
2018 dri.es redesign
Before (left) and after (right).
An AI chatbot in Drupal CMS setting up a "Locations" taxonomy and populating it with the top 10 cities worldwide.
An AI chatbot in Drupal CMS setting up a "Locations" taxonomy and populating it with the top 10 cities worldwide.
Bar chart showing a steady increase in organization credits for strategic initiatives from 2019 to 2024, with a significant jump in 2024.
Drupal CMS has been a powerful catalyst for accelerating innovation and collaboration. Since development began in 2024, contributions have soared. Organization credits for strategic initiatives grew by 44% compared to 2023, with individual contributions increasing by 37%. The number of unique contributors rose by 12.5%, and participating organizations grew by 11.3%.
Screenshot of the Drupal CMS installer showing some recipes enabled and others disabled.
The Drupal CMS installer lets users choose from predefined 'recipes' like blog, events, case studies and more. Each recipe automatically downloads the required modules, sets up preconfigured content types, and applies the necessary configurations.
Graphic with the text "Drupal CMS 1.0 released" next to the Drupal logo in bold colors.
Screenshot of the Drupal.org homepage showcasing the updated brand with the tagline 'Create ambitious digital experiences,' presented in a bold and vibrant design.
The new Drupal.org features a refreshed brand and updated messaging, positioning Drupal as a modern, composable CMS.
Drupal logo with a speech bubble containing the React logo, representing integration or interaction between Drupal and React.
Drupal supporting different JavaScript front ends
Drupal should support a variety of JavaScript libraries on the user-facing front end while relying on a single shared framework as a standard across Drupal administrative interfaces.
A screenshot of my email headers showing that SPF, DKIM, and DMARC all pass
In Gmail, click 'Show Original' to see what email protection is in place.
An artistic rendering of an endless amount of servers stretching into the horizon.
A Generative AI self-portrait by DALL·E. Via Wikimedia Commons.
Updating the Content Resolver record of an ENS domain
Mapping the IPFS hash to dries.eth is done by updating the Content Resolver record of the ENS domain on the ENS Domains website.
This graph illustrates the market power of supermarkets / digital distributors. A handful of supermarkets / digital distributors stand between thousands of farmers / publishers and millions of consumers.
A figure opening doors, lit from behind with a bright light.
The file upload form in Fleek
Fleek conveniently allows you to upload files to IPFS from the browser.
A Forbes article discussing issues with profit and property, featuring an image of stacked coins symbolizing financial concepts.
Poster for FOSDEM 2008, an open-source software conference in Brussels, featuring event details and a brain illustration.
Banner for FOSDEM 2009, an event in Brussels, Belgium, on February 7-8, with a website link.
Free time to contribute is a privilege
Google Chrome showing dries.eth using the Metamask extension
dries.eth rendered in Google Chrome with the Metamask extension.
A screenshot that shows Googlebot doesn't render placeholder images that are embedded using data URLs
Flowchart guiding startups on how much money to raise, considering investor willingness and equity dilution limits.
How the iMac was Apple's financial lifeline
© Asymco
A cabinet displaying jars, each with a different interest inside: travel, photography, electronics, tennis, food, investing, coffee, and more.
A cabinet with all my interests.
A user clicks a teaser image, triggering a smooth transition to the full content page while changing the URL.
When a user clicks a teaser image on the homepage of an Ember-enhanced Drupal.com, the page seamlessly transitions into the full content page for that teaser, with the teaser image as a reference point, even though the URL changes.
A content editor interface overlays a webpage, showing real-time updates with transitions and animations for an in-context preview.
In CardStack Editor, an editorial interface with transitions and animations is superimposed onto the content page in a manner similar to outside-in, and the editor benefits from an in-context, in-preview experience that updates in real time.
A screen confirming an updated content hash for 'dries.eth' on the Ethereum Name Service, with a link to view the transaction on Etherscan.
A transaction confirmation on the ENS website, showing a successful update for dries.eth.
A man with glasses and a beard smiling, wearing a black shirt, in an indoor setting.
James Gosling, the inventor of Java and Vice President at Sun Microsystems. © Sun Microsystems.
JavaScript close up
Illustration of a computer screen labeled "JS Tips" connected to multiple devices, representing JavaScript-powered multichannel communication.
An animated GIF of a user scrolling a webpage and a placeholder images being replaced by the final image
An example placeholder image shows brown and black tones
The generated placeholder, scaled up by a browser from a tiny image that is 5 pixels wide. The size of this placeholder image is only 395 bytes.
An example placeholder image that shows red and black tones
A user clicks a button to open a dropdown tray displaying additional content on a webpage.
The files overview screen of my local IPFS node
A "Files" overview screen showing that my local IPFS node is hosting index.html.
The status screen of my local IPFS node showing bandwidth usage
A dashboard showing my local IPFS node's bandwidth usage.
A drop-down menu allowing you to pin a file on IPFS.
A drop-down menu allows you to easily pin a file to an IPFS node.
A person types on a laptop, with abstract shapes flowing from the screen, representing low-code and no-code development.
Pie chart showing the market capitalization of top S&P 500 companies, with Apple, Amazon, Alphabet, Microsoft, and Facebook leading.
Marketing technology landscape 2018
An image of the Marketing Technology Landscape 2018. For reference, here are the 2011, 2012, 2014, 2015, 2016 and 2017 versions of the landscape. It shows how fast the marketing technology industry is growing.
Microsoft acquires GitHub
A data comparison chart showing how major tech companies collect user information, including email, location, and social connections.
A data comparison chart showing how major tech companies collect and use different types of user information.
Diagram comparing Microsoft Graph and LinkedIn Graph, showing connections between elements like emails, contacts, jobs, and hiring managers.
Source: Microsoft.
Mollom logo with stylized text in brown and green, featuring a small leaf design on the letter "M.
A megaphone projects ideas as icons of blogging, communication, and global reach spread outward.
Illustration of a website plan with a computer screen, user icons, books, and a calendar representing collaboration.
National Geographic's "Planet or plastic?" cover
A person being ignored
This is an old film roll featuring an ostrich running in every frame. The ostrich is purple in color, which represents the mascot of Nostr.
A group of six people on a video call celebrating the Outside-In patch being committed to Drupal 8.
Acquia's outside-in team celebrating that the outside-in patch was committed to Drupal 8.2 beta. Go team!
How the Open Demographics Initiative recommends you ask for gender information
© Open Demographics Initiative's gender identification questions
A sign that reads 'Open Source dividends'
A scale that is in balance
A scale that is not in balance
A visualization of the Maker and Taker math
Examples of common goods (fishing grounds, oceans, parks) and public goods (lighthouses, radio, street lightning)
The roads system evolving from self-governance to privatization, and from privatization to centralization
A scale with blocks next to it
Instead of each platform having its own user experience, we have a shared integration and presentation layer. The central integration layer serves to unify data coming from distinctly different systems. Compatible with the "Big Reverse of the Web" theory, the presentation layers is not limited to a traditional web browser but could include push technology like a notification.
A digital illustration shows large tech company logos among connected nodes, representing the dominance of major platforms over the web.
Diagram showing separate platforms (CMS, Commerce, CRM), each with its own presentation layer and user data, connected by arrows.
The current state of the web: one end-user application made up of different platform that each have their own user experience and presentation layer and stores its own user data.
A layered diagram showing user data separated from applications, managed independently below CMS, commerce, and CRM systems.
Instead of each platform having its own user data, we move the data away from the applications to the users, managed by a "personal information broker" under the user's control.
A personal information broker manages data access between the user and multiple applications.
The user's personal information broker manages data access to different applications.
I asked OpenAI to write a letter to my wife begging her to make orange cookies.
A Drupal interface showing block placement options, with a cursor hovering over a plus icon to add content.
A user changes the impersonation to "Anonymous" and then places a block, receiving a notification about the impact.
First the editor changes the impersonation to "Anonymous" then she places the block. She is informed about the impact of the change.
The editor switches to "Subscribers", hiding the "Access reports" block and receiving a notification when placing the "Download report" block.
The editor changes the impersonation to "Subscribers". When she does the "Access reports" block is hidden as it is not visible for subscribers. When she places the "Download report" block and chooses the "Subscriber pages" page group, she is notified about the impact of the change.
A cursor clicks on an empty block, revealing a menu with thumbnail options for adding content to the page.
The proposed outside-in experience for adding a block. Everything happens on the actual page rather than on an administration page. Places where things can be added appear on hover. On click they show thumbnails that you can filter with autocomplete.
A user navigates a website's admin interface to add a content block, showing the current block editing process.
The current inside-out experience for adding a block. Not all steps are shown.
A user selects different impersonation options to view how "Access reports" and "Download report" blocks appear for each role.
The anonymous users need to see the "Access reports" block and subscribers need to see the "Download report" block. Impersonation lets you see what that looks like for each user group.
A user edits a website menu by dragging an item while in editing mode.
User selects a menu item and edits its name and path directly on the page in real-time.
The proposed outside-in experience for editing a menu item. Rather than moving out-of-context to an administration page to get the job done, configuration happens right on the page where you see the effect of each action. You start adding a menu item simply by selecting the menu on the page. Both the menu item and the item's path are in focus to reinforce the connection. As you type a path is proposed from the link text.
A user navigates multiple admin pages to edit a menu item, requiring several steps and page refreshes.
The current inside-out experience for editing a menu item: adding a menu link and changing its position involves 2 separate administration pages, 4 page refreshes and more than 400 words of text on the UI.
A user clicks the "Edit" button on a website with a blog article displayed.
Diagram explaining how user groups and page groups help customize content visibility based on language and user attributes.
A screenshot of dri.es' Lighthouse scores showing 100% scores in performance, accessibility, best practices, and SEO.
Screenshot of Lighthouse scores via https://pagespeed.web.dev/.
An animated GIF showing a Drupal workspace being deployed from 'Stage' to 'Live,' starting with an empty Live workspace.
This animated gif shows how a workspace is deployed from 'Stage' to 'Live' on a single site. In this example the Live workspace is initially empty.
Diagram comparing two Pfizer content workflow improvements, showing staging site deployment with multiversion, replication, and workspaces.
An animated GIF showing a user switching between workspaces in Drupal and previewing site content changes.
This animated gif shows how a content creator can switch between multiple workspaces and get a full-site preview on a single site. In this example the Live workspace is empty, while there has been a lot of content addition on the Stage workspace in.
My phone's battery level is 78% and it is unplugged
Pinata replication form
Pinata allows you to upload files to IPFS from the browser. You can replicate content across multiple IPFS nodes run by Pinata.
Product marketing is at the center of product management, sales and marketing
A screenshot of the IPFS Desktop application displaying an HTML file with a drop-down menu option to 'Publish to IPNS'.
The IPFS Desktop application showing my index.html file with an option to 'Publish to IPNS'.
A user requests information from multiple computers, represented by arrows pointing from the user to the screens.
The pull-based web.
An animation comparing "pull-based" and "push-based" web content delivery using icons of computers and a user profile.
A mobile device receives push notifications from different sources, including a building, a store, and a user profile.
The push-based web.
Schema org image license markup
The HTML code for an image on my blog. Schema.org metadata is used to programmatically specify that my photo is licensed under Creative Commons BY-NC 4.0. This license encourages others to copy, remix, and redistribute my photos, as long it is for noncommercial purposes and appropriate credit is given.
A screenshot of the Arduino IDE with a dialog box for installing the 'Sensirion Core' dependency for the 'Sensirion I2C SCD4x' library.
Installing the Sensirion SCD4x library via the Arduino IDE.
An augmented reality architecture using Drupal and Vuforia
How augmented reality can be used to superimpose product information
Line chart showing revenue growth, profit margin expansion, and share count reduction contributing to improved earnings per share.
Three components working together to improve earnings per share: revenue growth, margin expansion and share count reduction.
Chart showing SHW dividend growth and declining payout ratio, indicating a safer and steadily increasing dividend over time.
The dividend is low but has been growing fast. At the same time the dividend actually became safer as the dividend payout ratio went down sharply.
Sherwin-Williams stock rose 322% in 10 years, outperforming the S&P 500, but recently declined about 20% from its peak.
The past 10 years, Sherwin-Williams has significantly outperformed the S&P 500. The past months, Sherwin-Williams has fallen about 20% from its all-time high.
Diagram showing a mobile app requesting user data from a secure personal data pod, with some requests denied.
Space
View large version. © unknown.
A collage of screenshots displaying the websites of various static site generators, with prominent text emphasizing phrases such as 'fast page loads', 'peak performance', unparalleled speed', 'full speed', and more.
A collage of screenshots featuring different static site generators' websites, emphasizing their marketing messaging on performance.
A webpage displaying temperature and humidity readings for a basement in Belgium.
A screenshot of my basement temperature dashboard.
Underrepresented groups don't have the same amount of free time
Tim Berners-Lee sitting in front of a computer showing the first website
Tim Berners-Lee, inventor of the World Wide Web, in front of the early web.
A screenshot of an email inbox showing multiple notifications from Twitter about new followers.
A Wall Street Journal article discusses Michael Skok launching Underscore.
Universal JavaScript
In a universal JavaScript approach utilizing shared rendering, Node.js executes a framework (in this case Angular), which then renders an initial application state in HTML. This initial state is passed to the client side, which also loads the framework to provide further client-side rendering that is necessary, particularly to “rehydrate” or update the server-side render.
Flowchart explaining when to charge VAT for international e-commerce sales based on customer and business location within the EU.
If you have an e-commerce site that sells to international customers, this is how you need the charge VAT.
A table compares data collected by major tech companies, including calendar, purchase history, email, location, and social graph.
A skilled craftsperson works on the intricate mechanism of a droplet-shaped vintage watch.
Graph showing waves of software adoption, categorizing companies by market growth across Mainframe, Client-Server, XaaS, and Open Adoption Software.
A diagram showing an entity graph in Drupal, illustrating relationships between events, locations, people, and recipes.
A visual example of an entity graph in Drupal.
Comparison of REST, JSON API, and GraphQL in Drupal 8, showing request structure and server responses with simplified payloads.
A comparison of different API approaches for Drupal 8, with amended and simplified payloads for illustrative purposes.
Two people on a platform observe a decentralized web of nodes.
A diagram that shows page load times for dri.es before making performance improvements
A webpage performance test waterfall chart showing loading times for various images, scripts, and resources before full interactivity.
A waterfall diagram that shows requests and load times after making performance improvements
A waterfall diagram that shows requests and load times before making performance improvements
A waterfall diagram that shows requests and load times after replacing youtube.com with youtube-nocookie.com
When using youtube-nocookie.com, Google no longer uses DoubleClick to track your users. No HTTP cookie was sent, "only" 18 files were loaded, and the total page load time was significantly faster at 2.9 seconds (vertical blue line). Most of the load time is still the result of embedding a single YouTube video.
A waterfall diagram that shows requests and load times before replacing youtube.com with youtube-nocookie.com
When embedding a video using youtube.com, Google uses DoubleClick to track your users (yellow bar). A total of 22 files were loaded, and the total time to load the page was 4.4 seconds (vertical blue line). YouTube makes your pages slow, as the vast majority of requests and load time is spent on loading the YouTube video.
A Wikipedia page about Drupal with a link preview showing a blog-related entry overlapping the text.
The generated HTML code for Tim Berners-Lee's Wikipedia page; it could be more semantic
What the browser sees; the HTML code Wikipedia (MediaWiki) generates.
The markup for Tim Berners-Lee's Wikipedia page; it's complex and inconsistent
What Wikipedia editors write (source).
The browser output for Tim Berners-Lee's Wikipedia page
What visitors of Wikipedia see.
WordPress logo featuring a white "W" inside a blue circle with a dark border.
Green Zend Framework logo with stylized white "ZF" letters.
Official CERN document from 1993 declaring the release of World Wide Web software into the public domain.
A personalized cover!
Black and white portrait of a man with glasses and messy hair, smiling at the camera.
Close-up of a stock certificate with the word "SHARES" prominently displayed in bold, decorative lettering.
A person frames a view with their hands, overlaid with a city skyline, symbolizing vision and innovation.
Two chess knights, one white and one black, face each other on a board, symbolizing competition and collaboration.
A comparison chart showing the shift from traditional web content to personalized, flexible, and multi-channel digital experiences.
A person writing on paper with a pen, with the text "Meaningful Moments Pt.
A person writes on paper with a pen, with the text "Meaningful Moments Pt.
A person stands releasing colorful balloons into a swirling sky, with the text "Collective purpose is what sets Drupal apart.
MySQL logo featuring a stylized dolphin above the text "MySQL" in blue and orange colors.
The MySQL logo features the word "MySQL" with a stylized dolphin outline above it.
Why the big architectural changes in Drupal 8?
Illustration of a strong blue figure labeled "PHP" facing a smaller red figure labeled "Java" with "vs.
Chalk drawing of a cube made of smaller blue blocks, with some blocks floating apart, on a blackboard background.
A person cuts a twenty-dollar bill into smaller pieces on a wooden cutting board using a knife.
Hands typing on a keyboard with a computer screen displaying code in the background.
Facebook social decay
© Andrei Lacatusu
A special bird flying in space has the spotlight while lots of identical birds sit on the ground (lack of diversity)
The Sport Loop is the most comfortable band for the Apple Watch
A sunrise with beautiful reds and black silhouettes
Large metal pots with wooden lids in which lobsters are boiled
The original image that we need to generate a placeholder for.
A window of a shop with a 'shop local' sign.
If you want to go quickly, go alone. If you want to go far, go together.
A graph showing the product lifecycle S-curve with phases for take-off, growth, and stagnation over time.
A woman in a black shirt stands in front of a wall with her photo and the word "Acquia.
Two large Acquia advertisements at Kendall Square station, one showing text about page views and the other a smiling man.
Turnstiles at Kendall Square station display Acquia advertisements with messages about page views and customer engagement.
An ESP32-S3 development board is linked to an SHT41 temperature and humidity sensor and powered by a battery pack. For scale, a 2 Euro coin is included. The SHT41 sensor is roughly equivalent in size to the coin, and the ESP32-S3 board is about twice the coin's diameter.
An ESP32-S3 development board (middle) linked to a Sensirion SHT41 temperature and humidity sensor (left) and powered by a battery pack (right).
An ESP32-S3 development board is linked to an SCD41 CO2 and temperature sensor. For scale, a coin and pen are included. The SCD41 sensor is roughly equivalent in size to the coin, and the ESP32-S3 board is about twice the coin's diameter.
A development board with an ESP32-S3 chip (left) connected to a Sensirion SCD41 sensor on the right, which measures CO2 levels and temperature.
A 12V to 5V voltage converter in a waterproof metal box the size of a matchbox, placed on a gridded mat.
The 12V to 5V voltage converter used to convert the 12V output from the solar panel to 5V for the Raspberry Pi.
A large battery, the size of a loaf of bread, with a solar panel in the background.
A 18Ah LFP battery from Voltaic, featuring a waterproof design and integrated MPPT charge controller. The battery is large and heavy, weighing 3kg (6.6lbs), but it can power a Raspberry Pi for days.
A 12V to 5V voltage converter in a waterproof metal box the size of a matchbox, integrated into a cable with heat shrink tubing.
A 12V to 5V buck converter, needed to convert the 12V output from my solar panel to the 5V required by my Raspberry Pi Zero 2. It was integrated by cutting the cable, connecting the converter, and protecting the connections with heat shrink tubing to ensure they are waterproof.
A Raspberry Pi 4 and an RS485 CAN HAT next to each other.
The Raspberry Pi 4 (on the left) can run a website, while the RS485 CAN HAT (on the right) will communicate with the charge controller for the solar panel and battery.
A Raspberry Pi 4 with an RS485 CAN HAT in a waterproof enclosure, surrounded by cables, screws and components.
A Raspberry Pi 4 with an attached RS485 CAN HAT module is being installed in a waterproof enclosure.
A solar panel and battery mounted securely on a roof deck railing.
The solar panel and battery mounted on our roof deck.