Comment by ryanckulp

Comment by ryanckulp a day ago

2 replies

jumping in to defend myself (thanks f5bot). you are not a serious person.

1. i'm very proud of Fomo. for 6 years we fought against fake data. i said "no" to many lucrative opportunities that were not ethical. our vision was "to given entrepreneurs the credit they deserve," and our mission was "to help consumers make better buying decisions online." your comment is libelous. [1, 2]

2. as of yesterday, all 11 of my courses are free. i've helped over 10,000 people learn to code and learn to sell. [3]

3. on the side i do a bit of pen-testing. i help stop* scammers, and i help non technical folks protect their brand. that's why Bubble added me to their home pages and dozens of cash bounties have been sent my way. [4, 5, 6]

[1] https://blog.fomo.com/having-a-vision-works/ [2] https://blog.fomo.com/introducing-honest-marketer/ [3] https://x.com/ryanckulp/status/1907099032616378815 [4] https://www.ryanckulp.com/hustlewing-is-a-scam-so-i-hacked-i... [5] https://bubble.io/security_acknowledgements [6] https://bubblesecurity.gumroad.com/l/unhackable-101

mtlynch a day ago

Nothing you said refutes any of my criticism.

Since you're accusing me of libel, I just checked the fomo website, and I can see that right now, it's presenting fake data. It shows a live updating counter of the number of fomo's impressions and clicks, but these numbers are updating every 200ms based on client-side JS, not real data. From the HTML source:

    setInterval(function() {
      var serverTimestamp = 1743654982;

      // impressions
      var imprCountWhenChecked = 19546526366;
      var imprFrequence = 80;
      var freshImprCount = Math.ceil(imprCountWhenChecked + (Date.now()/1000 - serverTimestamp) * imprFrequence);

      document.getElementById('statisticsTotalImprCount').innerHTML = freshImprCount.toLocaleString('en-US');

      // clicks
      var clickCountWhenChecked = 43316684;
      var clickFrequence = 0.15;
      var freshClickCount = Math.ceil(clickCountWhenChecked + (Date.now()/1000 - serverTimestamp) * clickFrequence);

      document.getElementById('statisticsTotalClickCount').innerHTML = freshClickCount.toLocaleString('en-US');
    }, 200);
I don't have a clean copy of the HTML source when you were running fomo, but I can see on an archive.org snapshot[0] that the customer count increases by exactly 7 every few hundred milliseconds, so it looks like this functionality was introduced while you were running fomo.

If the site fakes that data and you've publicly admitted to lying to your users in other cases, it increases the odds that other data you presented was inauthentic.

[0] https://web.archive.org/web/20181101030710/https://fomo.com/

  • ryanckulp 13 hours ago

    ok back up - you claimed we used fake data. obviously you are referring to "John bought X, Y mins ago" notifications. the actual product.

    for our homepage counter, this is not customers. this is notification count. with thousands of connected websites, each showing multiple notifications per page load, we quick racked up billions of notifications shown.

    running `select count(*) from events` on every landing page load is untenable. instead, every N period we'd check on our avg daily notification count, then update the landing page JS to give users a sense of scale. this number was perpetually under-reporting our actual metrics.

    for metrics that actually matter, like signups, customers etc, we created an Open API and read from those metrics on various landing pages: https://fomo.com/open https://docs.fomo.com/reference/fomo-open

    and for the core product notifications, "John bought X, Y mins ago" we only allowed data from native integrations. if we saw someone pinging webhooks to us with fake data, we deleted their account. if someone asked for a CSV upload feature, we deleted their account. i cannot say the same for our competitors, who welcomed these use cases with open arms.

    bottom line - you're a hater. you don't like Fomo (fine), so you're trying to sabotage the sale of another, completely unrelated product. think about where this bitterness comes from and do better next time.