(By the way, I also don't get the affection to use dual-booting or virtual machines. Sure, if you are a poor student which which $300 is a lot of money, a VM might be worth the fuss. But in practically all other cases, it is far more effective to just set up another machine and use Samba or whatever to share some of the filesystem. Alone the time lost with Windows updates is a good reasons to quarantine Windows a bit.)
Ah, and one thing that really helps for keeping the workflow unified is just to use Emacs on Windows - that makes it needless to do the mental switch to different keyboard shortcuts every time, and allows to consistently use powerful tools such as org-mode. And vim users probably have equivalent tricks.
And apart from that, Windows is, specifically in forums and developers social media, massively advertised to to be associated with Linux. But advertising very much creates false connections, using a shell on Windows it not productive and no substitute for working with a free (as in libre) and open system which is controlled by the user. Linux is about freedom. Windows is not. Stallman might be annoying to some, but when you draw the balance, he is too damn right.
All (2 in 1) screen related things on Windows just work better.
Second the emacs tips though(bar tramp support hassle what with lack of ssh command on win - there are workarounds though)
Surface books and touchscreens are discussed here in the context of a software developer system. I am however really a bit puzzled by that. What does it mean to have touch on a software developer system? I understand surely that Microsoft does not want to lose a generation of developers, and that it considers them as trend-setting or even required to create gazillions of fantastic future Windows apps which will populate the Microsoft app store with killer apps for the Surface tablet. Microsoft marketing surely wants to sell the surface (if I were them, I'd probably hire some PR agencies to flood Reddit and HN with positive comments about it).
Also, Microsoft still seems to live the dream - in the face of all these failures such as Windows Phone - that desktop software, tablets and mobile apps shall be, will be, must be convergent and that desktop and mobile will have a common UI. Which is touch. I won't comment more on that. If you ever tried, it is hard to shatter someone else's dream, even if those wishes might not entirely based on experience.
But now, let's come to real life, and let's become a little, just a little, practical. As a first, consider that software developers are people which handle program code. In most cases, lots of program code. In many cases, quite complex program code.
The code is displayed on the screen. Developers have to remember many things, and the more code you have on the screen, the less you have to remember while working on one thing. They say that we can only remember seven to nine things in short-term memory, for more things we have to memorize. Memorizing costs a lot of time.
That has a simple consequence: The larger the screen is, the more text it displays, the better. Just let's take my home PC which I mostly use for hobby programming. It is a 43 inch Philips BDM4350 with 4K resolution. It is glare but I can live with that - the room it stands in does has usually no direct sunlight, I can use shutters, and I have happily exchanged non-glare with that amount of screen estate. For me, it is an absolute dream.
I just say, as a professional software developer, you will want a screen that large. A smaller screen is a waste of time, and therefore a waste of the company's money. If you own an IT company and your developers have smaller screens, ask yourself why.
So, I ask you to do a little experiment. Not a thought experiment, but a real-live experiment. Imagine you have a 43 inch touch screen in front of you. Sit at a proper ergonomic distance. Now, lift your index finger and point it at the height of your chin in that ergonomic distance.
Now, keep your finger still for one minute. Just one minute.
Do that now.
You note something? It is hard. It requires a lot of effort. Doing that all day will be very, very tiring.
If you want a high-precision graphical input for a large screen, you will not want a touchscreen. You will want a graphics tablet and stylus flat on your desk. In addition to your 43 inch monitor, of course. Good news! You can buy a high-quality Wacom graphics tablet at Amazon, even refurbished for less than $100. And Wacom tablets have excellent Linux driver support since a long, long time. They are very fine for drawing artwork. I am not going to recommend drawing software since that's not my realm of expertise.
However, as a software developer, especially with more experience, you will normally want to use your screen to display text. As much as possible. With as little waste as possible. Which leads quite naturally to text-oriented, keyboard-oriented work flows, tiling window managers (like i3), and text editor like vim or Emacs, which among other things, do one thing really well: They don't waste screen space. Of course, learning a tiling Window manager requires a little bit of dedication (you have to memorize key chords, duh), but it pays off after one or two days, switching between terminals and windows is not more a matter of a second like when doing it with the mouse, but of a single key combination which does it in a tenth of a second. And this does not only save time, this makes it much easier to keep the flow, to stay focused on what you were working on.
I use a Lenovo Yoga X1 2 in 1. Using the laptop form factor, linux works great(as I had expected). However, using as a 2 in 1, it is not a good polished experience.
> What does it mean to have touch on a software developer system?
It means when I purchase my own personal system(which I do intermittent dev on), I can buy a multi purpose device which replaces the need for me to buy both a laptop & a tablet.
I would consider it a bad use of my experience to develop on Windows. The market agrees with me, experienced Linux developers are much better paid.
> Next, even if you install a Virtual Machine it might not work as seamless as having an Unix shell natively, thus some use Cygwin.
I would not call cygwin a native Unix shell.
> Regarding poor students, would you prefer to commute daily with multiple laptops? One for Linux one for Windows? I doubt so.
I don't use Windows for personal stuff. Apart from that, VirtualBox would still be a better solution if it was necessary to use Windows. For example, updates on a Windows machine which is rarely used can easily take hours. One does not want to have his work machine blocked for so long.
Apart from that, abandoning Windows is just a matter of leaving old habits. For me, using exclusively Linux for my personal stuff has worked excellently in the last 20 years.
> Other than that, if your work is not just coding but doing _anything_ apart from code itself, word processing, spreadsheets, graphic design, cad and you still need to run something from Linux ecosystem the WSL is currently probably your best option.
Libreoffice or Softmaker office is available, but LaTeX is much better for reports and articles, and wikis and Markdown is better for documentation. MS Word is a usability nightmare. Also, I do not use spreadsheets for myself, I use Python scripts - it's more efficient, and ledger-cli for accounting stuff. Inkscape is much better than MS Visio. I am physicist and developer, I do not use CAD, but if I had to use a CAD program on Windows, I would use a separate Windows machine, as explained before.
You sound like you are just used to do everything with Windows and never have considered seriously to use Linux software, I guess you don't know most of what exists there.
Also, I'd appreciate it if people would not call areas where some software vendors have managed to create a lock-in an "ecosystem". An ecosystem is a scientific concept from biology. Using that for proprietary software environments is simply marketing BS bingo.
But why should pay companies more for Linux when they can develop stuff on Windows, and pay less? Wouldn't it be dumb to use the more expensive resource, and have less gain? The reason is that Linux developers are more productive - they create more value, and the decision of companies to pay them more is all rational. Of course the detail picture is more nuanced - it makes a difference if one develops a boring PHP app, or makes complex embedded systems for sectors like HFT, defense, embedded medical devices, or similar. But chances are that a lot of the latter use Linux, too. They just don't advertise jobs on HN.
Although this comment is not directed at me, I feel obliged to throw it back at you: Have you ever used Windows?
The odd time I need to create/edit images, there is no equal on Linux for paint.net.
None. not pinta, not GIMP. Nothing else hits the feature/complexity sweet spot like paint.net. There also is no equal on Mac.
Secondly, we're in a world where Webex still exists. It is very easy to use on Windows & Mac, & all functionality is available. Using it on Linux involves using a more limited version which runs on JVM and involves you having to figure out what dependencies to install.
Using Webex in a VM isn't feasible as there is a noticeable ~3 second delay for voice.
> Libreoffice or Softmaker office is available
They do exist but Excel simply puts them to shame.
Over the past 15 years, I've used Windows & Linux both for personal use & work. I've never been in a situation where either OS suffices on it's own, for either work or personal.
I've used Mac OS for work and it was sufficient on it's own - polished applications, alongside powerful dev tools.
However, when it came to spending my own money, I decided a 2 in 1 with Windows & Linux was a much better buy for me than a Mac, especially when it came to bang for buck.
Indeed, since 3.11. I switched my personal and academic stuff completely to Linux in 1998. I've developed about 6 years with embedded Windows Systems. Today I use Windows for some non-development tasks at work, but I develop exclusively on Linux.
> The odd time I need to create/edit images, there is no equal on Linux for paint.net. None. not pinta, not GIMP. Nothing else hits the feature/complexity sweet spot like paint.net. There also is no equal on Mac.
Many people like Krita. I've never used bitmap drawing much, but I really like to work with Inkscape which is a vector drawing program.
Apart from that, I appreciate there are different opinions.
> Secondly, we're in a world where Webex still exists. It is very easy to use on Windows & Mac, & all functionality is available. Using it on Linux involves using a more limited version which runs on JVM and involves you having to figure out what dependencies to install. Using Webex in a VM isn't feasible as there is a noticeable ~3 second delay for voice.
WebRTC works very well with Firefox or Chromium. One needs nothing more than the browser and a link to appear.in, for example:
Nobody called cygwin a native Unix shell.
Cygwin is a POSIX compatibility layer which allows you to run things such as Bash which is a UNIX shell.
How well do LibreOffice and Softmaker Office work with pen & touch in tablet mode?
Not to mention that Windows has better support for most hardware and modern form factors, such as pen & touch enabled 2-in-1s.
If you're buying something like a Surface Pro or Surface Book, the last thing you want to do is cripple its functionality, ease of use, performance and battery life by installing GNU/Linux.
But the fundamental reason for why I avoid it, is best explained in this video. https://youtu.be/rmsIZUuBoQs
The rest of the things you mention doesn't really apply to developers (when developing, at least).
But I get it, you don't like Linux.
There is a number of issues with Surface and touchscreens. First, my impression is that Microsoft Surface hardware is, too, heavily advertised in developer forums and social media. Again, one needs to discern the desired association which that PR effort wants to create, from the actual qualities and disadvantages of the product. For example, the surface laptops have earned some negative reputation for lack of durability. Anybody who would consider to buy such a device would surely be well advised to do a web search whether such problems are more frequent, a thing of the past, or a rare exception. But that's a digression. You mentioned touchscreen support as important quality and I am zooming in on that.
There is a lot more to programming than typing and displaying text with 1D syntaxes. There are plenty of DSLs that go beyond that. I recommend you expand your horizon a little.
An external Wacom tablet is no substitute for a Surface Pro, where I can draw and write directly on the screen, while also being portable. Also, the screen size is fine, since I'm sitting closer to it, and you can always connect it to an external display.
I run Windows in VMs, mostly so I can roll-back to a snapshot when something breaks, or start in a predictable state.
Windows has too many moving parts, scantly documented processes, breaking updates, and decreasing amount of control. Over the years I've become tired of fighting with my computer in order to do what I'm paid for. I'm not a consumer, so why should I be using consumer-grade equipment?
I've tried "linux-izing" Windows, but it just makes it worse. Unless you're developing with what Microsoft currently wants you to, everything is an up hill battle.
(even when I developed in Windows I used VMs for running my code, so it's not a crutch because of Linux)
I also don't use Emacs nor Vim.
Also, I highly admire Stallman's dedication, and I hope that you're going all the way by only using free software and services, and not just when it suits your narrative.
Also it's GNU/Linux.
I do not agree to that. Improvement is always gradually, it is about learning how to do things. This is a gradual process. Requiring that somebody behaves in an all-or-nothing way is something which blocks experimentation, and also change.
I have seen this argumentative figure in a lot of discussions. Somebody wants do do something against climate change? Require that he lives in a cave, ceases to use electricity, and eats only raw food. But so much could be achieved if we impose a 5% energy tax, and stop to fly around for leisure.
Somebody wants a bit more privacy? Require that he stops to use email, does not use the net anymore, lives in a cave.... But so much could be achieved when people would stop to share intimate information and pictures of people who have not asked for that on facebook.
Somebody wants more road safety and better public transport? Require that he only uses a bicycle in the future, stops to use a taxi, stops using delivery services. And so on. Wait, I forgot he needs to live in a cave.
And now for serious. Stallman has pointed out that if somebody else controls the software on your computer, he has control over your computer, not you. Consequently, your computer will do things which are good for him, but not for you. If you look at things like privacy issues, software subscriptions, unwanted updates, unwanted audio recording by things such as Cortana and Chrome, apps sharing address book data from your phone, and so on, there is a huge number of things software does but the people on whose computers it runs would rather not want. Stallmans conclusion is that users need to control their software, and he has opened ways to do that. The GNU system and Linux are pieces which fit together to achieve that. With a Linux, or GNU/Linux system which is indeed the correct if not a but pedantic name, users do have that freedom. (As an aside, in a world in which FB profile data is mined to influence people to vote total lunatics into offices where real red buttons are in reach which can put not less than the entire human civilisation into ashes, that freedom absolutely matters because it becomes more and more a requirement for collective political freedom.)
I get that Microsoft is afraid of that freedom.
This set me on my own WSL journey which, long story short, ended with me realizing it's just not ready.
- you're still forced to use windows apps for any gui (ie when you open atom from bash it'll launch windows atom)
- there were numerous times when I npm i'd and it failed because some dependency was trying to do fancy things that WSL just didn't like
- performance running builds with webpack seemed significantly worse.
- i thought maybe windows 10 UI is up-to-par, even as a long-time mac user I thought maybe I could get down in Redmond town but... no... just no. It's the little things, the obvious things. You forget just how well thought, how precise, stable and intuitive osx's ui/ux is until you're thrown into Windows. Now, I still think windows touch and stylus integration is wonderful and I hope Apple finds a way to bring something like this to mac os. Also I understand that a mac user is naturally not going to feel at home with windows but I was on windows for probably a whole decade before I was on mac and so it's that it feels totally alien it's just... meh.
So then began my journey to finding a way to dual boot Ubuntu on the Surface Book with as close as full-support for touch/stylus/trackpad as possible. Some angel made drivers/software to enable support for the various Surface hardware on Ubuntu (https://github.com/jakeday/linux-surface) and so I went through the process of getting all that together. Also I tried a few different Ubuntu desktop environments including Deepin and Pantheon (Elementary OS UI) and:
- wow, desktop linux has come a long way and chrome on ubuntu is almost 100% how you'd expect it to perform.
- wow jakeday got the hardware support near perfect
- wow, desktop linux has horrible support for touch/stylus as in... near zero. Sure the inputs work but there's no intuitive UX to support the inputs and in general it feels like a hack because of this.
As a last resort I ran a osx image in vmware and unfortunately the graphics performance was not workable. The Surface Book's screen is so high resolution that you have to trick osx into scaling the UI for it which does solve the "everything's tiny" problem while keeping everything super crispy but then it seems vmware and hardware just can't keep up. OSX would likely feel super performant running native on this hardware, but via vmware- nope.
So now I still casually use the Surface Book with Windows 10 but my late 2012 macbook pro is still my workhorse and it still feels as fast and capable as the day I got it.
I have been predicting a sort of convergence of macbook and iPad (macOS and iOS) for a long time. I've always thought Apple would attempt to take it's arm chips to the macbook. I hope that however macOS evolves, alongside or in a convergence with iOS, it supports a sort of multi-modal type flexibility where you feel like you can stand up from your desk, walk away with a tablet/detachable-display/phone and seamlessly continue your session. I understand the wisdom of letting a desktop environment be a great desktop environment while letting a tablet UX be a great tablet UX but I still think the future has room for a seamless interplay and some more flexibility.