Hacker News new | past | comments | ask | show | jobs | submit login
Visual Studio Online Supports Cross-Platform Development (msdn.com)
226 points by dstaheli on June 5, 2015 | hide | past | web | favorite | 151 comments

> Microsoft provided me both a PC laptop and a MacBook for my job and hired me to coordinate the effort to enable and better support non-traditional Microsoft developers (i.e. developers that use something other than C# and .NET technologies) to easily design, build, test and deploy their software and systems solutions, especially to the cloud.

This is a major change in terms of what I would hear from a Microsoft Blog Post on Software Development Tools and especially Visual Studio.

Not only that... But i am a C# developer and now i can use tools like bower and gulp ( already knew them fyi). I seriously love this..

I am afraid though that a lot of current .Net developers won't like this ( colleagues and because vNext is more command line based )

The fact that I'm now complaining about how FreeBSD is poorly supported compared to other Unixes like Linux and OSX really is quite amazing.

5 years ago I wouldn't even be surprised if MS websites intentionally didn't work in browsers not IE. Now this.

Microsoft realizes that they don't have a monopoly on this stuff and many other tools are just as good and as useful as theirs. So they had to actually innovate. That being said I would still not use Microsoft as getting Windows is a headache compared to getting OS X. I recently wanted to deploy my QT App on Windows and found out my old Vista box will not suffice for MVC2013, I need Windows 7. My Mac from 2009 is still good it can get 10.10, but the Vista box from the same time is SOL when it comes to compiling Chromium. When Windows is as free as OS X and Linux, then I might considering developing on their platform.

1. Vista is from early 2007. Windows 7 is from 2009. So if you compare you'r 2009 mac to a windows machine, it should be to a Windows 7. 2. If by free you mean as in 0 price (if you mean as in liberty then WTF), then your wish just came true: Windows 10 will be a free upgrade, and it's a major release.

I agree the past few years was a mess for MS, but things are changing and so should the public opinion.

Windows 10 is a free upgrade only for the first year.

I also don't understand what happens with my Windows 8.1 license after that ... so if I format my laptop after that first year, will I still be able to install Windows 10 on it? I'm not so sure I can, plus their wording on Windows receiving upgrades for "the lifetime of the device" is confusing; so does this mean that the notion of a retail license that you can move between PCs is gone?

So you see, Microsoft has yet to reveal their new licensing model, therefore I wouldn't be so quick to jump to conclusions ;-)

The free upgrade offer expires after a year.

Your license of Windows 10 doesn't.

This doesn't answer any of the concerns I outlined. I do hope we are speaking the same language :-)

Well the Mac Mini is the same age as the laptop in question. Early 2009. Windows 7 was released mid-2009.

This is kind of a nitpick. I can come back at you and moan about TRIM support on a 3rd party SSD in that same Mac Mini - no problem in that Windows 7 laptop. That's about equally relevant.

Having gone thru a nightmare trying to upgrade a Mac Mini to Mavericks - obscure error messages, things that "just don't work", and search results leading to forum posts that said "The problem went away when I took out the PNY RAM and put back in the Apple OEM RAM", I'm a little more hostile toward Apple products than I am to the "Wintel" environment.

*In the end we wound up buying a new Mac Mini. We needed Mavericks for website testing.

I've always had issues (and pleasantness) using any OS whether it was Macs, Windows, iOS, or Android. I don't really believe that one operating system is better than another in a general sense. At this point they are all way better than what we had even just 5 years ago.

On the other hand, I had no trouble upgrading 2007 MacBook Pros to Mavericks, even with third-party hard drives and RAM. Your nightmare experience is certainly not representative.

Well Vista release in late 2006.

Interesting that my experience with Mac and Windows has been completely the opposite. I owned 2 PowerPC Macs which went the way of the dodo and I had to replace hardware AND software to run on Intel. So running my old Final Cut Pro and Adobe suite was not possible on new hardware.

Compare to Windows, I am able to continue running very old software without having to upgrade them. OSX is not free (as in freedom). You can't legitimately virtualise it on non Apple hardware, yet running Windows on Mac hardware is very straight forward.

If I had to pick a platform for web projects though, I'd actually pick Ubuntu. It's very easy to automate.

Macs are about the package, not the computer or the OS alone. You get a beautiful, well built machine with an OS to match. The OS is not terribly alien and, if you are a serious developer, it has enough Unix to make you happy. Unless you look too closely (I spend most of my time with Python) it looks a lot like the servers that'll run your code.

Ubuntu is my preferred OS for work. Matching the servers my code runs on is great, even though I run my code inside VMs or containers (often with the last LTS release). As you mention, it's exquisitely automatable - I can do and redo configurations in seconds.

Apple suppoted Rosetta from 10.4.4 (January 2006) through 10.6.8 (July 2011). Seems like a pretty generous transition period to me.

Yeah, if I recall Final Cut Pro wasn't supported so I would have had to upgrade when I got a MacBook Pro in 2008.

I also started to notice that to keep using the PowerPC Mac that some developers weren't releasing updates for PowerPC.

Now, from one free software nerd¹ to another: It's not helping to kick this down.

Arguably Microsoft opened quite a lot of stuff recently. After ASP.Net and .Net Core I remember WCF, Visual Studio Code and VSO offers like this (plus the git integration).

Can we please see the good here instead of asking for everything (and unrealistic stuff, tbh), now?

① Liberate your documents or Fosdem t-shirt is the common setup here..

Microsoft is following its own strategy none of this stuff is positive for free software. It's just a way to enter and stay relevant in a market where free software whether that's android or linux has already won. Microsoft is not doing it for us, it's doing it for itself to stay relevant. Am I thankful, no not really. I would prefer Microsoft go away and the Unixes prevail. This just ensures the market stays fragmented with Windows leading the user base. Despite the fact that there are competitors out there good enough to replace most of it.

Microsoft is a business and openness is a business strategy. I don't see the problem with that. I also don't think it is unique for any of the big technology companies. Do you think OS X is Unix based because Apple loves openness?

Fragmentation is harmful when it's mostly similar ones with minor incompatibilities, like ten thousand Linux distros and Window managers. Not to mention the various stock browser versions on Android phones.

Across a market, having two to five differently implemented competitive products results in innovation instead of stagnation with just one.

Does it matter, the motive of the employees and executives at Microsoft?

If you do something for the wrong reason, is the work tainted? Or is everyone who does your work on your side, regardless of who or why?

Interesting perspective - we deploy our QT app on Linux, osx and Windows, but I find that the best experience has been on Windows. (we statically link QT and boost, which may cause more headaches than the default dynamic linking).

Specifically, maintaining backwards compatibility on OSX while marching forward with newer versions of the os has been a very big pain. We recently dropped support for OSX 10.6 because we simply could not get QT to statically compile on Yosemite, even after extracting the 10.6 SDK from a legacy xcode download. We did manage to keep 10.7 support though, thankfully, using the same SDK extraction method.

On Linux, the upgrade from QT 4.8 to 5.4 was the roughest. the number of dependencies dramatically increased, complicating the compilation of QT and breaking compatibility with older distros (specifically CentOS 6.x, where we hear the most complaints)

Windows & visual studio has always been our preferred developer environment, with the latest version of both. Maintaining support back to Windows XP has been particularly easy and painless. Where on Linux, it seems like the glibc requirements march forward with every release of gcc, and on osx it becomes dramatically more difficult to support older versions of the os with each new release.

A side note about QT on Windows - compiling QT and your application on the newest version of Windows helps a lot for customers on that platform - for instance, before we compiled on Windows 8, the application UI would default back to the legacy battleship grey theme, and simply rebuilding on Windows 8 with no source modifications fixed it.

on linux a couple of compiler flags (FORTIFY_SOURCE, etc) and providing a memcpy wrapper would get you compatibility back to about 2006. To go back further the glibc you compile against can have an earlier version of the linux kernel specified. I only bothered with 2.6.16 (or was that 18) at the time.

Your comment kinda confused me. At first you were talking about how it's difficult simply getting Windows compared to Mac OS X (considering Apple has had the app store on Macs for the past 2 versions or so I would agree) but I'm not sure why your Vista box is SOL compared to your Mac; you can still upgrade it to Windows 7 or 8.1 and do what you want it to do just like your Mac. Granted it's not free (your point later in the comment) but it's also not SOL.

Windows 10 upgrade is going to be free to a large amount of users; I'd be willing to bet further Windows releases will also be free so at least that's one issue possibly resolved.

Windows 7 upgrade from Vista costs as much as a used laptop with Windows 7 on it. Why would I upgrade to Windows 7 on an old laptop, I would rather just buy another one where OS X is free. Where as OS X and X Code, the latest versions were gratis on an early 2009 Mac.

Maybe I'm missing something here. A quick google search says Win 7 upgrade is around $60. A cheap laptop is $299. The cheapest macbook is $1299.

> A cheap laptop is $299. The cheapest macbook is $1299.

You get what you pay for. You cannot compare the kind of computer Dell sells for $299 with the kind of computer Apple sells for $1299. When I need most mobility I got myself a $199 Asus Chromebook-like Windows box that now runs Ubuntu beautifully. It's cheap plastic, but I won't be terribly sad if it breaks.

Last time I bought a Mac, it was slightly cheaper than a similar Dell and much cheaper than a Thinkpad, which I'd have to reinstall and, possibly, deal with compatibility issues.

I bought a MacBook Pro once because I believed comments like this. Had lots of hardware trouble, boot problems, had to have it serviced multiple times. Never again. I'm just fortunate that I live in a country where consumer rights are strong and where if you bought a computer and have the same problem three times or so with the service people unable to fix it, you can return it for a refund. Still was a huge time waster each time the machine broke down, though.

This is odd. Apple's customer satisfaction is very high and my personal experience, from multiple Macbooks, is almost flawless. My wife had a minor issue with the trackpad of her MBPr13 and that's all the trouble we ever had with those machines. She won't even consider a non-Apple computer.

> The cheapest macbook is $1299.

Is there a reason that you are not including the MacBook Air (not that it gets you that much closer to the $299 price-point).

I can get a Win 7 laptop for $150. Win 7 retail is 150 CAD. I would not spent 80CAD on the upgrade. I spent 400 on my Mac Mini.

> Why would I upgrade to Windows 7 on an old laptop, I would rather just buy another one where OS X is free.

Are you saying "why would I spend 150 on a Windows 7 upgrade instead of paying $1299 for a Mac laptop where OS X is free?"

Ironically I have an XP VM on my work desktop because I need to build for (inter alia) Microsoft evc4, which won't install properly on anything more recent.

Love the new Microsoft. For small side projects/prototypes, I have tended to not use version control (I know, the horror). I just stumbled across their free private repo storage this morning, and it's going to be a huge improvement in my at-home workflow.

https://bitbucket.org/ and https://about.gitlab.com/ have free unlimited private repositories. Both are excellent.

It's also a pretty good use for a VPS, too. I mostly just use local version control for my stuff, but I enjoy being able to just push to the Mercurial repo on my Linode whenever I want to back stuff up.

Indeed, plus it's fun to learn how to set up access controls a-la Github and Bitbucket for your own repositories. So you can do 'git clone git@yourwebsite.tld:project_name' as well as your own unlimited private repos!

Also https://github.com/gogits/gogs which I run on my VPS and though I still rely on GitHub first and foremost (because GitHub is way better), it's good to have.

Never had any problems with BitBucket over a few years. Using Mercurial though, which helps.

I use BitBucket and love it for all my single user projects.

This. Bitbucket all the way.

i'm actually using visual studio with checkouts from butbucket. but i started a new project (that depends on windows anyway) on VSO to check out.

honestly, i'd be really happy if my company ditched github enterprise to either of those.

... funniest typo I've had so far :)

bitbucket also supports free private repos.

I'm not suggesting you shouldn't try or use this option (I've always been a fan of most of Microsoft's dev tools), but I've been using bitbucket as my "side project" source code control system for free (incl. private repos) for years.

Nice, didn't know that. I'm a .NET guy though and have only used SVN and TFS at work, so now I can use TFS at home as well. Probably should learn Git with my next project...

> Probably should learn Git with my next project...

Do it. And I'm saying that as your fellow .net guy.

The only downside is that you will start hating TFS at work for being so God damn dinosaury afterwards ;)

git-tfs[0] is excellent. Amaze your co-workers by actually usefully merging between branches, and work without the dreaded check-out!

0: http://git-tfs.com/

I've looked at similar stuff before[1], but it broke under the immense pressure of our enormous branches. It was called git-tf and was java based.

This looks similar, but the following line made me want to give it a shot:

    git-tfs is designed to work outside of any existing TFS workspaces.
God I hate TFS workspaces. Archaic piece of shit.

[1] https://gittf.codeplex.com/

I would definitely move to Git if you have the choice. TFS is a dog compared to Git. And don't even get me started on the shambolic 'local workspace' in TFS, how it's possible to make local access slower than server access is beyond me.

TFS is fucking awful. And I do not say that lightly. It's really, really fucking awful. There's plenty of MS stuff i like, but TFS, no.

That you'd want to use it at home makes me question your sanity.

Git comes with Visual Studio since Visual Studio 2013, so it's a lot more seamless.

Though iirc git+ssh was broken... Not sure if it still is.

https://try.github.io/levels/1/challenges/1 Is a good quick 15 minute tutorial

Atlassian have some really nice Git tutorials with comparisons to the svn workflow.


From what I understand, most people at Microsoft use Git - not TFS. The true power of Git shows itself when working on huge projects with a lot of developers and release branches.

Actually most people use TFS at Microsoft. Some 61,777 Microsoft employees as of last month were using actively using TFS(VSO - The cloud offering of TFS).

Now the version control part of TFS is TFSVC and yes TFS does have the ability to host Git repos, but the number of Git repos at Microsoft is significantly, significantly smaller than then number of TFSVC based projects.


Microsoft as a whole "gets" the need to move to better version control tools such as Git....but the larger products will take decades to move off of the internal version control tooling for example: Windows (Perforce\Product Depo), Office (Perforce\Product Depo), SQL Server (TFVC), etc.

Single User Git was the best thing I have done. I have backups and documentation.

It's absolutelly amazing to see, how MS is evolving. Few more steps like that and I really might consider switching back to Windows and giving WinPhone a try...

I did some basic WinPhone development (i'm mostly on linux/unix) and was pleasantly surprised by the smoothness of the tools. I recommend to check it out by building some simple stuff.

I like how management is going, but as someone who fled Windows 8 to Mac OS X (10.9), I couldn't disagree more. I feel like a huge thorn has been removed from my foot and I can now walk normally, after a couple of decades of limping. Of course, I used Cygwin to make Windows seem more like Linux (what I use for server stuff at home and work). Mac OS X for a desktop is still far better than Windows.

Given the direction of MS, I'm hopeful that they'll do some real change under the UI hood of Windows, making it a real alternative to Mac OS X. Some of the apps I need to run (e.g., Lightroom) only work on Windows and Mac.

What exactly can you do from your (presumably since it's HN) Mac that you can't do from Windows that's preventing you from switching now?

Not the OP, but for me: use Unix. Cygwin is not a sufficient alternative to having an actual, working Unix that works as I expect it to when I use it, with a decent terminal emulator on top of it. (PowerShell is both non-substitutable and inferior.)

Windows-the-desktop is fine, though I don't like it. Windows-the-workstation is, even with the plus that is Visual Studio, still a considerable distance behind even Linux, to say nothing of OS X.

Personal anecdote time.

Have been using Linux off and on since 2000. Later my job required .NET, so got into the MS stack but still kept playing around with Linux for things like IRC bots etc.

Then at work there was a major open source push, and we did a big project using Drupal. Used Eclipse and Netbeans(mostly this), deployed to Ubuntu server for dev and RHEL/CentOS for prod. I can sling Vim but never like Emacs(you need a second nose to type some of the shortcuts!)

I was DevOps because only I in the team had Linux experience beforehand. There were some good things but C# vs. PHP was no contest as was VS vs. Netbeans/Eclipse.

Ubuntu vs. CentOS/RHEL was quite annoying because there were small meaningless fragmentation differences like Apache daemon as httpd in one and apache2 in the other. Really? Why? I found myself raging at them sometimes.

After doing that for a year, back to VS and .NET and it felt like a relief. I liked the power of nginx though which we used as a reverse proxy for the Drupal project.

So you don't like PHP and Eclipse. Sure. Neither do I. I write Scala in IntelliJ, or Ruby in Sublime Text, or even C# deployed on Linux with CoreCLR or Mono. And you're not "DevOps" when you have a little Linux experience, and mixing Ubuntu and CentOS without thinking about the consequences thereof is...well, it's your own bad decision. Historical reasons drive the behaviors of one versus the other. (You should know about historical reasons for things. They're much of why Windows is incoherent, too.)

But, more to my original point: I like .NET. I've been using it since 2005. I have Visual Studio open in Parallels right now. But I do recognize that the environment is a trash fire the moment you consider doing anything remotely outside the lines, and the lack of a serious, user-focused glue system (PowerShell ain't it, it's obviously not designed as a REPL language from the jump) is crippling. Peter Bright over at Ars has suggested reviving the subsystem model for Windows and incorporating a FreeBSD layer, and I'm all for that. Because I don't dislike Windows. I just can't get things done in it.

Working at Microsoft on C# but being a Unix programmer at heart I know what you mean. I'm not of the mind that Unix is strictly superior -- I think most of the operating systems just involve which tradeoffs you want to make -- but I happen to like a fair amount of the Unix tradeoffs and I think that the programmer ecosystem is really valuable.

Which is why I think it's unfortunate that I don't really but that a Unix subsystem is the way to make programming on Windows better. All my problems with Cygwin or git bash all lie on the boundaries of interactions. The most annoying things are when you can't run a batch file in bash or when you launch a Windows program with a Unix-style path and ends up with garbage because no file actually exists with that path on NTFS. Adding transparent proxying or something similar just ends up being more of a pain because now its really difficult to debug when something inevitably goes wrong. Perhaps more importantly, even if you solve the filesystem issues you're still stuck with things like /proc.

Overall, I think I'd rather just have really lightweight and transparent VM access.

PowerShell is fantastic. I get what you are saying, though. You know UNIX at a very deep level and you don't have time to stop and learn how PowerShell works. (its different and has a different model for getting things done. That's all I'm saying.)

If you could stop and take the time to learn the prescribed PowerShell way of doing things... its really very good. I used to be a VMS admin in another life and I've worked with free and commercial *nix and I love it.

Your condescension is unwelcome and wrong besides. I've been using PowerShell since it was called Monad. I am a former Mono contributor and have been using .NET for about a decade--I understand both the APIs and the underlying runtimes, not quite as well as I know the JVM, but close. Despite a strong understanding of both the underlying architecture and the language in question, every time I am forced into using it I have the sinking feeling that my hands are being made stupid in comparison to the ease of exploration of other REPL-based systems, be they zsh/bash/whatever or even just Ruby.

I wouldn't dislike PowerShell as intensely as I do if I didn't know it. It's a convergence of bad design in the small--the grammar and the syntax--and in the large--how exploratory programming at a REPL is actually done. Maybe it's great for sysadmin work where something's on fire and must be addressed right-then-and-there, but I'm a programmer and I work to eliminate the need for sysadmin anythings. A shell is literally just a REPL for recording tasks for automation and desperately needs to not suck at that job.

I really wasn't trying to be condescending.

Comparing it to zah/bash and ruby illustrates my point. It's got some fundamental differences to those environments. Providing a common argument parser is one. PowerShell is actually more than a Shell. Its an environment that can be hosted in a shell. That's my point. Commands are actually objects that are processed by the environment. If you get passed the "I know how things are supposed to work" attitude and look at how PS is meant to be used to administer a large number of windows systems you would see that it makes quite a bit of sense.

It is different then what you are used to and probably been using since you were in university. I wasn't rude or mean. I certainly can't be as indignant about things as you are while I'm on HN because of the downvote brigade. But hey, like you guys always say...you're right and I'm wrong because you have karma. Honestly, I tend to be pretty sharp when reacting to people as well so I'm trying to not take things as personally.

But your appeal to authority doesn't scare me...I've used stuff for a long time too. I just don't think that I'm better than other people because of it.

Comparing PowerShell to REPL environments that make exploring a problem space easy is illustrating your point? Its differences excuse how tragically bad it is at doing shell things? Maybe I come from a different part of town, but I don't consider that an argument.

The job of "administrator" in an IT shop is a largely make-work one that can be done by automated systems and process-aware developers, and as an infrastructure and automation developer I am working towards that goal. PowerShell makes that harder than it absolutely has to be because of how blindingly difficult it is to actually iterate on a problem in a way that can be factored into a reusable process--the actual hands-on-keyboard experience is so stilted and stupid that finding the solution in the exploratory manner I described is significantly harder than it should be. As I've said elsewhere in this tree, it's easier to just solve a problem in C# than try to explore the space in PowerShell and reify it into a script. That's as scathing an indictment of a programming environment as I can make.

And absolutely nobody says that somebody's right because of karma. I've read through some of your posting history, though, and you go to that well a lot. Consider that maybe nobody likes that you play the oppressed martyr.

Ironic that you accuse others of being condescending. You have been nothing but in this thread.

Your low opinion of admins is noted. I'm sorry I tried communicating with you. you're a know it all prick.

read this: how bout we just disagree and you leave me alone? there's no need to even reply to this. just leave me alone.

> Visual Studio, still a considerable distance behind even Linux, to say nothing of OS X.

Which wonderful Linux and OS X tools offer the debugging and profiling capabilities of Visual Studio, specially for multi-threaded code?

Which wonderful Linux and OS X tools offer code navigation across large scale enterprise projects and architecture design?

Which wonderful Linux and OS X tools offer UI tooling like XAML and Blend?

Your selective quoting is misleading. The post said:

"...even with the plus that is Visual Studio,... "

And you're touting things you value in VS.

I think that he poster was saying that for them the good parts of VS don't make up for other shortcomings of windows as a workstation...

Precisely. I've been seeing a lot of this mendacious quoting lately, what's with this fad?

I find that Windows is closer to the Xerox PARC workstation model than UNIX will ever be.

Only if you mean "doesn't play well with the other kids".

I have studied the Alto and Star and I can't imagine why you would think they are similar to Windows except in their insularity.

Poweshell playing the same role as the workspace/transcript, which access to the whole system, including libraries and running applications. Specially given it is just yet another .NET programming language.

I am not aware of any UNIX shell that offers a REPL like capability by allowing to interact with system libraries, do IPC with existing applications or system devices.

.NET, COM and WinRT play a similar role as the rich programming frameworks Interlisp-D, Smallatalk and Cedar had.

Focus on a mixture of AOT and JIT code for the programming environments, with memory safe languages. Memory unsafe languages currently used on the lower levels and performance hotspots.

An IDE with graphical debuggers and incremental development support, as the main way to develop applications.

Focus on being a good workstation OS first, with server abilities as second focus.


What's wrong with powershell?why can't you substitute it, and why is it inferior?

As for inferior, for what's wrong with it--well, let's start with the easy stuff. The language is not designed to be exploratory and is really hard to write off-the-cuff even when you know it cold. It inherits from .NET in ways that make it actively difficult to type on a REPL (as that's all a shell is). I like .NET, but the BCL is not the right tool for the job and none of the tooling built around PowerShell can compensate for just not being easily written out when I'm exploring a problem by hand. I know PowerShell probably better than most people who use it every day--I'm not an expert but I've studied it at length and used it on the regular for nontrivial tasks--and I can't think in it on the fly. It's a worse solution to a solved problem, for my money, and I'm fairly convinced it was designed to be an RPC layer for GUI apps rather than a way for a skilled and knowledgeable user to interface one's brain with the metal with as little trouble as possible. And that's fine, but that's worse with regards to the things that I care about.

As for substitutability: this should be obvious. I can't substitute it because it isn't interoperable with literally everything else in the stack. It is Microsoft for Microsoft's sake and incompatible with the rest of the non-Microsoft universe in ways that, it must be noted, Apple did not do; while they have proprietary tools in their environments I can still use it with the bog-standard tools that exist on every other Unix machine I ever touch.

PowerShell is supremely explorable. All you need to get started is knowledge about a few cmdlets. Get-Help, Get-Member, Get-Command and Get-Alias then you are in business.

There is nothing about PowerShell that cannot be discovered through those 4 cmdlets.

If you frequently need to dig down to .NET you are doing it wrong.

Contrary to your previous assertions, PowerShell was designed for REPL from the outset, and it achieves that much better than any Unix/Linux shell, bar perhaps fish.

PowerShells commands (cmdlets) are inherently rich on metadata. You cannot create a cmdlet without exposing metadata which is then used by the shell to drive automatic type coercion, syntax charts in help as well as tab completion.

It is so intrinsic to the concept, that you'll automatically get tab completion for your own functions, and even for your own script files.

PowerShell was definitively NOT designed as an RPC layer. You claim to "know PowerShell probably better than most people", and yet you are unaware that PowerShell was specifically designed as a hostable engine.

It is hostable precisely because Microsoft wanted to have reusable script engine which could be used in-process (!) in administrative GUIs.

Unlike traditional shells, PowerShells cmdlets share memory space with the host (the shell when used as REPL) because it SHOULD NOT use RPC to manipulate objects.

You frequently use "appeal to authority" arguments, but the substance of your posts gives you away. You are certainly no expert on PowerShell.

What does 'not designed to be exploratory' mean? How many scripting and shell languages have the introspection that comes with PowerShell, from .NET reflection to simple abstractions like 'Get-Member'? How common is a prescribed and thus simple to discover naming convention such as verb-noun?

I would love to see it in other ecosystems, and the prediction that PS could go open source, along with the recent open sourcing of .NET core and CoreCLR gives me hope.


You've given no actual information to why it's inferior, other the fact it's not "exploratory". I don't know what that means.

But personally I find working out command names in powershell much more sane, because of the Verb-Noun pair naming convention.

It's not about the commands. Names, whatever. I learned GNU and BSD command sets cold, names and obscura are not a problem. It's about the experience of using the thing. Everything is so insanely verbose, except when line-noise symbols are injected to break up the monotony, and the editing environment for actually using it is absolute garbage compared to either bash or zsh's emacs/vim modes. You are stuck writing long, complex (not complicated, but complex) commands that can't be easily factored down, with an interface that isn't doing much to help you (and isn't good at the little things besides, ISE is unacceptable compared to a decent terminal emulator like iTerm2). And so iterating--exploring your problem space is unreasonably difficult compared to everybody else in the same space.

A shell is a REPL. If your language makes actually writing things in that REPL hard, it is definitionally bad at Shell Stuff. I find it significantly easier to write code in C# and then transliterate it to PowerShell than to actually write PowerShell. That's a disastrously bad situation for a shell.

You were called upon to give some examples. Yet all you offer is more hyperbole. One is beginning to suspect that despite your assertion that you "know" Powershell better than most who use it daily, you are actually just a troll.

Yes, I am calling you out. I am challenging you to provide concrete examples where Powershell has less discoverability than bash or zsh. I am challenging you to explain why ISE - an environment designed specifically to combine REPL with script authoring - is "unacceptable".

And please, no more hyperbole or condescending remarks.

I'm not sure what he means by exploratory either.

I learned Powershell mostly from Get-Help. I can usually figure out where to look for a command based on the naming conventions - essentially (one of x verbs)-(one of x nouns). They aren't always fantastic, but for example, Select-String is a little more obvious than grep.

Are you really asking why you can't substitute PowerShell for a UNIX shell? There is basically no way in which they are compatible.

Even if you decided to re-invent all your UNIX scripts and tools on PowerShell, you'd be missing most of the composable tools that make UNIX what it is.

And PowerShell as a user interface is quite poor compared to, say, a 15-year-old version of GNOME Terminal.

    Even if you decided to re-invent all your UNIX scripts and tools
    on PowerShell, you'd be missing most of the composable tools
    that make UNIX what it is.
PowerShell's composability is based on piping objects rather than piping text.

Do you mean that PowerShell can't achieve the same composability that can be achieved on Unix, or that PowerShell lacks for example `cut`?

To be honest: no, PowerShell can't (practically) achieve the same composability that can be achieved on Windows. Both because of the aforementioned general malaise of writing it throwing up very real roadblocks, but also because not everything under the sun is a .NET application. You get "hack together a text pipeline and hope all your objects implement ToString in a meaningful way" or "break out Visual Studio and write some converters", which is, by my lights, significantly worse than just "hey, everything starts and ends as a stream of bytes, deal with it using the tools we know you have and work with every application you're going to use."

And this is especially egregious with the lack of a Swiss-army-chainsaw scripting language in .NET to begin with.

> To be honest: no, PowerShell can't (practically) achieve the same composability

PowerShell is much more composable. Just consider how all nix commands must pack insane numbers of output options. In PowerShell - just because of composability - output formatting is not the responsibility of each command - it has been delegated to a small set of general-purpose output format cmdlets.

This is like asking why you can't just run your PHP scripts in Python; they're different languages.

PS is interesting and powerful, but tends to fall at the last hurdle in annoying ways (eg truncate text to window even when diverted into file), and doesn't have the same user community.

Even the path separator is different.

Its just not. The problem is that experienced UNIX admins get frustrated when it doesn't work like UNIX. If you take the time to learn how it works it amazing.

> (PowerShell is both non-substitutable and inferior.)

Powershell is certainly not a substitutable shell, but as a terminal emulator, what does it lack that you need as of Windows 10? My only real complaint is the lack of tabbed windows.

Though I am much more experienced with bash than Powershell, everything I've seen indicates that Powershell is anything but inferior. You have to learn new things (the built-in aliases help a little) but throwing around objects instead of text makes so many things less painful. SSH would be nice (I think the closest thing would be WinRM?) but that's coming now too.

I don't think everything needs to be Unix. Unix is great but it's showing its age.

I'm Rails developer - so this all comes to mentioned Unix and set of console tools. Ok, there are workarounds, one can use docker, vagrant, or whatever. I like to work in console as well - and as for now, this is a deal breaker for me.

Probably iOS development?

I've been doing iOS development on a PC for years.

The WinPhone software stack is quite good.

Free Unlimited Private Git Repos hosted by MicroSoft (Looks like BitBucket has a new competitor) this is really surprising.

Bitbucket /and/ https://gitlab.com/

Microsoft's free unlimited chat and phone calls (skype) gets scanned for ads, and links followed[0]. Probably also stored and forwarded to the NSA.

Don't put anything in there that you really care about, without using something like git-crypt.

[0] https://news.ycombinator.com/item?id=5704574

You do realize that the scanning is meant for checking the links for malware, redirection and metadata for previews. Which popular chat service doesn't do this? Paste a link into Facebook, Google+, Gchat and all are likely to do the same or the least passively scan it against a list of known malwares.

You are more likely to leak information by just using your browser. Remember chrome does sent full URLs of your downloads/malware sites when detected back to its HQ. [1] or post a comment on Slashdot and get your entire computer port scanned for free. [2]

I thought it was common sense by now that if you have something sensitive to share do NOT use a cloud based chat or repository!

[1] Information regarding a potentially harmful site or executable file download (including the full URL of the site or executable file download) may be sent to Google to help determine whether the site or download is harmful. - https://www.google.com/chrome/browser/privacy/

[2] https://news.ycombinator.com/item?id=7562074

> You do realize that the scanning is meant for checking the links for malware, redirection and metadata for previews. Which popular chat service doesn't do this? Paste a link into Facebook, Google+, Gchat and all are likely to do the same or the least passively scan it against a list of known malwares.

The first time I noticed Microsoft was doing it, was not long after the skype purchase and moving to a centralized comm model; gchat for sure was not at the time, and decentralized skype wasn't either. Furthermore, following that chat, Bing started scanning a server that was not linked from anywhere on the internet. I find the correlation more than suspicious.

Anecdotal, but skype ads on a friend's computer tend to reflect chat subjects - which is NOT just "malware protection". I wouldn't know - I only use it with an iPhone 4 and its old adless client when I do.

> I thought it was common sense by now that if you have something sensitive to share do NOT use a cloud based chat or repository!

I thought it would be too. But I keep meeting people who have the general idea that "well, all my email is already on gmail/the cloud, and it's working ok - so I guess all cloud services are trustworthy". And it seems for this kind of people, until their own gmail gets hacked, nothing gets the message through - and sometimes even if their own gmail gets hacked.

I was a consultant for one (rather successful) company who keeps all their precious data on AWS (a few TB of it), without even a local copy, and I couldn't convince them that yes, even though Amazon probably has better IT and security than they do, it's still a SPOF, and if anyone (e.g. hacker) changed their data-at-rest, they would be none the wiser.

Common sense is not all that common.

Sort of off topic, but it's Friday afternoon so maybe someone has an opinion. Do people who got burned by Microsoft think its different this time? I see a warm embrace of a variety of non Microsofty things, so naturally I'm worried about what comes after (Embrace Extend Extinguish).

I think it might be a little different this time. I remember when they "open sourced" code in the past they used some freaky restrictive license of their own that nobody wanted to touch[1]. Now they appear to be using accepted open source licenses like MIT and Apache.

I agree with apalmer and worry that as soon as they get some leverage over you, you are still in trouble. I can't predict the future, but I've found past behavior to be one of the best predictors, for better or worse.

1. http://en.wikipedia.org/wiki/Shared_source

Change happens. You can adapt and seize the new opportunity, or if you are more risk-averse, wait it out and see how it matures. Any company can burn you at any point in time. How many services have Yahoo and Google killed off over the years (just to name two of the big guys)? Personally, I'm excited to see a company like Microsoft embrace the developer community (I can't wait to try Windows 10 on the R-Pi).

It's fine to have reservations about new technologies and companies' strategic shifts. Being a little skeptical is healthy. Objectively, you have to admit that there has been a massive sea change happening at MS over the past several years, and it's all moving if a common direction toward a more open embrace of the non-MS, open-source development community (I was as surprised as anybody when I saw that Azure supported non-Windows VMs, and I doubt they'll pull support for those).

While it's entirely possible (though I'd argue not very likely) that they could shift back to their old ways at some point, ask yourself this: Do you and the projects you work on stand to benefit from Microsoft's new direction? If so, you would be doing yourself a disservice not to try their products and services when you're ready. If they don't offer anything appealing to you, then what's there to worry about?

It is different this time, but it is only different so long as microsoft doesnt have leverage.

I've been burned a number of times. Both from audits (that was expensive, even after we were told we were compliant) to spending all night up because ReaderWriterLockSlim deadlocked across our entire cluster and took our entire platform down. Also I've had the tools melt like butter in my hands. And I've had my fair share of inherited shit balls. Not only that they've been treacherous bastards historically.

But the thing for me is the cash is pretty damn good and some days you can get so much done its unreal. I've worked with Unix platforms for the same time (20 years now) and know both inside out and windows is way more flexible, particularly when it comes to the end user.

What comes after exbrace, extend is no longer extinguish though. Any sane person these days makes portability choices. We're rebuilding our stuff as microservices now (4MLoC C# projects won't survive without this). Now their stack is getting a look in because we're already experienced with it but if they shaft everyone this time, its trivial to port our services away to other tech. We rewrite most of our stuff perpetually so they'll evolve into zero risk.

Seems like their CEO is pushing a new strategy. I'm starting to warm over a bit personally. I would love to be able to use visual studio for all of my hobby projects, but I need to have confidence it's going to support things like node, Linux, Arduino or whatever else I'm playing with at the time. I'm watching MS closely now. Perhaps they might just turn themselves around.

While you'll find many who legitimately complain about Microsoft's products, I think you'll find very, very few folks around here who were actually burned by EEE :-) Most of the hate seems to come from people who: a) are open source fans and didn't like Microsoft's stance on their religion of choice (which was actually not EEE); or b) worked for companies that competed unsuccessfully with Microsoft; or c) just parrot what they hear from people in groups (a) and (b) because they don't know any better.

It would be interesting to poll HN to find out who got actually burned by EEE and how.

I've been hearing about this'new microsoft' for the better part of a decade (yep, even when Balmer was still around). So every time somebody mentions it my mind muddles anything else they have to say.

I'll believe Microsoft has turned a new leaf once they've open sourced their Operating System's Kernel and their Browser Engine and stopped development on DirectX or handed it over to Khronos or ISO/IEC and/or open source it.

And give away all their money to the poor...

Hey, I never said they'd do it. As fanciful as that all is it's no more fanciful than the so called 'new Microsoft' some people are dreaming up.

Open Standards for APIs

> We make it easy to integrate your custom tool or third-party service with Visual Studio Online using open standards like REST APIs and OAuth 2.0.

Stuff like this makes me wonder what % of devs use IDE's vs text editors. Personally I can't see myself going over to an IDE, and I would have thought that most 'non traditional microsoft developers' wouldn't consider it either but maybe I am way off base.

I've done development both with and without an IDE and I find debugging vastly easier with an IDE. How do developers who don't use IDEs do debugging other than with print to console statements? Do they all use tools like gdb and lldb?

I've pondered learning how to use a tool like gdb or lldb and then using SublimeText for editing the code, but it looks like a lot more work than just clicking to set a breakpoint in an IDE. I'm curious to hear what non-IDE developers are using for debugging.

gdb on single threaded C code wasn't bad. I tended to put all the "static" data for a module within a structure, usually called "m", and would have the debugger do a "print m" and a "locals" automatically whenever it hit a breakpoint. This showed you pretty much the same data that a Java or C# GUI debugger does when you stop, albeit wrapped on a long line instead of one per line in a scrolling list. If you were really hard core, you could run gdb inside of emacs, and the edit window would follow along the right source files when you stepped and hit breakpoints.

Honestly, back in 1994, gdb (as well as Borland Turbo Debugger) did way better auto-formatting of data than the MS C IDE did.

I have not used VS since 2005, but it's debugger seemed no better than Eclipse or NetBeans. I started using IntelliJ this year, it's portable, and it rocks. But it costs money, just like Visual Studio.

Of course there are debuggers outside of the IDE world. For instance in Ruby we usually use a debugger as a library (gem) and we call it as a method call wherever you would put the breakpoint in your IDE.

Typing in a method call on the line where you want to debug isn't much of a leap from clicking a breakpoint.

I am sure the situation is similar in other languages.

The big difference I'd point out is that breakpoints can be added and removed at runtime. Sounds like what you're describing is a situation where you have to modify your source code to add a breakpoint (similar to a "debugger" statement in JavaScript or C#). To me, the big value of an IDE is that it lets you set/unset breakpoints, step, inspect arbitrary data, and modify application state, all at runtime. Now, I still typically work in VIM and pop open an IDE/debugger only when I hit a hairy problem, but I still find them really useful in those cases.

I can't understand why people wouldn't use an ide. I mean, an ide is a text editor, plus lots of useful extras. It's an objective fact, not an opinion. (Where is the line drawn between ide and text editor anyway?)

Performance has not been a valid argument in this question for the past 5 years. And just because an ide has project wide refactoring and semantic search doesn't automatically mean it doesn't have good hotkeys or text transformation tools...

There's a /great/ video to watch - Programming with Hand Tools by Ewald. The ending is a twist. It's actually not about IDEs. You expect it to be... but then there's a twist at the end and he talks about something completely different. Great presentation. It has a cool star wars reference too.

  > Where is the line drawn between ide and text editor anyway
When people say a text editor, it tends to imply having a single powerful general-purpose editor as your go-to for most work.

I've used Vim for about 19 years, and Visual Studio for about 15.

There really isn't much difference between typing :make and hitting F5. Both have syntax highlighting.

Where Visual Studio beats all others is:

- Debugger

- Intellisense

There are lots of other nifty features, but those two are what make me choose to use Visual Studio for some projects over Vim/shell tools.

The JetBrains IDE's (e.g. - IntelliJ, WebStorm) are pretty good, and they run on Windows, Mac and Linux. To me, JetBrains seems like the new Borland (in so far as they are focused on the stuff Borland did well - programmer edit / debug / profile tools), only without the language lock-in. (I started using the JB stuff a few months ago, and I am hooked now)

Like NetBeans, JetBrains also have a vi[m] plugin, so you get both vim style rapid edit commands AND auto-complete, lookup, debugging, etc.

Does Visual Studio have the "Awesome Edition" on all 3 major platforms?

Nope, but it has edit-and-continue debugging on windows.

I recall having trouble with a library crashing under Linux. I looked over the build scripts for it, created a corresponding Visual Studio project for it in Windows, and got it compiling. I then stepped through it with the debugger, edit-and-continue to fix the issue, and then copying the working source code back over to Linux.

I probably could have used gdb, but the debugger in Visual Studio is so good it was worth it. Debugging in gdb is more work than it was to port the library over, and that sucks.

Visual Studio Code has Intellisense for Javascript. I never want to go back.

To what? Notepad? Just kidding, but you didn't state the alternative :-)

Other IDEs have auto-completion (even for Javascript) as well.

Some also have vi[m] plugins for edit keys, so it's the best of both worlds.

Many do static parsing. I found even Atom's Autocomplete+ is far too primitive to be of much use. Whereas VS Code doesn't even support JSX and yet it does a better job at autocompleting.

My two cents on this is that IDEs work better for me personally on large projects. If I just banging out some JS or HTML, then any old text editor will do. If, however, I'm knee-deep in dozens or hundreds of Java classes there is simply no substitute for a project-oriented IDE that supports things like project-wide refactoring, dependency awareness, and type checking (among many other features). Personally, VS has long been my favorite IDE, but I've only gotten to use it on a handful of C# projects. Most of the time I'm coding in Eclipse, and I've learned to really appreciate all that it offers. It's not the most intuitive IDE, but it sure is flexible.

The post is all about cross-platform development with the Visual Studio Online service for source control (e.g. git) and project management. You use the text / code editor of your choice, no IDE required.

If you work with a strictly typed language with large libraries, there is just no way you can be efficient without parameter help (intellisense) and so on. Having to lookup method signatures in a web page just isn't feasible. Sure, most of the large text editors such as sublime/emacs/vim can integrate a debugger, compiler/autocompleter and so on. At that point they are IDE:s!

If you work with a dynamically typed languages and/or web things then things aren't so black and white.

The best is Eclipse, millions of downloads for the current version: https://eclipse.org/downloads/

I use vi for files no larger than a page or two unless it's Java then right into Eclipse. I guarantee whatever you think you can do fast without a good IDE, even Visual Studio or NetBeans, I can do 5 to 10 times faster and better and more bug free and prettier and more stable and more maintainable.

Some devs are infinitely more productive with an integrated debugger. They use an IDE. I'm one of them when the situation is right (C++).

I use the VC IDE for debugging, but not for anything else. There is still no text editor on the market that pushes all the buttons that BRIEF did in 1990.

Its a shame that every Microsoft post goes the same way.

MS is (again) new cool kid. Rainbows and unicorns.

Definitely as far back as Slashdot circa 1998. And almost certainly somewhere else before then.

If Microsoft continues like this - I'll have no choice but to start liking them and doing more dev on their platform ;)

Somehow though, I can't seem to silence the inner voice in my head that keeps asking: "Can a Leopard really change it's spots"?

It'll take a few more iterations of MS's displays of commitment to "Openness" to get me to believe that they have fully embraced the concept.

I won't be holding my breath ...

OK, so after wading through all the marketing fluffery, it sounds like MS is coming to the table with source control hosting, and calling it Visual Studio (Online)??? (I sort of expected some kind of web based editing, or maybe even remote debugging, based on the name).

And, judging from the comments, its greatest strength is when it emulates git, ignoring their previous 2 source control products?

We used this when it was called something like tfsonline my god it was shit. 18 months later have they fixed it?

This thread is all about TFS version control, while the post is all about git source control in Visual Studio Online.

I never got along with TFS source control, but git source control on VSO works great for me. I've worked with several private repos on VSO, then pushed to external on GitHub when they were ready to go public, and it was a non-event - commit history and everything came over as you'd expect. It's standard git hosting.

VSO also has a lot of other handy features like cloud-hosted load testing (https://www.visualstudio.com/en-us/explore/vso-cloud-load-te...) - 20,000 virtual user minutes free every month. If you have an MSDN account, you can apply your monthly Azure credits to test hours. It's a pretty good way to hammer a site, I've used it to test autoscale.

Disclamer: Microsoft employee (until they notice I'm posting on HN instead of replying to e-mails)

TFS's version control system is - in my personal opinion - broken. TFS hosting git repositories? Works fine. I mean .. The git part works fine.

So, it depends. If you just care about a place to put your code, I'd say that's quite decent. If you want issue tracking I'd say 'you can have that'. What was shit/terrible in the past?

(My experience is based on a TFS setup on-premise, latest version/patches. VSO is usually ahead and better)

frame of reference: .Net Developer for the last 12 years, been a lead developer for 3 years, have been the build guy at a couple different places, and set up TFS for a couple different companies...

The thing about Visual Studio Online is frankly...

Really TFS isnt better than anything comparable for project management related stuff, meaning: scrums, work items, bug tracking, release planning/scheduling, kanban boards, burndown charts... Its just not that good.

TFS isnt really strong in source control either, for really super big enterprise stuff perforce vault etc are generally preferred, for large scale collaboration projects decentralized as in git is where its at, and small scale or 'slow to change' either git or svn is a better fit...

TFS is a deployment nightmare, and migrating between versions is a terrible time consuming experience...

Really TFS at this point's only real strength is good Visual Studio integration...

So a TFS client that's not in Visual Studio..... just isnt really competitive with 'average' tools, not even considerable against 'best of breed' tools

Exactly. My current team uses TFS for source control, ci builds, tests, work item tracking and reports.

When I first joined, I couldn't believe what a cumbersome mess it was but as I've had to work on some of the infrastructure from time to time I am really impressed how it all fits together and how much can be surfaced right inside Visual Studio. (A separate team maintains our actual instance, thank god.)

The true pain as a developer comes from the poorly thought out UI which makes every little task click heavy. To make things worse, the UI is poorly threaded and seems to prefetch nothing. This means that drilling down into any area, especially the source control view leaves you waiting 1-3 seconds per item you expand.

There's also some weird usability holes, like why after 5+ years is undo unchanged a command still only found in the optional power tools utility?

Right, the UI seems like you're doing work in access and every click opens another tab. Some features are 'nice' (link to workitems etc.), but you have dialogs with tabs with tabcontrols with gazillion other controls and .. yeah. You don't want to use that, basically.

I could swear you were talking about IBM's SCM software :)

Hey. Now - if you're looking for someone to talk to about TFS and bash it to death, count me in.

The thing is, I mostly care about my VCS. And TFS supports git natively now. No need to interact with anything else if you don't want to. No need to use the VS integration. Or the website (although that one did improve a lot in the last couple of iterations).

WorkItems are .. well. What do you expect from 'extensible objects based on XML that are used for tasks, tickets, and whatever you can come up with'? So .. yeah. I'd say it's subpar at builds, tasks, issues etc. - but again: You can host your repository there and ignore it, if you want (I do).

Especially your line about TFS's source control seems confusing, because I explicitly said that it only supports git or crap (TVCS or whatever that thing is called).

Oh, I get you. Just adding my two cents, basically if the only thing VSO really does well is use git as a source code system... I would suggest most people just use git, github, bitbucket, etc...

Isn't it true that TFS is quite quickly evolving? I started evaluating options to migrate from a trac/svn setup years ago, and wasn't impressed by TFS then. But TFS 2013.4 is really decent in terms of features, and the newest things from 2015 on vso add even more things.

The version control in TFS I'm not so sure about, and it seems obvious that some things aren't as powerful as they are in git, but if I rule out git because of repo size then TFVC looks quite appealing as far as centralized vcs goes. (really git only works up to a couple of gig of total history which is ridiculously small if you have a 10+ year project with a decent amount of binaries you want full history of). Most of the TFVC-bashing I read is from the early days (<2010) when TFVC seemed to want to emulate SourceSafe, by requiring checkouts. It's very hard to find any info on how TFVC 2013/15 compares to the alternatives.

TFS upgrading and maintenance scares me, but if you rely on VSO instead of on-premises, that part also feels manageable.

Issues with 'current' (2013) TFVC, as far as I'm concerned:

- Slow as molasses for every operation

- No offline commits. You do have 'client workspaces' now, which just basically means that the broken and insane 'The server remembers your last known state' goes away and you have something similar to svn: A local 'baseline'

- Branches are 'copies'

- Merges are a PITA

- Conflicts are a PITA

- Depending on what you're doing you probably _WILL_ need to get a specific version (and yeah, please overwrite) because get latest is broken/doesn't work (probably not relevant for client/offline workspaces anymore)

- (The UI is terrible. Far worse than the git CLI could ever be, in my world)

So, my preferences:

- Git

- Any other DVCS



- TFVC, SourceSafe etc., because they're the same thing in terms of usability for me (now, safety/stability is something else. TFVC would probably win when we check out the camera at the finish line).

It is really, really limited and bad.

Basically we are in a situation where we want to use festure branches or shelve sets for easier review and CI, but our repo is too big for dvcs. Feature branching is out of the question in svn of course. What I'd want is a good centralized git where you can have a 20GB bare repo but check out 2GB recent history from some branches and work with that.

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