152 karma · joined May 2, 2014
> The testers keep running into situations where things don't seem to be right, luckily your product manager is happy to defer most issues raised unless it is a real "show stopper," as Jeff loves to exclaim.
That might have been the critical mistake. Jeff should not have done that. He should have insisted on lots of feedback loops during the project. He should have put more effort into convincing himself that the product is of sufficient quality.
As for the developers, they should have made it clear to Jeff: if he's not allocating resources to convince himself that the product is of sufficient quality, he shouldn't be mad at them when in the end the product doesn't work.
The example where Google hid a microphone in Nest makes me believe they will do anything to get more information from people. I think it's not beyond Google to use people's handicaps to improve the image of Google Glass. Sorry to put it like that...
Same goes for every other communication tech. Just because your endpoint is not spied upon, if every other endpoint is spied upon you gain nothing. If you don't use WhatsApp, but all your friends use WhatsApp to talk about you then you gained nothing.
If you really believe there is no such thing as collective decision-making then imho you already gave up in the fight for privacy.
But even if we boycot Google and Facebook, they are not the main problem. Their business model is the main problem. Spying on your users, training predictive models, and using those models to exploit people is simply too profitable, and therefore too attractive for any profit-seeking company to ignore.
Until we solve that problem by deciding as a society that these business models are not ok, this 1984-like world we currently live in will be our reality.
> One of the big differences between Hypothesis and Haskell QuickCheck is how shrinking is handled.
> Specifically, the way shrinking is handled in Haskell QuickCheck is bad and the way it works in Hypothesis (and also in test.check and EQC) is good. If you’re implementing a property based testing system, you should use the good way. If you’re using a property based testing system and it doesn’t use the good way, you need to know about this failure mode.
> The big difference is whether shrinking is integrated into generation.
> Integrating shrinking into generation has two large benefits...
> The first is mostly important from a convenience point of view...
> But the second is <i>really</i> important, because the lack of it makes your test failures potentially extremely confusing.
Funny, I did a similar thing! :)
Judging by some of the comments here, it seems like the macro system has a similar approach as Lisp's macro system, which is also AST-based. Something I don't see here is macros that generate other macros, but the question is how much you really want that anyway (when I did that, I thought the syntax was horribly complicated because of all the quoting). I know Lisp also has reader macros (they run before the parser) that allow you to effectively change the language syntax, but I didn't use those.