<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-19930524</atom:id><lastBuildDate>Wed, 25 Jun 2008 08:10:59 +0000</lastBuildDate><title>Barr Code</title><description/><link>http://embeddedgurus.net/barr-code/</link><managingEditor>noreply@blogger.com (Michael Barr)</managingEditor><generator>Blogger</generator><openSearch:totalResults>76</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-3388757175687857122</guid><pubDate>Fri, 06 Jun 2008 11:26:00 +0000</pubDate><atom:updated>2008-06-06T07:54:27.761-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rtos</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>programming</category><title>RTOS Myth #4: The RTOS is in Charge</title><atom:summary type='text'>The Myth: The operating system is in charge and it decides when to switch from one application task to another.

The Truth: A real-time operating system (RTOS) is a very different beast than a multi-user desktop operating system, such as Linux.  In fact, an RTOS is simply a library of functions plus a timer tick interrupt handler.  

The only opportunities for an RTOS to effect a context switch </atom:summary><link>http://embeddedgurus.net/barr-code/2008/06/rtos-myth-5-rtos-is-in-charge.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-8945172309647059827</guid><pubDate>Mon, 28 Apr 2008 00:59:00 +0000</pubDate><atom:updated>2008-04-27T21:01:52.160-04:00</atom:updated><title>Windows Embedded Compact</title><atom:summary type='text'>From a recent entry in VDC's blog:

In an effort to remove any confusion around its embedded offerings, Microsoft has reorganized and rebranded its Windows Embedded product family. Going forward, new editions of Windows XP Embedded will be titled Windows Embedded Standard, Windows Embedded CE will be titled Windows Embedded Compact, and restricted licenses of Windows Vista and Windows XP will be </atom:summary><link>http://embeddedgurus.net/barr-code/2008/04/windows-embedded-compact.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-3200275005529440922</guid><pubDate>Sat, 26 Apr 2008 03:46:00 +0000</pubDate><atom:updated>2008-04-25T23:53:52.754-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>trends</category><category domain='http://www.blogger.com/atom/ns#'>programming</category><title>Real-Time Java is Dead</title><atom:summary type='text'>A few months less than ten years ago, I presented a paper at the Embedded Systems Conference (ESC) for the first time.  My 1.5 hour course was entitled "Embedded Java" or something similar.  This was in Silicon Valley, and the audience was standing room only--despite a rather large room to start with.

I've tracked technical and business developments in the world of embedded and real-time Java </atom:summary><link>http://embeddedgurus.net/barr-code/2008/04/real-time-java-is-dead.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-8891125762822998120</guid><pubDate>Tue, 08 Apr 2008 16:17:00 +0000</pubDate><atom:updated>2008-04-12T20:50:28.805-04:00</atom:updated><title>Embedded History Month</title><atom:summary type='text'>This seems to be the month for celebrating the history of embedded systems.  

Twenty-five year old compiler vendor IAR, which just launched a nicely redesigned website, has published an interesting history of the company and its founder, Anders Rundgren.

And next week I'll be out at the Embedded Systems Conference, which is celebrating twenty consecutive years of bringing the community together</atom:summary><link>http://embeddedgurus.net/barr-code/2008/04/embedded-systems-history.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-7175357080568599295</guid><pubDate>Thu, 20 Mar 2008 13:17:00 +0000</pubDate><atom:updated>2008-03-20T09:28:34.629-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>education</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>engineering</category><category domain='http://www.blogger.com/atom/ns#'>trends</category><title>Educating Embedded Engineers</title><atom:summary type='text'>One of the biggest problems affecting the embedded systems industry is a shortage of properly skilled firmware developers.  I spoke of this in a recent video interview.

Embedded software developers need some skills taught to Electrical Engineers and others taught to Computer Scientists.  They also need practical hands-on experience.  Unfortunately, even the best of the Computer Engineering </atom:summary><link>http://embeddedgurus.net/barr-code/2008/03/educating-embedded-engineers.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-716515536776557666</guid><pubDate>Wed, 19 Mar 2008 17:06:00 +0000</pubDate><atom:updated>2008-03-20T10:05:12.867-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rtos</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>programming</category><title>Toward a Better Mutex API</title><atom:summary type='text'>A few months ago I blogged that mutexes and semaphores are distinct RTOS primitives.  Unfortunately, the APIs of today's most popular commercial RTOSes only add to the confusion for application programmers.  

For example, consider the VxWorks API, which not only forces mutexes and semaphores into an inappropriately common-looking API (semMXxx vs. semCXxx) but also adds a third "binary semaphore"</atom:summary><link>http://embeddedgurus.net/barr-code/2008/03/toward-better-mutex-api.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-1014824234387782563</guid><pubDate>Wed, 12 Mar 2008 20:21:00 +0000</pubDate><atom:updated>2008-03-19T14:19:24.882-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rtos</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><title>RTOS Myth #3: Mutexes are Needed at the Task Level</title><atom:summary type='text'>The Myth: Mutexes are a useful intertask synchronization primitive, which you should expect to use frequently.

The Truth: Mutexes are a necessary feature of all real-time operating systems.  However, best practice is to use them only inside functions that must be reentrant.  That is, you should use mutexes only inside functions that are or could be called by two or more tasks.

Mutexes, as their</atom:summary><link>http://embeddedgurus.net/barr-code/2008/03/rtos-myth-3-mutexes-are-needed-at-task.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-2305804166737435148</guid><pubDate>Thu, 06 Mar 2008 14:05:00 +0000</pubDate><atom:updated>2008-04-09T21:06:26.410-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rtos</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>programming</category><category domain='http://www.blogger.com/atom/ns#'>safety</category><title>RTOS Myth #2: RMA is for Academics</title><atom:summary type='text'>The Myth: The Rate Monotonic Algorithm (RMA) is an interesting theory but it has no practical meaning for users of real-time operating systems.

The Truth: For starters,

All of the popular real-time operating systems (e.g., VxWorks, ThreadX, and uC/OS-II) feature fixed-priority preemptive schedulers
RMA is the optimal fixed-priority scheduling algorithm (and note that dynamic-priority algorithms</atom:summary><link>http://embeddedgurus.net/barr-code/2008/03/rtos-myth-2-rma-is-for-academics.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-6759346567083977608</guid><pubDate>Tue, 04 Mar 2008 16:53:00 +0000</pubDate><atom:updated>2008-03-04T11:56:46.441-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>trends</category><title>VDC Counts 4 Billion Embedded Products Shipped in 2006</title><atom:summary type='text'>Read Venture Development Corporations OnTarget Blog for more details.  But in a nutshell, in the last year for which data are available, VDC estimates 4 billion total units of embedded products, most without a commercial operating system inside.  By other estimates, total CPU shipments in 2006 were around 9 billion, but some of those are PCs/Macs and there are also numerous systems containing two</atom:summary><link>http://embeddedgurus.net/barr-code/2008/03/vdc-counts-4-billion-embedded-products.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-2662912311024721248</guid><pubDate>Thu, 28 Feb 2008 14:09:00 +0000</pubDate><atom:updated>2008-04-28T19:14:43.393-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rtos</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>programming</category><title>More Bad RTOS Information</title><atom:summary type='text'>The Internet (and magazines and conferences) are filled with bad information about when to choose an RTOS.  In short, the world wants to sell you an RTOS, even when you don't need one or the use of one would overly complicate your software design.

Here are two generalizations from a recent whitepaper:

Operating systems make programming more efficient and better structured, and their use is now </atom:summary><link>http://embeddedgurus.net/barr-code/2008/02/more-bad-rtos-information.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-3608554169251864886</guid><pubDate>Thu, 28 Feb 2008 12:38:00 +0000</pubDate><atom:updated>2008-02-28T08:35:46.810-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>trends</category><title>Embedded Systems History</title><atom:summary type='text'>The editors of Embedded Systems Design recently put together an interesting historical timeline of the embedded systems industry.  To learn some history, take a stroll over to http://www.embedded.com/timeline/.</atom:summary><link>http://embeddedgurus.net/barr-code/2008/02/embedded-systems-history.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-6782991205232504103</guid><pubDate>Wed, 13 Feb 2008 20:36:00 +0000</pubDate><atom:updated>2008-02-28T08:37:08.208-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>patents</category><category domain='http://www.blogger.com/atom/ns#'>trends</category><title>Kill the Patent Office</title><atom:summary type='text'>I'm not sure what to make of all the criticism of and suggested improvement to the U.S. patent system.  However, I found this article thought-provoking:

http://www.hosteny.com/archive/Hosteny%2005-05.pdf</atom:summary><link>http://embeddedgurus.net/barr-code/2008/02/kill-patent-office.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-1746292751006240244</guid><pubDate>Mon, 11 Feb 2008 22:05:00 +0000</pubDate><atom:updated>2008-02-11T17:14:43.423-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>education</category><category domain='http://www.blogger.com/atom/ns#'>outsourcing</category><category domain='http://www.blogger.com/atom/ns#'>india</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>trends</category><category domain='http://www.blogger.com/atom/ns#'>programming</category><title>Embedded C Quiz Results</title><atom:summary type='text'>When we redesigned the Netrino.com website late last year, we thought it'd be fun to challenge our more than 20,000 monthly visitors (mostly embedded software engineers) to a skills test.  So we developed a ten question multiple-choice quiz (http://www.netrino.com/Embedded-Systems/Embedded-C-Quiz).  And it has been a popular feature of the new site, with a couple hundred participants just in the </atom:summary><link>http://embeddedgurus.net/barr-code/2008/02/embedded-c-quiz-results.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-5781067032921222383</guid><pubDate>Thu, 07 Feb 2008 21:19:00 +0000</pubDate><atom:updated>2008-02-08T17:21:07.230-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>ethics</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>trends</category><category domain='http://www.blogger.com/atom/ns#'>programming</category><title>Breathalizer Source Code to Get a Day in Court</title><atom:summary type='text'>Here's an interesting news story at the intersection of embedded systems and due process:

http://www.news.com/Police-Blotter-Intoxilyzer-code-must-be-disclosed/2100-1030_3-6227951.html

How many potential bugs might a knowledgable expert witness spot in your code?  Are the comments in your source accurate and clean enough for a judge or jury to read?</atom:summary><link>http://embeddedgurus.net/barr-code/2008/02/breathalizer-source-code-to-get-day-in.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-1856014394563223710</guid><pubDate>Thu, 31 Jan 2008 14:42:00 +0000</pubDate><atom:updated>2008-01-31T10:06:27.597-05:00</atom:updated><title>USB On-The-Go</title><atom:summary type='text'>Last fall, Netrino was asked by a prospective client to assist with the design of a product to be controlled by a smartphone.  At first, the requirement was stated as a Bluetooth connection between the smartphone and the product.  Later, however, Bluetooth was deemed by the client too complex a connection for their customers to manage.  Thus the connection requirement was changed to a USB link </atom:summary><link>http://embeddedgurus.net/barr-code/2008/01/usb-on-go.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-6225508192263104810</guid><pubDate>Tue, 29 Jan 2008 16:16:00 +0000</pubDate><atom:updated>2008-01-29T11:43:07.861-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>trends</category><title>Twenty Years of Embedded Systems Design</title><atom:summary type='text'>It's hard to believe, but industry magazine Embedded Systems Design, which I edited for five years from 1999 to 2004, is this year celebrating its twentieth continuous year in print.

The popular magazine, which was titled Embedded Systems Programming for about the first 16 years, started its run in 1988, at a time when the widespread use of assembly language was challenged by some engineers as </atom:summary><link>http://embeddedgurus.net/barr-code/2008/01/twenty-years-of-embedded-systems-design.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-851897591772845185</guid><pubDate>Mon, 28 Jan 2008 16:34:00 +0000</pubDate><atom:updated>2008-03-19T13:06:26.555-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rtos</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>programming</category><title>RTOS Myth #1: Mutexes and Semaphores are Interchangeable</title><atom:summary type='text'>The Myth: Mutexes and semaphores are similar--even interchangeable--operating system primitives.  

The Truth: Mutexes and semaphores should always be used for distinct purposes, and should thus feature distinct APIs.  (My recommendations to RTOS vendors are at the end.)

The cause of the confusion between mutexes and semaphores is historical, dating all the way back to the 1974 invention of the </atom:summary><link>http://embeddedgurus.net/barr-code/2007/08/rtos-myth-1-mutexes-and-semaphores-are.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-564602743694533490</guid><pubDate>Thu, 24 Jan 2008 00:56:00 +0000</pubDate><atom:updated>2008-01-24T14:23:31.156-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rtos</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><title>Are all RTOSes the Same?</title><atom:summary type='text'>Having just, coincidentally, returned from teaching a two-day hands-on RTOS course in Florida, I was greeted this morning by the following message from an RTOS company president in my inbox:

Recently, I have had a statement by you thrown at me. The statement essentially said that all RTOSes are the same, or something to that effect. Obviously, you and I both know that there are differences, some</atom:summary><link>http://embeddedgurus.net/barr-code/2008/01/are-all-rtoses-same.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-9178203144499576456</guid><pubDate>Mon, 31 Dec 2007 19:45:00 +0000</pubDate><atom:updated>2008-01-01T06:49:01.144-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>safety</category><title>Embedded Software and Product Recalls</title><atom:summary type='text'>Here's an example of a bug in an embedded system (a dive computer for use in Scuba) that might have killed http://www.cpsc.gov/cpscpub/prerel/prhtml06/06194.html



The design of bridges and roads and the engineers who work on them are regulated by states and the federal government.  The modern equivalent of bridges and roads are often embedded computers, but there is little regulation outside of</atom:summary><link>http://embeddedgurus.net/barr-code/2007/12/embedded-software-and-product-recalls.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-5582612180394200933</guid><pubDate>Thu, 06 Dec 2007 13:34:00 +0000</pubDate><atom:updated>2007-12-06T13:22:55.354-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>programming</category><title>Compiler Quality and C's volatile Keyword</title><atom:summary type='text'>At at a meeting with a client yesterday, I was reminded of a conversation we'd had about eighteen months ago at an Embedded Systems Conference.  At that time the client, I'll call him John, was having a problem with C's volatile keyword on a PIC microcontroller.

John had written a few lines of C code to swap the contents of two peripheral registers, perhaps something along these lines:

uint8_t</atom:summary><link>http://embeddedgurus.net/barr-code/2007/12/compiler-quality-and-cs-volatile.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-6635553721009208454</guid><pubDate>Tue, 06 Nov 2007 21:29:00 +0000</pubDate><atom:updated>2007-11-07T12:32:18.967-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rtos</category><category domain='http://www.blogger.com/atom/ns#'>education</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>programming</category><category domain='http://www.blogger.com/atom/ns#'>safety</category><title>Public Course on Multithreaded Programming</title><atom:summary type='text'>This coming January, I'll travel from chilly Baltimore to sunny Miami to teach an in-depth training course about the proper use of real-time operating systems to design multithreaded firmware.  The aim of the class is to clarify the safe and correct use of RTOS primitives, such as mutexes, semaphores, and mailboxes.

The two-day course, called Multithreaded Programming with uC/OS-II, will be held</atom:summary><link>http://embeddedgurus.net/barr-code/2007/11/public-course-on-multithreaded.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-6417144393818818656</guid><pubDate>Wed, 19 Sep 2007 11:52:00 +0000</pubDate><atom:updated>2007-09-19T08:07:28.168-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>ethics</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><category domain='http://www.blogger.com/atom/ns#'>safety</category><title>Building Reliable Systems</title><atom:summary type='text'>I'm writing this live from the Embedded Systems Conference in Boston, while participating in a birds of a feather discussion moderated by Jack Ganssle.  The subject of the session is Building Reliable Systems.

The discussion here amongst perhaps 80 engineers (about 75% electrical engineers by education) initially focused on resources and schedules and the inevitability of bugs, but has now </atom:summary><link>http://embeddedgurus.net/barr-code/2007/09/building-reliable-systems.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-2770947854792313414</guid><pubDate>Sun, 09 Sep 2007 15:15:00 +0000</pubDate><atom:updated>2007-09-19T11:18:18.684-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rtos</category><category domain='http://www.blogger.com/atom/ns#'>embedded</category><title>Embedded Industry Survey Results</title><atom:summary type='text'>I was quoted (mostly accurately :-) over at Embedded.com, in an analysis of the results of the 2007 survey of embedded system designers.  There are some interesting year-on-year trends, including an increase in the use of C vs. C++ and a decrease in the use of both commercial and open-source operating systems such as VxWorks and Linux.</atom:summary><link>http://embeddedgurus.net/barr-code/2007/09/embedded-industry-survey-results.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-2506107394919734455</guid><pubDate>Fri, 17 Aug 2007 14:27:00 +0000</pubDate><atom:updated>2007-08-17T10:29:00.672-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>embedded</category><title>Embedded.com Gets a Facelift</title><atom:summary type='text'>The popular website Embedded.com just got a long-awaited makeover.  Check it out!</atom:summary><link>http://embeddedgurus.net/barr-code/2007/08/embeddedcom-gets-facelift.html</link><author>noreply@blogger.com (Michael Barr)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19930524.post-4045412561904837065</guid><pubDate>Mon, 30 Jul 2007 17:42:00 +0000</pubDate><atom:updated>2007-07-30T13:57:02.414-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>embedded</category><title>Medical Product Opportunity</title><atom:summary type='text'>My wife and I recently had a new baby boy (our second; thanks! =).  At the hospital, I couldn't help noticing just how primitive much of the equipment in use is by modern standards.  Of course, from the point of view of the hospital staff this stuff is positively state-of-the-art!  But as an electronics designer, I know better.

Take for example the fetal heart monitor.  The state-of-the-art </atom:summary><link>http://embeddedgurus.net/barr-code/2007/07/medical-product-opportunity.html</link><author>noreply@blogger.com (Michael Barr)</author></item></channel></rss>