622 karma · joined August 4, 2013
Blog: http://h14s.p5r.org
Website: http://c7n.p5r.org
[ my public key: https://keybase.io/p5r; my proof: https://keybase.io/p5r/sigs/nc-O1JGHhVORXxZAziE3DK0gZLCDdNTbt8wfDXYmHR4 ]
In addition, the dankort is strictly regulated to the benefit of consumers which the banks dislike because it limits how much they can charge when you use it. They have an interest in pushing people to visa or mastercard or their own mobile payment solutions which don't have the same restrictions. The payment processor itself is developing their own alternative to compete with the dankort which they are mandated to also implement. I don't think they provide bad dankort service on purpose but it's a concern that good service is actually against their own economic interest.
The payment processor, Nets, is a monopoly, owned by US investment firms. They have frequent outages and are unapologetic when they do. There is no transparency. They have a terrible privacy record (see https://en.wikipedia.org/wiki/2014_Se_og_H%C3%B8r_media_scan...). Until last year everyone down to their phone support staff had open access to everyone's payment records (see http://www.computerworld.dk/art/230818/alle-kundeservice-fol... -- in Danish). Despite all these issues they just laid off a bunch of people. Their only priority, it appears, it making money for the owners.
Money is a critical piece of infrastructure and these guys absolutely cannot be trusted to implement it. With more payment processors and a regulatory framework that forced them to provide decent service maybe cashless is not a bad idea. With the current implementation though there's a good chance it will be a disaster. It will certainly be a gaping vulnerability for anyone who should feel like targeting us; I wouldn't be surprised if all it would take to bring the whole thing down is one lone hacker.
f.testTwo(f = newF, f)
A more sophisticated type system could allow access if it can be proven safe with simple flow analysis but wildcards are already complicated, that would make them much more so for not much benefit.
I can't use just python 3 because python 2 is still widely used. I can write code that works on both but now I'm using the worst of both worlds, and even worse I now have to test on both. And that'll last until python 2 goes away completely which, - when has a language ever gone away quickly?
These aren't fun problems. Improving python 3, making it more attractive, that's fun. But that's problem 2. Making migration less painful for me should be problem 1. Who's working actively on that?
What particularly grinds my gears is the apparent disregard for migration in the design. Take the changes to the print statement. Often this is the only thing that prevents my existing code from working in python 3. And it's in my muscle memory so I always get snagged when debugging on python 3. For what? Take a read through the rationale: https://www.python.org/dev/peps/pep-3105/#rationale. Most of the benefits you could have had if you'd named the new print function something else. I can understand that you regret adding it in the first place. What's even worse though? Adding it and then removing it in an incompatible way.
If you want to make python 3 more attractive maybe make migration easier before going on to the fun improvements? There are low-hanging fruits for migration too. How about adding back the print statement?
If working with the OSS community is in their own immediate self interest -- and I'm curious whether someone can point out something they've done that isn't -- I don't know how much light it sheds on an area such as OEMs where their self interest is best served by locking linux out.
On any practical architecture a word has some fixed length, N, and the vastly most efficient case will be when your number fits within that space. That is, it is more efficient if the number can be represented in r^N bits of state. The amount of state an architecture gives you is dictated by many different considerations but the radix that offers you most control (that is, most different possible values for r^N) is 2. For instance, say you want a word length that can store numbers up to 500, you have the options of
2^N: 2, 4, 8, 16, 32, 64, 128, 256
3^N: 3, 9, 27, 81, 243
So 2 gives you 8 choices for N whereas 3 gives you 5. So 2 gives you more design space to choose the most efficient representation in practice.
http://hummusandmagnets.tumblr.com/post/48829755849/how-to-u...
Here's the main script I use, as an example of practial scsh (I don't know if it would be considered idiomatic): https://github.com/plesner/scsh/blob/master/ash
Unlikely to actually be true but a cute story.
"Since courts are likely to construe implied grants of license narrowly, a licensee should consider obtaining separately from the licensor an explicit grant of patent rights that might be needed for modified versions of BSD-licensed software."
This seems to go against the FOSS[2] freedom 2, the right to distribute modified copies without asking anyone for permission. Now, whether that can be applied in this particular case I don't know, I guess that depends on whether there are patents involved. But in general, BSD does not imply FOSS.
[1]: http://www.rosenlaw.com/oslbook.htm, chapter 5, p. 79
I'm having trouble understanding what this means, concretely. Do you think it would be a bad thing if computer science became less of a boys club? Or do you not believe that is why people dislike the picture? Who is it exactly that has too much power over "our" culture -- women? Politically correct killjoys?
Also, looking at the other comments, the fact that you happen to be fine with that image is neither here nor there. It certainly doesn't cancel out the fact that I'm not.
An experiment can work something like this. Produce 1000 state that you think are undecided. Apply a transformation that you know will turn the uncollapsed 50/50 state to 1 and the collapsed 0 and 1 states to the uncollapsed 50/50 state. Then measure all 1000 states. If they all yield 1, with high probability they were were indeed undecided to begin with. If they yield random results, with high probability they were collapsed 0 or 1 to begin with.
Firstly, I find his example contrived. He wants to determine the accuracy of a black box by subtly tweaking how floating-point operations spread throughout that black box behave? It seems like an okay hook for ad-hoc debugging -- if those flags are around anyway -- but as the primary rationale for the entire rounding mode mechanism? That's not a lot of bang for a whole lot of complexity.
Secondly, this is exactly the kind of discussion around rationales and use cases I'm looking for. Even if I don't buy his solution the problem still stands and might be solvable some other way, for instance through better control over external dependencies. Maybe something like newspeak's modules-as-objects and hierarchy inheritance mechanisms could be applied here.
- Either use interval arithmetic which is tricky and may give you useless large bounds, but those bounds are guaranteed to hold.
- Or just try all the rounding modes which is less likely to give you large bounds, but now you have no guarantee that those bounds say something meaningful about your computation.
Or does the second case give meaningful guarantees?
round default: 0.072817 round up: 0.072703 round down: 0.072931
Now I don't understand how you get a reliable result using rounding modes at all.
I actually thought that was the use case I was describing, though I would expect round-positive and round-negative to be enough. Don't the other rounding modes yield results within those bounds?
My example, RegExp captures in JavaScript, also have thread scope. Thread local global state is still not good. What makes the flags global is that access to them is provided implicitly and ubiquitously, independent of scope. All the operations as well as the flag functions like saveAllFlags are given read and/or write access and none of them take arguments that control the scope of the flags they're manipulating. They get pulled from thin air. This is problematic.
I deliberately never say that the rounding flags are global, my strawmen are that they're either lexically or dynamically scoped, both of which are problematic.
> You can take "block" to mean whatever makes sense for your language: it could be a single arithmetic operation[1] or it could be the whole program (though it's more useful if it isn't).
What I'm arguing is that there is no interpretation of "block" that yields a satisfying result. I didn't consider applying it to individual operations because the whole motivation for the rounding mode mechanism is to keep the same mode is in effect across multiple operations. The lack of hardware support suggests the same thing.
Maybe you can give an example of how you see this working where the attributes are more tightly scoped than per-thread?
> Finally, the concern about "exceptions" is entirely misplaced. "Exception" in IEEE-754 simply means "an event that occurs when an operation on some particular operands has no outcome suitable for every reasonable application," which is a rather different meaning than the way "exception" is understood in colloquial PL usage.
Fair enough, though that introduces a new problem: how do you implement fp-exceptions if the're not language level exceptions? But maybe if a reasonable solution can be found for the rounding flags something like that would work for the exceptions too.
> I would encourage you to direct questions like these about the spec to committee members. If you work for a big company, a few members probably work with you. If you don't, most committee members are happy to answer questions, even from people they don't know.
I did, I raised some of these issues, including the licensing issue, with David Bindel a year ago.
When you don't get hired though, almost always you will err on the side of blaming yourself. I've heard about people blaming the process but I've never met someone in person who did that. And actually I suspect there's a Dunning–Kruger effect working where the more qualified you are the more likely you are to turn a rejection inwards and blame yourself.
I'm not saying that's what happened here, I don't know. Just keep in mind that hiring anywhere, including at amazon and google, can't be a fair process to the candidate. And you're the least objective observer of your own performance.
The best strategy I've been able to come up with grows the exponent roughly every 50s: 47s to get to 100, 51s to 1415, and so on. I wonder if there's a way to do it faster.
Coincidentally I published a post about almost exactly the same thing only a few hours ago, http://h14s.p5r.org/2014/09/z-quads-strings.html. But it focuses more on the algorithmic side which is why I'm curious about the mechanics of UBIs.