<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Erwan Joly</title>
    <link>/</link>
    <description>Recent content on Erwan Joly</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 12 Jul 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Cron Is Stateless. Your Mortgage Isn&#39;t.</title>
      <link>/blog/cron-is-stateless-your-mortgage-isnt/</link>
      <pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate>
      <guid>/blog/cron-is-stateless-your-mortgage-isnt/</guid>
      <description>Why cron can&amp;#39;t express &amp;#39;every second Friday&amp;#39;, why that&amp;#39;s a feature and not a bug, and why I ended up replacing cron with RFC 5545 RRULEs in WealthRelay - then open-sourcing a React form to edit them.</description>
    </item>
    <item>
      <title>Risk Is a Terrible Word for Volatility</title>
      <link>/blog/risk-is-a-terrible-word-for-volatility/</link>
      <pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate>
      <guid>/blog/risk-is-a-terrible-word-for-volatility/</guid>
      <description>Finance says &amp;#39;risk&amp;#39; and means &amp;#39;standard deviation&amp;#39;. Everyone else hears &amp;#39;chance of losing everything&amp;#39;. That one mistranslation makes cash look safe, index funds look like gambling, and a yen look calmer than it is - depending on where you&amp;#39;re standing.</description>
    </item>
    <item>
      <title>Account Pre-Hijacking: Two Variants the Industry Keeps Confusing</title>
      <link>/blog/sso-account-prehijacking/</link>
      <pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate>
      <guid>/blog/sso-account-prehijacking/</guid>
      <description>Account pre-hijacking is not one attack: it&amp;#39;s two, with very different preconditions and severity. Here&amp;#39;s how to tell them apart, why triagers keep getting it wrong, and how to reproduce both from scratch.</description>
    </item>
    <item>
      <title>Auto-Generate React Forms from a HotChocolate GraphQL Schema</title>
      <link>/blog/hotchocolate-graphql-to-react-form/</link>
      <pubDate>Thu, 01 Sep 2022 00:00:00 +0000</pubDate>
      <guid>/blog/hotchocolate-graphql-to-react-form/</guid>
      <description>Turn any GraphQL mutation or query into a rendered React form using schema introspection, graphql-to-json-schema, and react-jsonschema-form - no hand-written UI per operation.</description>
    </item>
    <item>
      <title>HotChocolate: Sync Validation Rules to the Frontend via GraphQL Directives</title>
      <link>/blog/hotchocolate-validation-attributes/</link>
      <pubDate>Wed, 31 Aug 2022 00:00:00 +0000</pubDate>
      <guid>/blog/hotchocolate-validation-attributes/</guid>
      <description>How to expose .NET ValidationAttributes as GraphQL schema directives and generate matching Yup validators automatically - so the frontend never drifts from the backend rules.</description>
    </item>
    <item>
      <title>CV</title>
      <link>/cv/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/cv/</guid>
      <description>&lt;div class=&#34;cv-header&#34;&gt;
  &lt;img class=&#34;cv-qr&#34; src=&#34;/qr.png&#34; alt=&#34;QR code&#34; /&gt;
  &lt;h1&gt;Erwan Joly&lt;/h1&gt;
  &lt;p class=&#34;cv-subtitle&#34;&gt;Staff Software Engineer&lt;/p&gt;
  &lt;div class=&#34;cv-contact&#34;&gt;
    &lt;a href=&#34;mailto:erwanjoly@gmail.com&#34;&gt;✉ erwanjoly@gmail.com&lt;/a&gt;
    &lt;a href=&#34;https://github.com/erwan-joly&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;⌥ github.com/erwan-joly&lt;/a&gt;
    &lt;a href=&#34;https://linkedin.com/in/erwan-joly&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;in linkedin.com/in/erwan-joly&lt;/a&gt;
    &lt;span&gt;📍 New Zealand&lt;/span&gt;
  &lt;/div&gt;
  &lt;button class=&#34;cv-download&#34; onclick=&#34;window.print()&#34;&gt;↓ Save as PDF&lt;/button&gt;
&lt;/div&gt;
&lt;h2 id=&#34;profile&#34;&gt;Profile&lt;/h2&gt;
&lt;p&gt;Engineer from ISEN (French Higher Institute for Electronics and Digital Training), certified MCSA: Web Applications. Strong focus on clean architecture, GraphQL, and delivering high-quality features with simplicity. Track record of driving technical decisions as an early-stage employee and introducing best practices across teams. Open-source lead developer (NosCore, OpenNos). Founder of MarketRacoon, a personal finance SaaS product.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
