Hacker News new | ask | show | jobs
by deathanatos 1153 days ago
> If the software is written well, it will be sufficiently cross-platform and modular enough

Yes … well …

We brought on via acquisition a bunch of Windows devs. It turns out we can't even clone the repository onto their laptops: some files in the repo have ":" in the filename, which is forbidden. There's a "aux.rs", also a verboten filename in Windows. And then there were some that differed only in case, which honestly I don't know how we manage that, as the non-Windows side is macOS, and yet roughly once per year someone introduces two files, same name, differing case into the repo.

> that "CRT" shader

Okay … that's not what CRTs looked like. Like, the curve seems way overdone compared to my memory, and IIRC the "lines" affect was really only visible on TV/camera. I have no memory of noticing it IRL, and I spent plenty of time at a command prompt.

(E.g., this random example — https://i.redd.it/1s3ny22b2va51.jpg — matches my memory pretty closely.)

(Also there were flat screen CRTs, but those were relatively late to the game and were rapidly obsoleted by actual flat screens.)

Edit: but also I want to play a round of Hack¹ with that shader.

¹i.e., quest for The Amulet of Yendor; you might know the newer incarnation, NetHack, but I didn't play that until flat screens, I think; the CRT time would have been on Hack.

8 comments

Yeah, that looks like it's simulating the rolling lines that could show up in a video of a CRT, which is just an artifact of the camera and display both refreshing in similar fashions/at similar rates but usually not being locked to each other. A similar fixed lined/brightness gradient on a still photo is an artifact of a snapshot vs the persistence of vision effect that makes the screen look uniformly bright.

Some people were more sensitive to CRT flickers than others but it didn't look like that, even at 60hz (a low rate for a PC monitor). It was more a flashing-the-whole-screen-on-and-off-constantly effect; the effect of moving lines in videos move far slower than 60hz.

I had a bug last week. Some people on the team had certain files missing in ZIP-files generated by our back-end. So I downloaded the ZIP-files from the back-end and it worked fine for me. Asked them to sent me the ZIP-files directly, I could extract all files. I had no clue why it didn't work for them but I knew that they ran Windows. So I installed Windows 10 22H2 in a VM and as it turns out, having "->" in the filename causes Windows to ignore those files when extracting a ZIP-file.
> There's a "aux.rs", also a verboten filename in Windows.

That's not true.

> And then there were some that differed only in case, which honestly I don't know how we manage that, as the non-Windows side is macOS, and yet roughly once per year someone introduces two files, same name, differing case into the repo.

Sounds like a crappily maintained repo.

And for the historical explanation for why these filenames are special even with an extension, see https://devblogs.microsoft.com/oldnewthing/20031022-00/?p=42...

"Suppose you wanted the listing file to go straight to the printer. [...] So you typed “PRN” as the filename. Now, the assembler doesn’t know about these magic filenames. So the assembler will try to create the file “PRN.LST” and then start writing to it. Little does the assembler realize that the output is actually going to the printer."

Windows path handling is full of special cases and subtle gotchas. See https://googleprojectzero.blogspot.com/2016/02/the-definitiv... for a very detailed list.

Look, I just created a file named "aux.rs" on my Windows machine. It's not true.
I've seen this plenty of times, but maybe if was fixed in the last year or so. My issue was when trying to delete a Linux source tree that was git cloned on Linux onto a flash drive. Maybe the filesystem had something to do with it, but it was entirely impossible to delete it using any tool I know of in Windows.
I think they have changed it so that you can by now create files with forbidden names and an extension. But that's a somewhat recent change.

Also you could always create such names with the right APIs, so one application could create such files, but another can't delete them or open them.

Same. It's definitely not true
> That's not true.

Well, just for you, I've searched the Slack history. IIRC, this was inside a WSL session in Windows, but it definitely originated on a Windows machine:

  $ git checkout rename-some-files
  error: invalid path 'foo-crate-1/src/aux.rs'
  error: invalid path 'foo-crate-2/src/aux.rs'
  error: invalid path 'foo-crate-3/src/aux.rs'
  <more filenames with other errors>
One of those examples when religious backwards compatibility poisons the future for a much bigger user base
You can enable case sensitivity per directory. That moves the problem to making sure any tooling they use doesn't have an issue with that though. E.g. Sublime is capable of opening something like C:\Example\file.txt instead of C:\example\file.txt but trying to open both at the same time doesn't work. Normally Sublime would put the folder path in front of the name but on Windows it assumes the folder path is not case sensitive and performs the "is this file already open" check with case insensitive logic.

The story with enabling long file paths is even sadder. Explorer doesn't support them, for example.

> some files in the repo have ":" in the filename, which is forbidden. There's a "aux.rs", also a verboten filename in Windows

You're complaining 'bout 'doze, not devs. Come on, dude!

> (some business about CRTs but not whatever I expected with (absolutely correct-thinking) Line Feeds at the end of every line of text.)

Um . . .

Look, I understand that you didn't have enough experience to handle these outsiders, but that seems like the most understandable outsider group I can imagine. (And I don't have to imaging 'doze habits - I've seen a bunch up-close!)

Could they keep the files in WSL and run their IDEs in Windows?
IIRC, they were cloning in WSL, but AIUI at the time, WSL is still subject to the requirements Windows imposes on filenames.

(I'm not a WSL expert, so I could be wrong here.)

I believe colons being forbidden in filenames is an NTFS limitation and not Windows itself, but the specific whole filenames you can't use are probably part of Windows.

This colon thing has come up for me in the past when giving people access to a GNU/Linux file server with movies stored with colons in the names. I think using SMB or NFS on Windows, the files just didn't show. I refused to rename the directories for this one guy and instead copied the files to a second spot for him to grab. I really appreciate and enjoy putting colons in filenames and would not easily give it up.

WSL2 resolves these issues by creating a virtual disk instead of sharing the ntfs partition with Windows. Frankly though the fact that I had to type that sentence out is ridiculous.
Inside the filesystem shim, WSL will replace forbidden characters with unicode private use characters by adding 0xF000.
not sure about other IDEs, but VSCode has very good WSL integration for doing this iirc
You can type code inside a WSL shell and get a VSCode configured to work inside it.
Disclaimer, I dont use the crt shader, I just thought its cool that you can do that