• 7 Posts
  • 236 Comments
Joined 1 year ago
cake
Cake day: June 18th, 2023

help-circle
  • Fair enough, git clean does exist. However, if the button saying “discard all changes” is really a button that runs git clean, that’s just a plain terrible design choice. git clean is “delete all untracked files”, which is specifically not discarding changes, because there can be no changes to discard on an untracked file. Even talking about “changes” to an untracked file in VC context makes little sense, because the VC system doesn’t know anything about any changes to the file, only whether it exists or not.

    That’s not even mentioning the fact that the option to “git clean” shows up as one of the easily accessible options in relation to a staging process. Especially if you’re coming from the git CLI, you’re likely to associate “discard changes” with “git restore”.



  • Got will not delete untracked files though, which is what happened here. If you want to discard changes to a file with git, you first have to commit the file to the index at some point, which means there’s only ever so much damage an erroneous “git restore” or “git reset” can do. Specifically, neither of them will delete all the files in an existing project where VC has just been added.


  • If you have set up your staging area for a commit you may want to discard (unstage) changes from the staging area, as opposed to discarding changes in the working directory.

    Of course, the difference between the two is obvious if you’re using git CLI, but I can easily see someone using a GUI (and that maybe isn’t too familiar with git) misunderstanding “discard” as “unstage”.

    Either way, what happened here indicates that all the files were somehow added to the VC, without having been committed first, or something like that, because git will not let you discard a file that is untracked, because that wouldn’t make any sense. The fact that the GUI let this person delete a bunch of files without first committing them to the index is what makes this a terrible design choice, and also what makes the use of the word “discard” misleading.


  • I use gitkraken for two primary purposes:

    1. Having a visual representation of my project history.

    2. resolving merge conflicts

    Of these, the first is really the only thing I really want a GUI for. I’ll just have it open on my side-screen if I’m managing some more or less messy branch structure or quickly want an overview of what has been done on which branches, where common ancestors are, etc. All the actual doing of things is done from the CLI, because it’s just better for that.



  • There’s a lot of good advice here already, especially that wool is the gold standard - nothing synthetic cuts it. I want to add that the absolute key is about layering, and not over-stuffing.

    What keeps you warm is primarily the air trapped between your layers, which means that three thin layers can be a lot better than one thick layer. This also means that you will be freezing if your layers are too tight. If you have two thin layers, and put on a sweater, and that sweater feels tight, that likely means you’re pushing out the air trapped in your inner layers, and they won’t be as effective. The same applies when putting on a jacket.

    So: You want a thin base layer (think light, thin wool shirt + long johns), then an optional medium layer or two (slightly thicker wool shirt, I have some in the range of 200 grams), and finally a thicker sweater for when you’re not moving. These should increase in size so that they can fit the thinner layers underneath, and you want your jacket big enough to fit all the underlying layers.

    Finally: When you’re moving around, you will get stupidly warm and sweaty unless you take off clothes. It’s better to take off some stuff and be a bit cold for the first 10 minutes of moving than to get sweaty and be cold for the rest of the day. If (when) you do get cold, running in a circle for 10 min will fix it (run at a calm, steady pace, if you’re really cold it might take longer to get warm than you think, but you will get warm if you move).

    In short: Being in a cold climate is just as much about how you use your equipment, and how you activate yourself to stay warm, as it is about what equipment you have.



  • I have to be honest in that, while I think duck typing should be embraced, I have a hard time seeing how people are actually able to deal with large-scale pure Python projects, just because of the dynamic typing. To me, it makes reading code so much more difficult when I can’t just look at a function and immediately see the types involved.

    Because of this, I also have a small hangup with examples in some C++ libraries that use auto. Like sure, I’m happy to use auto when writing code, but when reading an example I would very much like to immediately be able to know what the return type of a function is. In general, I think the use of auto should be restricted to cases where it increases readability, and not used as a lazy way out of writing out the types, which I think is one of the benefits of C++ vs. Python in large projects.





  • I definitely think the ramping up is going far too slowly, and as such it isn’t strange that there are shortages.

    This is a huge war- the largest land war since WWII. All of NATO is still operating on a peace-time economy, so ramping up production to the levels required to support a 500 k - 1 mill. strong army like the Ukrainians is taking far too long.

    However, as far as I can tell, production in Europe is only heading one way: Up. Not only that, Russia is operating in a war economy, which is, more or less by definition, unsustainable in the long run. Europe has the economic capacity to double its production, and maintain it indefinitely. I just think we should prioritise more heavily, and scale up more quickly.


  • The amount of people I’ve been helping out that have copied some code from somewhere and say “it doesn’t work”, and who are dumbfounded when I ask them to read the surrounding text aloud for me…

    Along the same line: When something crashes, and all I have to do is tell people to read the error message aloud, and ask them what that means. It’s like so many people expect to be spoon-fed solutions, to the point where they don’t even stop to think about the problem if something doesn’t immediately work.



  • While I do agree with most of what is said here, I have a hangup on one of the points: Thinking that “docstrings and variable names” are a trustworthy way to indicate types. Python is not a statically typed language - never will be. You can have as much type hinting as you want, but you will never have a guarantee that some variable holds the type you think it does, short of checking the type at runtime. Also, code logic can change over time, and there is no guarantee that comments, docstrings and variable names will always be up to date.

    By all means, having good docstrings, variable names, and type hinting is important, but none of them should be treated as some kind of silver bullet that gets you around the fact that I can access __globals__ at any time and change any variable to whatever I want if I’m so inclined.

    This doesn’t have to be a bad thing though. I use both Python and C++ daily, and think that the proper way to use Python is to fully embrace duck typing. However that also means my code should be written in such a way that it will work as long as whatever input to it conforms loosely to whatever type I’m expecting to receive.


  • There have been major investments in the European military industry the past years. Europe is ramping up its production. With new factories in place, it makes no sense for Europe to start cutting down on production- that would mean huge sums have been spent to build factories that aren’t used.

    Also, a bunch of countries have already paid for huge orders of equipment that will keep flowing for the next several years. Even if no new investments are made, there will be a substantial flow of weapons from European manufacturers.

    That’s not even mentioning that Europe has finally understood that we need to be able to stand on our own feet militarily, because we can’t trust that the US will actually honor the NATO pact if shit hits the fan.

    Accounting for purchasing power parity, the US economy is about 1.1x the size of the EU, and the population of the EU is about 1.5x that of the US. So it’s not like Europe doesn’t have the capacity to massively scale up its military power.

    Remember that up until 80 years ago, the European militaries were by far the most powerful in the world.


  • That’s a lot like how other NATO countries operate as well. But my impression was that the American national guard units were professional full-time units, is that not the case?

    Out Norwegian equivalent (the Home Guard) consists of civilians (i.e. people with normal jobs) that train a number of times a year, some of which have their equipment at home so that they’re ready to deploy on short notice. They have some coordinated training with the army, and are intended to function as a kind of “local force” in their region, with in-depth knowledge about local conditions that the ordinary army doesn’t have.


  • I can’t speak for everyone, but I believe the peace time professional militaries of most democratic European countries would be dwarfed by the number of people those countries would be able to mobilise in a war time situation.

    In the case of Norway, we have a standing army of some 20-30 k soldiers, with a reserve (i.e. peace time civilians with ordinary jobs that have pre-set places to meet up in the case of a conflict) of some 50-70 k soldiers. If shit hits the fan, I wouldn’t be surprised if you could get another 100-200 k to volunteer (at the peak of the cold war I believe we had standing army + reserve of some 500 k). The issue is that we are nowhere close to being able to equip that many soldiers.

    That’s just Norway, one of the smallest populations in Europe, and we would likely be able to field 100 k + soldiers within a week or two, with another 100 k following up in the next months, given that we have the equipment for it.

    Call me naive, but I honestly believe that people in democratic countries would be willing to enlist if there is a real threat of an autocratic regime invading at taking over. Given that we have sufficient numbers of well trained soldiers to hold out the initial weeks/months and train those mobilised, and sufficient equipment to give the mobilised, I hope that we would be able to put a solid force on its feet relatively quickly.

    Also, just the sheer population of Europe (≈ 450 million in the EU) is so much larger that e.g. Russia (≈ 150 million) that we should collectively be able to field several million soldiers as long as we have enough equipment for it, and enough trained personell to train the mobilised. So I definitely think it’s reasonable to focus on building equipment stockpiles in peace time, rather than having huge standing armies.


  • I used Iran as an example because they specifically have a religious leadership that uses exactly the Quran to justify their laws.

    There are plenty of non-Muslim Iranians that have burned Qurans in anti-regime protests, specifically to separate the religious regime (symbolised by the Quran in that context) from the country and its culture as a whole. That is: They are specifically protesting the religious regime, and therefore don’t burn the flag, which they don’t associate with the regime.