<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blog by Mohd Mahmodi</title>
    <link>https://blog.mohdmahmodi.com/</link>
    <description>Notes by Mohd Mahmodi on WebRTC, running machine learning models in the browser, and iOS apps. Written while building the projects they come from.</description>
    <language>en-us</language>
    <lastBuildDate>Mon, 10 Aug 2026 14:00:00 -0700</lastBuildDate>
    <atom:link href="https://blog.mohdmahmodi.com/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Smoothing noisy weight data with an EWMA trend in SwiftUI</title>
      <link>https://blog.mohdmahmodi.com/ewma-weight-trend-swift-charts</link>
      <guid isPermaLink="true">https://blog.mohdmahmodi.com/ewma-weight-trend-swift-charts</guid>
      <pubDate>Mon, 10 Aug 2026 14:00:00 -0700</pubDate>
      <description>Daily weigh-ins swing by pounds while real change creeps along at a tenth of one. The smoothing engine, what a 0.10 constant actually costs you in lag, and the caching layer that fixed a stuttering scrub.</description>
    </item>
    <item>
      <title>How WebRTC sends a file straight between two browsers</title>
      <link>https://blog.mohdmahmodi.com/webrtc-file-transfer-between-browsers</link>
      <guid isPermaLink="true">https://blog.mohdmahmodi.com/webrtc-file-transfer-between-browsers</guid>
      <pubDate>Mon, 10 Aug 2026 10:00:00 -0700</pubDate>
      <description>A browser cannot see its own network, so discovery is keyed on public IP. Then two water marks stop a fast sender drowning a slow receiver, and a base64 relay covers the networks that block WebRTC outright.</description>
    </item>
    <item>
      <title>Running background removal in the browser without a server</title>
      <link>https://blog.mohdmahmodi.com/background-removal-in-the-browser</link>
      <guid isPermaLink="true">https://blog.mohdmahmodi.com/background-removal-in-the-browser</guid>
      <pubDate>Mon, 10 Aug 2026 09:30:00 -0700</pubDate>
      <description>Getting WebAssembly threads on a static host, picking a model tier from the device, resizing before inference so phones survive it, and an erase and restore brush built on two canvases.</description>
    </item>
    <item>
      <title>Building a split flap display with CSS and JavaScript</title>
      <link>https://blog.mohdmahmodi.com/split-flap-display-css-javascript</link>
      <guid isPermaLink="true">https://blog.mohdmahmodi.com/split-flap-display-css-javascript</guid>
      <pubDate>Mon, 10 Aug 2026 08:30:00 -0700</pubDate>
      <description>Travelling 62 positions around the spool takes two seconds because only the landing is animated. The four layers of a cell, one frame loop for the whole board, and why every click is detuned.</description>
    </item>
  </channel>
</rss>
