w

Crucial X8 Review

Offering the drive in 500GB and 1TB capacities, with speeds up to 1050MB/s in both directions, the drive can be used for modestly-sized backups, as a Steam drive to take round to a friend�s or just for transferring files at speeds way in excess of what a typical USB flash drive is capable of.... [PCSTATS]



  • Hard Drives/SSD

w

SilverStone SETA A1 Case Review

"The current state of PC case design seems to be comprised of a few design and function features that can be found on just about any modern case. This includes tempered glass side panels, support for vertical video card orientation, and multiple fan and radiator installation options. These features are often mixed and matched, and depending on thei... [PCSTATS]




w

Cooler Master MM711 Review

Today we have tested a different kind of gaming mouse on OCinside.de. The Cooler Master MasterMouse MM711 is based on a lightweight honeycomb grid design, adjustable LED lighting and extensive programming options.... [PCSTATS]




w

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]




w

Gryphon Tower Mesh WiFi System

Gryphon is a relatively new company aiming to challenge the establishment of consumer-grade networking. We check out the Gryphon Tower today, which aims to combine extensive network security features with excellent performance, mesh network compatibility, and ease of installation and monitoring!... [PCSTATS]




w

Gamerstorm Macube 310P Mid-Tower Chassis Review

"Gamerstorm's Macube 310P mid-tower computer case offers great value for money with just a few issues here and there."... [PCSTATS]




w

Creative SXFI AIR C Headphones Review

" After re-creating our profile in the SXFI mobile application, we went on and watched several TV shows such as Star Trek: Picard, Better Call Saul and Altered Carbon. The EQ was left on neutral and we were quite surprised by the quality of the surround sound delivered by the product, same basically as the one found with the SXFI THEATER. SXFI AIR ... [PCSTATS]




w

RIOTORO Aviator Classic Gaming Headset Review

Riotoro just released their very first 7.1 virtual surround sound gaming headset called the Aviator Classic and today it�s up to us to put it to the test. ... [PCSTATS]




w

15+ Titles Every PC Gamer Should Own

There are thousands upon thousands of PC games out there, and hundreds of good ones. However, some have stood out over the years, and cemented themselves as absolute must-haves in their respective genres. These are 15 titles we feel every PC gamer should have in their digital library.... [PCSTATS]




w

Vertagear SL5000SE Gaming Chair Review

Are you in the market for a new gaming chair? Vertagear has only been in the world of chairs since 2015 but they have plenty of options available. The SL5000 features top of the line fabrics with intricate stitching, removable lumbar pillow and luxurious memory foam head pillow � but what else sets the SL5000 special edition apart from the competit... [PCSTATS]




w

WordPress Uses RSS as Blog Export Format

If you export your WordPress blog, it is delivered to you as an RSS feed that holds all of the blog's entries, pages and comments. WordPress makes use of five namespaces and calls the format WordPress eXtended RSS (WXR). I'm working on a Java application that converts a WXR file into a set of static HTML pages.




w

Where to Find the RSS Specification

The RSS Advisory Board has published the RSS 2.0 Specification for 20 years, releasing 10 revisions over that time. The current version of the specification can always be found at this URL:

https://www.rssboard.org/rss-specification

The revisions have mostly been minor, aside from one clarification that namespaces can be used to extend RSS by adding elements and attributes, not just elements.

The best way to learn how to implement RSS as a software developer is to read the RSS Best Practices Profile created by the board. It includes all the rules of the specification along with our recommendations for how to handle issues that have arisen among implementers.

For example, the enclosure section describes how to deal with the biggest ambiguity in RSS: Can an item contain more than one enclosure?

The RSS specification is available under a Creative Commons Attribution/Share Alike license, so it can be republished on websites and software related to RSS and syndication under those terms.




w

RSS Enclosure Support in WordPress

One of the biggest challenges for a software developer implementing the RSS 2.0 specification is the issue of enclosures in a feed item. The specification is infamously unclear on whether an item allows one enclosure or multiple enclosures.

The RSS Advisory Board worked on the RSS Best Practices Profile for nearly two years, investigating a lot of RSS readers and feed producers to see how they handled issues like this. We ultimately made the following recommendation for enclosure:

Support for the enclosure element in RSS software varies significantly because of disagreement over whether the specification permits more than one enclosure per item. Although the author intended to permit no more than one enclosure in each item, this limit is not explicit in the specification.

Blogware, Movable Type and WordPress enable publishers to include multiple enclosures in each item of their RSS documents. This works successfully in some aggregators, including BottomFeeder, FeederReader, NewsGator and Safari.

Other software does not support multiple enclosures, including Bloglines, FeedDemon, Google Reader and Microsoft Internet Explorer 7. The first enclosure is downloaded automatically, an aspect of enclosure support relied on in podcasting, and the additional enclosures are either ignored or must be requested manually.

For best support in the widest number of aggregators, an item SHOULD NOT contain more than one enclosure.

Because the profile was completed in 2007, it would be useful to see how current software handles RSS enclosures to evaluate whether any recommendations should be reconsidered. To start this effort the current WordPress was tested, since that massively successful platform publishes 60 million RSS feeds. WordPress enables audio files to be added to a blog post using the Audio icon in the block editor:

When three audio files were added to a blog post in WordPress, the item in the RSS feed contained three enclosure elements:

<enclosure url="http://example.com/Fanfare60.wav" length="2646044" type="audio/wav" />
<enclosure url="http://example.com/CantinaBand60.wav" length="2646044" type="audio/wav" />
<enclosure url="http://example.com/ImperialMarch60.wav" length="2646044" type="audio/wav" />

Follow this blog for more updates on enclosure usage in feeds and feed readers.

As you probably guessed, we have an RSS feed.




w

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.




w

Atom Feed Format Was Born 20 Years Ago

This month marks the 20th anniversary of the effort that became the Atom feed format. It all began on June 16, 2003, with a blog post from Apache Software Foundation contributor Sam Ruby asking for feedback about what constitutes a well-formed blog entry.

The development of RSS 2.0 had been an unplanned hopscotch from a small group at Netscape to a smaller one at UserLand Software, but Atom was a barn raising. Hundreds of software developers, web publishers and technologists gathered for a discussion in the abstract that led to a concrete effort to build a well-specified syndication format and associated publishing API that could become Internet standards. Work was done on a project wiki that grew to over 1,500 pages. Everything was up for a vote, including a plebiscite on choosing a name that ballooned into a four-month-long bike shed discussion in which Pie, Echo, Wingnut, Feedcast, Phaistos and several dozen alternatives finally, mercifully, miraculously lost out to Atom.

The road map of the Atom wiki lists the people, companies and projects that jumped at the chance to create a new format for feeds. XML specification co-author Tim Bray wrote:

The time to write it all down and standardize it is not when you're first struggling to invent the technology. We now have aggregators and publishing systems and search engines and you-name-it, and I think the community collectively understands pretty well what you need, what you don't need, and what a good syntax looks like.

So, now's the time.

As someone whose only contribution to the project was voting on names, I think I was too quick to rule out Phaistos, a suggestion inspired by a clay disc produced by movable type before 1600 B.C. Comments on the wiki page proposing that monicker offer a sample of the name wars:

MikeBlumenthal: Does one of the great mysteries of antiquity, a document which, after almost 100 years of trying, is still a mystery not only as to its meaning but even as to its purpose, and which stands as a paragon of impenetrability, really fit as a name for an interoperability format?

Jayseae: Actually, the current state of RSS is pretty much a mystery -- why should this project be any different? I like the association with publishing -- though I'm not sure the pronunciation really flows. Perhaps it could be shortened somehow?

AsbjornUlsberg: Sorry, but I don't like it. We could just as gladly give the project any other Greek-sounding name, like Papadopolous.

Arising from all the chaos and debate, the Atom format became a beautifully specified IETF standard in 2005 edited by Mark Nottingham and Robert Sayre that's used today in millions of feeds. It is the most popular syndication format that's never argued about.

Everybody got that out of their system on the wiki.




w

Has the RSS Advisory Board Followed the Roadmap?

There has been recent discussion about the roadmap that was added to the RSS 2.0 specification in August 2002 announcing that there would be no new additions to RSS, freezing its set of elements and attributes forever and ever amen. The roadmap stated, "We anticipate possible 2.0.2 or 2.0.3 versions, etc. only for the purpose of clarifying the specification, not for adding new features to the format."

The RSS Advisory Board was formed 20 years ago to publish the specification and "make minor changes to the spec per the roadmap," as stated in the launch announcement on July 18, 2003.

If you're wondering whether the board has followed the roadmap, this timeline of RSS elements answers that question. There are 44 elements in RSS. This table shows when each element was introduced, the group that added it, and the version in which it first appeared.

There were 33 elements added to RSS by Netscape in 1999 and 11 by UserLand from 2000 to 2002. No elements have been added by the RSS Advisory Board.

ElementDate AddedPublisherVersion
channel03/1999NetscapeRSS 0.90
channel-description03/1999NetscapeRSS 0.90
channel-link03/1999NetscapeRSS 0.90
channel-title03/1999NetscapeRSS 0.90
channel-image03/1999NetscapeRSS 0.90
channel-image-link03/1999NetscapeRSS 0.90
channel-image-title03/1999NetscapeRSS 0.90
channel-image-url03/1999NetscapeRSS 0.90
channel-textInput03/1999NetscapeRSS 0.90
channel-textInput-description03/1999NetscapeRSS 0.90
channel-textInput-link03/1999NetscapeRSS 0.90
channel-textInput-name03/1999NetscapeRSS 0.90
channel-textInput-title03/1999NetscapeRSS 0.90
channel-item03/1999NetscapeRSS 0.90
channel-item-link03/1999NetscapeRSS 0.90
channel-item-title03/1999NetscapeRSS 0.90
rss07/1999NetscapeRSS 0.91
channel-copyright07/1999NetscapeRSS 0.91
channel-docs07/1999NetscapeRSS 0.91
channel-image-description07/1999NetscapeRSS 0.91
channel-image-height07/1999NetscapeRSS 0.91
channel-image-width07/1999NetscapeRSS 0.91
channel-language07/1999NetscapeRSS 0.91
channel-lastBuildDate07/1999NetscapeRSS 0.91
channel-managingEditor07/1999NetscapeRSS 0.91
channel-pubDate07/1999NetscapeRSS 0.91
channel-rating07/1999NetscapeRSS 0.91
channel-skipDays07/1999NetscapeRSS 0.91
channel-skipDays-day07/1999NetscapeRSS 0.91
channel-skipHours07/1999NetscapeRSS 0.91
channel-skipHours-hour07/1999NetscapeRSS 0.91
channel-webMaster07/1999NetscapeRSS 0.91
channel-item-description07/1999NetscapeRSS 0.91
channel-cloud12/2000UserLandRSS 0.92
channel-item-category12/2000UserLandRSS 0.92
channel-item-enclosure12/2000UserLandRSS 0.92
channel-item-source12/2000UserLandRSS 0.92
channel-category08/2002UserLandRSS 2.0
channel-generator08/2002UserLandRSS 2.0
channel-ttl08/2002UserLandRSS 2.0
channel-item-author08/2002UserLandRSS 2.0
channel-item-comments08/2002UserLandRSS 2.0
channel-item-guid08/2002UserLandRSS 2.0
channel-item-pubdate08/2002UserLandRSS 2.0

A few judgment calls had to be made compiling this list. The image and textInput elements were originally placed under the top-level element of the feed, but that is counted as their introduction even though they later moved inside channel. The rss element wasn't in the first version of RSS created by Netscape. Instead the top-level element was rdf:RDF until it was changed by Netscape to rss four months later.




w

Tara Calishain Explains: What is RSS?

The exodus of users away from Twitter and Reddit has led many of those information refugees to discover the joy of subscribing to feeds in a reader. RSS and Atom feeds are an enormous open decentralized network that can never be ruined under new ownership -- because there's no owner.

Tara Calishain of ResearchBuzz has written a 4,000-word introduction to RSS for people who are new to the world of feeds:

I could not do ResearchBuzz without RSS feeds. They're invaluable. And I think if you learn more about them, you'll appreciate why I consider RSS the most underrated tech on the Internet. That's what this article is about: I'm going to explain what RSS feeds are, show you how to find them, go over some of the RSS feed readers available, and, finally, list several tools and resources you might find useful on your journey.

... I follow over a thousand RSS feeds which deliver information to me throughout the day. Do you think I could visit a thousand websites a day to check for new information? Even if I tried to visit a thousand a week that would be over 142 websites a day. Assuming it took me two minutes to visit a site and check for new content, I would spend over 4.5 hours a day just visiting websites.

Do you see why I'm so grateful for RSS?

Calishain, who was blogging before Netscape created RSS in 1999, covers a lot more than the basics, showing how to find hidden feeds on websites, check a bunch of feeds for freshness and create keyword-based feeds to search sites like Google News, Hacker News and WordPress. Even experienced readers of readers will learn new things, and there's a collection of nine handy RSS Gizmos she has developed.

On that subject, Calishain just began programming a year ago:

In spring 2022 I decided to find out if I could really learn JavaScript after being diagnosed as autistic. (I'm a high school dropout and didn't think I could learn something like programming.)

I CAN! And I LOVE IT!

Welcome to the not-so-secret society of programmers, Tara! Please slow down a little. You're making the rest of us look bad.




w

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.




w

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.




w

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.











w

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.





w

How to Defeat the Far-Right: Lessons From the French Left

Analyst Jean Bricmont offers a deep analysis of how France's left-leaning coalition swept a plurality of seats in the recent snap elections.




w

What Kamala Harris’ Candidacy Means

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




w

Why Protest Works—Even When It’s Unpopular

High-profile, disruptive protests can lead to increased polarization—but often still yield increased public support for the protest’s goals, even if the tactics are criticized.






w

Here’s How to Respond to Crime, Not React to It

A new ballot measure in California would reverse progress on reducing mass incarceration. Here's what our regular correspondent Dortell Williams has to say about it.







w

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.




w

Who’s Helping Asylum Seekers?

While politicians on both sides of the aisle embrace “tough on immigration” policies, asylum seekers hoping to enter the U.S. are turning to grassroots organizations for information, safety, and dignity