<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Mo Jahani — Software Engineer &amp; Scalable Solution Architect on Mo Jahani</title>
		<link>https://www.onlymaj.com/</link>
		<description>Recent content in Mo Jahani — Software Engineer &amp; Scalable Solution Architect on Mo Jahani</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Thu, 28 May 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://www.onlymaj.com/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Designing for millions: lessons from scaling a real-time API</title>
				<link>https://www.onlymaj.com/blog/designing-for-millions/</link>
				<pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate>
				<guid>https://www.onlymaj.com/blog/designing-for-millions/</guid>
				<description>&lt;p&gt;The morning it happened, I was making coffee. A small tool I&amp;rsquo;d built to&#xA;broadcast live scores had been picked up by a popular account overnight, and by&#xA;9 a.m. it was fielding more traffic in a minute than it had seen in its entire&#xA;life. Nothing was technically &lt;em&gt;down&lt;/em&gt;; it was just slow in a way that felt&#xA;personal. That day taught me more about systems than a year of reading ever had.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Why I stopped fearing the database and learned to love SQL</title>
				<link>https://www.onlymaj.com/blog/learning-to-love-sql/</link>
				<pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate>
				<guid>https://www.onlymaj.com/blog/learning-to-love-sql/</guid>
				<description>&lt;p&gt;For most of my twenties I thought of the database as plumbing. Something that&#xA;lived behind an ORM, spoke a language I half-remembered from a university&#xA;course, and was best left undisturbed. I wrote &lt;code&gt;User.where(active: true)&lt;/code&gt; and&#xA;whatever happened next was not, in any meaningful sense, my problem.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Embedded to web: what microcontrollers taught me about performance</title>
				<link>https://www.onlymaj.com/blog/embedded-to-web/</link>
				<pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate>
				<guid>https://www.onlymaj.com/blog/embedded-to-web/</guid>
				<description>&lt;p&gt;My first serious programming job had a hard limit printed on the datasheet:&#xA;8 KB of RAM, 64 KB of flash. Not &amp;ldquo;8 KB before it gets slow.&amp;rdquo; 8 KB before the&#xA;device stops working and a technician drives out to a site to find out why.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A pragmatic guide to Docker for small teams</title>
				<link>https://www.onlymaj.com/blog/docker-for-small-teams/</link>
				<pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate>
				<guid>https://www.onlymaj.com/blog/docker-for-small-teams/</guid>
				<description>&lt;p&gt;Most Docker advice is written for organisations with a platform team, a service&#xA;mesh, and a dedicated on-call rotation. If you&amp;rsquo;re four people shipping a&#xA;product, that advice will cost you a month and give you back a system nobody&#xA;fully understands.&lt;/p&gt;</description>
			</item>
			<item>
				<title>ClickHouse vs. Postgres for analytics: a field report</title>
				<link>https://www.onlymaj.com/blog/clickhouse-vs-postgres/</link>
				<pubDate>Thu, 22 Jan 2026 00:00:00 +0000</pubDate>
				<guid>https://www.onlymaj.com/blog/clickhouse-vs-postgres/</guid>
				<description>&lt;p&gt;We had a billion rows of event data and a dashboard that had stopped being&#xA;usable. The obvious move was to put the analytics somewhere purpose-built. The&#xA;less obvious question was whether we needed to at all.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Clean code is a feature, not a luxury</title>
				<link>https://www.onlymaj.com/blog/clean-code-is-a-feature/</link>
				<pubDate>Tue, 09 Dec 2025 00:00:00 +0000</pubDate>
				<guid>https://www.onlymaj.com/blog/clean-code-is-a-feature/</guid>
				<description>&lt;p&gt;&amp;ldquo;We&amp;rsquo;ll clean it up later&amp;rdquo; is the most expensive sentence in software, and it&amp;rsquo;s&#xA;expensive in a way that never shows up on the ticket that caused it.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve stopped arguing for clean code on aesthetic grounds. Nobody wins that&#xA;argument, and honestly nobody should: a beautiful codebase that ships nothing&#xA;is worth less than an ugly one that pays salaries. The argument that works is&#xA;narrower and harder to dismiss: &lt;strong&gt;readable code is faster to repair under&#xA;pressure&lt;/strong&gt;, and every system eventually needs repairing under pressure.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Let&#39;s build something worth shipping.</title>
				<link>https://www.onlymaj.com/contact/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www.onlymaj.com/contact/</guid>
				<description></description>
			</item>
			<item>
				<title>Mo Jahani</title>
				<link>https://www.onlymaj.com/about/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www.onlymaj.com/about/</guid>
				<description>&lt;p&gt;Hi, I&amp;rsquo;m Mo. I enjoy taking ideas and turning them into work that makes a&#xA;meaningful impact.&lt;/p&gt;&#xA;&lt;p&gt;From embedded devices to web apps serving millions of users, my focus is finding&#xA;the point where technology and business goals meet. I care about building&#xA;reliable systems, delivering genuine value, and keeping clients happy, all while&#xA;pushing performance as far as it will go.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
