an

SE Radio 636: Sriram Panyam on SaaS Control Planes

Sriram Panyam, CTO at DagKnows, discusses SaaS Control Planes with SE Radio host Brijesh Ammanath. The discussion starts off with the basics, examining what control planes are and why they're important. Sriram then discusses reasons for building a control plane and the challenges in designing one. They explore design and architectural considerations when building a SaaS control plane, as well as the key differences between a control plane and a data plane.

This episode is sponsored by QA Wolf.




an

SE Radio 638: Nick Tune and Jean-Georges Perrin on Architecture Modernization

Nick Tune and Jean-Georges Perrin join host Giovanni Asproni to talk about their proposed approach to modernizing legacy systems. The episode starts with some high-level perspective to set context for the approach described in their book, Architecture Modernization (Manning, 2024). From there, the discussion turns to important details, including criteria for deciding which aspects to revisit; some of the activities, processes, and tools; and the importance of data engineering in modernization efforts. Nick and Jean-Georges describe how to successfully implement an architecture-modernization effort, and how to fit that work with the teams' other priorities. The episode finishes with some warnings about the typical risks associated with modernizing a legacy system, and suggestions on how to mitigate them.

This episode is sponsored by QA Wolf.




an

SE Radio 640: Jonathan Horvath on Physical Security

Jonathan Horvath of Z-bit discusses physical access control systems (PACS) with host Jeremy Jung. They start with an overview of PACS components and discuss the proprietary nature of the industry, the slow pace of migration to open standards, and why Windows is commonly used. Jonathan describes the security implications of moving from isolated networks to the cloud, as well as credential vulnerabilities, encryption using symmetric keys versus asymmetric keys, and the risks related to cloning credentials. They also consider several standards, including moving from Wiegand to the Open Supervised Device Protocol (OSDP), as well as the Public Key Open Credential (PKOC) standard, and the open source OSDP implementation that Jonathan authored.

Brought to you by IEEE Computer Society and IEEE Software magazine.




an

Tales of the Nobel Prize announcement

-- Delivered by Feed43 service




an

Professional societies and you

-- Delivered by Feed43 service




an

Plant up

Fill an area with plants or seeds




an

Philips Performance Wireless TAPH805BK Bluetooth Headset Review

The Philips Performance Wireless TAPH805BK are wireless headphones with battery life that will knock your socks off, but the sound quality has a lot of room for improvement.... [PCSTATS]




an

AMD 5nm Zen 4 EPYC CPUs And Radeon Instinct GPUs To Power El Capitan Supercomput

AMD just announced today a design win in conjunction with the Lawrence Livermore National Laboratory (LLNL) and Hewlett-Packard Enterprise (HPE), win which it will be providing the hardware powering the El Capitan exascale-class supercomputer. What caught our eye about this announcement was not the compute performance -- which will be enormous ... [PCSTATS]




an

SteelSeries Apex 3 Water Resistant Gaming Keyboard Review

" Writing an entire article on the Apex 3 was a really easy task thanks to the higher actuation point and we did not make any mistakes like on the regular high-speed gaming-only keyboards. This is a good point to recommend when using the keyboard in corporate offices as well: the new SteelSeries domes are silent, while the full-size layout allows ... [PCSTATS]




an

ASRock X570 Phantom Gaming-ITX/TB3 Motherboard Review

"When it comes to mini-ITX AMD X570 motherboards there are only a handful to choose from. Today we are checking out ASRock�s offering which comes in the form of the X570 Phantom Gaming-ITX/TB3. We first saw the Phantom Gaming Series from ASRock with their Z390 Phantom Gaming X and we are hoping to see the same quality in the X570 Phantom Gaming-ITX... [PCSTATS]




an

Galax GeForce RTX 2070 Super HOF 10 Year Anniversary

The Galax RTX 2070 Super HOF 10 Year comes with a large overclock on both GPU and memory, it's actually the fastest RTX 2070 we ever tested, almost matching RTX 2080. Thanks to a large power limit increase and 16 Gbps memory chips from Samsung, manual overclocking works great, too.... [PCSTATS]




an

Every Mastodon User Has an RSS Feed

The distributed social network Mastodon has grown to 12.8 million user accounts, supporting itself through user donations and a lot of effort by the volunteers running servers. There's no CEO changing the network at whim, no ads and no algorithms that manipulate what you see to increase engagement. Just a scroll of posts by the people you follow pulled from all over the world.

Every Mastodon account has an RSS feed that can be found by going to the user's Mastodon page and adding ".rss" to the URL of that page. For example, the RSS feed for Bonaventure Software is at this address:

https://mastodon.online/@bonaventuresoft.rss

The feeds are valid RSS and use the Media-RSS and Webfeeds namespaces.

The Media-RSS content element contains the photo, audio or video included in the Mastodon post, if one is present:

<media:content url="https://files.mastodon.online/media_attachments/files/109/326/769/636/254/303/original/552ebb9fd3f30171.png" type="image/png" fileSize="49052" medium="image">
  <media:rating scheme="urn:simple">nonadult</media:rating>
  <media:description type="plain">Eli Lilly & Co stock performance graph over the last month, showing lower valuations than the one caused by the bogus announcement of free insulin.</media:description>
</media:content>

The Webfeeds icon element holds the URL of the user's avatar:

<webfeeds:icon>https://files.mastodon.online/accounts/avatars/109/298/336/948/075/673/original/e76dfce4df4bef76.gif</webfeeds:icon>

One potential improvement to the feed would be to add a link element from the Atom namespace to identify the URL of the RSS feed, as in this example:

<atom:link href="https://mastodon.online/@bonaventuresoft.rss" rel="self" type="application/rss+xml" />

That might not happen anytime soon. Mastodon is a frenetic open source project with 61 open issues and suggestions involving RSS.




an

How to Read an RSS Feed with PHP Using SimplePie

If you need to load an RSS feed with the PHP programming language, the open source library SimplePie greatly simplifies the process of pulling in items from a feed to present on a website, store in a database or do something else coooool with the data. There's a full installation guide for SimplePie but you can skip it with just three steps:

  1. Download SimplePie 1.5.
  2. Copy the file autoloader.php and the folder library to a folder that's accessible from your PHP code.
  3. Make note of this folder; you'll be using require_once() to load autoloader.php from that location.

SimplePie has been designed to work the same regardless a feed's format. It supports RSS 2.0, RSS 1.0, Atom and the earlier versions of RSS. Additionally it can read feed elements from nine namespaces.

Here's PHP code that loads feed items from the news site Techdirt and displays them in HTML:

// load the SimplePie library
require_once('/var/www/libraries/simplepie-1.5/autoloader.php');

// load the feed
$feed = new SimplePie();
$feed->set_feed_url('https://www.techdirt.com/feed/');
$feed->init();
$feed->handle_content_type();

// create the output
$html_output = '';
foreach ($feed->get_items() as $item) {
  $html_output .= '<p><a href="' . $item->get_link() . '">' . $item->get_title() . '</a></p>';
  $html_output .= $item->get_description();
  $html_output .= '<p>By ' . $item->get_author(0)->get_name() . ', ' . $item->get_date();
}

// display the output
ECHO <<<END
$html_output
END;

The API documentation for SimplePie_Item lists the functions that can extract data from each feed item. The versatility of the library is demonstrated by get_authors(), which can retrieve an item's authorship information whether it was in the RSS author element, Dublin Core creator, iTunes author, or Atom author.

SimplePie supports caching so that a feed isn't downloaded every time code is executed. The addition of these lines turns on caching, specifies the location of a cache folder and sets the time to use a cached version to four hours (14,400 seconds):

$feed->set_cache_location('/var/www/cache/');
$feed->set_cache_duration(14400);
$feed->enable_cache();

SimplePie was created by RSS Advisory Board member Ryan Parman, Geoffrey Sneddon and Ryan McCue. The project is currently maintained on GitHub by Malcom Blaney.




an

Be Unique And Use RSS Guid Like Everybody Else

Winter scenes: Snowflakes by Theodor Horydczak

If you publish an RSS feed, you should do a solid for the developers of RSS readers by including a guid in each item. The guid's job is to be a unique identifier that helps software downloading your feed decide whether it has seen that item before. Here's the guid for an item on the arts and technology blog Laughing Squid:

<guid isPermaLink="false">https://laughingsquid.com/?p=914660</guid>

No other item on Laughing Squid will ever have this guid value. It's a URL that loads a blog post with the title Playful Elephant Pretends to Eat Woman's Hat. If you load the guid's URL https://laughingsquid.com/?p=914660, it redirects to the permanent link of the post. Because the guid is not the permanent link, there's an isPermaLink attribute with a value of false.

Most guid values in RSS feeds are the permanent link of the item, as in this example from the world news site Semafor:

<guid>https://www.semafor.com/article/07/07/2023/us-jobs-data-what-experts-make-of-the-new-numbers</guid>

A drawback of using the permalink is that if any part of the URL changes -- such as the title text or the domain name -- the guid changes and RSS readers will think this is a new item to show the feed's subscribers, when it's actually a repeat.

A guid doesn't have to be a URL. It can be any string that the feed publisher has chosen to be unique. Here's the guid from the RSS Advisory Board's feed for this blog post:

<guid isPermaLink="false">tag:rssboard.org,2006:weblog.217</guid>

Our guid follows the TAG URI scheme, a simple way to assure uniqueness by putting these five components together in this order:

  1. The text "tag"
  2. A domain owned by the feed provider
  3. A year the provider owned that domain
  4. A short name for the feed different from any other feed on the site
  5. The internal ID number of the post

There's different punctuation between each component. The year 2006 was when the board began using the domain rssboard.org. No one else used that domain that year, so any feed reader that stores "tag:rssboard.org,2006:weblog.217" as this item's guid should never encounter that value in any other item on any other feed.

To see how RSS 2.0 feeds are using guid, several thousand feeds were downloaded this evening from an RSS aggregator that publicly shares the OPML subscription lists of its users.

CategoryTotalPercentage
Total number of feeds4,954--
Feed using guid4,77796.4%
Feeds using non-permalinks in guid75215.2%

The term guid means "globally unique identifier," but RSS 2.0 does not require global uniqueness in guids. Because the TAG URI scheme does a good job of serving that purpose, Blogger, Flickr, MetaFilter, SoundCloud and The Register are among the sites using it in their feeds.




an

Downloading 50,000 Podcast Feeds to Analyze Their RSS

The software developer Niko Abeler has crawled 51,165 podcast feeds to study what RSS elements they contain. His comprehensive Podcast Feed Standard report looks at the usage of core RSS elements and namespace elements from Apple iTunes, Atom, Content, Podcast 2.0 and Simple Chapters. He writes:

In the world of podcasting, there is a great deal of freedom when it comes to the format and content of a podcast. Creators are free to choose their own audio format and feed content, giving them the flexibility to create something truly unique. However, when it comes to distributing a podcast, certain standards must be followed in order to be added to an aggregator such as Apple Podcasts. Additionally, the podcasting community has come to agree upon certain conventions that can be used to add additional features to a podcast, such as chapters, enhanced audio, and more. These conventions allow for a more immersive and engaging listening experience for the audience.

This website is dedicated to providing guidance and information on the conventions and standards used in podcasting.

There's a lot of interesting data in the RSS 2.0 report, which finds that these are the six least popular elements in an RSS feed's channel:

Element Usage
docs 8.3%
cloud 0.0%
rating 0.0%
skipDays 0.0%
skipHours 0.0%
textInput 0.0%

Over 99 percent of feeds contain the optional channel element language and the optional item elements enclosure, guid, pubDate and title. Only 0.2% of feeds contain a source element in an item.

The iTunes namespace report shows a lot of variation in support. The required element itunes:explicit is only present in 18 percent of feeds and four optional elements have less than 20 percent: itunes:new-feed-url, itunes:block, itunes:complete and itunes:title. One namespace in the report, Podcast 2.0, has been proposed by Podcastindex "to provide a solution for problems which previously have been solved by multiple competing standards" and is still under development.

The report also analyzes the audio files enclosed in the podcast feeds to determine their format, bitrate, channel and loudness. The report finds that 95.6 percent use MP3 and 4.4 percent AAC/M4A. People who like an alternative open source format will be oggravated that its sliver of the pie graph is so small it can't be seen.

If Abeler isn't tired of crunching numbers, one thing that would be useful for the RSS Advisory Board to learn is how many of the feeds contain more than one enclosure element within a single item.




an

How to Read an RSS Feed with Java Using XOM

There are a lot of libraries for processing XML data with Java that can be used to read RSS feeds. One of the best is the open source library XOM created by the computer book author Elliotte Rusty Harold.

As he wrote one of his 20 books about Java and XML, Harold got so frustrated with the available Java libraries for XML that he created his own. XOM, which stands for XML Object Model, was designed to be easy to learn while still being strict about XML, requiring documents that are well-formed and utilize namespaces in complete adherence to the specification. (At the RSS Advisory Board, talk of following a spec is our love language.)

XOM was introduced in 2002 and is currently up to version 1.3.9, though all versions have remained compatible since 1.0. To use XOM, download the class library in one of the packages available on the XOM homepage. You can avoid needing any further configuration by choosing one of the options that includes third-party JAR files in the download. This allows XOM to use an included SAX parser under the hood to process XML.

Here's Java code that loads items from The Guardian's RSS 2.0 feed containing articles by Ben Hammersley, displaying them as HTML output:

// create an XML builder and load the feed using a URL
Builder bob = new Builder();
Document doc = bob.build("https://www.theguardian.com/profile/benhammersley/rss");
// load the root element and channel
Element rss = doc.getRootElement();
Element channel = rss.getFirstChildElement("channel");
// load all items in the channel
Elements items = channel.getChildElements("item");
for (Element item : items) {
  // load elements of the item
  String title = item.getFirstChildElement("title").getValue();
  String author = item.getFirstChildElement("creator",
    "http://purl.org/dc/elements/1.1/").getValue();
  String description = item.getFirstChildElement("description").getValue();
  // display the output
  System.out.println(">h2>" + title + ">/h2>");
  System.out.println(">p>>b>By " + author + ">/b>>/p>");
  System.out.println(">p>" + description + ">/p>");

All of the classes used in this code are in the top-level package nu.xom, which has comprehensive JavaDoc describing their use. Like all Java code this is a little long-winded, but Harold's class names do a good job of explaining what they do. A Builder uses its build() method with a URL as the argument to load a feed into a Document over the web. There are also other build methods to load a feed from a file, reader, input stream, or string.

Elements can be retrieved by their names such as "title", "link" or "description". An element with only one child of a specific type can be retrieved using the getFirstChildElement() method with the name as the argument:

Element linkElement = item.getFirstChildElement("link");

An element containing multiple children of the same type uses getChildElements() instead:

Elements enclosures = item.getChildElements("enclosure");
if (enclosures.size() > 1) {
  System.out.println("I'm pretty sure an item should only include one enclosure");
}

If an element is in a namespace, there must be a second argument providing the namespace URI. Like many RSS feeds, the ones from The Guardian use a dc:creator element from Dublin Core to credit the item's author. That namespace has the URI "http://purl.org/dc/elements/1.1/".

If the element specified in getFirstChildElement() or getChild Elements() is not present, those methods return null. You may need to check for this when adapting the code to load other RSS feeds.

If the name Ben Hammersley sounds familiar, he coined the term "podcasting" in his February 2004 article for The Guardian about the new phenomenon of delivering audio files in RSS feeds.




an

Family Planning in a Changing Climate

Meghan Elizabeth Kallman and Josephine Ferorelli discuss the politics of pregnancy and childbirth in an era of environmental challenges.




an

Surprising Solidarity in the Fight for Clean Water and Justice on O’ahu

After a 2021 leak at the U.S. military’s Red Hill fuel storage facility poisoned thousands, activists, Native Hawaiians, and affected military families have become unlikely allies in the fight for accountability.








an

Sacred Sustenance

Fifty years ago, the Boldt decision reaffirmed Indigenous fishing rights and recognized tribes as equal partners in resource management.




an

Why This Vegan Restaurant Introduced Meat

Sage Regenerative Kitchen’s executive chef explains why she added meat to the menu—and why she believes so deeply in regenerative farming.








an

Political Violence Is Not Violence Against Politicians

Indigenous communities have long resisted the false narratives of imperialist nations and are experts at countering the political violence of white supremacy.




an

What Kamala Harris’ Candidacy Means

The Vice President becomes the presumptive Democratic presidential nominee in a game-changing political moment.







an

The Contentious Role of Third-Party Candidates

In a high-stakes election, left-leaning third party candidates are receiving Republican support, and may be wooing disaffected progressive voters. Former Green Party vice presidential candidate Rosa Clemente shares her take on this year’s race.




an

Can Massive Election Turnout Save Democracy?

An extremely tight race for the presidency is sparking a last-minute, Black-led GOTV effort aimed at Black voters in swing states.





an

What’s Next for Bangladesh’s Student-Led Revolution?

A Bangladesh-born labor explores the South Asian nation’s prospects to transition to a stable democracy now that the dust has settled from Prime Minister Sheikh Hasina’s ouster.





an

An Abolitionist Response to Project 2025

Project 2025, created by the extremist right-wing Heritage Foundation, fortifies the racist impact of policing by empowering the Department of Justice to focus on violent crime, despite the fact that