Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
MS Teams channels cannot contain MS-DOS device names (learn.microsoft.com)
444 points by tapoxi on Aug 10, 2023 | hide | past | favorite | 350 comments


Circa 1998 I was a teenage Linux zealot who would attend LAN parties carrying a Linux box. It actually worked -- at the time, WINE practically existed to support Starcraft, Quake 2 could run natively, and that covered like 95% of what people were playing.

One time I thought it would be funny to run a shell script that looped through every Windows share on the network and tried to open `CON/CON` on it, resulting in a prompt Blue Screen of Death for each machine.

For some reason my friends did not think it was funny.


This brings back memories. Every LAN group had that one friend like you. I'm sure you made up for it if, like my BSD friend, you were handy with network troubleshooting and always brought spare CAT-5.


Well eventually I just... provided all the machines... and the house... https://kentonshouse.com


You're a gentleman and a scholar.


This is really cool! Did you build a similar house?


Not similar, I built that house. (I'm Kenton.)

Or do you mean the new one, alluded to on the site? It's almost done... not ready to share yet. ;)


Great site - I am reading all your posts about the LAN party house now. Do you have the real estate listing of the house when it was up for sale? I'm just curious as to where it was located - you mentioned a sliver of land, and I saw the asking price ($2M in Palo Alto) so I'm curious to see what it looked like from the outside and its location, if you don't mind sharing!


Hmmmm even though it's not mine anymore, posting the address doesn't feel right... seems like it'd be violating the privacy of the new owners of the house. Yes, even though I did post the address publicly when selling it -- that listing is gone now so arguably privacy has been regained. (Or if not, maybe you can find it, heh.)

Sorry about that.

There are a few more pictures of the house on the architect's (my father's) web site: https://vardaarchitecture.com/

Look under "Residential - Palo Alto". But note that the furniture in these pictures was staging furniture that the real estate agents put in there to sell the house, NOT stuff I ever chose or used! (I hate it.)


@kentonv, if you see this, it looks like your father's website is potentially broken on mobile. See https://photos.app.goo.gl/3tcui1CXypZC3PfE9 - the photo is a tiny thumbnail on the right hand side. If I switch to desktop mode, it's bigger, but still pretty small. Probably due to the left sidebar being a fixed size and always on the left. I'm using a Pixel 2, but with the latest Android and Chrome version.


Yeah, I know. He's not a computer person, but somehow he managed to set up this web site without any help from me, which is kind of a miracle. Obviously the tech isn't great though. He doesn't actually need it to get clients or anything, he's retired, so whatever.

Maybe I'll help him put together a better site after the new house is done and ready to go on it...


Thanks! Your father's site and his work is amazing, including your house! And yes, I did end up finding the address and listing through a basic search, but your Dad's site actually has more and better pictures ;)

When you build your new Austin LAN-party-pad would love to see that.


Can I come over when it's finished? Please?


No way! The Internet is a small place. I remember seeing your original post and feeling very inspired to do something similar. One of these days I will find some time.


CAT-5, lucky you :) We still got zapped!


Was that over IPX? I don't think I ever configured IPX on Linux. By the time I was using enough Linux to run Starcraft on Wine, it already supported IP.


love this story very much. I had no idea WINE had been around for that long and was able to play starcraft etc. I have really great memories of playing starcraft with friends back in the day.... that game had enough staying power that we could all get into and out of in middle school and then again in college!


Wine is nearly as old as linux. First released in 1993.

I had some awkward conversations with my parents as a teenage nerd looking into "winehq". They didn't believe me that it had nothing to do with alcohol.


Your parent being concerned about you browsing something about wine?

You're definitely not be French/European. Here our parents give us wine :) American?


mormon family.


Thanks, Mormons are some of the most nicest and chill Americans I've met in Europe. Had no idea alcohol is taboo.


They're also good at getting security clearances since they never do anything, so those might've been CIA agents.


>They're also good at getting security clearances since they never do anything

I never understood why you should mass deny security clearances to people who like to "party".


They don't want people who might have done something embarrassing in their past, because foreign adversaries might try to blackmail them with that.


On the flip side, those are the exact people who often wouldn’t be embarrassed or ashamed of that kind of behavior. I’ve done a lot of things, and I’d openly admit just about all of it if anyone asked.

On the other hand if you do find a Mormon who took some liberties in an earlier time in their life…


As well as admitting everything, it's easier to get a government job if you never did drugs, seeing as they're illegal.


They're good at being CIA agents because they are supple and compliant and the CIA has tools to make that compliance into nationalistic zealotry that rivals the capabilities of most religions, having refined it through operations such as paperclip, etc..


They were already nationalistic, that's another part of being Mormons.


For me a more interesting way of putting it is that Wine is nearly as old as Windows NT whose usermode architecture it’s copying—first shipped 1993 as well! Even if development began around 1989 that and preliminary versions of various kinds were available from about 1991.


Even today, Blizzard games tend to run pretty easily on Wine. I always attributed it to them using a fairly old tech stack, but maybe it's the reverse and Wine development has just continued to go above and beyond for those games.


It was mostly on purpose, that Blizzard games worked well in Wine. We even fixed a few things in our code from time to time that accidentally made Wine emulation hard.


I know WoW is aware that's it's running in Wine. There are some setting greyed out in game with a message of not compatible when running in Wine.


It's still being played heavily and professionally in Korea and there are many non Korean tournaments too.

I watch pro matches everyday!


> heavily

Sadly not the case, as much as I love ASL the scene has zero new blood. SC2 really killed the Brood War scene, and League of Legends really killed SC2. The days of packing an aircraft hanger with 30,000+ fans for OSL finals are long gone.

I was invited to the Stormgate alpha, and while I can't say anything about it (NDA), I am hopeful it will bring new life into RTS esports.


It's still heavily played. There are tons of show matches and ASL which is good. There are newer players like Scan, and we had a couple new guys last season.

Is it in it's heyday? No. Is it still fantastic? Yeah.

KESPA killed Brood War primarily because Blizzard forced them to. Then KESPA itself died.

Lots of great BW still being played no question about that


IvOry just qualified for ASL. That’s definitely new blood.


Ah, good times. Lim yo han!! (Aka slayers boxers ? Right ?). As a Terran player, I was in such awe. And then came Flash (lee young ho), the GOAT. I watched every one of his games. StarCraft 2 never came close to the accidental perfection that SC1 is.


Classic! My favorite “anyone can do it hack” was ping flooding people during a lan-party

Good old memories


Golden era. We were different or the world around us?


Oh good old Windows nuker.


> Circa 1998 I was a teenage Linux zealot who would attend LAN parties carrying a Linux box.

Arch, I suppose.


Arch wasn't around in 1998.

I'm going to put my money on Slackware.


I think it was RedHat.

I had tried Debian first but switched to RedHat pretty quickly afterwards.

(Back then, RedHat had nothing to do with "enterprise", it was just the most polished Linux distro around. Ubuntu didn't exist yet.)

(These days FWIW I use boring old Debian, and I'm not a zealot about it. It works for me. Use what works for you, I don't care. I have a separate machine for gaming and it runs Windows. I know Steam works pretty well on Linux these days but Windows is still less hassle for games.)


Back when Redhat was the name of the enterprise releases and the open source releases.


I think there was no separate enterprise release at the time. But could be misremembering.


Red Hat Linux 6.2E was the first "enterprise" release they made. Basically just standard RHL 6.2 but with long-term support. This release can be retroactively thought of as "RHEL 1"; The proper distribution that debuted as Red Hat Enterprise Linux 2 was based on Red Hat Linux 9, with the similar promise of long-term support. Future RHEL releases are carved out of Fedora releases, the spiritual successor to RHL.


No you’re right. If memory serves me well, I used to switch between Slackware 3, redhat 2 and Debian 1.2(?) at about that time. I never liked redhat, enjoyed Slackware but ended up not enjoying the lack of a package manager, so Debian did the trick a few years later. There was a single redhat release. These days, just like you, I use Debian.


I ran Mandrake back then but also toyed with RH and Slackware. Back when all the leets ran enlightenment or fluxbox!


Ooooh that brought me memories. At the time testing (around '98) all the nerdy rage was on testing the different distros such as Caldera, Debian, Corel, Mandrake. I remember at the same time compiling my first kernel in FreeBSD (ordered the CDs from WalnutCreek website! what a time). My parents where not amused that I broke the home PC several times installing this thing over Windows


I used to love slackware, by far the best linux experience. It just worked well.


Probably. I just remember installing from a dozen+ 3.5" floppies onto my pizzabox '386 and breathing a sigh of relief when it booted.


I think I needed 17 floppies ... and I could only scrounge up about 8, so I assumed it wouldn't need the earlier ones again and reused them for later parts. It worked! I didn't use Slackware much though, as I had no way to connect that machine to the internet, so it was really hard to learn how to do stuff.


I think I actually still have an "Introduction to Slackware Linux" book.


I started with Slackware and was happy with it, but must admit that is entirely because my Linux book from B&N came with Slackware on a CD.


I still do. It still does...


I admit, I stopped using linux on desktop approx 2007. Since then, its just been macos and servers.

I've been considering going back to it though, but I know that I need to do it in measured steps.

Care to share any more about your slackware experience?


I’d bet RedHat 5.2.


That was my first. Then Slackware 3.6. Both as cover CD:s of computer magazines because that download was too much to handle on 56k.


if it were arch you'd know already


Sorry, how remiss of me! On behalf of Archoles everywhere: "I use Arch actually" (and so does my wife).


This is most likely due to those names not being allowed for files or folders in the Windows file system. MS Teams channels create a matching folder in SharePoint where file attachments are stored.


Microsoft, when confronted with a problem, think "I know, I'll build it on top of SharePoint."


Every time, it seemed like it was going to be so easy and powerful. Each time, it turned out to be impossible to implement relatively vanilla functionality.


If you think "I know, I'll use regular expressions" you now have two problems.

If you think "I know, I'll build it on top of SharePoint" the problem was inside you all along.


Is Teams built atop SharePoint, or does it just integrate with it?


Creating a new team makes a sharepoint group complete with calendars, a site, email addresses, and file folders.


I worked at a bank that had a windows-based trading system and for some reason created folders to hold the details of each book. There were issues when a trader decided to call a book "LPT1".


I've spent the last 20 years of my career working for investment banks. Never seen a windows based trading system. Frankly picking windows as a target platform for trading infra is asking for trouble. Everyone seems to know that and build on top of Linux. When was that?


It might have been risk management, tbh, if that makes a difference to you?


What is a 'book' in the context of trading?


short for "orderbook" - the set of pending trades pertaining to a client account


No, it's most often not related to any particular client. Rather the book is a list of all buy and sell orders that didn't match sitting there and waiting for someone to take the other side of the trade


Just an old name for a portfolio of transactions


Set of related trades.


I bet there is another vulnerability here, although they also seem to blacklist % and ..


\\?\GLOBALROOT\ anyone? Now you're opening devices from the NT object namespace rather than files.

Bonus: You can create the file C:\con\con using NT Native API filesystem calls. Someone even made a video of installing Windows into C:\con\con, and the kernel-side stuff works beautifully, and the explorer shell side dies horribly.


AOL chat would bluescreen a Win95 box if someone sent a chat message like “}s\con\con” - }s was the directive to play a sound


I believe it was more like: {s buddyin.wav}

At some point, I think it would only play sound files in the program's folder. I have the vague feeling that it was later changed to an AOL-created subfolder unique to each Windows user.


>the kernel-side stuff works beautifully, and the explorer shell side dies horribly.

So, just like running Windows normally then? :D


NT is Dave Cutler's best ideas for OS design, atop which Very Bad People piled the Win95 API and UX


most of those are the usual forbidden path and filename characters.

% is used to surround environment variables for interpretation, for example.


> the usual forbidden path and filename characters.

It’s pretty irritating when files and folders on my Mac can’t be uploaded to Teams due to this limitation. It’s only forbidden for Windows users.


It’s only forbidden for Windows users.

I think the only character that Macs don't allow is the colon. AFAIK, everything else is fair game, even emojis.

I just created a project with "ê" in the title. I wonder if I'll be able to share that with my Windows coworkers on Teams.


> AFAIK, everything else is fair game, even emojis

FWIW, I generally expect emojis to be more compatible than other symbols, because they have no legacy meanings - ex. ™ has never been a path separator, or indeed anything else.


Main problem with "emojis" is that they live outside the basic multilingual plane, and so make bad utf-16 handling really obvious. This is a blessing in disguise, because it acts as a no-brown-m&ms thing, since it's more unarguably broken than not being able to use cuneiform, or musical symbols.


Yeah, point; I probably should have said something more like "emoji shouldn't have alternative meanings, so they should work if your unicode support is functional (which is a big caveat)." On the bright side, yeah, emoji have been great at pushing things to handle unicode nicely and act as a... I dunno, natural fuzzing case?


The problems show up when that name gets stored in a VARCHAR column somewhere...


™ is not an emoji. It's part of the "Letterlike Symbols" block.


Oops, good point. I think I'm going to leave it as-is on account of not knowing of any actual emoji that HN allows, but yes that is technically incorrect on my part.


I think the confusion comes from the fact that some platforms render it as a drawing as if it was an emoji. I never understood why...


Speaking only for myself, the confusion comes purely from the fact that I think of all text as "ASCII" or "Unicode" (...or "something else that nobody should use in the modern era"), and I don't really distinguish within "valid unicode that isn't ascii".


™ is part of extended ASCII :)


> I think the only character that Macs don't allow is the colon.

Colon is allowed in the filesystem; it's displayed as a forward slash in the UI.

(There's historical reasons they do this: Classic Mac OS used colon as a path separator.)


And it was merely not recommended to use a fullstop at the start of a filename. Device drivers —perhaps just for storage devices — were usually named this way (and also marked invisible). There was an alleged chance the OS would try to load your non-driver file as a driver for the device it resided on. Though I was unable to make it happen.


Yes. NTFS has no problem with non-latin letters and emojis in file names.


NTFS itself has not that many forbidden characters (though ':' is one of them, it denotes alternate stream).

What people think about those CON, PRN, AUX, NUL etc are not filesystem limitation.

And while we are here - nor backslash, nor forward slash are used in NTFS. It can care less about what char do you use for a directory separator. Just be sure to update your APIs.


NTFS on non-Windows systems aside, I wonder whether there are any "pure NT" environments you can access in Windows where you can create and use these folders.


You can do some stuff under Cygwin that's bothersome under explorer.exe, like delete files with really long pathnames.


You just need to come in below whatever layer notices them. I'm sure they've been used to smuggle viruses in, so the layer that blocks them may get lower and lower.


I had to test it, but this is true. I just renamed my TODO.txt to [sobbing emoji].txt


Linux treats filenames as bytes and only disallows the ascii slash and null. All other bytes are fair game.


> [...] and only disallows the ascii slash and null. All other bytes are fair game.

There's also the special treatment of "", ".", and ".." (that is, a file or directory name consisting entirely of zero, one, or two dots), and the convention that a name starting with a dot is hidden.


> and the convention that a name starting with a dot is hidden.

It is a UNIX shell implementation level convention. The file system and the kernel don't care, and a shell is not obliged to honour the convention.


Yes, and it was an absolutely horrible mistake in the other direction. If I give you a path “./something/example.txt” it could be a file called example.txt in a folder called something or it could be a single file called “something/example.txt”.


> disallows the ascii slash


It looks like non-utf8 is not allowed: https://superuser.com/questions/204287/what-characters-are-f...

Maybe it goes without saying, but for completeness, / is not allowed in filenames, and neither is null terminator (0x00 or \0) on mac either.

On Linux, only / and null terminator are banned from filenames.


Sadly, you are not correct about slashes. They are allowed in filenames for Macs https://alexwlchan.net/2021/slashes/


Thanks for the correction! It seems more complicated after looking more into it.

According to https://en.m.wikipedia.org/wiki/Filename , reserved characters are:

HFS:

> :

HFS+:

> : on disk, in classic Mac OS, and at the Carbon layer in macOS; / at the Unix layer in macOS

APFS:

> In the Finder, filenames containing / can be created, but / is stored as a colon (:) in the filesystem, and is shown as such on the command line. Filenames containing : created from the command line are shown with / instead of : in the Finder, so that it is impossible to create a file that the Finder shows as having a : in its filename.

TIL about a 'carbon layer' and 'POSIX layer'


It doesn’t make sense tbh, it just causes confusion when someone is using terminal. Slashes in file names are forbidden everywhere except Mac, it needs to be changed in order to send it anywhere or use in some apps. But I think colon is used much more in names. I don’t get why did they do that.


Based on this logic, do we ban everything that is banned somewhere? Surely we can aim higher than the lowest common denominator.


Given the preponderance of 3 major operating systems, I'd think it's sensible for user-level applications to disallow creation of filenames that would cause problems on any of them. Except arguably that could even include using spaces or periods... obviously in an ideal world such restrictions wouldn't exist, but I'm not sure how to realistically push for such a world. E.g. my suggestion would be to reserve non-printable characters (below Ascii 32) for use as separators/delimiters in as many contexts where that's workable. Obviously some sort of convention would then need to exist as to how they were displayed and typed in, and I very much doubt I'll ever see it happen, but I'm sure it would solve a lot of mis-parsing bugs that show up with frustrating regularity.


I suppose I’m actually criticising Microsoft and the backwards compatibility that is now dictating practices due to long gone limitations.

It is painful being forced up update things due to software changing underneath you, but there must be a middle road.


I see your point, but forbidding slashes, the weird Windows reserved names, maintaining case insensitivity (also Windows), and forbidding colons doesn't seem like the craziest restrictions on file names. It can definitely get out of hand, though, if you start excluding too much stuff. IIRC, Azure doesn't even allow slashes in storage account names which greatly limits naming schemes and goes too far in my opinion.


Slashes are used in paths, so most programs that aren’t Mac-exclusive would use them to build a path to file. To make it work properly in cross-platform programs you’d need to write platform-specific code to handle that. It just adds complexity and possible errors. Even system terminal doesn’t display it as slash and it doesn’t work if you write slashes.

For users of other platforms (at least 90% of desktop market) it would just display as slashes. Just not implementing this workaround would make it predictable when moving and using files.


“:”? Really? It’s not 2001 anymore.


I guess you're criticizing Microsoft's NTFS, since it cannot use colons, either.

CON:? Really? It's not 1974 anymore.

People in glass houses shouldn't throw stones.


? No it is not 1974, but not everything is better.

Edit: argh, HN deleted the emoticon. Ironic.


Once I planned to share files between a Mac and a Win PC through a product synching folders but gave up very soon due to the constant errors and problems with file names worked in one but not in the other, dominantly filenames that I did not choose but received (e.g. link dragged from address bar to folder, but others too) but some I choose following some preexisting logic.


And matching Active Directory groups. It's kind of cool to use them, because it's a really easy way to let the users administrate access to resources without opening a support ticket.


sharepoint has its claws in msft and it will forever be their achilles heel.


SharePoint stores files as binaries in a SQL database (or a reference to an Azure Blob Store). The filesystem doesn’t come into play.


But it now has a feature to integrate seamlessly with OneDrive, linking or replicating a folder on the user machine. Hence, I expect it has the same limitations in terms of naming.


OneDrive for Business (not consumer!) is SharePoint. It has the same restrictions as SharePoint (nb: because they're separate Web Applications, Microsoft can enable/disable features independently between "OneDrive" and SharePoint).

Yes, OneDrive client is restricted by the Win32 API in terms of allowable file names/path length (which is now 32k but Office doesn't respect MAX_PATH and implements its own ~250 path length limitation).


I was about to say "Which is essentially leaking the existence of something terrible inside. They should be embarrassed to say something like this in public. Like saying you can't have %s or $PS1. Why the hell not? What are you doing with this user-supplied input?"

But maybe it's more about what everyone else might do with a channel name. Ie they might cut & paste it anywhere, and I guess windows users aren't expected to escape their own strings when pasted into cmd or powershell or wsl.

The teams code itself can probably handle it just fine, but maybe not all the unknown janky random things out there that might handle channel names.

Other people have pointed out the SharePoint folders associated with the channels. Not sure I would excuse that myself since it's easy enough to just escape or modify or encode to create a safe version for the directory, but maybe it's important elsewhere for the channel name and the directory name to be identical. Within one app you could simply encode and decode both the channel name and directory name the same way and totally hide the encoding from the user, but if the directory is used outside of the app, then it would look bad with URL encoding or something that everything else will just display as it is, not decoded.

So the directory has to be safe for everything else, and so the channel name has to be the same.

Essentially choosing to have these limits rather than have directory names that look ugly sometimes. It's ultimately not even a safety or breakage thing, just a cosmetic thing. All directories will always look natural and good, because they don't allow anything that would have needed to be encoded.


> leaking the existence of something terrible inside

If you should get the opportunity to look at a raw (DNS) NXDOMAIN passive DNS (PDNS) feed there's a lot of plain brokenness, but the nuggets can be truly alarming. This is what happens when translating between naming services: naming services typically have application domains, and names in one context are interpreted differently in another. Bobby Tables is well known, but how about that special file "-rf"? Was a time when the happy path for Active Directory essentially trusted DNS domain names implicitly for things like file shares. Sounds ok until you realize executable files might be on those "drives".

(Honestly I don't find the string "MS-DOS" anywhere in that document.) (Edit: Did find the reference to e.g. CON, LPT1...)


Looking at the list of characters and character ranges the omission of 7F is curious.


If my memory serves me well, 7F was historically used for the «Delete» key code, and outputting it on a real terminal (or in terminal emulator), would result in the in-place text deletion from the output.

Not that it has been relevant in last 2-3 decades tho.


> essentially leaking the existence of something terrible inside

It's just a restriction imposed on SharePoint folder names bubbling up. Nothing fancy.


i was going to write a bunch of suggestions for solving the problem but then i remembered i hate microsoft


I at least upvoted. This is the most level headed and sane reaction to this article.


Name checks out.


Those should obviously be UUIDs. Labels and titles should be a simple changeable, internationalizable attribute.

Like usernames. You don’t use usernames as primary keys for anything, do you? What happens when people marry?


Extremely relatable post. I worked someplace that had a policy of absolutely never changing your Active Directory username because it was the primary key in like a dozen internal systems. Someone finally made a massive stink about it to HR when their name had legally changed but IT was forcing them to use their old name (and they were absolutely right to complain. It was a ridiculous policy only in place due to terrible architecture). They still defaulted to telling people no but they did at least document all the highly tedious manual steps necessary to change the name in all affected systems if (when) another employee refused to take no for an answer.

Was certainly a great lesson in schema design, among other things.


> You don’t use usernames as primary keys for anything, do you?

HAHAHAHHHAAHAHA

Seen this so many times I literally laughed out loud.


Windows actually uses SIDs to map internal users to windows settings such as profile locations and group policies. Open regedit and under HKEY_USERS there will be the SID for your user account which maps to HKEY_CURRENT_USER.

Linux has UIDs that map to the username.

Both methods allow for changing the user name without having to change permissions on files. Both need manual manipulation to transition the user's folder name to the new username. Both also allow for creating a user folder that does not match the username. Example HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList on Windows.

Best practice and reality are two different things. Even Microsoft often will use the fully qualified user profile path in their coding instead of %USERPROFILE%, example would be OneDrive. Just look at the Environment key in regedit for the current user.


I too love folders with 200 UUID subfolders in them as well as URLs with 14 different UUIDs.


And what happens when you sync sharepoint to your windows files?


> Like usernames. You don’t use usernames as primary keys for anything, do you? What happens when people marry?

well it's extremly painful to rename the primary mail address or the UPN when it comes to microsoft 365 and active directory, especially in a hybrid environment. of course you can change upn's but it's definitly some kind of "primary key" for a user. in fact most systems at least use a UPN


> You don’t use usernames as primary keys for anything, do you?

Sure you do. Saves doing joins all over the place just to get someone's username. Makes hand writing SQL easier.

Apply head to desk.


It goes lower than that. Try creating a directory called "LPT1" in DOS


omg


Or the terribleness falls one down very fancy?


> I guess windows users aren't expected to escape their own strings

Eh... When did the users of any kind of system start to fit that expectation? And what is that utopia system?


Maybe they do and maybe they don't, but I am certainly expected to deal with whatever the results might be if I paste something into a terminal.

I know there exist terminals and shells that do try to be "helpful" and do auto-escape pastes, but that just breaks things that must not be modified, when the only reason you're pasting is because you need it to be an exact copy without any risk of human typos.

Some are less invasive and just warn when there are included \n before proceeding, but do not presume to munge the data.


AWS has character restrictions on virtually everything.

The message bodies of SQS messages has restrictions on which whitespace characters can be used.


I noticed this recently too. We set up alerts on cloud watch logs and I tried to put an emoji in the alert message, which delivers to an SNS topic, which goes to an email. And cloudformation complained loudly that there was an unsupported character in the alarm message.


they're SharePoint limits, man. Teams is backed by SharePoint and it's not a secret, nor is it embarrassing.


> nor is it embarrassing

I worked on a sharepoint project once. Let's just say I'm not putting it on my resume these days.


I avoid putting stuff on my resume that I don't want to work on again. I just pretend to re-learn Sharepoint for every new job I have


It used to change so frequently that I didn't have to pretend.


> nor is it embarrassing

Isn’t it? The folders work fine on a Mac.

Teams is not a things of beauty, and is rough as all hell for daily users.


It isn't. Services have limitations, it's nothing new. This isn't about the portion of the app running on Mac, or Linux for that matter, this is because the app is backed by a service that has a name limitation and that bubbles up through teams names.

In the end it's no different than if some service doesn't allow all numeric names or names to start with numerals or be too short, of which there are plenty of constraints on plenty of services.


I think I expect more from my tools than you. I have a fair idea why the behaviour is there, I just don’t accept that it’s ok.

There are problems large and small throughout the app and it really feels like someone went ‘close enough’ and called it done.


And SharePoint itself is backed by the Windows Filesystem, which respects a lot of old DOS stuff for backwards compatibility.


This is wrong when it comes to content stored in SharePoint, of which resides in content databases or a remote blob storage, but the file names are in guid format, not the source file name, which wouldn’t work for a file of any name and SharePoint due to shredding.


It is MS SQL Server, but I guess that also has its own issues with reserved names.


Try creating a value in a SharePoint choice column that has ;# in it, and you might not be so certain this isn't being done because MS don't trust their own code.


;# is the Choice column separator value. That restriction makes sense in that context.


But it doesn't restrict you! You can create a choice field with a value that contains ;# and select it, but then it can't display correctly. Relatively minor bug as bugs go, but still...


Just tried in SPO (modern UI) without issues.


Might only be an issue for multichoice fields.


Why is it that most "chat/conference" apps become horrible sooner or later? I still remember when teams used to be an OK app. It even had a Linux desktop client. I remember when slack was actually fast, I remember Skype out being more reliable to make phone calls than my mobile/cell service. Today slack is extremely slow if you add few organisations to it (but at least you can add more than one). Teams has deprecated their Linux desktop client and the only way to use it on Linux is via chrome, but wait, if you use it as part of office365/sharepoint you need to use Firefox for "some" sharepoint links. So essentially you need 2 browsers at all times. Chrome for teams (screen sharing and video), Firefox for some sharepoint links.


Because believe it or not, a chat/conference is the most easy gateway to an "everything app" just like with WeChat. Afterall, a chat/conference app is a microcosm of the "internet".

Your chat app is great but imagine if we can send/share audio clips too.

Your chat app is great but imagine if we can send/share video clips too.

Your chat app is great but imagine if we can send/share live video too.

Your chat app is great but imagine if we can send/share money too.

Your chat app is great but imagine if we can send/share conference meetings too.

Your chat app is great but imagine if we can send/share calendar invites too.

Your chat app is great but imagine if we can send/share food delivery requests too.

Your chat app is great but imagine if we can send/share gaming sessions too.

Your chat app is great but imagine if we can send/share X too.

There is no limit on X. The internet is about sharing X. a chat app is about sharing X. There is no bound to how much it can grow really.


"every program expands until it can read email... make that netnews..."


Instant Message Chat + Anything Else isn't actually a model for anything useful. It's a gross kitchen sink with chunks of forgotten meals clogging up the drain. The insult is these companies have nothing other than "productivity tool" as a label to slap on the side of this fetid and entirely unproductive mess.


That's why I'm not enthusiastic about Musk's vision for X...


I completely agree, I did a very small chat app just for fun, I thought, this is only going to take me a couple of days and before I realized it, that couple of days became weeks and it never felt finished, there was always something to add.


The key is to be terrible and simple from the beginning. IRC works just as poorly today as 30 years ago.


Which is why its usage has declined ever more and more thanks to Discord, which is a pain in itself. Freenode's collapse in particular pushed a lot of people to just say "fuck it" to IRC in general.


I think it is already killed by telegram even before discord emerges. The only thing you can't do on other IM other than IRC is having a really big chatroom that contains thousands of people. But it is no longer the case after telegram.

BTW, i think an irc bot is a good target if you are starting to learn writing a network program. The protocol is really simple(don't need complex xml parser...etc) yet requires all technique you need to write a proper client.


IRC is so trivial that hosting your own is easy. Telegram is awesome but it's still centralized.


The same argument applies to discord. Well discord is great but no self-host, and teamspeak can be self-hosted.

The reality? Nobody cares. Even for most tech related communities. Most people just want somewhere they can share a join link to other to allow other to join without hassle.


Although, at least what works today works tomorrow on IRC. Same cannot be claimed from MS Teams or Discord ...


Check again in 30 more years. I’m guessing discord will have zero users and Teams will be on its 10 different product name.

But I expect IRC will still have its users.

That’s like comparing the US empire to the Roman empire. They haven’t been around long enough to talk about popularity.


Freenode collapsing had everything to do with humanity being terrible and nothing to do with IRC itself.

Given similar people, similar collapses can happen to Discord or any other communication medium of your choice.


I think part of it is the constant drive to add features – sure, we can do chat and video! But, what if we put background blurring in there? Crap, Zoom has polls, we'll have to add polls now... well, shoot, if we're cranking out features like this and iterating quickly, we might as well use Electron.


The market rewards features and integration, not performance, as long as an app is usable. Developers devel... I mean features features features.


Because after your lean, highly-productive startup team creates the app that everyone loves, you get a bunch of funding and hire thousands of extraneous software developers and then have to find something for them to do.


Thousands of engineers and managers and product designers who can only get promoted if they look successful, and who can only look successful if they can add features.


Wait, the MS Teams desktop app is deprecated? Never got any message about that ... Guess I might soon be forced to use double the evil, in Chrome and Teams in Chrome? Wow, the world becomes more dystopian by the day. Perhaps I should quit my job when I am forced to use Chrome. Well gonna use the desktop app for as long as I can. They will probably never fix their broken shit app, so that one can use it from any browser.


> Why is it that most "chat/conference" apps become horrible sooner or later?

To 'become' horrible there has to have been a period where it wasn't. AFAIK that doesn't apply to teams, lol


The app that does everything always seems to stink.

It's no coincidence that my favorite note taking app is ... Apple's Notes App. I've used other apps but I've found that all that heft from all the extra features makes it more of a hassle for me in the end.

I get how it happens, even my current employer / small team are looking into internal documentation routes and ... oh man the list of things people want just goes on and I fear leads to some beastly solution.


It's easier to add things than fix annoyances.


Entreprise wishes i guess? Just look at all the group policies for windows update..


Ahahaha, I love this! I love how this new fandango thing harkens back to the earliest days of MS-DOS when it ran on a 086 or 286, back in the early (very early) 90s.

Have to respect MS' backwards compatibility fanaticism. Impossibly as if a native port of MS Teams would be created for MS-DOS 3.1 (hahahaha). When more plausibly the MS Teams servers run on an ancient crazy proprietary MS-DOS 3.1 mainframe (still implausible, but hey).

I know that this device name restriction also applies to Windows file names, so it's not that surprising (if you are inclined to be less fun than possible), but if you like fun, you can pretend the former.

Relevant frag link: https://learn.microsoft.com/en-us/microsoftteams/limits-spec...


earliest days of MS-DOS when it ran on a 086 or 286, back in the early (very early) 90s.

About a decade off: MS-DOS was running on 8086 in the early 80s.


Oh my god. Well i didn’t receive my first one until the 90s. And i grew up thinking i was middle class, my oh my.


depending on your country they might not have been availible before


Well, it's surprising. You can create those files from WSL, but you cannot create or delete them from Windows, that just make no sense. It's more like MS doesn't care to fix those issues. There is no DOS layer anymore in Windows 10 or 11.


Agree BC is a laundable goal and appreciate their efforts. Though I do wish it didn't include limiting passwords to obscenely short lengths or absurd subsets of characters.


Yeah those 8+3 file names sure birthed some creative abbreviations. Necessity, mother, all that


Whenever I create a filename that is long or has spaces, I still pause and worry "okay, what might break if I do this", even though such concerns probably died a couple decades ago.

Actually scripts breaking if files or paths have a space in them seems to be a thorn in the side of dev/ops/it folks that never goes away, does it?


Unix shell scripts will break when filenames/paths have spaces if variable expansions are not quoted, resulting in word splitting and filename expansion (globbing). This is something that is drilled into learners by all good teachers, e.g., https://mywiki.wooledge.org/Quotes#When_Should_You_Quote.3F


Wait until you hear about `make`, completely cementing the idea of '_' as space for decades to come [1]!

Related, any time I join a new group, that uses bash in any capacity, I introduce them all to the `shellcheck` utility [2], and run a shell script of the person with the largest ego through, as a "demo".

[1] https://stackoverflow.com/a/9838604/1487072

[2] Online version: https://www.shellcheck.net/


Awesome! Thanks for introducing me to this. I mean my ego ha


On Unix perhaps. Windows forced IT folks to deal with the issue by having folders like "Program Files". Even the user's folder used to be in "Documents and Settings" (but they backed down from that eventually and now it's just "Users").


To this date one needs to be careful with executing applications and spaces in the path.

For example:

    D:\test>dir
    ...
    08/10/2023  09:29 AM    <DIR>          .
    08/10/2023  09:30 AM    <DIR>          Foo Bar
    08/10/2023  09:35 AM                79 Foo.bat
    ...

    D:\test>dir "Foo Bar"
    ...
    08/10/2023  09:30 AM    <DIR>          .
    08/10/2023  09:29 AM    <DIR>          ..
    08/10/2023  09:35 AM                79 Foo.bat
    ...
        
    D:\test>type Foo.bat
    @echo off
    echo Executable: %0
    echo Path to executable: %~dp0
    echo Params: %*

    D:\test>type "Foo Bar\Foo.bat"
    @echo off
    echo Executable: %0
    echo Path to executable: %~dp0
    echo Params: %*

    D:\test>Foo.bat hello
    Executable: Foo.bat
    Path to executable: D:\test\
    Params: hello
    
    D:\test>Foo Bar\Foo.bat hello
    Executable: Foo
    Path to executable: D:\test\
    Params: Bar\Foo.bat hello
    
    D:\test>"Foo Bar\Foo.bat" hello
    Executable: "Foo Bar\Foo.bat"
    Path to executable: D:\test\Foo Bar\
    Params: hello

    D:\test>
Mess up the quotes and you're executing something one level up.


Right, but my point is that "Program Files" &co were so common that it forced IT people (and everybody else) to handle this correctly. Executing something one level up is not the kind of bug that's going to be unnoticed when it'll be hit so often.

(btw most IT folks prefer powershell, if only because all the management tools are powershell modules)


Nice example!


> but they backed down from that eventually

Only because they were started to hit MAX_PATH there:

    C:\Users\Johnathan Aparecido da Silva\AppData\Local\ASUS\ASUS System Control Interface\AsusSoftwareManager
    C:\Documents and Settings\Johnathan Aparecido da Silva\AppData\Local\ASUS\ASUS System Control Interface\AsusSoftwareManager


The `subst` command provides an easy way around that. Link the last folder somewhere closer to the root, to make longe-than-255 paths accessible. Then, when you're done, remove the link and your files are protected from pesky things like virus/malware scanners.

I used it to hide my old virus/malware collection, made from what my computer was infected with through the years.


This was actually genius, though it was/is so annoying typing these verbose paths


Agree. Those short abbreviations have a kind of crunchy sonic quality when you say them that’s satisfying.


Brevity forces thought, which I prefer to "Putting a Sentence in a File Name.docx".

FORTRAN originally had the same limitation for function names, and that lead to some classics such as GEMM and SAXPY.


When it comes to file names, I disagree that brevity serves a useful purpose. I name my files like I’m an Amazon reseller so that I’m sure to find it with Search later no matter which detail I remember. “Budget Spreadsheet (worked on with Jane) with projections with and without buying a new Tesla Model Y or Chevy Chevrolet Bolt - 2023 2024 2025.xlsx” that’s my idea of a file name.


If it floats your boat, you do you my dude.

But that being said, you're the reason why file systems are abstracted away more and more with all file system queries force fed through some kind of search engine.


> you're the reason why file systems are abstracted away more and more

Citation needed. I'm pretty sure the reason that happened is that Gen Z (and heck, definitely a good chunk of my millennial generation too) weren't ever taught what files and directories even are, so for them to be able to manage, product designers moved to a combo of "Your documents live inside the app you made them with" and "You search for your documents and they'll come up." Notably though, they never solved the other problems the filesystem solves, such as "but where are my files actually, I need to move them between devices or give them to another person."


Modern OSes can search within files for text, which mostly obviates using the filename for keywords.


I bet there are some that do a good job, but my "modern" OS (hint: it's the one that probably has 10x the engineers working on 'cool' UI animations than on the search backend) is absolute trash at relevance when searching contents. Not to mention slow.

A spotlight search for Chevy I get every document on my system that ever mentioned Chevy in random order. Maybe 1000 documents (or 10,000 if it helpfully decides to pull in e-mail, and thus picks up 9,000 marketing emails). If I search names for Chevy I am going to find the file I mentioned and any others where a human decided the file was about a Chevy. Same for Jane. If that's my partner, adding her name will just pull in every document that's ever mentioned her, like every tax form ever. But files named after her is a much smaller set.


They can also search images for subjects, location, etc.

Still, it would have been nice if a standard metadata format could be included with each file, in a way that survives file transfers.


Hahaha! That’s my idea of a file name, too!


Those two are obviously GetExtendedMemoryMap and Saxophone.


I agree with that too. If it works it’s like ideograms or iconography.

Woah, your examples: https://www.ibm.com/docs/en/essl/6.2?topic=vss-saxpy-daxpy-c...


Very loosely related, but I really dislike the excepted design pattern for that cases where functions names are something like AssertThatOnePlusOneIsReturnAlwaysTwoAndNeverFive. It looks ridiculous, smells like a hack, and I cannot think of any reason why giving a description of the test couldn't be handled by the testing framework in a more graceful way.


Me too, I prefer function names like “assert_that_one_plus_one_is_return_always_two_and_never_five.”

All kidding aside, but I gave up on this argument because I think people either get it or don’t and aside from trying a little conversation or something with guidance it’s a “can’t fix stupid” situation.

People usually want to explain why it’s so important and that’s worse than suffering their long function name.

I think it’s better to just accept ridiculous than to try to get consensus on what’s ridiculous and a spiral of wasted time.

The upside is that it doesn’t matter any more since long function names are supported and work. And autocomplete means it’s just as easy to use as “ATOPOIRA” or whatever madness they would name it with some restrictions.


Reminds me of the rumor that the reason it went "Windows 7", "8", "10" and skipped "9" is because the fear of a codebase that went:

  if(version.StartsWith(“Windows 9”)) {
    /* 95 and 98 */
    ...
  }


Is the Windows version ever exposed as a string in the Windows API? Seems strange in my mind, but I have no experience with Windows. On the one hand it sounds like something Microsoft would do for backwards compatibility, but on the other hand it seems like a weird API to provide.

I found GetVersion[1] but that returns the version as two numbers.

[1] https://learn.microsoft.com/en-us/windows/win32/api/sysinfoa...


You're imagining that all developers do things properly. I've seen Bash code that used a regex to get the first two digits from `python --version`. Hopefully they'll never release a Python 3.10!


I don't know if the rumor is true, but even if Windows itself doesn't provide an API that looks like that (I also looked around real quick and didn't find anything), it's not unreasonable that there could be libraries that provide the version that way.


The rumour is not true, despite reddit's insistence. Windows exposes it's version is a series of numbers, and even if it didn't, Windows 9 could have returned "Windows Nine", "Window v9" or loads of other things.


Words: forms, CON, CONIN$, CONOUT$, PRN, AUX, NUL, COM1 to COM9, LPT1 to LPT9, desktop.ini, _vti_


I was about to say "Which is essentially leaking the existence of something terrible inside. They should be embarrassed to say something like this in public. Like saying you can't have %s or $PS1. Why the hell not? What are you doing with this user-supplied input?"

But maybe it's more about what everyone else might do with a channel name. Ie they might cut & paste it anywhere, and I guess windows users aren't expected to escape their own strings when pasted into cmd or powershell or wsl.


The Something Terrible in this case is early DOS which did not have separate folders. So the device files were in the same namespace as the user's files, so the user couldn't name a file CON or LPT1. These are preserved for backwards compatibility. To this day you can write a program that writes to a CON file in any folder, and the program will print the write to console.


Another interesting aspect of this, which I remember specifically from reading MS-DOS manuals in the 90s as a kid (I was an incredibly fun 12 year old) is that this choice was an intentional one done in the name of flexibility. These device names were correctly written with a colon, but you are allowed to omit the colons. For instance:

copy con lpt1

And

copy con: lpt1:

were interchangeable. If they’d chosen to not save users keystrokes and force colons when referencing devices, I’m not positive, but I think it would have eliminated the need for many of these reserved words in file names in general.

Also, side note, the “copy con outputfilename.txt” idiom is one that I still can’t ever remember how to do the equivalent on UNIX/Linux!


> Also, side note, the “copy con outputfilename.txt” idiom is one that I still can’t ever remember how to do the equivalent on UNIX/Linux!

cat > outputfilename.txt


But it's not CTRL-Z to end, right? That's the part I forget every time :D


One of my favorite bbs sig tags was "REAL programmers use COPY CON FILE.EXE"


This has actually changed a bit in the last few years. In Windows 11 writing to `.\CON` will write to the file but writing to `CON` will still write to the console.


> What are you doing with this user-supplied input?

Creating Sharepoint shares which can be mounted as network shares in Windows where these filenames are not allowed?


I thought this as well but there's plenty of dangerous commands that aren't escaped here. I'm assuming it's a limitation of it actually writing something to the filesystem, hopefully your own (with the desktop app) and not one in Azure.


> I was about to say

Yet you said it twice[1].

[1] https://news.ycombinator.com/item?id=37076913


In the mid-90s there was a fun and short period of time where IRC clients like mIRC could be set to auto-receive files through DCC.. and would happily write to names like LPT1 (which of course would just write the data directly to the recipient’s printer)


Also, send a COM1 file containing "+++ATH" to someone you dislike to see them disconnect. I just made this up but it should work, right?


For the absolute worst modems, I believe you could just send that in a PING on IRC and their client would write the string back and hang up


Now I actually wonder were there ever any machines that had LPT9, COM9 I could barely see.


If you do embedded stuff you can easily get above COM100 if you're doing something like testing (if a USB to serial converter has a serial number, it gets a unique COM port). Although I don't think these high numbers have any effect on the file system, just the legacy low numbered ones DOS could have.


MSDOS 3.3 had COM1, COM2, COM3, COM4, LPT1, LPT2, and LPT3. LPT4-9 and COM5-9 was not part of MSDOS.


IIRC those were mapped to specific I/O and IRQ Ports back in the day.

  COM1: I/O port 0x3F8, IRQ 4
  COM2: I/O port 0x2F8, IRQ 3
  COM3: I/O port 0x3E8, IRQ 4
  COM4: I/O port 0x2E8, IRQ 3
I also remember, there was a while where there was no IRQ sharing. So some machines couldn't use all the COM ports available. Or you'd add in like a modem, and would have to disable the onboard COM port if it was using the same IRQ.


Back in the day many of my clients had Windows NT/2000 machines running RAS or RRAS with multi-port serial cards connected to modems for employee remote access. Usually these would be 8 or 16 serial ports per card with multiple cards installed per server.


You can reassign real device to any of these names


Reassign and actually use all of them are different things.


General tip for structuring user data. Try to treat it as obscure blobs, whenever possible.. Imagine it's encrypted so it's not even printable/human readable.

> forms, CON, CONIN$, CONOUT$, PRN, AUX, NUL, COM1 to COM9, LPT1 to LPT9, desktop.ini, _vti_

If they have to restrict those because some user input is going straight into their FS, then they mucked up. Probably should have been given a safe ID (perhaps uuid4, perhaps something more like a digest of the channel name instead of using the user input directly.

For me it's a smell when someone says "You cannot use these characters". I automatically think "Why not? You're not using this unencoded or plaintext, right?" eg passwords, or usernames, or content that will show up on a webpage like a comment or such.

This all being said, perhaps it's just an easter egg gone sideways... Perhaps they were just trying to have a bit of fun :)


It's bad, ok... But honestly what's the goal? To let people name anything, including the name of a channel, anything they like, like, say:

    "rm -rf /*"
Wait, I've got better: that rm -rf, but written "fr- mr" with RLO left/right overrides.

Surely that is something to aim for because nothing shall ever go wrong?

Thankfully having a file named https://example.org is illegal in Linux (and Windows too right?).

Seriously: is this a problem of you? And if it's a problem, where do you draw the line?

What about codepoint 0? What about Hangul fillers and RLO characters: do you think applications who refuse these do suck?

There are, thankfully, limitation on what filenames can contain. And I think the restrictions aren't anywhere near restrictive enough. Same for usernames, same for channels, same for oh-so-many things.

Does anyone really find it problematic that, say, Twitter only allows visible alphanumeric characters and underscore? (and 15 chars max)

This seems very smart to me. I take that any day over longing for people being able to use poop emojis in their usernames and channels names.


While you can't have a file named https://example.org you can absolutely have a path like that, as internal duplicate slashes are ignored and you can have a directory named "https:" with a file named "example.org"


I've found it better to use dd to wipe out data than an rf.


If this IS a case where the title of a channel is used as a SharePoint folder, I’m surprised there isn’t some standard way to escape specifically these strings? I know it would break compatibility for applications that rely on these magic device files, but SharePoint should NEVER actually want to speak to COM1. Weird to me it isn’t handled already in SharePoint!


SharePoint can sync with your filesystem on Windows, and Windows/Win32 doesn't support those names for backwards compatibility.


Does this imply it's writing a file to the fs for its internal storage, with the name matching the channel's name instead of a channel ID?


Not necessarily - it could mean that at some point they believe they'll need to create folder or file with the same name as a team, and they don't wanna have to deal with weird collisions.

It's been a while since I've used Teams+Sharepoint, but I vaguely remember being able to have a Sharepoint workspace per team channel, and then being able to mount those workspaces as a shared/network drive. Stuff that might end up in the workspace is like... shared/uploaded files or something?


  It's been a while since I've used Teams+Sharepoint, but I vaguely remember being able to have a Sharepoint workspace per team channel, and then being able to mount those workspaces as a shared/network drive. Stuff that might end up in the workspace is like... shared/uploaded files or something?
This is correct. Every channel is backed by a Sharepoint folder (maybe this is configurable?) that contains stuff like uploaded images, videos, recordings and transcripts of meetings, etc.


It's hilarious on Linux you need chrome to use teams for screen sharing / video to work, and Firefox for sharepoint file sharing to properly work.

If someone shares a file on a channel, you can open it in chrome. But you can't share any files yourself, because either the upload button doesn't work or when it does it looks like you shared the file in the chat for a split second then it dissapears.


This%20is%20what%20escape%20sequences%20are%20for.


If these folders are user-visible (for example browsable in SharePoint) then this leads to a bad user experience. The downside of restricting channel names needs to be weighed against the downside of needing to escape the SharePoint folder names.


I think it only implies they worry about people cutting and pasting channel names into other things like random powershell scripts.


Could be someone taking DRY a bit too seriously, using validation code that is shared with places where the names do matter.


Yes. Or something equally head-scratching.


Teams is so weird, “ Number of org-wide teams allowed in a tenant” is limited to 25.

So my company can only have 25 “general” teams.

I think it would be neat to learn the rationale behind some of these settings.


The 5² limit seems small, but at least you can have 500,000³ teams in Microsoft 365 Office organization - 1.25E17 should be plenty, that's around 15M teams per person on the planet;)

Perhaps they should rethink the use of numbered superscripts for notes in that table....


Probably to protect people from their own ignorance.

If you are participating in 25 teams, it's likely already too many, general or not.

Having to navigate 25 teams that are full of stuff doesn't concern you sounds like an absolute nightmare.

You'd burn out everyone in the organization with a setup like this.


And this is about organization wide teams, meaning those teams that people are automatically joined in, with up to 10000 members... So probably something you want to steer people away from.


You want the ENTIRE company to be auto added to more than 25 teams?


I don’t want the entire company to be added to any teams. Maybe one.

But I think it’s funny that someone said “20 is not enough but 30 is too many.” And then implemented it.

Setting such an arbitrary limit so low is what is interesting to me. Fight for an opinion of “none” or “one and only one.” But allowing the hellscape of 25 teams where people accidentally invite all employees to their meeting, but not allowing 100 teams is funny.


And usually when this happens it’s for some weird technical reason, and it almost always is a power of two number. Here it’s just plain weird!


I sort of get most of these - they're internal to various bits of Microsoft technology. 'CON' plus the ones ending in $ are internal device names dating back to MS-DOS, 'desktop.ini' is a magic file that Explorer uses, '_vti_' is something I've seen but can't remember what it was from.

But 'forms'? Why is 'forms' a bad word?


_vti is the mortal enemy of anyone involved in web hosting during the mid-90s to early 2000s. Those are the server-side scripts and configuration for FrontPage, originally developed by Vermeer Technologies Incorporated.


Thank you! That was bugging me, but now that you mentioned FrontPage I clearly recall all of the _vti stuff.


I did some quick looking and it seems like SharePoint creates a hidden folder called “forms” to store, unsurprisingly, forms associated with a resource. Aren’t polluted namespaces grand?


Ah, that makes some amount of sense.

But... Why not just call it "_forms" or ".forms", which are already prohibited due to the first character?


I'm old[school], so if I'm at the windows command prompt and need to bust out a quick batch file or script I will do "copy con foo.bat" instead of using notepad or vscode. Old habits die hard!


Same! I know there are one or more ways to do this in a Unix/Linux shell, but despite being off Windows for almost 20 years I haven’t memorized it. I miss it though!


This backwards compatibility chain reminds me of the age old tale of how rockets are the width of two horses... (1)

(1) http://astrodigital.org/space/stshorse.html


This is a classic joke, but settling on a common gauge was really difficult, it was not just copying some old Roman standard. There were even riots when different railways started to standardize because common rail gauge meant you can move through the town without engaging with the local economy, see Erie gauge war. Russia still has a wider gauge than Europe and Australia has 3 different ones.


I've come across an apocryphal tale in the U.S. west describing why certain towns and cities have main streets that are the width required to fully turn a wagon pulled by x number of horses.

Likewise, in the Canadian House Of Parliament, the width between the Prime Minister's desk and that of the Leader Of The Opposition is said to be that of two swords raised, tip to tip, based on the British House Of Commons tradition that they must remain ''two swords and one inch apart.''


Even today size of streets in many cities is determined by the space needed to either turn a fire truck or have two fire trucks pass.


Thanks for the anecdote that was interesting. I think the Erie gauge war demonstrates that people feel entitled to any advantage of circumstances that they have profited from in the past as if such were their property even when the actual matter are issue is in fact others property.


I've seen this happen with planned bypasses of small towns, either through individuals fighting CPOs for their land, or people in the town opposing planning permission notices. (there's a few I can think of where the council's current plan involves waiting for certain people to die, since that's less effort overall)

Usually such bypasses are great for these towns, as it removes most of the articulated road shipping that needs to pass through there, and generally makes it a nicer place to be.


It depends on the town, it can also kill or relocate it. The town in Pixar's Cars is realistically depicted in that way.


This is precisely what large companies in the US do, they gain an advantage, then when the advantage is threatened, they use every tool at their disposal, including political lobbying, to keep their advantage.

This is done under the guise of preserving shareholder value.


I rode a train in Spain where the train changed gauge at a station!


Spain has a peculiar train gauge. When you cross the border with France, the train slows down and gauge change happens on the fly.



The Romans did not use war chariots, since they are basically useless in combat. They only used chariots for sports in the hippodrome.


Chariots are not “useless in combat”, but they are very expensive to field and only work in pretty narrow circumstances: wide, open, and relatively solid areas (aka not bogs).

These circumstances were not a thing for Roman legions until they reached spain at least, possibly North Africa and the Middle East. As a result they were not part of Roman war doctrines.

On the other hand they were very much part of bronze-age Egyptian and Hittite armies.

An other factor to their lack of appeal tho may have been improvements in horse riding technique and gear, as well as training. Riders can also be heavily armed, but have less travel restriction, and you can field a warrior per horse rather than need two horses and a driver per.


Spain is mountainous as hell; a chariout outside the Castille plains and Madrid would be scrap.

Get a height map of Spain and you can obviously see that a chariot trying to ride at Picos de Europa would be a nightmare.


They used chariots not only in the hippodrome, also for processions and other "shows".

But Roman warfare was a no-nonsense kind of affair, so no chariots. https://acoup.blog describes this really well.


The chariots in this example were more for transport and logistics, not battle.


I would love to know who fabricated this myth and decided to just tell the story as if it were fact.


This is pure gold. Thanks, you made my day! :-)

Also, you might be interested in this: https://youtu.be/1NqRbBvujHY?t=2236


While I enjoyed rewatching the latter half of episode 2 of season 1 of James Burke's Connections tv series, I don't see how the invention of the cloud chamber (which you start the video at) is relevant to standards for rail, horses, or rockets. What's the connection ?


It's a dumb joke with no basis in fact.


Similar reason why many telescope mirrors are exactly 8m across.


People actually still think this dumb joke is true?


Well, there is no real way to disprove it and there is no solid proof where it actually came from.



Snopes is not a good reference to cite, they have changed many artlcles based on research they missed. They tend to just want to get a page up when a topic is popular, then research it later.


I mean, correcting factual errors is pretty good trait for a fact-checking site, right?


Yes, but surely you would do that first?


That's assuming that new facts never come to light over time.


Kind of a garbage article because coincidence or not they are similar widths.


It being a coincidence versus causal is entirely what makes it interesting or not


hahaha, that's great. thanks for sharing


That was fun.


Microsoft is going for the Guinness World Record for oldest tech debt. They are winning.


Rivalled only by IBM... which makes for an interesting comparison; IBM for enterprise, and Microsoft for personal computing.


Unisys beats IBM for longest supported platforms.


Just imagine the deep commitment to tech debt that results in this


One man's tech debt is another man's API stability


One man's API stability is another man's perpetual nightmare, especially if the API is bad. Things have to change to get better, and if systems are designed in a way which prevents API improvements, then you will just have perma-crap software.


This seems an odd place to be making this argument though. Of all the things that you might do if you had carte blanche to break all backcompat in Windows, you’d really pick these reserved words? like, how important is it to make a file named just con or prn? Or a Teams channel or Sharepoint group for that matter? I’d be aiming more for something like the backslash as path separator, or eliminating all system dependencies on drive letters. (I know NTFS can mount elsewhere, but too much stuff uses and assumes drive letters.)


> perma-crap software

Yeah, we are talking about Microsoft here.

I guess some people will pop-up from nowhere and disagree with your rationale, but it is flawless. Everybody loves the stability anyway.


The notion that change is always good/better is false, and change for the sake of change is terrible.


Not having the ability to change is worse than change for change sake.


I actually laughed out loud at that headline. Fantastic.

AFAIK those still can’t be used as file system names, so I’m assuming it’s related to that.

Tim Paterson’s Revenge.


I can't be the only one thinking that generally MS Team is offering probably worst experience in the messaging market.


I'm right with you on that.

Highlight some text, right click and select copy. Teams copies some other random text and not what you highlighted. Grrr!

Any product that can't even get basic copy and paste right is garbage in my opinion.

The only reason people use it is that it's bundled for "free" with MS Office.


It's absolute fucking garbage when it comes to text chat. It boggles my mind that they had so many examples on how to do it right and fucked it up so badly


I honestly think they should fire every single PM on that team. Like literally just keep the engineers and give them no more direction than make it better and designers need to approve any UI changes.

That's it.


I just called Satya and told him that he should talk to Pavel to get some advise for the UI experience.


Slack is working hard on catching up but Teams is definitely the leader in suckiness right now.


you are not


If I ever do anything where I let people name things it's rarely a good idea to NOT lock it down with some restrictions. "Minimum length", "Maximum lenght" at least, but anyone who has programmed windows machines for any length of time might also have the scars to remember to do "is a valid file name" too.

Having to escape everything or replace names with stable guids is not a good relpacement for storing \whatever\logs\channelname or whatever the need may be. Especially for systems that are hard bound to windows filesystems or Sharepoint to begin with.

I bet there are apps on other OS:es where you CAN name things a "\0" sequence or "/" and for each such app I imagine there are people who regret making that possible.


Another fun observation in that page - You can only have up to 20k max participants in a Teams live event. The footnote says you can do larger events with Microsoft Stream, but following that link says Stream live events are deprecated, and the alternative is Teams. Hmm...


Pretty soon we’ll need historians to explain this to younger generations.

Maybe alongside the school of computer science at universities we’ll have a school of computer archeology and a school of computer ethics where we’ll be taught not to use negative reinforcement for AI training…


The only thing defensible there is that channel names can't end with a period - the same should be true of all URLs. Kids especially when told to type in a URL will put the period/full stop after it in the instructions they're reading from then wonder why it doesn't work...if it simply wasn't allowed browsers could just strip it off.


Similarly, when drafting some sort of communication (email, documentation, etc.) one might have a URL as the last "word" of a sentence (or comma-delimited clause, etc.) and apply typical rules of grammar that say not to use a space between the last "word" and the subsequent punctuation. Then upon saving (or upon viewing, or sometimes upon hitting the space bar, depending on implementation) the automatic linkification kicks in, and in my experience enough of them aggressively trim such punctuation (period, comma, etc.) before setting the href that people can get away without thinking about this, but some linkification functions end up keeping it, yielding a 404 error when clicked. High-usage products like email clients and chat apps tend to aggressively trim, while lower quality products like ticketing systems tend not to, as far as I can tell.


How I read the headline:

  "some horrible $MS product I don't use does some horrible $MS-like thing"


MS Teams channel names can't contain device names*

Still incredibly sad, but not as insane as if you couldn't use the names inside a chat.


I can't send a text from Google Voice to my phone that has the domain 'united.com' in it. It just gets lost in the ether.


So many of these limits seem arbitrary. Why 5? Why 500000? While they seem OK for most customers, why not make many of them MAXINT?


That sounds crazy to me and I understand why Microsoft or any company wouldn't want to do that. It seems completely reasonable to me to set reasonable limits to avoid excessive resource usage or unforeseen/untested/unwanted performance limitations.


Bingo. Everything has a limit and when you set it yourself you’re moving the “how many x can I make?” answer from the “unknown” column to the “known and testable” column.

Imagine if you add a feature tomorrow that, on startup, has to run something in linear time with the number of channels you have. If the upper bound were essentially undefined (and not practically testable if it’s max int(32)) it could be that in practice your new feature makes it so that getting above 23,456 channels effectively disables the server due to a timeout in a critical part of startup. But if you’ve defined that channel limit, you can be confident that a feature like that either does or does not break things, even when at your channel limit, because you can test that.


My favourite way of infiltrating/exfiltrating back in the day:

c:\> copy CON: COMMAND.COM <furious streaming begins>


This is such a Microsoft thing to do. DOS compatibility will haunt us for the rest of this century at least.


Sometimes I wish we had fresh clean slate OS.

Not the baggage of DOS or Unix... Something modern and sensible without insanity of either system.


Sometimes, I wish other software products took compatibility as seriously as Microsoft does.


You need to clean slate the entire world because everything is interconnected. If , for example, you want files to be more than streams of bytes then you basically have to re-invent the Internet as well.

The older I get, the more I realize that we don't need a clean slate OS. If you pick any modern OS right now, the most annoying parts are never the parts that were from 30 years ago; it's almost always the newest thing.


The opposite is true. You can convert anything to anything at the boundary. The beauty of looser coupling


You can't convert anything to anything at the boundary and still have full interoperability. An example is resource forks on classic MacOS -- they never played nice with an Internet that assumes that files are only a flat stream of bytes.


I think that sounds like an issue of not converting something properly? The problem with converting is that it can be expensive... that's true.


I hear GNU Hurd will hit 1.0 any day now[1] :) /s

[1] https://news.ycombinator.com/item?id=37036851


Google's Fuchsia is still the best bet for a genuinely new OS that may at least find a niche.

Capability-based microkernels have been exciting research projects for decades, and Google has apparently made one that achieves acceptable performance, which was a significant challenge.


It would just grow quirks like that over time, just like every system before did.

It's impossible to make all the right decisions at the beginning any big project that never get changed.


The baggage of Unix is gold. The baggage of DOS is manure.


Like everything being text? Pictures? Structured data?


By the time it's mature, you'll wish for another one. That is, if you're even alive by the time that happens.


Haiku? (if finished)


To convey one's mood.

In seventeen syllables.

Is very diffic.

John Cooper Clarke


TempleOS may be the closest we'll get for the foreseeable future.


Some of those limits look unreal to me. Do they really limit you to 200 people in a private channel?


Use CP/M device names instead, I guess.


MICROS~1




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: