4 ms·
Because macs offer UNIX environment which is great for Devs, but also a full-featured UI with lots of high-end commercial apps (and good audio engineering) whic
by hellofunk 10y ago
Because macs offer UNIX environment which is great for Devs, but also a full-featured UI with lots of high-end commercial apps (and good audio engineering) which is not as easy to get in a Linux laptop. And, the support and ease of using the system is appealing compared to the more hands-on approach of maintaining a Linux distribution.
Plus they are quite dependable hardware overall, and lots of easy OS updates.
- pcwalton 10y agoBash on Windows has made that no longer a Mac-only thing. Its presence really is a game changer for me when I use Windows.
- st3v3r 10y agoNowhere near the same. Last I checked, Microsoft kinda put it over in the corner, where it can be it's own little thing, but not a first class citizen of the system like UNIX is on macOS.
- binarycrusader 10y agoFirst class citizen? Have you seen how old most of the versions are of GNU utilities they ship? I'm sure it because of licensing, but then it's up to them to either improve them or provide modern replacements.
- st3v3r 10y agoI can easily install newer versions of those if I so desire.
- binarycrusader 10y agoThat isn't what the parent's claim was about though -- the claim was "first-class" citizen. I'm well aware of homebrew and the like having used it myself; I still think the current situation is now better on Windows than macOS, which is bizarre.
- hellofunk 10y agoExcept that so many platforms just don't work well under Windows, and if you use languages like OCaml with OPAM, or other incredible tools like Elixir or Erlang, you can expect hiccups. You can get them working, but you have to do more heavy lifting [0]. In some cases it took the maintainers of major packages years to get them working properly on Windows because of its strange environment compared to most of the rest of the industry, and these tools are often still unstable. Which is why so many developers who choose to use Windows usually have a duel boot or VM into Linux, which is an extra layer of inconvenience a lot of the time. I used to work on Windows only and had a VM, for 2 years this was my daily workflow. When I finally just switched to Mac, it was amazing how much more time I felt like I had during the day to spend on my real work, how fewer VM issues I had to deal with, and just enjoy working on the native OS. [0] https://elixirforum.com/t/current-state-of-elixir-on-windows/855/4 https://elixirforum.com/t/current-state-of-elixir-on-windows...
- pcwalton 10y ago> Except that so many platforms just don't work well under Windows, and if you use languages like OCaml with OPAM, or other incredible tools like Elixir or Erlang, you can expect hiccups. Which is why we have WSL/Bash on Windows!
- hellofunk 10y agoWSL is full of compatibility problems with lots of stuff, it cannot be compared to the underlying OSX system for ease of use.
- pcwalton 10y agoI disagree. I listed several issues with XNU's implementation of POSIX above. A large portion of the WSL complaints are around the lack of inotify. You know what other system doesn't have inotify either? Another example is ptrace(): on XNU, it doesn't work; you have to use Mach instead. On the other hand, Microsoft went to the effort of actually making ptrace() work properly. This has actual user-visible ramifications: gdb works great in WSL, while it works not-so-great in current versions of macOS. strace works fine in WSL, while on Darwin you have to use the heavily underdocumented dtruss. Syscalls are underdocumented in macOS, so Valgrind doesn't work well; it constantly breaks on OS updates. On the other hand, Valgrind works great on WSL as long as you compile from source. A lot of this is because Linux has a stable and documented syscall interface, unlike Darwin.
- pcwalton 10y agoIt's actually entirely similar to the way BSD is grafted onto Mach in Darwin. lxss.sys is a much better implementation of POSIX, honestly. In WSL I've never had to deal with incredibly broken stuff like ptrace(PT_CONTINUE) panicking the kernel from untrusted userspace with "TODO" messages (I wish I were making this up) or having the kernel close file descriptors sent via sendmsg() in flight if the sending end of the Unix socket is closed in blatant violation of POSIX.
- hellofunk 10y agoI invite you to spend nontrivial time on a Mac doing significant development tasks and then tell me it is the same experience as Windows.
- pcwalton 10y agoI spend 90% of my work hours developing on a Mac. I have reverse engineered dozens of Cocoa libraries to get my apps working, because of insufficient documentation. I have dug into the XNU source code to find out why things are happening. Say what you will about Windows, but I don't have to spend hours debugging random out of memory reads causing kernel panics in the OpenGL drivers on that OS. (For example, calling texture2DMS in a vertex shader on anything other than the first row of a texture reads from random memory; still not fixed as far as I am aware.)
- adamors 10y agoIf you actually live in the terminal, Bash on Windows is a joke.
- pcwalton 10y agoI do live in the terminal, and I couldn't be happier with Bash on Windows. I use the XFCE terminal connected to a local X server and it's the same experience I get on Linux. Can you elaborate?
- TurboHaskal 10y agoBasically this. I have several Thinkpads running *BSD and they are great and all, but at the end of the day I gotta use Skype and the Office suite for communicating with clients so I default to working with macOS most of the time. UNIX + great desktop support and apps + pkgsrc offers an unmatched experience depending on what you work on.