492 karma · joined March 26, 2014
Former Founder Roost (S14)
casey at wrble com
Another thing to watch would be the mean user karma of all votes. A bunch of low-karma vote stuffing would actually bring a post down.
If you can get a ton of massive karma users to upvote and game this, maybe you should just get in by default?
Roost: - Is the leading SaaS provider of web push notifications. - Is currently handling over 100k requests / minute. Scale and speed are incredibly important to us. - Well funded, high growth.
We’re looking for engineers of all stripes who: - Has experience with AWS cloud technologies. - Prefer deep experience with node and/or Java. - Takes scaling incredibly seriously. - Experience with NoSQL databases at large scale. - Experience in and willing to help with ops. -Wants autonomy to create awesome products
Benefits: -Flex vacation policy -Manhattan offices -Healthcare -Competitive equity
Email casey@goroost.com with resume for more information.
The biggest one that's coming is being able to unsubscribe directly from the notification pop-up itself. This will shut down abusers very quickly.
Beyond that:
-All notifications traverse GCM. Which means you've signed a ToS with Google and they can shut you down (also a little scary).
-Opt-in must happen on the main page, or have the main pages "consent". This prevents iframed ads registering people, for example.
-9/10 pushes must display a user visible element (that will have the unsub feature) which prevents people from being malicious on the background Service Worker thread.
More will come as this feature develops and it's seen how things play out in the wild.
Happy to answer any questions on the base tech or our layer on top of it.
Beyond that, we're definitely aware that there needs to be a steward of the channel. If people abuse it, we lose. There are things that can be done with throttling that we hope to implement soon. Hasn't been necessary to this point.
We're storing 100,000+ unique counters, but only around 1% have more than 100 unique objects counted. Some of those 1% have millions of records so HLL is very useful. As the HLL itself is a fixed size (~10kb for decent accuracy) regardless of #counted objects, in the small case you can replace the HLL with a pure set of counted values and produce a HLL when it grows beyond a bound. Because you're storing the raw values, the transition to HLL is seamless.
Once you've moved beyond raw storage of values there's a harder but still space-saving technique. If you look at the raw bytes of a ~10kb HLL structure with "only" 10's of thousands of counted values around 90% of them will be zero. Below a certain bound it can save a lot of space to have a map of locations and non-zero byte values rather than a raw array of bytes.