<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="pretty-atom-feed.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Blog Title</title>
  <subtitle>This is a longer description about your blog.</subtitle>
  <link href="https://example.com/feed/feed.xml" rel="self" />
  <link href="https://example.com/" />
  <updated>2025-02-24T04:35:49Z</updated>
  <id>https://example.com/</id>
  <author>
    <name>Your Name</name>
  </author>
  <entry>
    <title>NGL&#39;s click counter is FAKE.</title>
    <link href="https://example.com/blog/ngl-fake-click-counter/" />
    <updated>2025-02-24T04:35:49Z</updated>
    <id>https://example.com/blog/ngl-fake-click-counter/</id>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;warning: some profanity is used in this post&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I was messing around with NGL.LINK and noticed a little counter:
&lt;br&gt;
&lt;img src=&quot;https://files.catbox.moe/lvd7ai.png&quot; alt=&quot;Webpage showing a checkbox and &amp;quot;Sent! 👇 532 people just tapped the button 👇; Button labeled: Get your own messages; Hyperlink labeled Send another Message&amp;quot; &quot;&gt;
&lt;br&gt;This counter intrigued me, so i popped open inspector, and what do you fucking know, there&#39;s no data.
This is the code snippet we are interested in:&lt;/p&gt;
&lt;pre class=&quot;language-js&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;  &lt;span class=&quot;token function&quot;&gt;setInterval&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; clickCount &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;parseInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;.clickCount&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 
    clickCount &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; Math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;floor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;random&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; 
    &lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&#39;.clickCount&#39;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;clickCount&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;800&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The setInterval line is the start of a recurring timer, if you look to the end you&#39;ll see it says &amp;quot;800&amp;quot;, so every 800ms we re-run the code. What does the code do though? It first, pulls in the text of the &lt;code&gt;.clickCount&lt;/code&gt; HTML item, which is the counter, then it uses &lt;code&gt;parseInt&lt;/code&gt;, a function that, if a string is only a number, turns it into a proper integer so we can perform mathematical operations on it, after that we save it as clickCount (a variable) in the next line down we increment clickCount (the variable) by &lt;code&gt;Math.floor(Math.random() * 5) - 1&lt;/code&gt;, what exactly does this mean? First, we run Math.Random (order of operations and all that jazz), this throws an output like this:&lt;br&gt;
&lt;img src=&quot;https://files.catbox.moe/4if8i2.png&quot; alt=&quot;Math.random in firefox console, yielded 0.19502641876331384&quot;&gt;&lt;br&gt;
We then multiply that by 5, so it atleast, some of the time is at-least 1, we then floor it which basically strips away the decimal values, and then subtract by one at some points, which could theoretically be dangerous if it ends up being a 0.9999 or whatever which means it would take an item away, finally we write this value back to the element, rinse and repeat.
I leave you with one thing:&lt;/p&gt;
&lt;h2 id=&quot;an-addendum-unclicking&quot;&gt;An Addendum: Unclicking?&lt;/h2&gt;
&lt;p&gt;I noticed this code has the possibility to SUBTRACT from the counter, so i ran it manually, interestingly NodeJS and my browser (firefox) reported different answers, see for yourself.
Ignore the &lt;code&gt;void&lt;/code&gt; function wrapping it in node, for some reason node likes printing extra garbage and i had to &lt;code&gt;void&lt;/code&gt; the trash.&lt;/p&gt;
&lt;h3 id=&quot;nodejs&quot;&gt;NodeJS&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://files.catbox.moe/dlm4pc.png&quot; alt=&quot;Script in nodeJS showing it switching between -1, 0, 2, 3 when using random and a bit of math.&quot;&gt;&lt;br&gt;
Node seems to have a habit of rolling zeros and negative values, which when negatives are rolled, it would seem like a user &amp;quot;unclicked&amp;quot; the button.&lt;/p&gt;
&lt;h3 id=&quot;firefox&quot;&gt;Firefox&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://files.catbox.moe/no0lwm.png&quot; alt=&quot;Same script in firefox only yields positive, nonzero numbers&quot;&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Ok, but WHY THE FUCK IS NODE ACTING DIFFERENT TO FIREFOX???
Now I gotta test it in Chrome &amp;gt;:3&lt;/p&gt;
&lt;h2 id=&quot;addendum-2-electric-boogaloo-2026-02-23&quot;&gt;Addendum 2: Electric Boogaloo (2026-02-23)&lt;/h2&gt;
&lt;p&gt;Just found a backup of my old site and had to put this post back up.&lt;/p&gt;
&lt;p&gt;Also fuck you if you have any of the following on your site:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fake countdown timers&lt;/li&gt;
&lt;li&gt;Fake scarcity information&lt;/li&gt;
&lt;li&gt;And ofc fake click counters.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>StepSequence: A marvelous in browser &quot;sequencer&quot;</title>
    <link href="https://example.com/blog/stepsequence/" />
    <updated>2025-01-10T10:26:00Z</updated>
    <id>https://example.com/blog/stepsequence/</id>
    <content type="html">&lt;p&gt;&lt;video src=&quot;https://example.com/post-assets/stepsequence/video.webm&quot; controls=&quot;&quot;&gt;&lt;/video&gt;&lt;br&gt;
(sorry! The volume was really quiet in OBS or something)&lt;br&gt;
a preview of the application, showing an example melody created by yours truly&lt;/p&gt;
&lt;h2 id=&quot;what-now&quot;&gt;What now?&lt;/h2&gt;
&lt;p&gt;Step Sequence is a basic sequencer tool by Kevin Macleod (yes, the dude who makes those iconic royalty-free tracks also makes software), it is by far my favorite web based song creator, it sure isnt advanced by any means but is simple, somehow even simpler than &lt;a href=&quot;https://musiclab.chromeexperiments.com/&quot;&gt;Chrome Music Lab&lt;/a&gt; but is no where near as advanced as something like &lt;a href=&quot;https://onlinesequencer.net/&quot;&gt;Online Sequencer&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;how-can-i-try-it&quot;&gt;How can I try it?&lt;/h2&gt;
&lt;p&gt;Grab anything with a browser. Go to: &lt;a href=&quot;https://danger.academy/step/&quot;&gt;https://danger.academy/step/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;drawbacks&quot;&gt;Drawbacks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;It works using Midis, so you&#39;re best recording your screen and extracting audio that way as when played outside of StepSequence its up to your system to decide how it sounds&lt;/li&gt;
&lt;li&gt;It has no import function to reimport previous tracks&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
</feed>