<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>yenupam</title><link>https://yenupam.com/</link><description>Recent content on yenupam</description><generator>Hugo</generator><language>en-us</language><copyright>© Anupam Roy</copyright><lastBuildDate>Tue, 16 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://yenupam.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Drut (WIP)</title><link>https://yenupam.com/projects/drut/</link><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><guid>https://yenupam.com/projects/drut/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Status: Work in Progress.&lt;/strong&gt; This is an active design exploration. Specifications and targets are subject to change.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="system-architecture"&gt;System Architecture&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Interactive diagram: &lt;a href="https://excalidraw.com/#json=CwPjzUReQDcjjYbpOnAPn,E95GNaDS59Nuvv91phPKxA"&gt;open in Excalidraw&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




 
 
 
 
 
 
 
 

 





 
 
 
 
 
 
 
 
 






&lt;div class="hugo-gallery hg-single" id="gallery-527834619"
 data-images="[&amp;#34;/projects/drut/arch_hu_e426c537b369c689.png&amp;#34;]"
 data-titles="[&amp;#34;System Arch.&amp;#34;]"
 data-index="0"&gt;
 &lt;figure class="hg-figure"&gt;
 &lt;div class="hg-main-view"&gt;
 &lt;img src="https://yenupam.com/projects/drut/arch_hu_e426c537b369c689.png" alt="System Arch." class="hg-current-image" loading="lazy"&gt;
 &lt;/div&gt;
 &lt;figcaption class="hg-caption hg-current-caption"&gt;System Arch.&lt;/figcaption&gt;
 &lt;/figure&gt;

 

 &lt;div class="hg-lightbox"&gt;
 &lt;button class="hg-lightbox-close" aria-label="Close Lightbox"&gt;&amp;times;&lt;/button&gt;
 
 &lt;figure class="hg-lightbox-figure"&gt;
 &lt;img class="hg-lightbox-content" src="" alt="Zoomed Gallery Image"&gt;
 &lt;figcaption class="hg-lightbox-caption"&gt;&lt;/figcaption&gt;
 &lt;/figure&gt;
 
 &lt;/div&gt;
&lt;/div&gt;


 
 &lt;style&gt;
 .hugo-gallery {
 margin: 2.5rem 0;
 width: 100%;
 }

 .hg-figure {
 margin: 0;
 padding: 0;
 }

 .hg-main-view {
 width: 100%;
 aspect-ratio: 16 / 9;
 background: #eaebed;
 cursor: zoom-in;
 overflow: hidden;
 display: flex;
 align-items: center;
 justify-content: center;
 border: 1.5px solid rgba(0, 0, 0, 0.12);
 transition: border-color 0.15s ease;
 }

 .hg-main-view:hover {
 border-color: var(--primary);
 }

 .hg-current-image {
 max-width: 100%;
 max-height: 100%;
 object-fit: contain;
 }

 .hg-caption {
 margin-top: 0.6rem;
 font-family: 'Red Hat Mono', monospace;
 font-size: 13px;
 color: var(--font-color, #222);
 opacity: 0.75;
 text-align: center;
 min-height: 1.2em;
 }

 .hg-caption:empty {
 display: none;
 }

 
 .hg-single .hg-main-view {
 aspect-ratio: auto;
 max-height: 400px;
 display: inline-block;
 width: auto;
 max-width: 100%;
 padding: 0;
 line-height: 0;
 }

 .hg-single .hg-figure {
 display: inline-block;
 max-width: 100%;
 }

 .hg-single .hg-current-image {
 max-height: 400px;
 display: block;
 }

 .hg-controls {
 display: flex;
 justify-content: space-between;
 align-items: center;
 margin-top: 1rem;
 font-family: 'Red Hat Mono', monospace;
 font-size: 13px;
 color: var(--font-color, #222);
 }

 .hg-btn {
 background: none;
 border: none;
 padding: 4px 8px;
 cursor: pointer;
 font-family: inherit;
 color: inherit;
 opacity: 0.7;
 transition: color 0.15s, opacity 0.15s;
 }

 .hg-btn:hover {
 color: #e55b64;
 opacity: 1;
 }

 .hg-counter {
 opacity: 0.5;
 font-size: 12px;
 }

 .hg-lightbox {
 display: none;
 position: fixed;
 inset: 0;
 z-index: 99999;
 background: rgba(12, 14, 16, 0.95);
 align-items: center;
 justify-content: center;
 flex-direction: column;
 backdrop-filter: blur(4px);
 opacity: 0;
 transition: opacity 0.2s ease;
 }

 .hg-lightbox.show {
 display: flex;
 opacity: 1;
 }

 .hg-lightbox-figure {
 margin: 0;
 padding: 0;
 display: flex;
 flex-direction: column;
 align-items: center;
 max-width: 90vw;
 max-height: 90vh;
 }

 .hg-lightbox-content {
 max-width: 90vw;
 max-height: 85vh;
 object-fit: contain;
 box-shadow: 0 10px 40px rgba(0,0,0,0.5);
 }

 .hg-lightbox-caption {
 margin-top: 0.8rem;
 color: rgba(255, 255, 255, 0.85);
 font-family: 'Red Hat Mono', monospace;
 font-size: 14px;
 text-align: center;
 max-width: 80vw;
 }

 .hg-lightbox-caption:empty {
 display: none;
 }

 .hg-lightbox-btn {
 position: absolute;
 top: 50%;
 transform: translateY(-50%);
 background: transparent;
 border: none;
 color: rgba(255,255,255,0.5);
 font-size: 3rem;
 cursor: pointer;
 padding: 20px;
 transition: color 0.2s;
 }

 .hg-lightbox-btn:hover {
 color: white;
 }

 .hg-lightbox-prev { left: 2%; }
 .hg-lightbox-next { right: 2%; }

 .hg-lightbox-close {
 position: absolute;
 top: 20px;
 right: 30px;
 background: none;
 border: none;
 color: white;
 font-size: 3rem;
 cursor: pointer;
 line-height: 1;
 opacity: 0.7;
 }

 .hg-lightbox-close:hover {
 opacity: 1;
 }

 @media (max-width: 720px) {
 .hg-lightbox-btn { font-size: 2rem; padding: 10px; }
 .hg-lightbox-prev { left: 0; }
 .hg-lightbox-next { right: 0; }
 }
 &lt;/style&gt;

 &lt;script&gt;
 document.addEventListener("DOMContentLoaded", () =&gt; {
 const galleries = document.querySelectorAll('.hugo-gallery');

 galleries.forEach(gallery =&gt; {
 const images = JSON.parse(gallery.getAttribute('data-images'));
 const titles = JSON.parse(gallery.getAttribute('data-titles') || '[]');
 const isSingle = gallery.classList.contains('hg-single');
 let currentIndex = 0;

 const mainView = gallery.querySelector('.hg-main-view');
 const mainImg = gallery.querySelector('.hg-current-image');
 const mainCaption = gallery.querySelector('.hg-current-caption');

 const lightbox = gallery.querySelector('.hg-lightbox');
 const lbImg = gallery.querySelector('.hg-lightbox-content');
 const lbCaption = gallery.querySelector('.hg-lightbox-caption');
 const lbClose = gallery.querySelector('.hg-lightbox-close');
 const lbPrev = gallery.querySelector('.hg-lightbox-prev');
 const lbNext = gallery.querySelector('.hg-lightbox-next');

 const titleFor = (i) =&gt; (titles[i] || '').trim();

 const updateGallery = (index) =&gt; {
 currentIndex = (index + images.length) % images.length;
 const src = images[currentIndex];
 const title = titleFor(currentIndex);
 mainImg.src = src;
 if (mainCaption) mainCaption.textContent = title;
 if (lbImg) lbImg.src = src;
 if (lbCaption) lbCaption.textContent = title;
 };

 const openLightbox = () =&gt; {
 lbImg.src = images[currentIndex];
 if (lbCaption) lbCaption.textContent = titleFor(currentIndex);
 lightbox.classList.add('show');
 document.body.style.overflow = 'hidden';
 if (lbClose) lbClose.focus();
 };

 const closeLightbox = () =&gt; {
 lightbox.classList.remove('show');
 document.body.style.overflow = '';
 };

 if (!isSingle) {
 const btnPrev = gallery.querySelector('.hg-prev');
 const btnNext = gallery.querySelector('.hg-next');
 const counter = gallery.querySelector('.hg-counter');

 const updateAll = (index) =&gt; {
 updateGallery(index);
 counter.textContent = `${currentIndex + 1} / ${images.length}`;
 };

 btnPrev.addEventListener('click', () =&gt; updateAll(currentIndex - 1));
 btnNext.addEventListener('click', () =&gt; updateAll(currentIndex + 1));
 updateAll(0);
 }

 mainView.addEventListener('click', openLightbox);

 lbClose.addEventListener('click', closeLightbox);
 lightbox.addEventListener('click', (e) =&gt; {
 if (e.target === lightbox) closeLightbox();
 });

 if (lbPrev &amp;&amp; lbNext) {
 lbPrev.addEventListener('click', (e) =&gt; {
 e.stopPropagation();
 currentIndex = (currentIndex - 1 + images.length) % images.length;
 updateGallery(currentIndex);
 });
 lbNext.addEventListener('click', (e) =&gt; {
 e.stopPropagation();
 currentIndex = (currentIndex + 1) % images.length;
 updateGallery(currentIndex);
 });
 }

 document.addEventListener('keydown', (e) =&gt; {
 if (!lightbox.classList.contains('show')) return;
 if (e.key === 'Escape') closeLightbox();
 if (!isSingle) {
 if (e.key === 'ArrowLeft') {
 currentIndex = (currentIndex - 1 + images.length) % images.length;
 updateGallery(currentIndex);
 }
 if (e.key === 'ArrowRight') {
 currentIndex = (currentIndex + 1) % images.length;
 updateGallery(currentIndex);
 }
 }
 });
 });
 });
 &lt;/script&gt;


&lt;p&gt;The goal is a speech to speech model that runs entirely on a phone. Not a cloud API with a thin client. The model should live on device, listening continuously, ready to respond in under 150 milliseconds. It should call tools, handle interruptions mid sentence, and work across languages. Here is the current design direction.&lt;/p&gt;</description></item><item><title>Matra</title><link>https://yenupam.com/projects/matra/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid>https://yenupam.com/projects/matra/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Technical report: &lt;a href="./matra_paper_200k.pdf"&gt;matra_paper_200k.pdf&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;LLM with Matra as tokenizer is still pending. If anyone wants to help me with compute, hmu @ &lt;a href="mailto:yenupam@gmail.com"&gt;e-mail&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="live-demo"&gt;Live Demo&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;note: visit &lt;a href="https://huggingface.co/spaces/yenupam/matra-tokenizer-visualizer"&gt;huggingface space link&lt;/a&gt; if the embed fails to load.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;iframe
 src="https://yenupam-matra-tokenizer-visualizer.static.hf.space"
 frameborder="0"
 width="100%"
 height="500"
&gt;&lt;/iframe&gt;
&lt;h1 id="matra-a-tokenizer-built-for-indias-languages"&gt;Matra: A Tokenizer Built for India&amp;rsquo;s Languages&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;200k, 128k vocab size. 23 languages. The lowest token counts and highest compression across the board.&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In active development, more optimzation, tests, language specific tokenizers coming soon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Most tokenizers treat Indian languages as an afterthought, fragmented syllables and half-formed characters scattered across a vocabulary designed for English. Matra was built from the ground up to fix that. The result, benchmarked on June 15 2026 against the IN22-Gen test split at 200k tokens per language, is unambiguous: Matra produces fewer tokens, denser representations, and dramatically lower fragmentation than GPT-5, Gemini 3.5 Flash, Gemma-4-31B, Qwen-3.6-MoE, Sarvam-105B, and Sutra-v2 across all 23 scheduled languages of India.&lt;/p&gt;</description></item><item><title>Desi Maximalism</title><link>https://yenupam.com/projects/desi-maximalism/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid>https://yenupam.com/projects/desi-maximalism/</guid><description>&lt;h2 id="project-overview"&gt;Project Overview&lt;/h2&gt;
&lt;p&gt;The Desi Maximalism LoRA is a specialized text-to-image style transfer model engineered to recreate the rich, dense, and vibrant aesthetic of mid-century Indian commercial art. It acts as a cultural bridge for generative AI, accurately reproducing the nostalgic visual language of 1940s–1985s South Asian matchbox labels, product packaging, magazine ads, and hand-painted film posters.&lt;/p&gt;
&lt;h2 id="sample-generations"&gt;Sample Generations&lt;/h2&gt;




 
 
 
 
 
 
 
 

 

 
 
 
 
 
 
 
 

 

 
 
 
 
 
 
 
 

 

 
 
 
 
 
 
 
 

 

 
 
 
 
 
 
 
 

 

 
 
 
 
 
 
 
 

 

 
 
 
 
 
 
 
 

 

 
 
 
 
 
 
 
 

 





 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 






&lt;div class="hugo-gallery" id="gallery-863721945"
 data-images="[&amp;#34;/projects/desi-maximalism/bournvita_hu_22c735d316f3ce7d.png&amp;#34;,&amp;#34;/projects/desi-maximalism/google-2_hu_81e20895a3fc4cf4.png&amp;#34;,&amp;#34;/projects/desi-maximalism/pulse_hu_44652b0ffa9b5b69.png&amp;#34;,&amp;#34;/projects/desi-maximalism/bharat-ai_hu_ab63da28481ccccc.png&amp;#34;,&amp;#34;/projects/desi-maximalism/lenskart_hu_aee09201b0097e9d.png&amp;#34;,&amp;#34;/projects/desi-maximalism/maggi_hu_6111204de5ea9669.png&amp;#34;,&amp;#34;/projects/desi-maximalism/gen-2_hu_a3a1861a944cb3b7.png&amp;#34;,&amp;#34;/projects/desi-maximalism/drama-queen_hu_7104b3309796d5cf.png&amp;#34;]"
 data-titles="[&amp;#34;Bournvita retro tin packaging&amp;#34;,&amp;#34;Google India ad&amp;#34;,&amp;#34;Pulse candy vintage label&amp;#34;,&amp;#34;Bharat AI vintage poster&amp;#34;,&amp;#34;Lenskart&amp;#34;,&amp;#34;Maggi noodles&amp;#34;,&amp;#34;Generation #2&amp;#34;,&amp;#34;Drama Queen&amp;#34;]"
 data-index="0"&gt;
 &lt;figure class="hg-figure"&gt;
 &lt;div class="hg-main-view"&gt;
 &lt;img src="https://yenupam.com/projects/desi-maximalism/bournvita_hu_22c735d316f3ce7d.png" alt="Bournvita retro tin packaging" class="hg-current-image" loading="lazy"&gt;
 &lt;/div&gt;
 &lt;figcaption class="hg-caption hg-current-caption"&gt;Bournvita retro tin packaging&lt;/figcaption&gt;
 &lt;/figure&gt;

 
 &lt;div class="hg-controls"&gt;
 &lt;button class="hg-btn hg-prev" aria-label="Previous Image"&gt;◄─── prev&lt;/button&gt;
 &lt;span class="hg-counter"&gt;1 / 8&lt;/span&gt;
 &lt;button class="hg-btn hg-next" aria-label="Next Image"&gt;next ────►&lt;/button&gt;
 &lt;/div&gt;
 

 &lt;div class="hg-lightbox"&gt;
 &lt;button class="hg-lightbox-close" aria-label="Close Lightbox"&gt;&amp;times;&lt;/button&gt;
 
 &lt;button class="hg-lightbox-btn hg-lightbox-prev"&gt;&amp;#10094;&lt;/button&gt;
 
 &lt;figure class="hg-lightbox-figure"&gt;
 &lt;img class="hg-lightbox-content" src="" alt="Zoomed Gallery Image"&gt;
 &lt;figcaption class="hg-lightbox-caption"&gt;&lt;/figcaption&gt;
 &lt;/figure&gt;
 
 &lt;button class="hg-lightbox-btn hg-lightbox-next"&gt;&amp;#10095;&lt;/button&gt;
 
 &lt;/div&gt;
&lt;/div&gt;



&lt;h2 id="model-specifications"&gt;Model Specifications&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Feature&lt;/th&gt;
 &lt;th&gt;Specification&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Base Model&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Qwen/Qwen-Image-2512&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Fine-Tuning Method&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;LoRA (Low-Rank Adaptation)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Task&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Text-to-image • Style transfer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Trigger Word&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;desi-max&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;License&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Apache 2.0&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="dataset--curation-strategy"&gt;Dataset &amp;amp; Curation Strategy&lt;/h2&gt;
&lt;p&gt;The model is trained on a highly focused dataset of 78 meticulously handpicked images of vintage South Asian commercial print. Each image was manually selected to represent a distinct visual sub-pattern. This strict curation keeps the dataset tight and entirely avoids the &amp;ldquo;style collapse&amp;rdquo; common in broader, noisier generative models.&lt;/p&gt;</description></item><item><title>Upcycle #1: Reviving a locked-down Android projector back to life</title><link>https://yenupam.com/posts/upcycle-1-android-projector/</link><pubDate>Thu, 21 May 2026 13:52:23 +0530</pubDate><guid>https://yenupam.com/posts/upcycle-1-android-projector/</guid><description>&lt;p&gt;&lt;strong&gt;Android projector sideloading&lt;/strong&gt;: When an Android TV device lacks USB/ADB access and has a locked-down launcher, you can still install APKs by serving them from a local Python HTTP server on your laptop, then downloading them through the device&amp;rsquo;s built-in browser. This method works on any Android TV device with a browser and no developer access.&lt;/p&gt;
&lt;h1 id="introduction"&gt;Introduction&lt;/h1&gt;
&lt;figure&gt;
 &lt;img src="https://yenupam.com/posts/upcycle-1-android-projector/android-projector_hu_4c3b95b3309462ea.jpg" width="600" height="450" alt=""&gt;&lt;figcaption&gt;Android Projector&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;My family bought this Android projector back in 2020 during lockdown so we could watch things on a really big screen. It was working okay-ish, but fast forward 6 years and Netflix dropped support for Android 7 (the Android version on this projector), and so did a lot of OTT apps. While YouTube does work, the UI lags when moving around. Now it&amp;rsquo;s just sitting in a corner, collecting dust.&lt;/p&gt;</description></item><item><title>Adding systemd-resolved Support to Connman</title><link>https://yenupam.com/posts/connman-systemd-resolved/</link><pubDate>Tue, 03 Sep 2024 00:00:00 +0530</pubDate><guid>https://yenupam.com/posts/connman-systemd-resolved/</guid><description>&lt;p&gt;&lt;strong&gt;Connman systemd-resolved&lt;/strong&gt;: Connman is a lightweight network manager for Linux that lacks built-in systemd-resolved support. To enable it, you must rebuild the connman package from source with the &lt;code&gt;--with-dns-backend=systemd-resolved&lt;/code&gt; configure flag. This allows connman to delegate DNS resolution to systemd-resolved, enabling features like DNS-over-TLS and per-link DNS configuration on Arch Linux.&lt;/p&gt;
&lt;p&gt;This is a quick guide to enable &lt;code&gt;systemd-resolved&lt;/code&gt; support for &lt;code&gt;connman&lt;/code&gt; package in arch because arch wiki being arch wiki, it RTFMed the reader with no futher explanation on how to actually rebuild this package.&lt;/p&gt;</description></item><item><title>C++ Notes</title><link>https://yenupam.com/posts/cpp-notes/</link><pubDate>Sat, 01 Jun 2024 00:00:00 +0000</pubDate><guid>https://yenupam.com/posts/cpp-notes/</guid><description>&lt;p&gt;&lt;strong&gt;C++ fundamentals&lt;/strong&gt;: C++ is a statically-typed, compiled programming language that supports procedural, object-oriented, and generic programming paradigms. Key concepts include statements (instructions that cause program actions), objects (memory regions storing values), and functions (reusable units of statements). Every C++ program requires a &lt;code&gt;main()&lt;/code&gt; function as its entry point.&lt;/p&gt;
&lt;h2 id="build-configurations"&gt;Build Configurations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;For debugging: &lt;code&gt;-ggdb&lt;/code&gt; flag (gcc)&lt;/li&gt;
&lt;li&gt;For release builds: &lt;code&gt;-O2 -DNDEBUG&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The debugging flag produces a larger executable compared to release builds.&lt;/p&gt;</description></item><item><title>Gemini / Gemtext Notes</title><link>https://yenupam.com/posts/gemini-gemtext/</link><pubDate>Sat, 01 Jun 2024 00:00:00 +0000</pubDate><guid>https://yenupam.com/posts/gemini-gemtext/</guid><description>&lt;p&gt;&lt;strong&gt;Gemtext&lt;/strong&gt;: Gemtext is the lightweight markup format used in the Gemini protocol, an alternative to HTTP for simple document publishing. It uses a minimal syntax where lines starting with &lt;code&gt;=&amp;gt;&lt;/code&gt; are links, &lt;code&gt;#&lt;/code&gt; are headings, &lt;code&gt;*&lt;/code&gt; are list items, &lt;code&gt;&amp;gt;&lt;/code&gt; are quotes, and triple backticks toggle preformatted text. Each line is a standalone entity with no inline formatting, making it simpler than Markdown but more structured than plain text.&lt;/p&gt;
&lt;h2 id="text-lines"&gt;Text Lines&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Each individual line in a Gemtext document is a stand-alone entity. Hence, a separate line break syntax is not needed.&lt;/li&gt;
&lt;li&gt;Text lines which don&amp;rsquo;t fit in client&amp;rsquo;s display get wrapped automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="link-lines"&gt;Link Lines&lt;/h2&gt;
&lt;p&gt;Lines starting from &lt;code&gt;=&amp;gt;&lt;/code&gt; are considered link lines.&lt;/p&gt;</description></item></channel></rss>