Introduction I prefer Mercurial (hg) to git . I don’t really have any reason for this preference - they both do the same thing, and the user experience for 90% of the use cases is the same. It probably comes from the conditions of the DVCS landscape when I started using these systems. Some of this may have been perception only, but it looked like this: GitHub didn’t have free private repos BitBucket did have free private repos BitBucket was very hg-friendly Joel Spolsky had an amazing tutorial that served as both a how-to for hg as well as a general intro to DVCS hg was much more Windows-friendly than git Since hg was written in python, I felt like extending it would be easier than doing so for git if I ever needed to (admittedly, this is a pretty ridiculous reason) hg felt like a more unified, “coherent” system than the very linux-y feeling git and its extensions (also pretty ridiculous) Where they differed, I liked the verbs hg used better than git’s counterparts
You don’t always have to use an existing framework/toolset/platform to accomplish a common task. You’re a coder. You can code it. I was reminded of this in two different scenarios recently. Unit Testing I’ve been taking a lot of algorithmic coding tests for potential employers on sites like HackerRank , Codility , CodeSignal , etc. Usually it works like this: You have a problem: given these types of inputs, produce this type of output You are given constraints for the inputs You are given example inputs and the expected output There is some scaffolding code to read the input and print the output There is some way for you to enter custom input for testing Sometimes there are some basic test scenarios that you can see that your code will go through Always there are unseen test scenarios that your code will go through One big problem here is that when trying to test (and retest, and remember) all of the edge cases, manually entering custom input data isn’t very efficient or r