<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>home on natey hecht</title>
    <link>https://natey.me/</link>
    <description>Recent content in home on natey hecht</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <copyright>Copyright © 2026, natey hecht.</copyright>
    <lastBuildDate>Sat, 29 Nov 2025 16:26:26 -0800</lastBuildDate>
    <atom:link href="https://natey.me/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>projects</title>
      <link>https://natey.me/projects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://natey.me/projects/</guid>
      <description>&lt;h2 id=&#34;projects&#34;&gt;projects&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/dropalltables/catprinter&#34;&gt;catprinter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;a web ui for a reverse engineered aliexpress thermal printer&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/dropalltables/cdp&#34;&gt;cdp&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;deploy to coolify with one command&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/dropalltables/hackathonstore&#34;&gt;hackathonstore&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;an inventory management system for hardware hackathons&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/dropalltables/sixdegreesofhackclub&#34;&gt;sixdegreesofhackclub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;a full map of over 34k channel links in the hack club slack workspace&lt;/p&gt;</description>
    </item>
    <item>
      <title>feefts</title>
      <link>https://natey.me/feefts/</link>
      <pubDate>Sat, 29 Nov 2025 16:26:26 -0800</pubDate>
      <guid>https://natey.me/feefts/</guid>
      <description>&lt;h2 id=&#34;feefts&#34;&gt;feefts&lt;/h2&gt;&#xA;&lt;p&gt;for some reason a lot of people have been sending me requests for prices. i do not know for what, or why. all of the people have one word names, ending in feeft.&lt;/p&gt;&#xA;&lt;p&gt;i have decided to share this slightly concerning but hilarous string of incidents. enjoy.&lt;/p&gt;&#xA;&lt;h3 id=&#34;belarusian-feeft&#34;&gt;belarusian feeft&lt;/h3&gt;&#xA;&lt;img src=&#34;https://natey.me/images/feefts/belarus.png&#34; alt=&#34;belarusian feeft&#34; class=&#34;half-width&#34;&gt;&#xA;&lt;h3 id=&#34;hungarian-feeft&#34;&gt;hungarian feeft&lt;/h3&gt;&#xA;&lt;img src=&#34;https://natey.me/images/feefts/hungary.png&#34; alt=&#34;hungarian feeft&#34; class=&#34;half-width&#34;&gt;&#xA;&lt;h3 id=&#34;latvian-feeft&#34;&gt;latvian feeft&lt;/h3&gt;&#xA;&lt;img src=&#34;https://natey.me/images/feefts/latvia.png&#34; alt=&#34;latvian feeft&#34; class=&#34;half-width&#34;&gt;&#xA;&lt;h3 id=&#34;south-african-feeft&#34;&gt;south african feeft&lt;/h3&gt;&#xA;&lt;img src=&#34;https://natey.me/images/feefts/south-africa.png&#34; alt=&#34;south african feeft&#34; class=&#34;half-width&#34;&gt;&#xA;&lt;h3 id=&#34;unknown-feeft&#34;&gt;unknown feeft&lt;/h3&gt;&#xA;&lt;img src=&#34;https://natey.me/images/feefts/unknown.png&#34; alt=&#34;unknown feeft&#34; class=&#34;half-width&#34;&gt;</description>
    </item>
    <item>
      <title>Email Is (Very) Hard</title>
      <link>https://natey.me/email-is-very-hard/</link>
      <pubDate>Wed, 12 Nov 2025 16:47:25 -0800</pubDate>
      <guid>https://natey.me/email-is-very-hard/</guid>
      <description>&lt;h4 id=&#34;tldr-i-made-replaced-loops-with-a-custom-resend-based-solution-i-opensourced-it-and-called-it-resender&#34;&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; I made replaced Loops with a custom resend-based solution. I opensourced it and called it &lt;a href=&#34;https://github.com/dropalltables/resender&#34;&gt;resender&lt;/a&gt;.&lt;/h4&gt;&#xA;&lt;p&gt;Email may be the most complicated thing ever to come out of computing. It is the only decentralized standard to ever truly thrive, and due to that it has to be backwards-compatible with mainframes in universities from 1971.&lt;/p&gt;&#xA;&lt;p&gt;But I don&amp;rsquo;t want to talk about email, mainly because I got banned from email.&lt;/p&gt;&#xA;&lt;img src=&#34;https://natey.me/images/email-is-hard/loops-ban.png&#34; alt=&#34;Loops support conversation&#34; class=&#34;half-width&#34;&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://loops.so&#34;&gt;Loops&lt;/a&gt; is a SaaS for email. They do product, transactional, and marketing emails and they are backed by &lt;a href=&#34;https://en.wikipedia.org/wiki/Y_Combinator&#34;&gt;Y Combinator&lt;/a&gt;. They&amp;rsquo;re great! But my website isn&amp;rsquo;t exactly good for email reputation, so I got (respectfully) banned.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My First Post</title>
      <link>https://natey.me/my-first-post/</link>
      <pubDate>Thu, 14 Nov 2024 15:33:59 -0800</pubDate>
      <guid>https://natey.me/my-first-post/</guid>
      <description>&lt;h2 id=&#34;first-post&#34;&gt;First Post&lt;/h2&gt;&#xA;&lt;p&gt;Hopefully there will be more posts here, but for now, you have this!&lt;/p&gt;</description>
    </item>
    <item>
      <title>contact me</title>
      <link>https://natey.me/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://natey.me/contact/</guid>
      <description>&lt;h2 id=&#34;contact-me&#34;&gt;contact me&lt;/h2&gt;&#xA;&lt;script src=&#34;https://challenges.cloudflare.com/turnstile/v0/api.js&#34; async defer&gt;&lt;/script&gt;&#xA;&lt;p&gt;for some reason a lot of people &lt;a href=&#34;https://natey.me/feefts&#34;&gt;have been sending me requests&lt;/a&gt; for prices. i do not know for what, or why. all of the people have one word names, ending in feeft. to all the feefts: &lt;strong&gt;please stop.&lt;/strong&gt; im begging you.&lt;/p&gt;&#xA;&lt;form id=&#34;contact-form&#34; action=&#34;https://resender.natey.sh/contact&#34; method=&#34;POST&#34; novalidate&gt;&#xA;  &lt;div class=&#34;field&#34;&gt;&#xA;    &lt;input type=&#34;text&#34; name=&#34;name&#34; placeholder=&#34;your name&#34; required&gt;&#xA;    &lt;span class=&#34;field-hint&#34; id=&#34;name-hint&#34;&gt;&lt;/span&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;field&#34;&gt;&#xA;    &lt;input type=&#34;email&#34; name=&#34;email&#34; placeholder=&#34;your@email.com&#34; required&gt;&#xA;    &lt;span class=&#34;field-hint&#34; id=&#34;email-hint&#34;&gt;&lt;/span&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;field&#34;&gt;&#xA;    &lt;textarea name=&#34;message&#34; placeholder=&#34;your message&#34; rows=&#34;4&#34; required&gt;&lt;/textarea&gt;&#xA;    &lt;span class=&#34;field-hint&#34; id=&#34;message-hint&#34;&gt;&lt;/span&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;cf-turnstile&#34; data-sitekey=&#34;0x4AAAAAACCIH6LE-pwfc-u6&#34;&gt;&lt;/div&gt;&#xA;  &lt;button type=&#34;submit&#34; id=&#34;contact-submit&#34; disabled&gt;send message&lt;/button&gt;&#xA;&lt;/form&gt;&#xA;&lt;p id=&#34;form-status&#34;&gt;&lt;/p&gt;&#xA;&lt;script&gt;&#xA;(function() {&#xA;  var timers = {};&#xA;  var touched = {};&#xA;  var formStartTime = null;&#xA;  var focusedFields = {};&#xA;&#xA;  function debounce(id, fn, ms) {&#xA;    clearTimeout(timers[id]);&#xA;    timers[id] = setTimeout(fn, ms || 400);&#xA;  }&#xA;&#xA;  function validate(el) {&#xA;    var name = el.name;&#xA;    var val = el.value.trim();&#xA;    var hint = document.getElementById(name + &#39;-hint&#39;);&#xA;    if (!hint) return;&#xA;&#xA;    if (!touched[name]) {&#xA;      el.classList.remove(&#39;valid&#39;, &#39;invalid&#39;);&#xA;      hint.textContent = &#39;\u00a0&#39;;&#xA;      hint.className = &#39;field-hint&#39;;&#xA;      return;&#xA;    }&#xA;&#xA;    if (!val) {&#xA;      el.classList.remove(&#39;valid&#39;);&#xA;      el.classList.add(&#39;invalid&#39;);&#xA;      hint.textContent = name + &#39; is required&#39;;&#xA;      hint.className = &#39;field-hint error&#39;;&#xA;      posthog.capture(&#39;contact_validation_error&#39;, { field: name, error: &#39;required&#39; });&#xA;      return;&#xA;    }&#xA;&#xA;    if (name === &#39;email&#39; &amp;&amp; !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(val)) {&#xA;      el.classList.remove(&#39;valid&#39;);&#xA;      el.classList.add(&#39;invalid&#39;);&#xA;      hint.textContent = &#39;not a valid email&#39;;&#xA;      hint.className = &#39;field-hint error&#39;;&#xA;      posthog.capture(&#39;contact_validation_error&#39;, { field: name, error: &#39;invalid_email&#39; });&#xA;      return;&#xA;    }&#xA;&#xA;    el.classList.remove(&#39;invalid&#39;);&#xA;    el.classList.add(&#39;valid&#39;);&#xA;    hint.textContent = &#39;\u00a0&#39;;&#xA;    hint.className = &#39;field-hint ok&#39;;&#xA;  }&#xA;&#xA;  var form = document.getElementById(&#39;contact-form&#39;);&#xA;  var btn = document.getElementById(&#39;contact-submit&#39;);&#xA;  btn.disabled = false;&#xA;&#xA;  form.addEventListener(&#39;focus&#39;, function(e) {&#xA;    var el = e.target;&#xA;    if (!el.name) return;&#xA;    if (!window.posthog?.sessionRecordingStarted?.()) window.posthog?.startSessionRecording?.();&#xA;    if (!formStartTime) formStartTime = Date.now();&#xA;    if (!focusedFields[el.name]) {&#xA;      focusedFields[el.name] = true;&#xA;      posthog.capture(&#39;contact_field_focused&#39;, { field_name: el.name });&#xA;    }&#xA;  }, true);&#xA;&#xA;  form.addEventListener(&#39;input&#39;, function(e) {&#xA;    var el = e.target;&#xA;    if (!el.name || !document.getElementById(el.name + &#39;-hint&#39;)) return;&#xA;    touched[el.name] = true;&#xA;    if (el.classList.contains(&#39;invalid&#39;)) {&#xA;      validate(el);&#xA;    } else {&#xA;      debounce(el.name, function() { validate(el); });&#xA;    }&#xA;  });&#xA;&#xA;  form.addEventListener(&#39;blur&#39;, function(e) {&#xA;    var el = e.target;&#xA;    if (!el.name || !document.getElementById(el.name + &#39;-hint&#39;)) return;&#xA;    clearTimeout(timers[el.name]);&#xA;    if (el.value.trim()) touched[el.name] = true;&#xA;    validate(el);&#xA;  }, true);&#xA;&#xA;  form.addEventListener(&#39;submit&#39;, function(e) {&#xA;    e.preventDefault();&#xA;    if (!window.posthog?.sessionRecordingStarted?.()) window.posthog?.startSessionRecording?.();&#xA;    var fields = form.querySelectorAll(&#39;input:not([type=hidden]), textarea&#39;);&#xA;    var ok = true;&#xA;    var invalidFields = [];&#xA;    for (var i = 0; i &lt; fields.length; i++) {&#xA;      touched[fields[i].name] = true;&#xA;      validate(fields[i]);&#xA;      if (fields[i].classList.contains(&#39;invalid&#39;)) {&#xA;        ok = false;&#xA;        invalidFields.push(fields[i].name);&#xA;      }&#xA;    }&#xA;    if (!ok) {&#xA;      posthog.capture(&#39;contact_form_submit_blocked&#39;, { invalid_fields: invalidFields });&#xA;      return;&#xA;    }&#xA;&#xA;    var email = form.querySelector(&#39;input[name=&#34;email&#34;]&#39;);&#xA;    var name = form.querySelector(&#39;input[name=&#34;name&#34;]&#39;);&#xA;    var message = form.querySelector(&#39;textarea[name=&#34;message&#34;]&#39;);&#xA;&#xA;    if (email &amp;&amp; email.value) {&#xA;      posthog.identify(email.value, {&#xA;        name: name ? name.value : undefined,&#xA;        email: email.value,&#xA;      }, {&#xA;        first_contact_at: new Date().toISOString(),&#xA;      });&#xA;    }&#xA;&#xA;    var status = document.getElementById(&#39;form-status&#39;);&#xA;    btn.disabled = true;&#xA;    btn.textContent = &#39;sending...&#39;;&#xA;    var submitTime = Date.now();&#xA;&#xA;    fetch(form.action, {&#xA;      method: &#39;POST&#39;,&#xA;      body: new FormData(form)&#xA;    }).then(function(res) {&#xA;      if (res.ok) {&#xA;        status.textContent = &#39;sent!&#39;;&#xA;        posthog.capture(&#39;contact_form_submitted&#39;, {&#xA;          message_length: message ? message.value.length : 0,&#xA;          time_to_submit_seconds: formStartTime ? Math.round((submitTime - formStartTime) / 1000) : null,&#xA;          session_replay_url: posthog.get_session_replay_url({ withTimestamp: true }),&#xA;        });&#xA;        form.reset();&#xA;        touched = {};&#xA;        focusedFields = {};&#xA;        formStartTime = null;&#xA;        fields.forEach(function(f) {&#xA;          f.classList.remove(&#39;valid&#39;, &#39;invalid&#39;);&#xA;          var h = document.getElementById(f.name + &#39;-hint&#39;);&#xA;          if (h) { h.textContent = &#39;\u00a0&#39;; h.className = &#39;field-hint&#39;; }&#xA;        });&#xA;        if (window.turnstile) turnstile.reset();&#xA;      } else {&#xA;        status.textContent = &#39;something went wrong. try again?&#39;;&#xA;        posthog.capture(&#39;contact_form_error&#39;, { status: res.status });&#xA;      }&#xA;    }).catch(function(err) {&#xA;      status.textContent = &#39;something went wrong. try again?&#39;;&#xA;      posthog.capture(&#39;contact_form_error&#39;, { error: err.message || &#39;network_error&#39; });&#xA;    }).finally(function() {&#xA;      btn.disabled = false;&#xA;      btn.textContent = &#39;send message&#39;;&#xA;    });&#xA;  });&#xA;})();&#xA;&lt;/script&gt;</description>
    </item>
    <item>
      <title>page not found</title>
      <link>https://natey.me/404.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://natey.me/404.html</guid>
      <description>&lt;h2 id=&#34;page-not-found&#34;&gt;page not found&lt;/h2&gt;&#xA;&lt;p&gt;you have reached a small meadow, you feel slightly confused&#xA;&lt;strong&gt;&lt;a href=&#34;https://natey.me/&#34;&gt;exit the meadow?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;img src=&#34;https://natey.me/images/meadow.jpeg&#34; alt=&#34;meadow&#34; class=&#34;half-width&#34;&gt;</description>
    </item>
    <item>
      <title>stuff i do</title>
      <link>https://natey.me/stuff/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://natey.me/stuff/</guid>
      <description>&lt;h2 id=&#34;stuff-i-do&#34;&gt;stuff i do&lt;/h2&gt;&#xA;&lt;script src=&#34;https://challenges.cloudflare.com/turnstile/v0/api.js&#34; async defer&gt;&lt;/script&gt;&#xA;&lt;p&gt;if you want you can get updates on stuff i do:&lt;/p&gt;&#xA;&lt;form id=&#34;stuff-form&#34; action=&#34;https://resender.natey.sh/subscribe&#34; method=&#34;POST&#34; novalidate&gt;&#xA;  &lt;div class=&#34;field&#34;&gt;&#xA;    &lt;input type=&#34;email&#34; name=&#34;email&#34; placeholder=&#34;your@email.com&#34; required&gt;&#xA;    &lt;span class=&#34;field-hint&#34; id=&#34;email-hint&#34;&gt;&lt;/span&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;input type=&#34;hidden&#34; name=&#34;audience&#34; value=&#34;words&#34;&gt;&#xA;  &lt;div class=&#34;cf-turnstile&#34; data-sitekey=&#34;0x4AAAAAACCIH6LE-pwfc-u6&#34;&gt;&lt;/div&gt;&#xA;  &lt;button type=&#34;submit&#34; id=&#34;stuff-submit&#34; disabled&gt;signup&lt;/button&gt;&#xA;&lt;/form&gt;&#xA;&lt;p id=&#34;form-status&#34;&gt;&lt;/p&gt;&#xA;&lt;script&gt;&#xA;(function() {&#xA;  var timer;&#xA;  var touched = {};&#xA;  var formStartTime = null;&#xA;&#xA;  function debounce(fn, ms) {&#xA;    clearTimeout(timer);&#xA;    timer = setTimeout(fn, ms || 400);&#xA;  }&#xA;&#xA;  function validate(el) {&#xA;    var name = el.name;&#xA;    var val = el.value.trim();&#xA;    var hint = document.getElementById(name + &#39;-hint&#39;);&#xA;    if (!hint) return;&#xA;&#xA;    if (!touched[name]) {&#xA;      el.classList.remove(&#39;valid&#39;, &#39;invalid&#39;);&#xA;      hint.textContent = &#39;\u00a0&#39;;&#xA;      hint.className = &#39;field-hint&#39;;&#xA;      return;&#xA;    }&#xA;&#xA;    if (!val) {&#xA;      el.classList.remove(&#39;valid&#39;);&#xA;      el.classList.add(&#39;invalid&#39;);&#xA;      hint.textContent = &#39;email is required&#39;;&#xA;      hint.className = &#39;field-hint error&#39;;&#xA;      posthog.capture(&#39;subscribe_validation_error&#39;, { field: name, error: &#39;required&#39; });&#xA;      return;&#xA;    }&#xA;&#xA;    if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(val)) {&#xA;      el.classList.remove(&#39;valid&#39;);&#xA;      el.classList.add(&#39;invalid&#39;);&#xA;      hint.textContent = &#39;not a valid email&#39;;&#xA;      hint.className = &#39;field-hint error&#39;;&#xA;      posthog.capture(&#39;subscribe_validation_error&#39;, { field: name, error: &#39;invalid_email&#39; });&#xA;      return;&#xA;    }&#xA;&#xA;    el.classList.remove(&#39;invalid&#39;);&#xA;    el.classList.add(&#39;valid&#39;);&#xA;    hint.textContent = &#39;\u00a0&#39;;&#xA;    hint.className = &#39;field-hint ok&#39;;&#xA;  }&#xA;&#xA;  var form = document.getElementById(&#39;stuff-form&#39;);&#xA;  var btn = document.getElementById(&#39;stuff-submit&#39;);&#xA;  btn.disabled = false;&#xA;&#xA;  form.addEventListener(&#39;focus&#39;, function(e) {&#xA;    var el = e.target;&#xA;    if (!el.name) return;&#xA;    if (!window.posthog?.sessionRecordingStarted?.()) window.posthog?.startSessionRecording?.();&#xA;    if (!formStartTime) {&#xA;      formStartTime = Date.now();&#xA;      posthog.capture(&#39;subscribe_field_focused&#39;, { field_name: el.name });&#xA;    }&#xA;  }, true);&#xA;&#xA;  form.addEventListener(&#39;input&#39;, function(e) {&#xA;    var el = e.target;&#xA;    if (!el.name || !document.getElementById(el.name + &#39;-hint&#39;)) return;&#xA;    touched[el.name] = true;&#xA;    if (el.classList.contains(&#39;invalid&#39;)) {&#xA;      validate(el);&#xA;    } else {&#xA;      debounce(function() { validate(el); });&#xA;    }&#xA;  });&#xA;&#xA;  form.addEventListener(&#39;blur&#39;, function(e) {&#xA;    var el = e.target;&#xA;    if (!el.name || !document.getElementById(el.name + &#39;-hint&#39;)) return;&#xA;    clearTimeout(timer);&#xA;    if (el.value.trim()) touched[el.name] = true;&#xA;    validate(el);&#xA;  }, true);&#xA;&#xA;  form.addEventListener(&#39;submit&#39;, function(e) {&#xA;    e.preventDefault();&#xA;    if (!window.posthog?.sessionRecordingStarted?.()) window.posthog?.startSessionRecording?.();&#xA;    var emailEl = form.querySelector(&#39;input[name=email]&#39;);&#xA;    touched.email = true;&#xA;    validate(emailEl);&#xA;    if (emailEl.classList.contains(&#39;invalid&#39;)) {&#xA;      posthog.capture(&#39;subscribe_form_submit_blocked&#39;, { invalid_fields: [&#39;email&#39;] });&#xA;      if (window.haptics) window.haptics.trigger(&#39;error&#39;);&#xA;      return;&#xA;    }&#xA;&#xA;    var status = document.getElementById(&#39;form-status&#39;);&#xA;    btn.disabled = true;&#xA;    btn.textContent = &#39;signing up...&#39;;&#xA;    var submitTime = Date.now();&#xA;&#xA;    fetch(form.action, {&#xA;      method: &#39;POST&#39;,&#xA;      body: new FormData(form)&#xA;    }).then(function(res) {&#xA;      if (res.ok) {&#xA;        if (window.haptics) window.haptics.trigger(&#39;success&#39;);&#xA;        status.textContent = &#39;check your email to confirm your subscription (check in spam!)&#39;;&#xA;        posthog.capture(&#39;subscribe_form_submitted&#39;, {&#xA;          time_to_submit_seconds: formStartTime ? Math.round((submitTime - formStartTime) / 1000) : null,&#xA;          session_replay_url: posthog.get_session_replay_url({ withTimestamp: true }),&#xA;        });&#xA;        if (emailEl.value) {&#xA;          posthog.identify(emailEl.value, { email: emailEl.value }, {&#xA;            first_subscribe_at: new Date().toISOString(),&#xA;          });&#xA;        }&#xA;        form.reset();&#xA;        touched = {};&#xA;        formStartTime = null;&#xA;        emailEl.classList.remove(&#39;valid&#39;, &#39;invalid&#39;);&#xA;        var h = document.getElementById(&#39;email-hint&#39;);&#xA;        if (h) { h.textContent = &#39;\u00a0&#39;; h.className = &#39;field-hint&#39;; }&#xA;        if (window.turnstile) turnstile.reset();&#xA;      } else {&#xA;        if (window.haptics) window.haptics.trigger(&#39;error&#39;);&#xA;        status.textContent = &#39;something went wrong. try again?&#39;;&#xA;        posthog.capture(&#39;subscribe_form_error&#39;, { status: res.status });&#xA;      }&#xA;    }).catch(function(err) {&#xA;      if (window.haptics) window.haptics.trigger(&#39;error&#39;);&#xA;      status.textContent = &#39;something went wrong. try again?&#39;;&#xA;      posthog.capture(&#39;subscribe_form_error&#39;, { error: err.message || &#39;network_error&#39; });&#xA;    }).finally(function() {&#xA;      btn.disabled = false;&#xA;      btn.textContent = &#39;signup&#39;;&#xA;    });&#xA;  });&#xA;})();&#xA;&lt;/script&gt;</description>
    </item>
  </channel>
</rss>
