iXsystems: focusing on Linux makes more sense than FreeBSD

A few weeks ago we talked about how iXsystems, the company behind TrueNAS CORE and SCALE, has all but confirmed that its FreeBSD-based CORE product will be put in maintenance mode, while the Linux-based SCALE product will get all the attention and focus from here on out. In an interview with Blocks & Files, the company gave more insight into this choice. “We had a huge chunk of our engineering staff spending time improving FreeBSD as opposed to working on features and functionalities. What’s happened now with the transition to having a Debian basis, the people I used to have 90 percent of their time working on FreeBSD, they’re working on ZFS features now … That’s what I want to see; value add for everybody versus sitting around, implementing something Linux had a years ago. And trying to maintain or backport, or just deal with something that you just didn’t get out of box on FreeBSD.” “It’s not knocking against FreeBSD. We love it. That’s our heritage. That’s our roots, I was on the CORE team elected twice. So believe me, if I felt like I could have stayed on FreeBSD for the next 20 years, I would have absolutely preferred to do that … But at some point, you gotta read the writing on the wall and say, well, all the the vendor supported-innovations are happening on the Linux side these days.” BSD aficionados don’t like this change. Moore said: “Talk is cheap and complaints are free. You know, everyone loves to complain about it. But … if people wanted to push FreeBSD forward for the last 15 years, they would have.” ↫ Chris Mellor at Blocks & Files Above all else, my personal north star is choice, especially in technology, and as such, I want iXsystems to keep focusing on FreeBSD so that not everyone is using Linux for server- and server-like workloads. The fact that TrueNAS was a FreeBSD-based product for this long was amazing, and I would definitely have preferred if it stayed that way for many, many more years to come. However, I don’t think the people of TrueNAS are saying anything wrong or outrageous here. They’ve got employees to feed, and the money is in Linux, not FreeBSD. If they spend more money, time, and resources on getting FreeBSD on par with features Linux has had for ages than on actually developing their own product – TrueNAS – then they’re fighting a losing battle. Honestly, I’m surprised it’s taken them this long to take this controversial step. All we can hope for is that the things they work on, the features they develop, will make it to FreeBSD regardless.

Specbee: How to create custom tokens in Drupal

It’s stuff like these that make Drupal not just powerful, but also highly customizable and user-friendly. What are we talking about? Tokens! It’s one of the most versatile and super handy Drupal modules.​​ Sometimes, users need to establish a specific pattern to programmatically retrieve values. In these instances, tokens come to the rescue, providing a seamless solution. Read on to find out more about tokens and how you can create custom tokens for your Drupal website.

What are Tokens
Tokens in Drupal are primarily used for dynamically inserting data into content, such as user information, node details, or site settings. They make content more personalized and automated without manual intervention, streamlining the editing process and enhancing user experiences. For example, they can be used while sending emails during webform submissions or content moderation.
Before creating custom tokens you need to have the Drupal tokens module installed on your Drupal site. This contributed module already comes with some predefined tokens. These defined tokens can be used globally.

Steps to Create Custom Tokens
Step 1: Create a custom moduleTo create a custom token in Drupal, we either need to develop a new custom module or incorporate it into an existing one. For example, let’s name the module “Custom Token,” and the corresponding directory would be named “custom_token.” After creating this folder, we should generate a “custom_token.info.yml” file, where we’ll specify the module details.
name: Custom token
type: module
description: Provides custom tokens.
package: tokens
core_version_requirement: ^10Step 2: Clear the cacheAfter adding this code, clear the cache and refresh the page to apply the changes. Next, search for the custom token module and install it.

Step 3: Create the custom tokenOnce the module is installed, create a file named “custom_token.tokens.inc” within the folder. Inside this file, we’ll define the custom tokens. In the given scenario, there’s a webform for reviewing article content, and a link to this webform is added to the detailed page of articles. Now, the URL to the webform appears as follows:‘webform/contact_new/test?article=1’. The article field is also auto-filled based on the token.

Here, the article author is a hidden field that should auto-fill after form submission. Additionally, the article author is a field within the article content type. To dynamically retrieve this data, we need to create a custom token.
The code that will be added inside the “tokens.inc” file is provided below.
<?php
/**
* @file
* File to add custom token.
*/
use DrupalCoreRenderBubbleableMetadata;
/**
* Implements hook_token_info().
*/
function custom_token_token_info() {
  $types[‘article’] = [
    ‘name’ => t(‘Custom token’),
    ‘description’ => t(‘Define custom tokens.’),
  ];
  $tokens[‘article_title’] = [
    ‘name’ => t(‘Article title’),
    ‘description’ => t(‘Token to get current article title.’),
  ];
  $tokens[‘article_author’] = [
    ‘name’ => t(‘Article author’),
    ‘description’ => t(‘Token to get current article author.’),
  ];
  return [
    ‘types’ => $types,
    ‘tokens’ => [‘article’ => $tokens],
  ];
}
/**
* Implements hook_tokens().
*/
function custom_token_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
  $replacements = [];
  if ($type == ‘article’) {
    $nid = Drupal::request()->query->get(‘article’);
    if ($nid) {
      $node_details = Drupal::entityTypeManager()->getStorage(‘node’)->load($nid);
    }
    foreach ($tokens as $name => $original) {
      // Find the desired token by name.
      switch ($name) {
        case ‘article_author’:
          if ($node_details) {
            $user_id = $node_details->field_author->target_id;
            if ($user_id) {
              $user_details = Drupal::entityTypeManager()->getStorage(‘user’)->load($user_id);
              $replacements[$original] = $user_details->name->value;
            }
          }
          break;
          case ‘article_title’:
          if ($node_details) {
            $replacements[$original] = $node_details->label();
          }
          break;
      }
    }
  }
  return $replacements;
}And this is how we can craft custom tokens to suit our specific needs. Once implemented, the webform results will seamlessly display the auto-filled value.

Final Thoughts
Drupal’s power lies not just in its functionality, but in its adaptability and ease of use. Tokens are an example of this versatility, since they offer a way to dynamically retrieve data as well as personalize content. Tokens streamline processes and improve user experience, whether they are used for user information, node details, or site settings.

20 years since “and we’re just starting”: undeadly.org turns 20 (2024-04-09)

It’s been 20 years since the first undeadly.org post appeared.

At that point in our history, we had been enjoying frequent updates to the OpenBSD Journal at the deadly.org site for more than four years, and most of us thought it was an April’s Fool prank when the the editors announced that they were ceasing publication, effective immediately on April 1st, 2004.

Fortunately, Daniel Hartmeier quickly realized the announcement was not a joke, and went to work on a functionally equivalent CGI binary written in C and negotiated to take over the archive of existing articles. The rescued (resurrected?) site went live at undeadly.org on April 9th, 2004.

At the time, the eagerly anticipated upcoming release was OpenBSD 3.5 (which we covered on April 30th of that year). As the release song strongly hints, the introduction of the CARP redundancy protocol was a major item in that release. The release also introduced the OpenBSD/amd64 platform, and included a number of improvements in hardware support and security, with privilege separation introduced in several daemons and important utilities. All the details can be had at the OpenBSD 3.5 release page.

It’s been 20 years, what have we got to show for it?

We hope you have been enjoying the site’s updates, and we hope that undeadly.org has been a positive factor in promoting all things OpenBSD. The site and its editors have every intention of going on running the site.

If you want to help out, please submit items about OpenBSD that you find noteworthy.

We value your submissions even more than your comments.

All the best from the undeadly.org editors.

Intel’s ambitious Meteor Lake iGPU

Intel and AMD both tried to ship iGPUs fast enough to compete with low end discrete cards over the past 10 years with mixed results. Recently though, powerful iGPUs have been thrown back into the spotlight. Handhelds like Valve’s Steam Deck and ASUS’s ROG Ally demonstrated that consumers are willing to accept compromises to play games on the go. AMD has dominated that market so far. Valve’s Steam Deck uses AMD’s Van Gogh APU, and the ROG Ally uses the newer Phoenix APU. Unlike Van Gogh, Phoenix is a general purpose mobile chip with both a powerful CPU and GPU. Phoenix doesn’t stop at targeting the handheld segment, and threatens Intel’s laptop market share too. In response, Meteor Lake brings a powerful iGPU to the party. It has the equivalent of 128 EUs and clocks up to 2.25 GHz, making it modestly wider and much faster than Raptor Lake’s 96 EU, 1.5 GHz iGPU. Raptor Lake’s Xe-LP graphics architecture gets replaced by Xe-LPG, a close relative of the Xe-HPG architecture used in Intel’s A770 discrete GPU. At the system level, Meteor Lake moves to a GPU integration scheme that better suits a chiplet configuration where the iGPU gets significant transistor and area budget. I’ll be testing Meteor Lake’s iGPU with the Core Ultra 7 155H, as implemented in the ASUS Zenbook 14. I purchased the device myself in late February. ↫ Chips and Cheese I’m absolutely here for the resurgence in capable integrated GPUs, both for PC gaming on the go and for better graphics performance even in thinner, smaller laptops. I would love to have just a bit more graphics power on my thin and small laptop so I can do some basic gaming with it.