Join the discussion

Write your take first — we'll ask for email only when you're ready to publish.

  • Hacker News
  • always shove it to `%LOCALAPPDATA%/Temp`, or `~/AppData/Local/Temp`, and don't think otherwise
  • No, don't. There are many reasons why a user may want to move the temp dir somewhere.
  • I have been pointing out these annoying things for decades with Microsoft. It’s funny because the “senior dev” know it all there person always used to have an answer. “Heh you see temp stands for temporary. Tmp stands for troubleshoot my pc. For debug logs. That’s why I’m a senior and you’re not.”

    As I’ve gotten more senior turns out I was right to question it and we can actually talk to the original Microsoft devs now and they explain the whoopsie and how they had to keep it for backwards compatibility.

    So then I ask why that excuse is valid, backwards compatibility, when many changes are frequently breaking core compatibility and active business flow (like New Outlook) and they go full hands off. Whoah I’m not the bad dev you’ll have to ask the new guys.

    You can’t ask the new guys. And they’re hiding behind leetcode screens. It’s no wonder why these real problems don’t get fixed and we have new outlook. It’s the senior dev from earlier who now works there. All the real devs are retired.

    Even when I do get a real answer from Microsoft on annoying things like the user home documents folder being used inappropriately by random programs or straight up forcefully deleted by onedrive in an oopsie, their answer they senior dev invented to give me or go on length about in a technical document or angry interview online is invalidated within 6 months when Microsoft just vibe pushes a random change that randomly alters how these things work in both not a good way and it invalidates their entire core argument.

    Just like notepad updates as another example off the top of my head. There are dev interviews talking about how this is a very simple program because it needs to be 0 risk. Then it gets a Microsoft auth login with copilot.

    The whole leetcode dev attitude and Microsoft culture really ruins the entire industry. We can’t have civil discussions. Everything turns into Nuh uh your argument is invalid because you don’t work at Microsoft.

    Google Chrome famously having chrome install into appdata to exploit and bypass admin rights is a core memory. That’s clearly not the actual intention of that feature for 3rd parties to use in order to bypass having administrator authority. But now this is retconned by the devs as an intended feature because chrome ended up being good at the time at having to sort out the mess of deploying a 3rd party exception program on millions of locked down business computers would’ve been a nightmare.

    by bgro
  • One of the first things I do (after using O&O ShutUp10++ of course) when setting a new installation is to create "C:\Temp\" folder and go to them variables to point there. Mind you, you have global TMP and TEMP, and you have user defined (which points to \Windows\Temp instead of %LOCALAPPDATA%/Temp) ones. All 4 will point to my folder and makes my life a lot easier in the long run
  • I didn't know it was such a chaos.

    So I guess the moral of the story is: Ensure they always point to the same path, or else...

    by xg15
  • > My recollection is that most CP/M programs were configured via patching.

    I honestly would have liked that better for a lot of programs than the dotfiles they litter all over my home directory.

  • You would've preferred binary patching of the executable? Really?
  • Yea this is something I'd love to see standardised, a distro that was able to enforce a .config folder somehow would be a winner for me. Think weve probably missed the boat though.
  • I'll take dotfiles I can grep and mange with a text editor over settings littered all over a central binary registry. But maybe that's just what I'm used to.
  • Well, they are supposed to be all in .config, problem is many app developers think they are special little boys that deserve its own directory
  • If people just followed the XDG Base Directory Specification, config file littering would be a non-issue. More and more projects adopt it, even holdouts like Firefox.
  • Part of the philosophy of the slightly odd suckless people is their projects are mostly configured by changing the source code and recompiling. This is I suppose a similar approach in a modern open source vein. Although their general asceticism makes their projects a bit of an acquired taste I suspect.
  • It’s similar to how Unix programs weren’t consistent on whether they look for http_proxy or for HTTP_PROXY, and nowadays many(?) are looking for both, but maybe not in the same order.
  • 1995-ish. Telstra (Australia Telecom). Probably about 50k desktop computers across the organisation. One day a small file turned up in everyone's network home directory called null. A *nix person had evidently had a go at writing a .bat file.

    Why do we need to adopt extant standards? (I was going to ask, why standardise? But realised that might confound the North Americans. : )

    by Jedd
  • Some Logitech drivers installation program (not sure which version or what product) did it too... found a file named NULL on my HD, and of course there was a BAT file with something > NULL.
  • What text was in there that he tried to discard?
  • >One day a small file turned up in everyone's network home directory called null. A *nix person had evidently had a go at writing a .bat file

    I assume that they first tried /dev/null which failed, so then moved onto just plain null?

    Otherwise it would not make sense that a unix programmer did this. More likely ula dos programmer misspelled NUL as null.

  • I'm confused by the CP/M reference. Author says it'll be important later then proceeds to explain how it had nothing to do with CP/M or the 8080 CPU.
  • could you quote the text you are referring to?
  • If CP/M had used environment variables for configuration, presumably there would have been an established standard for TMP vs. TEMP that DOS would have adopted. The real catch, however, is that CP/M didn’t have directories. Nor did DOS 1.0.
  • Agree, CP/M has nothing to do with the story, nor does the 8080/8086 sidetrack.

    The whole story is that Microsoft just never bothered to standardize, despite using it themselves.

  • Also, chances are programs chose “TMP” because file extensions in MS-DOS were 3 characters, max, and programs used to use “.TMP” for names of temporary files.
  • A great example of a decision that likely received little to no thought from an early developer but that has long legs and will stick around forever.
  • One table at the core of an S&P500 product I briefly worked on will always be named "attornies" because somehow nobody caught it early on.
  • There's nothing more permanent than a TMPorary decision.
  • < Rewind to 1973. The operating system common on microcomputers was CP/M

    OK. I love Raymond’s blog but this is crazy. Microcomputers existed only as a prototype in 1973 (things like Intel’s Intellec dev systems) and there were no operating systems for them. Strictly speaking, Kildall did start developing CP/M in 1973, but at that point it ran only on a simulator on a PDP-10 mainframe.

    1979, sure. 1973? Way too early…

  • > 1979, sure. 1973? Way too early…

    Which is fun, because this is the same time difference between 2020 and now

    And then we think we didn't have ChatGPT in 2020

  • Wikipedia says it was created in 1974, so something's definitely off with the time line here.
  • > My recollection is that most CP/M programs were configured via patching. At least that’s how I configured them. I remember my WordStar manual coming with details about which bytes to patch to do what. There was also a few dozen bytes of patch space set aside for you to write your own subroutines, in case you needed to add custom support for your printer.

    Huh. That is interesting, it was before my time, and I never heard of this :D

  • Some sort of still do. The stuff that suckless writes is generally configured by changing config.h and recompiling.

    https://suckless.org/

    Edit: oops just saw that this was already mentioned in another subthread on this page.