Could you expound on that? I'm curious as to why OS X isn't satisfying for you as a developer.
Could you expound on that? I'm curious as to why OS X isn't satisfying for you as a developer.
Then there's MacOS itself... which is just getting more annoying, I quit after 10.6 (which was best version IMO), everytime I use a mac now I compare it to the relative simplicity and stability of this version, and it's just so much worse. I'm sure others who have more experience with up to date MacOS can give more detail on this.
That said, for non developers I'd still recommend a mac over windows, although in recent years it's gone down hill, and personally I don't want to trade my freedom for closed source OS that have their own agenda - I understand that most users don't have the luxury of really being able to use anything not as friendly to basic users.
Isn't brew native? This time around (a few months ago) I didn't notice any issues with setting up a modern frontend dev environment. Not even the dependency hell I always seem to run into on Linux for modern web dev stuff.
> I'm sure others who have more experience with up to date MacOS can give more detail on this.
I've been using macs off and on since I owned a titanium powerbook G4 that ran Tiger (10.4). I've been doing web development during that entire time as well.
Most recently, I got a mac mini with High Sierra installed. I've only been using it for a few months and I'm seriously considering moving back to my WSL setup. I originally moved away from my WSL setup because, about once a month, it would corrupt my git repo and I'd have to wipe it. That wasn't nearly as much hassle as I'm dealing with on a daily basis on the mac mini.
My gripes, in short: Fullscreen mode is an abomination, network drives no longer work worth a damn, APFS defaults to case insensitive, my wifi stops working randomly until I turn it off and on again, ditto with the audio, Finder favorites disappear at random and the keyboard modifiers reset themselves at random.
When I configure something on Windows it damned well stays configured. I used to be able to say the same about OS X but apparently those days are behind me.
It's not all bad, though. The Mac App ecosystem is still the best I've ever encountered. I'll happily pay what Mac apps cost because they still run like a swiss watch. Unfortunately, none of those apps are necessary for web development work.
It's third-party. Tailor-made for MacOS, but not included with the Apple developer tools.
IMO, if you must use windows and need linux/gnu stuff, just stick linux in a VM with a full GUI, it may seem more resource intensive running a whole other kernel and GUI, but it will work reliably without horrible surprises.
My Perspective on the OS:
MacOS philosophy is to hide/remove all or most settings and hope that the default ones will work for you out of the box. I love to tweak everything and MacOS feels too packaged for me. There is not enough freedom for the advanced user to change things. Also, The OS feels so commercial and made for the masses. this is a personal feeling but I cannot help it.
They do a very good job for the normal user that only wants to use a couple well defined apps though.
As a developper:
I mostly develop Linux infrastructure code (backend and low level). As such, using MacOS means that I'm constantly into a VirtualBox VM (which sucks compared to KVM or anything else) or trying to build stuff over SSH. I spend hours opening SSH tunnels, or mangling with port forwarding inside my VMs.
Then, I like to run containers. Docker support for Mac is pretty much basic (or I should call it horrible).
So at the end of the day I am using MacOS as a glorified web browser and SSH terminal. I never took the time to learn the low level working of MacOS, and I also hate that every standard linux tool has been slightly altered to make it almost unusable if you are used to the Linux version. (netstat, lsof, ... are a couple examples)
Basically I want to get control back on My OS.
It's not that they have been altered by Apple, but that you're using the BSD toolset, not the GNU one. You would have the same issues if you were running FreeBSD.
Most of my work is in embedded land, so I usually have at least one serial console running and often those go up/down as the device providing them goes up/down. MacOS would fairly regularly get something tangled up in its USB stack (I think they re-did a substantial amount of it for El Capitan), leading to me needing to move my desk USB hub's connection to a different port on the computer. Then, once the second port fell over, I had to restart the computer to get USB back.
I used to have an NFS mount between MacOS and the virtual Linux machine - that was an endless source of problems with MacOS losing track of file handles, then refusing to unmount or shut down cleanly. On average, I probably had to hold down the power button to hard-reboot once per day. And, NFS always seemed slower than it should've been.
There were silly little issues like my external monitor's HDMI not supporting some volume adjustment protocol for it's audio out, and MacOS refusing to just reduce the levels sent to that device. So, the volume keys didn't work at my desk, except for mute. The security around downloading executables from the net was a pain - way too many clicks to get MacOS to run random open-source programs via Finder.
Personally I just use a macbook and develop over ssh.
* If you fire up an editor on the remote machine, there is going to be typing lag, unless your Linux machine is in your local network. You can ameliorate this with software such as Mosh, but that comes with its own disadvantages (losing scrollback buffers).
* If you edit locally but save the files to the remote system, you have to worry about getting disconnected or your machine shutting off and losing changes.
* If you edit and save locally, then transfer changes later (e.g., using Git), you run and test your code on the remote machine, and have to worry about attaching a debugger to the remote program and other fun stuff.
I guess it just depends on how big the project you're working with; but I would have a hard time working with more than, say, 10 files on a remote machine.
Other solutions aren't exactly optimal either. A virtual machine takes up precious RAM and it is slower than bare metal. You're not using all of your machine's resources. WSL works for most things, but fails for others (e.g., Docker, Kubernetes, I/O isn't as fast as it can be).
I've come to the conclusion that doing development on Linux on bare metal is the solution with the least compromises; the biggest one being the loss of access to work-related productivity apps such as MS Office, Outlook, and Adobe products.
No typing lag for me on remote machines (< 70ms). I don't use mosh but the scrollback issue can be solved with tmux which is a must for remote dev.
If you edit locally but save the files to the remote system, you have to worry about getting disconnected or your machine shutting off and losing changes.
Again, learn what tmux is.
But you make some fair points. I will try to use tmux for remote development for a few days.
* And if you're creating a webapp, you still want to see how it looks on a web browser.*
You know the browser is a networked application right? just like you use your local ssh client to connect to the remote ssh server, you use your local web browser to connect to your remote web server.