382 karma · joined January 19, 2015
I highly recommend checking out this blog which discusses adding a command which is a customized log. It's made getting a visible understanding of my working state & phases tremendously easy.
http://jordi.inversethought.com/blog/customising-mercurial-l...
Additionally if you're planning to use evolve, most of the instructions I've seen for using it indicate installing it via pip, however I've only run into issues with that (as well as coworkers and others). Instead I recommend cloning the evolve repository and pointing the extension location to it (seen in .hgrc gist below). Upgrading is as simple as going into the evolve repo and running `hg up`. I can't wait until it's shipped with mercurial. The evolve repo can be cloned from:
https://www.mercurial-scm.org/repo/evolve
This is from my .hgrc (for a mac) which customized the wip colors a bit more (and fixes a recent issue where one of the original revset commands used by the blog has been deprecated/removed).
https://gist.github.com/neandrake/e770ea7b3d6bf8299f6be2ca08...
[1] Kallithea https://news.ycombinator.com/item?id=17246386
[2] Phabricator https://news.ycombinator.com/item?id=17245649
[3] GitTorrent https://news.ycombinator.com/item?id=17234498
[4] GitHub Alternatives https://news.ycombinator.com/item?id=17241487
[5] Gitea https://news.ycombinator.com/item?id=17245246
[6] Pagure https://pagure.io/pagure
[7] ReviewBoard https://www.reviewboard.org/
[8] GitBucket https://gitbucket.github.io/
[9] Tuleap https://www.tuleap.org/
"Phabricator uses a lighthearted tone in documentation and some interfaces, and includes some features which primarily exist to add flavor or make things sillier.
We use this tone because we like building software like this, and the feedback we receive about it from users is overwhelmingly (and often effusively) positive."
[1] https://secure.phabricator.com/book/phabricator/article/tone...
It's very well-designed and has support for enterprise features like ldap, clustered servers, CI, etc. and there's no distinction between community/enterprise versions -- it's all open source. Other great features are task management, wiki, blogs, question/answer (a la StackOverflow), and of course memes/macros which add some lighthearted fun to code review. The engineering behind the product is top-notch which is evident from reviewing the tasks/discussions behind features [1], or even reviewing the source code. One killer feature for my company was Spaces, which allows setting up "walled gardens" -- we use it to allow external collaborators to create tasks, etc. without being able to see anything outside their own space.
Managing and maintaining Phabricator is pretty straightforward. It's a standard LAMP type of product (Linux, Apache, MySQL, PHP) which is easy for myself or IT to jump on and diagnose issues. It's the only tool I've seen which will also alert administrators to identified issues with configuration (when logged into web page). Additionally administrators of the tool do not have blatant all-access to projects, though that might be niche.
I'm glad it's getting more notice now, even if it's largely due to Microsoft acquiring GitHub. I don't know if Facebook uses Phabricator still but WikiMedia does and I belive the Mercurial development team is considering it [2]. Phabricator is a great product and worth trying out. Their community is located at [3] - they used to allow open access to their self-hosted Phabricator instance but it became too noisy as the user base grew so they've moved to discourse forums.
[1] https://secure.phabricator.com
1. Pain being identified as a vital sign and hospitals/institutions new-found focus on tracking and treating pain
2. Deceptive pharmaceutical marketing that painkillers are a be-all solution to pain and also non-addictive (Purdue/Sackler seem to be worst offenders here)
This lead to doctors prescribing opioid painkillers to many of middle-class americans who would likely have otherwise not come in contact with drug addiction. The book so far has been a really good read and also goes into detail around how heroin started spreading through the rust belt as well (feeding on the existing prescription addiction). I highly recommend it (about 65% through it right now).
> In addition to performance concerns, Python is also hindering us because it is a dynamic programming language. Mercurial is a large project by Python standards. Large projects are harder to maintain. Using a statically typed programming language that finds bugs at compile time will enable us to make wide-sweeping changes more fearlessly. This will improve Mercurial's development velocity.
[0] https://www.mercurial-scm.org/wiki/4.4sprint#Rust
[1] https://public.etherpad-mozilla.org/p/sprint-hg4.4-NOSPAMREM... (remove everything after-and-including the last hyphen, I left it in since it seems like they don't want a direct link that's easily scraped?)
> In addition to performance concerns, Python is also hindering us because it is a dynamic programming language. Mercurial is a large project by Python standards. Large projects are harder to maintain. Using a statically typed programming language that finds bugs at compile time will enable us to make wide-sweeping changes more fearlessly. This will improve Mercurial's development velocity.
1. Using unit# + some known/random salt, compute a hash
2. Mix-in the unit# + salt to the resulting hash in some deterministic fashion (prefix, suffix, or maybe inserting/replacing into a known/random location)
3. Convert the hash result into a CD-key format
Generate one for each unit produced, print on a label and attach to the distributed product. When installing, the process to verify the key would be
1. Extract the unit# from the entered CD-key (or if randomly inserted/replaced just do this for each possibly bytes assuming its the unit# + salt)
2. Using the unit# follow the same 3 steps above to get a CD-key
3. Compare the generated CD-key to the one entered for validity
Using hash is fast, produces an output with a very large output range (not easily guessed) and unlikely to have collisions, while also limiting the possibly valid keys to (roughly) however many bits necessary for a unit#. This method also allows for offline validation since the key to the hash is being shipped as part of the CD-key, and this was back in the days when a constant-connection to internet wasn't available or necessary for licensing.
The downside, which was the bane of most producers, is that a reverse-engineer who acquires a copy of the software can use a debugger or disassembler to extract out the first 3 steps above to create a keygen. Once the keygen was out though basically anyone could generate their own valid keys. In order to combat this software makers started requiring an additional step that after validating the key it contacts a central server to see if anyone else has used it or not...
> How did the authentication system work? How difficult was it to brute force? Does it simply involve a master key creating individual subkeys? Is it RSA?
Producing individual builds/images to burn onto CD's was unlikely as it would make the CD production process impractical -- a single build/image for burning CD's was likely used until they ran out of stock and/or wanted to ship updated versions of the software. Using RSA would otherwise be a great solution as the software producer could generate private keys for each sold license. Many newer software licensing schemes have this approach.
Edit: Related answer on StackOverflow: https://stackoverflow.com/questions/3002067/how-are-software...
No Linux support though
Adding more complexity to the example - what about offering a digest-format where a user opts in to only receiving one email a day.
[0] http://gitbucket.github.io/gitbucket-news/gitbucket/2016/03/...
[1] http://gitbucket.github.io/gitbucket-news/gitbucket/2016/07/...
I think Microsoft HealthVault was more of what you describe, where it's a portal intended to be used by patients.