<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Home on nyadgar.com</title>
		<link>https://nyadgar.com/</link>
		<description>Recent content in Home on nyadgar.com</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Mon, 06 Apr 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://nyadgar.com/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Making a JSON Parser in Haskell</title>
				<link>https://nyadgar.com/posts/making-a-json-parser-in-haskell/</link>
				<pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate>
				<guid>https://nyadgar.com/posts/making-a-json-parser-in-haskell/</guid>
				<description>&lt;div class=&#34;box box-info&#34;&gt;&#xA;    &lt;span class=&#34;box-icon&#34; aria-hidden=&#34;true&#34;&gt;&#xA;        &lt;svg viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; width=&#34;20&#34; height=&#34;20&#34;&gt;&lt;circle cx=&#34;12&#34; cy=&#34;12&#34; r=&#34;10&#34;&gt;&lt;/circle&gt;&lt;line x1=&#34;12&#34; y1=&#34;11&#34; x2=&#34;12&#34; y2=&#34;16&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;12&#34; y1=&#34;8&#34; x2=&#34;12.01&#34; y2=&#34;8&#34;&gt;&lt;/line&gt;&lt;/svg&gt;&#xA;    &lt;/span&gt;&#xA;    &lt;span class=&#34;box-label sr-only&#34;&gt;Info&lt;/span&gt;&#xA;    &lt;div class=&#34;box-body&#34;&gt;&#xA;        If you are here to explore the source code click &lt;a href=&#34;https://github.com/noam-g4/json-parser/&#34;&gt;here.&lt;/a&gt;&#xA;    &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;This article is different from my usual. I&amp;rsquo;m inviting you to join me in writing a JSON parser in Haskell. We&amp;rsquo;ll review the &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc8259&#34;&gt;JSON RFC standards&lt;/a&gt; and create a Haskell data model for valid JSON. For parsing, I challenged myself to avoid consulting other implementations, believing such challenges enhance problem-solving skills.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Problem With Feature Flags</title>
				<link>https://nyadgar.com/posts/the-problem-with-fetaure-flags/</link>
				<pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate>
				<guid>https://nyadgar.com/posts/the-problem-with-fetaure-flags/</guid>
				<description>&lt;h2 id=&#34;what-is-a-feature-flag&#34;&gt;What is a &lt;em&gt;Feature-Flag&lt;/em&gt;?&lt;/h2&gt;&#xA;&lt;p&gt;A feature-flag service is essentially a configuration server that allows your applications to read real-time configurations (i.e., &lt;em&gt;feature-flags&lt;/em&gt; or &lt;em&gt;togglers&lt;/em&gt;). For instance, if you&amp;rsquo;ve deployed a new feature integrated across your stack, you&amp;rsquo;ll want to ensure that all microservices involved can be toggled to support it using a single flag. This approach enables your teams to deploy changes at their own pace while ensuring the new feature is available only when all relevant services are ready to support it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Monads (finally)</title>
				<link>https://nyadgar.com/posts/monad/</link>
				<pubDate>Sun, 08 Jun 2025 00:00:00 +0000</pubDate>
				<guid>https://nyadgar.com/posts/monad/</guid>
				<description>&lt;p&gt;If you have searched for &lt;em&gt;monads&lt;/em&gt; and reached this article,&#xA;you probably have some degree of knowledge about monads.&#xA;You may have already put a fair amount of effort into learning monads.&#xA;In any way, whenever you&amp;rsquo;ve tried to learn monads, you have likely&#xA;encountered two main approaches:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The: &lt;em&gt;Monads are simple, here&amp;rsquo;s a simple example of a monad&lt;/em&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Or the famous: &lt;em&gt;A monad is a monoid in the category of endofunctors&lt;/em&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In both approaches, the layout is similar. We start with a strong statement like:&#xA;&lt;em&gt;A monad is a powerful concept when applied to programming&lt;/em&gt;, and later&#xA;apologize for being one of the most difficult programming concepts to grasp. The&#xA;reality is that all of these statements about monads are valid, and the truth lies somewhere in the middle.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Happy Birthday Paradox</title>
				<link>https://nyadgar.com/posts/happy-birthday-paradox/</link>
				<pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate>
				<guid>https://nyadgar.com/posts/happy-birthday-paradox/</guid>
				<description>&lt;p&gt;The Birthday &lt;em&gt;paradox&lt;/em&gt; only seems like a paradox because it unexpectedly challenges our perception&#xA;of probability. It states that in a group of only 23 individuals, there&#xA;is more than a 50% chance that at least two are sharing a birthday. Although it may seem&#xA;counterintuitive, we have the math that proves and supports this statement.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;img src=&#34;cats.png&#34; style=&#34;width: 40%;&#34; alt=&#34;cats&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;In this article, we will gradually reprogram our intuition and build the knowledge required to&#xA;derive the expression that proves the &lt;em&gt;paradox&lt;/em&gt;. This blog focuses on software engineering and&#xA;system design so we will follow a real-world example of this problem found in software.&#xA;But first, let&amp;rsquo;s start with basic counting.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Scaling gRPC With Kubernetes (Using Go)</title>
				<link>https://nyadgar.com/posts/scaling-grpc-with-kubernetes-using-go/</link>
				<pubDate>Mon, 20 Jan 2025 15:50:12 +0200</pubDate>
				<guid>https://nyadgar.com/posts/scaling-grpc-with-kubernetes-using-go/</guid>
				<description>&lt;h2 id=&#34;the-tech&#34;&gt;The Tech&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://grpc.io/&#34;&gt;&lt;code&gt;gRPC&lt;/code&gt;&lt;/a&gt; is a strong player in microservices-based systems.&#xA;Leveraging &lt;a href=&#34;https://protobuf.dev/&#34;&gt;Protocol Buffers&lt;/a&gt; for well-defined API contracts,&#xA;fast serialization (about &lt;code&gt;X5&lt;/code&gt; faster than &lt;code&gt;JSON&lt;/code&gt;), smaller payloads, and the use&#xA;of streams (thanks to &lt;code&gt;HTTP/2&lt;/code&gt;). It&amp;rsquo;s easy to see why this technology for&#xA;real-time microservice communication is a good choice.&lt;/p&gt;&#xA;&lt;h3 id=&#34;http2&#34;&gt;HTTP/2&lt;/h3&gt;&#xA;&lt;p&gt;Unlike a typical REST API that&amp;rsquo;s built on top of &lt;code&gt;HTTP/1.1&lt;/code&gt;, &lt;code&gt;gRPC&lt;/code&gt; is built on top of&#xA;&lt;code&gt;HTTP/2&lt;/code&gt;. The most noticeable feature of &lt;code&gt;HTTP/2&lt;/code&gt; is the ability to perform &lt;em&gt;server push&lt;/em&gt;.&#xA;This feature allows servers to asynchronously &lt;em&gt;push&lt;/em&gt; data to the client before the client&#xA;asks for it. &lt;code&gt;gRPC&lt;/code&gt; leverages &lt;em&gt;server push&lt;/em&gt; to support &lt;em&gt;streams&lt;/em&gt;, a key feature that separates &lt;code&gt;gRPC&lt;/code&gt;&#xA;from any other &lt;code&gt;HTTP/1.1&lt;/code&gt;-based API. Because of that, &lt;code&gt;HTTP/2&lt;/code&gt;&#xA;requires a long-lasting &lt;code&gt;TCP&lt;/code&gt; connection between the client and the server.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Go Interfaces: Why, How and When</title>
				<link>https://nyadgar.com/posts/go-interfaces-why-how-and-when/</link>
				<pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate>
				<guid>https://nyadgar.com/posts/go-interfaces-why-how-and-when/</guid>
				<description>&lt;p&gt;In programming, interfaces are a powerful concept that lets us express&#xA;our code more abstractly. Interfaces allow us to reason about the&#xA;higher-level logic of our processes without getting down to the small details.&#xA;Go has arguably one of the best interface implementations. With great features&#xA;like implicit implementations, assertion, and more.&lt;/p&gt;&#xA;&lt;p&gt;Interfaces must be used cautiously since they introduce more abstraction to our code,&#xA;making it susceptible to unnecessary wrappers, misuse of definitions, and sometimes,&#xA;even memory issues. In this article, I will discuss cases where interfaces can positively impact your code.&#xA;But first, let&amp;rsquo;s talk about what an interface is not.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Beautiful Math of Bloom Filters</title>
				<link>https://nyadgar.com/posts/the-beautiful-math-of-bloom-filters/</link>
				<pubDate>Wed, 13 Nov 2024 15:50:12 +0200</pubDate>
				<guid>https://nyadgar.com/posts/the-beautiful-math-of-bloom-filters/</guid>
				<description>&lt;p&gt;Probabilistic functions can model many algorithms and procedures. They can help us optimize&#xA;procedures to produce the best results. Experienced software engineers know that at some point, almost any&#xA;software will reach some level of non-determinism, where a solution is not absolute but approaches the best results&#xA;if using the optimal configuration. Mathematically, such a solution usually boils down to finding &lt;em&gt;minima&lt;/em&gt;, &lt;em&gt;maxima&lt;/em&gt; or &lt;em&gt;limits&lt;/em&gt;&#xA;of some probabilistic functions.&lt;/p&gt;&#xA;&lt;p&gt;In this article, we will explore the beautiful math behind Bloom filters.&#xA;We will explore the accuracy and trade-offs of Bloom filters and see why a Bloom filter can be an excellent choice for some cases,&#xA;especially in &lt;em&gt;Big Data&lt;/em&gt;, &lt;a href=&#34;https://en.wikipedia.org/wiki/Online_analytical_processing&#34;&gt;OLAP&lt;/a&gt; systems, dealing with huge and fairly static datasets.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Vim is Better - Here&#39;s Why</title>
				<link>https://nyadgar.com/posts/vim-is-better-heres-why/</link>
				<pubDate>Mon, 26 Aug 2024 15:50:12 +0200</pubDate>
				<guid>https://nyadgar.com/posts/vim-is-better-heres-why/</guid>
				<description>&lt;p&gt;For non-users, Vim is often perceived as an outdated and cryptic text editor.&#xA;Its steep learning curve allegedly makes it not worth the time investment,&#xA;especially when other text editors are much more &lt;em&gt;straightforward&lt;/em&gt;.&#xA;A common claim among programmers is that Vim cannot compete with modern IDEs.&#xA;In this article, we&amp;rsquo;ll see if this claim hold truth.&#xA;We will also challenge the claim that Vim is better than any other text editor and IDE out there.&lt;/p&gt;</description>
			</item>
			<item>
				<title>What Would it Be Like to Do Functional Programming in Go?</title>
				<link>https://nyadgar.com/posts/what-would-it-be-like-to-do-functional-programming-in-go/</link>
				<pubDate>Wed, 24 Jul 2024 15:50:12 +0200</pubDate>
				<guid>https://nyadgar.com/posts/what-would-it-be-like-to-do-functional-programming-in-go/</guid>
				<description>&lt;div class=&#34;box box-warning&#34;&gt;&#xA;    &lt;span class=&#34;box-icon&#34; aria-hidden=&#34;true&#34;&gt;&#xA;        &lt;svg viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; width=&#34;20&#34; height=&#34;20&#34;&gt;&lt;path d=&#34;M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z&#34;&gt;&lt;/path&gt;&lt;line x1=&#34;12&#34; y1=&#34;9&#34; x2=&#34;12&#34; y2=&#34;13&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;12&#34; y1=&#34;17&#34; x2=&#34;12.01&#34; y2=&#34;17&#34;&gt;&lt;/line&gt;&lt;/svg&gt;&#xA;    &lt;/span&gt;&#xA;    &lt;span class=&#34;box-label sr-only&#34;&gt;Warning&lt;/span&gt;&#xA;    &lt;div class=&#34;box-body&#34;&gt;&#xA;        &lt;strong&gt;Disclaimer&lt;/strong&gt;:&#xA;Go is not a pure functional programming language. This article does not try to teach you functional programming in Go since imposing functional programming concepts, may result in unnecessarily awkward code. Go has its style, and it&amp;rsquo;s proven to be highly successful. Therefore, there&amp;rsquo;s no point in forcing a foreign dialect on Go code. Haskell would be a great choice if you want to express yourself functionally.&#xA;    &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;This article aims to provide imperative programmers a bridge to the functional world. Crossing that bridge and seeing the other side can help us reimagine problem-solving and add new skills to our set. We will encounter Go translations to some original Haskell code, hoping this will allow us to understand the original dialect.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A Server Error Got Me a Free Meal</title>
				<link>https://nyadgar.com/posts/a-server-error-got-me-a-free-meal/</link>
				<pubDate>Tue, 02 Jul 2024 15:50:12 +0200</pubDate>
				<guid>https://nyadgar.com/posts/a-server-error-got-me-a-free-meal/</guid>
				<description>&lt;p&gt;I was at the office, about to go out and grab lunch from a nearby restaurant. Like many companies, I work in one that uses a service to manage our budget for paid meals. Using a mobile app, I can generate a 5-digit code, which I give to the restaurant, and it automatically charges my account. Beautiful, simple, and effective.&lt;/p&gt;&#xA;&lt;p&gt;I was standing in line, tapping my fancy code-generation button, and after a few seconds, I witnessed a (probably) rare event. The food app suddenly showed me that my order had been accepted and confirmed. Did someone hijack my code? At this point, I thought this was just a client bug. I regenerated a new code and went on with my order.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Profiling in Go: A Practical Guide</title>
				<link>https://nyadgar.com/posts/go-profiling-like-a-pro/</link>
				<pubDate>Tue, 09 Apr 2024 15:50:12 +0200</pubDate>
				<guid>https://nyadgar.com/posts/go-profiling-like-a-pro/</guid>
				<description>&lt;p&gt;Profiling is an underrated skill among software-engineers and it&amp;rsquo;s often overlooked by even very skilled developers. Profiling a program, is essentially measuring CPU and memory usage to spot bottlenecks, memory leaks, and other performance issues. Knowing how profile a program and interpret the result can direct us to where exactly our program is suffering from poor performance, and focus our efforts on optimizing those specific parts. In this article, we&amp;rsquo;ll be profiling a real-world Go program. We&amp;rsquo;ll learn how to interpret the results, draw conclusions, and optimize the program accordingly.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Synchronization Patterns in Go</title>
				<link>https://nyadgar.com/posts/synchronization-patterns-in-go/</link>
				<pubDate>Sun, 01 Oct 2023 09:15:20 +0200</pubDate>
				<guid>https://nyadgar.com/posts/synchronization-patterns-in-go/</guid>
				<description>&lt;div class=&#34;box box-info&#34;&gt;&#xA;    &lt;span class=&#34;box-icon&#34; aria-hidden=&#34;true&#34;&gt;&#xA;        &lt;svg viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; width=&#34;20&#34; height=&#34;20&#34;&gt;&lt;circle cx=&#34;12&#34; cy=&#34;12&#34; r=&#34;10&#34;&gt;&lt;/circle&gt;&lt;line x1=&#34;12&#34; y1=&#34;11&#34; x2=&#34;12&#34; y2=&#34;16&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;12&#34; y1=&#34;8&#34; x2=&#34;12.01&#34; y2=&#34;8&#34;&gt;&lt;/line&gt;&lt;/svg&gt;&#xA;    &lt;/span&gt;&#xA;    &lt;span class=&#34;box-label sr-only&#34;&gt;Info&lt;/span&gt;&#xA;    &lt;div class=&#34;box-body&#34;&gt;&#xA;        This article is a followup for a more basic guide.&#xA;If you would like to read the previous article, &lt;a href=&#34;https://nyadgar.com/posts/asynchronous-go-for-beginners&#34;&gt;click here&lt;/a&gt;&#xA;    &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;The &lt;em&gt;Go&lt;/em&gt; programming language is all about concurrency. Spawning multiple &lt;em&gt;goroutines&lt;/em&gt; truly reveals the power of &lt;em&gt;Go&lt;/em&gt; programs. As it lets us divide our program into concurrent processes. But you may have guessed, opening this door comes with a whole set of new issues we software engineers, have to consider. Most of them are related to shared memory and synchronization. From identifying the issue and applying the pattern, here are some things we can do in &lt;em&gt;Go&lt;/em&gt;, to write better programs.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Asynchronous Go for Beginners</title>
				<link>https://nyadgar.com/posts/asynchronous-go-for-beginners/</link>
				<pubDate>Tue, 26 Sep 2023 16:59:52 +0200</pubDate>
				<guid>https://nyadgar.com/posts/asynchronous-go-for-beginners/</guid>
				<description>&lt;div class=&#34;box box-info&#34;&gt;&#xA;    &lt;span class=&#34;box-icon&#34; aria-hidden=&#34;true&#34;&gt;&#xA;        &lt;svg viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; width=&#34;20&#34; height=&#34;20&#34;&gt;&lt;circle cx=&#34;12&#34; cy=&#34;12&#34; r=&#34;10&#34;&gt;&lt;/circle&gt;&lt;line x1=&#34;12&#34; y1=&#34;11&#34; x2=&#34;12&#34; y2=&#34;16&#34;&gt;&lt;/line&gt;&lt;line x1=&#34;12&#34; y1=&#34;8&#34; x2=&#34;12.01&#34; y2=&#34;8&#34;&gt;&lt;/line&gt;&lt;/svg&gt;&#xA;    &lt;/span&gt;&#xA;    &lt;span class=&#34;box-label sr-only&#34;&gt;Info&lt;/span&gt;&#xA;    &lt;div class=&#34;box-body&#34;&gt;&#xA;        If you would like to skip to a more advanced article, check out &lt;a href=&#34;https://nyadgar.com/posts/synchronization-patterns-in-go&#34;&gt;Synchronization Patterns in Go&lt;/a&gt;&#xA;    &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;When it comes to asynchronous programming, Go is one of the best languages in the market. The design of the language is so &lt;em&gt;multi-thread&lt;/em&gt; oriented, that the &lt;code&gt;go&lt;/code&gt; keyword in the language is used to start a new &lt;em&gt;goroutine&lt;/em&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Best Network Technologies</title>
				<link>https://nyadgar.com/posts/best-network-technologies/</link>
				<pubDate>Thu, 13 Jul 2023 17:06:58 +0200</pubDate>
				<guid>https://nyadgar.com/posts/best-network-technologies/</guid>
				<description>&lt;p&gt;Network communication in general is a very wide topic. It can probably fit in a large section of the &lt;em&gt;New York Public Library&lt;/em&gt; (if not already). Fitting even a brief overview of this subject from bottom to top in a single article, might be a bit pretentious. So I won&amp;rsquo;t do it. Instead, I&amp;rsquo;ll be focusing mainly on &lt;strong&gt;software design patterns and technologies&lt;/strong&gt; for communicating over a network.&lt;/p&gt;&#xA;&lt;h2 id=&#34;lets-unravel-the-mystery&#34;&gt;Let&amp;rsquo;s unravel the mystery&lt;/h2&gt;&#xA;&lt;p&gt;We will start our journey with &lt;a href=&#34;https://en.wikipedia.org/wiki/Internet_protocol_suite&#34;&gt;TCP/IP&lt;/a&gt;. Unless your program directly communicates using electromagnetic waves, there&amp;rsquo;s a good chance that your program will communicate with the world, using TCP/IP. I know you&amp;rsquo;ve heard this term before, but what is it?&lt;/p&gt;</description>
			</item>
			<item>
				<title>How to Cache</title>
				<link>https://nyadgar.com/posts/how-to-cache/</link>
				<pubDate>Mon, 15 Aug 2022 15:50:12 +0200</pubDate>
				<guid>https://nyadgar.com/posts/how-to-cache/</guid>
				<description>&lt;p&gt;Caching is one of those things that almost every digital service uses in some way or another, it can improve user experience, and reduce costs by preventing redundant computation. When incorrectly applied, it can be the root cause of many nasty issues such as serving stale data, creating security breaches, and eating up the memory. In this article, we will see what cache exactly is, what types of cache we can implement, and how to implement them correctly.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Privacy Policy</title>
				<link>https://nyadgar.com/privacy/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://nyadgar.com/privacy/</guid>
				<description>&lt;p&gt;Last updated June 09, 2023&lt;/p&gt;&#xA;&lt;p&gt;This privacy notice for Noam Yadgar (&amp;ldquo;Company,&amp;rdquo; &amp;ldquo;we,&amp;rdquo; &amp;ldquo;us,&amp;rdquo; or &amp;ldquo;our&amp;rdquo;), describes how and why we might collect, store, use, and/or share (&amp;ldquo;process&amp;rdquo;) your information when you use our services (&amp;ldquo;Services&amp;rdquo;).&lt;/p&gt;&#xA;&lt;p&gt;Questions or concerns? Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at &lt;a href=&#34;mailto:noam.g4@gmail.com&#34;&gt;noam.g4@gmail.com&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
