<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Jiangang Han</title>
  <subtitle>Notes on what I&#x27;ve learned and built, and what I&#x27;m learning and building now.</subtitle>
  <id>https://jianganghan.github.io/</id>
  <link rel="alternate" type="text/html" href="https://jianganghan.github.io/"/>
  <link rel="self" type="application/atom+xml" href="https://jianganghan.github.io/feed.xml"/>
  <updated>2026-09-20T00:00:00Z</updated>
  <author><name>Jiangang Han</name></author>
  <entry>
    <title>Bidding in a Single Auction</title>
    <link rel="alternate" type="text/html" href="https://jianganghan.github.io/posts/bidding/1-auction.html"/>
    <id>https://jianganghan.github.io/posts/bidding/1-auction.html</id>
    <published>2026-09-20T00:00:00Z</published>
    <updated>2026-09-20T00:00:00Z</updated>
    <summary>In an auction, all you do is name one number. To you, all your competitors combined are just one random &quot;market price&quot;: from it you can work out your win rate…</summary>
  </entry>
  <entry>
    <title>Bidding Under a Budget</title>
    <link rel="alternate" type="text/html" href="https://jianganghan.github.io/posts/bidding/2-budget.html"/>
    <id>https://jianganghan.github.io/posts/bidding/2-budget.html</id>
    <published>2026-09-20T00:00:00Z</published>
    <updated>2026-09-20T00:00:00Z</updated>
    <summary>There are thousands of auctions a day but only one budget. A Lagrange multiplier compresses that constraint into a single number λ, and every bid becomes &quot;valu…</summary>
  </entry>
  <entry>
    <title>Budget Pacing</title>
    <link rel="alternate" type="text/html" href="https://jianganghan.github.io/posts/bidding/3-pacing.html"/>
    <id>https://jianganghan.github.io/posts/bidding/3-pacing.html</id>
    <published>2026-09-20T00:00:00Z</published>
    <updated>2026-09-20T00:00:00Z</updated>
    <summary>The optimal λ can&#x27;t be computed in advance: at 9 a.m. you have no idea what tonight&#x27;s market will look like, so you have to adjust as you spend.</summary>
  </entry>
  <entry>
    <title>Pricing a Single Product</title>
    <link rel="alternate" type="text/html" href="https://jianganghan.github.io/posts/pricing/1-single.html"/>
    <id>https://jianganghan.github.io/posts/pricing/1-single.html</id>
    <published>2026-09-20T00:00:00Z</published>
    <updated>2026-09-20T00:00:00Z</updated>
    <summary>One number to set. Raise the price and you make more on each sale, but fewer people buy — so profit traces an inverted U.</summary>
  </entry>
  <entry>
    <title>Pricing Many Items Under Constraints</title>
    <link rel="alternate" type="text/html" href="https://jianganghan.github.io/posts/pricing/2-constraints.html"/>
    <id>https://jianganghan.github.io/posts/pricing/2-constraints.html</id>
    <published>2026-09-20T00:00:00Z</published>
    <updated>2026-09-20T00:00:00Z</updated>
    <summary>Going from one item to N doesn&#x27;t make the problem harder — it splits cleanly into N independent small problems.</summary>
  </entry>
  <entry>
    <title>Pricing Substitutable Products</title>
    <link rel="alternate" type="text/html" href="https://jianganghan.github.io/posts/pricing/3-substitution.html"/>
    <id>https://jianganghan.github.io/posts/pricing/3-substitution.html</id>
    <published>2026-09-20T00:00:00Z</published>
    <updated>2026-09-20T00:00:00Z</updated>
    <summary>Raise the price of one product and another one sells more — they&#x27;re competing for the same demand.</summary>
  </entry>
  <entry>
    <title>Pricing at Scale</title>
    <link rel="alternate" type="text/html" href="https://jianganghan.github.io/posts/pricing/4-scale.html"/>
    <id>https://jianganghan.github.io/posts/pricing/4-scale.html</id>
    <published>2026-09-20T00:00:00Z</published>
    <updated>2026-09-20T00:00:00Z</updated>
    <summary>At scale, closed-form solutions stop working. This post trades a little accuracy for tractability — linearize the demand model and hand it to a solver — and, j…</summary>
  </entry>
  <entry>
    <title>Von Neumann, 1952: Majority Voting, Thresholds, and Multiplexing</title>
    <link rel="alternate" type="text/html" href="https://jianganghan.github.io/posts/reliability/1-von-neumann.html"/>
    <id>https://jianganghan.github.io/posts/reliability/1-von-neumann.html</id>
    <published>2026-09-20T00:00:00Z</published>
    <updated>2026-09-20T00:00:00Z</updated>
    <summary>Can you build a machine that almost never fails out of parts that fail all the time? Von Neumann&#x27;s answer was yes, on two conditions: each part&#x27;s error rate ha…</summary>
  </entry>
  <entry>
    <title>Why More Checks Stop Helping: Correlated Verifiers and the Reliability Ceiling</title>
    <link rel="alternate" type="text/html" href="https://jianganghan.github.io/posts/reliability/2-verifier-cascades.html"/>
    <id>https://jianganghan.github.io/posts/reliability/2-verifier-cascades.html</id>
    <published>2026-09-20T00:00:00Z</published>
    <updated>2026-09-20T00:00:00Z</updated>
    <summary>Have a model generate an answer, have a model check it, and start over if it fails: that loop is one of the most common patterns in AI systems today.</summary>
  </entry>
</feed>
