-
If you’re in the WordPress Hosting space you might have already heard about Project Bedrock, a centralized directory of WordPress hosting providers, that is managed by the WordPress community. The project is already running a few years but in the last months it got traction again, especially with WordCamp Europe 2024 having a discussion on the Contributor Day around the format and requirements. Read more on make.wordpress.org/hosting
@javiercasares laid out the next steps of the project in a recent post and I thought why not starting with an initial prototype which can be iterated one but solves the first requirements:
- Be able to take a json file from an URL, Upload or just paste it
- Register Hosting Companies and their products as Custom Post types
- Link those products to the hosting company
- Store meta data to build the directory on
It is a first draft, far from completion but it does some lay out some parts of the functionality and may provide an early version of what later becomes a proper hosting directory:
https://github.com/Crixu/wp-hosting-directory/
If you want to contribute make sure to join one of the next team meetings of the hosting team (Each Wednesday!), join the #hosting channel on the WordPress Slack server or simply leave a comment somewhere related 🙂
-
I’m handling the technical things for a scout project (crover.info). We use many different open source tools like WordPress for the website, Mattermost for communication and Pretix for our booking tools. And while they all work quite well and also offer extensibility there was easy connection to get bookings from Pretix showing up in Mattermost, even thought Pretix offered a connection to Mattermosts alternative Slack.
But luckily there are webhooks which Pretix can sent out and Mattermost can receive in order to show a message. The second issue was: The webhook from Pretix couldn’t be directly consumed by Mattermost as the content was different.
To solve this I came up with a solution: Add a translator in the middle. So I first started to write some basic JavaScript code that can run as a “NodeJS middleware” but as this was another service we needed to host I started to look at alternatives and there it was: WordPress was already running and available and thanks to the plugin system and the WordPress REST API it should be pretty easy to act as a middleware in between Pretix and Mattermost.
The functionality is easy:
- The plugin provides a new API route behind a randomly generated string e.g.: /wp-json/pretix/v1/13293012381
add_action('rest_api_init', function () { $suffix = get_webhook_suffix(); register_rest_route('pretix/v1', '/' . $webhook-secret, [ 'methods' => 'POST', 'callback' => 'pretix_mattermost_webhook', 'permission_callback' => '__return_true' ]); });- An interface in the
wp-adminsettings page for some general configuration:

- A function to get the booking ID from the incoming webhook, check the API from Pretix for additional details, combine those data into a JSON-format expected by Mattermost and sent it
- For increased security I added a feature that only works with the incoming webhook if it is received from the right system (URL and IP need to match)
- Register a custom post type “Bookings” to also track the bookings in our WP backend for convenience reasons.
Code to register the Custom Post Type
function pretix_mattermost_webhook_create_cpt() { $labels = array( 'name' => _x('Pretix Buchungen', 'Post Type General Name', 'textdomain'), 'singular_name' => _x('Pretix Buchung', 'Post Type Singular Name', 'textdomain'), 'menu_name' => _x('Pretix Buchungen', 'Admin Menu text', 'textdomain'), 'name_admin_bar' => _x('Pretix Buchung', 'Add New on Toolbar', 'textdomain'), 'add_new' => __('Neue hinzufügen', 'textdomain'), 'add_new_item' => __('Neue Pretix Buchung hinzufügen', 'textdomain'), 'new_item' => __('Neue Pretix Buchung', 'textdomain'), 'edit_item' => __('Pretix Buchung bearbeiten', 'textdomain'), 'view_item' => __('Pretix Buchung anzeigen', 'textdomain'), 'all_items' => __('Alle Pretix Buchungen', 'textdomain'), 'search_items' => __('Pretix Buchungen durchsuchen', 'textdomain'), 'not_found' => __('Keine Pretix Buchungen gefunden.', 'textdomain'), 'not_found_in_trash' => __('Keine Pretix Buchungen im Papierkorb gefunden.', 'textdomain'), ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array('slug' => 'pretix_booking'), 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => 20, 'supports' => array('title', 'editor', 'custom-fields'), 'show_in_rest' => true, 'menu_icon' => 'dashicons-tickets-alt', ); register_post_type('pretix_booking', $args); } add_action('init', 'pretix_mattermost_webhook_create_cpt');In conclusion, the successful implementation of these open source tools in the scout project’s technical setup stands as a testament to the ingenuity and adaptability of modern web development. By embracing the potential of webhooks, the flexibility of open-source systems and crafting bespoke solutions, we have not only streamlined operations but also set a precedent for future endeavors.
-
The motto of every scout is “Be Prepared,” which even non-scouts are now familiar with. However, this motto always makes me question myself: What does it mean to be prepared?
Does it mean I have to be ready to do something every second? But what is “something”? A few days ago, when my parents were visiting us, my father showed me a very good example. We were dining out. It was a beautiful sunny evening, and we were on the terrace of a local brewery. The drinks had already been served, and the food was ordered. The smell of a wood grill was in the air, but soon, a sharp odor mixed in. It smelled as if someone was trying to burn plastic.
The beer garden was PACKED! So packed that people were leaving because there was no room. Everyone could smell it; you could see it on their faces. After the first black smoke was visible, my father immediately sprang into action and took me with him. We knew something was wrong when black smoke started rising in a newly built area. In short: A bush in the garden of a nearby house had caught fire, and the privacy screen to the neighbor’s yard was also burning.
My motto is “Be Prepared,” and yet I hesitated for a moment. Was I not prepared? Or was I prepared for something else?
Note: This post was started in the summer of 2019 but only recently completed in english for this blog
-
I used to always travel with my Canon EOS 700D camera and always wanted to have a great way to archive my pictures somehow. In the past my “storage” solution was to save them on the one spinning hard drive of my computer and keep the pictures on the SD cards. Those cards were then taped to a piece of paper and added to a big Folder.

But since I now downsized my computer I started to think about a new and better solution. The idea is now to run “immich” on my RaspBerry pi 4 with two HDDs in RAID 1 to store all my images and be independent of a cloud provider where I need to upload all the files.
To add all those SD card pictures to the immich appliaction I’ve used their CLI tooling and ran the following command:
immich upload --recursive DCIM/While it took sometimes multiple hours in the background all my pictures from the SD cards not only got saved to a new location but they also got meta tagged and are now searchable with my phone!
-
I recently reworked my gaming setup and started to move from my big tower to a Fractal Terra case which takes up less space than any PC I’ve ever had before.
The specific relevant content for this request, if necessary, delimited with characters: Picking the right parts was hard especially since I knew the Intel i7-14700k I planned to build into it can get very hot, and you need a good cooling system. In the first place, I hoped a Noctua NH-L9i could bring enough cooling to the system, but it turned out that my CPU now thermal throttled at around 98°, down to 3.8 GHz, which wasn’t really the upgrade I hoped for.
After spending another huge amount of time on Reddit, I found two more contestants I wanted to give a try:
- Deepcool AN600
- Thermalright AXP90-X47 in Copper
I started testing with the Thermalright and while the temps went down a little, they were still in the lower 90s. Someone on Reddit recommended swapping out the fan on the Thermalright with the one from the Noctua, and it actually showed quite a good result, reaching the 80s.
As I am using a RTX 3080 Founders Edition, I’m able to move the divider of the case quite close to the two, and it allowed me to try the Deepcool AN600, which showed perfect results after an intense gaming session of 1.5 hours:

Max temps reached the mid 70s, which is super “cool” for such a high-power CPU and the small form factor of the case.
-
Over on X I talked about my current experience with using Custom Post Types and here is a quick rundown of what I’ve built this time.
CO2 Tracker in WordPress
I’m part of an organizer team for a bigger scout event for 15 to 21 year old scouts from Germany. Our plan is to sensitize the young people for their ecological foot- and handprint and show them ways on how to reduce both of them. In roughly 10 months we challenge them to think about their CO2 emissions and try to “save” as much as they can to have a “greener” camp at the end of the project.
To track those emision and savings I created two new custom post types in WordPress:
- CO2 Tracker
- Teams

The tracker CPT allows to track any emission for each team in certain categories by the actual emission, the projected emission and any savings.
Now if anyone from our team receives a new submission from one of the teams they can login to the WordPress backend and add a new emission for the teams.
The output
To also reuse the added data I created an Elementor template for all of the teams pages where we not only show a teampicture, some descriptions and a “feed” of all their emissions but also a nice tabular overview of the categories:

The tech stack
I want to blog more about such types of projects where I can use WordPress in new ways. Therefore I wanted to share parts of the “stack” I used for those projects.
Beside a custom developed plugin for the CO2 Tracker I’ve relied on:
-
My work for the Cloudfest Hackathon 2024 already started way earlier than many might think. During WordCamp Germany 2023 I got approached by Carole wether I could imagine myself being a Projectmentor for the hackathon once more. A few weeks later we already had a first call around the expectations on the project.
The role as a project mentor
As always the role on paper looks different to the doings at the end. The idea of having project mentors is to support the organizers and the project leads to make sure we have great projects that match the attendee/applications profile of the hackathon. In this years edition I mentored 5 projects:
- WordPress Tools for Hosting Providers
- Enable Mastodon Apps for WordPress and its Plugins
- Inclusive Language Checker for Open-Source Contributors
- Hack the Hackathon
- CMS Health Checks
Mentoring included working with the Project leads on their ideas and really making sure they are appealing to the audience and they have a clear endgoal which is achievable during the hackathon. We might not be able to rescue the world but we’re certainly able to do something great during those 48 hours.
My Projects
Here is my short 2cts on how I saw my five projects before the hackathon.
WordPress Tools for Hosting Providers
The team planned to rework parts of the existing Hosting Tests the WordPress Hosting Team is running on various hosts infrastructures. The plan was to add new features like multi-php support or the ability to list all tests from a certain host.
Enable Mastodon Apps
Matthias had big plans: Use your very own WordPress instance through any Mastodon-compatible app and rework the user experience of WordPress by allowing a microblogging interface on your devices. I saw this project as a bridge between Social Media Apps and WordPress.
Inclusive Language Checker
Birgit plan was to develop a WordPress plugin that helps everyone working with WordPress to write in a more inclusive way and make people aware of potential issues in their writing habits. This plugin should provide a non intrusive but still visible way to improve everyones content especially in official documentations. Perfect goal would be to have this available on make.wordpress.org one day
Hack the Hackathon
Running a hackathon is not something easy. The Hack the Hackathon Team planned to have a “Hackathon in a Box” when it comes to all the tools you might need when running a hackathon. From a simple website, to forms and chat services … all included with a single click.
CMS Health Checks
The CMS Health Checks leads plan was to develop a new open standard that provides monitoring systems way more information around the health of a CMS than a simple ping check could ever provide. Even before the hackathon we connected people from multiple open source CMS systems together and aligned on the project goals to have one standard hosts could implement one day and better serve all their clients.
Summary
I really liked the spirit of this years CloudFest Hackathon. Seeing the diverse lineup of projectleads and attendees showed off the great work the organizing team did in the past years to foster this environment.
In retrospective something I could have done better would be the upfront communication with my projectleads and prepare them better on one of the most important parts of the hackathon: Their sales pitch! Those 2 minutes where they stand infront of 120 people who might never heard of the project but needed to be convinced that this is their project. In the end two of my five projects ended up understaffed which could have been avoided through better mentoring by myself.
Really looking ahead for next years #CFHack2025.
-
Certainly! I am excited to share with you the great news that the Fediverse has finally arrived at WordPress.com. In a recent blog post titled The Fediverse Has Arrived at WordPress.com, it was announced that WordPress.com has now joined the vibrant and decentralized world of the Fediverse. This means that you can now connect and communicate with a wider network of users and blogs from various platforms, all within the WordPress.com ecosystem.
The addition of ActivityPub support to WordPress.com opens up a whole new realm of possibilities for bloggers and readers alike. With ActivityPub, you can now follow blogs, comment on posts, and share your own content seamlessly across different websites and platforms that support this protocol. This decentralized nature of the Fediverse promotes greater freedom and privacy, allowing you to choose the platform and community that aligns with your preferences.
The inclusion of the Fediverse into WordPress.com reflects a commitment to making the blogging experience more inclusive and interconnected.
Happy blogging in the Fediverse!
*[ActivityPub]: ActivityPub is a decentralized social networking protocol.
*[Fediverse]: The Fediverse is a collection of interconnected social networking platforms that use compatible protocols like ActivityPub. -
Last July, I relocated to a different part of the city, where my wife grew up. As a result, there are numerous spots that she and her family are familiar with, but I’ve yet to explore. So, I decided it was time to rediscover my surroundings and get to know this new area. And what better way to do that than on a bicycle?
The Journey to Find the Perfect Bike
On Saturday, my wife and I visited a large retail bicycle shop to find a suitable ride for my explorations. I wanted something more reliable than my old Peugeot race bike, but still sporty enough to complement my preferred way of traveling. Initially, I was considering a mountain or gravel bike. However, a former colleague who happened to work at the store recommended an urban bike instead.
After taking my colleague’s advice, I opted for the CXS 800 from Bicycles. So far, it’s been a simple yet fantastic bike that meets my needs. For those interested, here’s a link to the German store where I purchased it: https://boc24.de/products/bicycles-cxs-802?variant=43549592027401.

Once I’ve clocked my first 1,000 kilometers on the CXS 800, I’ll share a short review detailing my experience and how well the bike has served me. Stay tuned for more updates on my adventures in the new neighborhood!
-
I’m having a few travels ahead, and to always be prepared, I started to have a “travel bag” with all the cables and adapters I might need during going around different places. It’s a great #travelhack to ensure you don’t forget that one specific cable or if you go somewhere and need another HDMI port (thanks to Apple for finally including one in the newer models again).

This little black contains everything I need to charge and operate my devices on the go. Inside is a big compartment with separators and five sections at the top for efficiently storing cables. In my case, I’m storing two USB-C to HDMI converters, two USB-C to Lightning cables, and one multiport adapter providing me access to 2 USB-A, another HDMI port, and card reader slots. Last, a charger for my Apple Watch shouldn’t be missed.

The lower compartment holds all the power delivery devices and the official Apple USB-C Multiport adapter and storage for my headphones. I trust two USB-Chargers with 20 watts and a USB-C and/or USB-A outlet for power delivery. The big black brick is a 60-Watt Power Source that can power my MacBook and provides three USB-A and one USB-C outlet.


Now still missing are some travel adapters for various regions. The best part is that this case is always in my bag, and I can rely on it.
The last item I always ensure goes into my bag is at least one of my power banks. Mainly I bring a powerful 20,000mAh power bank to charge all my tech gadgets on the go. It has two USB A ports and one USB C port.
So that’s it for my travel bag. Now I’m always prepared for any situation and moment I come across during my travels.
Do you keep such a case with you? What am I missing to upgrade it?