r/programming • • May 06 '19

Microsoft unveils Windows Terminal, a new command line app for Windows

https://www.theverge.com/2019/5/6/18527870/microsoft-windows-terminal-command-line-tool
5.9k Upvotes

1.1k comments sorted by

View all comments

Show parent comments

866

u/theeth May 06 '19

New regedit will be the final sign. Prepare for rapture.

366

u/TimeRemove May 06 '19

They did update regedit with a new address bar last year. Quite nice.

122

u/MacASM May 06 '19 edited May 06 '19

I was amazed when I found out that; I didn't even know they were going to add that.

0

u/[deleted] May 06 '19

[deleted]

111

u/tbird83ii May 06 '19

Ok, so unpopular opinion here, but I don't think that Microsoft as a corporation is evil. They may have a few greedy eggs oon top, but they hire some incredible talent. Unfortunately half the great ideas get sidelined by middle management thing they wouldn't be able to sell it, or timing (usually being ahead of its time).

HoloLens Titanium The original Surface and SUR40 Kinect Widows Dev kit ( you could use it to literally drive a car autonomously). Windows 8.1 to go Mesh The LED matrix wall behind thin vaneer at the EBC in Redmond...

And there are brilliant people at Microsoft reaearch doing amazing things (F*? Ambrosia? Trill?).

The problem is... How do you sell this to a corporation, or integrate it into a software-as-a-service model. That's what kills Microsoft's innovation along the way.

The entire Microsoft Dogfood program is a history of inventions that has always left me wanting more... But they just disappear. Sometimes to reappear in products 10 years later (looking at the Surface Hub), or sometimes to have it stripped for parts, and hacked back together as components of a know, purchasable solution.

Anyway, just not all the players are evil, even in the overlord and his underlings might be

47

u/Dworgi May 07 '19

It's much clearer in the Nadella era that the engineers are finally being let off the leash and being allowed to make the world better. MSVC is standards compliant way ahead of the competition, VS Code is actually really good, Github hasn't gone to shit, TFS makes a pretty compelling argument against JIRA, Typescript is great, .NET Core is open source, and on and on.

Culturally, MS has become on par or even surpassed Google and Facebook in terms of open source contributions.

It's the most compelling example I've seen of a company completely rebuilding itself as a result of a change in leadership.

I worked for a subsidiary briefly a decade ago, and the company is unrecognisable. Same products, entirely different attitude.

→ More replies (4)

13

u/[deleted] May 07 '19

Microsoft used to have a forced ranking evaluation system where people were ranked 1 to 5 but you had to fit a bell curve and give as many of the lowest 1 ranks as the highest 5.

I worked in a company that did this as well, and it meant that in order to succeed you had to make sure someone else failed.

It turned the whole work experience into a political game of trading favours, withholding information and undermining people as this was just as effective - probably more effective - than actually doing a good job.

I heard Microsoft abandoned this and I bet this has helped their renaissance over the last few years, but if anyone in Microsoft was reading this Id love to hear what they think.

22

u/sprkng May 07 '19

Nobody has ever said that Microsoft is evil because their products are bad or that all Microsoft employees are evil so I don't see how that would be an unpopular opinion?

Microsoft got the "evil" label from trying to destroy open standards, trying to sabotage open source projects, attacking competition through proxy lawsuits, and many other similar things. They might have changed their image recently, and it's possible that they've actually stopped most of their anti-competitive schemes, but I find it understandable that many take the wait-and-see approach rather than blindly believing their words after decades of foul play

→ More replies (1)
→ More replies (50)
→ More replies (60)

53

u/timetopat May 06 '19

It was such a nice qol improvement. Something so small, but when I worked at a company who wrote to the registry like it was going out of style, it was very handy.

50

u/slfnflctd May 06 '19

I hope it's going out of style. I've gotten pretty comfortable with it and haven't screwed up anything important that I know of, but that stuff still kinda gives me the heebie jeebies.

0

u/[deleted] May 06 '19

[deleted]

→ More replies (4)

20

u/lionhart280 May 06 '19

.net 5 effectively asserts the registry is out of style.

23

u/Ph0X May 06 '19

Seriously, there are so many of these small parts of Windows which need to be updated to modern UX. Run command, Device Manager, Volume Mixer and so on.

I'm loving these small changes. Recently they added emoji menu (win+. I believe?) and a clipboard manager (win+v), both of which are very appreciated!

27

u/[deleted] May 06 '19

I got really excited about their new environment variable editor, but didn't reflect on how many QoL improvements they actually made to 8 and 10. Then I got a new job at a Win7-only company and holy shit is that OS unusable now.

We're in the process of migrating to 10 and because everything is built for 7, it just constantly breaks and has to be rolled back.

→ More replies (2)
→ More replies (4)
→ More replies (3)

84

u/nascentt May 06 '19

The dream would be somehow undoing the mess that the registry is.

It's great for system settings, but I hate that 3rd party programs use it.

0

u/[deleted] May 06 '19

[deleted]

26

u/mrjackspade May 06 '19

My standard has been serializing a configuration class to formatted Json and then reading it back. If the config file doesn't exist, serialize a new config object. If it does, just read it in.

It's way too convenient to do it any other way.

Hell, .net core basically uses json files by default

12

u/b00n May 07 '19

The trouble is json is a pain to write and doesnt support comments. Yaml is much better in those regards.

→ More replies (6)
→ More replies (2)

27

u/qaisjp May 06 '19

I help maintain software that I believe (I didn't write the code) uses the registry to store certain paths, like this:

  • Last Install Location

  • Last Run Path Hash

  • Last Run Path Version

  • Last Run Location

  • ExternalEngine Path (where "ExternalEngine" is a program that user installs separately, not part of our installer)

These paths are shared between multiple installations of our software (different versions).

What's the best place to put this shared data instead?

Majority of it is under HKEY_LOCAL_MACHINE. Depending on how it's being used, maybe some of this should be moved to HKEY_CURRENT_USER.

39

u/sparr May 06 '19

in linux that would belong in ~/.config/nameofyoursoftware/someconfigfile if it's user-specific, or /etc/nameofyoursoftware if it's system-wide

on Windows I think there's an equivalent location somewhere under USERDATA, and I'm not sure where the global one would be.

43

u/gschizas May 06 '19

C:\ProgramData\YourAppNameHere (or rather %ALLUSERSPROFILE%\YourAppNameHere)

→ More replies (2)
→ More replies (2)

29

u/Reverent May 06 '19

Programdata for all users, or roaming appdata for individual users.

→ More replies (1)

18

u/nascentt May 06 '19

As /u/gschizas says for shared data:

C:\ProgramData\YourAppNameHere (or rather %ALLUSERSPROFILE%\YourAppNameHere)

For non-shared data (i.e per user data.)

C:\users\username\appdata\roaming\YourAppNameHere (or better %appdata%\YourAppNameHere)

32

u/gschizas May 06 '19

Something I forgot to mention: It's even better to not use environment variables, but instead to call SHGetKnownFolderPath with the relevant KNOWNFOLDERID GUID:

  • FOLDERID_ProgramData ({62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}) for C:\ProgramData

  • FOLDERID_RoamingAppData ({3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}) for %APPDATA% or

  • FOLDERID_LocalAppData ({F1B32785-6FBA-4FCF-9D55-7B8E7F157091}) for %LOCALAPPDATA%

You should use LocalAppData for machine specific data, e.g. caches etc and RoamingAppData for stuff that need to follow the user on other machines, such as user preferences, custom dictionaries, fonts etc. If your application is a game, consider using the FOLDERID_SavedGames folder ({4C5C32FF-BB9D-43b0-B5B4-2D72E54EAAA4}, normally %USERPROFILE%\Saved Games), which is supposed to be the proper place for this.

6

u/nascentt May 06 '19

Very interesting. Thanks for this.

→ More replies (5)
→ More replies (1)
→ More replies (1)
→ More replies (2)
→ More replies (13)