4,053 karma · joined August 1, 2014
No, I mean when you go to the site and click the second item in the menu, Guide[1].
This is still what the Guide on the Mercurial site mentions as the "basic workflow" for working on separate features. Named branches are considered "advanced", and bookmarks are an afterthought entirely.
About 10 years ago, after reading a lot about how hg was more intuitive than git, I decided to give it a try. I was already using git branches a lot, so this was definitely not a good first impression.
> It also enables contributions by the community for the latest version and not old source code.
But you will not be able to accept such contributions without an additional license, because you yourself would be unable to use them for a Competing Use (running your service). This makes it much closer to a cathedral, with a "small bands of mages working in splendid isolation". Sure, your work will be publicly visible, but that's it.
The most frustrating situations are those where it invents a function that would miraculously do what's necessary, I tell it that function does not exist, it apologizes, shuffles the code around a bit and invents a different function, etc. It's the most annoying kind of debugging there is.
The predecessor of my ISP introduced full IPv6 support for all customers 15 years ago. The only argument against at this point is inertia.
The answer in the Netherlands is that for most industries that have one the collective agreement has been declared universally binding. It applies to everyone in that industry, whether they're a member of one of the bargaining organizations or not, and if a company ignores it they're breaking the law.
It won't ever be perfect, but that doesn't mean we shouldn't strive to get as close as possible.
> Source control is the wrong tool for this job, that's what comments and tickets are for.
I agree that code comments play an important part in explaining why something is the way it is. Code comments and commit messages play a different role there, but they overlap and it can be tough to balance. Roughly: commits explain changes and the decisions made to arrive at that set of changes. Comments explain the end result and the decisions relevant to explain that end result.
I disagree that tickets are a better way to convey this information. Embedding references to tickets is not necessarily a bad thing, but the lifetimes of issue trackers and source code history tends to be different, so all relevant information from such references should be in the comments or commit messages.
Points 1 to 4 argue against the idea of rebasing as an alternative to merging. I agree with this to some extent, but in practice I notice that the exact point at which a branch began is rarely important. A very rough heuristic for this is "can it be rebased non-interactively?". This effectively means I like "cherry-pick merges", and it would be cool if Git remembered more about the origins of them. Rebases that do require manual adjustment are far more error-prone than merges, and I try to avoid those.
Point 5 and 6.0 are the primary reason I edit history. I want my history to tell a coherent story, not just in commit messages but also in the changes themselves, and that story often doesn't perfectly match the actual road traveled to get to the end. I don't much value mistakes where I forgot to implement half a change while tired at the end of a long workday, or an ill-considered false start. Where such information is valuable I'll write it down in the commit messages of changes that implement what did end up happening.
That brings me to the other points. I very much agree with 6.1 and beyond. Squashing branches removes a lot of valuable information, and it removes the ability to tell that coherent story. In particular:
- There are often small changes or bug fixes that aren't really part of the set of changes, but that just happen to become most relevant while developing this feature. Depending on the specifics these could be merged separately, and I keep them separate.
- Nuances discovered later in the development of a set of changes tend to offer valuable insight, so I want to keep them separate from the rest.
It would be cool if Git remembered more of the specifics of how the end result was reached, but I'm not sure if I would use it much in practice.
1. Some small commits in preparation for the bigger change, that are also desirable should the rest never end up being merged
2. The big set of changes, either in one big commit or in a handful of smaller, independent commits
3. Some (usually smaller) commits that reflect nuances thought of or discovered after the biggest batch of changes was made
Most of my history cleanup serves to separate part 1 and 2 and to turn part 2 into a set of coherent steps.
Depending on how things go each of these might be merged independently or all at once.
The history is an end product intended to help others (often future me) figure out when and why things changed, preferably in self-contained, well organized steps. Often my first attempt at a change does something in an illogical order, or I make related changes that later end up in a separate merge. In the short term that change in thinking is somewhat interesting. In the long term it only confuses whoever is looking through the history to figure out why something is the way it is.
The stronger version of this completely discards any history when merging a feature, but I often find that to get rid of useful information.
[1]: https://blog.cloudflare.com/introducing-cloudflare-stream/ [2]: https://www.cloudflare.com/press-releases/2018/cloudflare-st...
In my experience this is not at all common. I think I know of 3 that do, and I've used many more that don't.
The only argument in favor of imperial measurements you've given is that humans have two feet, which isn't much of an argument given the variation in sizes of those physical feet.
With that said, the mentioned vulnerability is an odd one. A CVE published in 2023 with a CVE number for 2022 for a bug that was found and fixed in 2020. The bug in question is a memory leak when passing -help.[1]
The latency between streamer and viewer on Twitch (in low-latency mode, which is the default) is normally less than 5 seconds and often between 1 and 2 seconds. The player actually slightly speeds up the video if it exceeds 5 seconds.
This is essential for interactivity, because the streamer can ask a question and get a response without constant awkward pauses.
I don't think they are. Given the same size total audience it's much cheaper for Twitch to distribute one stream around the world a million times than it is to distribute thousands of streams around the world a few times each. Transcoding only has to happen once, each segment only has to be distributed to each area of the world once, etc. This gets more nuanced when you include things like chat, which gets harder as you scale up, but I highly doubt that cost is significant compared to the video feed.
Those large streamers may be monetizing their viewers through other means, but as long as they're not actively pulling them away from Twitch those viewers are still either watching ads or subscribing. And based on anecdotes shared by some of those big streamers Twitch ads have gotten more and more profitable.
Do you or someone else happen to know which directive made it mandatory? I found Council Directive 90/496/EEC of 24 September 1990[1] which harmonised labeling, but only made it mandatory when there's a nutrition claim on the label/advertised. Otherwise it was still optional.
[1]: https://eur-lex.europa.eu/legal-content/EN/ALL/?uri=CELEX:31...
> You cannot melt whole eggs like you would melt ice or cheese. However, you can soften the proteins in eggs through heating.[1][2]
Reference 1 is to the Quora page, reference 2 is another Quora page.
[1]: https://kagi.com/html/search?q=what+is+%25&r=no_region&sh=Qd...