58 karma · joined January 19, 2011
Is that at least "good enough"? If the root certificate for the package repo's CA were itself signed by a real-world CA, then I think what you end up trusting is the security of the repo, of GitHub, and of the project's developer(s). Projects with multiple committers could have several of them receive certificates, and require a quorum of signatures before a release is published, to mitigate the risk of any one core dev being compromised.
To keep package names trustable, I think the only sane scheme would be using the project's URL on the service which was used to prove its identity; Rails would be "https://github.com/rails/rails", though surely you could use aliases (github:rails/rails) to reduce typing.
Imagine if you were trying to break up with a significant other, and they told you that you were not allowed to end the relationship unless you gave a reason first. That would be horribly controlling, and totally unacceptable.
Of course, a romantic relationship is rather more significant than a subscription, but I think The Ladder's exit process is controlling in the same way, and the only difference is that it occurs in a less important relationship. It still gives me the same feeling that my wishes and agency are being subjugated, and I believe that's a bad thing to do to a person, regardless of the particular situation.
When the article says "distributed", it means Persona is many-to-many. Any domain can implement the protocol, so when a site accepts Persona login, you can choose from many identity providers – including your own, if you're industrious and want to set one up for your domain. Most people are using Mozilla's service today, but the idea is that email providers like gmail will implement it themselves in the future.
Regardless of Spotify's intentions here, they're benefitting from users' trust in normal login processes to get Facebook account access. Lots of designs exploit users' automatic behaviors like that; see Dark Patterns [1].
https://github.com/mitsuhiko/flask/blob/master/flask/app.py#...
When you call `route` with a URL pattern, it returns an inner function which is used as the decorator. That decorator just records your route and function in the Flask URL map, and returns your function unchanged.
So, Flask is arguably perpetuating a slight abuse of decorators, since it doesn't decorate or wrap your function at all, but merely saves a reference to it somewhere. But it's a fairly clean way to make up for the lack of code blocks or multi-statement anonymous functions in Python.
Mixpanel does deal with funnels differently, however. With their API, you explicitly define events as being some numbered step in a funnel; in ours, the events are agnostic about what funnels they participate in, and we piece them together in a post-processing step.
But really, we considered this important enough to do in-house. The ease of working with MongoDB made it feasible.