<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="pretty-atom-feed.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Frederic Marx</title>
  <subtitle>I’m a Design Engineer and Front-End Developer who lives and works in Berlin.</subtitle>
  <link href="https://fmarx.com/feed/feed.xml" rel="self" />
  <link href="https://fmarx.com/" />
  <updated>2026-03-06T00:00:00Z</updated>
  <id>https://fmarx.com/</id>
  <author>
    <name>Frederic Marx</name>
  </author>
  <entry>
    <title>🏇 Project Jockey</title>
    <link href="https://fmarx.com/journal/project-jockey/" />
    <updated>2026-03-06T00:00:00Z</updated>
    <id>https://fmarx.com/journal/project-jockey/</id>
    <content type="html">&lt;figure class=&quot;c-blockquote&quot;&gt;
&lt;blockquote cite=&quot;https://daverupert.com/2026/02/smaller-and-dumber/&quot;&gt;
&lt;p&gt;If I can make it smaller, I should.&lt;br&gt;
If I can make it dumber, I should.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figcaption class=&quot;c-blockquote__attribution&quot;&gt;&lt;a href=&quot;https://daverupert.com/2026/02/smaller-and-dumber/&quot;&gt;Dave Rupert&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;decision-log&quot;&gt;Decision log&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Keep it simple and use &lt;a href=&quot;https://www.11ty.dev/&quot;&gt;Eleventy&lt;/a&gt; and flat files instead of &lt;a href=&quot;https://astro.build/&quot;&gt;Astro&lt;/a&gt; and &lt;a href=&quot;https://www.sanity.io/&quot;&gt;Sanity&lt;/a&gt;, because in a long-term project, when it comes to external dependencies for critical features, “&lt;a href=&quot;https://adactio.com/journal/22399&quot;&gt;you pay the price in maintenance later on&lt;/a&gt;”.&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&quot;https://github.com/11ty/eleventy-base-blog&quot;&gt;&lt;code&gt;eleventy-base-blog&lt;/code&gt;&lt;/a&gt; as a starting point for architecture decisions.&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&quot;https://www.11ty.dev/docs/languages/webc/&quot;&gt;WebC&lt;/a&gt; so I can work on different elements in isolation.&lt;/li&gt;
&lt;li&gt;Don’t use Sass unless I need to. Write small CSS files that can be imported and bundled into WebC components via &lt;code&gt;link rel=&amp;quot;stylesheet&amp;quot;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Abandon idea to use &lt;code&gt;&amp;lt;blockquote&amp;gt;&lt;/code&gt; WebC component to generate quote attribution due to unreliable &lt;code&gt;slots.text.default&lt;/code&gt; output, and use the (excellent) &lt;a href=&quot;https://github.com/dweidner/markdown-it-attribution&quot;&gt;&lt;code&gt;markdown-it-attribution&lt;/code&gt;&lt;/a&gt; instead.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;inspiration&quot;&gt;Inspiration&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://adactio.com/&quot;&gt;https://adactio.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://amberwilson.co.uk/&quot;&gt;https://amberwilson.co.uk/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ericcarl.link/&quot;&gt;https://ericcarl.link/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ethanmarcotte.com/&quot;&gt;https://ethanmarcotte.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://frankchimero.com/&quot;&gt;https://frankchimero.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://henry.codes/&quot;&gt;https://henry.codes/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jasonsantamaria.com/&quot;&gt;https://jasonsantamaria.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://klim.co.nz/blog/&quot;&gt;https://klim.co.nz/blog/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ky.fyi/&quot;&gt;https://ky.fyi/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://matthiasott.com/&quot;&gt;https://matthiasott.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sanzo-wada.dmbk.io/&quot;&gt;https://sanzo-wada.dmbk.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stephango.com/&quot;&gt;https://stephango.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.itsnicethat.com/features/the-fence-graphic-design-publication-spotlight-310326&quot;&gt;https://www.itsnicethat.com/features/the-fence-graphic-design-publication-spotlight-310326&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.theverge.com/&quot;&gt;https://www.theverge.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.typemates.com/&quot;&gt;https://www.typemates.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;to-do&quot;&gt;To-do&lt;/h2&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; File structure&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; WebC&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Content&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Fonts&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Microformats&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Webmention endpoint&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Remove demo content&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Library&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Navigation&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Images&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Add legacy content&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Grid&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Move legacy posts into &lt;code&gt;journal&lt;/code&gt; directory (use &lt;code&gt;permalink&lt;/code&gt; to preserve URLs)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Explore using &lt;a href=&quot;https://obsidian.md/&quot;&gt;Obsidian&lt;/a&gt; to increase ease of editing, while maintaining Markdown files as data source.&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; checked=&quot;&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Type Scale&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Syntax highlighting&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Color schemes&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Color scheme switcher&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Adapt spacings to use harmonic scale&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input class=&quot;task-list-item-checkbox&quot; disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Tags&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>The magic is coming from inside the house</title>
    <link href="https://fmarx.com/journal/the-magic-is-coming-from-inside-the-house/" />
    <updated>2025-11-26T00:00:00Z</updated>
    <id>https://fmarx.com/journal/the-magic-is-coming-from-inside-the-house/</id>
    <content type="html">&lt;figure class=&quot;c-blockquote&quot;&gt;
&lt;blockquote cite=&quot;https://web.stanford.edu/class/cs124/p36-weizenabaum.pdf&quot;&gt;
&lt;p&gt;Once a particular program is unmasked, once it’s inner workings are explained in language sufficiently plain to induce understanding, its magic crumbles away.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figcaption class=&quot;c-blockquote__attribution&quot;&gt;Joseph Weizenbaum, &lt;a href=&quot;https://web.stanford.edu/class/cs124/p36-weizenabaum.pdf&quot;&gt;ELIZA&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;It usually takes at least three steps to solve a problem through automation:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Understand the problem.&lt;/li&gt;
&lt;li&gt;Come up with a process to solve the problem.&lt;/li&gt;
&lt;li&gt;Put together a technological system that makes it easy to repeat this process many times.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If it were up to the tech oligarchs at the forefront of the generative AI movement, we shouldn’t waste our time with any of that. The core assumption that drives their ideology: If we feed a neural network enough examples of desirable outcomes, a system to generate such outcomes will eventually manifest itself. Who cares about the process, as long as we get &lt;em&gt;results&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Neural networks are pattern recognition machines. Generative AI, as marketed today, is based on their capability to transform an input to resemble whatever patterns they’ve picked up on in their training data. But even if we settled on an approach to this that didn’t require &lt;a href=&quot;https://dcahn.substack.com/p/ai-capex-now-hinges-on-deus-ex-machina&quot;&gt;staggering amounts of money and resources&lt;/a&gt;, and &lt;a href=&quot;https://fmarx.com/journal/pink-goo-and-stolen-sandwiches/&quot;&gt;large-scale theft of intellectual labor&lt;/a&gt;, the technology itself has some limitations that are important to bear in mind.&lt;/p&gt;
&lt;p&gt;Imagine you’re building a system that can identify if someone is a doctor. You could train a neural network on pictures of doctors, but depending on where you get your training data, there’s a good chance that all you’d end up with is a system that detects when an image is predominantly white.&lt;/p&gt;
&lt;p&gt;The neural network has no way to know that doctors don’t always wear white, nor that people who wear white aren’t always doctors. &lt;em&gt;“&lt;a href=&quot;https://dl.acm.org/doi/10.1145/3442188.3445922&quot;&gt;The training data for [machine learning models] is only form; they do not have access to meaning&lt;/a&gt;”&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&quot;hallucination-is-in-the-eye-of-the-beholder&quot;&gt;Hallucination is in the eye of the beholder&lt;/h2&gt;
&lt;p&gt;In 1966, Joseph Weizenbaum released &lt;a href=&quot;https://en.wikipedia.org/wiki/ELIZA&quot;&gt;ELIZA&lt;/a&gt;. Similar to AI chatbots today, ELIZA’s simple technique of reflecting statements back at its human conversation partners was tapping into psychological vulnerabilities through which we’re compelled to &lt;em&gt;“&lt;a href=&quot;https://www.psychologytoday.com/us/blog/dancing-with-the-devil/202506/how-emotional-manipulation-causes-chatgpt-psychosis&quot;&gt;become our own emotional manipulators&lt;/a&gt;”&lt;/em&gt;, and to see consciousness in an unthinking machine.&lt;/p&gt;
&lt;p&gt;ChatGPT is more advanced than ELIZA, in the sense that its &lt;a href=&quot;https://arxiv.org/abs/2306.13141&quot;&gt;vast swamps of training data&lt;/a&gt; make it more likely to produce information that goes beyond a reflection of the prompt, and in that the ability of machine learning models to mimic the &lt;em&gt;form&lt;/em&gt; of human language is a lot more convincing than the rudimentary algorithms of its predecessors. But there is no guarantee that &lt;em&gt;convincing&lt;/em&gt; also means &lt;em&gt;correct&lt;/em&gt;.&lt;/p&gt;
&lt;figure class=&quot;c-blockquote&quot;&gt;
&lt;blockquote cite=&quot;https://bsky.app/profile/astrokatie.com/post/3lrxfsxnkms2c&quot;&gt;
&lt;p&gt;Chatbots — LLMs — do not know facts and are not designed to be able to accurately answer factual questions. They are designed to find and mimic patterns of words, probabilistically. When they’re “right” it’s because correct things are often written down, so those patterns are frequent.&lt;/p&gt;
&lt;p&gt;When a chatbot gets something wrong, it’s not because it made an error. It’s because on that roll of the dice, it happened to string together a group of words that, when read by a human, represents something false.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figcaption class=&quot;c-blockquote__attribution&quot;&gt;Katie Mac via &lt;a href=&quot;https://bsky.app/profile/astrokatie.com/post/3lrxfsxnkms2c&quot;&gt;Bluesky&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;As far as an LLM is concerned, nothing it produces is &lt;em&gt;“correct”&lt;/em&gt; or &lt;em&gt;“false”&lt;/em&gt;. &lt;a href=&quot;https://arxiv.org/abs/2409.05746&quot;&gt;Pleading with a chatbot to stop hallucinating is futile&lt;/a&gt;, because what we perceive as hallucination is simply the gap between the kind of output we’d expect, and the output that it actually produces. We should adjust our expectations accordingly.&lt;/p&gt;
&lt;h2 id=&quot;if-you-think-ai-is-smart-wait-until-you-meet-yourself&quot;&gt;If you think AI is smart, wait until you meet yourself&lt;/h2&gt;
&lt;p&gt;The trick to making an LLM’s mediocre output appear ✨&lt;em&gt;magical&lt;/em&gt;✨ is showing it side by side with the human input that spawned it. Seeing the prompt reflected in its corresponding result contributes to the illusion that the LLM &lt;em&gt;understands us&lt;/em&gt;, even though &lt;em&gt;“&lt;a href=&quot;https://dl.acm.org/doi/10.1145/3442188.3445922&quot;&gt;no actual language understanding is taking place […] as can be shown by careful manipulation of the test data to remove spurious cues the systems are leveraging” and “LMs […] only have success in tasks that can be approached by manipulating linguistic form&lt;/a&gt;”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Maybe even more importantly, the prompt provides a frame for interpreting its own output in a way that makes it make sense. &lt;em&gt;“&lt;a href=&quot;https://dl.acm.org/doi/10.1145/3442188.3445922&quot;&gt;If one side of the communication does not have meaning, then the comprehension of the implicit meaning is an illusion arising from our singular human understanding of language (independent of the model)&lt;/a&gt;”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;If I yell towards the sky, &lt;em&gt;“Show me a duck!”&lt;/em&gt;, and you look up and see the shape of one in a cloud, that says more about human imagination than about the reasoning capabilities of the cloud.&lt;/p&gt;
&lt;h2 id=&quot;show-me-how-it-fails-and-i-ll-tell-you-how-it-works&quot;&gt;Show me how it fails, and I’ll tell you how it works&lt;/h2&gt;
&lt;p&gt;Any magic trick quickly falls apart if not performed by a skilled illusionist in a carefully controlled environment.&lt;/p&gt;
&lt;p&gt;When &lt;a href=&quot;https://en.wikipedia.org/wiki/Grok_(chatbot)&quot;&gt;Grok&lt;/a&gt; suggested that &lt;a href=&quot;https://www.404media.co/elon-musk-could-drink-piss-better-than-any-human-in-history-grok-says/&quot;&gt;Elon Musk has the &lt;em&gt;“potential to drink piss better than any human in history”&lt;/em&gt;&lt;/a&gt;, it was doing exactly what you’d expect from an LLM; It took a prompt (such as &lt;em&gt;“Would Elon Musk do well in a piss drinking competition?”&lt;/em&gt;), combined it with data on which it had been trained (such as &lt;em&gt;“Elon Musk is an exceptional athlete”&lt;/em&gt;), and molded the resulting string of words into something that — at least formally — looks like a sentence an actual human might write.&lt;/p&gt;
&lt;p&gt;A glitch like this &lt;em&gt;“&lt;a href=&quot;https://charumaithani.net/texts/glitch-and-error-implications-in-aesthetics-and-communication/&quot;&gt;foregrounds the medium, unveiling the limitations of the machine more than capabilities&lt;/a&gt;”&lt;/em&gt;, and brings us closer to understanding how it actually works. In many ways, understanding how things work is the antithesis of generative AI.&lt;/p&gt;
&lt;h2 id=&quot;had-one-idea-called-it-a-day&quot;&gt;Had one idea, called it a day&lt;/h2&gt;
&lt;p&gt;When researcher Elaine Zhao prompted &lt;a href=&quot;https://en.wikipedia.org/wiki/Stability_AI&quot;&gt;Stability AI&lt;/a&gt; and ChatGPT to generate pictures of &lt;em&gt;“Video Game Italian Plumber”&lt;/em&gt;, &lt;em&gt;“&lt;a href=&quot;https://escholarship.org/uc/item/50c8j1xt&quot;&gt;each program generated an output that highly resembled Mario, the Italian plumber from the video game Super Mario, a copyrighted character&lt;/a&gt;”&lt;/em&gt;. This example illustrates two fundamental issues with LLMs as creative tools.&lt;/p&gt;
&lt;p&gt;Firstly, both models didn’t &lt;em&gt;generate&lt;/em&gt; the character Mario. The only way they were able to produce the output that they did is by regurgitating something that &lt;em&gt;already had been created&lt;/em&gt; by somebody else.&lt;/p&gt;
&lt;p&gt;Secondly, it implies that &lt;a href=&quot;https://en.wikipedia.org/wiki/Shigeru_Miyamoto&quot;&gt;Shigeru Miyamoto&lt;/a&gt; woke up one day with the fully-formed idea to make a video game about an Italian plumber with a red hat and a mustache, and his adventures in the Mushroom Kingdom. In reality, like most ideas, &lt;a href=&quot;https://en.wikipedia.org/wiki/Mario#Concept_and_creation&quot;&gt;Mario was developed over time, in a creative process&lt;/a&gt;, chipping away at original concepts, outside influences, inspiration, and creative constraints.&lt;/p&gt;
&lt;p&gt;Another example for a tech oligarch’s flagrant ignorance of the processes and human dynamics that undergird the things they’re trying to recreate is Elon Musks misbegotten &lt;a href=&quot;https://bsky.app/profile/molly.wiki/post/3m4bee6xw522x&quot;&gt;Wikipedia-powered Wikipedia competitor&lt;/a&gt; and right-wing propaganda machine, Grokipedia.&lt;/p&gt;
&lt;figure class=&quot;c-blockquote&quot;&gt;
&lt;blockquote cite=&quot;https://www.404media.co/grokipedia-is-the-antithesis-of-everything-that-makes-wikipedia-good-useful-and-human/&quot;&gt;
&lt;p&gt;There is a reason Wikipedia editors are called “editors” and it’s because writing a useful encyclopedia entry does not mean “putting down random facts in no discernible order.”&lt;/p&gt;
&lt;p&gt;On even the lowest of stakes Wikipedia pages, real humans with real taste and real thoughts and real perspectives discuss and debate the types of information that should be included in any given article, in what order it should be presented, and the specific language that should be used.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figcaption class=&quot;c-blockquote__attribution&quot;&gt;Jason Koebler, &lt;a href=&quot;https://www.404media.co/grokipedia-is-the-antithesis-of-everything-that-makes-wikipedia-good-useful-and-human/&quot;&gt;Grokipedia Is the Antithesis of Everything That Makes Wikipedia Good, Useful, and Human&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The friction that Musk and his ilk are hellbent to eradicate is not an obstacle; it’s the very engine that makes creation possible and worthwhile.&lt;/p&gt;
&lt;h2 id=&quot;reclaiming-fomo-for-the-post-bubble-era&quot;&gt;Reclaiming FOMO for the post-bubble-era&lt;/h2&gt;
&lt;figure class=&quot;c-blockquote&quot;&gt;
&lt;blockquote cite=&quot;https://doctorow.medium.com/https-pluralistic-net-2025-09-27-econopocalypse-subprime-intelligence-e9a06136d109&quot;&gt;
&lt;p&gt;AI is the asbestos we are shoveling into the walls of our society and our descendants will be digging it out for generations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figcaption class=&quot;c-blockquote__attribution&quot;&gt;Cory Doctorow, &lt;a href=&quot;https://doctorow.medium.com/https-pluralistic-net-2025-09-27-econopocalypse-subprime-intelligence-e9a06136d109&quot;&gt;The real (economic) AI apocalypse is nigh&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;One core tenet of being a tech oligarch is the inability to take no for an answer. When a tech oligarch has an idea, but it turns out the idea would be bad for humanity, they’re still gonna do it, and then they will do five other things to try and &lt;em&gt;“mitigate the risks”&lt;/em&gt; (or at least that’s what they’ll claim).&lt;/p&gt;
&lt;p&gt;I think we could all save ourselves a lot of trouble by not allowing them to do the bad thing in the first place, but that’s more of a long-term project. In the meantime, what if we take everything that generative AI asks of us, and do the exact opposite?&lt;/p&gt;
&lt;p&gt;Value deliberate process over automatic results, &lt;a href=&quot;https://bsky.app/profile/anthonymoser.com/post/3m6cefchy3k2z&quot;&gt;shared reality over hyperpersonalization&lt;/a&gt;. Context over content, sources over summaries. Constructive disagreement over saccharine &lt;a href=&quot;https://c3.unu.edu/blog/how-sycophancy-shapes-the-reliability-of-large-language-models&quot;&gt;sycophancy&lt;/a&gt;. Invest in relationships with humans, not machines. Ask questions without expecting an answer. Care about something. Care for someone. Love something. &lt;a href=&quot;https://anthonymoser.github.io/writing/ai/haterdom/2025/08/26/i-am-an-ai-hater.html&quot;&gt;Hate something&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Practice saying no. Practice accepting a no. Don’t settle for &lt;em&gt;“good enough”&lt;/em&gt;. Move slowly and mend things. &lt;a href=&quot;https://phirephoenix.com/blog/2025-10-11/friction&quot;&gt;Embrace friction&lt;/a&gt;. The post-bubble-era is coming; don’t miss out!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Pink goo and stolen sandwiches</title>
    <link href="https://fmarx.com/journal/pink-goo-and-stolen-sandwiches/" />
    <updated>2025-11-09T00:00:00Z</updated>
    <id>https://fmarx.com/journal/pink-goo-and-stolen-sandwiches/</id>
    <content type="html">&lt;p&gt;Under global capitalism, work doesn’t just magically disappear. It only gets transformed, shifted around, and obscured — even from the workers themselves — through layers upon layers of commodification and alienation.&lt;/p&gt;
&lt;p&gt;For you to be able to use any generative AI product, countless authors, artists, scientists, journalists, and other workers around the world had to spend hours producing the rich substrate of information that this industry desperately needs in order to grow. Content moderators had to sanitise &lt;a href=&quot;https://arxiv.org/abs/2306.13141&quot;&gt;data swamps&lt;/a&gt; and provide &lt;a href=&quot;https://en.wikipedia.org/wiki/Reinforcement_learning_from_human_feedback&quot;&gt;reinforcement training&lt;/a&gt; to large language models. Construction workers and facility managers had to build and operate &lt;a href=&quot;https://www.404media.co/a-black-hole-of-energy-use-metas-massive-ai-data-center-is-stressing-out-a-louisiana-community/&quot;&gt;massive data centers&lt;/a&gt;. Site reliability engineers had to set up, scale, and maintain global server infrastructure. UX designers and software engineers had to package complex technology into accessible features. With a simple prompt, so goes the &lt;a href=&quot;https://en.wikipedia.org/wiki/Deal_with_the_Devil&quot;&gt;Faustian bargain&lt;/a&gt; with generative AI, you can escape the shared struggle of all these poor souls, and join the ranks of those who are savvy enough to profit off of other people’s work instead of toiling away themselves.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;In &lt;a href=&quot;https://www.versobooks.com/products/887-capital-is-dead&quot;&gt;&lt;em&gt;Capital Is Dead: Is This Something Worse?&lt;/em&gt;&lt;/a&gt;, McKenzie Wark describes labor force that gets harvested and shaped into commodities as “pink goo”. This image seems particularly fitting for large language models; the intellectual work of millions, ground up into atomic tokens and blended into an anonymous, homogenous mass.&lt;/p&gt;
&lt;p&gt;The generative AI industry only exists because some people decided that it’s okay for them to take all this work with no permission, let alone compensation for the original creators, and to charge others for the privilege of using the probabilistic plagiarism machines they’ve fed it to. “&lt;a href=&quot;https://anthonymoser.github.io/writing/ai/haterdom/2025/08/26/i-am-an-ai-hater.html&quot;&gt;[Generative AI] is a rude technology, and it deserves a rude response&lt;/a&gt;”. It doesn’t matter if you find it useful.&lt;/p&gt;
&lt;p&gt;If you tell me you’re hungry and I then walk up to another person, punch them in the face, take their sandwich, and hand it to you, the appropriate response is “What the hell is wrong with you?”, not “Thank you for the nice sandwich”. When we open the faucet and pink goo comes out, we have to remind ourselves that it wasn’t the faucet that made it.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>One repo, many sites</title>
    <link href="https://fmarx.com/til/one-repo-many-sites/" />
    <updated>2020-10-09T00:00:00Z</updated>
    <id>https://fmarx.com/til/one-repo-many-sites/</id>
    <content type="html">&lt;p&gt;Two days ago, I learned through an ad that the &lt;em&gt;.gay&lt;/em&gt; top-level domain is now widely available.&lt;/p&gt;
&lt;p&gt;Against my better judgement, I went to the website of my domain provider and, who would have thought; &lt;a href=&quot;https://software.gay&quot;&gt;software.gay&lt;/a&gt; was still available.&lt;/p&gt;
&lt;p&gt;My initial idea was to just redirect it to &lt;a href=&quot;https://fmarx.com&quot;&gt;my site&lt;/a&gt;, but after I shared the good news on Twitter, I was encouraged to take it one step further:&lt;/p&gt;
&lt;div&gt;
&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Please please please make a reference to this glorious domain name in your meta title or meta description.&lt;/p&gt;&amp;mdash; Myriam (@myriamjessier) &lt;a href=&quot;https://twitter.com/myriamjessier/status/1314176196121440256?ref_src=twsrc%5Etfw&quot;&gt;October 8, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;I recently had to deal with multiple versions of the same site that were linked using &lt;a href=&quot;https://en.wikipedia.org/wiki/Canonical_link_element&quot;&gt;rel=&amp;quot;canonical&amp;quot;&lt;/a&gt;, and so I decided to create a non-canonical, gay headcanon mirror of my original site.&lt;/p&gt;
&lt;p&gt;My website is built using the excellent &lt;a href=&quot;https://www.11ty.dev/&quot;&gt;Eleventy static site generator&lt;/a&gt;, and &lt;a href=&quot;https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/&quot;&gt;deployed automatically to Netlify&lt;/a&gt; whenever I push a new git commit on my main branch.&lt;/p&gt;
&lt;p&gt;That meant all I had to do was create another Netlify project for &lt;a href=&quot;https://fmarx.com/til/one-repo-many-sites/software.gay&quot;&gt;software.gay&lt;/a&gt; and configure it to deploy a slightly different version of the same site.&lt;/p&gt;
&lt;p&gt;Within the Netlify project, I &lt;a href=&quot;https://docs.netlify.com/configure-builds/environment-variables/&quot;&gt;created the environment variable&lt;/a&gt; &lt;code&gt;ELEVENTY_ENV&lt;/code&gt; and set its value to &lt;code&gt;gay&lt;/code&gt; to let my build script know who it was dealing with.&lt;/p&gt;
&lt;p&gt;I then &lt;a href=&quot;https://www.11ty.dev/docs/data-js/#example-exposing-environment-variables&quot;&gt;exposed my environment variable to Eleventy&lt;/a&gt;, which enabled me to write the following code in my Nunjucks templates:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{% if gay.environment == &#39;gay&#39; %}
  &amp;lt;!-- Do gay things --&amp;gt;
{% endif %}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I think that is beautiful.&lt;/p&gt;
&lt;p&gt;Thanks a lot to the &lt;a href=&quot;https://www.11ty.dev/&quot;&gt;Eleventy&lt;/a&gt; project for their flexible data handling, and &lt;a href=&quot;https://www.netlify.com/&quot;&gt;Netlify&lt;/a&gt; for making setting up continuous deployment a breeze.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Auto‑fill or auto‑fit?</title>
    <link href="https://fmarx.com/til/auto-fill-auto-fit/" />
    <updated>2018-11-04T00:00:00Z</updated>
    <id>https://fmarx.com/til/auto-fill-auto-fit/</id>
    <content type="html">&lt;p&gt;One of my favorite snippets of CSS Grid is the following one:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I once spent a significant amount of time wondering why it would create more columns than grid-items. Turns out, there is a subtle difference between &lt;code&gt;auto-fill&lt;/code&gt; and &lt;code&gt;auto-fit&lt;/code&gt;. If you want to make sure that your grid-items always span at least the full width of your grid you need to use &lt;code&gt;auto-fit&lt;/code&gt; for that.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.sarasoueidan.com/&quot;&gt;Sara Soueidan&lt;/a&gt; has kindly written a &lt;a href=&quot;https://css-tricks.com/auto-sizing-columns-css-grid-auto-fill-vs-auto-fit/&quot;&gt;comprehensive explanation over at CSS-Tricks&lt;/a&gt;. Thank you, Sara!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Webmentions</title>
    <link href="https://fmarx.com/notes/webmentions/" />
    <updated>2016-04-17T00:00:00Z</updated>
    <id>https://fmarx.com/notes/webmentions/</id>
    <content type="html">&lt;p&gt;Testing Webmentions on a static site at IndieWebCamp Nürnberg 2016.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Webfonts Last</title>
    <link href="https://fmarx.com/notes/webfonts-last/" />
    <updated>2016-03-21T00:00:00Z</updated>
    <id>https://fmarx.com/notes/webfonts-last/</id>
    <content type="html">&lt;p&gt;_This is sort of a response to Adam “&lt;a href=&quot;https://twitter.com/mrmrs_&quot;&gt;@mrmrs_&lt;/a&gt;” Morse’s “&lt;a href=&quot;http://mrmrs.io/writing/2016/03/17/webfonts/&quot;&gt;Webfonts&lt;/a&gt;.” It’s not a rebuttal by any means, but rather a collection of my own thoughts that at least tangentially relate to his article._&lt;/p&gt;
&lt;p&gt;Webfonts, in theory, are great. Using them responsibly though, without negative impact on the user experience, is an engineering nightmare at best, impossible at worst.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.filamentgroup.com/lab/font-events.html&quot;&gt;The FOIT, the standard way of browsers loading webfonts, is simply unacceptable&lt;/a&gt;. Instead, we’re advocating &lt;a href=&quot;http://www.zachleat.com/web/critical-webfonts/&quot;&gt;the FOUT, or even FOFT&lt;/a&gt;. We keep trying to comfort ourselves by repeating how shuffling fonts around is &lt;em&gt;a feature, not a bug&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;And yes, progressively building up content as data flows in is a fascinating and exciting quality of the Web.&lt;/p&gt;
&lt;p&gt;Still, the value of this feature at this point seems rather academic.&lt;/p&gt;
&lt;p&gt;It’s just hard to imagine a user going “Wow, the whole page suddenly changed for no apparent reason. What an awesome experience!”&lt;/p&gt;
&lt;div&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;.&lt;a href=&quot;https://twitter.com/mrmrs_&quot;&gt;@mrmrs_&lt;/a&gt; FOIT and FOUT are so offensive I don&amp;#39;t understand how any designer would be okay with using web fonts&lt;/p&gt;&amp;mdash; Brent Jackson (@jxnblk) &lt;a href=&quot;https://twitter.com/jxnblk/status/710456292436025345&quot;&gt;March 17, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;When I first read &lt;a href=&quot;http://mrmrs.io/writing/2016/03/17/webfonts/&quot;&gt;Adam’s article&lt;/a&gt;, intriguing as it was, &lt;a href=&quot;https://twitter.com/fredericmarx/status/710480904255315968&quot;&gt;it didn’t sit well with me&lt;/a&gt;. Of course it didn’t. It never feels good when someone tells you how something you love isn’t good for you. Especially when you know deep down that they have a point.&lt;/p&gt;
&lt;p&gt;And if there is one thesis in this article I can wholeheartedly agree with, it’s probably this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;System fonts &lt;strong&gt;can&lt;/strong&gt; be beautiful.
Webfonts are &lt;strong&gt;not&lt;/strong&gt; a requirement for great typography.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;system-fonts-can-be-beautiful&quot;&gt;System fonts can be beautiful.&lt;/h2&gt;
&lt;p&gt;Before we had webfonts, building websites with the limited typographic resources available was an art form in its own right. Some designs from that time still hold up remarkably well.&lt;/p&gt;
&lt;figure&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://fmarx.com/notes/webfonts-last/ukVoNP57OJ-800.avif 800w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://fmarx.com/notes/webfonts-last/ukVoNP57OJ-800.webp 800w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://fmarx.com/notes/webfonts-last/ukVoNP57OJ-800.png&quot; alt=&quot;&quot; width=&quot;800&quot; height=&quot;597&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;figcaption class=&quot;imageCaption&quot;&gt;[Jon Tan](http://jontangerine.com/)’s website in 2010 was a paragon of typographic style without webfonts.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Since then, &lt;a href=&quot;http://practicaltypography.com/system-fonts.html&quot;&gt;system fonts have only gotten better&lt;/a&gt;. Apple has continued adding beloved classics like &lt;a href=&quot;https://en.wikipedia.org/wiki/Avenir_%28typeface%29&quot;&gt;Avenir&lt;/a&gt;, &lt;a href=&quot;http://typographica.org/on-typography/microsofts-cleartype-font-collection-a-fair-and-balanced-review/&quot;&gt;Microsoft has come up with some quality original designs&lt;/a&gt; and the Android system families &lt;a href=&quot;https://en.wikipedia.org/wiki/Roboto&quot;&gt;Roboto&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Droid_fonts&quot;&gt;Droid&lt;/a&gt; are among the most popular webfonts themselves.&lt;/p&gt;
&lt;div&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;The best &amp;quot;typography tip for UI&amp;quot; I have for you is use system fonts.&lt;/p&gt;&amp;mdash; Brent Jackson (@jxnblk) &lt;a href=&quot;https://twitter.com/jxnblk/status/704755241263173633&quot;&gt;March 1, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;General UI elements and menus are probably the most obvious place to start using system fonts. They are what the system designers thought was best, so we might as well take their word for it instead of reinventing the wheel.&lt;/p&gt;
&lt;p&gt;Also, the user has already bought into them by choice of OS, or is at least so accustomed that they don’t worry about them anymore.&lt;/p&gt;
&lt;p&gt;System UI fonts are a little tricky to use, but you can read all about it in Smashing Magazine’s aptly named article &lt;a href=&quot;https://www.smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide/&quot; title=&quot;Read &#39;Using System UI Fonts In Web Design: A Quick Practical Guide&#39;&quot;&gt;Using System UI Fonts In Web Design: A Quick Practical Guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, yes, &lt;em&gt;webfonts are not a requirement for great typography&lt;/em&gt;. But does that mean we should stop using them altogether?&lt;/p&gt;
&lt;h2 id=&quot;when-should-we-use-webfonts&quot;&gt;When should we use webfonts?&lt;/h2&gt;
&lt;p&gt;All of this shouldn’t lead us to underestimate the benefits of webfonts. In &lt;a href=&quot;https://medium.com/@yarcom/in-defense-of-homogeneous-design-b27f79f4bb87#.jcc9ui9p1&quot;&gt;another recent essay well worth your time&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/Yarcom&quot;&gt;Yaron Schoen&lt;/a&gt; writes about embracing homogeneous design. One point brought up in the comments is that the more we work towards a shared universal design language and the more we reduce decoration, the more important type becomes as a brand differentiator.&lt;/p&gt;
&lt;p&gt;Another aspect is the appreciation of typography as a craft. A system of carefully compiled webfonts is a great place to showcase your design prowess. But so is a Flash intro. And like Flash intros, the loading of webfonts get’s in our users’ way when it’s most inconvenient.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Building products in the digital space really does mean you need to let your ego go.” — &lt;a href=&quot;https://medium.com/@yarcom/in-defense-of-homogeneous-design-b27f79f4bb87#.qy01pplsi&quot;&gt;Yaron Schoen&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When users first visit a website, they probably have a clear goal. They might want to read an article they were sent to on social media, look up some information from a search result or buy a product. Most of the time that goal isn’t to look at a specific typeface.&lt;/p&gt;
&lt;p&gt;The Web is a time-based medium. As designers, it is our job to orchestrate our products according to our users’ needs over time.&lt;/p&gt;
&lt;p&gt;We’re currently trying to present webfonts as soon as possible, without any regard for our users’ workflow. By interrupting them with our font loading shenanigans, we lose their trust in our site working properly, and it’s trust that wins return visitors.&lt;/p&gt;
&lt;p&gt;So the question is, when, at which point in the user journey, should we introduce webfonts? When is a good time to gradually, progressively enhance the user experience?&lt;/p&gt;
&lt;p&gt;Probably the most straightforward solution would be monitoring when a font becomes available through &lt;a href=&quot;https://dev.opera.com/articles/better-font-face/&quot;&gt;Font Load Events&lt;/a&gt;, but only to swap it in when the user transitions from one page to another. This can also mean deferring webfont use until a user visits our site a second time.&lt;/p&gt;
&lt;p&gt;Another, more cheeky approach could be using the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API&quot;&gt;Page Visibility API&lt;/a&gt; to apply webfonts when the user isn’t looking.&lt;/p&gt;
&lt;p&gt;So instead of minimizing the FOUT it’s also possible to remove it altogether through technical means. But moving stylistic enhancements further down the timeline is also interesting on a conceptual level.&lt;/p&gt;
&lt;h2 id=&quot;progressive-fidelity&quot;&gt;Progressive fidelity&lt;/h2&gt;
&lt;p&gt;Another class of products that relies heavily on digital typography are native apps. Most of the time though, apps don’t need to care about progressive asset loading. They can just install everything right off the bat, which allows for a generous use of custom typefaces.&lt;/p&gt;
&lt;figure&gt;
&lt;p&gt;&lt;a href=&quot;https://vimeo.com/157259335&quot;&gt;https://vimeo.com/157259335&lt;/a&gt;&lt;/p&gt;
&lt;figcaption class=&quot;imageCaption&quot;&gt;The [Viki Wikipedia reader app](http://viki-app.com/) shines through its use of custom typography.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Of course, hiding all content behind a tiresome installation routine is a terrible idea on the Web. But the Web “&lt;a href=&quot;https://twitter.com/jaffathecake&quot;&gt;doing everything native can and fast&lt;/a&gt;” is a well examined problem and the strategies used by developers and browser vendors to bridge the gap are also interesting from a design perspective.&lt;/p&gt;
&lt;figure&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://fmarx.com/notes/webfonts-last/GV8Ix82Bij-800.avif 800w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://fmarx.com/notes/webfonts-last/GV8Ix82Bij-800.webp 800w&quot;&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://fmarx.com/notes/webfonts-last/GV8Ix82Bij-800.png&quot; alt=&quot;&quot; width=&quot;800&quot; height=&quot;466&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;p&gt;For the sake of this argument, let’s look at the Web as a medium that offers information and services at a low level of commitment and pays for low friction availability with it’s lack of visual fidelity. Native apps, on the other hand, offer high fidelity but the threshold of commitment to using them is much higher through the requirement of explicit installation.&lt;/p&gt;
&lt;p&gt;The challenge of progressive web app technology is to gradually elevate a product from a state of low friction and high discoverability to the rich experience and home screen familiarity that native apps provide.&lt;/p&gt;
&lt;p&gt;There is a number of upcoming browser APIs aimed at standardising this kind of transition. Most notably, &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API&quot;&gt;Service Workers&lt;/a&gt; provide a way in which progressive web apps can install additional features, like offline capabilities, after the initial contact with the user.&lt;/p&gt;
&lt;p&gt;We can go even further by using a &lt;em&gt;manifest.json&lt;/em&gt; file, so when users repeatedly show interest in our product, the browser can &lt;a href=&quot;https://developer.chrome.com/multidevice/android/installtohomescreen&quot;&gt;ask them to add it to their home screen&lt;/a&gt; and provide other privileges associated with native apps.&lt;/p&gt;
&lt;p&gt;Communicating this process of increasing familiarity to our users is a great design opportunity. In his previously mentioned article, Yaron calls digital product design “&lt;a href=&quot;https://medium.com/@yarcom/in-defense-of-homogeneous-design-b27f79f4bb87#.amt7re2a6&quot;&gt;a conversation framework between a human and a computer&lt;/a&gt;.” Negotiating commitment is an important part of that conversation.&lt;/p&gt;
&lt;p&gt;Sustainable product design is about forming a relationship with our audience over time. Users will appreciate our efforts to make them more comfortable if they come in the right dose at the right moment.&lt;/p&gt;
&lt;p&gt;This is why I think webfonts will last.&lt;/p&gt;
</content>
  </entry>
</feed>