2224 stories
·
14 followers

‘But the Plans Were on Display…’

1 Comment

From Douglas Adams’s Hitchhiker’s Guide to the Galaxy:

“But the plans were on display…”

“On display? I eventually had to go down to the cellar to find them.”

“That’s the display department.”

“With a flashlight.”

“Ah, well, the lights had probably gone.”

“So had the stairs.”

“But look, you found the notice, didn’t you?”

“Yes,” said Arthur, “yes I did. It was on display in the bottom of a locked filing cabinet stuck in a disused lavatory with a sign on the door saying ‘Beware of the Leopard’.”

DF reader Brian Ashe sent this, correctly pointing out that it pretty much nails Google’s approach to turning off location tracking.

Read the whole story
jimwise
23 hours ago
reply
lol
Share this story
Delete

AP: Google Tracks Your Location Even When You Disable ‘Location HIstory’

1 Comment

Ryan Nakashima, reporting for the Associated Press:

Storing your minute-by-minute travels carries privacy risks and has been used by police to determine the location of suspects — such as a warrant that police in Raleigh, North Carolina, served on Google last year to find devices near a murder scene. So the company will let you “pause” a setting called Location History.

Google says that will prevent the company from remembering where you’ve been. Google’s support page on the subject states: “You can turn off Location History at any time. With Location History off, the places you go are no longer stored.”

That isn’t true. Even with Location History paused, some Google apps automatically store time-stamped location data without asking.

The saga of Apple Maps’s launch is long and complicated, but Google’s desire to track our location was at the heart of it. Apple wanted new features like turn-by-turn directions and vector graphic map tiles; in exchange, Google wanted iOS to allow Google to track user location more pervasively.

“If you’re going to allow users to turn off something called ‘Location History,’ then all the places where you maintain location history should be turned off,” Mayer said. “That seems like a pretty straightforward position to have.”

Google says it is being perfectly clear. […]

To stop Google from saving these location markers, the company says, users can turn off another setting, one that does not specifically reference location information. Called “Web and App Activity” and enabled by default, that setting stores a variety of information from Google apps and websites to your Google account.

Google is saying, with a straight face, that it’s perfectly clear that disabling the feature named “Location History” does not prevent Google from tracking your location history. There’s nothing surprising about this, but that doesn’t mean it isn’t shameful.

Read the whole story
jimwise
1 day ago
reply
...
Share this story
Delete

Dark Rock of Mothrir Unsealed: JavaScript has integers now.

jwz
1 Comment and 3 Shares
@BrendanEich:

8 years later, https://github.com/tc39/proposal-bigint#state-of-the-proposal

"BigInt has been shipped in Chrome and is underway in Node, Firefox, and Safari."

BigInt: Arbitrary precision integers in JavaScript:

BigInt is a new primitive that provides a way to represent whole numbers larger than 253, which is the largest number Javascript can reliably represent with the Number primitive.

But the tragic historical fact that until now, all Javascript numbers were floats means that it's impossible to implement this backward-compatibly without significant syntactic warts:

Many (all?) other dynamically typed programming languages which have multiple numeric types implement a numeric tower. This forms an ordering between types -- on the built-in numeric types, when an operator is used with operands from two types, the greater type is chosen as the domain, and the "less general" operand is cast to the "more general" type. Unfortunately, as the previous example shows, there is no "more general" type between arbitrary integers and double-precision floats. The typical resolution, then, is to take floats as the "more general" type.

Silently losing precision sometimes may be a problem, but in most dynamically typed programming languages which provide integers and floats, integers are written like 1 and floats are written like 1.0. It's possible to scan code for operations which may introduce floating point precision by looking for a decimal point. JavaScript exacerbates the scope of losing precision by making the unfortunate decision that a simple literal like 1 is a float. So, if mixed-precision were allowed, an innocent calculation such as 2n ** 53n + 1 would produce the float 2 ** 53 -- defeating the core functionality of this feature.

To avoid this problem, this proposal bans implicit coercions between Numbers and BigInts, including operations which are mixed type. 1n + 1 throws a TypeError. So does passing 1n as an argument into any JavaScript standard library function or Web API which expects a Number. Instead, to convert between types, an explicit call to Number() or BigInt() needs to be made to decide which domain to operate in. 0 === 0n returns false.

That's all well and good, but obviously the burning questions that I want the answers to are, "What is MOST-POSITIVE-BIGNUM, and how long does it take the Javascript console to print it?"

I wasn't able to figure out which of the several BigInt Javascript packages out there most closely resemble this spec, nor was I able to figure out which of them is the one being used by Chrome. But I assume that they are all representing the bits of the BigInt inside an array (whose cells are either uint32 or IEEE-754 floats) which means that the gating factor is the range of the integer representing the length of an array (which by ECMA is 2^32-1). So the answer is probably within spitting distance of either 232(232) or 253(232).

As a first attempt, typing 10n ** 1223146n - 1n into Chrome's JS console made it go catatonic for a minute or so, but then it spat out a string of 1,223,147 nines. (Fortunately it truncated it rather than printing them all.) So that's bigger than the Explorer version!

> (2n ** 32n - 1n) ** (2n ** 32n - 1n)
× Uncaught RangeError: Maximum BigInt size exceeded
> (2n ** 32n - 1n) ** (2n ** 31n - 1n)
× Uncaught RangeError: Maximum BigInt size exceeded
> (2n ** 32n - 1n) ** (2n ** 30n - 1n)
... and maybe we have a winner, or at least a lower bound on the max?

That last one has made Chome sit there chewing 4 CPU-hours so far, so it's either still doing the exponentiation, or it's trying to grind it to decimal. If it ever comes back with a result, I'll update this post...

Previously, previously, previously, previously, previously, previously.

Read the whole story
jimwise
2 days ago
reply
Hmm
Share this story
Delete

Belly

jwz
1 Comment

Tanya: "We're gonna take a 20 minutes break so you can call your baby sitters."

B: "Baby sitters? Their kids are all in college!"

Me: "Yeah, maybe that joke was on the previous record."

Read the whole story
jimwise
3 days ago
reply
ouch
Share this story
Delete

Cows

jwz
1 Comment and 2 Shares
Read the whole story
jimwise
8 days ago
reply
Neat.

(Click through)
Share this story
Delete

Saturday Morning Breakfast Cereal - Cattle

1 Comment and 13 Shares


Click here to go see the bonus panel!

Hovertext:
A superior option to vegetarianism is to breed an organism so dickish that the ethical conundrumm disappears entirely.


Today's News:

Stay tuned, civics dorks!

Read the whole story
jimwise
9 days ago
reply
Lol
Share this story
Delete
Next Page of Stories