HN user

ubernostrum

12,994 karma
Posts15
Comments4,536
View on HN

Your key flaw, and HN's key flaw -- and to be fair, one shared by a lot of other people! -- is the pursuit of civility as an end in itself. Horrendously evil people can accomplish their goals while publicly conducting themselves with perfect civility, as history has taught us again and again. And HN's stance is that that's OK, because all that really matters is they're civil about it.

This isn't the first time you've been told this. It's not going to be the last time you'll be told this. And I know telling you this isn't going to change anything, but I have to try anyway. We know now beyond any doubt (and a legion of Cassandras were telling us long ago) just how easily social-media sites (and yes, HN is one) can turn into instruments and enablers of radicalization despite openly enforcing "civility".

You know what the solution is. You know, on some level, that civility isn't an end in itself; you know that the actual ends to which people use civility as a means matter. You know some of those ends are very, very bad. And you know how to recognize the people doing it. You also hold in your hand the power to do something about it.

Abandon the civility-at-any-cost policy. Stop being an enabler for the stuff I've been responding to in this thread. Take it from an "experienced user" who's had to learn this the hard way when moderating elsewhere. Or, in keeping with the season, treat this as a visitation by a spirit who warns you of the chain you're winding about yourself, link by link, and change it while you still can.

Generally an "undisputed champion" title would require a level of effort that the AlphaZero team apparently isn't interested in. They like to run matches between AlphaZero and Stockfish in private under their own controlled conditions, and publish the results. The rest of the computer chess world likes to run tournaments in full public view, and there are several entities which run tournaments between engines that way which can be used to gauge the relative strength of the engines.

What will be interesting is to see the effect on Leela (https://github.com/LeelaChessZero/lczero), which is public and open-source, takes part in public tournaments, and is built -- as much as possible, based on what's been disclosed in the papers -- to use the same approach as AlphaZero.

Let me be clear: I do not see it as an inherently bad thing if Nazis have to put in more effort than other people to find or build a platform on which they can spew their thoughts. I do not see it as the first step on a slippery slope to a "sanitized, P.C.-friendly" world. I do not accept the dilemma you pose, in which either we must allow Nazis to run around threatening mass murder or else nobody can say anything.

I think a world without Nazis in it would be a better world than the one we have, and I think the fact that several countries already have laws in place to restrict the speech of Nazis, and they haven't led to your dystopian outcome, is a strong empirical counterargument to what you suggest.

A simpler way to put this is just "anyone who does not agree with me should go to a reeducation camp, or to jail, or maybe die."

You accidentally mixed up your scripts -- you're in favor of the people who argue for rounding up their enemies into death camps, remember? You think those people are great, and need special support and protection. So if I were to argue for rounding you up and throwing you in a death camp, you would suddenly be on my side and offering every resource you have to help me further my glorious cause. Right?

Their "punishment" is that they have to build their own platform because the owners of other platforms are exercising their freedom of (dis)association. Nobody's made it illegal for them to build their own platform, and in fact the folks on the extreme right have been building and promoting their own platforms for years and years.

And let's be honest: we're not talking about people who are "being punished because of the horrible behavior done by other people years ago". We're talking about people who are being shunned in the present day precisely because they want to revive all those horrible things and start doing them again. They don't just want a platform where they can lob slurs at Jewish people all day long; they want to re-build the concentration camps and finish what Hitler started. They don't just want a platform where they can use the n-word at will; they want a return to at the very least Jim Crow and the lynching era, if not all the way back to full-on chattel slavery of dark-skinned people.

I'm OK with them being told "go build your own forum to talk about how much you want to do that". To be honest, I'd be OK with going beyond that and just rewriting the laws to European-style "no Nazism allowed anymore", so sadly sighing and talking about how disgusting I am for wanting a world without Nazis isn't exactly going to shame me into changing my mind, y'know?

I don't know for certain, but what I would guess is that strptime() without a day-of-week indicator is ambiguous.

strptime() produces a datetime object, which consists of year, month, day, hour, minute, second, microsecond, time zone, fold. If you do something like "2008-12" with format "%Y-%m", strptime() will fill in the remaining arguments with day=1 and all time components set to zero, so what you get is datetime(year=2018, month=12, day=1, hour=0, minute=0, second=0, microsecond=0).

That works because it's unambiguous -- there aren't multiple possible numbering schemes for the day of the month in the strptime() formatting options.

But there are multiple possible numbering schemes for the day of the week, which means a year + week with no day-of-week format code is ambiguous. Worse, the two options don't even share a start: one of them begins numbering at 0 (Sunday) and the other at 1 (Monday).

So I'd guess the insistence on a day-of-week format code is to force you to indicate which day-numbering scheme you want, in order to avoid the possible ambiguity.

(and you might think it's reasonable to assume if someone uses ISO year + ISO week number, they'd also want ISO day-of-week number, but we're talking about dates and times here, and "reasonable" left the building a long time ago)

It could just as easily be argued that, instead of "flipping", or swinging back and forth like a pendulum, the consistent trend of the past 400 years or so is toward increased tolerance of everything except intolerance.

There are people trying to reverse that trend, of course, but the volume at which they're currently screaming that they've been silenced is, I think, a pretty good indicator of the trouble they're having trying to pull it off.

Inventing your own pseudo-normalization of Unicode is a worse idea than using the actual normalization forms Unicode defines.

Also, if you think you can decompose without allocating memory... well, try a code point like U+FDFA.

For reference, its decomposition is:

U+0635 U+0644 U+0649 U+0020 U+0627 U+0644 U+0644 U+0647 U+0020 U+0639 U+0644 U+064A U+0647 U+0020 U+0648 U+0633 U+0644 U+0645

(and that doesn't begin to touch any of the potential issues with variant forms, homoglyph attacks, etc.)

I have a soapbox.

I like to stand up on it and yell out my views. Sometimes I let my friends use it that way, too.

Some guy comes along and would like to use my soapbox to yell out his views. But I don't like him and I don't agree with his views.

Would you like the government to come force me at gunpoint to let him use my soapbox?

What you're arguing, basically, is that once my soapbox gets popular enough that lots of people want to use it, you do want the government to force me, at gunpoint, to let them use it even when I find their views repugnant.

Or, basically, what this person said, and they said it better and in fewer words:

https://twitter.com/lessdismalsci/status/1076488300188307456

As the kids say these days: you accidentally said the quiet part out loud :)

When it was Margaret Sanger being prosecuted for distributing information about contraception, well, there's a perfectly reasonable justification for that law! Women can't just go around having sex without consequences! When it was theaters refusing to book touring companies of South Pacific, well, it's Communist to say that interracial marriage is OK! And we're at war with Communism! When it was movie studio associations and comic book publisher associations enforcing "codes" to avoid having formal censorship imposed on them by law, well, topics like sex and drugs are objectionable, and people shouldn't be encouraged to question authority figures!

The people complaining today about being "silenced" tend to hold the same types of views as their predecessors who used to do the silencing. And their predecessors didn't stop at just boycotting or otherwise exercising their right of free association (and disassociation). Even if it's not, in the end, held to be fair play, turnabout is a nice source of schadenfreude.

I'm always a bit surprised by people who want to bring up historical analogies without admitting that the US has a long history of censorship; if anything, the type of hard-line free-speech stance assumed by many internet forum posters is an incredibly recent development in American law. And both public (enforced by law) and private (enforced by industry associations or the like) censorship regimes continue to exist in the US today.

And just to clarify a bit: the specific restriction Python imposes is that if a strptime() format string contains one of %G (ISO year) or %V (ISO week number), it must also contain the other one, and must contain a day-of-week format code (%A, %a, %u, or %w).

Examples:

'%G/%m' is illegal; it contains %G without %V, and does not contain a weekday format code. Attempting to call strptime() with this format raises ValueError.

'%V/%u' is illegal; it contains a weekday format, but has %V without %G. Raises ValueError.

'%G/%V' is illegal; it contains both %G and %V, but does not contain a weekday format code. Raises ValueError.

'%G/%V/%u' is legal; it contains both %G and %V, and contains a weekday format code.

'%G/%V/%w' is legal; it contains %G and %V and a weekday format code. It's a bad idea, though, because %w numbers days 0-6 starting Sunday, while ISO (%u) numbers them 1-7 starting Monday.

If you need to work with ISO week date formats for some reason, you should stick to one of these two format strings:

'%G-W%V-%u'

or

%GW%V%u

The date of this comment (December 26, 2018) comes out as either '2018-W52-3' or '2018W523' using those format strings.

From the perspective of Unicode, no. What you're looking for here is what Unicode calls "equivalence", and it comes in two variations: canonical equivalence and compatibility equivalence.

For example, "é" can be written as either U+00E9 LATIN SMALL LETTER E WITH ACUTE, or as the sequence U+0065 LATIN SMALL LETTER E followed by U+0301 COMBINING ACUTE ACCENT. These two options have canonical equivalence; what this means is that Unicode treats them as two ways of specifying exactly the same thing.

Now, consider "½". That's U+00BD VULGAR FRACTION ONE HALF. Generally you can replace that with the sequence U+0031 DIGIT ONE, U+002F SOLIDUS, U+0032 DIGIT TWO ("1/2"). This is not quite the same thing; most places where someone writes "½" can safely be replaced by "1/2", but not necessarily all, and it definitely doesn't work in reverse. This is compatibility equivalence, and under compatibility equivalence "½" maps to "1/2".

So to get to your actual question: U+017F LATIN SMALL LETTER LONG S has compatibility equivalence with U+0073 LATIN SMALL LETTER S. But U+03C2 GREEK SMALL LETTER FINAL SIGMA does not have any type of equivalence with U+03C3 GREEK SMALL LETTER SIGMA.

If you follow the general recommendations for things like comparing Unicode identifiers, you'll apply normalization to form NFKC (which decomposes by canonical equivalence, then recomposes by compatibility equivalence); this will turn a "ſ" into a "s". It will never turn a "ς" into a "σ".

A lot of languages take their date/time formatting from C strftime (and quite a few simply use light wrappers around actual strftime), where the format code for ISO year is %G.

And FWIW, Python's (strftime-based) datetime library won't let you mix ISO and non-ISO format codes. Trying to use %G with %m, for example, raises an exception, as does trying to use %Y with %V (%V is the ISO week number format code).

Only if you churn -- signing up for a card, redeeming the signup bonus, then signing up for another, and so on.

And card issuers know about churning. The highest-value cards also have limits to how often you can churn. Chase's "5/24" rule (if you've opened 5 or more new credit cards in the past 24 months, anywhere, Chase will automatically decline you on any application for one of their cards) is one of the more well-known anti-churning tactics, but not the only one. You have to immerse yourself in the churning/manufactured spending world to really get much more than one or two free tickets from card signup bonuses.

On the other hand, if you already travel enough to reach at least mid-tier status with one airline, it's often worth it to do so; that's when you start getting into large RDM bonus territory. Combine with the airline's branded card and you can easily generate enough mileage to take a nice vacation every year.

As others have noted, this is not the same thing.

What the parent was talking about is usually called "same-day change" (abbreviated "SDC"), and is in fact only available free of charge to passengers who have a minimum status level within the frequent-flyer program.

Another related perk is the "guaranteed seat" -- the ability to purchase a ticket within 24 hours of the flight, and receive a guarantee that you will have a seat and will not be "bumped" due to overbooking (they'll bump someone else off the flight instead, if it comes to that). Which tends to kick in at the higher status tiers; back in my days of flying too much, I only used that perk once, and the last-minute ticket was expensive, but it was worth it to know I would get where I was going.

The value of loyalty programs, for the customer, tends to inversely correlate to the state of the economy.

In very broad terms: tourism is a larger part of the travel market than business travel. When the economy is bad, fewer people travel for pleasure, and those who do don't fly as much. So loyalty programs ramp up the rewards for the people who are still flying, in order to hang onto them. Then when the economy recovers and tourism picks up again, there's less need to desperately keep customers by any means available, so loyalty programs start getting slashed.

On top of that, at all times the big US airlines tend to hand out redeemable-only miles like candy (elite-qualifying miles are the ones that are hard to accumulate¹), which makes them a heavily inflationary currency and requires jacking up the redemption rates every so often to soften the blow of all those outstanding miles.

--

¹ Airlines in the US issue two types of miles. Redeemable miles, usually abbreviated "RDM" in the frequent-flyer forums, do what the name implies: you can redeem them instead of using cash to purchase a ticket. They offer no other perks. The other type is the "elite-qualifying mile" ("EQM"), which can be redeemed for a ticket but also contributes toward qualifying for some level of "elite" frequent-flyer status with the airline. Elite status is what gets you free upgrades and free checked bags and all the other perks.

Elite-qualifying miles, with very few exceptions, can only be earned by actually purchasing a ticket, getting on the plane and flying (sometimes this process is also referred to as "BIS" -- "Butt-In-Seat" -- miles). All the "50,000 miles for signing up!" type offers you see with credit cards are denominated in redeemable miles, for example. If you know your way around the loyalty programs, you can generate hundreds of thousands of redeemable miles per year without too much effort. Achieving 100k elite-qualifying miles in a year, however, is a significant feat and typically qualifies you to the highest public status tier (the big three US airlines each have at least one unpublished tier above that, offered by invitation only to customers perceived as extremely high-value).

If people who have issue with military are given someone else to do, you can't simultaneously claim they have to be willing to die.

Without committing to any position on the book itself (it's certainly an interesting Rorschach test), it is at least clearly stated that there are more than enough dangerous jobs available for non-combatant service to still involve risk of death. In the book this is presented as a mathematical balancing: power over the lives of others is granted only after demonstrating willingness to risk your life for others. You can find plenty of fault with that principle, but the book is at least pretty consistent on requiring it.

On the other hand, there is no substantive content in metaphysics (at least as far as ontology goes) if the statements do not pick out real entities.

You've just committed the fallacy of begging the question -- you assumed the truth of mathematical realism in this line, and arguably in a couple others.

If mathematical realism is false, various parts of your argument start to crumble.

The general idea you're missing here is that it's very hard -- perhaps impossible -- to develop a clear, bright-line method for distinguishing between fields that deal with concepts we can't empirically test, in such a way that it will put mathematics into the "good, useful, keep doing it" side and metaphysics into the "bad, silly, stop doing it" side.

And in fact mathematics is a great place to dive in, because one very important question -- namely, whether mathematical realism is true¹ -- is really a metaphysical question, and one which can never be answered by empirical observations about the world.

I'd also caution against too much scorn on philosophers going "beyond the reaches of their knowledge base"; historically, philosophy's successes have spun off into entire fields whose origins we now like to forget or at least overlook.

(and, well, I've had a successful career in programming, and also hold a degree in philosophy, and I think the basic observation that lots of people do metaphysics who we don't normally think of as doing metaphysics is a sound one, regardless of how you feel about the paper's specific examples)

---

¹"Mathematical realism" asserts that truths of mathematics are necessary and discovered, rather than contingent and created, and thus have some sort of existence independently of human minds and human culture. The exact sense in which these mathematical truth-entities would exist is, of course, a metaphysical question, as is the question of what mathematics really is, if mathematical realism is false.

So, write the program correctly. Show me.

You just want to fight someone because you're angry, and I don't do that. No matter what someone writes you'll find a way to argue into it being wrong and then prance around declaring "victory".

(I'd also bet that you probably couldn't do it if I were the one who got to set the evaluation criteria, and you also couldn't pass other "challenges" like writing proper HTTP handling -- the person who gets to grade the challenge always "wins", which is why you want to be the person who grades the challenge)

PEP 383 turned the Python 3 str type into a bag of bytes

PEP 383 provided a way to read certain things -- primarily filesystem paths which can be basically anything -- using an escape mechanism to replace non-decodable bytes with surrogates when decoding to string, which in turn allow losslessly transforming back to the original bag of bytes.

Which is necessary, because there are real filesystems out there that really have paths and names that can never validly decode from any known text encoding. It doesn't turn strings into "bags of bytes"; the resulting str still is an iterable of actual valid Unicode code points.

Python tries to sweep encodings under the rug.

As the saying goes, you can't reason someone out of a position they didn't reason their way into, so I won't try here.

Python 3 encourages developers to write broken string handling code.

Python 3 no longer tries to cover for the random gibberish that's legal to put in filesystem paths, and makes the developer handle it. Are there lots of developers out there who don't realize that filesystem paths can legally contain undecodable garbage? Sure. That's not Python's problem to solve, though; it gives you the surrogateescape handler, and the fsencode helper, and keeps working on things like PEP 538 and PEP 540 to try to give you tools to work around it. But Python can't magically fix the mess that is UNIX locales and bag-of-bytes paths (nothing can, short of burning UNIX down and starting over), and doesn't try to do it for you.

I referenced people who've tried this before and were made to shut down or change tactics before it escalated to a court ruling.

You also keep citing copyright cases. You cited a case where the multi-factor test of fair use was met, without explaining why you think Brave would meet that test.

You have not yet provided evidence of a case ruling that all trademarks are "public domain" free for the "fair use" of anyone for any purpose, and therefore that trademarks provide no protection whatsoever. I await your attempt to do so.

The way I usually put it is that Python 3 shifted its priorities.

Previously, if you were a UNIX-y scripter writing UNIX-y scripts on your UNIX-y OS, the fact that Python just kind of pretended encoding issues would never exist was a help to you. It adopted the same "everything is ASCII, or at most UTF-8 in the ASCII range, and if it isn't I'll break in cryptic ways" approach as most other UNIX-y scripting things.

If you were doing anything other than UNIX-y scripting on your UNIX-y OS, this easily became a huge nightmare in Python 2. Django went through a massive rewrite early in its history precisely because of this, to ensure that encoding/decoding happened at the boundaries and everything you'd work with inside a Django app was already a Unicode string. And I remember what it was like trying to work on the web before that approach, and what the work to fix it was like.

Python 3 decided to make the UNIX-y scripters actually learn what a horrid mess UNIX is with respect to locales and encodings and filesystem paths, in order to free the rest of the Python community from the nightmares inflicted by prioritizing the UNIX-y scripters to the exclusion of everyone else. So yes, you have to do more work. Yes, you have to learn that a file path is actually an opaque bag of bytes that may not be in any actual encoding and thus can never properly decode to a string. Yes, you have to learn to use fsencode() and the surrogateescape handler in order not to blow up your scripts.

But I'm OK with that, because it puts the workload on you when you're using such a system, rather than magically trying to fix it for you at the cost of everyone else's sanity. It also means that you have to learn to write those scripts correctly. Which is more work than what Python 2 required, but not the world-ending apocalyptic horror it's usually presented as (and is, again, mostly the fault of UNIX-y systems doing their old UNIX-y things, not the fault of Python).

The courts have ruled many times using content that is in the public domain is fair use, you have no claim to trademark protection

If you take all your legal advice from people who repost whole movies onto youtube and put "no copyright intended" in the description as if it's a magic talisman, maybe.

But in the actual world, if you use someone else's trademark to make money, you're gonna have a bad time, and part of that bad time will be learning in excruciating detail what "public domain" and "fair use" actually mean.

"Something is viewable by the public on the internet" is not "public domain". Public domain means copyright has expired on the material, or that the material was for some reason never protected by copyright (such as certain works of the federal government, in the US). "Fair use" is a defense that can be raised to claims of copyright infringement, and uses a multi-factor test. None of the factors are "but it was there on the internet for me to take".

Neither of these involve trademarks, which are a different area entirely. Using someone else's trademark for your profit is very much not "public domain" and not "fair use", and will not end well.

Like I said elsewhere: these kinds of schemes don't really "work". The best that happens is you get away with it for a while until you accidentally do it to someone with resources.

Are you carefully vetting every single entity whose content you show this pop-up on (regardless of what description you choose to use to spin what it is) to make sure none of them have trademarks that could be enforced against you? Because if any of them do, game over. You can hem and haw and deflect and pretend to be helping creators as much as you like, but you don't have the legal right to appropriate someone else's mark to raise money.

And if you are vetting to make sure you don't pop up on anyone who has a trademark, what if that comes out in discovery when someone goes after you, and suddenly you get to answer questions about whether Brave knew that what they were doing might not be legal (as evidenced by the care they took around trademarks), did it anyway, and now it's really over.

And like I said elsewhere: when the shit hits the fan, what's your personal plan for Brave deciding that all your "helpful" comments here weren't authorized and were in fact misrepresenting them, which led to the terrible misunderstandings that provoked the legal action?

I'm trying my best to help you see the ways this can go badly. I'm also very sincere in my advice of "lawyer up". I'm not your attorney and this isn't legal advice, but I think you should have both an attorney and legal advice.

The folks who've run this scheme in the past were mostly small-time, and the worst that happened was they were forced to stop or retool because they weren't worth the effort of going after properly. Brave has attracted enough attention and money to be a lucrative target for someone to eventually turn into a smoking hole in the ground. Please, for your sake, fix this or get out of it ASAP.

Google doesn't pop up a thing asking me to donate to Tom Scott's fundraising campaign.

Brave apparently does (based on screenshots shared by others; in order to preserve my right to legal action in the future I'm very carefully never going to personally do anything that would require accepting Brave's ToS).

See my other comments in this thread for why A) that's a bad thing and B) if you work at Brave you should quit and hire a lawyer.

It's not like the browser is setting up a crowd funding page for you.

That is precisely what the browser is doing.

This can have harmful consequences for the people they do it to. If someone's on a means-tested disability benefit, for example, and makes youtube videos to blow off steam, what happens when the benefits agency discovers that they have a funding option through Brave? A funding option that they didn't know about, didn't ask for, and didn't get paid out of (because the tokens get quickly flushed into the "growth pool" when uncollected)? Is Brave ready to be responsible for them losing their support mechanism?

If they start collecting on behalf of an open-source project that already has a nonprofit foundation for fundraising, what happens when a tax audit turns up this undisclosed funding stream that the project didn't know about and didn't ask for? Oops, there goes your nonprofit status! Is Brave ready to be responsible for that?

About every six months someone comes up with this "brilliant" "new" idea to crypto-fundraise on behalf of other people without telling them. And we have the same thread where people point out the same problems. And then like clockwork someone does it again. My hope is that one of these times, the people behind it get so utterly and completely financially ruined that it finally puts an end to the cycle. Maybe Brave will be the one to finally face that.

There is a non-zero chance that a company in legal trouble will suddenly decide an employee wasn't authorized to speak on their behalf and so clearly misrepresent their perfectly legal and honest intentions, and throw that employee under a bus.

Best thing to avoid that, as I said in another comment, is to quit and get a lawyer.

How about instead you shut this off and rebuild it to be explicitly opt-in only?

Or, better for you personally: how about you hand in your resignation and retain an attorney?

Here's the thing: people who get away with this type of thing (sorry, "exciting and new crowdfunding option for creators", or whatever y'all prefer to call it) tend to get away with it only for as long as the targets of their "fundraising" are small-time creators who don't have the resources to pursue action against it. But sooner or later, even if only by accident, Brave's going to impersonate (sorry, "offer exciting crowdfunding options on behalf of") some entity that has resources, including lawyers, and it's going to end badly.

When that happens, a possible outcome is that they will suddenly "discover" all your statements on their behalf in this thread, and that's when it will end badly for you. Oh, that wasn't our position at all, oh, he wasn't authorized to speak like that on our behalf, oh, that's definitely not what we intended, we'll take action immediately to remedy that! The absolute best outcome of that for you is you get fired for cause. The worst outcomes involve you becoming the target of multiple legal actions.

I'm not an attorney and I'm not giving you legal advice. I will give you sincere personal advice: resign, hire an attorney. Find another job working somewhere that poses less of a threat to you.

As to why people will come after you, let me count the ways:

I know people who blog or create YouTube videos or whatever and are very careful not to monetize, because they're disabled and can't work but still need something to fill their days. But disability benefits are means-tested and income streams are constantly investigated. If a benefits agency decides that your scheme is providing income to a disabled person, congratulations! You just cut off their income, and they probably never even knew you existed. That's bad.

I have worked with several open-source projects that rely heavily on donations to keep going. They all have prominent things on their websites directing people where to go to donate, but you'd like to hijack that and instead send people to something the project doesn't know about and may not be able to collect on (especially given how often you flush the "donations" and how many hoops it seems people have to jump through, which many commenters have identified as something that makes them think this is a scam). Congratulations, you just took resources away from the project. And, for projects which use nonprofit foundations to manage fundraising, you just created tax issues -- what happens when the taxman doesn't believe the "we didn't know about them raising money for us" story?

And round and round and round we go. You're going to be hurting those people to make money. If you have a moral compass, it should be pointing heavily toward getting the hell out of there, as soon as you can.

Plus, crypto in general is in weird legal space to begin with. Lots of people can't afford to have you dealing in potentially unregistered securities in their names and without their knowledge or consent. In the US that could easily lead to federal felonies for them, because of what you did.

So, look. I've seen this pattern again and again and again. What Brave is doing is not a new idea. It's widely, roundly, solidly despised, both because it's an unwarranted intrusion on other people and because it creates such nebulous but frightening potential consequences for them. I've also been waiting for one of these crypto "fundraising" operations to finally go far enough that someone (either an entity with good lawyers, or a regulator) bothers to turn them into a smoking hole in the ground as an example to others. Maybe that's the ultimate fate of Brave; if it is, I won't shed any tears.