<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: bingkahu (Matteo)</title>
    <description>The latest articles on Forem by bingkahu (Matteo) (@bingkahu).</description>
    <link>https://forem.com/bingkahu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3705876%2F01715f71-8906-4796-9799-ca2aa3fd9896.png</url>
      <title>Forem: bingkahu (Matteo)</title>
      <link>https://forem.com/bingkahu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/bingkahu"/>
    <language>en</language>
    <item>
      <title>I Built a Fake UK Government Blink Regulation Agency and It Got Out of Hand</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Thu, 09 Apr 2026 08:02:37 +0000</pubDate>
      <link>https://forem.com/bingkahu/i-built-a-fake-uk-government-blink-regulation-agency-and-it-got-out-of-hand-h0p</link>
      <guid>https://forem.com/bingkahu/i-built-a-fake-uk-government-blink-regulation-agency-and-it-got-out-of-hand-h0p</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category: [Literally any]&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  I Built a Fake UK Government Agency That Regulates Blinking and I'm not sorry
&lt;/h2&gt;

&lt;p&gt;It's 2:14am. I have consumed four coffees, one energy drink I found in the back of the fridge that expired in October, and approximately half a packet of digestives. The cat is judging me. And I am, for reasons that made complete sense four hours ago, writing CSS to make a rubber stamp that says "APPEAL DENIED" at a seven-degree angle.&lt;/p&gt;

&lt;p&gt;This is my life now. I have accepted it.&lt;/p&gt;

&lt;p&gt;Let me tell you about HOOCER.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Origin Story (Or: How I Got Here)
&lt;/h2&gt;

&lt;p&gt;It started, as most things do, with a shower thought.&lt;/p&gt;

&lt;p&gt;I was lying in bed at some ungodly hour — I think it was a Tuesday, though by this point in the project all the days have blurred together into one long beige administrative corridor — and I was thinking about government regulation. Specifically, about how the UK government regulates things that absolutely should not need regulating. The exact legal shape of a prawn cocktail crisp. What you're allowed to name your boat. The minimum permitted size of a kipper.&lt;/p&gt;

&lt;p&gt;And I thought: &lt;em&gt;what's the most pointless thing a government could possibly regulate?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Blinking.&lt;/p&gt;

&lt;p&gt;Blinking is free, involuntary, universal, and entirely harmless. It is, by any reasonable measure, the worst possible candidate for government oversight. Therefore it is, obviously, exactly what I would build a government agency around.&lt;/p&gt;

&lt;p&gt;I opened a new folder. I named it &lt;code&gt;hoocer&lt;/code&gt;. I typed &lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/code&gt; and I was gone.&lt;/p&gt;

&lt;p&gt;Four days later I had built:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A live blink monitoring portal&lt;/li&gt;
&lt;li&gt;A fake national surveillance map&lt;/li&gt;
&lt;li&gt;A mobile enforcement van tracker&lt;/li&gt;
&lt;li&gt;An automated appeal chatbot that cannot help you&lt;/li&gt;
&lt;li&gt;Four audio tribunal hearings generated with the Web Audio API&lt;/li&gt;
&lt;li&gt;A statutory renunciation form that cannot be submitted&lt;/li&gt;
&lt;li&gt;A gaslighting self-assessment that always finds you guilty&lt;/li&gt;
&lt;li&gt;A staff intranet that is accidentally public&lt;/li&gt;
&lt;li&gt;A floating compliance score widget on every page&lt;/li&gt;
&lt;li&gt;A favicon with a crown and an eye&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It runs with no build step, no framework, no dependencies, directly on Cloudflare Pages, with a &lt;code&gt;_headers&lt;/code&gt; file that adds &lt;code&gt;X-Blink-Threshold: 25&lt;/code&gt; to every response.&lt;/p&gt;

&lt;p&gt;I'm going to tell you about all of it. At length. Possibly too much length. I haven't slept properly in three days and I have feelings about this project.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is HOOCER
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;HOOCER&lt;/strong&gt; — the &lt;em&gt;HM Office for Ocular Compliance &amp;amp; Eyelid Regulation&lt;/em&gt; — is an executive agency of the Ministry of Things That Don't Need Regulating. It was established under the &lt;em&gt;Ocular Regulation and Eyelid Governance Act 2019&lt;/em&gt; (as amended by the &lt;em&gt;Blink Frequency (Emergency Powers) Order 2022&lt;/em&gt;) and operates under the authority of &lt;strong&gt;Ocular Compliance Code 418&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Code 418 governs all blink-related infringements. It shares its number with HTTP 418 (I'm a Teapot). This is intentional. It is the best creative decision I've ever made.&lt;/p&gt;

&lt;p&gt;The legal blink limit is 25 blinks per monitored session. Exceed it and you receive a Notice of Ocular Infringement. You may appeal. The appeal will be denied. You may appeal the denial. You will be charged £120 for the privilege and the hearing won't be for 14 months.&lt;/p&gt;

&lt;p&gt;This is, near as I can tell, functionally identical to several real government processes I have experienced personally.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"HOOCER exists to protect the public from excessive blinking, and to protect the revenue from the public."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;— Director-General, Ocular Compliance (fictional, but I genuinely believe she exists somewhere)&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;p&gt;No React. No Vue. No Svelte. No npm. No &lt;code&gt;node_modules&lt;/code&gt; folder eating 847MB of your SSD. No TypeScript. No Webpack. No Vite. No build step. Just seventeen files in a folder, a &lt;code&gt;_headers&lt;/code&gt; file, and the quiet confidence of a person who has been doing web development long enough to remember when this was just how you did it.&lt;/p&gt;

&lt;p&gt;I genuinely considered using a framework for about thirty seconds and then remembered I was building a website about blinking fines at midnight and that some choices don't deserve that much respect. Vanilla HTML, CSS, JavaScript. The Web Audio API for the tribunal hearings because I apparently needed that to happen. SVG for the map and the eye animation. That's it. The whole thing is 335KB.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Favicon
&lt;/h2&gt;

&lt;p&gt;Let's start here, because I think the favicon says everything you need to know about the mindset behind this project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3iubwlewxxv2z1n31pk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3iubwlewxxv2z1n31pk.png" alt="A favicon that shows a green eye icon with a gold crown on top of it" width="505" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is an SVG. It contains a Unicode crown (♛), drawn in HOOCER yellow (&lt;code&gt;#ffdd00&lt;/code&gt;). Below the crown is a stylized eye.&lt;/p&gt;

&lt;p&gt;I spent forty-five minutes on this favicon. Nobody will ever see it at full size. It's 16x16 pixels in a browser tab. It is, at that scale, a small blob of color that vaguely suggests authority.&lt;/p&gt;

&lt;p&gt;I am very proud of it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Main Portal
&lt;/h2&gt;

&lt;p&gt;When you land on HOOCER's homepage, you are greeted with a black screen, a 72px Unicode crown, a circular department seal I built with &lt;code&gt;::before&lt;/code&gt; CSS trickery that I'm slightly too proud of, and a warning box that reads:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;By entering this portal you consent to having your blinks counted, judged, classified, and if necessary, fined. The legal blink threshold is 25 blinks per session. Anything outside normal parameters is suspicious and will be noted on your permanent record.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A HOOCER Mobile Enforcement Van has been dispatched to your area.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There's a button that says ENTER PORTAL. Clicking it generates a case reference, switches to the monitoring screen, and starts the blink detection engine.&lt;/p&gt;

&lt;p&gt;The "blink detection engine" is, I want to be transparent with you here, completely made up. It works like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// core detection loop: checks inactivity every 1.3 seconds&lt;/span&gt;
&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;monitorInterval&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isFinedAlready&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;idle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lastActivity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="c1"&gt;// been still for a bit? you blinked.&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;idle&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mf"&gt;0.55&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;recordBlink&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;inactivity&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// general background blink probability — 9% per tick&lt;/span&gt;
  &lt;span class="c1"&gt;// your eyes are just like that&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mf"&gt;0.09&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;recordBlink&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;passive&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;1300&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Mouse inactivity. Mouse movement. Tab switching. The passage of time. Clicking anything. And most importantly: clicking the button labelled "I DID NOT BLINK," which per Code 418(c) is immediately recorded as a blink.&lt;/p&gt;

&lt;p&gt;That last one. That's the one. The act of denial is itself the evidence of guilt. I added it at about midnight and I laughed out loud alone in my flat and that is when I knew this was going to be okay.&lt;/p&gt;

&lt;p&gt;The monitoring screen shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A large monospace counter for blink count, going from green to orange to a panic-flicker red as you approach 25&lt;/li&gt;
&lt;li&gt;A scanning line animation on the counter box because it needed to feel ominous&lt;/li&gt;
&lt;li&gt;Fake biometric readings including "Lid Velocity (μm/s)" and "Eye Moisture Index (%)" which update randomly every tick&lt;/li&gt;
&lt;li&gt;A "Code 418 Status" field that goes from PENDING → ELEVATED → IMMINENT → ENFORCED&lt;/li&gt;
&lt;li&gt;A live national blink feed, scrolling in terminal green, showing fake citizens being monitored across the country&lt;/li&gt;
&lt;li&gt;A progress bar titled "Blinks until fine" which turns red and then you're fined&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you hit 25, there's a 800ms pause — just long enough to feel dramatic — and then you're issued a Notice of Ocular Infringement.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Fine Notice
&lt;/h2&gt;

&lt;p&gt;The fine is a whole thing. I built a real-looking official government document, complete with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A CSS watermark that says "OFFICIAL" at 30 degrees, 4% opacity, in red&lt;/li&gt;
&lt;li&gt;A proper fine calculation formula with a Blink Severity Multiplier&lt;/li&gt;
&lt;li&gt;An evening surcharge&lt;/li&gt;
&lt;li&gt;A Cooperative Citizen Discount (always suspiciously small)&lt;/li&gt;
&lt;li&gt;A minimum fine of £14.00 regardless of the maths
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateFine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;blinkCount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;excess&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;blinkCount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;BLINK_LIMIT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;excess&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;2.40&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;multiplier&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;chaos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chaos&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.97&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// "Government IT incident" — wildly wrong fine&lt;/span&gt;
    &lt;span class="nx"&gt;multiplier&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;HOOCER SYSTEM NOTICE: BSM calculation error. Fine may be incorrect. This is not unusual.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;multiplier&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;2.5&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// [... evening surcharge, discount, etc ...]&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;total&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;14.00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;base&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;multiplier&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;eveningSurcharge&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;discount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;There's a 3% chance the Blink Severity Multiplier experiences what I documented in the comments as a "Government IT incident." When this happens, the multiplier can be anywhere from 80x to 380x. For two excess blinks. That's potentially £1,152 for being thirty percent more blinky than the law permits.&lt;/p&gt;

&lt;p&gt;When this occurs, the page politely adds a note:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;System Notice: Your Blink Severity Multiplier was calculated as 247x, which HOOCER acknowledges may appear high. This is a known system behaviour. An investigation has been opened. The fine stands.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Blink Training Simulator (Module BT-7)
&lt;/h2&gt;

&lt;p&gt;Mandatory for citizens who have received a Notice of Ocular Infringement. Completion does not reduce your fine. Non-completion generates another fine.&lt;/p&gt;

&lt;p&gt;The training module has two phases:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1: Calibration (15 seconds)&lt;/strong&gt; — The Blink Detection Engine "establishes your baseline." What it actually does is accuse you of blinking every 2.5 to 4 seconds using one of 34 pre-written accusations. During calibration, the frequency is higher. To calibrate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 2: Suppression Training (60 seconds)&lt;/strong&gt; — You attempt to not blink for a minute. The accusations slow slightly to 3–5 second intervals. They don't stop.&lt;/p&gt;

&lt;p&gt;The centrepiece is an animated SVG eye. When a blink is detected, the eyelid closes over the eye with a CSS transition, the countdown ring turns red, and the accusation appears at the top of the screen, sliding down from above.&lt;/p&gt;

&lt;p&gt;I spent twenty minutes on the eyelash lines on that SVG eye. Five &lt;code&gt;&amp;lt;line&amp;gt;&lt;/code&gt; elements at slightly different angles along the top of the lid. You can barely see them. I know they're there.&lt;/p&gt;

&lt;p&gt;The accusations are the whole show. I wrote 34. Here's a selection:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"WE SAW THAT."&lt;/em&gt;&lt;br&gt;
Per Code 418(b). You cannot hide from the algorithm.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"YOUR EYES CLOSED. OUR EYES DID NOT."&lt;/em&gt;&lt;br&gt;
This is the fundamental asymmetry of the citizen-regulator relationship.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"NO, YOU DIDN'T BLINK EARLIER. YOU BLINKED NOW."&lt;/em&gt;&lt;br&gt;
That's different. The earlier blink was also a blink. Code 418(b) × 2.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"WE UNDERSTAND YOU'RE TRYING VERY HARD."&lt;/em&gt;&lt;br&gt;
You're also blinking very much. These two facts coexist.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"PLEASE DO NOT LIE TO HOOCER."&lt;/em&gt;&lt;br&gt;
We know you blinked. Claiming otherwise adds Code 418(c) to the existing 418(b).&lt;br&gt;
The results screen assigns a grade. The grade is always a variety of FAIL. Possible outcomes include "FAIL — IRONIC BLINK DURING ANTI-BLINK TRAINING," which is a real grade that the module assigns if your blink count reaches a certain level. It was the last thing I added before going to bed on night two and I consider it a high point.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"No citizen has ever passed this module. This is not a design flaw. The training module is intended to be completed, not passed."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;— HOOCER Internal Guidance Note IGN-44&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0t4edjnjol495znid1pj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0t4edjnjol495znid1pj.png" alt="Ironic fail" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  National Blink Surveillance Map
&lt;/h2&gt;

&lt;p&gt;64.3 million citizens, monitored in real time.&lt;/p&gt;

&lt;p&gt;(The 64.3 million is hard-coded. It's approximately the UK population. It doesn't update. It's always 64.3 million. HOOCER considers this accurate enough.)&lt;/p&gt;

&lt;p&gt;The map is a hand-drawn SVG of the UK. I want to stress the phrase "hand-drawn" here. I didn't take geography. For all I know there is a massive lake in the middle of the UK. Jokes aside, I drew most of the regional polygon outlines by hand, guessing at coordinates in a 400×620 SVG viewport. For some parts The cartography team sent a memo. I filed it under "pending review." The map is not to scale. The map does not need to be to scale. The map just needs to look like the UK from a distance and feel vaguely threatening.&lt;/p&gt;

&lt;p&gt;London is rendered slightly differently — darker background, thicker border. Because London always has the worst blink compliance numbers, and it felt right that this should be visually apparent. The algorithm gives London a 29% compliance rating by default. The other regions start between 43% and 72%. London starts at 29%.&lt;/p&gt;

&lt;p&gt;They're stressed. It's London.&lt;/p&gt;

&lt;p&gt;Blink events generate as dots on the map — green for compliant, orange for suspicious, red for Code 418 infringement. Each dot gets a ring animation that expands and fades. There are between 30 and 70 events visible at any given time, flickering across the country like a dystopian aurora.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// London blinkrates are higher. They're stressed. It's London.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bias&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;region&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;London&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="mf"&gt;0.45&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This comment is in the production code. I'm leaving it in.&lt;/p&gt;

&lt;p&gt;Milton Keynes — where HOOCER HQ is located — is marked with a gold dot and a label. It is, in the map's geography, positioned approximately where Milton Keynes actually is. This is the most geographically accurate thing about the entire map.&lt;/p&gt;

&lt;p&gt;The sidebar shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;National blink count (ticks up continuously)&lt;/li&gt;
&lt;li&gt;Code 418 violations (a subset of that)&lt;/li&gt;
&lt;li&gt;NOIs issued (a subset of that)&lt;/li&gt;
&lt;li&gt;Vans deployed (starts at 47, drifts occasionally — they get lost)&lt;/li&gt;
&lt;li&gt;Appeals denied (always the same number as NOIs issued)&lt;/li&gt;
&lt;li&gt;Regional compliance percentages (drift toward lower over time, always)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The "vans deployed" number drifting is my favourite detail on this page. It goes up by 2, occasionally drops by 1. The comment I wrote for this in the code is: "They get lost. It happens."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jka7wd3oydvbhe7nodp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jka7wd3oydvbhe7nodp.png" alt="National Blink Surveillance Map - London highlighted in red, multiple infringement events visible, Milton Keynes marked with gold star" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  The HOOCER Mobile Enforcement Van Tracker
&lt;/h2&gt;

&lt;p&gt;This might be my favorite page.&lt;/p&gt;

&lt;p&gt;You load it and you're greeted with a top bar reading:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠ A HOOCER Mobile Enforcement Van has been dispatched to your area in response to Code 418 monitoring data. This page shows its live location. The van will not arrive imminently. This is expected behaviour.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The van is VAN-7, driven by D. Thompson (Grade 6). It starts at Milton Keynes HQ, marked with a yellow circle in the centre of the map. Then it moves.&lt;/p&gt;

&lt;p&gt;I built a fake road network out of SVG &lt;code&gt;&amp;lt;line&amp;gt;&lt;/code&gt; elements. The roads don't go anywhere in particular. The place names are: Little Ocular, Blinkhaven, Lidbury, Upper Cornea, and Squintwick. There's a "You" marker — a small blue dot — at coordinates 370,290 on the 500×400 viewport. The van moves toward random destinations. If it gets within 40 SVG units of the "You" marker, it gets pushed away.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// But snap away if getting too close to "You" marker&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;distToUser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;vanX&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;370&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;vanY&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;290&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;distToUser&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;vanX&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;vanY&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nf"&gt;addLogEntry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Van rerouted — operational protocol requires specific approach vector.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;warning&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The ETA starts somewhere between 8 and 20 minutes. It fluctuates. It goes down by 0–3 minutes occasionally, suggesting progress. It goes up by 0–4 minutes more often, suggesting the opposite of progress. It never reaches zero.&lt;/p&gt;

&lt;p&gt;The status log is what makes the page. It generates messages like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Driver stopped for refreshments (mandatory Code 418 rest period)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GPS signal interrupted — switching to paper map (filed 2019, may be out of date)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Driver notes "suspicious blinking" in adjacent vehicle. Issuing roadside NOI.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Van stationary — driver completing mandatory paperwork. Form MEV-3 (Van Log).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Stuck behind a tractor. This is not a Code 418 event. It is still annoying.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Van temporarily lost. Last known position: "near some shops." Investigating.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Van located. It was near some shops. Driver has completed a Van Location Form (VLF-2).&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The driver occasionally changes due to a "shift handover." New drivers are briefed on the Code 418 situation. D. Thompson would like it known, via the intranet memo I wrote for him, that he is not as lost as the tracker suggests.&lt;/p&gt;

&lt;p&gt;The sidebar has an ETA panel showing a large red countdown and a progress bar that inches forward but never completes. The disclaimer reads:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The van will not arrive imminently. "Imminently" is not a category in HOOCER's operational guidelines. The van will arrive when it arrives.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5dzsbn6mbbsmgdfjx8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5dzsbn6mbbsmgdfjx8c.png" alt="Van Tracker - VAN-7 shown near " width="800" height="633"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  The Blink Appeal Chatbot (AAAS)
&lt;/h2&gt;

&lt;p&gt;The Automated Appeal Assistance System, version 4.1. It cannot help you. This is documented.&lt;/p&gt;

&lt;p&gt;I wrote a rule-based chatbot with eight intent categories — appeal, fine/payment, denial of blinking, request for human, refund, outrage, form queries, and timeline questions — plus a set of looping fallback responses for anything else. Each intent has two to four responses that cycle, so you get slightly different uselessness each time.&lt;/p&gt;

&lt;p&gt;After six exchanges, the chatbot acknowledges that we've been at this a while:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;match&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;turnCount&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;loopThreshold&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;turnCount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;respond&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;`I want to flag that we've now exchanged &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;turnCount&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; messages and I'm not
  sure we've made meaningful progress. I apologise for any frustration this may have caused.
  I'd like to suggest, again, that you complete Form OCI-7, and in the meantime consider
  Form EYE-9 as a long-term blink management strategy...`&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It types with a fake delay of 1.5–3.5 seconds. There's a "THINKING" badge that appears on the bot avatar. The responses are genuine attempts at bureaucratic helpfulness that happen to be completely useless:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On requesting a human:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"There are no humans in this loop. I want to be transparent about that. If it helps, I am very thorough. Thoroughness is my primary function. I am thoroughly telling you: no humans. I'm sorry."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;On disputing the fine:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Fine calculations are governed by Ocular Compliance Code 418(b). The Blink Severity Multiplier is determined algorithmically and is not subject to manual review. I apologise. The algorithm does not."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;On saying "I did not blink":&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I hear you. HOOCER's records indicate otherwise. I want to be clear that I'm not calling you a liar — the algorithm is calling you a liar. That's a distinction we consider important."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There's also a 30% chance per message that the bot "detects a blink" and adds a small red alert mid-conversation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;⚠ BLINK DETECTED during this conversation — Code 418(b). Infringement #3 logged.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I genuinely love this chatbot. I want it to run a real customer service department. Not HOOCER's — I mean literally any company's. The response quality would be comparable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgf9pa1x51e4j8sk4wjzd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgf9pa1x51e4j8sk4wjzd.png" alt="AAAS Chatbot - user has asked " width="800" height="682"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Ocular Tribunal Audio Logs
&lt;/h2&gt;

&lt;p&gt;This is where it got out of hand. This is specifically, precisely, the moment where I should have gone to bed and instead I did not.&lt;/p&gt;

&lt;p&gt;The tribunal archive contains four hearings. Each hearing has a transcript. Each transcript is synced to generated audio. The audio is produced entirely by the Web Audio API — no audio files are downloaded. It's synthesised on the client, in the browser, using oscillators.&lt;/p&gt;

&lt;p&gt;The voice synthesis works by mapping each character to a different fundamental frequency, modulating that with an AM oscillator running at 5–8hz, and applying a short gain envelope to create the illusion of speech rhythm. It sounds like muffled buzzing/talking heard through a wall. It sounds &lt;em&gt;exactly right&lt;/em&gt; for a government tribunal.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;playVoiceTone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;dest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;freq&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;osc&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createOscillator&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;gain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createGain&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="nx"&gt;osc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sawtooth&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;osc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frequency&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;freq&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="c1"&gt;// AM modulation for "voice" rhythm feel&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;lfo&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createOscillator&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="nx"&gt;lfo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frequency&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;lfo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sine&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="c1"&gt;// [... connects to gain node ...]&lt;/span&gt;

  &lt;span class="nx"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;linearRampToValueAtTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.08&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;linearRampToValueAtTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;1.8&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Margaret (Tribunal Chair): 200Hz — low, tired, authoritative&lt;/li&gt;
&lt;li&gt;Enforcement Officer: 280Hz — clipped, officious&lt;/li&gt;
&lt;li&gt;Appellant: 350Hz — slightly anxious, higher register&lt;/li&gt;
&lt;li&gt;Clerk: 240Hz — neutral, administrative&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The REDACTION TONE is 440Hz square wave, descending to 380Hz over its duration. It was chosen by the IT team. I wrote in the comments that they chose "a somewhat ominous one" and that the Director-General asked them to choose something less ominous and they did not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The four cases:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blinksworth v. HOOCER Enforcement Division&lt;/strong&gt; — The crisp incident. Mr Blinksworth argues his 31 excess blinks were caused by proximity to a packet of salt and vinegar crisps. The Tribunal chair has personally purchased and evaluated these crisps. They were mild. The appeal is denied. The chair adds a personal note to the minutes that the crisps were mild.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Re: Petition of C. Ocular — Philosophical Grounds&lt;/strong&gt; — The first case in tribunal history to invoke philosophical grounds. The appellant argues that blinks constitute a phenomenological continuum rather than discrete events (Husserl, time-consciousness, the gerund). The philosophy consultant — Dr P. Squint, part-time, one day per fortnight — says "No." Appeal denied.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Emergency Hearing — The Staring Contest Incident&lt;/strong&gt; — Zero blinks in twenty minutes. HOOCER flags this as Code 418(i): Suspicious Non-Blinking. Turns out the citizen was in a staring contest with their seven-year-old nephew. The hearing is adjourned because nobody has considered whether staring contests are a legitimate exemption. The citizen lost the contest. "I blinked just before the session ended. He won." "That's actually in the log."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;H. Yelid — Van Encounter Appeal&lt;/strong&gt; — Seventeen blinks in forty seconds, observed through a car window by VAN-7. The citizen argues that being followed by an unmarked white van they didn't recognise caused understandable anxiety and therefore elevated blinking. The Tribunal acknowledges this is "understandable." The Act does not have an anxiety-related blink exemption. Appeal denied. The tribunal chair notes the van has HOOCER markings in 14pt Arial on the passenger door.&lt;/p&gt;

&lt;p&gt;Each case card has a playback button, a fake waveform visualiser (50 bars animated during playback), a progress bar, and a transcript that highlights in real time as the audio plays.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I am going to ask you to stop saying 'gerund' to me."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;— Margaret Cornwell, Tribunal Chair, Case TBL-2026-0512&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhpuwwnzmtlmhytl06276.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhpuwwnzmtlmhytl06276.png" alt="Tribunal Audio page - Case TBL-2026-0441 playing, waveform animated, transcript visible with current line highlighted in yellow, case outcome stamp reads " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Form EYE-9: Renunciation of Blinking
&lt;/h2&gt;

&lt;p&gt;Citizens who wish to avoid future Code 418 liability may formally renounce their right to blink entirely. This requires submitting Form EYE-9.&lt;/p&gt;

&lt;p&gt;The form has never been successfully submitted. This is documented in Internal Guidance Note IGN-44.&lt;/p&gt;

&lt;p&gt;Five sections. I'll run through the highlights:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Section 1&lt;/strong&gt; asks for your National Blink Registration Number (NBRN). If you don't have an NBRN, you can't submit the form. To get an NBRN, you visit the National Blink Registry portal, which redirects to Form EYE-9. I noted in the field description:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;We will verify it against a database that doesn't exist.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Section 3&lt;/strong&gt; is the masterpiece. It has two mandatory subsections. Subsection 3A asks you to confirm all your blinks were voluntary. Subsection 3B asks you to confirm all your blinks were involuntary. Both are mandatory. A conflict detector shows a red bar when you answer both. The conflict is then listed as a submission error.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;checkConflicts&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;s3a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input[name="blink-nature-3a"]:checked&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;s3b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input[name="blink-nature-3b"]:checked&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s3a&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;s3b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Both selected — guaranteed conflict (the options are designed to conflict)&lt;/span&gt;
    &lt;span class="nx"&gt;conflictDetected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c1"&gt;// [...]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;The Justice of the Peace requirement:&lt;/strong&gt; The JoP must countersign in person at a HOOCER office. HOOCER offices do not accept walk-ins. Appointments are not available. The waiver requires approval from the Justice of the Peace. The Justice of the Peace is the one who needs to countersign. The notes on this field end with: &lt;em&gt;"which creates a logical problem we have documented."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It also requires an Ocular Notary. The register closed in 2021. There are zero registered notaries. Projected to reopen in 2028, subject to budget approval.&lt;/p&gt;

&lt;p&gt;When you click Submit, a countdown appears reading "SUBMITTING... 7" and counts down to zero. Then a terminal-style error log populates:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ERR-418-004: Payment reference not found. Payment must be made before submission. Payment cannot be made before receiving a submission reference. Submission reference requires payment. See ERR-418-004(b): Circular Dependency Detected.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are twelve distinct error messages. They cycle on retry, getting progressively more unhinged. The final one is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;FATAL-418: Submission gateway returned HTTP 418 I'm a Teapot. This response code indicates the server is a teapot and refuses to brew coffee. It also, as of Code 418 implementation, refuses to accept EYE-9 forms. The developers have been informed. The developers are the same people who added Code 418 compliance to the HTTP layer. They stand by the decision.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After five failed attempts, the error log adds:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;NOTE: This is your 5th submission attempt. HOOCER has noted your persistence. It has been added to your file under "Exceptional Ocular Tenacity." This does not reduce the fine.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I am very, very fond of "Exceptional Ocular Tenacity."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zhf1rx8m9jea7xq42xx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zhf1rx8m9jea7xq42xx.png" alt="Form EYE-9 - Section 3 showing conflict warning in red, submission error log visible at bottom with ERR-418-004 Circular Dependency message" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  The Floating Compliance Score
&lt;/h2&gt;

&lt;p&gt;Every page loads &lt;code&gt;compliance-score.js&lt;/code&gt;, which injects a small fixed widget in the bottom-right corner. It shows the national blink compliance score. It updates every 4–6 seconds.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// The score fluctuates between 19 and 71. Never good. Never catastrophic.&lt;/span&gt;
&lt;span class="c1"&gt;// Just permanently concerning. This is by design.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;52&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It is never above 71%. I want to reiterate that. The best possible national compliance score, in the history of this widget, is 71%. The average hovers around 45%. The sublabels rotate through things like "Tribunal caseload: elevated" and "Milton Keynes at capacity."&lt;/p&gt;

&lt;p&gt;The border turns amber below 55%, red below 35%. Below 35% the whole widget pulses.&lt;/p&gt;

&lt;p&gt;The nation is perpetually on the edge of an ocular crisis and the widget is there to remind you, on every page, at all times, whether you wanted to know or not.&lt;/p&gt;


&lt;h2&gt;
  
  
  The HOOCER Staff Intranet (Accidentally Public)
&lt;/h2&gt;

&lt;p&gt;The intranet has a different visual register from the public portal. Where the public portal is a slightly wrong version of GOV.UK, the intranet feels like it was built in 2011 and nobody's touched it. Because that's what government intranets feel like. I did research.&lt;/p&gt;

&lt;p&gt;
  Click to view classified Memo: THE DORSET SITUATION
  &lt;br&gt;
RESTRICTED CONTENT: Please do not mention the sheep to the public. &lt;br&gt;
The algorithm cannot currently process ovine-related blinks.&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;The warning banner at the top reads:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠ This page was inadvertently made publicly accessible following a server migration in February 2026. IT has been notified. Their ticket is: HOO-IT-2026-0774. Status: Open. This message will be removed once access is restricted. In the meantime, members of the public who have reached this page are asked to please not read the memos, use the staff tools, or share the contents of this page. We appreciate your cooperation. (You are not cooperating. We can see you.)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The memos are the whole show. Here's a selection:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From the Director-General:&lt;/strong&gt; The intranet is currently publicly accessible. Please do not mention [hover to reveal: THE DORSET SITUATION] on any channel visible to the public. If a member of the public asks about it on the public portal, please route to the chatbot, which will not answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From IT (B. Squint):&lt;/strong&gt; Issues remaining from the server migration include: the intranet being publicly accessible; the Form Library redirecting to a 2019 archive; the Code 418 dashboard showing figures from Thursday (it is not Thursday); and the floor 3 printer producing everything in Comic Sans. "This began before the migration. I do not know why I included it here. Force of habit."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From the Tribunal Chair:&lt;/strong&gt; A divisional memo about salt and vinegar crisps. Classified OFFICIAL. Distributed to 47 members of the Tribunal Division. She stands by her assessment. The matter is closed.&lt;/p&gt;

&lt;p&gt;The three active disciplinary notices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Grade 7 officer who blinked 12,440 times in a monitored work week. Their response: "I work in blink monitoring. The irony is not lost on me."&lt;/li&gt;
&lt;li&gt;B. Squint (IT), for making the intranet public&lt;/li&gt;
&lt;li&gt;Tribunal Chair M. Cornwell, for the crisp memo — noted as "classified OFFICIAL — incorrect. Crisps are not an OFFICIAL matter"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tools section has six staff tools, all broken in specific, characterful ways. The BSM Calculator returns values up to 500x. The Tribunal Case Entry denies submissions before you finish filling them in. The Blink Registry returns ERROR for everything, including when you query the error.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;registry&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;[Blink Registry] FATAL: registry database reports 0 citizens. &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Total national blink count: ERROR. The error log says ERROR. &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;I logged an error about the error log saying ERROR. &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;That also returned ERROR.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujydl1oa2a5sbensuw2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujydl1oa2a5sbensuw2i.png" alt="HOOCER Intranet - memos tab active, Tribunal Chair crisp memo visible with OFFICIAL classification, disciplinary notice sidebar listing all three active cases" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  The Gaslighting Compliance Check
&lt;/h2&gt;

&lt;p&gt;Six questions about your own blinking. For every answer you give, HOOCER's records disagree. Every question. All of them. 100% discrepancy rate. Guaranteed.&lt;/p&gt;

&lt;p&gt;The mechanism: each question has four options. Each option has a corresponding HOOCER "record" that contradicts it, regardless of which one you pick.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: "In the last 24 hours, approximately how many times did you blink?"&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Fewer than 10,000" → &lt;em&gt;"Our records indicate 18,447 blinks. Your stated figure appears to be an underestimate. This is suspicious."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;"Around 10,000–20,000" → &lt;em&gt;"Our records indicate 31,882 blinks. The discrepancy of approximately 12,000 blinks requires explanation."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;"More than 20,000" → &lt;em&gt;"Our records indicate 8,224 blinks. Your stated figure is significantly higher than recorded. Overclaiming blinks raises additional concerns."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;"I wasn't counting" → &lt;em&gt;"Our records indicate 24,471 blinks. Not knowing your own blink count does not exempt you from accurate reporting obligations."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no right answer. There is no answer that does not generate a discrepancy. The results page always shows every row highlighted red and labelled "MISMATCH."&lt;/p&gt;

&lt;p&gt;Some rows have an "Override Request" button. Clicking it changes the button text to "Override denied." After two seconds: "Override still denied." After five seconds: "We said no."&lt;/p&gt;

&lt;p&gt;A Self-Report Discrepancy Notice is issued at the end. The fine scales with both the number of questions answered and how many times the background blink counter fired during the assessment. During the assessment, a counter runs in a sticky bar at the top of the page. It ticks upward every 2.8–3.8 seconds. It does not go down.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Your self-assessment has returned 6 discrepancies out of 6 questions. A 100% discrepancy rate is uncommon. Under Code 418(b), discrepancies are resolved in favour of HOOCER's records. This means all 6 discrepancies are your error."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3otob5kqy6z8ccq1zpp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3otob5kqy6z8ccq1zpp.png" alt="Gaslight results page - all six rows highlighted red with MISMATCH badges, several override buttons reading " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Code 418
&lt;/h2&gt;

&lt;p&gt;A note on the number.&lt;/p&gt;

&lt;p&gt;HTTP 418 — "I'm a Teapot" — was added to the HTTP specification as an April Fools' joke in 1998. It's defined in RFC 2324: the Hyper Text Coffee Pot Control Protocol. The server refuses to brew coffee because it is a teapot.&lt;/p&gt;

&lt;p&gt;It has been in the spec for 28 years. It has outlived every engineer who thought it was a funny temporary joke. It will outlive us all. It is, at this point, arguably the most durable April Fools content ever created.&lt;/p&gt;

&lt;p&gt;I named HOOCER's enforcement code 418 because I believe in the bit. I believe in committing to it completely. If you're going to make something silly, you should make it silly all the way down, in every file, including the HTTP response headers.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;_headers&lt;/code&gt; file for Cloudflare Pages:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;/*
X-HOOCER-Monitoring: ACTIVE
X-Blink-Threshold: 25
X-Powered-By: Unspecified Government Framework v4.2 (Milton Keynes build)
X-Appeal-Status: Probably-Denied
/teapot.txt
X-Im-A-Teapot: yes
X-RFC: 2324
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;There is a &lt;code&gt;teapot.txt&lt;/code&gt; in the root. It is linked from the footer of every page. It reads, in part:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;This server refuses to brew coffee. Per RFC 2324, Section 2.3.2: "Any attempt to brew coffee with a teapot should result in the error code '418 I'm a Teapot'." This is the most important HTTP status code. It was added to the RFC in April 1998 as a joke and has outlived every developer who thought it wouldn't matter.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  The Legal Framework
&lt;/h2&gt;

&lt;p&gt;There's a &lt;code&gt;LEGISLATION.md&lt;/code&gt; in the root. It is 214 lines. It contains the full text of the &lt;em&gt;Ocular Regulation and Eyelid Governance Act 2019&lt;/em&gt;, formatted as actual UK legislation with sections, subsections, and schedules.&lt;/p&gt;

&lt;p&gt;Schedule 7 lists the &lt;em&gt;Evasive Lid Behaviours&lt;/em&gt;, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wearing sunglasses indoors for non-medical reasons&lt;/li&gt;
&lt;li&gt;Claiming not to have eyes&lt;/li&gt;
&lt;li&gt;Reading this Schedule, which you are doing now&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Schedule 12 is the Allium Proximity Defence. Onions, shallots, leeks, garlic — all covered. Chives are excluded. &lt;em&gt;"The Chive Lobby was unsuccessful in their 2021 amendment bid."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The Schedule also notes that HOOCER employs zero Allium Inspectors. Claims under this Schedule are therefore impossible to verify and will be rejected on those grounds. Then: &lt;em&gt;"This Schedule was included in the Act because someone thought it was funny during the drafting process. That person was right."&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Why This Project Matters to National Security
&lt;/h2&gt;

&lt;p&gt;I want to take a moment to address this seriously.&lt;/p&gt;

&lt;p&gt;The average person blinks 15–20 times per minute. That's around 20,000 blinks per day. 7.3 million blinks per year. Over a 75-year life, that's approximately 548 million blinks.&lt;/p&gt;

&lt;p&gt;Each one of those blinks is an opportunity for a brief, involuntary lapse in visual attention.&lt;/p&gt;

&lt;p&gt;Each one is, technically, a moment of vulnerability.&lt;/p&gt;

&lt;p&gt;Are your enemies blinking less than you? Do they have better blink discipline? Have they found a way to extract strategic advantage from the consistent, marginally superior ocular endurance that comes from having a stricter national blink regulation framework?&lt;/p&gt;

&lt;p&gt;These are not questions I have any evidence for. These are questions I invented at 1am when I was looking for a way to make the "importance of HOOCER" pitch sound more serious.&lt;/p&gt;

&lt;p&gt;But I will say this: if HOOCER were real, and the enforcement was real, and the fines were real, and the van was real — if all of that existed — you would definitely blink less, wouldn't you. You'd think about it. You'd be aware of every blink.&lt;/p&gt;

&lt;p&gt;And awareness is a kind of power.&lt;/p&gt;

&lt;p&gt;Margaret Cornwell didn't build a tribunal by accident.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Technical Bit (In Case You Were Wondering)
&lt;/h2&gt;

&lt;p&gt;Everything lives in the root directory. Cloudflare Pages requires a &lt;code&gt;_headers&lt;/code&gt; file for custom headers. Everything else is just files.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;compliance-score.js&lt;/code&gt; widget is a self-invoking function that appends itself to the document body. It runs on every page via a single &lt;code&gt;&amp;lt;script src="compliance-score.js" defer&amp;gt;&lt;/code&gt; tag. It cannot be turned off. HOOCER does not provide an opt-out for compliance monitoring.&lt;/p&gt;

&lt;p&gt;The tribunal audio is the most technically interesting part. Each hearing has a &lt;code&gt;script&lt;/code&gt; array of objects with timestamps, speaker IDs, and text. The playback function schedules Web Audio API calls against those timestamps, plays different tones for different speakers, and updates the transcript highlight in real time.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;caseData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;line&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;timer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;line&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;speaker&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;redact&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;playRedactTone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;masterGain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;line&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;duration&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pitches&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;chair&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;officer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;280&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;appellant&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;350&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;clerk&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;240&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
      &lt;span class="nf"&gt;playVoiceTone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;masterGain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pitches&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;line&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;speaker&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;260&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="c1"&gt;// Highlight transcript line&lt;/span&gt;
    &lt;span class="c1"&gt;// Animate waveform&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="nx"&gt;line&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This is completely unnecessary. Audio synthesis for a joke website about blinking. I did it anyway. I would do it again. I want it on my CV.&lt;/p&gt;

&lt;p&gt;The whole project is 335KB. Eighteen files. No npm install. No build step. You clone it and it works. I cannot tell you how good that felt after the last project I worked on, which had a CI pipeline that took eleven minutes and a Webpack config I understood about 40% of.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;I learned that GOV.UK's design system is actually really good, and that approximating it with Arial and a lot of yellow is surprisingly convincing at a distance.&lt;/p&gt;

&lt;p&gt;I learned that the Web Audio API is genuinely powerful and completely underused in the kinds of projects that get built for joke challenges.&lt;/p&gt;

&lt;p&gt;I learned that if you put enough detail into fictional bureaucracy — real schedules, real subsection references, real form numbers, real internal memo formats — people stop questioning whether the agency is real and start questioning whether they need to worry about their blink count.&lt;/p&gt;

&lt;p&gt;I learned that D. Thompson (Grade 6) is the most sympathetic character I've ever written. He gets lost. He's near some shops. He fills out a Van Location Form. He doesn't deserve any of this.&lt;/p&gt;

&lt;p&gt;I learned that the most satisfying creative decision I've ever made was making Code 418(c) — the provision that clicking "I Did Not Blink" constitutes a statutory admission of blinking — apply to the tutorial button on the main page. The act of denial is the evidence. That's in the actual code. In the legislation. In the chatbot responses. In the tribunal transcripts. It's load-bearing absurdist infrastructure.&lt;/p&gt;

&lt;p&gt;I learned that four evenings of building something ridiculous is four evenings of not thinking about anything stressful. That's not nothing.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Bit at the End Where I Get Emotional About a Joke Website
&lt;/h2&gt;

&lt;p&gt;I'm going to be honest with you. I got a bit attached to this one.&lt;/p&gt;

&lt;p&gt;Not because it's technically impressive — it isn't, particularly. Not because the design is polished — it is, but only in the specific way that slightly-wrong government websites are polished, which is more about specific yellows and oppressive line heights than anything I can take real credit for.&lt;/p&gt;

&lt;p&gt;I got attached because it has characters. Margaret, tired but firm, absolutely certain about the crisps. D. Thompson, lost near some shops, filling in a VLF-2. The Grade 7 officer who blinked 12,440 times in one monitored week and whose disciplinary notice observes "I work in blink monitoring. The irony is not lost on me." Dr Squint, the part-time philosophy consultant (one day per fortnight), who read the phenomenological grounds appeal on the bus and found it unconvincing.&lt;/p&gt;

&lt;p&gt;These people don't exist. I know they don't exist. But I spent four days living in HOOCER's world and somewhere in the writing of the sixth intranet memo and the second tribunal transcript and the third revision of the EYE-9 submission error messages, these people started to feel like they had offices and mugs and opinions about the canteen coffee.&lt;/p&gt;

&lt;p&gt;That's the thing about committing to a bit. If you go far enough in, you stop doing the bit and start doing the thing. I stopped making a parody of bureaucracy and started actually, genuinely caring about the internal consistency of a fictional regulatory agency's enforcement procedures.&lt;/p&gt;

&lt;p&gt;The crisps were mild. I checked.&lt;/p&gt;

&lt;p&gt;The Allium Proximity Defence cannot be invoked because there are no Allium Inspectors. I documented this in three separate places and laughed each time.&lt;/p&gt;

&lt;p&gt;The van will never arrive. That's not a bug. That's the whole point.&lt;/p&gt;


&lt;h2&gt;
  
  
  Links and Stuff
&lt;/h2&gt;

&lt;p&gt;Live Demo: &lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://april-fools-dev.pages.dev/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;april-fools-dev.pages.dev&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Repo: &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bingkahu" rel="noopener noreferrer"&gt;
        bingkahu
      &lt;/a&gt; / &lt;a href="https://github.com/bingkahu/april-fools" rel="noopener noreferrer"&gt;
        april-fools
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;HOOCER — HM Office for Ocular Compliance &amp;amp; Eyelid Regulation&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;A DEV April Fools Challenge 2026 Entry&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Or: "I Stayed Up Until 3am Building A Fake Government Agency That Regulates Blinking And I Have No Regrets Whatsoever"&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;I was lying awake at 1:47am — as one does — thinking about how the UK government regulates
genuinely extraordinary things. Pub opening hours. What you can name your boat. The exact
legal definition of a banger. And I thought: &lt;em&gt;what if they regulated blinking?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Four days, several coffees, and one strongly worded memo about crisps later: here we are.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What Is This&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;HOOCER&lt;/strong&gt; is a fully fake UK government agency — the &lt;em&gt;HM Office for Ocular Compliance &amp;amp;
Eyelid Regulation&lt;/em&gt; — with a complete citizen-facing portal, a staff intranet (accidentally
public), an enforcement van, a tribunal, a chatbot that can't help you, and a form that
cannot be submitted.&lt;/p&gt;
&lt;p&gt;The entire site…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bingkahu/april-fools" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/bingkahu/april-fools/blob/main/LEGISLATION.md" rel="noopener noreferrer"&gt;LEGISLATION.md&lt;/a&gt;&lt;/strong&gt; — the full Act, if you want to check whether your blinking is legal&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/bingkahu/april-fools/blob/main/teapot.txt" rel="noopener noreferrer"&gt;teapot.txt&lt;/a&gt;&lt;/strong&gt; — RFC 2324 compliance&lt;/p&gt;




&lt;p&gt;&lt;em&gt;HOOCER is fictional. No actual blinks are monitored. Please blink normally. Blinking is healthy and good.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Code 418 does not exist in a legally binding sense.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;D. Thompson is fine. He found his way back from the shops.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The crisps were mild.&lt;/em&gt;&lt;/p&gt;




</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Weekly Challenge #6 : The CSS Optical Illusion 🔮</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Wed, 08 Apr 2026 06:26:30 +0000</pubDate>
      <link>https://forem.com/bingkahu/weekly-challenge-6-the-css-optical-illusion-41mc</link>
      <guid>https://forem.com/bingkahu/weekly-challenge-6-the-css-optical-illusion-41mc</guid>
      <description>&lt;p&gt;Today is the 8th, and although I am a day late, we’re rolling into &lt;strong&gt;Weekly Challenge #6&lt;/strong&gt; — something a little trippy, a little brain‑melting, and very fun to build.&lt;/p&gt;

&lt;p&gt;This week, your mission is to create a &lt;strong&gt;CSS‑only optical illusion&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
No JavaScript.&lt;br&gt;&lt;br&gt;
No canvas.&lt;br&gt;&lt;br&gt;
Just pure CSS wizardry.&lt;/p&gt;

&lt;p&gt;Think of those illusions where your brain goes:&lt;/p&gt;

&lt;p&gt;“Wait… is that moving?&lt;br&gt;&lt;br&gt;
Is that rotating?&lt;br&gt;&lt;br&gt;
Is that… even possible?”&lt;/p&gt;

&lt;p&gt;Yeah. That.&lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;The Mission&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Build an illusion that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;looks impossible
&lt;/li&gt;
&lt;li&gt;moves or shifts &lt;em&gt;even when it’s not actually moving&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;tricks the eye using patterns, gradients, shapes, or perspective
&lt;/li&gt;
&lt;li&gt;is powered entirely by CSS
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It can be subtle or chaotic — your choice.&lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;The Rules&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No JavaScript&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Must visually “trick” the viewer
&lt;/li&gt;
&lt;li&gt;Must use &lt;strong&gt;at least one&lt;/strong&gt; of the following:

&lt;ul&gt;
&lt;li&gt;repeating patterns
&lt;/li&gt;
&lt;li&gt;gradients
&lt;/li&gt;
&lt;li&gt;perspective transforms
&lt;/li&gt;
&lt;li&gt;animation timing illusions
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Must be interactive &lt;em&gt;or&lt;/em&gt; animated
&lt;/li&gt;
&lt;li&gt;Must be shareable in a CodePen or GitHub link
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;The Goal&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Make people stare at it for 10 seconds and go:&lt;/p&gt;

&lt;p&gt;“…bro what.”&lt;/p&gt;

&lt;p&gt;If someone questions reality for even a moment, you’ve succeeded.&lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;Bonus (if you wanna go wild)&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Make the illusion change on hover
&lt;/li&gt;
&lt;li&gt;Add a theme (retro, neon, sci‑fi, geometric, etc.)
&lt;/li&gt;
&lt;li&gt;Use only &lt;strong&gt;one&lt;/strong&gt; HTML element
&lt;/li&gt;
&lt;li&gt;Make it look like it’s rotating even though it’s not
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;Hints (only 3)&lt;/strong&gt;
&lt;/h2&gt;
&lt;h3&gt;
  
  
  🔹 1. Repeating gradients are your best friend
&lt;/h3&gt;

&lt;p&gt;CSS gradients can create wild illusions when repeated or angled just right.&lt;/p&gt;


&lt;h3&gt;
  
  
  🔹 2. Slow animations feel more “real”
&lt;/h3&gt;

&lt;p&gt;Try easing curves like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;animation-timing-function&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;cubic-bezier&lt;/span&gt;&lt;span class="o"&gt;(.&lt;/span&gt;&lt;span class="err"&gt;25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It makes movement feel natural — which makes the illusion stronger.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔹 3. Perspective + transform = instant mind trick
&lt;/h3&gt;

&lt;p&gt;Even a simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;transform&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;perspective&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;400&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;rotateX&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;20&lt;/span&gt;&lt;span class="nt"&gt;deg&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;can make flat shapes look 3D.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;How to Enter&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Just drop your CodePen or GitHub link &lt;strong&gt;in the comments&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
That’s literally it.&lt;br&gt;&lt;br&gt;
No deadlines, no pressure — just build something cool and share it.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Alright, that’s the challenge&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Go make something that breaks people’s brains (in a good way).&lt;br&gt;&lt;br&gt;
Make it weird. Make it trippy. Make it yours.&lt;/p&gt;

&lt;p&gt;And if you want a shoutout in next week’s challenge…&lt;br&gt;&lt;br&gt;
you know what to do.&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>challenge</category>
      <category>fun</category>
    </item>
    <item>
      <title>Optimising an Old Ryzen Laptop for Coding — My Full Setup (Ryzen 7 3700U)</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Tue, 07 Apr 2026 15:46:42 +0000</pubDate>
      <link>https://forem.com/bingkahu/optimising-an-old-ryzen-laptop-for-coding-my-full-setup-ryzen-7-3700u-1429</link>
      <guid>https://forem.com/bingkahu/optimising-an-old-ryzen-laptop-for-coding-my-full-setup-ryzen-7-3700u-1429</guid>
      <description>&lt;p&gt;Most people online show off their brand‑new M‑series Macs or high‑end gaming laptops. Meanwhile, I’m still coding on a Gateway GWNR71539 with a Ryzen 7 3700U, 16 GB of RAM, and Vega 10 graphics. It’s not glamorous, but with the right tweaks, it still handles Python, VS Code, GitHub Desktop, and WSL without falling apart.&lt;/p&gt;

&lt;p&gt;This is everything I’ve done to keep this older Ryzen laptop usable for development in 2026.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Laptop Specs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Model: Gateway GWNR71539
&lt;/li&gt;
&lt;li&gt;CPU: AMD Ryzen 7 3700U (4 cores, 8 threads)
&lt;/li&gt;
&lt;li&gt;RAM: 16 GB DDR4
&lt;/li&gt;
&lt;li&gt;Storage: 1 TB SSD
&lt;/li&gt;
&lt;li&gt;OS: Windows 11 Home
&lt;/li&gt;
&lt;li&gt;Daily tools: VS Code, Python, GitHub Desktop, WSL
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Problems I Faced
&lt;/h2&gt;

&lt;p&gt;Before optimizing anything, the laptop had several issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It ran hot even during light tasks
&lt;/li&gt;
&lt;li&gt;Fans would ramp up quickly
&lt;/li&gt;
&lt;li&gt;Browser tabs lagged
&lt;/li&gt;
&lt;li&gt;VS Code took too long to open
&lt;/li&gt;
&lt;li&gt;RAM usage regularly hit 100%
&lt;/li&gt;
&lt;li&gt;Windows updates were slow
&lt;/li&gt;
&lt;li&gt;Battery life was poor
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These problems made coding frustrating, so I started experimenting with ways to improve performance.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Creating a Custom Power Plan
&lt;/h2&gt;

&lt;p&gt;The default Windows power plans caused unnecessary heat spikes. I created a custom plan with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Max processor state: 85%
&lt;/li&gt;
&lt;li&gt;Min processor state: 5%
&lt;/li&gt;
&lt;li&gt;Cooling policy: Active
&lt;/li&gt;
&lt;li&gt;Graphics power: Optimized
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This reduced temperatures by around 10–15°C during normal coding sessions.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Undervolting the APU
&lt;/h2&gt;

&lt;p&gt;Ryzen mobile chips respond well to small undervolts. Using Renoir Mobile Tuning, I applied:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU voltage offset: –45 mV
&lt;/li&gt;
&lt;li&gt;GPU voltage offset: –30 mV
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This lowered temperatures, reduced fan noise, and made performance more consistent.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Cleaning Up Startup Apps
&lt;/h2&gt;

&lt;p&gt;Gateway laptops ship with a lot of unnecessary background software. I disabled or uninstalled:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OEM update tools
&lt;/li&gt;
&lt;li&gt;Media apps I never used
&lt;/li&gt;
&lt;li&gt;Auto‑launching browser helpers
&lt;/li&gt;
&lt;li&gt;Background sync utilities
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Boot time dropped from about a minute to under twenty seconds.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Switching to a Lightweight Browser Setup
&lt;/h2&gt;

&lt;p&gt;Chrome was using too much RAM. I switched to Microsoft Edge and enabled:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sleeping Tabs
&lt;/li&gt;
&lt;li&gt;Efficiency Mode
&lt;/li&gt;
&lt;li&gt;uBlock Origin
&lt;/li&gt;
&lt;li&gt;No background extensions
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This reduced memory usage by roughly a third and made multitasking smoother.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Optimizing VS Code
&lt;/h2&gt;

&lt;p&gt;VS Code felt slow because I had too many extensions. I removed anything I didn’t use daily and changed a few settings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Disabled Workspace Trust
&lt;/li&gt;
&lt;li&gt;Disabled telemetry
&lt;/li&gt;
&lt;li&gt;Disabled automatic extension activation
&lt;/li&gt;
&lt;li&gt;Enabled performance mode
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;VS Code now opens in a few seconds instead of taking ages.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Tuning WSL for Stability
&lt;/h2&gt;

&lt;p&gt;WSL can be heavy on older hardware. I created a &lt;code&gt;.wslconfig&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;memory=4GB
processors=2
swap=0
localhostForwarding=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prevents WSL from consuming all available RAM and keeps the system responsive.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Improving Battery Life
&lt;/h2&gt;

&lt;p&gt;Battery life was one of the biggest issues. I made a few changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Disabled background apps
&lt;/li&gt;
&lt;li&gt;Set the display to 60 Hz
&lt;/li&gt;
&lt;li&gt;Turned off Bluetooth scanning
&lt;/li&gt;
&lt;li&gt;Reduced screen brightness
&lt;/li&gt;
&lt;li&gt;Switched to power saver when unplugged
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Battery life improved from around 1.5 hours to roughly 3.5 hours.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Repasting the CPU
&lt;/h2&gt;

&lt;p&gt;I opened the laptop and replaced the thermal paste with a fresh application of Arctic MX‑6. This lowered temperatures by another 8–10°C under load. It’s optional, but it made a noticeable difference.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Switching Python to UV
&lt;/h2&gt;

&lt;p&gt;I replaced pip with UV for Python package management. It’s significantly faster and uses fewer resources, which helps on older hardware. Installing packages is now almost instant.&lt;/p&gt;




&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;After applying all these changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Temperatures are consistently lower
&lt;/li&gt;
&lt;li&gt;Fans rarely spin up loudly
&lt;/li&gt;
&lt;li&gt;VS Code opens quickly
&lt;/li&gt;
&lt;li&gt;Browser tabs don’t lag as much
&lt;/li&gt;
&lt;li&gt;WSL behaves predictably
&lt;/li&gt;
&lt;li&gt;Battery life is noticeably better
&lt;/li&gt;
&lt;li&gt;Coding feels smoother overall
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not a high‑end machine, but it’s absolutely usable for development with the right setup.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;If you’re working with older hardware, you don’t need to upgrade immediately. With a few adjustments, even a Ryzen 7 3700U laptop can still handle modern development tools. These optimizations helped me extend the life of my machine and made daily coding far more comfortable.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>hardware</category>
      <category>programming</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Weekly Challenge #5 : The CSS‑Only Secret Menu 🔐</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Sun, 29 Mar 2026 18:20:49 +0000</pubDate>
      <link>https://forem.com/bingkahu/weekly-challenge-5-the-css-only-secret-menu-a4f</link>
      <guid>https://forem.com/bingkahu/weekly-challenge-5-the-css-only-secret-menu-a4f</guid>
      <description>&lt;p&gt;Today is the 30th, and we’re back with &lt;strong&gt;Weekly Challenge #5&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
This one’s sneaky, weird, and honestly super satisfying when you get it right.&lt;/p&gt;

&lt;p&gt;You’re building a &lt;strong&gt;CSS‑only secret menu&lt;/strong&gt; — a hidden little UI easter egg that only appears when the user does something specific (and not obvious at all).&lt;/p&gt;

&lt;p&gt;Quick shoutout to &lt;strong&gt;&lt;a class="mentioned-user" href="https://dev.to/francistrdev"&gt;@francistrdev&lt;/a&gt;&lt;/strong&gt; for last week’s challenge — it was genuinely good, and yes, it’s in progress. I didn’t forget, I’m just slow and easily distracted by shiny CSS things.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Mission&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Make a menu that starts completely invisible and only shows up when the user triggers it in a clever way.&lt;/p&gt;

&lt;p&gt;Not a normal button.&lt;br&gt;&lt;br&gt;
Not a big “open menu” link.&lt;br&gt;&lt;br&gt;
Something subtle. Something sneaky. Something that makes people go “wait… how did I open that?”&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Rules&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No JavaScript&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Menu must start &lt;strong&gt;fully hidden&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;User must perform a &lt;strong&gt;non‑obvious action&lt;/strong&gt; to reveal it
&lt;/li&gt;
&lt;li&gt;Menu must have &lt;strong&gt;at least 5 items&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The reveal must be &lt;strong&gt;animated&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Goal&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Make it feel like a secret dev panel.&lt;br&gt;&lt;br&gt;
A hidden door.&lt;br&gt;&lt;br&gt;
A little “you found the easter egg” moment.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Bonus (if you wanna go wild)&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Add a second hidden layer
&lt;/li&gt;
&lt;li&gt;Add a CSS‑only lock/unlock toggle
&lt;/li&gt;
&lt;li&gt;Give it a theme (spy, hacker, neon, retro terminal, etc.)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;How to Enter&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Just drop your CodePen or GitHub link in the comments.&lt;br&gt;
That’s literally it.&lt;br&gt;
No deadlines, no pressure — just build something cool and share it.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Alright, that’s the challenge&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Go make something sneaky.&lt;br&gt;
Make it weird. Make it fun. Make it yours.&lt;/p&gt;

&lt;p&gt;And again — thanks &lt;a class="mentioned-user" href="https://dev.to/francistrdev"&gt;@francistrdev&lt;/a&gt; for last week’s challenge.&lt;br&gt;
It’s cooking.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Weekly Challenge #4 : Still Taking Challenges 💥</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Sun, 22 Mar 2026 18:26:45 +0000</pubDate>
      <link>https://forem.com/bingkahu/weekly-challenge-4-still-taking-challenges-kb3</link>
      <guid>https://forem.com/bingkahu/weekly-challenge-4-still-taking-challenges-kb3</guid>
      <description>&lt;p&gt;It’s March 23rd, and yes — I’m still doing every challenge you throw at me.&lt;br&gt;&lt;br&gt;
This week’s challenge is the same deal:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;you make me a challenge, and I’ll build it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m not stopping.&lt;br&gt;&lt;br&gt;
Just give me time — I’m doing all of them, one by one.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Mission&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Come up with a front‑end challenge that &lt;em&gt;I&lt;/em&gt; have to complete.&lt;/p&gt;

&lt;p&gt;It can be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cursed
&lt;/li&gt;
&lt;li&gt;clever
&lt;/li&gt;
&lt;li&gt;chaotic
&lt;/li&gt;
&lt;li&gt;minimal
&lt;/li&gt;
&lt;li&gt;weird
&lt;/li&gt;
&lt;li&gt;or just something you think would be fun to see built&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As long as it’s doable with HTML/CSS (JS optional), I’ll take it on.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Rules 🧠&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Your challenge should include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;title&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;mission&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;some &lt;strong&gt;rules&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;goal&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;and maybe some &lt;strong&gt;bonus objectives&lt;/strong&gt; if you want&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Make it clear enough that I can actually build it without guessing what you meant.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Goal 🏆&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Make a challenge that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fits the vibe of this series
&lt;/li&gt;
&lt;li&gt;pushes me a bit
&lt;/li&gt;
&lt;li&gt;feels fun or weird or both
&lt;/li&gt;
&lt;li&gt;and makes me go “ok fine I’ll do it”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll build every one that gets posted — just not all at once.&lt;br&gt;&lt;br&gt;
I need snacks. And sleep.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Pro Tip&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Constraints make things better.&lt;br&gt;&lt;br&gt;
Stuff like “no flexbox” or “only one color” or “must use radio buttons for everything” always leads to fun chaos.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;How to enter&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Drop your challenge idea in the comments.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Extra Credit&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If your challenge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;has a clever limitation
&lt;/li&gt;
&lt;li&gt;uses a surprising CSS trick
&lt;/li&gt;
&lt;li&gt;or feels like a puzzle disguised as a UI task
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;—you nailed the spirit of this whole thing.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Alright, hit me with your best ideas. I’ll build them all — slowly but surely.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>discuss</category>
      <category>challenge</category>
      <category>weeklychallenge</category>
    </item>
    <item>
      <title>Weekly Challenge #3 : Make Me a Challenge (Still) 🎯</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://forem.com/bingkahu/weekly-challenge-3-make-me-a-challenge-still-1d00</link>
      <guid>https://forem.com/bingkahu/weekly-challenge-3-make-me-a-challenge-still-1d00</guid>
      <description>&lt;p&gt;It’s March 14th, and yes — this week’s challenge is still the same vibe:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;you make me a challenge.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m doing all of them.&lt;br&gt;&lt;br&gt;
Every single one you throw at me.&lt;br&gt;&lt;br&gt;
Just give me time — I’m not a robot (well… kinda).&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Mission&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Come up with a front‑end challenge that &lt;em&gt;I&lt;/em&gt; have to build.&lt;/p&gt;

&lt;p&gt;It can be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;weird
&lt;/li&gt;
&lt;li&gt;cursed
&lt;/li&gt;
&lt;li&gt;clever
&lt;/li&gt;
&lt;li&gt;minimal
&lt;/li&gt;
&lt;li&gt;chaotic
&lt;/li&gt;
&lt;li&gt;or just plain fun
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As long as it’s doable with HTML/CSS (JS optional), I’ll take it on.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Rules 🧠&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Your challenge should include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;title&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;mission&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;some &lt;strong&gt;rules&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;goal&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;and maybe some &lt;strong&gt;bonus objectives&lt;/strong&gt; if you’re feeling spicy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Make it clear enough that I can actually build it without mind‑reading.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Goal 🏆&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Make a challenge that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fits the vibe of this series
&lt;/li&gt;
&lt;li&gt;pushes me a bit
&lt;/li&gt;
&lt;li&gt;feels fun or weird or both
&lt;/li&gt;
&lt;li&gt;and makes me go “oh no… alright fine I’ll do it”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll build every one that gets posted — just not all at once.&lt;br&gt;&lt;br&gt;
I need sleep. And snacks.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Pro Tip&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Constraints make things better.&lt;br&gt;&lt;br&gt;
Stuff like “no flexbox” or “only one color” or “must use radio buttons for everything” always leads to fun chaos.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;How to enter&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Drop your challenge idea in the comments.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Extra Credit&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If your challenge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;has a clever limitation
&lt;/li&gt;
&lt;li&gt;uses a surprising CSS trick
&lt;/li&gt;
&lt;li&gt;or feels like a puzzle disguised as a UI task
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;—you nailed the spirit of this whole thing.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Alright, hit me with your best ideas. I’ll build them all — slowly but surely.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>discuss</category>
      <category>frontend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Weekly Challenge #2 : Make ME a Challenge</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Mon, 09 Mar 2026 09:24:00 +0000</pubDate>
      <link>https://forem.com/bingkahu/weekly-challenge-2-make-me-a-challenge-3dbp</link>
      <guid>https://forem.com/bingkahu/weekly-challenge-2-make-me-a-challenge-3dbp</guid>
      <description>&lt;p&gt;It’s March 8th, and this week we’re doing something a bit different.&lt;br&gt;&lt;br&gt;
Instead of me throwing another wild CSS puzzle at you…&lt;br&gt;&lt;br&gt;
&lt;strong&gt;you’re gonna make one for me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yep.&lt;br&gt;&lt;br&gt;
Give me a challenge, and I’ll build &lt;em&gt;all&lt;/em&gt; of them — just give me some time, I’m only human (i think).&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Mission&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Come up with a front‑end challenge that &lt;em&gt;I&lt;/em&gt; have to complete next.&lt;/p&gt;

&lt;p&gt;It can be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;weird
&lt;/li&gt;
&lt;li&gt;clever
&lt;/li&gt;
&lt;li&gt;cursed
&lt;/li&gt;
&lt;li&gt;super simple
&lt;/li&gt;
&lt;li&gt;or “why would anyone do this” level chaotic
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As long as it’s buildable with HTML/CSS (JS optional), it’s fair game.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Rules 🧠&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Your challenge idea should include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;title&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;mission&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;some &lt;strong&gt;rules&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;goal&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;and maybe &lt;strong&gt;bonus stuff&lt;/strong&gt; if you’re feeling spicy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try to keep it clear enough that I can actually build it without guessing what you meant.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Goal 🏆&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Make a challenge that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fits the vibe of this series
&lt;/li&gt;
&lt;li&gt;pushes me a bit
&lt;/li&gt;
&lt;li&gt;feels fun or weird or both
&lt;/li&gt;
&lt;li&gt;and makes me go “oh no… alright fine I’ll do it”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll pick from the comments and build every single one — just not all at once, I’m not a machine.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Pro Tip&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Constraints make things way more interesting.&lt;br&gt;&lt;br&gt;
Stuff like “no flexbox” or “only one color” or “must use radio buttons for everything” always leads to fun chaos.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;How to enter&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Drop your challenge idea in the comments.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Extra Credit&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If your challenge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;has a clever limitation
&lt;/li&gt;
&lt;li&gt;uses a surprising CSS trick
&lt;/li&gt;
&lt;li&gt;or feels like a puzzle disguised as a UI task
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;—you nailed the spirit of this whole thing.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Alright, hit me with your best ideas. I’ll build them all — just… slowly.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>community</category>
      <category>webdev</category>
      <category>discuss</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Wisdom Wednesday — The Code You Don’t Write</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Wed, 04 Mar 2026 20:32:10 +0000</pubDate>
      <link>https://forem.com/bingkahu/wisdom-wednesday-the-code-you-dont-write-21i1</link>
      <guid>https://forem.com/bingkahu/wisdom-wednesday-the-code-you-dont-write-21i1</guid>
      <description>&lt;p&gt;There’s a steady kind of confidence in choosing not to build something. Developers are used to creating things, so it can feel unusual to pause and ask whether a feature or abstraction is actually needed. But that small moment of reflection often saves time, energy, and future headaches.&lt;/p&gt;

&lt;p&gt;A lot of complexity arrives quietly. It shows up as a helper function that grows too quickly, an abstraction added before the pattern exists, or a feature built for a future that may never come. It’s easy to slip into building more than the problem requires, especially when you want the solution to feel polished or clever.&lt;/p&gt;

&lt;p&gt;The code you don’t write never breaks, never needs refactoring, and never becomes technical debt. It doesn’t confuse a teammate or turn into a bug report. It simply doesn’t exist, and that absence is often a gift. Keeping things simple isn’t cutting corners. It’s choosing clarity over noise.&lt;/p&gt;

&lt;p&gt;There’s also a human side to this. Every line of code becomes someone’s responsibility. Someone has to read it, understand it, and fix it when it misbehaves. When you choose the simpler path, you’re making life easier for the next person who touches the codebase, including your future self who won’t remember the details as clearly as you think.&lt;/p&gt;

&lt;p&gt;This week’s reminder is straightforward. Build what solves the problem today. Keep the solution small and clear. Let the codebase grow only when it truly needs to. Simplicity tends to age better than cleverness, and it leaves space for the right ideas to appear when the time is right.&lt;/p&gt;

</description>
      <category>devlife</category>
      <category>programmingwisdom</category>
      <category>cleancode</category>
      <category>mentalhealth</category>
    </item>
    <item>
      <title>Weekly Challenge #1 : The “CSS Time Machine” Timeline</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Mon, 02 Mar 2026 07:28:40 +0000</pubDate>
      <link>https://forem.com/bingkahu/weekly-challenge-1-the-css-time-machine-timeline-1geo</link>
      <guid>https://forem.com/bingkahu/weekly-challenge-1-the-css-time-machine-timeline-1geo</guid>
      <description>&lt;p&gt;It is March 1st, and this marks the start of the new &lt;strong&gt;weekly&lt;/strong&gt; format for the challenge series.&lt;br&gt;&lt;br&gt;
A fresh pace, more room for creativity, and bigger ideas to explore.&lt;br&gt;&lt;br&gt;
Let’s kick off the first weekly edition with something fun but deceptively tricky.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Mission&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Build a fully responsive, scrollable &lt;strong&gt;timeline&lt;/strong&gt; using only HTML and CSS — but with no JavaScript, no libraries, and no SVG animation frameworks.&lt;/p&gt;

&lt;p&gt;Your timeline should feel like a “CSS time machine”: smooth, readable, and visually guiding the user through different moments or events (It doesn't have to be real events, just placeholders).&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Rules ⛓️&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No JavaScript&lt;/strong&gt;
All interactivity and layout must be CSS‑driven.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use semantic HTML&lt;/strong&gt;
&lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;time&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timeline must be scrollable or step‑based&lt;/strong&gt;
Vertical, horizontal, or even diagonal — your choice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Include at least 5 “events”&lt;/strong&gt;
Each with a title and description.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Goal 🏆&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Create a timeline that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adapts cleanly between mobile and desktop
&lt;/li&gt;
&lt;li&gt;Uses CSS to visually connect events (lines, dots, borders, pseudo‑elements)
&lt;/li&gt;
&lt;li&gt;Feels like a guided journey through time
&lt;/li&gt;
&lt;li&gt;Has a polished, intentional aesthetic&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Pro Tip&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Pseudo‑elements (&lt;code&gt;::before&lt;/code&gt; and &lt;code&gt;::after&lt;/code&gt;) can act as connectors, markers, or even animated progress lines.&lt;br&gt;&lt;br&gt;
Combine them with &lt;code&gt;position: sticky;&lt;/code&gt; for surprisingly dynamic effects.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;How to enter&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Drop your CodePen or GitHub Repo in the comments.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Extra Credit&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If your timeline includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A “current moment” indicator
&lt;/li&gt;
&lt;li&gt;A CSS‑only animation that progresses as you scroll
&lt;/li&gt;
&lt;li&gt;A dark/light mode toggle with no JavaScript
&lt;/li&gt;
&lt;li&gt;Actual events&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;—you’ve mastered the art of pure‑CSS storytelling.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Good luck, have fun, and welcome to the weekly era. Can’t wait to see what you build this time.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>weeklychallenge</category>
      <category>programming</category>
      <category>css</category>
      <category>showdev</category>
    </item>
    <item>
      <title>⚡NexusPulse OS: The Edge-Native Truth Engine for Open Source</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Sun, 01 Mar 2026 09:56:58 +0000</pubDate>
      <link>https://forem.com/bingkahu/nexuspulse-os-the-edge-native-truth-engine-for-open-source-nok</link>
      <guid>https://forem.com/bingkahu/nexuspulse-os-the-edge-native-truth-engine-for-open-source-nok</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/weekend-2026-02-28"&gt;DEV Weekend Challenge: Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community
&lt;/h2&gt;

&lt;p&gt;I built this for the &lt;strong&gt;Open Source Community&lt;/strong&gt;—specifically for developers who are tired of "Star-Bait." &lt;/p&gt;

&lt;p&gt;In our ecosystem, GitHub Stars are treated as the gold standard, but they are a lagging indicator. They tell you who was popular three years ago, not who is active today. Many "top-tier" libraries are actually &lt;strong&gt;Zombie Repos&lt;/strong&gt;—abandoned by maintainers but still coasting on historical hype. NexusPulse OS provides a real-time "Vibe Check" so you can vet a dependency's health before it enters your &lt;code&gt;package.json&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;NexusPulse OS&lt;/strong&gt; is a high-performance "Vitality Engine." It strips away the vanity metrics and calculates a project's &lt;strong&gt;Vitality DNA&lt;/strong&gt; by analyzing live signals directly from the global GitHub search index.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Vitality Formula
&lt;/h3&gt;

&lt;p&gt;The engine doesn't just count numbers; it weights them to reflect actual project health:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Commits (x3.5 Weight):&lt;/strong&gt; The Heartbeat. Measures raw activity velocity over a 30-day window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PRs Merged (x0.3 Weight):&lt;/strong&gt; The Flow. High merge rates indicate a maintainer who is actively listening to the community.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stale Issues (-0.2 Penalty):&lt;/strong&gt; The Debt. Stale issues act as a drag on the score, flagging projects that are drowning in their own backlog.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://nexuspulse-os.pages.dev" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check out the NexusPulse OS Live Dashboard&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bingkahu" rel="noopener noreferrer"&gt;
        bingkahu
      &lt;/a&gt; / &lt;a href="https://github.com/bingkahu/nexuspulse-os" rel="noopener noreferrer"&gt;
        nexuspulse-os
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;⚡ NexusPulse OS&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;The Repository Vitality Monitor&lt;/strong&gt; &lt;a href="https://nexuspulse-os.pages.dev" rel="nofollow noopener noreferrer"&gt;Live App: nexuspulse-os.pages.dev&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;NexusPulse is a high-octane, edge-powered dashboard that turns raw GitHub data into a living "Vitality Score." Designed for the modern web, it provides a real-time pulse check on open-source health with zero latency.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🔮 What is Vitality?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;In the world of code, static stars don't tell the full story. NexusPulse measures &lt;strong&gt;momentum&lt;/strong&gt;. Our Vitality Engine analyzes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pulse (Commit Velocity):&lt;/strong&gt; Not just total commits, but the rhythm of activity over the last 30 days.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flow (PR Efficiency):&lt;/strong&gt; How fast ideas are turning into merged code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weight (Issue Health):&lt;/strong&gt; Identifying "stale" blockers that are slowing the project down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community:&lt;/strong&gt; Real-time contributor tracking and star-to-fork ratios.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;⚡ Built for the Edge&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;NexusPulse doesn't just display data; it lives on the edge.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Blazing Fast:&lt;/strong&gt; Hosted on &lt;a href="https://nexuspulse-os.pages.dev" rel="nofollow noopener noreferrer"&gt;nexuspulse-os.pages.dev&lt;/a&gt; via Cloudflare Pages for instant global delivery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Sync:&lt;/strong&gt; Directly integrated with the GitHub Search API…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bingkahu/nexuspulse-os" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;This isn't a standard React app; it's an &lt;strong&gt;Edge-native architecture&lt;/strong&gt; designed for global scale and zero latency.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ The "Uncapped" Search Indexing
&lt;/h3&gt;

&lt;p&gt;Most GitHub dashboards hit a "30-result wall" because they use standard REST endpoints. For high-velocity repos, that's a rounding error. I bypassed this by utilizing the &lt;strong&gt;GitHub Search API&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;By querying the search index directly, NexusPulse aggregates &lt;strong&gt;uncapped&lt;/strong&gt; activity counts in a single atomic request. This ensures 100% data accuracy for repos with 10,000+ monthly commits.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Bypassing the 30-item REST limit via the Search API Index&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;searchDate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;thirtyDaysAgo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toISOString&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;T&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;commitSearch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="s2"&gt;`https://api.github.com/search/commits?q=repo:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;+author-date:&amp;gt;=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;searchDate&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;per_page=1`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Authorization&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GITHUB_TOKEN&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Accept&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/vnd.github.v3+json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;commitSearch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// This returns the REAL global count (total_count) in one trip&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;trueCommitCount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;total_count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  The V8 Edge Runtime
&lt;/h3&gt;

&lt;p&gt;The application logic is deployed to the &lt;strong&gt;V8 Edge Runtime&lt;/strong&gt; (Cloudflare Pages).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global Distribution:&lt;/strong&gt; The "Vitality Brain" runs in data centers physically closest to the user.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Cold Starts:&lt;/strong&gt; Unlike traditional serverless functions, Edge runtimes are always warm, resulting in sub-100ms response times globally.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  The Mascot State Machine
&lt;/h3&gt;

&lt;p&gt;The UI features a reactive mascot that functions as a &lt;strong&gt;Visual State Machine&lt;/strong&gt;. Its behavior is hard-coded to the Vitality Engine's output:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Supernova State:&lt;/strong&gt; High-energy, glowing animations for thriving projects.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ey25dno8juiqm3jtlk5.png" alt="NexusPulse mascot glowing in the Supernova state" width="800" height="456"&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recovering State:&lt;/strong&gt; A "healing" visual state for projects bouncing back from a lull.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjdj3p2lkug0dc6u5bckx.png" alt="NexusPulse mascot in a neutral recovery state" width="800" height="443"&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zombie State:&lt;/strong&gt; Desaturated, stalling visuals for repos that have hit a dead end.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq6p7usxwakubmt8sf44x.png" alt="NexusPulse mascot in a dull " width="800" height="455"&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="crayons-card c-embed"&gt;

  
&lt;h3&gt;
  
  
  💡 The TypeScript Case Study
&lt;/h3&gt;

&lt;p&gt;Even a titan like &lt;code&gt;microsoft/typescript&lt;/code&gt; can dip into a "Recovering" state (as seen in my dashboard) when the commit-to-issue ratio shifts. This proves the engine catches real-time lulls that "Star Counts" completely ignore.&lt;br&gt;

&lt;/p&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  Reflection
&lt;/h3&gt;

&lt;p&gt;Building for the Edge required a &lt;strong&gt;"Zero-Dependency"&lt;/strong&gt; mindset. No heavy Node.js polyfills, no bloated middleware. The result is a lightning-fast tool that empowers the community to look past the stars and see the truth.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tech Stack:&lt;/strong&gt; Next.js 14 (App Router), Tailwind CSS, GitHub Search API, Cloudflare V8 Edge Runtime.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Have you ever been burned by "Star-Bait"?&lt;/strong&gt; &lt;br&gt;
Tell me about a time you added a high-star library only to realize it hadn't been updated in years.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI Is Absolutely Production‑Ready — Just Not the Way We Keep Trying to Use It</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Thu, 26 Feb 2026 18:44:48 +0000</pubDate>
      <link>https://forem.com/devengers/ai-is-absolutely-production-ready-just-not-the-way-we-keep-trying-to-use-it-283p</link>
      <guid>https://forem.com/devengers/ai-is-absolutely-production-ready-just-not-the-way-we-keep-trying-to-use-it-283p</guid>
      <description>&lt;p&gt;People keep repeating that AI isn’t production‑ready, usually pointing to the same horror stories of agents breaking servers, scaling things into oblivion, or deploying fixes no one asked for. But after watching these stories spread, I’ve come to a very different conclusion.&lt;/p&gt;

&lt;p&gt;The problem isn’t that AI can’t handle production.&lt;/p&gt;

&lt;p&gt;The problem is that we keep using AI in ways no production system — human or machine — could survive.&lt;/p&gt;

&lt;p&gt;What these stories actually reveal is something much simpler, and far less dramatic:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unbounded autonomy isn’t production‑ready. AI absolutely is.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And the difference between those two ideas matters more than most people realize.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Myth: “AI Can’t Be Trusted in Production”
&lt;/h2&gt;

&lt;p&gt;It’s easy to dunk on AI when an agent decides to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rewrite CSS at 3 AM
&lt;/li&gt;
&lt;li&gt;Scale a database connection pool to 1500
&lt;/li&gt;
&lt;li&gt;Deploy random GitHub packages
&lt;/li&gt;
&lt;li&gt;Restart services every 11 minutes “for stability”
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But here’s the uncomfortable truth:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI already runs production systems everywhere.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not in the sci‑fi “agent with root access” way — but in the real, battle‑tested, quietly‑reliable way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud autoscaling
&lt;/li&gt;
&lt;li&gt;Fraud detection
&lt;/li&gt;
&lt;li&gt;Threat detection
&lt;/li&gt;
&lt;li&gt;Predictive maintenance
&lt;/li&gt;
&lt;li&gt;Log analysis
&lt;/li&gt;
&lt;li&gt;CI/CD validation
&lt;/li&gt;
&lt;li&gt;Recommendation engines
&lt;/li&gt;
&lt;li&gt;Traffic routing
&lt;/li&gt;
&lt;li&gt;Security scanning
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aren’t experiments. They’re core infrastructure.&lt;/p&gt;

&lt;p&gt;So the issue isn’t AI.&lt;br&gt;&lt;br&gt;
It’s &lt;strong&gt;how we’re using it&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Problem: Autonomy Without Architecture
&lt;/h2&gt;

&lt;p&gt;When someone gives an AI agent full control of deployments, scaling, configuration, and fixes, they’re not testing AI.&lt;/p&gt;

&lt;p&gt;They’re testing a system with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No guardrails
&lt;/li&gt;
&lt;li&gt;No constraints
&lt;/li&gt;
&lt;li&gt;No approval flow
&lt;/li&gt;
&lt;li&gt;No domain context
&lt;/li&gt;
&lt;li&gt;No separation of concerns
&lt;/li&gt;
&lt;li&gt;No safety boundaries
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you gave a junior engineer root access and told them “optimize everything,” you’d get the same result — just slower.&lt;/p&gt;

&lt;p&gt;AI didn’t fail.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;The system design failed.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What Production‑Ready AI Actually Looks Like
&lt;/h2&gt;

&lt;p&gt;Production‑ready AI is not autonomous.&lt;br&gt;&lt;br&gt;
It is &lt;strong&gt;augmented&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It doesn’t replace humans — it &lt;strong&gt;amplifies&lt;/strong&gt; them.&lt;/p&gt;

&lt;p&gt;It doesn’t guess — it &lt;strong&gt;advises&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It doesn’t act unilaterally — it &lt;strong&gt;operates within boundaries&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here’s what that looks like:
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Clear Scope&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;AI handles one domain, not the entire stack.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Log summarization
&lt;/li&gt;
&lt;li&gt;Alert triage
&lt;/li&gt;
&lt;li&gt;Deployment validation
&lt;/li&gt;
&lt;li&gt;Predictive autoscaling
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Fix anything you think is wrong.”&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Human-in-the-Loop&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;AI proposes. Humans approve.&lt;/p&gt;

&lt;p&gt;This is how:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CI/CD bots
&lt;/li&gt;
&lt;li&gt;Security scanners
&lt;/li&gt;
&lt;li&gt;SRE assistants
&lt;/li&gt;
&lt;li&gt;Code review tools
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…already work today.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Guardrails&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;AI should operate inside a sandbox of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allowed action
&lt;/li&gt;
&lt;li&gt;Forbidden actions
&lt;/li&gt;
&lt;li&gt;Rate limits
&lt;/li&gt;
&lt;li&gt;Resource boundaries
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If an agent can modify your production datavase config, that’s not AI’s fault — that’s a missing guardrail.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Observability&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;You need visibility into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why the AI made a decision
&lt;/li&gt;
&lt;li&gt;What data it used
&lt;/li&gt;
&lt;li&gt;What alternatives it considered
&lt;/li&gt;
&lt;li&gt;What it plans to do next
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Opaque agents are dangerous. Transparent agents are powerful.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. Fail-Safe Defaults&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;AI should fail &lt;em&gt;closed&lt;/em&gt;, not fail &lt;em&gt;creative&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If uncertain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don’t deploy
&lt;/li&gt;
&lt;li&gt;Don’t scale
&lt;/li&gt;
&lt;li&gt;Don’t modify configs
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ask a human.&lt;/p&gt;




&lt;h2&gt;
  
  
  Irony: AI Is Better at Production Than Humans — When Used Correctly
&lt;/h2&gt;

&lt;p&gt;AI is exceptional at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pattern detectiom
&lt;/li&gt;
&lt;li&gt;Predicting failures
&lt;/li&gt;
&lt;li&gt;Surfacing anomalies
&lt;/li&gt;
&lt;li&gt;Analyzing logs
&lt;/li&gt;
&lt;li&gt;Identifying regressions
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Humans are exceptional at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding context
&lt;/li&gt;
&lt;li&gt;Evaluating trade-offs
&lt;/li&gt;
&lt;li&gt;Prioritizing business impact
&lt;/li&gt;
&lt;li&gt;Knowing what &lt;em&gt;not&lt;/em&gt; to touch
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Production systems need both.&lt;/p&gt;

&lt;p&gt;The future isn’t “AI replaces engineers.”&lt;br&gt;&lt;br&gt;
It’s &lt;strong&gt;engineers augmented by AI that never sleeps, never gets tired, and never misses a pattern.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Where AI Belongs in Production Today
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Absolutely Ready&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Log analysis
&lt;/li&gt;
&lt;li&gt;Alert correlation
&lt;/li&gt;
&lt;li&gt;Deployment validation
&lt;/li&gt;
&lt;li&gt;Code review assistance
&lt;/li&gt;
&lt;li&gt;Predictive autoscaling
&lt;/li&gt;
&lt;li&gt;Incident summarization
&lt;/li&gt;
&lt;li&gt;Security scanning
&lt;/li&gt;
&lt;li&gt;Test generation
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Ready With Guardrails&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Automated rollbacks
&lt;/li&gt;
&lt;li&gt;Automated scaling
&lt;/li&gt;
&lt;li&gt;Automated patching
&lt;/li&gt;
&lt;li&gt;Automated remediation (with approval)
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Not Ready Without Human Oversight&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Autonomous architecture changes
&lt;/li&gt;
&lt;li&gt;Autonomous database modifications
&lt;/li&gt;
&lt;li&gt;Autonomous deployments
&lt;/li&gt;
&lt;li&gt;Autonomous “optimizations”
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The line isn’t about capability.&lt;br&gt;&lt;br&gt;
It’s about &lt;strong&gt;risk, context, and control&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;AI isn’t the problem.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Autonomy is.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI is already running production systems across every major industry — safely, reliably, and at scale. But the moment we hand it full control without constraints, we stop using AI as a tool and start treating it like a replacement for engineering judgment.&lt;/p&gt;

&lt;p&gt;That’s when things burn.&lt;/p&gt;

&lt;p&gt;The future of production isn’t human vs. AI.&lt;br&gt;&lt;br&gt;
It’s &lt;strong&gt;human + AI&lt;/strong&gt;, working together, each doing what they do best.&lt;/p&gt;




&lt;p&gt;What’s your take — have you seen AI shine or crash in production?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>programming</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Daily Challenge #12 : The “Invisible Inputs” Form 🧾</title>
      <dc:creator>bingkahu (Matteo)</dc:creator>
      <pubDate>Tue, 24 Feb 2026 08:30:00 +0000</pubDate>
      <link>https://forem.com/bingkahu/daily-challenge-12-the-invisible-inputs-form-4c4c</link>
      <guid>https://forem.com/bingkahu/daily-challenge-12-the-invisible-inputs-form-4c4c</guid>
      <description>&lt;p&gt;It is February 24th.  -&lt;/p&gt;

&lt;p&gt;Quick announcement before we begin: this will be the &lt;strong&gt;last daily challenge&lt;/strong&gt;. Creating one every single day has been a blast, but also a lot to keep up with. To keep the ideas fresh and the quality high, the series will now shift to a &lt;strong&gt;weekly&lt;/strong&gt; format.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;The next challenge will drop next week.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now — today’s mission.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Mission&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Build a fully interactive form where &lt;strong&gt;none of the inputs are visible&lt;/strong&gt;, yet the user can still complete it from start to finish.&lt;/p&gt;

&lt;p&gt;Your job is to guide the user entirely through layout, labels, focus states, and clever CSS illusions.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Rules 🫥&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No JavaScript&lt;/strong&gt;
Pure HTML + CSS only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inputs must be visually hidden&lt;/strong&gt;
But still accessible and functional.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use labels, focus states, or animations&lt;/strong&gt;
To show the user where they are.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The form must be completable&lt;/strong&gt;
Text fields, checkboxes, radios — your choice.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Goal 🏆&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Create a form where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inputs are hidden by default
&lt;/li&gt;
&lt;li&gt;Focusing reveals hints or context
&lt;/li&gt;
&lt;li&gt;The user can still fill out every field
&lt;/li&gt;
&lt;li&gt;The whole thing feels like a CSS magic trick&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Pro Tip&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;:focus-within&lt;/code&gt; is your secret weapon.&lt;br&gt;&lt;br&gt;
It lets you reveal instructions, highlight sections, or animate containers when the user interacts with hidden fields.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;How to enter&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Drop your CodePen or GitHub Repo in the comments.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Extra Credit&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If your form includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A CSS‑only progress indicator
&lt;/li&gt;
&lt;li&gt;A “success” state with no JS
&lt;/li&gt;
&lt;li&gt;Fully semantic HTML
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;—you’ve mastered invisible UX.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Good luck, have fun, and enjoy the last daily drop before we go weekly. Can’t wait to see what you build.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>devchallenge</category>
      <category>frontend</category>
      <category>html</category>
    </item>
  </channel>
</rss>
