Catch up on stories from the past week (and beyond) at the Slashdot story archive


Forgot your password?
Trust the World's Fastest VPN with Your Internet Security & Freedom - A Lifetime Subscription of PureVPN at 88% off. Also, Slashdot's Facebook page has a chat bot now. Message it for stories and more. ×

Comment Re:Theoretically (Score 2) 171

I hope you don't count "You can't dump toxic sludge from your factory into the local river" as "ridiculous."

The enforcement of property rights is not regulation. You have every right to use your own property as you please, but others have exactly the same right—implying that you do not have the right to use their property without their permission. If you dispose of your pollutants in such a way that they end up harming others' property, including but not limited to their bodies, then you have infringed on their property rights and owe the victims redress. This is not some arbitrary regulation regarding how you may use your own property, but rather the natural consequence of others' rights to determine the use of their property.

As a term of art in political discussions, the term "regulation" refers to a restriction above and beyond simply respecting the property rights of others. Some regulations are indeed "ridiculous", but most are simply wrong, a product of politicians making a nuisance of themselves in situations where they have no standing to interfere.

Comment Re:I don't mean to go all 'Papierin, mein herr,' b (Score 2) 626

The Fourth Amendment bans only "unreasonable searches and seizures". The exception considers searches at the border to be "reasonable".

That's only half of the story. The 4th Amendment also says that no warrants shall be issued (in plain language: no permission shall be granted to perform a search or seizure) "but upon probable cause, supported by Oath or affirmation, and particularly describing the place to be searched, and the persons or things to be seized." The so-called "Border Search Exception" manufactured by the courts out of thin air is an unconstitutional warrant. There is no probable cause, no supporting Oath or affirmation, and no particular description of the place to be searched or the person or things to be seized. Ergo, there is no constitutional authority to issue a warrant, which would be the only legal basis to perform any search or to seize any property.

Probable cause—or in other words a reasonable, and evidence-based, expectation that a particular search will turn up evidence of illegal activity sufficient to retroactively justify the search—is the only thing that makes a search "reasonable". If the majority of these searches do not uncover evidence of illegal activity then there is no probable cause and they are de facto unreasonable.

Comment Re:What about... (Score 1) 186

Well, it isn't 'nothing.' It costs money to develop ideas and art.

And they're welcome to charge for the development and initial publication of those ideas and works of art. The part that costs "nothing" is making and distributing copies—and yet that's what they charge for now. You're not paying for an idea or work of art to be developed, you're paying for permission to make a copy of an idea or artwork which already exists. (Or you're paying someone else to make the copy for you, since they won't grant you permission to do it yourself.) What you are paying for comes at zero cost to the patent or copyright holder. If you made said copy without their permission they would not be harmed in any way—in terms of cost to the patent or copyright holder, infringement has exactly the same effect as if you never became aware of the work in the first place. Either way, they neither gain nor lose anything as a result of your actions. It is absurd to punish someone for infringement when simply ignoring the work causes exactly as much harm to the patent or copyright holder and yet goes unpunished.

Comment Re:Does not need to track parent, not 500 instance (Score 1) 600

Using the iterative algorithm I posted above, I think you can see that we do NOT track any data whatsoever about how we got to the current URL. All of the information about past pages, which would be on the stack in a recursive algorithm, do not exist in my program. So in fact it does *not* "track the same data"...

You're comparing apples and oranges. The iterative version of your program is not using the same algorithm as the recursive version. You replaced a depth-first search with a breadth-first search, which makes your example completely irrelevant for comparing iterative vs. recursive implementations of the same algorithm. Among other things, the order in which your web crawler visits pages is very different in the iterative version. To maintain the original order you would need to restore the depth-first search algorithm, which would imply tracking the chain of pages you came from—exactly like the recursive implementation, though you could store that information on the heap or in a database rather than on the stack. (Note that a tail-recursive implementation would also store that information on the heap or in a database... this isn't a matter of recursion vs. iteration.)

You are certainly correct that you *can* simulate iteration by using recursion.

The tail-recursive implementation is not "simulating" iteration. It is iteration. Expressing the same algorithm with a loop construct rather than an explicit function call would not make it any less recursive; the loop implies a built-in fixpoint operator. If this trivial difference of style makes any difference in how much stack space your function uses, that's a bug in your toolchain.

The key point, to me, is that at least what I mean by "recursive" is that there is a parent and a child. The parent doesn't return/exit until its child does - and its child, and its child, and its child, and its child ...

That is not what "recursion" means. Moreover, how would that definition even account for something like tail-recursion, where the "parent" is replaced by the "child"? Logically, the "parent" still does not exit until the "child" does, but in the meantime it occupies no space on the stack and the return from the innermost "child" is also the return from all of the "parents". No matter how deep the tail-calls become, the stack use remains constant. Recursion only requires additional stack space when there is more for the function to do after the call, i.e. when it is not tail-recursion. Such cases cannot be converted to iteration (using the same algorithm) without shifting all the data required by the continuation from the function-call stack into some other data structure.

Comment Re:Go! Government! Go! (Score 1) 267

You' started talking about an apartment building, and in those places the residents are not the owners, and have only very restricted property rights.

In at least some of the cases in question it was the owner of the apartment building, not a renter, who was fined for using AirBnB. A renter's right to sublet, and more generally to allow others access to the apartment, is, of course, subject to the terms of their contract with the owner of the apartment building.

Zoning laws are not designed to prevent imminent threats of irreversible harm.

Yes, which is one of the many things wrong with zoning laws. Zoning laws in general are no more justifiable than the more specific restrictions on using AirBnB. However, that is a topic for another day.

Comment Re:Device contains ID cookies (Score 1) 651

The CFAA doesn't ban bona fide government investigations.

Right, but is this an bona fide investigation? IIRC that exception applies to law-enforcement agencies, whereas this is about the organization responsible for approving visas. They're not investigating any crime; it's more like a background check.

Either way, there's still the TOS issue. The applicant is not legally compelled to turn over the password; they can refuse (and allow their visa application to be denied). Ergo, if they do submit the password they are violating the TOS of their own free will, which can result in their account being terminated and perhaps other penalties.

Comment Re:Do *not* spider web with recursive function cal (Score 1) 600

Care to point to which step "is defined in terms of the process itself"? I don't see that anywhere.

It's part of the compiler's internal definition of the loop construct, and does not appear in the source code. In the object code it can be identified as the opcode that branches back to the beginning of the loop.

This becomes more obvious if you consider programming languages where iteration is not a built-in construct, and loops are written in terms of explicit recursion. In Haskell, for example, a simplified C "while" keyword (disregarding "break", "continue", etc.) could be implemented as the following recursive function:

while :: Monad m => m Bool -> m () -> m ()
while cond body = cond >>= \c -> when c (body >> while cond body)

Or using the fixpoint operator, without referencing the current definition by name:

while cond body = fix (\loop -> cond >>= \c -> when c (body >> loop))

Building on the fixpoint example above, would you call this a recursive function?

void f(void (*g)(), int c) {
if (c < 10) g(g, c + 1);

Sometimes it isn't so simple. The body of f() does not refer to f(). However, what happens if you call f(f, 0)? The function might be recursive, or it might not be, depending on the arguments. It all depends on that function pointer.

Arguments might be avoided by saying it's not a recursive FUNCTION - no function calls itself, can't run out of stack space.

It's not a recursive function, since it's not the entire function that's repeated. It would be more accurate to say that it contains a recursive function, though that inner function is hidden behind the loop construct. Barring the use of alloca() or similar it won't run out of space on the function-call stack, since alloca() / variable-length arrays and function calls are the only ways to allocate from the function-call stack, but the iterative version of the function still needs to track the same data and can still run out of memory given large enough inputs—just not stack memory. Sometimes that distinction is important, but more often it isn't, especially given the stack sizes available to programs running on most virtual memory based operating systems, ranging from several megabytes to "malloc() would fail first". (After all, some languages allocate stack frames from the heap.)

Anyway, the fact that (unoptimized) tail calls use stack space while iteration constructs ordinarily do not is nothing but an artifact of poor compiler implementation, and easily corrected through tail-call optimization. It's really no different from the way some languages with simplistic garbage-collection algorithms (e.g. Perl) fail to collect sets of objects with cyclic references. You can either take pains to avoid cyclic references (tail recursion), or just switch to one of the many modern languages which don't cause arbitrary runtime errors when you write code in the most natural style. Given a reasonable guarantee of tail-call optimization, function calls in general may allocate additional function-call stack space, but a call in tail position won't, so tail recursion is exactly the same as iteration in terms of expected stack use.

Comment Re:Go! Government! Go! (Score 2) 267

When there's such a pattern of behavior of disruption coming from apartments being rented out, isn't it okay to ban the underlying bad behavior?

No, that sort of prior restraint requires serious justification—"imminent threat of irreversible harm". The handful of minor disruptions which have actually occurred are nowhere near that level of threat; very few things are, short of direct physical attacks. While it would certainly be a simpler solution, prior restraint violates the property rights of those who rent out their apartments to considerate guests who do not cause such disruptions, while also causing harm to the guests themselves in the form of fewer choices of accommodation and correspondingly higher prices.

Comment Re: Scare Quotes (Score 2) 267

The Constitution says nothing about depriving one of property rights; only property.

A distinction without a difference. Property rights are property, and vice-versa. Any time your property rights are infringed you have been deprived of your property to at least some degree. To argue otherwise admits the absurd legal fiction that the property technically still belongs to you, you just don't have any actual right to use it—the property rights belong to someone else. When people talk about being deprived of their property, it's not mere physical possession that they're referring to but rather their legal rights relating to the property.

Comment Re:Go! Government! Go! (Score 3, Insightful) 267

No, not with fines for renting out the apartment. Fines for disturbing the peace. The problem isn't the rental, which is no one's business but the property owner's. The problem is holding the property owner accountable for the use of the property, including use by guests. You want to rent out your apartment on AirBnB? No problem—but you are responsible to your neighbours for your guests' behavior during their stay. So you'd better make sure they're well-behaved and considerate before letting them stay at your apartment.

Comment Re:Device contains ID cookies (Score 1) 651

The persistent identification cookie on the laptop, tablet computer, or smartphone that a traveler carries allows access.

Legally speaking, it only allows access for the account owner. Barring a special exception to the Computer Fraud and Abuse Act, anyone else using that cookie (or the login & password, whether provided voluntarily in violation of the TOS or under duress) without the service provider's permission is committing a felony by hacking into the service provider's systems without authorization. The account owner may be at the border, but the account owner cannot legally delegate permission to access the account to a third party and the system being accessed is not located at the border.

The only legal option consistent with both the TOS you agreed to and CFAA is to refuse to turn over the passwords—even knowing that this means the visa request will be denied.

Comment Re:Do *not* spider web with recursive function cal (Score 1) 600

Some people would point out this solves a recursive and say it's therefore a recursive algorithm. The algorithm isn't recursive by definition because no function calls itself, even indirectly.

The algorithm is still recursive; the recursion is just built in to the language in the form of predefined iteration constructs like "foreach" and "while". Any time you have an iterative program of the form "first do X, and then repeat the process for the remaining input", that's recursion: one of the steps in the process (the repetition) is defined in terms of the process itself.

Some recursive algorithms can run in constant space, while others (such as most operations on trees) inherently require more space to process larger inputs—even when implemented "iteratively". The space used does not depend on whether the recursion is implemented with explicit function calls or loops, but rather on the quality of the compiler, including, but not limited to, tail-call optimization. Far from being complex wizardry, this optimization is really just the correction of a common implementation flaw wherein a function's stack frame remains allocated until the function returns, rather than being freed once it is no longer needed. This simplifies the compiler slightly at the cost of forcing the programmer to distinguish between implicit and explicit recursion, thus impairing the readability of naturally recursive algorithms and sparking endless debates over what ought to be a trivial difference of coding style with no runtime effect.

Comment Re:I agree - AI's strength is with details (Score 2) 110

You don't like interacting with companies that try to understand you? You'd rather receive the same generic product offers as everyone else?

I just don't believe this. I believe that the more a company tries to make their communication relevant for each customer, the more value the customer gets from the company.

Yes, I would prefer to receive the same generic product offers as everyone else—the less relevant the better. That way, I am less likely to be subtly influenced against my will and contrary to my own interests. I'd prefer to avoid these ads entirely, but to the extent that is impossible, by all means, fill the ubiquitous ad spots with products I will never buy and services I will never require.

It's a different matter when I'm in "shopping mode" searching for a specific product. In that case relevance is a virtue—relevance to the explicit search parameters, that is, not passive tracking data.

If say Walmart sends you an offer that your personal assistant believes won't interest you then it will not show it to you.

That's great so long as I can be certain that the AI assistant is working for me, and not Walmart or any other advertiser. Key test: Can I make it send all "offers" to the trash, or will it insist on letting some through? Assuming I do permit some offers, will it select the ones which serve my best interests—which I will not regret buying later—or will it select the ones most likely to maximize profits for someone else?

Comment Re:With one exception (Score 1) 292

As profitable as these insurance companies are, I have a feeling they would be just fine with a simple law that says "pre-existing conditions are not allowed as reasons for denying health insurance coverage." They'll bitch about it, but they'll cope with it and survive.

It's a bit hard to survive as a company when every single customer you have costs you more in covered medical expenses than they pay in premiums. That is the result you can expect from requiring insurance companies to cover pre-existing conditions without also requiring individuals to carry insurance.

This is an entirely different class of threat from the other regulations you referred to, which still left room for incumbents in the regulated industries to earn a profit while raising barriers to entry and inhibiting competition.

Comment Re:With one exception (Score 1) 292

I'm not saying there wasn't good stuff in the law - the ban on pre-existing conditions and the extension of dependent insurance is awesome. I just don't understand why those couldn't have been passed as simple laws without all the other shit that nobody likes.

The ban on discrimination against pre-existing conditions is arguably the worst part of the law, and definitely the part that necessitated all the parts no one likes. You can't require insurance companies to cover pre-existing conditions without forcing everyone to buy insurance unless your intention is to bankrupt the entire insurance industry. Given the choice to delay buying insurance, if the agency must cover pre-existing conditions then the sane thing to do is to wait until you actually have a medical expense, and only then buy the insurance. Of course, at that point it isn't really "insurance" at all, because the "risk" is 100%, but the company is required to offer you coverage with the same premiums as if the risk were not already realized, which is a great deal for you.

Insurance is about mitigating unrealized future risks. Pre-existing conditions don't have any place here. If you have a pre-existing condition you can't pay for yourself, what you need is not insurance, but charity. Insurance companies make poor charitable organizations.

The flip side of this is that an insurance policy should cover the full lifetime cost of anything discovered while the policy was in effect—even if you later drop your coverage or switch to another insurance provider. The primary drive for coverage of P.E.C.s stems from the fact that current insurance policies cease to pay out the moment you are no longer a customer; the P.E.C. coverage mandate unreasonably shifts the burden from the insurer that voluntarily chose to take on the risk on equitable terms in exchange for a premium to a separate victim agency which knows up front that the premiums you will pay will never cover the expected cost of your treatment.

Slashdot Top Deals

C'est magnifique, mais ce n'est pas l'Informatique. -- Bosquet [on seeing the IBM 4341]