Yeah, good point. It also doesn't update when the content of a file changes. So, in order to detect a change in a directory, you have to walk all the files and sub-directories and the directory itself to get the last-modified timestamp for each of them. Then determine the highest last-modified and compare it to what you measured in a previous run. If they differ, a change happened.
Yeah, I'm building more-or-less an alternative to make. Major difference is that I'm not using shell commands, but rather users will define their build code in Rust ...because it's intended to be a build tool for Rust applications (beyond what cargo does).
Thanks for the comment, though. So far, I haven't limited inputs to just be files, so I don't actually assume to have a last-modified timestamp. Rather, my assumption is that I can get some value which changes when the input changes. In the case of a file, that's the last-modified timestamp, but theoretically, it could also be a hash. But that means I have to store these values to be able to detect a change. Being able to just say that one thing is newer than the other without storing anything, that is pretty cool and might be worth changing my assumption for.
I don't think, inotify works for me, because I don't have a continuously running process. My users rather just run some build command and then I go and check, if any input files changed since the last run.
Hmm, you mostly press the button in the top right to progress through turns as well as through the individual 'decisions' within a turn. And each decision is something like "What should this unit do?", so it will automatically select a unit and you can instruct it by either clicking on the map to tell it where to walk/attack or with the buttons in the bottom left.
In your first turn, one of those units is a settler, which you might tell to found a city. In that case, you also have to tell the city what building to construct, for which it will bring up the city screen and then you select that in the list on the left. Well, and if you do build a city, you also have to select a technology for it to research, which brings up another screen with the possible technologies in a tree structure, where you select one technology and confirm it.
I'm sure, there's tons of places one can get stuck on, but it is fairly linear gameplay, so don't overthink it...
Well, if you played it a few years ago, the tutorial was also still rather sparse. That should be better now, too.
Frankly, I would be surprised, if anything uses groff for displaying --help, unless it shows the man page for that.
The most basic implementation of --help is a manually formatted multi-line string written into the source code, which gets printed as-is.
For dynamic layouting, you do need more logic, but rendering it to groff source code first does not make that easier. For tabbing, you print an appropriate number of \t.
I'm guessing, it's a parody. There's a couple which has been posting pictures like this to the internet, but it's normally some amazing scenery from where they've travelled to. It's always the woman in the center of the shot, dragging her partner along who's taking the photo. I'm guessing, it's trying to say that a hotdog stand is an amazing place to travel to...
I am one of the rare few users who actually enjoys PowerShell; I prefer piping typed, structured data over piping streams of bytes. I also really hate sh/zsh/bash syntax.
I have no experience with this, but I figured a Rust library might have tried to solve it (static linking is very much the norm here) and I found that ash can statically link the "Vulkan loader". I don't know, what that actually means, for example whether it would still load libxcb at runtime. Might be worth looking into what they do...
Somewhat depending on your country, local shops may have opened online storefronts during COVID. Them having a physical presence means their products tend to be decent quality (as most customers look at them physically before buying).
Yeah, but the law genuinely treats (near-)monopolies differently from their competitors. What's legal for a small company does not have to be for a company which dominates the market.
The thing is, laws are supposed to bring the greatest benefit to a society. In most cases, fairness aids that goal. But that's not the case for competition laws, which is why they're relatively unintuitive.
Oh yeah, I was merely complaining about the syntax. Coming from other languages, I interpreted that import statement to mean essentially this:
javascript
import { double, exponent /*...*/ } as operations from "Math";
...and as such, it took me a few seconds to understand what's being aliased by as operations.
As for importing all symbols of a module, I do think it's more harm than good in non-compiled languages. But when it comes to compiled languages, I'd say it depends on the language.
In Rust, for example, I can easily throw down an inline module with one-way isolation, so that it can transparently access everything in its parent module via use super::*;, while the parent module can't access what's in the module (unless it's been marked pub). That can reduce mental complexity of the code (and is actually used a lot, because unit tests are typically put into such an inline module).
It's also useful in Rust, because you can re-export symbols in different modules, so you can break up a file without breaking the imports by throwing a pub use my_sub_module::*; into the original module.
But yeah, on the flipside, I really wouldn't miss it, if it didn't exist in Java. It was rather even annoying, because the popular IDEs have a rule to replace explicit imports with an asterisk as soon as it reached 5 symbols imported from the same module.
It's not as bad as one might think, because you can't declare top-level functions or variables in Java (everything has to be in a class), but it still sometimes led to those asterisk imports bringing in the wrong class names, so I'd have to manually add the import I wanted underneath them...
Wow, I knew import syntax with a separate from statement could be awkward, but that's a new one for me.
Apparently, the * cannot be used to import all symbols underneath a module (you always have to specify the as moduleName), so I guess, that makes it somewhat less weird for referring to the module itself.
From what I can tell, there's also no obvious other keyword they could've used:
package is only a keyword in strict mode.
self is not a keyword.
this is kind of awkward.
Leaving out the keyword is kind of awkward (import as operations from "Math";).
Changing up the whole syntax for this one case is awkward, too (import from "Math" as operations;).
So, I guess, I'll allow it, but I'm still not happy about it...
Needlessly absolute take. Yes, there's going to be parents, who'd rather pay extra than look into what other games they could give their kid, as well as loyal Mario fans, who will pay pretty much any price. But there's obviously also players who do weigh up their options based on price, and who will make different decisions when they have to decide between two titles, when one of them is cheaper. Especially with the additional invest for a new console and the more dire economic situation, I could see many players not buying into the Switch 2 at all.
Yeah, for me, the big thing was that I only found out you could test-run Linux without installing after I had made the decision to install it. Of course, having no real clue what I'd get into massively delayed the decision...
It's like a conspiracy theory for that guy. Everyone who tells them it's not true that you can get rid of programmers, has to be a programmer, and therefore cannot be trusted.
https://en.wikipedia.org/wiki/Attacus_atlas