<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://daniasyrofi.com/writing/</id>
  <title>Dani Asyrofi — Writing</title>
  <subtitle>Long-form essays on interface craft, design systems, and the details that compound.</subtitle>
  <link rel="self" href="https://daniasyrofi.com/writing/feed.xml" />
  <link rel="alternate" type="text/html" href="https://daniasyrofi.com/writing/" />
  <updated>2026-09-04T00:00:00Z</updated>
  <author><name>Muhammad Dani Asyrofi</name><uri>https://daniasyrofi.com/</uri></author>
  <rights>© Muhammad Dani Asyrofi</rights>
  <entry>
    <id>https://daniasyrofi.com/writing/content-pressure/</id>
    <title>Your layout has not met its content yet</title>
    <link href="https://daniasyrofi.com/writing/content-pressure/" />
    <updated>2026-09-04T00:00:00Z</updated>
    <published>2026-09-04T00:00:00Z</published>
    <summary>How to build interfaces that survive long names, unbroken tokens, translation, RTL, zoom, and narrow containers.</summary>
    <author><name>Dani Asyrofi</name></author>
  </entry>
  <entry>
    <id>https://daniasyrofi.com/writing/interface-layout-normalizer/</id>
    <title>Every gap needs an owner</title>
    <link href="https://daniasyrofi.com/writing/interface-layout-normalizer/" />
    <updated>2026-09-04T00:00:00Z</updated>
    <published>2026-09-04T00:00:00Z</published>
    <summary>Clean spacing is not smaller spacing. Learn to measure relationships, remove duplicate owners, and fit corrections to the system already there.</summary>
    <author><name>Dani Asyrofi</name></author>
  </entry>
  <entry>
    <id>https://daniasyrofi.com/writing/interface-motion/</id>
    <title>Motion should survive a change of mind</title>
    <link href="https://daniasyrofi.com/writing/interface-motion/" />
    <updated>2026-09-04T00:00:00Z</updated>
    <published>2026-09-04T00:00:00Z</published>
    <summary>Design UI motion that starts from the right place, reverses cleanly, and still communicates when movement is reduced.</summary>
    <author><name>Dani Asyrofi</name></author>
  </entry>
  <entry>
    <id>https://daniasyrofi.com/writing/spinner-comes-second/</id>
    <title>The spinner comes second</title>
    <link href="https://daniasyrofi.com/writing/spinner-comes-second/" />
    <updated>2026-09-04T00:00:00Z</updated>
    <published>2026-09-04T00:00:00Z</published>
    <summary>A click deserves an answer before the server has one.</summary>
    <author><name>Dani Asyrofi</name></author>
  </entry>
  <entry>
    <id>https://daniasyrofi.com/writing/text-wrap/</id>
    <title>Every line break is a layout decision</title>
    <link href="https://daniasyrofi.com/writing/text-wrap/" />
    <updated>2026-09-04T00:00:00Z</updated>
    <published>2026-09-04T00:00:00Z</published>
    <summary>A practical field note on balance, pretty, and typography that survives real content.</summary>
    <author><name>Dani Asyrofi</name></author>
  </entry>
  <entry>
    <id>https://daniasyrofi.com/writing/details-that-make-interfaces-feel-better/</id>
    <title>Interface Tuning. A field guide to thirty-one interface details</title>
    <link href="https://daniasyrofi.com/writing/details-that-make-interfaces-feel-better/" />
    <updated>2026-04-25T00:00:00Z</updated>
    <published>2026-03-15T00:00:00Z</published>
    <summary>Thirty-one details from shipping products, with interactive demos and a one-command install. Linear, Stripe, Vercel, Raycast, Apple, Figma, Arc, Notion.</summary>
    <author><name>Dani Asyrofi</name></author>
  </entry>
</feed>
