"The versions of Unix are numbered in a logical sequence: 5, 6, 6PWB, 7, 4.1, III, 4.3, V, and V.3." -- quoted from memory from The Unix-Haters Handbook
So you see, they're following long-standing industry practice :-)
Angular 1, angular 2, angular 2.1... Angular (note, Angular 2 is now Angular! And so is every version after this! Angular 1 still exists though).
Surface Pro. Surface Pro 2 (note: Surface Pro is now surface pro 1!), Surface Pro 3, Surface Pro 4, Surface Pro. By the way we also have Surfaces (1, 2, and 3?) as well as Surface Books, and Surface Laptops! :D
Android: here's a bunch of fucking candy
OS: here's a bunch of fucking animals. By the way, sometimes people call your macbooks 10,1 or some shit.
Nitpick: "MacBookPro11,1" "Macmini7,1", etc refers to the hardware model: the first number being the machine's generation and the second one being its revision.
The .NET and .NET Core version numbers are another minefield, and I still can't remember (and don't really care) what's what. Your choices are either to laugh or be filled with rage. I'm coming round to the first one having mostly opted for the second in recent months.
What's particularly weird about .NET version numbers? They're monotonically increasing, with the exception of .NET Core getting a reset to 1.0 (which kinda makes sense, since it's a different and incompatible product).
.Net Framework, .Net Core and .Net Standard all have different version numbers, which correspond to different things. In addition, since Core and Standard are both in the 1.Xs currently, it can be confusing. Finally, the .Net Core SDK is versioned differently from the run time, both somewhere in the low 1.Xs right now.
```
>dotnet
Microsoft .NET Core Shared Framework Host
Version : 1.1.0
Build : 928f77c4bc3f49d892459992fb6e1d5542cb5e86
```
```
>dotnet --version
1.0.0-preview2-1-003177
```
The version numbers aren't necessarily weird, but the versioning sure is.
Disclaimer: MS Employee who uses Dotnet, but doesn't work on it.
I was in version hell yesterday, targeting a standard (1.5) because I thought it would help me run as .NET Core 1 whilst supporting a 4.6.2 .NET Framework dll but that broke something else. It was a juggling game of trade offs
Surface Pro. Surface Pro 2 (note: Surface Pro is now surface pro 1!), Surface Pro 3, Surface Pro 4, Surface Pro. By the way we also have Surfaces (1, 2, and 3?) as well as Surface Books, and Surface Laptops! :D
Android: here's a bunch of fucking candy
OS: here's a bunch of fucking animals. By the way, sometimes people call your macbooks 10,1 or some shit.