Apple Ordered to Pay $625M to Patent Troll in FaceTime Lawsuit - <AUTHOR> http://techcrunch.com/2016/02/04/apple-ordered-to-pay-625m-to-patent-troll-in-facetime-lawsuit <comment><USER2> Interestingly, the four patents in question cover ways of initiating a secure connection via DNS - nothing about video transcoding or low latency communication, which was my first guess.

[http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sect2=H...](http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%252Fnetahtml%252FPTO%252Fsrchnum.htm&r=1&f=G&l=50&s1=6502135.PN.&OS=PN/6502135&RS=PN/6502135)

[http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sect2=H...](http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%252Fnetahtml%252FPTO%252Fsrchnum.htm&r=1&f=G&l=50&s1=7418504.PN.&OS=PN/7418504&RS=PN/7418504)

[http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sect2=H...](http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%252Fnetahtml%252FPTO%252Fsrchnum.htm&r=1&f=G&l=50&s1=7921211.PN.&OS=PN/7921211&RS=PN/7921211)

[http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sect2=H...](http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%252Fnetahtml%252FPTO%252Fsrchnum.htm&r=1&f=G&l=50&s1=7490151.PN.&OS=PN/7490151&RS=PN/7490151)

</comment><comment><USER3> I don't understand. If "all four of VirnetX's patents have been found invalid by the patent office" as Apple claims, why hasn't the case been dismissed?

<comment><USER4> Here's a real answer (unlike the other "corruption" and "blah blah blah" answers):

First, note that the federal circuit has ruled on these patents before, and _upheld them_. [http://patentlyo.com/media/2014/09/Virnetx-v- Cisco.pdf](http://patentlyo.com/media/2014/09/Virnetx-v-Cisco.pdf)

Apple conveniently leaves this part out.

(i think it's a BS ruling, but it is a final appeals court ruling on the validity of the patents).

As for the PTO finding them invalid:

If you look at the file wrappers of these patents, you will see what apple means is "someone has requested review of these patents by the PTO, and they have initially been found invalid".

(Apple's request to review validity was in fact, denied)

Go to [http://portal.uspto.gov/pair/PublicPair](http://portal.uspto.gov/pair/PublicPair) Enter the patent numbers Click "image file wrapper".

So they haven't "been found invalid", instead, they are going to trial before the PTAB to see whether they are invalid.

Note: On a number of these patents, Apple's review requests have been denied a number of times before someone else's review request was granted

<comment><USER5> So as usual, Apple is lying/misleading people here. At least 'technically'.

<comment><USER6> > So as usual, Apple is lying/misleading people here. At least 'technically'. > No. Apple are arguing that the patents are invalid. They aren't sayin they > have been found invalid already. The TechCrunch article said "All four of > VirnetX's patents have been found invalid by the patent office"

<comment><USER5> >> _They aren 't sayin they have been found invalid already_ ..

They are saying exactly that, at least according to their press statement.

<comment><USER7> It's legal posturing.

<comment><USER4> Actually, they haven't. At least, as far as i can tell (they each have tens of actions on them and i can't read every decision :P).

They have been found "likely to have serious questions of validity".

This is basically the standard you must meet to get a review. That's why they were found that way.

Next, an actual trial will occur. But they are not "provisionally invalid" or anything like that.

There is literally no decision yet from PTAB, and in fact, the only reigning decision on validity is the appeals court.

<comment><USER7> You are right, I've edited my answer as such.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> From the VirnetX website:

[http://virnetx.com/company/virnetx- promise/](http://virnetx.com/company/virnetx-promise/)

"Cutting-edge secure communications technology is only one of the essential elements of our products – another is integrity. ..."

lol, what products?

<comment><USER9> It's actually sad that this company with only patents and no products is a listed public company on a regulated US exchange.

<comment><USER10> Their shareholders probably don't mind - their share price is up 50+% today. [http://finance.yahoo.com/echarts?s=VHC+Interactive#{"range":...](http://finance.yahoo.com/echarts?s=VHC+Interactive#{"range":"5d","allowChartStacking":true})

</comment></comment></comment><comment><USER11> Almost as much as the $1B Apple was originally supposed to win from Samsung for equally silly patents. (It's since been slashed down to a tenth of that, but still.)

Is it too much to say "live by the sword, die by the sword"?

<comment><USER12> What would you do if you were Apple? Would VirnetX have refused to go after them just because Apple had not gone after Samsung for "equally silly" patents?

Seems like what you really want to say is "don't hate the player, hate the game."

<comment><USER13> > Seems like what you really want to say is "don't hate the player, hate the > game."

More like, "Hate the game, and hate the player for playing it"

Instead of everyone joining in the patent suing racket, these big players should be lobbying for the laws to be changed

<comment><USER14> >Instead of everyone joining in the patent suing racket, these big players should be lobbying for the laws to be changed

Except you have to do both - if you ignore the racket you are much more exposed to lawsuits. Patents are used defensively between companies like Apple and Samsung, and if you give up that defense while trying to change the laws you are severely exposed. Tough balancing act..

The flip side of it is that I don't think we're likely to see these laws change until the current 2 party corrupt system is torn apart. Congress is completely bought and sold on both sides of the aisle and their owners like the current system (more laws = more lawsuits = more $$ for lawyers).

<comment><USER15> > Except you have to do both - if you ignore the racket you are much more > exposed to lawsuits

Check this out: [https://www.eff.org/deeplinks/2012/06/defensive-patent- licen...](https://www.eff.org/deeplinks/2012/06/defensive-patent-license-and- other-ways-beat-patent-system)

Google and Facebook are playing as well: [https://code.facebook.com/posts/1639473982937255/updating- ou...](https://code.facebook.com/posts/1639473982937255/updating-our-open- source-patent-grant/), [https://www.google.com/patents/licensing/dpl/non- sticky/](https://www.google.com/patents/licensing/dpl/non-sticky/)

It should be mentioned that both of the above corporations grant this patent license for use and modification of the software they have open sourced.

</comment></comment></comment></comment></comment><comment><USER16> Ugh, disgusting. Think of how much damage that troll will now be able to wreak.

With that kind of money it can buy all sorts of other patents and start the whole progress over again.

<comment><USER17> What we really need are patent co-ops.

The problem as I see it is: patents exist to allow innovators to get paid for their inventions (setting aside the USPTO not being able to do its job correctly due to under-funding and granting bad patents), patents therefore have a monetary value, however that monetary value in fact scales with the monetary resources of the company it's held by (i.e. small companies cannot legally afford to enforce patent claims against behemoths that decide to fight), therefore there is a market incentive to create patent trolls (which increase the value of all patents by pooling them and amortizing prosecution cost/risk over a larger number of patents).

It would seem like if you instead pooled patents in a co-op arrangement, retaining ownership by their original creators, but pooling them with others for efficiency / risk purposes and to obtain the necessary scale for optimal enforcement. Then work out some amiable proceed-sharing method on the backend.

Win/win, and reducing the incentive for patent troll companies by providing an alternative. (Caveat: bad patents still need to be fixed at the USPTO source via additional funding / subject matter expert examiner requirements)

Is something like this at all feasible legally? Or does something prevent the batching together of patents from various actual owners under a single legal proceeding?

<comment><USER18> > The problem as I see it is: patents exist to allow innovators to get paid > for their inventions

That is not why patents exist. Patents exist for the good of mankind to convince innovators to share their trade secrets with the public. Paying those innovators is not the goal, it is the means by which the goal is achieved, making the inventions public. You've confused the carrot for the end goal.

Anyone wanting to think about how to fix patents needs to first understand what the goal is, and paying inventors is not the goal.

<comment><USER17> If there were any worldwide system of incentivization and value that was non- monetary, I'd be inclined to agree with you. As the world exists, paying inventors == convincing innovators to share their trade secrets with the public.

Unless you'd like to offer feasible alternatives?

<comment><USER18> I didn't say paying them wasn't a valid means of achieving the goal, I'm merely pointing out that making the inventions public is the goal, paying them is merely a means of achieving that goal. To lose sight of the goal leads to making bad decisions. Thinking the goal of patents is to pay inventors for example, could lead to a far more screwed up system that doesn't benefit the public. We want to progress human knowledge, not make inventors rich; the latter achieves the former currently, but it doesn't necessarily have to be so if better means are found to achieve it.

</comment></comment></comment></comment></comment><comment><USER19> The large companies seem to be constantly in patent battles, often with each other, both as plaintiffs and as defendants. They win some and lose some. Since this is unproductive activity, due to lawyer bills and the diversion of attention from their core businesses, it simply must be a net loss for those players.

Why don't they call each other up, declare a truce, and cooperate in lobbying Congress to fix (i.e. largely repeal) patent law?

<comment><USER20> Doesn't work when the companies in question exist purely for patent lawsuits

<comment><USER19> Right, but if Google Apple Microsoft Amazon etc. get together and lobby to end software patents, they can overwhelm the trolls.

</comment></comment></comment><comment><USER21> Now this Patent Troll has even more ammunition to shakedown companies in future whilst encouraging creation of even more low-life leeching NPE's.

Clearly Patent Trolls adds negative value, harms progress and increases cost of business - how long will this legal racketeering be allowed to continue?

<comment><USER22> Or maybe they act to keep the big players honest?

<comment><USER21> The big players can afford it, their existence just adds a barrier to entry and causes more harm to young/unestablished companies.

</comment></comment></comment><comment><USER23> I should totally be a patent troll. Are there any MOOCs that cover this?

<comment><USER24> A MOOC to be a mook.

</comment></comment><comment><USER25> I have a modest proposal to get rid of these patent trolls and these ridiculous settlements that typically are decided by a jury of West Texas farmers.

Patents ought to be designated a non-transferrable property. Inventors may create a trust that receives patent revenues, and direct those revenues to any entity they please (their own company, their heirs, another company, a charity, etc.) but would not be able to actually sell the patents to any other company or individual.

Then, patent holding companies would evaporate, and the revenue for ideas would go to those who created the ideas. If a company created many patents, say, Kodak, then goes out of business, it would leave behind a trust that would continue to receive revenue on those patents until they expired. If you choose not to, you can forfeit the patent and then it becomes public domain.

<comment><USER26> Or how about we hard delete all software patents since they are absolutely ridiculous? Goodbye $600mil flow charts.

<comment><USER27> But if we don't have software patents, how else will we incentivize mega- corporations like amazon to invent innovative new technologies like a 1-click checkout button?

<comment><USER26> You make a fair point. In fact, if we had even stronger software patents, facebook would have had to wait 20 years after the invention of myspace. A world with no facebook? Valhalla? It seems I need to rethink my position.

</comment></comment></comment></comment><comment><USER28> If this is the kind of impetus needed to set off patent reform, all the better. I would argue against the "Troll" label, it is a legal firm doing its job very well. The Troll bashers I assume would prefer the companies to just leave this $ to the infringes? Why? Is it somehow immoral to use the legal system for financial gain? No, it is not, not at all. I'd say good on them for finding the loop holes and driving their $600M lorrie straight through it to the bank. Don't say fuck the trolls, fuck the patent system in the US which Apple has used to the detriment of many young companies too, they are all playing the game.

<comment><USER2> Typically the 'troll' label is applied to companies like Virnetx because they produce nothing of value. They are strictly rent seekers - net negative economic value creators.

"It's a massive verdict for VirnetX, a company that has no products and makes its money solely through patent litigation."

<comment><USER29> Even that's selectively looking at the facts though. At some point they paid for those patents, and that theoretically put money in the pockets of creators, incentivizing them to create more.

That said, to my eyes it's clearly a subversion of the intended purpose of patents, and is societally damaging, so I see no problem with derogatory labeling of this behavior and those that take part in it. It's unfortunate, but it's an important part of getting consensus in a short time frame with a large populace.

<comment><USER30> That's not selectively looking at the facts at all. The _facts_ are plain:

\- company buys patents for the purpose of seeking rents

\- company aggressively pursues others who are independently creating potentially valuable products to shake them down for rents

\- company produces nothing of value with the patent except for increased wealth transfer by extracting value from others' work

That they [theoretically] put money in someone's pocket to get the patent in the first place does not change any of these facts. And calling attention to the behavior isn't selectively dealing with the facts. They exist purely for rent-seeking.

<comment><USER29> > That they [theoretically] put money in someone's pocket to get the patent in > the first place does not change any of these facts.

Actually, depending on your definition of rent seeking, it either makes it rent-seeking or not, so it _may_ affect those facts. Would inventors be incentivized to create as much if there wasn't a market for these types of patents? Even if you discounts the type of patents that trolls attempt to control as useless, can we say that those crappy patents didn't subsidize better inventions?

Now, I'm not defending patent trolls, just noting that it may be a mistake to assume there is no economic value to what they do, even though the _net_ outcome is likely negative. The positive and negative consequences may not be entirely comparable, making this easy to overlook.

</comment></comment></comment></comment></comment><comment><USER31> It's not over yet. Apple will appeal.

</comment><comment><USER32> I must say it's rather funny that Apple is basically passing along their Samsung patent money onto VirnetX.

</comment><comment><USER4> So, virnet is a spin-off of SAIC. SAIC is definitely not a troll (though i could believe virnet is :P).

</comment><comment><USER33> And another case with software patents and a patent troll, how much damages they have done

</comment><comment><USER34> Makes Google's UK tax bill of 130 mill seem small.

<comment><USER35> It was small compared to their profits.

</comment></comment><comment><USER36> If they won in court against Apple, they're not a "patent troll". They invented something which Apple copied.

Apple has patented, and tried to enforce, the claim that they have the exclusive right to devices with a screen on the front and round corners.[1] They lost, but they're still litigating that.

[1] [http://fortune.com/2015/08/19/apple-patents-rounded- corners/](http://fortune.com/2015/08/19/apple-patents-rounded-corners/)

<comment><USER37> A company patented the concept of making toast well after toasters were on the market. Another patented recurring payments of online service long after that was normal. Another guy modified a patent to cover podcasting after podcasting was invented and in use.

Point being, something being patented != something being invented. It just means examiners agreed with the claims of a piece of paper then turned that into a piece of intellectual property. The wins then mean courts agreed that claims in that property match some other product to some degree. Neither means someone copied someone. Whether that's true varies on a case by case basis.

I think it's telling that many defendants develop their own, "infringing" tech without ever hearing of the plantiff or their patents. Hard to copy what you don't know exists. In science, we call it independent invention but patent system makes that impossible. Plus, on software patents, what programmers have you met who comb through patent databases to solve their day-to-day problems? I've never met one.

Concluding, patents are legal pronouncements that may or may not cover inventions. Rulings on copying may be right or bullshit. Copying is usually unknowing or independent invention because nobody solves problems with patent databases in our industry. I remember running into maybe 3 or 4 worth looking at in Google search solving a problem. One was novel but others patented ideas already in products or Comp Sci literature. Well-known ideas that were foundational to product success. (sighs)

<comment><USER38> >Point being, something being patented != something being invented.

But it is still a valid patent. Don't say that specific patents are invalid, realize that the very concept of patents are invalid.

<comment><USER37> The concept is valid but hard to implement in tech. Probably a bad idea, too.

</comment></comment></comment></comment><comment><USER39> Why doesn't the legal system immediately dismiss such lawsuits by the patent trolls? It is obvious what they're after.

<comment><USER40> Because courts adjudicate laws, and it's the laws that are broken. The alternative would be courts that just make up their own versions of the law, which has its own problems. Among those is the tendency for patent trolls (or their equivalents in other kinds of cases) bringing suit in whichever jurisdiction is friendliest to them, and there's entirely too much of that going on in East Texas already.

</comment></comment><comment><USER41> In light of Apple patent trolling the Samsungs & HTCs on curved rectangles, is this just karma?

</comment><comment><USER42> is it my or does 625 million seem a tad excessive for a feature of the phone that isn't totally central and probably is used by maybe 20% of phone users?

Apple has sold maybe 800million iOS devices. Say 400 million that support FaceTime. $1.50 per device. wow.

Or 625,000,000/ 14 employees.

</comment><comment><USER43> @GabrielSecure is their (inactive, what a surprise) Twitter account, FYI.

</comment><comment><USER44> A patent troll getting patent trolled, great.

</comment><comment><USER45> considering that apple is in itself a patent troll of the worst kind (buying companies with interesting patents, such as FingerWorks, and forbiding any and all licensing on those patents) i'm not even mad with this news.

<comment><USER46> That doesn't fit my understanding of Patent troll -- buying Patents, not making anything, then blanket suing companies to try and make a living. Not defending Apple's behavior as such, but it seems to not be the same thing.

</comment></comment><comment><USER47> One patent troll has to pay another patent troll.. Good.

<comment><USER48> Perhaps apple ABUSES patents (that's a different discussion I do not want to get into), but I prefer to reserve the term "patent troll" for those individuals or organizations that do not actually perform invention nor manufacture, sales and marketing of actual products.

<comment><USER49> That doesn't seem like a very useful distinction. Suppose new patent troll legislation comes along that would prevent enforcing a patent that isn't actively being used or developed (similar to trademarks). The trolls would just produce a cheap gizmo that depends on the patent in some way, and then blame the lack of sales on patent infringement. They'd colloquially still be called "trolls" based on a subjective judgment that they aren't really serious about selling the gizmo.

When someone calls Apple et al. a patent troll, I think it's from the perception that they 1) apply for overly broad or obvious patents, and 2) enforce the patents offensively. Also a very subjective definition, but it doesn't seem any worse than arbitrary "uses/plans to use" criteria.</comment></comment></comment>


DarkNote (decentralized ptivate Internet banking) update - <AUTHOR>

darkNote is s an Open Source truly anonymous decentralized and secure Internet cryptocurrency, that enables fast, near-zero cost privacy protected payments and encrypted messages to anyone in the World.
It is inspired by CryptoNote technology: smart Economy with original supply curve, proved fair decentralization, brilliantly scaled network specs, user friendly cross platform GUI wallet and lots of network improvements was brought by XDN in duckNote appearance.
And today we are happy to introduce an updates you were waiting for.
Today we announce: New DarkNote main website - http://darknote.cc New DarkNote XDN verison 1.0.2
New updated source code with amazing encrypted messages feature, integrated in simplewallet.
Now you can run Encrypted Messages services via Web. The simpliest use case is to send messages from the WEB, e.g. with exchange withdrawals. Please, update your simplewallet and daemons to version 1.0.2.
New updated GUI client version 0.99. We keep hard work to improve DarkNote GUI. Now we have: No delays, fast work, tons of improvements. Import of simplewallet private keys to GUI client. Improved mining and updated pool list.
Launching media activity, introducing FB page https://www.facebook.com/darknote.xdn
Next days we will introduce more updates and amazing community stuff.
Discussion: https://bitcointalk.org/index.php?topic=788916.700
Stay tuned, great days are coming. <comment><USER2> Can some of you comment on the encrypted transaction comments and encrypted messages feature?

</comment><comment><USER3> CryptoNote? Is it encrypted messages app?

<comment><AUTHOR> CryptoNote is a name of the technology ([https://cryptonote.org/](https://cryptonote.org/)). Like Bitcoin or Ethereum.</comment></comment>


Bloom filters debunked: Dispelling 30 Years of bad math with Coq - <AUTHOR> https://gopiandcode.uk/logs/log-bloomfilters-debunked.html <comment><USER3> I feel like most commenters are missing the point. The fact that this issue was finally settled once and for all using a proof assistant is a huge achievement! That's the highest degree of scrutiny that a proof can undergo. This is especially important given the high number of mistakes in prior work—one would be forgiven for distrusting new papers on this topic that _don 't_ have machine-certified proofs. I can't believe people think this is just clickbait. Do y'all not recognize the importance of math being...well...correct?

<comment><USER4> The article doesn't say that the original _proof_ was incorrect. It argues that one of the original theorem's _assumptions_ was not justified. A machine certified proof doesn't help with this. [EDIT: The author points out below that the assumption was not explicit in Bloom's work. An attempt at a machine certified proof _would_ catch this aspect. But not the aspect of the assumption being wrong, if it were added explicitly.]

Now, others later recognized this faulty assumption and produced a new formula and a faulty proof for its correctness. A machine certified proof would help here if an actual proof step is wrong, except note the footnote: "To be fair, the error in Bose et al.'s paper was primarily due to incorrect definitions, rather than an incorrect logical step. As an interesting anecdote, the first version of our work was based off the incorrect definitions by Bose et al. and ended up being rejected by reviewers who then rediscovered this error." So again it was _human_ checking that (re-)discovered an issue. One that appears to have been fixed by humans before this work. And one that the machine wasn't able to find.

So now that all known incorrect assumptions are shaken out (there might be unkown ones, Coq can't tell) this work is a machine checked proof of something that had been proved before. It's an achievement, and it's good to have certainty. Almost anything that gets us closer to more formal math and computer science is good. But this particular result is hardly spectacular.

As for the clickbait aspect, I'm also annoyed by it. The title is clearly factually incorrect. No property of Bloom filters has been debunked. A widely cited formula was replaced by an asymptotically equivalent one 12 years ago, and we now have a machine checked argument that this replacement was correct. This isn't a debunking of anything. No math has been disspelled.

Clear and honest science communication is important. Authors overselling their work in such (obvious) ways just highlights that they themselves don't think the work is sensational (which it doesn't have to be!), and it makes readers wonder in what other ways they are intellectually dishonest.

<comment><AUTHOR> > The article doesn't say that the original proof was incorrect

Apologies if my wording did not make this clear: the original proof by Bloom _is logically incorrect_

Bloom derives his expression by performing a transformation that would only be possible if the bits are independent, but nowhere in his proof does he state that he is making this assumption. It just so happens that even if he had explicitly included this assumption, it would not have been justified. So in that sense, the debunking part is correct - we disprove Bloom's original bound by proving the true bound under the same assumptions that he explicitly makes.

<comment><USER4> > Bloom derives his expression by performing a transformation that would only > be possible if the bits are independent, but nowhere in his proof does he > state that he is making this assumption.

I see, thanks for this clarification. I read your post as saying that the assumption was explicit. I agree that reasoning from an implicit assumption is a logical error. Still, the real problem was not the assumption being implicit/explicit but rather that one doesn't want to rely on it at all. Which again is an extra-logical issue.

> So in that sense, the debunking part is correct - we disprove Bloom's > original bound by proving the true bound under the same assumptions that he > explicitly makes.

OK. I don't think that recapitulating something that has been known with more or less certainty for 12 years counts as "debunking". For me "debunking" has a connotation of being original, maybe for you it doesn't.

But I especially think that "the formula was only asymptotically correct" is too weak a statement to count as a "debunking". For me "debunking" an algorithm or a data structure would have to be something much bigger, like "Quicksort doesn't always sort" or "binary search trees can lose data" or "Bloom filters can sometimes have false negatives". Not "the behavior we have been seeing for the last 50 years matches the original formula well, but strictly speaking it matches the new formula a bit better". Your mileage obviously varies.

EDIT: Let me stress again that I'm not pooping on your work. The work appears sound and important, since this was so tricky to get right in the past. But I _am_ pooping on the title.

<comment><AUTHOR> I guess we'll have to agree to disagree here.

Given the history of the proofs of the Bloomfilter, I'd argue that the bound was not really "known with more or less certainty" \- if so many corrections had to be made, why should we believe that this latest paper was truly correct? it does not seem to be unreasonable to believe that there might be other errors that had been been similarly overlooked. Our research tackles this problem - it provides a guarantee that there are no further hidden errors.

> "the formula was only asymptotically correct"

I have no issues with the behaviors of a data structure being characterized in an asymptotic sense, but I do think that giving a bound that you claim to hold exactly, but then having it turn out to _only_ hold asymptotically is incorrect and worthy of debunking. Furthermore, most citations of Bloom's bound do not claim it is an asymptotic bound, but use it as an exact one, which is clearly incorrect.

<comment><USER5> I think from an engineering perspective it doesn't feel like a debunking. Nothing we assume about the bloom filter has been fundamentally changed. I think that might be the perspective of most people in here.

<comment><AUTHOR> Yes, I think that's an accurate take on the work.

At the end of the day, this is primarily a formal result with few direct implications on practical usage. As I mentioned in another post, I tried to make it more relatable to an engineering audience, but it's possible that I may have buried the lede somewhat. However, I still stand by the statement that the title is not incorrect, at least if only from a mathematical perspective.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> I thought the article had a very nice, succinct and clear explanation of bloom filters and wanted to say thanks to the author reading this thread.

A year or two ago when bloom filters became a recurring popular topic on HN I read a long illustrated medium post on them found via HN out of curiosity to add the concept and tool to my back pocket, and it all seemed complicated and the explanation didn't stick. Your explanation however was quick and made complete sense and I cannot forget it. Appreciate it! Thank you!

<comment><USER7> Agree, it almost highlights how bad others descriptions can be sometimes. I mean the article makes it feel like such a simple idea given how many words are spoken about it.

I wonder if the key is in quickly grounding the core abstractions with concrete meaning early on, that way your mind quickly has a model of "things" to operate on before attempting to build up the behaviour with more abstract description.

Many descriptions stay in the abstract too long without anything to attach it to for the uninitiated... in which case you either persevere and eventually it clicks and all the relationships fall into place - or you give up out of disinterest.

I've noticed this when explaining things to others, especially non-technical people, when explaining seemingly very simple things, attempting to describe them in multiple ways and failing, and then realizing they need clarification of the "what", after which explanation is easy - sometimes you are blind to it when you already know "what" and already have the mental model so you jump straight into how and why.

</comment></comment><comment><USER8> A bit tangential, but I suspect many people don't know is there is actually more information-dense data structures for the use case of bloom filters; Cuckoo filters for example can get close to the theoretical lower bound of information required and have some other interesting properties. So you should consider that before reaching for bloom filters, probably!

<comment><USER9> Bloom filter was probably chosen not because of its false negative rate but because it was good enough whatever its false negative rate is.

<comment><USER10> Bloom filters have no false negatives, they have only false positives. If it were the other way round, they would be of no practical use as you'd have to query the original datastructure in any case:

\- If the bloom filter said "True", then you go ahead and fetch the data from the original structure \- If the bloom filter said "False" but that might be a false negative then you'd have to anyway query the original structure to be sure

With 0% false negatives but a relatively small rate of false positives instead, you don't have to query the original source if the filter gave a "False".

Btw. Bloom filters were one of the first probabilistic data structures with real practical uses and still to this day are widely used. They are still not out-classed in every way by newer algorithms like Cuckoo filters.

<comment><USER11> Of course that's purely a matter of perspective. If you regard a bloom filter as an approximation of inclusion in a set, it's a false positive, which is how we usually look at it. But if you look at it as a an approximation of safe urls e.g. in a browser it's a false negative (and there are no false positives). The data structure doesn't care; it's just bits: if the overall set is finite, it's even quite hard to tell which makes most sense, but in the more usual practically unbounded case, sure, finite subset inclusion approximation seems a less braintwisting interpretation.

<comment><USER10> It's an interesting thought but I'd argue the following.

First, the definition of Bloom filters is a probabilistic data structure to test the presence of an element in a set no matter the program logic around it.

But secondly, given your example of safe browsing, you can flip positive and negative meanings around freely by how you define the question. Is it "is this a bad domain?" or "is this a good domain?" which you both can convert to "is this domain in the set?" and "is this domain NOT in the set?".

And that's a general problem with "positives" and "negatives", they depend purely on the question and the question can have a boolean negator in it. But that's a logical layer above the data structure. As you said, the data structure does not care, it is just bits and therefore the question is "is the element in the set?".

Same as one could ask "Is it day?" or "Is it night?" which both query the same underlying data about the time and location but would have opposite meanings for positive and negative results.

And so, to give the two terms a better meaning we have a definition of the data structure and the operations on it which defines the meanings of negatives and positives.

I think some part of the reason for confusion with false negatives and positives results from the conotations of "positive" (good) and "negative" (bad).

</comment></comment></comment></comment></comment><comment><USER12> " To be fair, the asymptotic behaviour of Bloom's original bound is consistent with this updated definition, so the impact is more on an issue of pedantry rather than for practical applications."

Would love to see a table with computed numbers comparing the rates. It's hard for me to understand the behavior of that second result

<comment><AUTHOR> This paper[1] which corrected Bose et al.'s original derivation, has more discussion about the impact of the second result - in particular, Figure 2 (on page 13) has a comparison of the relative error of the old and new bounds against the empirically calculated rate.

[1] [https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=90377...](https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=903775)

</comment></comment><comment><USER13> It bears mentioning that not only cuckoo filters but also simply vanilla linear probed hash tables of B-bit truncated hashes (sometimes called fingerprints) can be a better substitute for Bloom filters. This seems a highly under propagated fact. "high p" (order 10%) numerical examples are often used to sell an idea less valuable at small p.

An (asymptotic, for p <=~ 10%) back of the envelope formula is that such a hash table/set of fingerprints takes up a factor of about (1+log_{1/p}(N)) more space than a Bloom filter. It is not hard to derive this. Unlike the incredibly precise Coq formula proof theme, this is all approximate, but more engineering-relevant.

If you were targeting p=0.001 to have a small mistake rate, 1 + log_1000(N) is pretty small (say <~ 1+3=4 for for N <~ 1e9 elements). While it does use 25% space, this Bloom filter would require many more (-log_2(p) =~ 10) probes while the LP hash table would only hit the DIMMs once. Many, but not all, might view a 10x latency reduction as worth 4x the space in the game of space- speed trade-offs.

<comment><USER13> I should also have said that this competing idea was raised literally in _the very same_ Burton Bloom 1970 paper that the more famous filters come from.

Analysis of speed these days (where a single main memory hit is thousands of superscalar dynamic instructions) is tilted differently than it was in 1969. Still, _even back then_ Bloom's own original paper had a footnote qualifying his superiority conclusion as dependent upon memory system assumptions. Beats me how this gets lost. Call it "The Bloom filter mystique".

</comment></comment><comment><USER14> This is important work and all, but i can't help but feel the headline is a bit clickbaity

<comment><AUTHOR> Yes, that's a fair comment. I took some creative liberties with the title to try and make this theoretical result more relatable to the average reader, but it's possible I may have gone too far.

<comment><USER15> It would be interesting if you can show how Coq refused to accept the old formula and what error it produced.

<comment><AUTHOR> When I was attempting to prove Bloom's original incorrect bound, the work never progressed to the point where I was actively working directly on proving his bound - I managed to prove some intermediate theorems, but was unable to work out a way to compose them. The issue ended up being that that I was unable to derive the independence required to prove the inductive step.

If you're interested at looking at the sources, I think the following commit was around the place where I was working on this: [https://github.com/certichain/ceramist/commit/70927c5b50e21a...](https://github.com/certichain/ceramist/commit/70927c5b50e21a08f510cfd9555d8324a61c1233)

</comment></comment></comment></comment><comment><USER16> Is there a sound technique to get your k hash functions to produce k distinct bits, such that the original derivation would become correct?

<comment><USER17> It's not too difficult: hash function 1 generates an integer from 0 to n-1, that index element is deleted, then hash function 2 generates an integer from 0 to n-2, that element is deleted etc.

This is an O(n^2) algorithm, which you can improve to O(nlgn) using fenwick trees.

In practice however, it is much quicker to generate random hashes and repeat until they're distinct.

<comment><USER16> In k^2 time, which is maybe faster than running a hash an additional time:

      function get_bits(input, hashes, n)
        local bits = {}
        for i=1,#hashes do
          local bit = hashes[i](input) % (n-i+1)
          for j=1,i-1 do
            if bits[j] <= bit then
              bit = bit + 1
            end
          end
          bits[i] = bit
          while i > 1 and bits[i] < bits[i-1] do
            bits[i], bits[i-1] = bits[i-1], bits[i]
            i = i - <USER2>
          end
        end
        return bits
      end

<comment><USER18> Your % operation is not uniformly distributed if the hash domain isn't an integer multiple of the output size, which is a bigger problem for formal correctness than the colliding output issue (hashes are not uniformly distributed).

You need to truncate to an even number of bits and retry until the output is < n, at which point you're retrying anyway, so you can just retry on collision instead of having all that complicated logic to skip bits.

Nice try though, but if you want formally perfect results like the OP you have to try harder :-) (except real hash functions are only assumed to have perfectly distributed functions anyway, that is not proven and probably not provable, so basically you're screwed either way and none of this matters :-) ).

</comment></comment></comment></comment><comment><USER19> The original false negative rate approximation can be proved (correctly) using Martingale arguments as done by Mitzenmacher and Upfal in 2005. The Wikipedia page also shows this version.

<comment><AUTHOR> Ah, that's a new change on the wikipedia page, when I started work on this proof back in December, the Wikipedia page actually had the incorrect derivation.

Additionally, Bloom's original bound is given (and typically quoted) as an exact expression for the false positive rate, so while it may be correct as an approximation, I'd say its fair to say that the original bound is wrong.

<comment><USER19> Yeah, it's only right asymptotically. It's nice work testing some of those things in coq.

</comment></comment></comment><comment><USER20> >"Using a probabilistic data structure known as a Bloomfilter, Browsers maintain a approximate representation of the set of known malicious URLs locally. By querying this space-efficient local set, browsers will only send up a small proportion of URLs that have a high likelihood of actually being malicious."

</comment><comment><USER21> Surely the original 'false positive rate' is only wrong if the hash function is 'bad', and thus Bloom wasn't 'incorrect' as much as assuming a perfect hash function.

<comment><AUTHOR> I don't think that would solve this issue - a perfect hash function is guaranteed to not have any collisions for any element in some predefined set. What Bloom's proof requires is that all of the k hash functions should not have any collision for any input that is inserted into the Bloom filter, which is not covered by just having each function alone be perfect. That aside, Bloom does not make any assumptions about the chosen hash functions being perfect or not.

<comment><USER22> Correct.

In the extreme case, imagine that your k hash functions are nearly identical: hash function `H_i` differs from `H_1` only in that the outputs for the `1`st and `i`th elements in the input space are swapped. Of the `N` elements in the input space, all but `k` will completely collide.

</comment></comment></comment><comment> dan-robertson Here's a derivation of the formula Bose et al give for the false positive probability:

To calculate the probability, we will work out the number of ways to assign _kl_ hashes to _m_ bits (I.e. functions from a set of size _kl_ to a set of size _m_ ), and for each of those ways we will work out how many ways we could assign _k_ hashes to the bits which are set (I.e. ways to get a false positive). We then count the number of possible ways to assign our _kl_ hashes of existing elements and _k_ hashes of the tested element to _m_ bits and divide the former by the latter. For the argument to be valid, each assignment of hashes to bits must have equal probability, which is true if the hashes are independent.

The simple way to count the number of assignments of _kl_ hashes to _m_ bits is easy: for each hash there are _m_ possible bits so we get:

      m^(kl)

Similarly for _kl + k_ hashes:

      m^(k(l + 1))

Now we will break this count up by the number of bits which are set. Suppose _i_ bits are set. Then the number of possibilities for those set bits of the _m_ total bits is (m choose i). And the number of ways the _kl_ hashes could be assigned to the _i_ bits is equal to the number of surjections from a set of _kl_ hashes to a set of _i_ bits, which is i!{kl; i}, where {s; t} is the sterling number of the second kind, the number of ways to partition _s_ labelled objects into _t_ unlabelled non-empty partitions [the author's paper claims this is the number of surjections which is slightly wrong]. This gives the number of assignments given exactly i set bits as:

      (m choose i) i! {kl; i}

And the total as:

      m^(kl) = Sum_(i = 0)^m (m choose i) i! {kl; i}

Given exactly _i_ bits are set, how many ways can we assign k hashes to those _i_ bits? Easy: i^k. So the number of lists of kl + k hashes (integers from 1 to m) such that the last k all appear in the earlier list of kl is:

      Sum_i i^k (m choose i) i! {kl; i}

Finally we divide by the number of possible lists, m^(k(l+1)), to get the probability given by Bose et al (this is valid because the hashes are iid so each list has equal probability of occurring)

</comment><comment><USER23> Their prose description of a bloom filter firstly has a significant flaw, and secondly falls victim to what I believe is a fallacy in many discussions about bloom filters.

The flaw is that they do not specify that the size of the bit array should be a prime number. This omission alone is astounding. To be fair, they state that they assume the bits from the hash functions are randomly distributed over the bit vector, so with this assumption they skate past this issue even though they have apparently missed that crucial detail of part of how it is accomplished. One wonders if they were unaware.

The fallacy imho, but this is where I depart from the community, thus imho, so take me with a grain of salt if you wish, is that you don't need multiple independent hash functions. You just need multiple inputs. For example instead of hashing the word "salad" three times, just hash the tokens salad1, salad2, and salad3. If your hash function is worth its salt (npi) then you will be just fine.

<comment><AUTHOR> This is a good point about practical implementations of hashing based randomization - incorrect table sizes can invalidate assumptions about uniformity and cause guarantees to fail. However, this work was primarily about the theoretical analysis of these data structures, which presupposes that we already have a means of generating uniformly randomly distributed bits over the table space, hence the lack of discussion about table sizes.

</comment></comment><comment><USER24> What if a distinct bit vector is used for each hash function? Then isn't the original false positive rate correct?

Can you use less storage by having distinct bit vectors of each hash? This seems like a natural question once we know the false positive rates are different.

Maybe Bloom was misinterpreted and right all along?

<comment><AUTHOR> Good point, You are right that our correction does not address errors in Bloom's original definition of a Bloom filter - which uses distinct bit vectors, but rather in the definition of the Bloom filter that is typically used (and referenced) in practice (Knuth's version) and in the literature, which functions in the way described in the article. This version is easier to implement as the hash functions are independent, but which _does_ use incorrect reasoning in it's correctness proof. It's wrong to attribute this to Bloom, so I've added a note to address this.

</comment></comment><comment><USER25> I'm curious about the properties of the new approximate membership algorithms you discovered as part of this research. Are they better?

"We instantiated this interface with each of the previously defined AMQ structures, obtaining the Blocked Bloom filters, Counting Blocked Bloom filters and Blocked Quotient filter along with proofs of similar properties for them, for free."

So it sounds like the new AMQ algorithms you allude to are blocked (more cache friendly) variants of existing AMQ algorithms. Are the bounds you proved all good in some sense? Do you know yet if they're actually faster in practice on real hardware, or do optimized implementations still need to be written?

<comment><AUTHOR> The corresponding bounds for the variant structures we construct do result in lower false-positive rates than a standard Bloomfilter - so, in that sense, you could say that they are better. However, they also require more space, striking a slightly different theoretical trade-off between space and accuracy.

For practical purposes, you would have to take the effect of caches into account, and the performance may vary depending on the particular choice of hardware. Our work stuck mainly to the theoretical side, so we didn't do any empirical testing of these new data structures. I guess the jury is still out on whether these variants are actually better in practice than the existing ones.

</comment></comment><comment><USER26> This was very accessible! Thank you for writing it.

There were a couple of typos - might be worth getting someone to proof read it... (I am out atm so don't have a good way of laying out suggestions for corrections)

<comment><AUTHOR> Thanks for the feedback. My main aim with this post was just to provide a slightly more accessible introduction to the full work, so I'm glad that it was successful in that sense.

It was mostly just a quick transcription of the corresponding presentation for the paper, so some typos may have crept in. I'll do a second pass and try and fix that later today.

<comment><USER27> That's mostly a really nice explanation, the one thing that bugged me (which is my pet peeve in math-y CS papers) is a not-perfectly-clear explanation of your variables. The ones in the equations interspersed with the diagrams of the original derivation are easy enough to pick up from the diagrams, but you switched from $n$ to $l$ for the number of inputs in the correct expression (and the Bose paper also used $n$, so I'm not sure why).

<comment><AUTHOR> Thanks for the comment.

I think that was actually a mistake in my writeup, I just copied the latex from the paper without adjusting it to the notations used in the article. I'll make sure to fix it.

</comment></comment></comment></comment><comment><USER28> I didn't realize Bloom filters were used in this way. Thinking adversarially for a moment, doesn't this provide an easy way to get a target website marked as a false positive?

<comment><USER29> Thinking more adversarially, doesn't this provide an easy way to track anyone who visits a target website?

<comment><USER28> Based on advance512's answer, it sounds that way.

</comment></comment></comment><comment><USER30> I can't follow all the maths but the introduction is surely wrong based on simple probability alone.

It's claimed that the URLs which browsers send up (having been diagnosed positive by the test) will _"have a high likelihood of actually being malicious "_, but that by no means follows from the test's low false positive rate. You need to consider the background rate.

Just like in the classic example of a positive diagnosis from a low false positive test for a rare desease.

<comment><AUTHOR> I think in this case the fact that there are no false negatives means that the low false positive rate is enough to infer that a positive result implies high likelihood of actually being malicious.

You can reason roughly as follows:

      P[ pos | mal ] = 1 (no false negatives)

      = P[ pos /\ mal ] = P[ mal ] (Bayes)

A low false positive rate means that:

      P[ pos | ¬ mal ] ~= 0                  (low false positive rate)

      P[ pos /\ ¬ mal ] / P[ ¬ mal ] ~= 0

      (P[ pos ] - P[ pos /\ mal])/(1 - P[mal]) ~= 0

      (P[ pos ] - P[ mal ])/(1 - P[ mal ]) ~= 0

From this fraction we can conclude:

      P[ pos ] - P[ mal ] ~= 0

Returning back to a the likelihood of being malicious given a positive result:

      P[ mal | pos ]

      = P[ mal /\ pos ] / P[pos]

      = P[ mal ] / P[ pos ]

      ~= 1.0

<comment><USER30> I think you're right. I'll stick to the day job.

<comment><USER30> No, wait, I think I was right after all.

Say we have a million urls, and a thousand of them are malicious. Our filter returns a positive result for all the malicious 1000 (no false negatives) and for the safe 999000 urls only 1% will return positive (low false positive), but that's still 9900 false positives. So a positive result only has a (1000 / (1000 + 9900)), i.e. 9%, chance of actually being malicious.

Even with a false positive result of only 0.1%, the probability of a positive result actually being malicious only rises to 50%, so still not in _" high likelihood"_ territory.

<comment><AUTHOR> Nice example - you were right, my wording on that section was incorrect. sukilot quite nicely presents the error in my derivation - I guess I probably shouldn't try coming up with proofs on the spot - especially if they're not machine checked.

I think what I probably should have said instead was that the low false positive rate means that only a small proportion of the honest URLs will be sent up.

</comment></comment></comment></comment></comment><comment><USER31> > Conversely, sending every URL that a user visits to some external service, > where it could be logged and data-mined by nefarious third parties (i.e > Google)

As in, just like DNS.

<comment><USER32> This suggests an interesting question to put on an exam in whatever class teaches about Bloom filters.

\</comment></comment><comment></comment><comment>----

Q: It is proposed to make the local DNS resolver handle IPv4 by using 64 Bloom filters, BO1, BZ1, BO2, BZ2, ... BO64, BZ64.

Filter BOn answers the question "is bit n of the IP address a 1?", and BZn answers the question "is bit n of the IP address a 0?".

Your resolver checks all these Bloom filters. If BOn return "no", then it knows bit n of the address is 0. If BZn returns "no", then it is knows bit n of the address is a 1. Only if BOn and BZn both return "maybe" for some n must the resolver actually do a DNS query over the internet.

Explain why this proposed resolver would not be useful.

<comment><USER33> These would have to be pretty large and updated regularly. Why not use as k-anonymity scheme? A decent amount of password managers use that to see if the password a user generated is unique.

</comment></comment><comment><USER34> The theory of hashing never matched up well with how I've experienced it in the real world. For example almost all analysis of the hash table (for proving stuff about load factor, chain length, or probe clustering sizes, etc) starts off with a "uniform hashing" assumption. But that assumption have basically never held true given how languages define their default hashes.

</comment><comment> ur-whale The actual Coq code is here:

[https://github.com/certichain/ceramist/blob/fd5e522f2c381f7d...](https://github.com/certichain/ceramist/blob/fd5e522f2c381f7dbd5b8e38b48041dfd4bd261a/Structures/BloomFilter/BloomFilter_Probability.v#L1187)

</comment><comment><USER35> This is interesting stuff! It's especially nice to see some more details behind the math -- I did some stuff with bloom filters for work and found that the math didn't always seem to line up with what we'd expect during tests. I wonder if it needs some adjustment...

</comment><comment><USER36> The new formula doesn't appear in the Wikipedia article for Bloom Filter, although it does say that the old formula is only an approximation because of the incorrect independence assumption.

</comment><comment><USER37> For an academic paper this page was extremely engaging! Congrats to the author.

</comment><comment><USER38> It's not "Bloomfilter" but "Bloom filter" after Burton Howard Bloom.

<comment><AUTHOR> My bad, I didn't realize, I will update the post accordingly.</comment></comment>


Pinterest raises $27 million in a round led by Andreessen Horowitz - <AUTHOR> http://techcrunch.com/2011/10/07/confirmed-pinterest-raises-27-million-round-led-by-andreessen-horowitz/ <comment><USER2> I have not seen my wife so engaged with a site or mobile app since Facebook and possibly Angry Birds. That's when I knew Pinterest was going to be huge. Good for them on raising this round.

I think the path to monetization will be a no-brainer as well.

Contrast that with the folks as Svpply (I heard hopes for them for early on) who sit around saying "They've (pinterest) locked themselves into a niche community of 22-35yr old women" while Pinterest is absolutely blowing up and eating their lunch. Very stupid and short-sighted view IMO. [http://pieratt.tumblr.com/post/10452105095/who-svpply-is- com...](http://pieratt.tumblr.com/post/10452105095/who-svpply-is-competing- with-sort-of)

Take note on what your spouse/kids/SO spend their time engaged in.

<comment><USER3> From the article you posted from by Svpply blog: "It's going to be very difficult for them to grow beyond puppies and photos of Ryan Gosling."

Wow. What a complete disregard for women as a desirable demographic. When companies act like this it's an opportunity for the rest of us.

I've been using pinterest the same way I use twitter; as social media for my business (whose target demographic is women 22-35).

<comment><USER4> _as social media for my business_

I wish I could say "OMG", but HN wouldn't allow me. This is exactly what I was afraid of when I found Pinterest: marketers. This is the start of a decline.

<comment><USER5> Why so? The Twitter deluge of SM marketing? (I'm trying to figure out your concern).

<comment><USER4> When people start to promote their products on places like this, they end dominating the content.

</comment></comment></comment></comment></comment><comment><USER6> I always find it incredibly amazing to wander in to a wildly popular site that no one I know uses. It's a sad testament to how incredibly isolated hackers can be.

</comment><comment><USER7> "The start-up, which has no revenue to speak of yet"

This is the aspect of the site that always made me scratch my head and say "huh?"

It is no doubt a well designed site that engages women. Despite being in beta and invite only I know a bunch of women who are really into it. I don't think being engaging is enough though - where do they go from here? How do they actually justify the valuation? Are they going to have "paid" posts for advertising? Are they going to some how sell the data mined from their users? Paid accounts?

This site seems like it is going to be even harder to monetize than reddit.

<comment><USER8> I'll take a wild guess, predicated on the fact that twitter is another social platform that's difficult to monetize: sponsored pinboards.

My company would pay to have "sponsored pinboards" all day long if the net ROI was positive. But that's a _huge_ "if".

<comment><USER9> I think that pinterest needs to be careful on how many of these "sponsored pinboards" they have. It is currently something cool and hip, but if the ratio of "sponsored pinboards" and user pinboards isn't correct, they can turn off a lot of users.

</comment></comment></comment><comment><USER10> I am their target demo and have been completely sucked in to it. Pinterest is addictive and engaging and completely enjoyable. It's the first place I go when I am having a bad day. This is one of the most exciting sites I have seen in a long time. My friends and I can't keep off of it.

Monetization will be a breeze. This demo doesn't get upset about ads, especially if they're relevant. And ads are just the LCD, no-brainer way to monetize. There is huge potential here.

I just don't understand why they need _so_ much money. Jeeez, what are they spending it on?

</comment><comment><USER11> If they raised $25 million while valued at $200 million, and earlier raised $10 million, presumably at a much lower valuation...

That doesn't leave the company a huge amount of equity and control, does it?

<comment><USER12> It was $10 million based on $40 million valuation. Combined with the latest investment, it seems a majority percentage of equity would still belong to the founders. Well past successful at a $200 million valuation, for sure.

</comment></comment><comment><USER13> One of my female friends is _obsessed_ with this site. I don't get it, but then I'm not their demographic.

</comment><comment><USER14> I remember meeting Ben in Palo Alto last year when he was still figuring things out and trying to raise money. Sounds like it's been amazing year since then. Congrats guys. :-)

<comment><USER4> _when he was still figuring things out_

I would like to hear a bit more about this. Did they start with a different product or idea?

<comment><USER14> No, it was the Pinterest you see today but I think they only had a core user group and were figuring out how to make it grow from there.

</comment></comment></comment><comment><USER15> Congrats to the team who built such an addicting product to users. Here's hoping that you won't get comfortable with that money now and keep innovating! :)

</comment><comment><USER16> It's great to see all this action in the social commerce space. With Pinterest, Polyvore, Svpply, Fancy, Weheartit, Wookmark, Wanelo, Sumally, et al it will be interesting to see if there will be a big winner, or if we will end up with several players for different demographics and more targeted products.

</comment><comment><USER17> Pinterest has existed for many years as a sub-product of a website called Lime Life called MySnaps (<http://www.limelife.com/bookmarklet.html>). It is essentially the exact same thing as Pinterest except that MySnaps but is not a standalone product, nor is not as "clean" as Pinterest's implementation.

I only know about MySnaps as I once got a freelance e-mail about a two years ago from someone asking me to recreate MySnaps for them but I shrugged it off. Makes me wonder if it was the Pinterest guys ;)

It's really interesting how marketing, and presentation can make a product more popular than your competitors. Other companies with success like this include Quizlet, and Facebook.

EDIT: But now thinking about it, isn't this essentially Delicious all over again as a different mutation?

</comment><comment><USER18> So it's a photo sharing site?

<comment><USER8> Yes, but with links. So it's definitely worth billions.

Edit: Now that I've actually looked at the site to ensure I wasn't speaking out of ignorance, I noticed that the external links are not rel="nofollow". This will be a brilliant breeding ground for SEO spam.

</comment></comment><comment><USER19> Are we really congratulating a "company" that makes no revenue on raising money again?

When will it stop?

</comment><comment><USER20> Looks like less engaging 4chan that just happens to have a female demographic.

</comment><comment><USER21> Congrats to the pinterest team, perhaps they can invest in more servers now ;P

</comment><comment><USER22> They're killing it. Glad to have helped found it.

<comment><USER23> Care to elaborate?</comment></comment>


Can helplines survive our growing fear of the phone call? - <AUTHOR> https://www.theguardian.com/global/2018/nov/19/helplines-advice-survive-fear-phone-calls-samaritans-childline <comment><USER2> Characterizing the dwindling preference for phone calls as 'fear' is taking it a few steps too far.

It just turns out that phone calls have a new niche. Other forms of communication are used when their advantages outweigh a phone call...which isn't hard.

Phone calls are really only needed when there is a need for synchronous, immediate, communication that requires a high fidelity and require the bulk of each party's attention.

Urgent, important help where the problem and possible solutions are not clearly defined qualify. But anything less than that can likely be handled over some sort of textual, asynchronous interface. And beyond just being more convenient, they also offer their own advantages like archivability and searchability.

<comment><USER3> In the general case, yes, "fear" is a bit dramatic. The average Joe isn't fearful of talking to a banking call center.

But when you're talking about mostly kids who are mentally in a fragile place, it's a context that is important.

Generally speaking, there's a continuum of intimacy or engagement ranging from a physical presence at various levels to high latency written communication like a letter or postcard. It's always better to do complex interactions in person, but a less expressive medium is going to be superior to nothing.

</comment></comment><comment><USER4> I think they will survive, but will diminish to a shadow of their former use, being eclipsed by asynchronous communications methods.

Helplines for anxiety-related issues will diminish more than others. When putting the phone to one's ear is itself a source of anxiety, people will definitely seek out and use other options for getting help that present less friction for them.

I have personally hated phone conversations since long before it was possible to avoid them entirely. I'm glad I don't have to suffer through them as much now. It isn't really fear. I just feel like they are a colossal waste of time. Few people write up a script, agenda, or talking points for their calls. Most just wing it. And they end up meandering, babbling, or inserting priority- retaining nulls, made all the worse by having no physical cues from the other person. Holding the phone up to one's ear also precludes the use of that hand for any other purpose. And the synchronous nature of the call sometimes means that I don't have time to formulate a concise topical response without the other person breaking in with "are you still there?" so I also have to babble or insert PRNs as a means of conveying "please wait while I assemble an answer to your question." But for a long time, it was the only tool in the toolbox for fast communication, so people had to use it when other means that would have been more appropriate had not been invented yet, or not yet reached a critical level of adoption.

Now that legacy can be retired. And good riddance.

Online community message boards where people with the same problems support one another--moderated by professionals to control spam and abuse--are likely to grow, in my opinion. These will likely have mobile companion apps to simplify interaction through small screens.

<comment><USER5> > Online community message boards where people with the same problems support > one another

Yes, that's what reddit does.

> \--moderated by professionals to control spam and abuse--are likely to grow, > in my opinion. These will likely have mobile companion apps to simplify > interaction through small screens.

Nope. Two things wrong with that.

1\. Moderation won't and will not pay. People don't value paying for that. Advertisements put a question in conflicts of interest. Professionals require payment to survive.

2\. Mobile companion apps: In general mobile apps are terrible due to physical limitations. They limit conversation and kill the context of what's going on. Also, again improvements to the apps cost money to develop and research.

<comment><USER4> People are currently being paid to answer phone calls. Clearly, people value paying for that. The salaries are paid from donations and state payments to the nonprofit company.

Is there not a similar value proposition in having someone around to keep "You should kill yourself" messages off the suicide prevention message board, along with the scams and sales pitches?

Instead of paying someone to answer the phone at 1-800-DONT-DIE, you pay the same amount to moderate suicideprevention.org/board . Don't know where you got the idea of it being ad-supported, but you are correct that it's a horrible idea.

Not everyone is going to be in front of a full-sized computer in the middle of a crisis, but they are likely to have a phone. You at least need to have a mobile-friendly web interface for your support resources.

</comment></comment></comment><comment><USER6> I volunteer at 7cups.com. It's much easier to have a chat app open over lunch than spend time with people on the phone; it's also lower quality attention, I figure.

<comment><USER7> > it's also lower quality attention, I figure.

I'm not sure you can make that a blanket statement.

It's entirely possible to multi-task with a phone in your ear, especially with headphones, and it's also possible to focus completely on a series of text messages. You might be able to say that videoconferencing is necessarily higher-quality attention, but I wouldn't put chicanery past some organizations.</comment></comment>


Selling Chameleons Online to 58-person SaaS Company - <AUTHOR> http://mhelpdesk.com/the-early-lessons-part-1-of-5/

<comment><USER2> Great mentality!</comment>


Ask HN: Custom tools and scripts - <AUTHOR> DevOps and SysAdmin, what custom tools and scripts you have developed for you work?
We are currently working on analysis of whole network infrastructure. There are lot of devices with outdated or wrong or missing documentation.
Since there are lot of devices, it's not possible to do it manually one-by-one. We are developing custom scripts.
Wondering how HN guys helps on they own with similar tasks and what difficult tasks are solved by custom automation tools and scripts. <comment><USER2> We use Kubernetes but I've mostly written a bash script, added ~/bin to my executable path.

It's working amazingly well.

I sometimes, use Ruby or Haskell depending on the nature of glue script and sometimes Go.</comment>


Hackers Connected to China Have Compromised U.S. Government Systems, CISA Says - <AUTHOR> https://www.nextgov.com/cybersecurity/2020/09/hackers-connected-china-have-compromised-us-government-systems-cisa-says/168455/ <comment><USER2> Are they also reporting that the pope is still catholic?</comment>


Is It Time to Say Goodbye to Barnes & Noble? - <AUTHOR> http://www.nytimes.com/2012/01/29/business/barnes-noble-taking-on-amazon-in-the-fight-of-its-life.html?pagewanted=1&ref=technology

<comment><USER2> This is an oddly "poor publishing cartel!" story, which has echoes of our friends at the MPAA and the RIAA without the venom, but a good helping of the cynicism. Let's see if I have this straight:

The long and short of the article is that everyone's scared of Amazon, because Amazon is actually selling what consumers want, and are leveraging their consumer power to cut out the publishers completely. This has the appearance of a big win for consumers and for writers, but the publishers worry that they can't "mold talent" any more, and have finally realized that the middleman loses when he forgets to provide what people want. It's a complete play-by- play of the Kill Hollywood models we've been talking about recently.

NYT paints the publishers as a poor industry who are getting swirlies from the school bully, so they really hope that Barnes & Noble will save them. As always with the cartels, they want to hold on to the past and their print books (even when _they_ that put the ridiculous, onerous DRM on their e-books and people are still buying them). What they won't do is acknowledge that Amazon has changed the game on them, and fight Amazon toe-to-toe: ie. actually merge with Barnes and Noble. They want a proxy battle, and if B&N eats it, then they don't lose anything.

Personal prediction: without a merger with one or two publishing companies, B&N as we know it dies within 5 years. Renting that floor space and paying those employees is just too much overhead. The last play will be to shutter their big stores, and cut themselves right down to small boutique stores on highly foot-trafficked areas, that focus entirely on pushing Nooks and eBooks.

<comment><USER3> I don't care about the publishers, I just want my bookstore browsing experience somehow. I think that is why such stories are of interest, because a lot of people worry about losing that.

I wonder what could replace it in the future :-/

<comment><USER4> I agree. That is actually why I was so interested in the article. I love going to a physical bookstore, specially B&N.

I really hope whatever replaces the experience is not fully digital.

</comment></comment></comment><comment><USER5> Barnes and Noble really does have a one untapped resource over Amazon that I really wish they'd exploit. They have _a lot_ of people who love to read working for them and building recommendation lists for their stores. If they would simply get these same employees to review their books on bn.com and build recommendations, I could see that site doing a lot better.

Of course that might hasten the demise of their brick and mortar stores or turn them into something like an Apple genius bar.

</comment><comment><USER6> We lost the Barnes and Noble in East Lansing about a month ago. The town now lacks a true bookstore despite a population of 50,000 students.

I received a BN gift card for Christmas which I used online. Now I am receiving 2-3 emails a week from BN trying to interest me in buying other books. Unlike the ones from Amazon what they're offering me is almost laughably irrelevant.

I used the same credit card with which I have bought hundreds of books from BN and either they can't match it to the email I gave them to get a hint of my interests or they don't care. So unless I receive another gift card they're not going to receive any future business from me.

</comment><comment><USER3> I wonder: the equivalent to the small corner bookshop has not yet emerged on the internet, or has it? I had expected to see more web sites offering a choice selection of books through the Amazon affiliate program (or something similar). But I rarely ever stumble across them. Perhaps because there are no corners on the internet.

<comment><USER7> Those equivalents sort-of exist, but part of the challenge is finding them and finding someone with tastes reasonable similar to your own; I write a book blog called The Story's Story at <http://jseliger.com> that somewhat fills his niche, and there's a pretty big book blog called The Millions that's worth reading: <http://www.themillions.com> , plus a bunch of smaller book bloggers. But the big ones from the 2002 – 2006 era have mostly closed up shop or stopped posting as often as they did; there's no money in "offering a choice selection of books through the Amazon affiliate program," and hobbies without funding tend to flame out over time as interests wane or the hobby starts to feel more like work.

<comment><USER3> Any chance you could mirror your RSS feed on Twitter? (There are tools for that, too). I would follow, I just don't use an RSS reader atm.

<comment><USER7> Funny you should ask—I _just_ started doing so about a week ago, for precisely this reason: <https://twitter.com/#!/seligerj> .

</comment></comment></comment></comment><comment><USER8> I'm really going to miss bookstores if they disappear, even the big chains like Barnes & Noble.

<comment><USER2> Can you expand on why?

I keep seeing people say that they'll miss bookstores, but I can't imagine what they'll miss.

Bookstores are very inefficient. Ordering books they don't have is a pain. You literally have to judge a book by its cover, or at least the 5 minutes you spend perusing it. Finding books in the shelves is difficult. A lot of people seem to think that Amazon is winning on price alone, but it's because they're offering a better product.

So I don't know why people keep saying they'll miss bookstores. The atmosphere? Isn't that replicated by coffee shops?

<comment><USER9> It's actually hard to explain, the whole experience of going to the bookstore is valuable to me, looking at any page and feeling the book in my hands before buying it, having other books that don't really matter next to the ones I'm looking for is very interesting, it's a discovery thing.

<comment><USER10> Would you be willing to pay a few hundred dollars a month for that privilege? Their model is sustainable if they charge a heavy premium for the physical bookstore experience.

</comment></comment></comment></comment><comment><USER11> Read "How the Internet is Changing Economics." [http://asserttrue.blogspot.com/2012/01/how-internet-is- chang...](http://asserttrue.blogspot.com/2012/01/how-internet-is-changing- economics.html)

</comment><comment><USER12> The very reason why even I'll miss big bookstores is because of their nonchalance towards what they're selling. You can stay in the store for hours, look at anything, bring a book to the cafe or any number of seats in the corner and read, etc. I give tons of business to small booksellers but when I'm not looking for specialty subjects I like the non-atmosphere. And when Borders was around, their coupons made Amazon the best back-up. Over the years, both Borders and B&N selection has gotten worse and worse, but B&N @ Union Square currently has the best architecture section in the city (Rizzoli could be argued first, but its selection is at times over-curated and certainly saves no pennies).

</comment><comment><USER13> I have to wonder that if ebook prices continue to be inflated due to publisher meddling (which Apple is involved in, for whatever reason), will paper books continue to have an edge in terms of pricing for the next several years.

<comment><USER14> An even more interesting question is if e-book prices will start dropping sharply once the paper book business is almost gone?

<comment><USER13> I'm almost certain we're decades away before paper books start declining that badly.

</comment></comment></comment><comment><USER9> I'm assuming that getting rid of bookstores means getting rid of real books. I've tried digital books so many times, and I want to like them, it feels like a cool thing to organize all your stuff in one place, but I keep going back to real books, I would only use tablets to read if I had no other choice. For me, the digital pages get lost, I forget about them.

<comment><USER15> I also have ebooks. However, maybe it's because I grew up reading books, I can't imagine myself not reading a real one. There's this amazing feeling whenever I get a book, especially a used one.

</comment></comment><comment><USER16> Interesting. The Yuri Milner thread suggests that the Walmart in China will be 100% online. Based on this article's market values of $88 billion for Amazon versus $719 million for Barnes and Noble, I'd say he's right.

</comment><comment><USER17> Does anyone know how much of this industry crisis is based on a reliance of selling higher priced (and presumably higher margin) hard cover books?

<comment><USER18> Hard to imagine anything with a higher margin than digital. The marginal cost of selling an e-book is effectively zero.

</comment></comment><comment><USER19> Barnes & Noble have a website?

In my opinion publishers both of old media such as books and modern media such as tv and films need to disappear.

Then we can get a global distribution network going that no longer tells me "this content is not available in your area".

This concept of nationalised distribution rights is of no benefit to me as a consumer.

</comment><comment><USER20> Sad to say I will miss them for the ideal place to pick up women for dating..

</comment><comment><USER21> Retail store fronts don't have any problems that cannot be solved by better margins.

If the publishers valued the service offered by Barnes & Noble, the obvious solution is to grant lower prices to brick-and-mortar bookstores.

According to the article, the whole industry benefits from and depends upon customers being able to physically browse shelves of real books. Perhaps the whole industry should start subsidizing physical bookstores.

<comment><USER22> > Perhaps the whole industry should start subsidizing physical bookstores

My understanding was that this is how the printed book industry works already. Book stores are filled with books they didn't pay for -- the publishers are the ones covering nearly the entire inventory cost of the store! Only once a book is sold does the store pay the publisher the wholesale rate for that copy, while unsold copies are returned to the publisher to be shipped to a different store or destroyed.

What I've seen on publishers' websites are examples like a $12 wholesale cost for a $20 retail book. That's a 40% margin, on top of the publishers subsidizing the existence of the store by providing the inventory for free.

The reason your comment is being downvoted is probably because they can't "start" subsidizing margins when they already are.</comment></comment>


Show HN: TextBlob, Natural language processing made simple in Python - <AUTHOR> https://textblob.readthedocs.org/en/latest/

<comment><USER2> Yay #1: a nice wrapper around NLTK. NLTK is great but its API is not very Pythonic or comfortable. Pleasant facades over it are a great help for Python NLP.

Yay #2: an actually interesting programming-related article on HN. These get rarer every day, losing their place to gossips about what Snowden remarked following some or another NSA official's remarks about Snowden's even earlier remarks.

<comment><USER3> I'm conflicted on this comment.

On the one hand, I agree with your yay #2(and your yay#1, of course. TextBlob looks great). I think you're right. I have many venues to discuss NSA issues and few venues to discuss startup/programming stuff. I like having a venue that is typically devoted to such stuff.

On the other hand, I'm not sure that saying "this isn't about Snowden" on tech-related articles that don't involve Snowden is the solution. Why bring him into the conversation when we're talking about Python?

<comment><USER4> >> ... discuss startup/programming stuff. I like having a venue that is typically devoted to such stuff.

Did you look at [https://lobste.rs/](https://lobste.rs/) ?

I also feel programming stuff is depleting on HN, however I can relate to all the talk about Snowden on a forum like HN though.

<comment><USER3> As far as I know lobsters is invite only. From what I understand it's a forum I'd enjoy though.

I'd love an invite if you happen to have one. Contact info in my profile.

<comment><USER5> Sent you an invite!

</comment></comment></comment></comment></comment><comment><USER6> Just a quick word on Pattern[1].

TextBlob is probably just using the en module, I would suggest everyone take a look at the other modules in particular the web module should you be doing any light data scraping. It has nice wrappers around BeautifulSoup and Scrapy among others, jumping into BeautifulSoup and Scrapy can be daunting for beginners.

[1] [http://www.clips.ua.ac.be/pages/pattern](http://www.clips.ua.ac.be/pages/pattern)

</comment><comment><USER7> I've had good fun playing around with this, it's certainly made NLP more approachable.

One issue though is that it seems to choke with certain characters.

For instance the character £ it seems to complain with this error message:

>>> TextBlob("£") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/eterm/nlp/local/lib/python2.7/site- packages/text/blob.py", line 340, in __repr__ return unicode("{cls}('{text}')".format(cls=class_name, text=self.raw)) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 10: ordinal not in range(128)

<comment><USER8> Yeah, ditto. I created a new virtualenv with Python 3 and those problems disappeared. Previous to that I hacked around a bit and did the "from __future__ import unicode_literals" bit which alleviated the issue (but then ipython had problems with `repr(blob)`). I finally just gave up and ran `mkvirtualenv textblob --python=python3` (on Ubuntu 12.10).

<comment><USER7> Ah, I'm still using python 2 which might be causing me problems. For now I'll just try to work around it by hacking it out my source data.

(My source data is my own HN comments, it's funny doing sentiment analysis on them, seeing how objective or subjective it thinks my posts are as well as generally if I'm cheery or miserable.

(My end game is to produce an HN reader which only shows positive comments and news to reduce the amount of reading I do. ;))

It gets it mostly right, except the occasional hiccough, one of which is this following passage, which stood out as my most subjective post (1.0 on subjectivity!): "" Factorisation is unique, the addition of 3 primes is not.
e.g. 29 can be written 5 + 11 + 13 or 3 + 3 + 23
So even if it were a difficult operation to reverse addition of 3 numbers, it would be made easier by collisions. ""

I'm left stumped as to why nltk thinks this is not only subjective but a 1.0 completely subjective post!

<comment><USER8> Maybe you're just confusing the facts being stated ("even if it were a difficult operation to reverse addition of 3 numbers" implies it is easy, which is true as it's just an oblique restatement of the commutative property) with the language being used. "Difficult", "easier", "even if", etc.

I have no idea how sentiment analysis works though.

</comment></comment></comment></comment><comment><USER9> The NodeBox linguistics module is another nice wrapper around NLTK (and other natural language processing libraries). I used it for extracting actions and details from sentences, but it's also great for spelling correction, pluralization, part-of-speech tagging and other common NLP tasks.

[http://nodebox.net/code/index.php/Linguistics](http://nodebox.net/code/index.php/Linguistics)

<comment><USER10> This thing has been deprecated and continued again under the name Pattern. [http://www.clips.ua.ac.be/pages/pattern](http://www.clips.ua.ac.be/pages/pattern)

</comment></comment><comment><USER10> Both for my study and side job I work on NLP with python.

Sorry, but I think this thing is very much overrated by the HN crowd. There are many such libraries and this one adds exactly nothing. I also don't see how this is easier to use than, lets say, Pattern.

Try and add new functionality. One new functionality could be to use an ontology to calculate the distance between two words. Then you can do other cool things with that and place it in your module.

<comment><USER8> Higher levels of abstraction are less intimidating and easier to get started with.

<comment><USER11> And, sometimes, less of a hassle even when you are accustomed to the lower levels.

</comment></comment></comment><comment><USER3> This looks great! NLTK is incredible but definitely can be a bit intimidating. Very cool to have a wrapper around it.

I'm curious to see exactly how it works and so I'll certainly check out the source when I have a bit more time. Thanks for posting this.

</comment><comment><USER12> If you could add a blob.target and a default vectorizer, you could use scikits learn to offer some nice classification and regression. It's pretty easy to do that with what you have now, but some of those concepts are a little foreign if you haven't done text classification before, like me before yesterday. Particularly the part of speech tagging- using those as features could be powerful alongside n-grams.

</comment><comment><USER13> For the Google Translate functionality, does this pass the request through an intermediary service or direct to the API?

</comment><comment><USER8> So after poking around with this for a bit, I will say that it DEFINITELY is vulnerable to Python2's string handling warts. Constructing a `TextBlob` out of a string with non-ASCII characters doesn't seem to work. I created another virtualenv with Python 3 and it works quite well.

</comment><comment><USER14> I played with this a few days ago. It is a nice wrapper for NLTK. You probably want to, at some point, read the free NLTK book online.

Edit: and it also uses pattern.

</comment><comment><USER15> Can someone explain what this does in layman's terms? I'm a biz guy, not a coder, but I'm interested in the use cases. thanks

<comment><AUTHOR> This is an extension to the Python programming language that makes it easier to analyze and manipulate text.

For example, an analyst might use sentiment analysis to see whether Facebook posts about a product are "positive" or "negative" in tone.

As another example, I hacked together this online sentiment analyzer using TextBlob: [https://textfeel.herokuapp.com/](https://textfeel.herokuapp.com/)

See also: NLP (Wikipedia): [https://en.wikipedia.org/wiki/Natural_language_processing](https://en.wikipedia.org/wiki/Natural_language_processing) NLTK (a python library for NLP): [http://nltk.org/](http://nltk.org/) Twitter opinion mining using pattern: [http://www.clips.ua.ac.be/pages/pattern- examples-elections](http://www.clips.ua.ac.be/pages/pattern-examples- elections)

<comment><USER15> OK, so it's mostly to analyze text that's already been written? Can it also write natural language text based on data inputs?

<comment><USER16> This sounds interesting. Can you specify an example usecase (what would be the input data and how would generated natural language look like), and I will try to see if I can do it.

<comment><USER15> For example, financial data would be used as input to generate a daily stock market overview. Something along the lines of:

"Today, the Dow hit a high of 16,200, marking the first time it has crossed the 16,000 barrier. blah blah blah, etc"

Basically, use data points to create a market overview where readers wouldn't know that it was computer generated. That's one idea.

</comment></comment></comment></comment></comment><comment><USER17> This is awesome. I looked, but couldn't find out: is there a word sense disambiguation layer somewhere hidden in here?

</comment><comment><USER18> Curious as to what training algorithms you used for Sentiment Analysis? Also can I add my domain specific training set?

<comment><USER19> It uses Naive Bayes Analyzer from NLTK and PatternAnalyzer from Pattern [1]. But, I wouldn't prefer limiting the use to just one or two algorithms. My recent work involved sentiment analysis of data from US politics and I got significant differences in the results when I used different algorithms such as SVM.

[1] [https://textblob.readthedocs.org/en/latest/advanced_usage.ht...](https://textblob.readthedocs.org/en/latest/advanced_usage.html#sentiment- analyzers)

</comment></comment><comment><USER20> This looks great, thanks for sharing.

Any thoughts or relevant benchmarks you would like to share about its speed?

</comment><comment><USER21> Awesome! Thanks for posting. Are you the hacker that put it together?

</comment><comment><USER22> Seems to have an incredibly easy interface. Will test it. Well done!

</comment><comment><USER23> Thanks, I plan on using this.

</comment><comment><USER24> Awesome. I could use this.

</comment><comment><USER25> This looks great</comment>


Epic Games and Improbable: Working Together for Developers - <AUTHOR> https://www.unrealengine.com/en-US/blog/epic-games-and-improbable-working-together-for-developers <comment><AUTHOR> "To assist developers who are left in limbo by the new engine and service incompatibilities that were introduced today, Epic Games and Improbable are together establishing a US $25,000,000 combined fund to help developers transition to more open engines, services, and ecosystems. "</comment>