Agreed... if you have 5 software developers, and other overhead, you'll hit that while barely at a break even point. That said, the relative costs if you have that many employees is pretty small.
I don't think the break point is particularly unfair... there are lots of students, and small/indie developers that can use the Community Edition, where before you had to cobble along with the Express versions. I now use Community at home, which is just easier to deal with.
I don't think I am? There's a million bucks a year going in, and then some big chunk going out, and what's left over is profit. What I pointed out is of that million dollars coming in the door, the amount extra that would have to go out is not that much in absolute terms, and not that much as compared to a programmer.
Completely disagree -- the Apple trackpad drivers on windows are awful, and on a laptop, most of your time will probably be spent using a trackpad. Trackpad++, which the author of the article mentions, can help, but it's a horrible program for the following reasons:
1. The developer requires that you put windows into "test mode" (creating a non-removable desktop watermark) to install it at all, apparently to get around code signing restrictions
2. The developer requires that you install the completely useless "Power Plan Assistant" program in addition to Trackpad++
3. The software itself is terribly buggy, causing random 100% CPU usage spikes
I nave a Dell laptop and it has a great trackpad. Gestures work consistently, I use them all the time. The only real annoyance is that the material of the trackpad is not the most comfortable for finger swiping but it's alright.
As a universal, parent's claim is patently false. I have an Lenovo X1 Carbon that is a testament to how crappy a trackpad can get. I have had a few PC laptops in the last 5 years (HP, Lenovo) but have never found one with an adequate trackpad. So, if could you please tell me which laptop I should try? This is quite easy to test.
I've heard good things about the new XPS trackpad, but haven't been able to try one in the wild yet.
Your issue is that you're misunderstanding the parent comment's claim. Izacus didn't claim that Windows laptop trackpads weren't bad -- the only claim made was that Apple trackpad drivers were worse. I've used a few friends' windows laptops, and while their trackpads certainly weren't good or perhaps even adequate (to borrow your term), they were without a doubt better than the Apple-laptop-running-windows combination, which I would classify as far below "adequate".
I have an X1 to test side by side with an rMBP running windows, and the X1 is categorically worse. Heck, I've tried many PC laptops (we have access to many at work) and haven't found anything that was as usable as an rMBP.
So, just name one laptop whose trackpad is better than an rMBP, I'll go try it side by side.
Maybe... Still my Yoga 2 Pro feels and looks better than any Mac laptop I have own or seen. Touch screen is definetely a must-have to me. It is specially useful if you are developing for touch devices.
Yeah, who wants a touch screen on a laptop that converts into a tablet? That's just crazy. Man, fuck those people for adding functionality that I don't even have to use in laptop mode, but which is essential in tablet mode.
I don't want a touch-screen on a tablet, either, because I don't want fingerprints on it when I'm reading on it. Which is why my Surface Pro 3 is essentially only a laptop, because using Windows 8.1 (and 10) in pen-only mode is unpleasant and slow.
I'd say the same about a phone, but I don't spend my day staring at my phone.
I don't mind a touch screen on an iPad. But my Surface attracts fingerprints like nothing else (I have generally oily fingertips--it's not a function of washing, it manifests very shortly after I wash my hands), and it's really hard to keep it clean. If I use it for a full day, I probably wipe it down six or seven times. It's super distracting when I'm writing code or something.
Well if it as light as the increased weight from the addition of a touchscreen, I wouldn't mind having two!
However on a serious note, its not as bad as you think. Just have to get used to it and once you do that, there won't be a going back. Think of it as something that is supposed to complement your existing workflow and not as something that would replace it. You know like have a voice assistant on your phone, you don't have to yell everything at it, just some quick look ups.
I disagree, strongly. It is precisely as bad as he thinks, and what makes it worse is that it damages the viability of a pen-based workflow (which I am in favor of, because I do a lot of visual stuff and I use OneNote quite a bit).
I want to be able to disable it entirely and not smudge the crap out of a screen I'm trying to work on, but it's effectively impossible and when you do disable it it all falls back to keyboard controls and leaves you with a garbage pen exeprience.
I think it is an interesting perspective. What would you say the purpose of open source is? If not purpose, you can call it an attractive property.
Let say you have the sources of an algorithm implementation, but they are unreadable because the variables are not named, you don't know the name of the algorithm getting implemented and so on. Of course this is a lot harder to understand than code which cites its references (like papers and so). Wouldn't this qualify as being able to "see how the the software evolved"? Granted, VCS history is only a small part of this, but I think it may help cause it would show what improvements were done, which shows the direction of the project, showing what's important. A large part of being a good programmer is knowing what NOT to do. If you see what others failed to do, don't you think that helps?
> What would you say the purpose of open source is?
The Open Source Initiative has this to say: "Open source is a development method for software that harnesses the power of distributed peer review and transparency of process. The promise of open source is better quality, higher reliability, more flexibility, lower cost, and an end to predatory vendor lock-in."
Recognizing that "Free Software" and "Open Source" are terms for essentially the same thing originating from groups with slightly different goals, the FSF says this about Free Software: " Free software is about having control over the technology we use in our homes, schools and businesses, where computers work for our individual and communal benefit, not for proprietary software companies or governments who might seek to restrict and monitor us." 
Seeing the past history of a project before the point at which it was opened is somewhat related, but not necessary, to the motivation cited by the OSI, and not, as I see it, even related to the FSF motivation.
Nobody is seriously going to fork this and create their own port of MSBuild, possibly one of the most mocked and reviled parts of the .NET ecosystem. I do however congratulate the ground level MS staffers on the effort it likely took to convice the Risk and Legal departments that open sourcing something like this won't make their business fail. That must have been trying.
Yeah; I've had to deal with MSBuild, and I've never really liked it. I have to assume that the big motivation was that they'd prefer to port MSBuild to OS X and Linux than to port MS solution files and MS project files to CMake, Automake, or some other build system.
I haven't gotten past the point of where I just hit Ctrl-F5 and Visual Studio builds stuff for me with MSBuild, so I am certainly no expert on it. But I never had the impression that people liked CMake or Automake either. I ask this not as a rhetorical question but as an actual one: are there build systems that aren't hated, or does everyone just hate the one they have to use the most?
Building using a keyboard shortcut from within an IDE is just one of the many tasks a build system is required for. Another is setting up a build server that builds the projects on every checkin, deploys it on the various test servers and runs all the test suites. That requires the build system to be scriptable, idempotent (as in weird stale cache issues won't screw up your builds) and easily controllable from the command line.
MSBuild completely sucks at these tasks when compared to any free software build system such as Ant, Automake, CMake, WAF or dozens others. It was designed to be used in conjuction with Visual Studio and you very much feel the limitations of it when you try to use it from the outside.
Everybody hates some aspects of some of them, in my experience. People also tend to have strongly held preferences in the build system department - it's a bit like text editors. I tend to view it as problem-dependent as to which system is better. If you're all java, you probably want a build tool designed for that language (for example.) Lisp has asdf and friends. My focus (cross platform C/C++ building) has led me to deal with autotools and CMake. I prefer CMake for 3 major reasons: 1) self contained - you just install CMake itself and you can handle all sorts of things (tar.bz2 decompression, file copying, directory creation, etc.) automatically and portably. No need to first install Python or Perl or... whatever for Windows. From a Linux/*BSD perspective, developing on Windows is like crossing the Sahara - you need to carry your own supplies. CMake packs a lot into a small, self contained package. 2) Learn one language and you're done. Would it have been better to go with something like lua? Probably, in hindsight (my opinion). However, compared to the mind bending complexity that is sh + m4 + automake + autoconf + ... CMake is (in my experience) quite a lot easier to get a handle on. 3) Wide support for many platforms/tools (Visual Studio, Xcode, ninja, make, Eclipse, etc.) from one common set of build definitions. The maintenance savings really add up if you need to support all those tools - Hunt and Thomas's DRY principle in action.
I'm a fan of CMake for C++ as well, but have also worked on projects that included C++, C++/CLI, and C# and unfortunately CMake support for .NET projects is close to non-existent (there is some, but it's woefully inadequate). I managed to get it to work, but in a very non CMake way (basically generating the .csproj files by replacing variables within the XML with the appropriate value).
As for MSBuild and VS - I thought that Visual Studio actually compiles things with devenv.exe, rather than MSBuild. I remember working on a project where I was trying to set up Jenkins CI to build our projects and MSBuild wouldn't work (because the environment wasn't set up correctly), but using devenv.exe instead worked perfectly.
The CMake language is just an atrocious mess, but that gets easier with time. The main problem with CMake on Windows is that it is really really slow for large projects (because it has to call back out to CMake to do all sorts of basic stuff) and that debugging CMake errors is horrifically hard (this has improved in recent MSVS generator integration, but I'm stuck w/ VS2008 still).
SBT has issues (I'd say performance primarily), but works really nice for what it does, IMO. Virtually no configuration required (for a simple project you only need to specify dependencies and maybe import IDE plugins), scriptable in a full JVM-based turing-complete language (Scala), sane per-project dependencies (packages are cached globally for the user, but whitelisted classpaths are dynamically generated for each project), and a consistent design (SBT plugins are really just library dependencies of the build itself, for example).
I was working on adding unusual steps to the build. Things like "run the Protocol Buffers compiler on these files" (which, in the end, I just did through a batch file), and making sure the solution could be built on our CI server (at the time, that was Cruise Control but we eventually switched to Jenkins). It was no worse than Apache Ant in my experience (but I'm no fan of Apache Ant).
The project I worked on was relatively new. Another project had been started in Visual C++ 6 and upgraded multiple times over the years. Occasionally, somebody would go through the solution file and project files to see if we were doing silly things because of this evolution (e.g., defining rules that weren't ever used). And we had two or three ways of setting paths so that developers could check out the code and build without worrying too much. Especially when it came to projects that needed DLLs from other solutions.
We were able to reduce the amount of annoying things to a tolerable level. I believe they moved to something like NuGet (for some things) after I switched jobs.
Which... the reason it sticks out with me is that really good rants are a lot more memorable to me than people talking about what software they like, which is probably not a fair way to evaluate software.
I doubt that it's anything as ephemeral as "public relations" that's driving this. They want developer mindshare. Having developers writing for .NET means more software available for Windows users and for Azure services. That means more people buy Windows devices and Azure time.
Yeah, I've never written anything in .NET but I know from experience the pain of sub-par documentation. Thankfully most of the stuff that I work with is OS so I can always dig into the code if the docs are lacking. Glad that now .NET devs who use this can do the same!
The value isn't in creating a new version of MSBuild. The value is in getting PR's merged into mainline. If you've ever done any CI based work, you'll know how valuable this release is! (says the ex .NET developer)
I just type "msbuild" (or press F5 in VS) and I get result .exe file in 0.2 second. On Linux I type "xbuild" and it's the same.
You can use Visual Studio without even knowing msbuild exists. Just occasionally a pre-build or post-build script needs to be added.
Makefiles, Gradle or CMake are much slower and very complicated.
MSBuild is a nightmare to debug if you end up writing even moderately complex MSBuild project files. It doesn't help that VS has a completely different implementation of MSBuild which is subtly incompatible with the command-line MSBuild.
Also, setting up proper dependency tracking, so that builds are incremental, is considered an "advanced topic", and is extremely difficult to get right in the presence of various kinds of generated files in the build. In these cases, it is much, much slower than a modern build tool like ninja.
MSBuild being open source is going to save countless hours of building workarounds for bugs that have been acknowledged and gone unfixed, or debugging strange problems.
I'm happy to see that it's happened, but would have been much happier had it happened a year ago and saved me months of build system hell.
For some reason, when I was wrestling with that problem, all I could find was other people on forums with the same problem, and an acknowledgement that MS tried to keep the differences minimal. (I think, too, that some of the larger discrepancies must have been fixed with newer releases of VS... I recall things breaking even with VS's regular build command, not just when debugging.)
One of those two is my fork and yes I did it to fix something, but edandersen's point was more geared towards a real fork (i.e. something that takes the project into a different direction) instead of the fork that GitHub requires to send a PR.
I agree with him, we already have a bunch of popular .NET build tools other than MSBuild like FAKE, basing one off of MSBuild doesn't seem to add a lot of value imho.
Typical 'let me mock this because hating on MS on HN is cool'
Can you name one build system that people like, and concretely compare how its better than MSBuild, please? Once you do that, please feel free to omit the perfunctory thank you to look unbiased.
Also, this would now be community developed, let me know your github handle and I'll see what contributions you made to make it better (oh wait, that would require actual work and give you 0 internet points)
No. It's also very much not irrelevant if you build non-web software. (I do games with .NET, and that's not going to be replaced by the kproj stuff anytime soon. Which is kind of a drag, I like that stuff, but such is life.)
Given the abuse and name-calling directed at another person further down in this thread posting under his real name, combined with the persistent attacks on any comment that is perceived to be in any way a criticism of Microsoft, I can't imagine why anyone would ever post under their real name around Microsoft fans.
> If he wasn't being such a prick in the first place, maybe people wouldn't call him one.
There we go. Posted straight from Redmond, no less.
I'm not sure where you guys get off calling another commenter "a prick" over and over again, along with other insults, for a joke pull request, given there is a long history of people (including pretty notably respectable people) creating them. I even listed some in another comment you guys can keep downvoting (because apparently my comments are worse than personally attacking other commenters): https://news.ycombinator.com/item?id=9229987
I was using the same wording that the other commenter used, because that's what he was. If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck.
It's a joke PR, sure, but he was being disrespectful. He was insulting everyone who has worked on the product because he feels it's crap. He's entitled to his opinion, sure, but at the same time, he didn't have to state it the way he did. Just because it was a joke PR does not suddenly excuse him from his actions. It's not like it suddenly makes things okay.
He straight up made fun of the product, in a disrespectful way, and was called out for it by the community. You are free to disagree, sure, but there's a reason people reacted the way they did.
And furthermore, my location and the company I work for are completely irrelevant to this discussion. I'd appreciate you not bringing them in. I speak for myself, not my employer.
Joke pull requests waste the time of people who have much better things to do and demeans the immense effort it takes to drag projects to open source at large companies. Being called a prick for doing prickish things is a very light response, and in a functioning culture (one of which which software developers rarely do more than pretend to aspire to, but that's nothing new) it might even be enough to teach him to not do so again.
You know the best part, though? I've probably perturbed more electrons on why MSBuild is a horrible build system, and how its integration with Visual Studio will happily destroy many types of changes in .csproj files, than most people here. My life is worse when I have to deal with it. But despite that, I somehow manage to not cape up for jerks who hurt people. Isn't that weird?
And not one of your "pretty notably respectable people" is a person for whom I had the time of day before you alerted me to their penchant for screwing with other people for fun. A list of meaningless names to buttress the case for hurting other people is remarkably unpersuasive.
Samsung and co ship non-smart TVs with exactly the same panels for hundreds of dollars less than smart TVs of the same size. Just buy non-smart TVs and couple them with a decent AV amp and games console and you can replicate all the smart TV nonsense with other devices.