<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Carlos Lemus</title>
    <description>The latest articles on DEV Community by Carlos Lemus (@carlosaln).</description>
    <link>https://dev.to/carlosaln</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F428884%2F398d30a3-d4c3-4ce8-b852-dce3f285d96b.jpeg</url>
      <title>DEV Community: Carlos Lemus</title>
      <link>https://dev.to/carlosaln</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/carlosaln"/>
    <language>en</language>
    <item>
      <title>The Four Stages of IoT - The Data Processing Stage</title>
      <dc:creator>Carlos Lemus</dc:creator>
      <pubDate>Fri, 14 Aug 2020 16:17:32 +0000</pubDate>
      <link>https://dev.to/carlosaln/the-four-stages-of-iot-the-processing-stage-208k</link>
      <guid>https://dev.to/carlosaln/the-four-stages-of-iot-the-processing-stage-208k</guid>
      <description>&lt;p&gt;&lt;em&gt;This is the third post in the series The Four Stages of IoT: A Data-Centric Taxonomy of the IoT and it was originally posted on &lt;a href="https://carloslem.us/blog/"&gt;my website's blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Previously, we discussed the &lt;a href="https://dev.to/carlosaln/the-four-stages-of-iot-the-connectivity-stage-3fjj"&gt;connectivity stage&lt;/a&gt;, which explored how devices establish a connection with edge devices or the ecosystem backend. Today, we will go one layer deeper and focus on &lt;em&gt;what&lt;/em&gt; we do with the data after establishing a reliable connection. I refer to this as the Data Processing Stage.&lt;/p&gt;

&lt;p&gt;Data processing can happen in the back end or at the edge, and it involves performing work on the data such as filtering, transformations, enrichment, or analytics.&lt;/p&gt;

&lt;h1&gt;
  
  
  Types of Data Processing
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Filtering&lt;/strong&gt; deals with monitoring device data and accepting or rejecting the entire message or parts of it based on predefined criteria.&lt;br&gt;
For example, adding and removing fields from legacy payload formats to standardize them with newer formats&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Transformations&lt;/strong&gt; deals with transformation and manipulation tasks to standardize data and improve readability. For example, expanding the "C" in a temperature field's unit to "Celsius"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Enrichment&lt;/strong&gt; deals with adding contextual data to device messages. For example, appending a customer ID to the current message, based on the device ID.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Analytics&lt;/strong&gt; deals with tasks such as deriving insights from the data in real time and interacting with Machine Learning models. &lt;u&gt;This is perhaps the most critical component of a data-centric IoT architecture&lt;/u&gt; For example, deriving a Key Performance Indicator (KPI) based on IoT device data to understand equipment efficiency or executing a preventive maintenance Machine Learning model to address breakage before it happens.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Methods of Data Processing
&lt;/h1&gt;

&lt;p&gt;Although data processing applications can live in physical servers, they are more common on edge computing devices or in the form of cloud-based Serverless Functions, Container Deployments, or Virtual Machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Edge Devices
&lt;/h2&gt;

&lt;p&gt;Because of their powerful hardware, Edge devices can typically perform most types of data processing. It is common to see ML models hosted on the Edge device for immediate decision making about how it ought to manage local IoT Devices.&lt;/p&gt;

&lt;p&gt;For example, an Edge Device could discard duplicate messages (filtering), attach building information before sending the message to the backend (enrichment), and using an ML model to alert local operators of a device in need of repair (analytics).&lt;/p&gt;

&lt;h2&gt;
  
  
  Virtual Machines and Servers
&lt;/h2&gt;

&lt;p&gt;Data Processing applications can be hosted as a long-running job inside of virtual machines and servers. This approach is particularly useful when a specific stack not available in other compute platforms is required. For example, if you are required to use legacy applications running on legacy hardware or software, you might be limited to a server or virtual machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Containers
&lt;/h2&gt;

&lt;p&gt;Container deployments remove much of the operational burden of maintaining a server, and with managed services like Google Cloud Run or AWS Fargate, it is also possible to only run the application when it is needed—such as when a device message is received.&lt;/p&gt;

&lt;p&gt;Containers are preferable over Serverless Functions when large volumes of data need to be processed or when a specific software stack is not available on a Serverless Function platform.&lt;/p&gt;

&lt;p&gt;For example, if you were ingesting tens-of-thousands of messages with software requiring disk access, Containers would be an optimal choice. That's because they are easily scalable and configurable, and they are not tightly-coupled with any hardware platform nor operating system. However, this could have a slight added cost of operational management in the form of cluster configuration and container image management. &lt;/p&gt;

&lt;h2&gt;
  
  
  Serverless Functions
&lt;/h2&gt;

&lt;p&gt;Serverless Functions provide the most hands-off experience in infrastructure management, and they are most apt for sporadic data processing. Writing a Serverless Function is as simple as selecting an environment, writing your application, and deploying it to the cloud.&lt;/p&gt;

&lt;p&gt;Furthermore, cloud providers typically bill Functions per-execution, which can make the financial cost of data processing very close to 0 for low-volume workloads.&lt;/p&gt;

&lt;p&gt;For example, imagine you have two developers assigned to build an application that processes incoming data for 1000 devices every second. Because the team is small, you want to avoid them as much of the infrastructure heavy-lifting as you can. Serverless Functions would achieve this by abstracting away most of the underlying infrastructure, and it would enable the pair to focus primarily on the code dealing with business and data processing logic. Moreover, the billing cost of running such a function would be roughly $0.30/month for processing data from all 1000 devices each second of the year!&lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  An Example Data Processing Application
&lt;/h1&gt;

&lt;p&gt;The following diagram showcases an application which uses an AWS Lambda function to perform all the data processing activities discussed in this post:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ueeAtPs2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://carloslem.us/images/data_processing_example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ueeAtPs2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://carloslem.us/images/data_processing_example.png" height="70%"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;The Data Processing Stage provides the applications used to filter, transform, enrich, and analyze data from IoT devices.  These applications can live on the Edge device, or server-side as Virtual Machines, container deployments, or serverless functions. &lt;/p&gt;

&lt;p&gt;In the next post, we will explore the Data Storage stage, which consists of the file systems, databases, object stores, and "data lakes" that temporarily or permanently hold data about IoT ecosystems. &lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;sup&gt;1&lt;/sup&gt; The assumption here is based on ~2.7 million executions of AWS Lambda using the following configuration: 128MB, 1 second executions, free tier included.&lt;/small&gt;&lt;/p&gt;

</description>
      <category>iot</category>
      <category>architecture</category>
      <category>theory</category>
      <category>data</category>
    </item>
    <item>
      <title>The Four Stages of IoT: The Connectivity Stage</title>
      <dc:creator>Carlos Lemus</dc:creator>
      <pubDate>Sun, 26 Jul 2020 20:54:30 +0000</pubDate>
      <link>https://dev.to/carlosaln/the-four-stages-of-iot-the-connectivity-stage-3fjj</link>
      <guid>https://dev.to/carlosaln/the-four-stages-of-iot-the-connectivity-stage-3fjj</guid>
      <description>&lt;p&gt;&lt;em&gt;This is the second post in the series The Four Stages of IoT: A Data-Centric Taxonomy of the IoT, and it was originally posted on &lt;a href="https://carloslem.us/blog/" rel="noopener noreferrer"&gt;my website's blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In my previous post, I discussed the idea of dividing IoT Architectures into four stages: connectivity, processing, storage, and data access. Today we will explore the &lt;u&gt;Connectivity Stage&lt;/u&gt; which is the first step in the journey towards value-generation from IoT Device Data. This stage is composed of the mechanisms whose purpose is to facilitate communications to and from IoT devices: these include services, applications, and communication protocols.&lt;/p&gt;

&lt;p&gt;We will now see what some of these mechanisms are and how they are leveraged to stream data to and from backend applications. We will accomplish this by breaking the Connectivity Stage down into three main components: the Field IoT Device, the Edge Device, and the Ecosystem Backend.&lt;/p&gt;




&lt;h2&gt;
  
  
  THE FIELD IOT DEVICE
&lt;/h2&gt;

&lt;p&gt;"IoT devices" are those collecting data about an environment and acting in response to commands and notifications from a Server: a smart thermostat, a weather station, or a current meter can all be examples of IoT devices. &lt;/p&gt;

&lt;p&gt;In this instance, we define a "Server" as any entity which consumes IoT Device Data and pushes notifications and commands back to the device: this could be an actual server, edge device, or a cloud provider.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connectivity at the Field IoT Device
&lt;/h3&gt;

&lt;p&gt;IoT devices can connect to Servers in one of three ways.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Some devices simply communicate directly with the server&lt;/strong&gt; through popular protocols like LTE or Wi-Fi. Cellular-enabled fleet tracking systems like those put on cargo trucks are an example of this category of devices, which have enough CPU, memory, and hardware capabilities to transmit data through the Internet independently.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcarloslem.us%2Fimages%2Fdirect_example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcarloslem.us%2Fimages%2Fdirect_example.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Other devices must first go through an edge device.&lt;/strong&gt; If you wear a fitness tracker that syncs with your phone and whose data gets uploaded to the cloud, then you have an IoT and Edge device combo (your watch and phone, respectively). Edge Devices can help with local data processing and with saving on data transfer costs through local buffering. They can also serve as a protocol intermediary to assist resource-constrained devices by receiving data in low-power protocols like Bluetooth Low Energy (BLE) and relaying it to the backend over Wi-Fi, Cellular, or Ethernet. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcarloslem.us%2Fimages%2Fedge_example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcarloslem.us%2Fimages%2Fedge_example.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Yet other IoT devices must first communicate with other IoT devices in order to relay their messages to the closest Edge device&lt;/strong&gt;. For example, Smart Lighting systems often relay their data from light bulb to light bulb before reaching a hub device. Ad-hoc and mesh network protocols are the primary choices for enabling this type of communication. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcarloslem.us%2Fimages%2Fmesh_example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcarloslem.us%2Fimages%2Fmesh_example.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Activity for IoT devices
&lt;/h3&gt;

&lt;p&gt;Once the IoT Field Device is connected, data can be sent, received, and stored as illustrated in the table below.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data Activity&lt;/th&gt;
&lt;th&gt;Description and Examples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sending Data&lt;/td&gt;
&lt;td&gt;Devices send data such as sensor measurements, execution reports, and error logs to a Server.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Receiving Data&lt;/td&gt;
&lt;td&gt;Devices subscribe to data from the Server like firmware update commands and the status of job executions through messaging systems MQTT.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keeping State  (available memory, error count, etc.)&lt;/td&gt;
&lt;td&gt;A device reports metrics to the Server and relies on it to store them, analyze them, and react to them by pushing commands back to the device.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  THE EDGE DEVICE
&lt;/h2&gt;

&lt;p&gt;The role of Edge devices is to collect data from IoT devices and to relay that data to the ecosystem backend. As mentioned above, these devices can come in the form of Smart Lighting hubs, mobile phones, voice assistants, and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connectivity at the Edge Device
&lt;/h3&gt;

&lt;p&gt;Edge Devices use standard IT protocols such as Ethernet, Wi-Fi, or cellular to connect to the backend. Furthermore, they often support low-power protocols such as BLE, ZigBee, and Z-Wave to connect to resource-constrained IoT devices.&lt;/p&gt;

&lt;p&gt;Edge Device Software such as &lt;a href="https://aws.amazon.com/greengrass/" rel="noopener noreferrer"&gt;AWS IoT Greengrass&lt;/a&gt;, &lt;a href="https://azure.microsoft.com/en-us/services/iot-edge/" rel="noopener noreferrer"&gt;Azure IoT Edge&lt;/a&gt;, and &lt;a href="https://www.edgexfoundry.org/" rel="noopener noreferrer"&gt;EdgeX Foundry&lt;/a&gt; provide frameworks to connect to IoT devices, to process their data locally, to respond to events at the edge, and finally, to pass the data on to the backend.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Activity for Edge Devices
&lt;/h3&gt;

&lt;p&gt;When a Field IoT Device connects to the Edge Device, data can be sent, received, and stored as illustrated in the table below.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data Activity&lt;/th&gt;
&lt;th&gt;Example Data Flow&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Transferring data to/from IoT devices&lt;/td&gt;
&lt;td&gt;IoT devices use an Edge Device as their Server and send it sensor readings and system logs. The Edge Device in turn may pass this data on to the ecosystem backend.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keeping State  (available memory, error count, etc.)&lt;/td&gt;
&lt;td&gt;The Edge device can store a limited amount of state for both itself and the IoT devices which it communicates with. Typically, enough history is kept here to enable local decision making. For example, the Edge Device could increase the speed of a fan after identifying a high temperature excess.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  THE ECOSYSTEM BACKEND
&lt;/h2&gt;

&lt;p&gt;Finally we arrive at the Ecosystem Backend where the data is analyzed, processed, stored, and made available in different formats to business intelligence and data analytics applications. The Backend can run on on-premise servers or in cloud platforms such as Amazon Web Services. &lt;/p&gt;

&lt;h3&gt;
  
  
  Connectivity at Ecosystem Backend
&lt;/h3&gt;

&lt;p&gt;IoT and Edge Devices can both communicate with the Backend.&lt;/p&gt;

&lt;p&gt;MQTT is a common protocol for communicating to both Field and Edge devices in solutions like AWS IoT and Azure IoT. Furthermore, in these cloud-based solutions, HTTP is available for applications which require a RESTful interface and WebSockets for integration with real-time web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Activity for the Ecosystem Backend
&lt;/h3&gt;

&lt;p&gt;When either a Field IoT Device or an Edge Device connect to the Ecosystem backend, data can be sent, received, and stored as illustrated in the table below.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data Activity&lt;/th&gt;
&lt;th&gt;Description and Examples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Transferring data to/from IoT devices&lt;/td&gt;
&lt;td&gt;Devices with sufficient hardware capabilities can send reports, logs, and alerts directly to the Backend over a robust mechanism such as Ethernet.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transferring data to/from Edge Devices&lt;/td&gt;
&lt;td&gt;Edge Devices relay data from IoT devices to the backend, and they also sync up device states, system logs, and edge decision logic.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keeping State  (available memory, error count, etc.)&lt;/td&gt;
&lt;td&gt;The Ecosystem Backend is the primary location for storing device state and for applying rules to respond to state events. History of device state is also regularly kept here for auditing and anomaly detection purposes.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The Connectivity Stage provides the means to load data from IoT devices into the Ecosystem backend where it can be analyzed and turned into actionable insights. We reviewed some mechanisms–including services, applications, and communication protocols–that are used to carry out this extraction throughout the entire Connectivity Stage: the Field IoT Device, the Edge Device, and the Ecosystem Backend.&lt;/p&gt;

&lt;p&gt;To finalize, here is a diagram depicting an example IoT Architecture which uses several methods for connectivity to transfer different types of data:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcarloslem.us%2Fimages%2Farchitecture_example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcarloslem.us%2Fimages%2Farchitecture_example.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the next post, I will review the Data Processing Stage, which is where data is enhanced with contextual information and analyzed for patterns over time.&lt;/p&gt;

</description>
      <category>iot</category>
      <category>architecture</category>
      <category>theory</category>
      <category>connectivity</category>
    </item>
    <item>
      <title>The Four Stages of IoT: A Data-Centric Taxonomy of the IoT</title>
      <dc:creator>Carlos Lemus</dc:creator>
      <pubDate>Sun, 12 Jul 2020 15:12:25 +0000</pubDate>
      <link>https://dev.to/carlosaln/the-four-stages-of-iot-a-data-centric-taxonomy-of-the-iot-2oo2</link>
      <guid>https://dev.to/carlosaln/the-four-stages-of-iot-a-data-centric-taxonomy-of-the-iot-2oo2</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally posted on &lt;a href="https://carloslem.us/blog/"&gt;my website's blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The Internet of Things (IoT) isn’t new. It is now a subject with a myriad of books written about it, new exciting college electives, and a generous assortment of products that have spectacularly succeeded or failed. As such, members of the tech community naturally have devised comprehensive, high-level taxonomies of IoT ecosystems.&lt;/p&gt;

&lt;p&gt;These usually focus on smart devices and how they, when connected to a network or the Internet, can publish their data to a remote server or cloud provider. What happens to the data from there on is often reduced to a nondescript label of “data analytics.” However, &lt;strong&gt;the modern value of IoT is not merely remote data acquisition (we’ve had that for decades): it is the availability of insights about a massive amount of data over an extended time period.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because of that, in this blog series I'm titling "The Four Stages of IoT," I will advocate for a &lt;strong&gt;data-centric taxonomy of the IoT&lt;/strong&gt;. I will explore how edge and cloud computing are used in tandem today to extract large-scale, powerful, value-generating insights. With data as the epicenter, I will show you, through examples, how to dissect and understand an IoT ecosystem in four stages: connectivity, processing, storage, and access.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KVVf5cYE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://carloslem.us/images/four_stages.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KVVf5cYE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://carloslem.us/images/four_stages.png" alt="Four Stages of IoT illustration"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>iot</category>
      <category>architecture</category>
      <category>theory</category>
    </item>
  </channel>
</rss>
