ed

SE Radio 639: Cody Ebberson on Regulated Industries

Cody Ebberson, CTO of Medplum, joins host Sam Taggart to discuss the constraints that working in regulated industries add to the software development process. They explore some general aspects of developing for regulated industries, such as healthcare and finance, as well as a range of specific considerations that can add complexity and effort. Cody describes how translating regulatory requirements into test specifications and automating those tests can help streamline software development in these regulated environments. 

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




ed

Yahoo Groups Dropped RSS Feed Support

The RSS feeds of the RSS-Public and RSS-Board mailing lists are no longer available. Yahoo Groups used to offer feeds for each of its public lists, but Yahoo dropped support last year. A member of the service's product team said the feature was retired in July 2013.

To read the lists and subscribe to receive them in email, visit the Yahoo Groups pages for RSS-Public and RSS-Board.

We may move the lists to Google Groups, which does offer RSS feeds for each group.




ed

Should Feed Readers Count Unread Items?

Brent Simmons, the developer of the NetNewsWire RSS reader, is questioning his decision to put an unread count next to each feed, reasoning that it encourages people to be too obsessive about reading every item:

Instead of a dozen bookmarks, people had a hundred feeds. Or two hundred. Or two thousand.

And there was a tyranny behind keeping track of unread items and showing an unread count. People reacted in different ways, but many people felt like they always had to go through everything.

Including me. To this day.

I did not know this was going to happen. That was not the idea: it was a side effect of reasonable (at the time) choices.

I like seeing these counts on feeds where I need to read all items that are posted, but that's only a small percentage of the 100-120 feeds I follow. It would be nice to turn that off for others I read more casually.

Feedly presents unread counts on each feed and folder of feeds. There's a Mark As Read button to clear a count, but when you click it, the confirmation dialog acts like it's an extremely consequential decision: "Are you sure you want to mark this entire source as read? This operation cannot be undone."

I've posed a question on the RSS-Public mailing list: Do you think feed readers should count unread items?




ed

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.




ed

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.




ed

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.




ed

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.




ed

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.




ed

The RSS Advisory Board Just Turned 20

"Tomorrow we will run faster, stretch out our arms farther."

Today is the 20th birthday of the RSS Advisory Board, the group that publishes the RSS specification. It was formed on July 18, 2003, when the copyright of the specification was transferred to Harvard University, which immediately released it under a Creative Commons license and deferred all matters related to RSS to the new board.

At the time of the board's launch, here's how the founding members described its purpose:

Is the advisory board a standards body?

No. It will not create new formats and protocols. It will encourage and help developers who wish to use RSS 2.0. Since the format is extensible, there are many ways to add to it, while remaining compatible with the RSS 2.0 specification. We will help people who wish to do so.

What does the advisory board actually do?

We answer questions, write tech notes, advocate for RSS, make minor changes to the spec per the roadmap, help people use the technology, maintain a directory of compatible applications, accept contributions from community members, and otherwise do what we can to help people and organizations be successful with RSS.

This remains the purpose 140 dog years later. In addition to maintaining the current RSS specification, we are the official publisher of Netscape's RSS 0.90 and RSS 0.91 specifications and Yahoo's Media RSS specification.

We also offer an RSS Validator and RSS Best Practices Profile containing our recommendations for how to implement the format.

There's a resurgence of interest in RSS today as people discover the exhilarating freedom of the open web. Some of this is due to dissatisfaction with deleterious changes at big social sites like Twitter and Reddit. Some is due to satisfaction with Mastodon, a decentralized social network owned by nobody with more than one million active users. As long as there are social media gatekeepers using engagement algorithms to decide what you can and can't see, there will be a need to get around them. When someone offers an RSS or Atom feed and you subscribe to it in a reader, you get their latest updates without manipulation.

Here's to another 20 years of feeding readers, unlocking gates, helping developers adopt RSS and repeatedly getting asked the question, "Can an RSS item contain more than one enclosure?"




ed

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.






ed

Sacred Sustenance

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




ed

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.






ed

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.




ed

Dr. Ibram X Kendi’s Progress 2025 Vision for Education

In the face of Project 2025’s dystopian vision for education, Ibram X Kendi lays out a progressive alternative for public education in the U.S.










ed

Illegally Fired Workers Fight Back

The Unemployed Workers United wants to raise the financial and political costs of illegally firing workers for union activity.




ed

Not What They Expected: Grandparents As Day Care

Expanded federal funding for child care ended Oct. 1, and in many cases, extended families, including grandparents, will shoulder the burden.




ed

United Auto Workers’ Strike Yields Win for “Just Transition”

In bringing electric vehicle battery plants under its national contract, the UAW took a major step toward transitioning away from fossil fuels in a way that protects workers' rights.








ed

Mustard Braised Beef | Serious Eats : Recipes

need to try making this sometime




ed

15 Wish List Gifts for the Seasoned Foodie | OUR NOURISHING ROOTS

there are a few good ideas in here




ed

Edis

redis-server implemented in erlang with more (better?) persistance options




ed

Top Ten Health Books That Changed My Life &mdash; The Healthy Home Economist

this really is a good list of books




ed

Bacon and Apple Stuffed Pork Chops | Paleo Parents

We made this a few nights ago and it kicked ass.




ed

Salary Negotiation: Make More Money, Be More Valued | Kalzumeus Software

a long but well written and informative posting on how to negotiate your salary when taking a new job




ed

The AI or real quiz: US election edition

Test your knowledge of AI by completing our US elections edition of the AI or Real quiz




ed

Press Pack: Meet the gymnastics summer camp excited for the Olympics

Two Press Packers from Northern Ireland tell Newsround all about their gymnastics club and why they're so excited for the 2024 Paris Games.




ed

'I opened Latitude festival with my poem'

Anna, aged eleven, won a competition to open Latitude Festival with her poem, The Mother Tree. She told Newsround about her experience.




ed

Australia announces next steps to under-16 social media ban

Politicians in Australia's parliament will vote on the law next week and, if passed, it aims to stop children being allowed social media accounts. But for some kids there will be ways around it.




ed

Trump vs Harris: Everything you need to know about the US Election

With less than a day to go until the 2024 US election - here's everything you need to know...




ed

How has the world reacted to Donald Trump's election win?

Leaders around the world have started sending their congratulations to Trump.




ed

Donald Trump's win: YOUR questions answered

Donald Trump has won the 2024 US election and will be president for a second time from early next year. Lots of you had questions and we asked a BBC expert to answer them.




ed

Anti-Bullying Week: ‘United Against Bullying’

This week is the 19th annual Anti-Bullying Week, an event intended to raise awareness about bullying, and share advice about how children, teachers, parents and schools can all help stop it.




ed

Different types of bullying explained

It's Stand Up to Bullying Day. Find out more about the different ways in which bullying can happen.




ed

'Incredibly special' - Mary Earps makes history as new waxwork is revealed

Nope you're not seeing double! Take a look at the new wax figure of Mary Earps at Madame Tussauds.




ed

Rich celebs accused of harming planet by 'using private jets like taxis'

New research shows the amount of carbon dioxide released into the atmosphere from private jets between 2019 and 2023.




ed

Children in Need 2024: Everything you need to know

It's almost time for Children in Need day! And we want to hear about YOUR plans...




ed

Watch Newsround - signed and subtitled

A signed version of Newsround is available to watch every weekday for children who use British Sign Language.