piss

entries

  1. Rovyvon A5R flashlight diagram
    Push.cx
  2. TypeID in Lua
    Push.cx
  3. Broken Poker
    Push.cx
  4. TV Setup
    Push.cx
  5. Google Ad Injection
    Push.cx
  6. Streaming Weekly Lobsters Office Hours
    Push.cx
  7. Discord vs IRC Rough Notes
    Push.cx
  8. Wrapping Large-Scale Refactors
    Push.cx
  9. NixOS on prgmr and Failing to Learn Nix
    Push.cx
  10. House Rules
    Push.cx

Rovyvon A5R flashlight diagram

Push.cx

source

<p>I bought a <a href="https://www.rovyvon.com/products/aurora-a5-usb-c-gitd-keychain-flashlight-4th-generation">Rovyvon A5R flashlight</a>. It’s a great little flashlight that charges by USB C and has many useful modes. While I’m generally quite happy <a href="https://vimdoc.sourceforge.net/htmldoc/intro.html#vim-modes-intro">with modes</a>, I spend a lot less time using a flashlight than editing text and was a little confused about how to switch to the one I wanted. The <a href="https://push.cx/uploads/2025/11/RovyVon%20Aurura%20A5R%20flashlight%20manual.pdf">manual for the flashlight</a> is accurate but not clearly written.</p> <p>So I used <a href="https://graphviz.org/">graphviz</a> to knock out a state diagram showing the number of clicks to switch between modes:</p> <p><img alt="state diagram" src="https://push.cx/uploads/2025/11/rovyvon-a5r-flashlight.png" /></p> <p>This is missing that the ‘Regular’ mode will start in the mode that it last spent 3 minutes in. I couldn’t think of a way to represent that graphically that would be clear at a glance, so if I had to use words to explain the graphic I might as well just have written out that previous sentence.</p> <p>While this diagram may be useful in the unlikely case you buy the exact same flashlight, my own familiarity came more from the <a href="https://www.scotthyoung.com/blog/ultralearning/">effortful study</a> of creating the diagram than looking at the diagram. So I’m really sharing this as an example of a useful study technique.</p> <p>Here’s the source, if you’d like to use it as a starting point for your own diagrams:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>digraph FlashlightStateMachine { rankdir=TB; node [shape=rectangle, style=rounded]; // Main states locked [label="Locked Off\n(blinks twice)" style="rounded,dashed"]; unlocked [label="Unlocked Off\n(blinks three times)" style="rounded,dashed"]; momentary [label="Momentary On", style="rounded,bold"]; regular [label="Regular On", style="rounded,bold"]; sidelight [label="Sidelight On", style="rounded,bold"]; // Bidirectional edge between locked and unlocked locked -&gt; unlocked [label=" 5", dir="both"]; // Momentary transitions unlocked -&gt; momentary [xlabel="hold", dir=both]; // Regular on transitions unlocked -&gt; regular [label="2"]; regular -&gt; unlocked [label=" long"]; // Sidelight transitions unlocked -&gt; sidelight [label="3"]; regular -&gt; sidelight [label="3"]; sidelight -&gt; unlocked [label=" long"]; // Subgraph for Regular On brightness levels subgraph cluster_regular { label="Regular Modes"; style=dashed; low [label="Low"]; med [label="Medium"]; high [label="High"]; moon [label="Moon"]; low -&gt; med; med -&gt; high; high -&gt; moon; moon -&gt; low; } // Subgraph for Sidelight modes subgraph cluster_sidelight { label="Sidelight Modes"; style=dashed; white_low [label="White Low"]; white_high [label="White High"]; red [label="Red"]; red_flash [label="Red Flash"]; white_low -&gt; white_high; white_high -&gt; red; red -&gt; red_flash; red_flash -&gt; white_low; } // Connect main states to substates regular -&gt; low [style=dotted, arrowhead=none]; sidelight -&gt; white_low [style=dotted, arrowhead=none]; // Layout {rank = same; locked; unlocked;} {rank = same; momentary; regular; sidelight;} } </code></pre></div></div>