https://developer.apple.com/videos/play/wwdc2017/102/?time=2...
It's very nice to give end users the option - when I joined, I asked for Linux and was given a brand-new Dell XPS with Ubuntu pre-installed, root access, and told, customise it to suit you. I keep that spirit with my users.
Throwing Windows into such a setup is a nightmare though - two users actually installed their company laptops with their own personal Windows 10 licenses without my knowledge or approval - I still hold a grudge because I had to actually read the MS EULA to make sure they weren't about to cause trouble! It means I can't manage them (I have no real tools to do so on Ubuntu), so they're on their own for that. Fortunately management has my back, declaring the company to be a *nix shop.
Our actual product is all containerised so it should run anywhere.
Ansible works pretty well for managing Windows machines but it requires a little bit more up-front setup on the Windows side and as always YMMV depending on what you're trying to do.
I suspect that it was on the local tooling side that things fell apart for this Windows developer, if he was grabbing a project mostly built on Mac or Linux.
A lot of popular dev tooling built around web technologies (node, Ruby, PHP, etc) isn't as mature on Windows as it is on MacOS or Linux.
My source on this is me. I have a Mac and a Windows box at home, and I've had projects fail to set up and build on the Windows machine for these reasons.
Maybe the developer in question would have been better using a manually created VM or WSL?
Not to mention, the windows environment is completely different to linux and OSX. Until x64, they had a different calling convention. On OSX and linux, also until recently, I could use the same compiler for both platforms and still be supported by the platform vendor.
All of these non-trivial differences make it a lot more resource-intensive to support a codebase on windows that already runs on Linux and OSX. Asides from my work VMs, I don't even have a windows device that I could use for development. So to me, it's no surprise that most open source projects don't build on Windows.
Also, mingw and cygwin also exist since late 90's.
OS X tools are kind of included on Apple's hardware price.
Apple hardware costs in many countries is similar to average PC + VS License costs.
As for mingq and cygwin, most regular people don't have it installed and configured. And cygwin and mingw are not _platforms_ which receive first party support, as unfortunate as that might be.
It was pure pain. Especially when the boss kept asking me what was taking so long (it's just a recompile right?).
500 € PC + Visual Studio vs 1000 € Mac.
All projects are ultimately created to scratch somebodies itch. If it doesn't work on windows out of the box that isn't their use case. What you are wondering is in effect is why people don't pay money to purchase a windows license which will ultimately fund a bad and evil company in order to enable the projects software to run on an inferior OS that the dev doesn't run or care about. If its not end user software for desktop users it doesn't even have the positive effect of enabling a substantially bigger group of potential users to benefit from the software. For anything server related they are either already running linux or can as easily run a linux vm as a windows one.
Further the users who would benefit will by and large buy a license if the software is non free but probably wont contribute anything but complaints phrased similarly to the support requests they would make for paid products that had failed to perform adequately.
Not that many years ago that was the same reason IT departments would give for only giving people Windows machines.
To those who haven't: Give it a go. Put Escape on Caps lock. If you've got Control there and you're running Linux or Windows with a standard PC keyboard, you probably actually want to swap Control and Alt. If you haven't, you probably want to swap Control and Alt anyway. (This will give you bindings similar to the Mac's Command key. The thumb is a much stronger finger and far more suited to these combinations than the weak pinky.)
This is part of the reason I basically refuse to customize anything on a new linux machine; my needs are already weird enough that I'd rather just adapt myself to the defaults for everything else.
Ctrl to Escape
Escape to Caps
I mostly use Ctrl-[ for Escape. I have a lot or weird Ctrl bindings. Not an emacs level of Ctrl bindings, but enough that I use this particular rearrangement.
Remap the sequence "jk" to escape, you don't even have to take your hand off the home row to exit a mode.
You have to love Emacs and Vim users.
Quite sure Apple's world doesn't revolve around the needs of such a small user base.
No issues.
This is a huge improvement over when I started developing and was forced to use Windows.
That feels like a fair solution.
1) There is a lot of cargo-culting around the MacBook because hurr durr Windows is terribad (though, to be fair, Docker does work better natively with OS X than Windows, even under WSL), and
2) Most companies give their developers the choice of a MacBook or the shittiest Windows machines known to man (because of irresistable volume deals from Windows OEMs). I bet the spread would be more even if companies were willing to offer the Surface Book as an option. This laptop is nice.
Most of issues people have with Windows can easily be explained by low quality hardware. If you need a decent laptop, you're looking at price tags above $1000. Depending on where you live, I wouldn't buy a Windows laptop below $1400, if you expect to be happy with it.
Honestly Microsoft should take steps to prevent the sale of Windows 10 on laptops without an SSD and at least 4GB of RAM. That would help the Windows brand tremendously.
https://www.consumerreports.org/laptop-computers/microsoft-s...
Archived at https://archive.fo/sBiUK
Many companies don’t allow mac purchases, even for developers.
Docker for Windows doesn't exist for Windows 7 (still used in a number of enterprise environments). You're stuck with Docker-Machine in that case.
I think it would be cumbersome to say the least...
* Would you have to install through the app store gui?
* How would it manage dependency chains and conflicts (system ruby vs local ruby)?
* How about explicit paths or build parameters?
* How would it handle different shells?
I know other operating systems do this but I've never liked it... I guess I just don't mind installing and managing command line/developer tools from a terminal window ¯\_(ツ)_/¯And, with all that said, I have a quite a bit of negative sentiment towards Apple lately for their hardware and platform choices. So I would still say, it's not a developer-centric platform (the Mac)...
Possibly or not. Ubuntu gives me both a gui and a command line option for apt. Thinking about being able to type "app-store install openssh" gives me goosebumps.
> How would it manage dependency chains and conflicts (system ruby vs local ruby)?
First, that example is a problem for ruby, not for the package manager. Second, software can be in the store statically compiled. Third, apt handles dep management really well. Perhaps that's something apple can learn from?
> How about explicit paths or build parameters?
This is a solved problem in ubuntu.
> How would it handle different shells?
Again, this is a solved problem.
> So I would still say, it's not a developer-centric platform (the Mac)
The question I have is if we deploy on linux, why are we using a mac to develop software on?
The sad thing about linux is that as much as I love it and its ecosystem, i cant recommend it to anyone who wants things to "just work":
- X and wayland crash on me all the time on this laptop because of its HiDPI screen and my kinda-works-but-is-wonky fixes to work with multiple monitors.
- Hardware support is the best its ever been, but graphics cards, wifi, exotic devices, laptop power states and embedded devices can still be a pain because manufacturers simply dont care.
- desktop applications can still be a little glitchy, Web browsers work fine, as do first party DE apps, but the more you get away from things which arent in the big name gui toolkits and have custom controls and behaviour, the more problems you seem to run in.
But aside from all that im happy here in ubuntu. When your software library feels as easy as picking a book from a shelf and 90% of the system updates by the update manager and says "hey restart when you feel like it" Im quite comfortable.
If you look Apple ship a modern version of ZSH with their OS, I believe because it isn’t affected by the same potential licensing issues.
Everyone else will buy consumer oriented devices that are as open as the ipad.
It's not a bicycle for the mind its a train and if you dress appropriately and pay your fee you may set up a concession stand on the route.
With various linux package management systems you have multiple interfaces to the same same system thus you can at one moment use the gui to install foo and having closed that you can fire up your favorite terminal and run install bar.
* It'd clutter the app store and force developers to use the app store and whatever approval process they decide.
It also has a concept that neither Microsoft Apple nor Google has opted to pick up on because they desire control of their platform and to extract a substantial tax on all software sold on same via such control... sources also called repositories.
Linux package management systems draw from not a single centrally managed source but a user editable list of sources. Each source is free to run with their own set of requirements. There is nothing requiring a hypothetical dev tools source from being any more restrictive than whomever maintains the source used by homebrew.
Further packages can actually contain sources. It would be entirely trivial to package up a source of dev tools as a package and allow people to install that via the front end of their choice.
* How would it handle different shells?
Different shells is probably the simplest answer the arguments to a hypothetical install command would be simple text strings. If the argument command includes characters that the shell considers special characters they would have be escaped or wrapped in quotes like any other combo of shell and cli tool. Generally most package names just don't include characters like ([])$\~`'" in the name and most commands don't require any particular special attention to shell escapes.
* How would it manage dependency chains and conflicts (system ruby vs local ruby)?
* How about explicit paths or build parameters?
These are implementation details that don't go away by exiling developer tooling to officially unsupported channels. For example language specific package managers will probably remain a thing but it would be vastly easier if you could do officalmacpackage install developerrepo then officialmacpackage install cargo|node|whateverfloatsyourboat then use that to deal with whatever.
All your concerns are basically lack of experience with more reasonable systems there are zero good reasons not to do this. There are literally no downsides other than the work required for an official solution. However it seems vastly unlikely that we will ever see such a thing.
The logical endpoint of Apple's vision seems to be 2 classes of device. One with a very high introductory price and annual maintenance that allows you to create and run whatever you like so long as such software is distributed via blessed channels and you tithe the required 30% to apple and more reasonably priced but still expensive devices that only allow you to consume software.
The former will come with xcode and technology to deal with apple approved languages. You will be able to play with other tech on your local devices but it wont be able to be distributed to end users.
The latter will be as open as your ipad is now.
https://www.patreon.com/homebrew
(I do not participate in Homebrew other than as a user.)
“How dare they inject advertising into a critical command line tool that I use to get paid money!”
“It’s inexcusable to promote your own financial success when someone types brew upgrade”
“No doubt they’re blowing the money on burrito delivery in SOMA”
“I’ve been a $1 Patreon since they launched three months ago and they haven’t implemented my favorite wishlist feature!”
“If they can’t do it for free, they should give up and shut down and let someone fork it.”
From memory of speaking with an ex senior-Apple-dev-person, Apple doesn't support any 3rd party Open Source projects nor Communities. eg Homebrew, or even the software they bundle in their OS
Any license with a Patent clause or Tivoization clause will be verboden. As an example you will never get something that depends on Postgres in the Apple store.
Other types of developers were a kind of nice to have regarding sales, but no longer relevant.
If you do anything else than UI scripts, I would agree with the above and say you are better off with a linux box.
When you get into plumbing, I feel like there are better alternatives.
Finder is garbage compared to Windows Explorer. OS hotkey navigation is much better on Windows and GNOME/KDE/Fluxbox/xmonad. (I actually miss using xmonad; it was soooo good at this.) Office applications (still very real in a lot of environments) are mostly awful on the Mac. iTerm2 is fine, but I prefer PuTTY. Starting applications by their binary name with WIN + R is better (for me) than trying to find them within Spotlight. There are other little enhancements that I prefer Windows over to OS X, but I'm not remembering them right now.
I also hate the new MacBook keyboards. They take "getting used to," i.e. typing "lighter" than I'm accustomed to. Also, not having USB-A ports and requiring a 90W USB-C to USB-C power brick (i.e. not being able to charge the thing from common chargers, the most lucrative reason for using USB-C, for me) is garbage.
The one thing I like about OS X is that it's a BSD with GNU utilities built in. The thing that I don't like is that it's not a Linux and many of the dev environments I've worked in run on Linux, especially now in the age of Docker. While that's good news in that it forces me to do almost everything within Docker, it's bad whenever I need to maintain parity for whatever reason.
Also if an app doesn’t have configuration of hotkeys you are screwed. On Mac hotkey config is OS wide.
The command console experience on windows is horrible.
Office apps are better on Mac. Pages, numbers and keynote offer me a totally superior experience. The ribbon interface on Windows is a disaster. You spend too much tome hunt around among a zillion incompethensible icons.
In fact I do GUI design at work and use MS Office as an example of how to NOT design a UI.
Not sure why you complain about Finder. You got plenty of alternatives on Mac. I use Terminal and Finder a lot in combination and they interact with each other a lot better than on Windows. E.g. does windows have an “open” command yet?
Alt + Enter (since Windows 95, at least)? You can find it in here: https://support.microsoft.com/en-us/help/12445/windows-keybo...
I do find Finder to be inferior to explorer in almost every way. That tree pane on the left is too useful.
Yes, you can buy a 3rd party replacement with the hassle of deploying and maintaining on multiple machines, if you have them, but my main complaint is what decades of not caring about the most fundamental of all Mac apps (the only one you can't quit) implies about Apple's strategic attitude toward the Mac overall.
For those of us who find the Mac the best pro dev platform, the implications are not good, because what we tend to like about it (desktop unix where all the client stuff just works) is just a historical accident that Apple would not create again and does not intend to maintain longer than necessary.
Rather than make the Finder more powerful to make the Mac better for serious users, Jobs took the approach that people who couldn't understand the difference between a file and a folder were the real market for Apple, solving the problem by creating iOS with no user view of the file system at all.
This turn from computer company to fashion accessory for those who don't care about computers per se was so successful as a business strategy that I can hardly criticize it. It just bodes ill for those of us who like the Mac for features its only supplier wants to be rid of.
Each time Apple has an event where Cook pointedly emphasizes that the iPad is "what we at Apple see as the future of computing", I google for an update on the current state of "best desktop Linux distro".
When I transitioned from Windows to Mac, 13 years ago, I needed some adaptation time, especially with Finder, but in the end I found it powerful. The main issue coming from Windows Explorer is that basic Explorer workflows such as copypasting don't have a Finder equivalent.
Having been a Finder user since my 128K Mac in spring, 1984, I've had adequate time to get used to an application that hasn't improved in even the most obvious ways for going on two decades. It's fossilware.
Why would losing focus on one window be a problem?
Why would you need to create all these directories in multiple parts of the tree?
I can't quite comprehend what sort of work flow of work you do which require these things?
Perhaps I don't see it because I use the Finder and Terminal a lot together. I don't use one exclusively for very long periods.
But I am curious what you're workflow is like, because I see a lot of Finder hate, but don't really get what people's problem are, and how they are using Finder which is causing them so much problems.
Finder also supports tree view you know. OTOH does windows have as good filtering tools, smart folders, labels etc?
It's been there since forever (Win95?).
start (without parameters) - open a new CMD window
start . - open an Explorer window of $PWD
start <DPATH> - open an explorer window of DPATH dir
Numbers excel at what a spreadsheet application should be about. Once you get very complex sheets you are much better off using more specialized software such as DataGraph, R, Julia, Matlab, Numpy, SAS
Is what i generally use to open applications. I never use spotlight
Of course it is a matter of taste. I get that. I still have to bite my tongue to not yell profanities whenever I hear anything about productivity and Mac OS.
Most of the time I keep my mouth shut. Now I just wanted to tell you that you are not alone. I have to use Mac OS at work. To avoid frustration I have started to let my soul and will leave my body before logging in and let my lobotomized shell I left behind just go with the flow. At least until Emacs is running full screen.
As for writing software macOS is nice since it is quite close to Linux and does contain a lot of the UNIX-thinking.
Windows is, IMHO, a user experience mess. Mac is more gentle and aimed to be simple and useful for everyday people. Windows feels like it was designed by a lot of different groups that in the end glued their pieces together in order to ship it.
You know what's even closer to Linux?
Yes, macOS has a terminal emulator as well.
> I never found out how to be productive in OSX vs what I can do in Windows.
Open Spotlight, type in "Terminal" and hit return.
Windows is the slowest of OSes, see http://www.bitsnbites.eu/benchmarking-os-primitives/
I was a C# developer as recently as 2017, and I'd say that I prefer Windows 10 to OSX as a development environment, but going through your points:
* Upgrades are handled by the system administrator at most companies, so it's unlikely that automatic upgrades will be set up if you've got anyone remotely competent handling your IT. * I can't say I've ever seen an advert when working on Windows. There's some Cortana crap, but that takes a few seconds to click away, and you'll never see it again. It's no different to your standard desktop setup for OSX or Linux. * If you're a .NET dev, it's extremely unlikely that you're paying for the OS or the platform, in the same way that you're not paying for OSX. Admittedly, Microsoft tools take an age to set up, but the latest versions of .NET and Visual Studio are much quicker - if anything, I spend far more time upgrading/installing stuff on OSX. Hell, sometimes setting something up on Homebrew will take longer than a standard Windows installation for a given tool. * I'm yet to see a Windows machine, outside of a brand-new one, set up without the necessary .NET framework. If it's not on there, Visual Studio will install it for you. Again, not an issue. * Not sure what you mean by build tools and a default compiler - IMO building/compiling is ridiculously easy for .NET apps, either through the command line or through Visual Studio.
In my view, as someone who has worked on all three sides (OSX, Linux (Debian), and Windows) I'd say that Windows is just as capable as the other platforms for its main use cases. Where Windows struggles is in its differences. It's a very different experience, and people from each side struggle to make the switch, and it's a switch where you feel that you can run before you can walk at times. You have your own way of doing things efficiently, but even though you're looking to do something similar on a different stack you're using entirely different tools.
Expensive SDKs? You should have seen UNIX compiler prices before GNU and BSD actually mattered.
Don't try to use non-UNIX OS as if they are UNIX and the experience will be much better.
You know what I ended up doing after nine months of this crap? I switched back to my trusty old 15" MacBook Pro. The backlight is dying, but it works a lot better for me than Windows or Linux!
I had so many issues with Mac and all my Linux devices just work flawlessly for years without issues.
I use both a Mac and an Arch Linux running i3/awesomewm, and to me macOS is like any Linux distro with a user-friendly desktop environment.
I guess it doesn’t have an « official » package manager, but homebrew has most packages anyway?
I feel like Apple provides a computer and OS that are user-friendly to the general population. But it also seems like the whole culture is "No, don't do it that we. We've provided this method as the One True Way."
Most of my concerns with regards to the OS I use has to do with the stuff I do 10s or 100s of times a day.
Because updating Arch is about 100x faster than updating a Mac to a new version. The loading bar looks nearly complete and then "About 17 minutes remaining."
Because it's part of the answer to the question "How is package management via apt any different than using homebrew?", and (I think) supports my assertion that Apt is more of a piece of core OS functionality than Brew is.
I love apt, but I have no philosophical stake in the game. Both allow me to install things from command line. In that respect, they are functionally identical to me.
Then once a quarter or half-year, I need to do an OS upgrade, and then I use two different systems depending on platform (I use both regularly). Let's say one takes 15 minutes and uses apt, and the other takes 45 minutes and uses App Store.
Then I amortize that over the preceding three months, and in both cases the attention required, confusion created, and effort expended approaches zero rapidly, regardless of system.
Like I said, if you're a system admin, then sure.
$ brew install gnome-desktop
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 3 taps (caskroom/cask, caskroom/versions, homebrew/core).
==> Renamed Formulae
php70 -> [email protected]
Error: No available formula with the name "gnome-desktop"
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
==> Searching local taps...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.perf, case sensitive file systems, non stupid alt-tab behaviour, strace, pstack, gdb (these don't seem to work without sacrificing animals), gnome-shell (better than finder by a long way, imo).
I've got a mac. I don't install programs except for things through brew. It's basically shitty linux with outlook.
You can have a case-sensitive position. (Separate from root so it doesn't break some apps)
https://apple.stackexchange.com/questions/193368/what-is-the...
You mean UTF-8?
Sorry man, but you’re doing it wrong.
And the Mac file system is case sensitive.
>It's basically shitty linux with outlook.
Linux is shitty Linux. Except on the server. (IMO, of course).
But on multiple desktops if you alt-tab to the previous application again, it only brings up the application windows in the current screen instead of bringing you to the last window you used (on another screen). Wrong! Broken! Sad!
Also, on mac alt-tab raises ALL the application windows. So if you have shed loads of terminal windows or loads of browser windows open, then alt-tab brings them all to the front. This is definitely broken since it stops common workflows like copying between windows; or finding some text that you want to type into a terminal and then alt tabbing to the terminal only to have the screen covered in terminal windows. SAD.
Mac is low energy (That's the reason I think I have it for a laptop).
However, agreed that on a Mac with multiple "spaces" it's completely broken.
Stable, long term, OS support. I'm running CentOS 7 x64 now, as I got completely sick and tired of Apple's "new OS release every year" bullshit.
For a lot of people that don't care the differences are largely subjective and the difference between Ubuntu, for example, and macOS are largely academic and aesthetic.
A large factor in this is that I like to contribute to FOSS and find that 'ideology' to be a match with my beliefs regarding software.
This is really not the case with Windows or Linux. These require a lot of tinkering and tuning. A recent swap from one Windows 7 machine to a Windows 10 one took days, the migration procedure is basically garbage.
I've never had much luck with desktop Linux even though I use it all the time on servers but those get rebuilt with a new OS when they're out of date. Upgrading them is just too much of a fuss.
If you've got a workflow for keeping desktop Linux up to date and rolling over from one machine to another as you upgrade hardware, that's worth sharing.
Switching to a rolling distro will eliminate the upgrade pain. Keeping dd backups is also relatively easy.
And unless you're on a custom kernel, you can just roll over to a new machine with your image and the appropriate kernel modules would get loaded for the new hardware at boot.
For one, you largely don't pay strategy tax, which is under discussion in the very title of this submission.
I use Linux at work daily but miss my mac. It is much more unstable and unpolished. The app selection is really weak and the integration between gui and console is weak although better than on windows.
Windows is an utter mess these days as Microsoft is jumping between so many different UI paradigms.
I could not care less about "freedom" or these other philosophical aspects of Linux.
Plasma is just straight up amazing on every level.
In addition because mac use commad+C, command+V for copy paste rather than ctrl+C and ctrl+V as Linux and Windows, you feel no different working from a CLI than from any other app. You don't have to mentally jump in and out of two different ways of working.
This extends all the way into GUI apps. Typical CLI commands keys work in all mac GUI apps. I can use readline keys such as ctrl+a, ctrl+e for moving the cursor e.g. Works even in office apps like Keynote and Pages.
It is very frustrating to not be able to use these Unix conventions on Linux!!
There are lots of little things like this which makes a superior experience IMHO.
Dragging a file into Konsole (KDE's terminal) gives a menu with the options "Copy here", "Link here" and "Paste location". Seems reasonable.
Dragging a hyperlink or image from Chromium gave the same options. "Copy" downloaded the file, although set a timestamp in 2106 for some reason. This doesn't work from Firefox.
Dragging selected text pastes it in.
"see ." opens the current directory in the file browser thing, "see thing.odt" opens LibreOffice, "see my.pdf", etc. "see http://example.org" doesn't work, although I can right-click the link to open it. (Naturally, "alias open=see" if you prefer that word.)
I set a custom shortcut for Konsole for "Super+C" etc (Windows/Cmd key), but I don't use it very often. I mostly select + middle click to paste, which is a Unix convention I miss on a Mac! The readline keys are nice, they seem to work about 80% of the time on a Mac, and I haven't found a way to get that working in Linux.
My "lots of little things" favours KDE. Properly maximizing a window, having a "keep above" button for any window, focus-follows-mouse, and the general feeling that the computer does what I ask in a boring way, not what it thinks I want in a stylish way.
I could make do with an older computer for Office and Outlook.
I can still go into /etc/ssh sudo vim sshd_config, can my values, and they stick.
Just to test it, I did it right now, and I'm running 10.13.4, for what its worth.
What exactly was the issue with changing the sshd config? This isn't a SIP protected directory, which is the only thing that would prevent such a move.
Perhaps the requirement of sudo? I feel like most linux distros force that in the /etc directory too.
this security feature that is great for the vast majority of Apple's user's isn't convenient for me.
Luckily, Apple shipped SIP with the option to disable it, and it's not hard. So you can disable it once and then you never need to deal with issues like that again. It's weird because it sounds like you want the protection of SIP without the inconvenience of SIP, but that's never been possible with pretty much any security measure ever -- more safety means less convenience. That being said, to me Apple has actually been the best when it comest to safety/convenience ratio. Linux distros don't even have the option of SIP or something similar, so I can't say I find your argument compelling.Linux > Windows > macOS?
The only UNIX based that tops it is macOS.
There is not a single cohesive stack of desktop technologies, what macOS calls Kits, Android frameworks, Windows UWP and such.
Something like Glade still fails short of what XCode or VS Blend are capable of.
Sure there is something like Qt QML designer, but that isn't Linux specific anyway.
Tooling for C and C++ mostly relies on some external package manager, often the OS-provided one (on most Linuxes, for example). There isn't a standard cpan/npm/pip/cargo for C/C++, although there are plenty of tools that can do kind of the same thing.
There's also not much support for virtual environments (there are tools out there, but not ubiquitous tools). It's pretty easy to point the compiler to a different set of header files and libraries, even on a per-file basis, to get a similar effect.
And from the Apple side (which I have a vague understanding of, having dipped my toes in a few times): Most of the documentation assumes that you're using XCode, and I'm pretty sure that the version of the compiler is just tied to whichever version of XCode you're using (which has a somewhat looser tie to the version of MacOS you're running). So in that case, you'd be using the XCode-provided toolchain rather than the OS-provided one.
Not an official one for sure, Cargo is a blessing for people used to dealing with C/C++ dependency management.
You can fix that of course but homebrew does the same job on macOS.
Roll on 18.04LTS.
It does have the overhead of requiring you actually understand (or know how to google) your system/packages that you use though.
Wasn't that hard to do in the end but it's not something I've done for many, many years and doesn't fill me with confidence.
Other UNIX utilities are actually standard POSIX ones. If you are used to GNU extensions to these on Linux, then Mac ones may seem outdated, but ironically (macOS kernel is called XNU which stands for X is not UNIX) Mac is certified UNIX, while Linux is only UNIX like.
Also UNIX underpinnings on macOS, just like on NeXTSTEP, was just a mere convenience, the OS culture was never about crufty CLI programming, and many that only jumped into Apple after OS X have not yet grasped it.
Provided you don't need a HDMI port. Or more than 1 spare USB port. Or am ethernet port.
You could get the touch-bar version, but I've read literally nothing but bad reviews and stories about that thing, plus tb versions have smaller batteries.
Yes, I could get a dock, but here's a better idea: how about apple chills out on their unnecessary-thinness fetish, and givese back some actual functionality in my laptop.
Every time I come back to my desk with my laptop I have to go through some ritual involving opening and closing the laptop lid and connecting cables in a certain order to maintain screen orientations and try to get the thing to even wake up. I power cycle my dock at least three times a week to try and make it all work
I used to have a 2014 RMBP with the Apple display and it was fantastic because it was all built by Apple and Just Worked (TM).
Hopefully moving to their own chip fab is the start of them going back to owning the entire device solution.
* a convoluted process involving Vagrant, Docker, or both, because you depend on one or more pieces of software that don't run at all on OSX, including Docker itself.
* slogging through bugs specific to services running on OSX because they really only support Linux well, such as Cassandra or Kafka, or even MySQL.
* Getting shells scripts that work reliably on both OSX and Linux, especially as the tools used to do so break backwards compatibility, either by Apple itself or by 3rd party tools like HomeBrew.
* Getting a consistent development environment at all on OSX. Doing so seems to be much easier on a Linux distribution than on OSX.
And that's not even talking about general issues like:
* incredibly flaky bluetooth drivers, often requiring a full restart to fix, if not having to reset some weird hardware bit.
* My laptop randomly not waking up properly from sleep and requiring a restart.
* My laptop randomly beach-balling more often than I ever saw BSoDs on windows.
* OSX seeming to just run really slowly compared to Linux whenever it is stressed in any meaningful way.
* My laptop's wifi not working with random wifi endpoints, such as at the airport or hotel. Whether it's router software bugs or OSX bugs, I am always able to connect just fine on my windows laptop.
* Having to deal with OSX's incredibly outdated userland and its BSD-specific userland. Yes, there are workarounds, but they are generally a pain to figure out and have not been standardized in our environment in any way.
* For a few months my OSX terminal was SEG-faulting about twice a week. I learned to be very grateful for screen/tmux during that time. At some point Apple seemed to fix it, at least.
At $lastjob we were actually developing a Linux service that relied heavily on Linux APIs because it was essentially creating full-on Linux containers like Docker. Before I joined, the previous developers, all big apple fans, were actually going through the tremendous effort of trying to make the service at least build and run on OSX, even if it no-oped most of the things it did.
When I joined, one of my first acts was to completely remove OSX support for this service, and I promise you that life got way easier ever since. Our development processes got simpler. Our build system got simpler. And most of all, our source code got simpler and easier to read.
Granted, most of us aren't developing software that directly calls into Linux APIs, but even then I think you'll find huge productivity wins if you just use a Linux laptop or desktop, assuming everything else is equal.
In 2011 I switched to macOS due to my job and I have never had to deal with any of that. Ever. Perhaps the Linux laptop experience has improved significantly since then though.
Furthermore, there was no hardware nearly as nice as Apple laptops on which to install linux. (Yeah, other than Apple laptops, but I felt like I didn't have the money to justify that).
However I of course agree with your points regarding Vagrant/Docker and shell scripting. It is a shame that MacOS could not be based on Linux.
If you want to run Linux on a laptop and get the best experience, a Mac is not the best option. Thinkpad (business class X and T series) is what you are looking for.
But first of all development without docker is much faster. Setting up a docker container takes some time (especially with a custom built apache server).
Secondly running a docker machine (needs a Linux VM) on mac in parallel to Vagrant (I have to use it too) is CPU taxing as both (docker machine and vagrant) VMs take a lot of power from main CPU.
Add to this constant port conflicts and network paths resolutions issues between different docker containers and hosts. Also it forces me to use Oracle Virtual Box (who likes Oracle ?) These little things all add up.
My point is that what should be a trivial task, is not so trivial when deployment is done on one platform and development is done on another. I agree with original comment that it probably makes sense for industry as a whole to switch to Linux development workstation instead of Mac.
The only reason I use Mac besides it is a company policy is because OSX somehow able to render better fonts. My eyes are getting tired after looking on poorly rendered fonts from Linux machines. If you use Mac and want to see how Linux fonts look like - install SeaMonkey browser. It turns off all proprietary patented algorithms available on OSX and renders fonts exactly as on pure Linux where due to some licensing issues many nice font rendering technics are disabled.
I don't, because docker is a buggy, embarrassingly-poorly-designed system and VMs are a pain. I develop on the same system I deploy on: Debian stable.
> And even when you have only one project, who wants to run debian stable or centos as his main OS?
I loathe CentOS, but I love Debian stable. It's a wonderful, solid (one might even say … stable) system. Why wouldn't I want to run it as my main OS?
One of the things I really hate about our development culture is the cult of the new. It's a good thing to use stable, well-tested systems. Let others find the bugs; I'm happy to get work done.
I haven't used these two in particular, but if they support flatpak, why not? You'd have the same packages as on the server plus the latest versions of GUI apps.
If you are Python developer, install specific version your project needs and use that. Same for any other language.
Not sure what you mean by outdated compiler? For what? C, C++ etc are distributed with Xcode and clang is usually standard compliant and recent.
BASH is the only problem. Newer BASH versions switched to GPL v3 and Apple will never upgrade to that.
My personal solution for that is to disable system integrity protection, build latest bash and install in /bin.
This way most scripts that have #!/bin/sh or #!/bin/bash and rely on new BASH features just work.
Are all the VM's exactly the same
Can you 100% prove that the vm behaves identically on all the varied hardware.
And no "professional" would consider "Everybody likes something different" is ever valid for a paying job!
No problem if its a hobby project but on a project with even a small number say 5 or 6 the risk isn't worth it.
> Are all the VM's exactly the same
Is the silicon die on your processor exactly the same as everyone else on your team? If not, you're not a TRUE professional.
> Can you 100% prove that the vm behaves identically on all the varied hardware.
No, but I also recognize that I (and many other devs) are not writing space shuttle / train control / self-driving car software that is responsible for human lives. If I were, I wouldn't be advocating for the style of development I mentioned above. That is a different situation which I imagine most people on this site are not dealing with.
> And no "professional" would consider "Everybody likes something different" is ever valid for a paying job!
What does this even mean? Of course it can be "valid" for a paying job. There are literally companies out there who offer different OSes and machines to use for a job and the developers get paid. You get to deem they are not "professional" because...?
> No problem if its a hobby project but on a project with even a small number say 5 or 6 the risk isn't worth it.
The risk doesn't lie with the number of people on a project but the scope of the project itself: basically, can human lives be impacted in a significant way if a dev screws up? Then yeah, there are better, more rigorous ways. Are you writing a web app, a desktop GUI, some CLI tool, or perhaps...the Linux kernel? Then develop on the machine you like! Have a good review process, set up CI to build for the platforms you support, and implement a good set of tests.
Of course I have worked on projects where all the test dev and live hardware was explicitly brought from the same production run so the hard ware was identical down to the rev no of the pcb's - our hardware guy would have liked to have all the disk also from the same production run.
Not sure if you're asking about "Apple" software (eg from Apple themselves), or OSX Software.
Personally, I miss Affinity Designer, and SnagIt. Both OSX applications I've paid (though not made by Apple), and which have not-as-good-to-use equivalents for Linux.
I still find myself switching back to OSX when I need to get things done using them. Rare now, but still happens.
What was so obvious that after checking out the options, I bought the wrong hardware?
I have Kubuntu at home and a 4k screen, and also at work with a "3k" screen. I don't do development at home, but the general desktop works fine.
That said, I do most of my heavy lifting on the Mac, and all primary dev on a Mac. Doing the equivalent tasks is a chore in Windows. I used to be all-Windows, but once I understood that MacOS is file-oriented and not program-oriented, it helped a lot.
This has always seemed to me to be a species of "file oriented" working, and I prefer apps that run in a file oriented way. For instance, a graphical file manager that shows a folder in a window, and you click to get open an item in the folder you so always get a new window - even if it happens that the item in folder is just another folder that is opened by the graphical file manager. Or office apps which always open each document in a new window, and when I close the current document, the only thing I notice is that the current document is closed - it doesn't try to focus some other window from the same app.
But Mac OS has always seemed an almost perfectly application-based interface with its fully application-based dock and it's application-based global menu (close a window for a file that was loaded by Cool App, and Cool App's menu still shows). I think it's Finder is a bit confused: it used to be mostly file based, at some point in the OS X years it got more and more application based but perhaps it's swung back - it's been a few years since I've bothered trying Mac OS. It had some of the most appalling virtual desktop support when I last used it, that made me think "the people who have implemented this only work in an application-based way". I can only imagine that's got better. But it seems that Mac OS is always: application-based workflow is prioritised, file-based workflow is secondary.
I have found that Linux can[1] excel in this workflow, Windows is ambivalent to all workflows, supporting all of them badly because it supports none at all, and Mac OS prefers you to think "what tool am I using", not "what task am I doing".
Is my experience entirely unique?
[1] i.e. it depends on what particular tooling you're using - it's possible a default setup is appalling.
Anything I do today (everything from Intel microcode, x86 assembly to C/C++) happens on macOS simply because I can do every single thing I need to in one place. Most devs I bump into that really hate macOS have no idea it is really just (open source) BSD with Apple's oddly unique visual facade. There is literally nothing I can't do on my Mac even during the times I run Visual Studio, VTune, etc. I also find it amusing when devs tell me that macOS isn't as customizable as Windows. Sure... sure... ;-)
Apple creates their products for a specific customer (which covers most of population looking at its popularity among people, who have enough money to buy their products), but not for me. Using Macs or iThings feels like using devices which aren't design for my workflow.
Macbooks are well-built, but they are optimized for Mac OS. Dells and Lenovos are good enough for me and work nice with Linux. I like physical buttons and keyboards which are... well, hard to say what I don't like in Mac's keyboards, but they are not going well with me.
1. Getting packages with apt on ubuntu without installing homebrew. It's vastly simpler and natively supported by ubuntu. I can also update my entire system with sudo apt-get update && sudo apt-get upgrade.
2. Native docker support.
3. On mac, I always ask the question whether something is ctrl-c or cmd-c, say. On linux it's always ctrl.
4. I don't have to login to the apple store to get the software I need.
5. Linux has always been command-line first. On mac it's always been GUI first.
6. Macbooks are terribly built, and fail for a number of reasons. [1]
7. The Apple brand, while it used to be one of homebrew is now akin to one of fashion. It's kind of like seeing all the kids walk around with their "Hollister" t-shirts on.
I could go on I suppose but those are the meat of the issues.
1: Louis Rossmann's macbook repair channel. https://www.youtube.com/watch?v=sfrYOWlKJ_g
4 - i cant think of a single application, outside of maybe xcode, a developer might need to sign into the app store for
6 - whatever reasons that youtuber might have for not using macbooks, i will never buy a non-mac notebook ever again. this 2013 13" mbp has been the best and most reliable computer I have ever had in 30 years and I bought it used!
7 - sure the apple brand is cool but i don't get your point? doesn't it mean that you care about the branding so much so that you won't use it? do you see where I'm going?
He said nothing about "fine". Docker on Mac is through a VM and thus not native. Containerization in MacOS is impossible without a VM.
I will add that the usefulness of seeing the containers PIDS in ps and other tools is more useful than most mac/windows users realize.
xhyve died on the vine it appears, but did make things a bit better.
Pro-tip: If you spill water on the keyboard, shut the MBP off immediately and send it in to the apple repair shop to get cleaned. If the MBP is on while there's water on the logic board, rust will form, either short circuiting chips, or rusting out the copper traces.
7: Apple used to be an amazing technology company giving the world wonderful computing devices. Today, it's a fashion accessory company. Mac OS doesn't run in the cloud. It is not the core OS that runs our infrastructure or space programs. And lastly it doesn't capture our imagination anymore. That throne has been passed to Elon Musk with Tesla, SpaceX and Hyperloop.
Lol, nope. At the job I just left almost all of our team had MacBook Pros. We ran our entire dev stack with docker-compose and wasted so much time dealing with broken docker crap that ultimately stemmed from the fact that you're not running docker natively, but rather in a VM.
I wish I could still query the Jira database. I could throw out tons of specific issues.
I knew they are fragile, I didn't know that using the actual cpu performance for more than a few minutes is a problem.
Unless you want to copy from the terminal, where it is ctrl + shift + C.
GUI menu shortcuts are invoked with Cmd, and that includes copy/paste.
CLI shortcuts work as always (and there's no overlap, because of the extra Cmd key).
To be honest, Mac does many things really differently. Yes it feels and sounds like double-think, but I do everything differently from my Linux desktop, and I can do the same things at the same speed, if not faster.
On the average, I use them equally, and can do the same thing on both.
One footnote is, I do not install anything via homebrew or anything massive which installs into depth of the macOS. For these stuff I have a Linux VM, which is fired up rarely.
This is what I have is used since 2016 as my personal machine. Comparable in price to a MacBook Pro and easily outperforms a MPB. Specs on mine:
Intel CoreT i7 6700HQ (4 core s, 3.5GHz)
16GB RAM
15" 4K Display (1080p is standard, I upgraded. No regrets).
GTX 970M
256 GB SSD (system drive) + 1TB hard drive
Installing and running Ubuntu has been a breeze.
Like a MBP it has an aluminum body and weighs less than 4lbs.
Why would it matter to you, as a customer, what chip is inside your computer? As long as it can run your programs, why do you care?
See also: Microsoft and Windows on ARM
It is almost absurdly bad. The only OS that still hangs, freezes, and crashes regularly. It is like Windows 98 quality wise and seems to get worse instead of better.
The whole UX is also insane. Every feature is hidden behind some obscure keyboard shortcut that you have to google or you just get used to working with this useless toy os.
The terminal is garbage. Everything is slooooow as fk (typing, mouse, etc).
It is shocking that the internet industry has standardized on working on this garbage when they run Linux on their servers and would be far better off developing on the software they actually use.
It just demonstrates the cult mindset and horrible lack of real technical proficiency in the industry.
Tell that to my Windows 7 box. It crashed last week because I tried to copy a PNG on the desktop into an Outlook e-mail message.
(IT still hasn't cleared Win 10 for company-wide deployment)
FWIW, according to the old Human Interface Guidelines basically everything was supposed to be discoverable via menus, and then has the keyboard shortcut right there in the menu.
The keyboard shortcut System Preference pane lists additional keyboard shortcuts, and lets you easily change them system wide. But yes, granted, searching online reveals quite a few more shortcuts.
I'm just wondering how Windows or Linux are better in that regard in any way??
You say you want to just "get things done expediently," but in my experience apple software is flat out inferior and OSX is the worst of the 3 major operating systems I have to choose from.
Lastly, what does Apple have to gain by switching away from Intel? Not much, at least, not much that benefits me as a customer. Likely they are interested in making their laptops have more in common with their iOS devices, which does little to nothing for me. Apple's behavior towards OSX and macbooks in the past few years should be of great concern for anyone, especially if you actually like the devices.