More developers use Linux than Mac, according to 2022 StackOverflow survey
omglinux.com
omglinux.com
This implies a single answer ("the") but they clearly allowed multiple (the percentages total way more than 100%)
IIRC in prior years they've asked similar questions, but without the multi-select, meaning the this year's survey can't be meaningfully compared with older surveys, for this question.
Here's 2021, for example:
What's surprising here is how deep windows is sinking. They were at one point famous for their dev tools. The fact that WSL (i.e. it runs Linux stuff) is now considered one of their top selling points for developers is almost too incredible to believe.
If you're doing anything Docker, you probably prefer Linux.
So unless you're developing exclusively for Apple's ecosystem, you probably selected Linux on the survey.
Eventually i imagine my laptop will also be Linux, but Mac is hard to beat for mobile operating. I'm tempted to try an M1 via Asahi at some point, assuming i can get NixOS on it.. but i don't have an M1 atm and am in no rush to buy one.
I wonder if non-Apple manufacturers will some day in the future add this killer feature to their offering.
Isn’t that normal behaviour? Mine thinkpad T14 still has battery after a couple days sleeping.
And I don't think it's just a software bug - many laptops now don't offer S3 at all, some only after toggling a BIOS option. Even then, it's often buggy on Linux as well.
Certainly not because, if that's the implication. Maybe since then in time.
Original video: https://youtu.be/OHKKcd3sx2c
Follow-up: https://youtu.be/TXsw_92Y2e0
This is on Linux, and the only reason for reboot is if there is an updated kernel. I once postponed the reboot for more than 3 months.
Haven't rebooted that machine in weeks either.
1. Configure your system so that hibernate works. 2. Set `HandleLidSwitch=suspend-then-hibernate` in `/etc/systemd/logind.conf` 3. Optionally change `HibernateDelaySec=120min` in `/etc/systemd/sleep.conf` to something that suits you better.
You can now close the lid of your laptop and leave it for _months_ without the battery draining to 0, and still resume your work from where you left it.
My desktop from 2014 does the same.
Yes, I have heard problems with "modern standby" but have not experienced any issues.
* MacOS wins for laptops, hands down. Mac laptop hardware is by far my favorite these days (I used to be a Lenovo guy in the thinkpad era, but no more sadly), and hardware support for Mac is of course best on MacOS. There are a lot of things you have to get right in a laptop (touchpad controls, drivers for wireless devices, audio, etc.) and Linux never really nails it for me.
* FreeBSD for the majority of "appliances" (routers, storage, servers for running misc. tools like home automation)
* Linux for various open-source desktop tools that have poor BSD support, mostly around things that rely on GPU (e.g. Blender rendering)
* Windows for desktop media consumption (games, movies, etc.). I'm not happy with it, per se - things like HDR and surround sound have a lot of issues - but it works well enough and I already have it there for games. I should probably try MacOS's surround sound support - I know it handles HDR very well.
The bulk of Linux laptop woes (improper hibernate, touchpad/lighting control, peripherals, GPU switching, battery life, etc.) directly stem from the hyper fragmented hardware and firmware specs used by various OEMs.
Their own survey contradicts itself, saying the top 5 IDEs used include Visual Studio (32%) and Notepad++ (28%) which don't even run on Linux. How does that add up?
[0] https://wakatime.com/blog/51-wakatime-2021-programming-stats
Of developers who use WakaTime, most use Windows.
Of developers who answer StackOverflow surveys, most use Linux.
These aren't contradictions.
+ Visual Studio (32.15%)
+ Notepad++ (27.71%)
+ Xcode (10.53%)
= 70.39%
That leaves only 29% left for Linux, but they claim Linux usage is 40% [1].
Unfortunately, Linux is still 3rd in primary OS usage and this survey question is flawed.
[0] https://survey.stackoverflow.co/2022/#section-most-popular-t...
[1] https://survey.stackoverflow.co/2022/#section-most-popular-t...
Edit: Sorry, I thought you meant only the OS question allowed multiple answers. You're right, makes sense they would allow multiple answers for IDE too.
Still, they shouldn't call it "primary OS" if multiple answers are treated with the same weight.
Still hackt, but a one liner at least
Disclaimer: have never touched matlab
setdiff(1:3, randi(3))(randi(2))
> One must factor out the resulting list from setdiff into a separate variable first: t = setdiff(1:3, randi(3));
t(randi(2))
> This is so medieval even by 1980s standards...https://www.mathworks.com/matlabcentral/answers/1684819-why-...
But that doesn't mean they're wrong to hate it. It's a proprietary program with origins in the 1970s (that's 50+ years old!) and comes with a lot of cruft.
I don't know what university courses are using these days, but a lot of universities have data science majors now, so presumably there is some exposure to Python there. A lot of statistics courses also use R.
What kind of tricks are you thinking of?
> I wonder if Matlab being most hated relates to people being forced to learn it in undergrad and it being poorly taught etc.
To me, as someone who has used Matlab fairly extensively both being taught in undergrad and in programming-centric grad research, Matlab's one and only strength is in its being a one-and-done IDE/programming language. If you're using Matlab, then you're using it in an IDE that "just works" and was installed and configured simultaneously with Matlab itself: there's no real distinction between the two. Further (assuming you check the right boxes during installation [1]), all the possible packages you could ever have [2] are installed at the same time. So you get a super simple install and never have to think about installing or configuring anything ever again. I don't want to minimize how useful this is. Every other programming language I've ever used has had a huge amount of installation and configuration overhead, often an insurmountable barrier for non-programmers (e.g. scientists).
That said, I dread using Matlab, for many, many reasons. My top three reasons in no particular order: 1. you can only really define one function per same-named file, 2. errors are almost always one line long (no stack trace) and rarely give a line number in normal usage, 3. cell arrays. Cell arrays are basically just untyped lists, yet somehow mind-bendingly confusing to use.
[1] assuming you paid for the right to check those boxes. If anyone is wondering, to get all the boxes in a non-personal context would cost 100x more than whatever you're thinking (which is a bit of a straw man since no single person needs all the packages and institutions get crazy bundle deals). I haven't taken the time to add it all up, but base MATLAB is $900/year/computer, and each of the ~100 packages costs $500-2000/year/computer (skewing heavily to $500). So, roughly $50k/year/computer for everything. Which is silly, obviously. Most people only want a handful of packages so realistically it's only about $2-4k/year/computer. Only. However! If you just want it for non-commercial, non-academic, non-governmental use, you can buy Matlab for only $149 + $45p, where p is the number of packages you want.
[2] Literally, all the packages you can have. Package development is 98% limited to Mathworks-official packages.
MacBook stopped feeling like my (quite expensive) hardware doing what I want and became an (even more expensive) device controlled by Apple often forcing unwanted changes on me.
I miss MacBook's touchpad but am happy with the trade-off.
what were you able to control before that you can't anymore?
I was increasingly locked out of my computer. Apple is now MacBook's superuser and I'm just the user. Their hardware is too expensive for that.
What I like to do with this is have two versions of hosts file and two versions of /etc/pf.conf
In one setting, I use https://gitlab.com/intr0/AppleBlock/-/blob/master/AppleBlock... in the hosts file and block the whole 17.X.X.X ip range (Apple's range) in the pf.conf
The other setting doesn't have any of these blocks
Whenever I need some apple service (e.g. updates or apple developer stuff), I run a script to toggle the blocks
The benefit of this approach is you get apple services only when you need them
Sure, there's an "Apple Tax" which basically means very well constructed hardware (except for keyboard-gate), free OS and generally awesome support at the Genius Bar (and profits of course).
A few years ago I tried switching to Linux (RH) for work (Java) on a laptop (Dell, not my choice), and the experience was massively frustrating beginning with the touchpad. I can't hold the different keyboard shortcuts against the desktop, but my 13 years of OSX muscle memory were hard to give up.
In the end, the quality and interoperability of non-IDE software was missing. I don't mind paying for good software.
Docker speed was amazing, though.
Happy to pay for good software.
Then you can add the utter undebuggability of the OS, the total lack of feedback on anything, magic buttons appearing only if you've filled all prerequisites, thus giving you no way of knowing what is missing, etc. etc. etc. I have no idea where this cult of Apple's UX comes from, it's just not great.
I thought this was supposed to be the pinnacle of UX?
Boy, what a surprise. Today, I try to spend all 8 hours hiding in emacs, so I don't have to walk this walled garden that does not even allow me to customize all the keybinds. It is clearly not an environment for power users and that's why they have a success with it.
System Settings -> Keyboard -> Keyboard Shortcuts
The real question should be: would most developers WANT to use a Mac, if given the choice?
Personally, I think OSX is the superior of the two simply because it's stable as can be, takes no (and allows almost no) tinkering to get working. Controversial opinion, I'm sure.
If the decision is between Ubuntu and Mac, they will go with Mac because it usually means better hardware and build quality. I don't think that non-mac laptops have screens that can compete with XDR displays.
> (and allows almost no) tinkering to get working
I think that we tend to overlook or dismiss the amount of tinkering we do in MacOS. Installing certain toolchains can be a real PITA, we have to deal with homebrew, outdated utilities (thank god for coreutils in homebrew), and so on.
The XDR display is nice I’m sure, but there are laptops out there with 4K OLED displays…
I dunno. From what I’ve observed, Apple products are mostly nice due to the attention to detail and the fact that the purchaser can be pretty sure that nothing will be truly deficient. Other than that one time with the MacBook keyboards.
So many products are like: fantastic but here‘s some crippling issue. Apple skips that.
- chassis flex / build quality
- battery life
Just because a panel is oled and 4k doesn’t mean that it is a good panel. I have a 4k oled tv and its contrast ratios are garbage compared to the laptop.
The panel in the 16inch mbp has variable refresh rate, 10k dimming zones due to the 10k mini leds, 1600 nits peak brightness, 1000 sustained.
For me, I prefer a screen which can go truly black on a pixel-by-pixel basis. You might like the MacBook screen better, and there are surely some metrics by which is can beat an OLED panel (for example some people like really bright screens which OLED can have trouble providing). But it is not true to say that non-Mac laptops can’t compete with the XDR display. For any given metric, there exists a screen out there that is better, and choosing which metrics to prioritize is a matter of preference.
Felt relieved when I sold my Mac hardware on and could get on with computing, may well just be my usage pattern was incompatible with OSX but that was my experience.
Poor areas will just default to yarr matey windows xp due to how easy it is to set up… and become gold mine for hackers to abuse
Microsoft does not care anymore. You can use no product key, and you only lose some stuff in the "Personalize" menu and have a watermark. It will get Windows updates still.
LTT video showing it https://youtu.be/M3bezYerYxQ?t=474
or just crack it as you say. Cracked using massgrave activator gets Windows updates just fine. I use it in a VM.
Pluses and minuses, but overall very happy with the switch.
- Biggest con: I miss the raw efficiency, unparalleled speed and superior ergonomics of my i3wm bushido, and will never match that in any conceivable fashion on OSX (yes, I've gone through the whole Yabai/Amethyst/etc journey, and ended up ditching it all and just going back to vanilla. Those half-hearted efforts at a tiling window manager just kept hard things hard and made easy things hard, too.)
- Biggest pro: better hardware (which I realise isn't an OS attribute), never having to care about how my computer works or fix much of anything, lots of seamless and turn-key behaviours that just make sense (particularly vis-a-vis suspend and multi-monitor stuff), and (surprisingly to some), it's refreshing to be able to inhabit a common universe with other computer users and talk about the same sorts of stuff.
Nobody really ever understood my Linux gibberish while I had only a distant idea of what a 'Finder' was that went back to System 7.5.5. It's nice to have more friends.
- Biggest misconception going into OSX: that one actually has to use GUI stuff for much of anything. Nah. The browser, iTerm2, VS Code, and Mail is where I live, same as under Linux. Mostly just the first two.
- Biggest misconception about desktop Linux from Mac users: that it requires so much care and feeding. I ran Arch, of all things, with its continuous rolling releases, from 2016-2021 and although the initial setup had a long tail and was ultimately an investment of a few days, nothing I can remember ever broke for me afterward -- not on desktop, not on laptop.
Mac users tell me they're sure things did break for me, and that I just internalised my Linux trauma. No, they really didn't. It was shockingly stable. It was just kind of mediocre in other ways that start to have more meaning only after you've spent enough of your life tweaking your desktop experience.
Edit: I didn't look at the survey in detail, but I hope they make a distinction between desktop use and server use. Sure, I use Linux for development. I'd even say predominantly. I think of my MacBook as a nicer GUI for all my Linux work.
I'm in the same vein as you. I tried to be productive on my m1, but as a 10+ year rusted on i3 user, I cannot for the life of me ween myself off it.
This also gets to me to my one big hardware grievance against MBPs, which I think is commonplace: the keyboards. They're just terrible on so many levels, and worse yet for those with emergent RSI.
They're also hard not to rapidly devalue if you're used to more clicky keyboards, even if you have moderated your typing intensity considerably. All the Macbooks I've had develop the dreaded "shiny key caps" within 3 months, and I assure you, I've worked very hard to become a gentle typist.
Of course the reason is not Linux itself but hardware manufacturers, that focus only on Windows support (at least 99%) and don't care about other operating systems. Thus they make choices that make sense for Windows (such as using an x86_64 architecture, since Windows support for ARM is not great, or implementing things like modern standby) but that are not optimal for Linux. Also driver support is sometimes not the greatest.
Beside all these things, using both macOS and Linux (specifically ArchLinux with GNOME) I have to say that to me Linux works better.
Take for example the user experience of GNOME, to me is superior to the one of macOS. In macOS you lack of basic things that on Linux are present since forever, such as the ability to fix a window on top of all other windows. Or other nonsense things that hurt user experience, such as the inability to view hidden files from the Finder.
Another thing that I miss when I use a mac it's a good package manager. Homebrew works fairly well, but it's not integrated with the system. You have some software shipped with the operating system, some other installed with Homebrew, other installed from the App Store, other programs that are bundles (.app), other that have an installer (.pkg), and unlike Windows you don't even have an unified way to uninstall a program, you have most of the times remove them manually leaving a ton of stuff in the system that accumulates over the years. On Linux I type `pacman -Syu` and everything updates to the latest version. On Linux I don't fear installing a new program, since I'm 100% sure that uninstalling it will remove every trace of the program.
Finally, macOS is POSIX compatible but to me Linux is superior. GNU utilities are usually more feature rich and provide a better user experience than macOS ones (a stupid but essential things: the ability to put command line options after the positional arguments, how many times you do cp a b for it to fail because it's a directory, and then add -r at the end? On mac you can't and you have to add it before the first argument, annoying). Sure you can install GNU utilities on macOS, but it's not safe to add them to your path (I spent a day figuring out why a React build was failing only to know it was because I had GNU utilities in the path and a script did do something different), and you have to use the `g` prefix on anything.
This is super frustrating to me, as my installs (which were quite vanilla) would not last 3 months without catastrophic failure (typically some kernel update would hose something, or a video driver would not be compatible) and I’d lose a day trying to get back to functional.
Now run Linux with LXDE on my 16GB laptop. Everything works well and it's blazingly fast. The UI is simple and functional, but not as beautiful as the MacOS UI.
I guess in the beginning we want all the bells and whistles, but with experience, all we want is control. Linux gives me that control to a much greater degree than a Mac.
I live exclusively in terminal or browser, all other apps are opened via terminal and closed with cmd+q.
I like macOS because it doesn't get in the way even when I almost never had to interact with Finder (which I still find weird every time I had to use it, for web uploads etc).
I constantly use iTerm (or even just the regular MacOS Terminal).
It's easy to have it take up the whole screen and the most "MacOS UI" I'll ever see is the title bar for the window, which yeah can be ugly to look at but really isn't something that keeps me from working or anything.
I guess IDE's use a ton of UI, but I wouldn't say that's MacOS cruft on its own.
`open -a NameOfAppYouWantToUse fileyouWantToOpen.foo` will reliably open a file with whichever app you want. Just `open path/to/directory` will open a Finder window to that directory. The file open dialog in macOS also exists and works just fine. You can drag file icons from GUI apps into terminal windows to insert their absolute path. You can drag files from Finder onto an app icon to open-with that app.
Transitioning between terminal workflow and GUI workflow feels better to me on macOS than either Linux or Windows; although with Listary Windows is decent.
The only time that I have to interact with the UI is when I have to do something on System Settings, which is also dreadful.
The most complicated thing I do in Finder is browsing pictures and installing an Application, both of which is does a perfectly fine job at.
As for why I continue to use a Mac for development - it works, my fingers are mapped to the keyboard commands, and it's the best combo of hardware+software that I've found so far.
We used to do it back then with everything statically linked or libs put into a folder with a LD_PRELOAD variant for whichever unix os they were on.
And it makes sense - if you have ever had to support a large team of developers you find out that a lot of them are totally siloed into their development niche and most have no idea around how to debug a bash script or troubleshoot issues when they encounter a simple deviation from the onboarding instructions.
Then you have fun things like there being 2 conflicting versions of yq out in the wild and conflicting utilities if someone has installed GNU tools in preference of the mac versions and a docker image makes a lot of sense.
Which may explain some blind Linux users swearing by their setups like they are the best things since sliced bread, while others might be meh.
It would be damn nice, though, even for able-bodied folks to be able to use their computers or phones without having to look at them once in a while, and no, voice assistants in their current shape don’t really count. They are still far from being “instant” and understanding you unambigiously every time.
I would welcome software UIs that are usable by all people without having to go into some kind of low vision mode where everything is different. Or one-handed mode where everything is different.
I run Docker Desktop on OSX on an M1 Pro and haven't had any issues. Yes, you do need arm64 builds of things; the x86_64 emulation is indeed apocalyptically, unbearably slow. But otherwise, the shift to doing local development in docker-compose has been transparent and seamless.
Literally zero issues, even clipboards are shared between host windows and guest linux mint. It's crazy. I get to use my keyboard of choice and not bother with apple's weird hardware choices.
The user experience on MacOS is frustrating. NayamAmarshe has already provided some examples in another comment (https://news.ycombinator.com/item?id=34164174).
- Native MS Outlook and Teams apps are not available on Linux so everything has to be done thru the web browser since MS deprecated the Linux desktop client. Teams crashes in Chrome very often and running it in Edge means every link that is clicked opens in Edge. I do not want to use Edge.
- Font scaling issues at 4K, while I have tweaked a lot of apps to support this it is a constant battle to keep the fonts looking crisp thru updates and some apps just don't support great font scaling.
- Last week I had to reboot my desktop because a single press of CRTL+V was pasting things twice (this was also happening on right click > paste so it wasn't my keyboard)
- Random freezes when I close the laptop lid, which has been solved by some BIOS updates but it still happens.. just not as frequently.
- Bluetooth issues, switching between multiple devices isn't flawless.
- Package manager sprawl, homebrew maybe slow but it usually has the latest version of CLI apps I need to use. Whereas on Linux apt packages are usually way out of date, flatpak won't do CLI apps, asdf doesn't have enough of the tools I need, aqua is very inconvenient, nix takes a long time to configure. AUR is probably the best but you must run Arch. I run Fedora with Linuxbrew and don't need to spend effort on figuring how to install some random CLI binary I need.
Sorry if this sounded a little incoherent. There's more nuances I could go into but overall I do not want to spend days/weeks configuring my desktop OS. There's something to be said about MacOS having very opinionated decisions but for the most part everything just works for my needs and I don't have to struggle reading thru the Arch wiki or blog posts trying to get bluetooth devices to work or whatever is fighting me.
I really like seeing System76 building laptops that work smoothly with PopOS but even that there's struggles with certain hardware or software. It feels like using a Linux desktop is a constant game of cat and mouse on debugging odd issues.
But being an iOS dev... you just can't get away from macOS. Even with a lot of the great tooling out there.
3 years ago, I started working at Microsoft. I have to use a lot of tools that only work in Windows. A lot of Microsoft stuff is becoming more and more cross-platform, and there are probably a lot of teams that could get away with using Linux or even Mac as a daily driver. So my far on the teams I've worked on this hasn't been practical though.
I find the Windows O.S. to be just fine for development, and tools like Visual Studio are very, very good. I've grown to like Windows Terminal nearly as much as Iterm2.
Finding a Windows laptop that is good as Macbook is a real challenge though. I've been considering buying my own Dell XPS 17" 12th gen intel w/4k screen.
My Macbook air M1 is such a good machine, I wish I could do my work on it.
Linux guy here wondering if that means Windows terminal is much better than it used to be or that Iterm2 is much worse than the average Apple product...
eg. Title/tab settings have a lot of permutations where things break.
Linux is definitely better for that.
Me, I'm an Apple developer. I think there may be ways to write Mac/iOS software on non-Mac machines, but not natively.
Windows is a user friendly platform, WSL brings a good CLI, docker is a great way to distribute software.
So I guess the uptick in Linux has been due to containers and WSL. In my circle, still few people run it natively in their work computer.
I've dealt with Mac couple of times and did not really have any "this is it" moments never mind inflated price.
My main headaches have been quick to get over, mostly around keyboard shortcuts and clipboard behavior, but the only really concerning one is the laptop trying to cook itself during sleep. This has happened maybe 3 or 4 times in a few months of regular use. Kernel updates and bios settings have made no difference yet.
After stepping away from Linux for about 5 years I'm mostly pleasantly surprised with the progress though. It's really not far from there being no reason to even consider wasting money on a Mac unless you have some very specific creative software needs (or you need mega battery life, which is never fully utilized for me).
Most software devs get their Macbooks paid for by their work.
If I had to buy my own laptop I'd also seriously consider a Linux box.
I still personally use Windows because of its stability.
I tried Arch 5 years ago and was lucky enough to hit the dreaded Linux 4.19 EXT4 bug that lost everything I invested in Linux. After that I almost never use Linux desktop again out of the fear of losing valuable source code.
However this does not stop me from adopting Proxmox and Alpine into my homelab stack though.
I recently started to evaluate into Fedora because it is pretty stable. At least much better than Arch in terms of stability while still offering a great amount of customization ability above Debian and its derivatives.
---
The more interesting thing is I actually learned more about Linux internals since the last time I got the ext4 bug that erased my Manjaro.
I then understood how lost+found works and how to scavenge data from the bitmap mess created by that bug and tried to find alternative file system to work around the caveats and inefficiency of ext4.
That's how I came across ZFS and eventually Proxmox. And even the general concept of copy-on-write and influenced my data structure of choice by knowing things like append-only file and persistent data structure.
Because of one Linux ext4 bug, I have lost valuable source code that not committed, but at the same time learnt a lot. This is bad and good at the same time, but still bad in the end logically speaking (because "bad and not bad" still equals bad)
Source: https://www.phoronix.com/news/Linux-4.19-4.20-BLK-MQ-Fix
That's not my experience. I can't remember the last time an update broke my window manager. I won't say it doesn't happen, but I don't think very common at all these days.
> Not to mention if you install a wrong GPU driver, which is much easier to do on Linux that one would want, same happens.
Again, I don't think this is really the risk that you're making it out to be. Most distributions are going to default to a reasonable driver for the hardware. There might be some knowledge required if you're using an old enough nvidia GPU but don't want to use the open source drivers, but that's an edge case that isn't going to impact a lot of people.
> There's no defaulting back to fallback when a failure occurs. Nothing. Just death.
macOS and Windows can both brick your machine with a bad update. I use NixOS and I think the situation is much better on average because I can always roll back to exactly any previous state of my system.
> Not to mention the infinite problems with Nvidia GPU's, Wayland-specific issues, or X11 specific issues.
Nvidia is a bit of a pain, but it _mostly_ just works these days. X11 and Wayland both have their issues, I don't feel like the overall state of things is worse than the alternative though. Sure, you don't have the particular bugs in Windows or macOS that you have to deal with using X or Wayland, but you have a whole different set of problems. I find the Linux problems generally more pleasant to live with.
> Makes it seem as if there's no hardware that fully supports Linux.
Most hardware works pretty well with Linux these days, and you can buy machines that ship with Linux if you want to guarantee support.
> You have to be a Linux expert to use Linux even remotely well. And that's pretty stupid if you ask me.
Linux great for beginners and people who don't demand a lot from their machines, and it's great for people who are willing to invest a bit of time into learning the system (and I think that investment has a pretty high return). You don't _have_ to be an expert to use Linux. Where I think most Linux distributions have struggled historically has been with the power user segment- people who either know Windows or macOS well and expect the same level of competency in Linux without spending the time learning another OS, or people who have strongly adapted to the quirks of other OSes and find Linux's different set of quirks more grating. That isn't "stupid" - it would be great if Linux worked better for that group of people, but power users of any system are always the hardest to transition over.
This and the linux wifi driver annoyingness are the two things that keep me from just ditching apple software completely
I have been running Linux since the beginning and also have four laptops running Linux.
It's sad how Apple has squandered the UNIX/NeXTSTEP/Mac OS X heritage of macOS. They continue to rip those components out of the OS with no replacement. As a university student, I was very attracted to Mac OS X because of UNIX. It was huge selling point for me over Windows. Now, the tables have almost turned.
I won't pretend it's perfect - but people wildly overstate how allegedly complicated and unusual it is. I definitely find it over all slightly easier to maintain and administrate that Windows. Have limited experience with OSX, but I remember it looking quite pretty and being very clunky to use.
I just really haven't used it much beyond casual use cases (streaming/web). The main, and maybe dumb, reason is that it's been a lot of work to get the keymap to function. I still use Windows/Linux, and relearning everything after having used Emacs layouts for 10+ years just isn't going to work for me. Some of the desktop/windows management stuff also feels clunky as well.
I like the hardware quality and everything looks nice, but it might be my last.
The first thing I do with a new machine is clone my settings repo and run my install script. This way the shells, editors, git, gpg, etc. all feel the same.
Then the differences are all about the UI. I really like XFCE, and have it configured for really easy use. The Mac just isn't as flexible and you have to do things its way even if they're less efficient than you'd like. "The secret is not caring."
I did manage to get the external Mac mouse to not feel like a slug (even with the speed slider maxed out) with some command line trickery. Sometimes the rules can be bent.
You can only build iOS apps in XCode
You can only do USB-debugging for iOS Safari on Mac, and they made it so buggy so you HAVE to debug all these inconsistencies with WebKit.
Apparently good job from Apple to secure Mac's positions, but generally each year MacOS feels more and more "abadonware", a lot of stuff doesn't get fixed for years while new touch-y features come in. It certainly feels that they don't make as much money from it as from iOS, and ideally they wanna merge this stuff removing the line between iPads and MacBooks
I can’t believe that the barrier of entry in 2022 is still as high as 10 years ago..
Redhead broken here, Ubuntu doesn’t support that, popos randomly freezes to death, while Garuda pukes blood after getting stuck in the middle of setting face login up, etc. and this is after hours of googling and entering specific bash voodoo.
Damn I don’t want a hyper-specialized deployment… I just want a base installation with gpu and laptop hardware feature support that I could then build on
And to those who say “but WSL..” you have more patience than I when dealing with a windows specific bug when inside a Linux environment.
I rarely use Safari to test my work though. I loaded it last week to do some testing and it won't let my app open a new window to display a document a user creates and wants to print from the app.
Apparently Apple felt that feature is so misused or dangerous they had to prevent users and websites from using it. It's the only web browser I am aware of that does that.
I'll likely be moving to Linux as well at some point in the next few years.
Hardware wise: Apple Silicon is very nice, but my enthusiasm is greatly tempered by a horrible experience with docks. So-called USB 4 docks and even plain USB-C docks work far less reliably on my MacBook Pro M1 Max than they do on PC laptops I have laying around. I can't even get a single monitor to 4k 60hz... Unless I plug any of my adapters into a non-Apple laptop. Weirdly, most of these docks don't seem to work at ALL on the M1 Mac Mini, or only sometimes. I'm genuinely puzzled.
Software wise: Window management on macOS is extremely annoying. I'd try to run one of those i3 style tools, but... Full setup requires disabling SIP. Color me and my company's compliance team very unimpressed. I'm also on two kernel panics, apparently in some Bluetooth related module. Dude, I don't even USE Bluetooth on my work MacBook. I've sent reports to Apple... But I assume they're directed to the circular file. That's as much transparency as I get anyways. Major updates break XCode every time. Bazel runs slower than dirt. Sometimes I get stuck "verifying" binaries I just built. Why do we need to phone home to Apple for ad-hoc signed binaries we just built? Feels more like a Microsoft move.
OTOH, I do get why people don't like Windows and Linux. Linux is unfriendly and requires a large time investment to really take advantage of. It's buggy, and hardware support is poor unless you carefully select it (of course, You Can.)
But the real kicker is this: with Linux, I have the power to fix things. With Windows and macOS, it feels like I'm only renting my computer. Will this problem ever be fixed? "Maybe some day. Probably not." I hate that. There's no transparency and there's nothing I can do about it.
Average users definitely shouldn't go and mess with patching their kernels. But me? I'm happy to. My Surface Laptop 4 is running an unmerged PR to the Surface Linux project kernel right now. And since I'm doing it declaratively with NixOS, I can always boot to before I applied that patch. It's only one line of Nix code, that automatically fetches the PR diff from GitHub and applies it.
I upstream rarely, but the fact that I can triage, report, follow and help along with bugs that matter to me is a huge boost in confidence. If you've used a graphics tablet in Wine, you may have benefited from a couple of my patches.
I understand that it's not for everyone, and I wouldn't recommend it to anyone who doesn't really feel this kind of sales pitch. But: if you already have to invest a large amount of time into programming, I think suffering your way into Linux proficiency is not a bad time investment at all. Even if there's a lot of potential pain, there's even more potential learning and growth.
As far as I'm concerned, I'll be computing on Linux until it's pryed from my cold dead hands, remote attestation and other dystopian bullshit be damned.
This is one of the major reasons why I have switched to Linux and never looked back. Obviously this mindset is not for everyone, but for a technical user willing to put effort into it you can end up with a great experience. Even knowing that an issue you reported has been acknowledged or is also experienced by others (and being able to track its progress) is quite reassuring.
While it's true that developers are often frustrated with people asking stupid questions if you actually put the effort into writing a proper bug report and trying patches out they are often happy to help you out. The Linux community is a technical community and users are expected to pull some weight in most cases.
This is the most compatible dock you can get as its just generic display port 1.2 and a passive passthrough of the onboard USB2 controller - no drivers needed.
Then buy a cheap 7 port USB2 hub and chain it off the single port of the adapter.
This will run you about $30, will do 4K @60Hz, and have enough USB2 ports for webcams, mic, keyboard, mouse etc. which wont come anywhere near saturating a USB2 bus let alone a USB3 bus.
I've used this for macs, various Windows laptops, Samsung phones and it works perfectly and reliably for a few years now.
Previously, I had to use Windows on a workstation, and that was simply awful. Slow, inconsistent for configuration, and WSL was barely an improvement over a proper Unix/Unix-like system.
On my Windows desktop I use WSL for my development because it is Unix based with tons of compatibility for modern software.
I do not use Windows to develop (outside of Godot Game Engine sometimes).
Stack Overflow Developer Survey 2022 - https://news.ycombinator.com/item?id=31836974 - June 2022 (364 comments)
"What OS do you write most of your code on?"
Only the first group uses Macs.
Not owning a Mac is a big red-flag for VC funding.
I guess the main reason is that with $1200 you can get a high end linux laptop while for the same amount of money you get a M1 Air.
am aware of hackintosh but not sure how well it works for dev productivity.
The Macbook Pro I have issued from $work is far superior in comfort speed and usability to my expensive Ryzen Thinkpad that I purchased in the summer. I just don't particularly like developing/working on OS X.
I use an M1 Air and the hardware is exceptional (other than the keyboard obviously). Mac OS however is not. You need something like Rectangle installed just to get half-decent window management. Windows 11 wipes the floor with it on accessibility (for things like font tweaks and so forth). And the speed with which you can work under both Windows and Linux (Mint for example), using the keyboard almost exclusively, really puts Mac OS to shame.
If a non-Apple laptop maker did Apple-quality hardware with a better keyboard and anything like the Air's battery life then I'd be interested.
Not sure what issues with Docker many of you are experiencing, but I have been using docker for Desktop quite extensively and it works.
The only bad issue I had so far after so many years of use, to be really honest, is that since I upgraded to Ventura my laptop crashed 3 times after opening Xcode or various IDEs. Never happened before, and that’s kind of annoying but I can live with that for now.
I also hate how they stubbornly refuse to put a second button on any of their trackpads/mouses (mice?); the fact that they implemented a version of right-click by clicking with two fingers shows that it's needed and that they abstain from it out of pure stubbornness. The one saving grace for this is that they let you plug in a USB mouse, and the right-click will work as intended but I'd still prefer it if it was build into the system. In addition to being counter-intuitive, the double-click would also prevent problems for users with disabilities. Also could prevent problems for gamers since FPS games generally assume you have at least two mouse buttons, although to be fair touchpads don't work well for gaming in any case so you'd probably still need a USB mouse for gaming even if they did have the right click.
I also found the lack of ethernet frustrating; I had to use a stupid over-priced thunderbolt/ethernet adapter to get online. Since this was a laptop, that meant I had one more thing to carry around and one more thing to plug in every time I used it.
The touchpad also had some durability issues; after a couple years it stopped clicking when I pressed it. It still worked somehow but it didn't have that crisp "click" feeling that you get from tact switches and it stopped making noise when i pressed it. Still usable but it felt uncomfortable.
I also wish they had something similar to that desk dock that lenovo thinkpads have. I wouldn't really fault them for not having this since most PC laptops don't have it either (in fact, I think I've only ever seen it on thinkpads and I'm not sure if they all have it either) but it's an amazing convenience when you work in a cubicle to just be able to drop your laptop into the dock and have your monitor, keyboard, mouse, power, speakers, and ethernet all connect through that one bus.
One last problem is their batshit insane decision to deprecate OpenGL while not supporting Vulkan either. This is less of a usability problem than a general platform problem, but I develop an open-source application which has 3D graphics, and the lack of any cross-platform graphics API is a dealbreaker for me, both as a user and as a developer. I just can't work without OpenGL/Vulkan. I could port my program to Metal if I really wanted to put in the extra effort to support apple, but even then I wouldn't be able to use a macintosh as my primary development platform because I wouldn't be able to test the OpenGL backend that my program relies on for every other platform. Their decision to deprecate this absolutely unprecedented; even M$ at the height of their monopoly in the late 90s still supported OpenGL; they could have dropped it and only supported DirectX if they wanted to lock developers into their platform but they chose not to. Apple seems to want to lock customers in to their platform at every level, and at this point they're worse than M$ ever was.
Aside from build and stability issues, I've also hit not-so-subtle bugs in MITM proxies they add for connections on some ports.
I get why building Docker on MacOS, especially with the x86 emulation twist, is such a difficult problem. I don't envy the engineers working on this. But I don't get a developer who knows they need Docker would pick a mac for their main machine.
On Linux, I quite like Podman! It has a couple of gaps, but for simple things it works great
Lots to do to combat this, like: not sharing the volume with the host (vscode dev containers recommends this)
With that said if you're doing mostly backend stuff in Go/Python/Ruby etc it's quite good. Most of my complaints are from full-stack development.
The other upside of being fully containerized - even for FE stuff - is that you side-step having to worry about having any sort of "local" dev environment configured beyond Docker/Podman/etc and some environment variables set. It makes onboarding new developers a breeze and eliminates "Weird, works locally on my machine!" types of issues.
Eh, yes it is. Apple doesn't provide a containerisation API for their OS, which means Docker is forced to run non-natively!
Containers on macOS don't use OCI images or anything like that, but scoped and grouped access to system resources with a separate user land that 'looks' like a full OS has been available for over 5 years. Even without that, XNU has plenty of facilities for it, and even if it didn't you'd still be able to use Launchd environments (which are more akin to LXC).
Docker relies on specific implementation details of the Linux kernel. It always has. That is why you always need a Linux OS somewhere to run the containers.
Example: there are artefacts you can store as OCI images that contain Mach-O binaries, and Windows and Linux won't really run those. You can even still PPC code in those binaries, and link to Cocoa frameworks. This means that the OS and architecture you are targeting will not be Windows or Linux, and that is not their fault.
Is that true? Plenty of people are using multi-arch images (x86 and aarch64) which are essentially the Docker image equivalent of a fat binary. I might be wrong, but I think what I want are preconfigured macOS binaries packaged up a convenient image format with a layered filesystem, networking support, etc. Ideally with an equivalent linux image such that I can later switch the OS specifier and get an image containing an equivalent linux binary to run on linux.
I am for example quite happy to run a macOS native version of Postgres. But that doesn't give me the easy disposable database for testing that a docker-compose setup gives me. If I could specify that I want the "postgres" docker image in my docker-compose file, and running that file on macOS ran a macOS version of postgres in a macOS-native container then I'd be very happy.
Packaging (including fat binaries but also byte code self-unpackers) has tried to make this possible for decades but it just won't stick. Take Debian or RedHat packages for example, there have been tools and repositories for very long times that were meant to make a universal method of distributing pre-packaged (and natively also chrootable/jailable) software for a multitude of architectures and operating systems possible, but package authors just didn't really want to do the work for what is essentially not something they wanted themselves.
Building software for 1 or 2 major release versions within a single operating system is hard enough, tacking on extra systems is usually a step too far.
The closest we got (and it still exists) is autotools, but that's just build tooling. It does however make it possible to build software from a single source for many targets and check for all the required features ahead of time. But this is so close to developing the software itself that it's not really compatible with the influx of end-user-style developers that expect pre-packaged 'commercial grade' software, which is essentially what Docker and OCI and Containers are.
The only 'new' thing so far has been cgroupsv2, the v1 version and everything else (distribution, sandboxing, capabilities, separate user land etc) has been done for over three decades. But again, using it means knowing how to use chroot, cap, tun and jail for example, and not everyone wants to learn that much. So we get things like docker, which under the hood does exactly that, plus some union filesystem magic to make it cheaper/faster for registries to store data; essentially a re-implementation of dynamic linking and shared libraries, but for files.
So now we have created an interface (docker) that is easy to adopt, easy to promote and easy to use, but it's hard-wired into Linux (the kernel) and only much later (post-OCI) got some hacked up windows version that is completely different and doesn't work anywhere else (because, well duh, not-windows isn't going to run windows apps). Aside from the fact that it's an OCI artefact, windows containers have very little to do with docker containers as we know them.
Most of this stuff also didn't really come from a need to get containers on windows (or macOS) but from the need to get more 'developer light edition' into the workforce, which can be trained and onboarded faster. If you can get people to ignore the foundation they stand on, they can be put to work in building upwards much sooner. This does of course come to bite everyone in the ass at some point, because if you're standing on top some 'magic' infrastructure and something breaks, it's going to be really hard to fix it. Right now we're all trying to make it redundant enough so we can ignore the breakage, but I doubt this is a winnable race.
Docker is a convenience, not a technical solution to a technical problem.
Will macOS run them? That seems to be the missing functionality.
But I've run into issues emulating more complex environments where you need multiple exposed ports, more complex host-to-Docker networking, etc., which generally works on Linux because it's not stuck in a VM shim layer.
But most of the time, I don't have any issues, just sometimes slower environments on Mac if I don't tune folder mounts and run apps like Ruby/Node/PHP with hundreds or thousands of files.
Here's a description of my setup for that: https://news.ycombinator.com/item?id=33665178
And the same with Docker Desktop on Linux: https://docs.docker.com/desktop/install/linux-install/
Why would the Docker developers do this? Did doing it locally not work well? Is all that just to 'spare' Linux developers from actually installing Docker on their machines?
Here they appear to have chosen to vendor in the whole damn OS, which, given the realities of supporting Linux, doesn't seem totally insane to me. I'd expect it also lets you run it with reduced permissions (not everyone has root on their workstation) and to generally make cross-distro operation much more reliable and consistent.
It's too complex to thunk windows calls to linux, that is what WSL1 tried and failed at, because windows is just too different from a POSIX paradigm for that to work well. But posix-on-posix isn't really all that hard... nor is other *nix-on*nix.
What did they do differently with WSL2+?
I use the Remote SSH plugin in VSCode and configured the VM to forward all container ports to localhost (as well as forward port 22 to port 2222 on localhost). I also have `alias vmlogin=ssh -X -p 2222 localhost` in my .zsh_profile and set up ssh to use a public/private key pair for quick logins.
Just do a 'colima start' once a month when I actually have to reboot my mac, to boot up the background VM, and everything else basically runs as normal.
It was working fine for me, maybe requiring one restart per month. But the slowness was unbearable anymore. Don't even get me started on the effects of it on battery life.
To anyone looking for a replacement, Windows is usable. I still miss the consistency of MacOS tho.
Since I only use laptops, I haven't even bothered to try Linux again, my last experience was not that great with compatibility issues and hibernation problems.
MacBook Pro (14-inch, 2021)
Chip Apple M1 Pro
Memory 16 GB
macOS Monterey
Docker 20.10.17
I agree it was awful on the previous generations tho.
I have nothing but horrible memories when I had to use Linux on the desktop.
This includes multiple editors and IDEs used, multiple languages and multiple frameworks, also multiple types of development (from common devops facilities development to front-end simulation, on-prem and cloud, C#, Python, Java, Go, Rust, Swift, Objective-C, C++, TypeScript, Scala, T-SQL, PL/SQL (yep, RDBMS with on-DB applications), some on plain docker, some on Podman some on local Kubernetes clusters, all using wired and wireless connections (or both), one or more VPN connections), and nobody is having any issues with macOS and Docker on Intel or ARM. The only non-ARM OS we have around is Windows because we can't legally get it. Everything else is multi-arch, except for some legacy Oracle and IBM applications that are being phased out and have been handed off to a third party to maintain while we rip them out.
We have the luxury of not really doing and foreign architecture compilation because you can develop locally and CI will do matrix builds so we can run on a mixed spot fleet on AWS. We used to build for POWER8 too (before we handed off the IBM nonsense). Some people do it anyway, especially those who want to test binary protocols (a very small percentage) when they write applications that do IT<-->OT communication and want to make sure that the architecture on the IT side doesn't mess up binary payloads that the OT side won't know what to do with. This is usually done with k3s and skaffold where we attach and 2nd node to a Rancher Desktop instance that runs pure x86 instead of x86-in-ARM via Rosetta. We also have 1 Linux user who does this, but she's just using plain qemu emulation for ARM-on-x86 (instead of the other way around on M1/M2 Macs).
So all in all, I think the problem is still valid, but your experience is not really representative it seems. Keep in mind that happy people tend to not go on the internet and tell everyone about all the problems they don't have ;-) So most reports we'll see will be from people having issues with something.
The biggest issue we used to have was the AUFS support, but even that was mostly a painpoint for those who could not auto build from the ide or didn't have things like Jib. That has been resolved for over 5 years tho.
This is surprising. I run FreeBSD on a home server but I would imagine that it'd be rather unproductive to run as a web dev workstation OS, since it shares friction points with macOS (mainly, it's not Linux) but doesn't have even a fraction as many users which means you're basically on your own for fixing any issues that crop up.
More power to this individual if they're making it work though. It's great to see diversity in the desktop/workstation OS usage… in my view, desktop monoculture will only come back to bite us in the ass.
I also think that monoculture isn't really the best way, but neither is an abundance of variations causing uncertainty. We need to be able to plan ahead and look ahead, and have enough of a standard to operate.
Luckily, convincing stakeholders that "but we imaged this workstation last year" isn't a valid argument in any scenario (security, productivity, DLP) wasn't all that hard, and the jump from there to "images and MDM are all fun, but near realtime posture verification is the only way" was made with relative ease.
Most people still stick to the "supported and automated" provisioned workstations, but those who want something else can have it, if they deliver on their compliance, non-friction and actual work. Best of all worlds.
I'd change this to "web" development. There are a lot of us not doing anything that requires even thinking about docker.
I'm not alone in picking the word "fundamental". In the same survey that is article is based on, Docker was the #1 "other tool" for professional devs. SO had this to say about it: "Last year we saw Git as a fundamental tool to being a developer. This year it appears that Docker is becoming a similar fundamental tool for Professional Developers, increasing from 55% to 69%." I think the comparison works too. Git isn't the best tool for everyone, but is extremely common and a sound default. Docker also isn't the best tool for everyone, but isn't far off on being as ubiquitous.
Stop trying to get me to switch to MacOS :-P
> It's such a fundamental tool to development
s/fundamental/gratuitous, undesirable/ . IMNSHO.
brew install podman-desktop
https://podman-desktop.io is a full (free) docker replacement supported by redhat.Meanwhile, the client works just fine and can connect to a headless machine running Linux if you don't want the cost of virtualizing the host OS. Like, if my Linux laptop were having trouble running a Mac copy of Photoshop in a Mac VM (ignore the legality) and it was really important for work and that was getting in my way, I'd... get a Mac. If Docker on Mac isn't cutting it, get a Linux box—it's not Mac-native software and you can still interact with it pretty seamlessly from the Mac.
I remember playing around with running our codebase through Docker when M1 first got released and it was really slow (due to ARM and/or shared disk read speeds?). But from what I understood it was something that was to be fixed soon...
I'd love to use Docker at work but it was a show stopper.
The advantages of Linux are too many too count and has a lot of customization that can provide some edge. I don't prefer customization anymore, just simplicity but it's a good thing that the options exist.
For me, I think these are the main issues with MacOS that ZorinOS doesn't out of the box:
> No screen edge tiling, spend more time managing application windows
> Inconsistent keyboard shortcuts, cmd and ctrl are used interchangeably for no reason (Biggest issue). Why do I need to do Ctrl+Tab to switch tabs but Cmd+T to create tabs? Why is History not Cmd/Ctrl+H in browsers? I need to memorize more shortcuts on MacOS for no reason, when it could very well just do it all with a single modifier key.
> Hidden dock doesn't appear unless I smash my cursor on the bottom edge. Dock Autohide is very finicky, ZorinOS' way is much more graceful and natural.
> No HDMI volume control
> Maximizing an app takes you to a totally new desktop
> Switching desktop animation is a bit too slow
> No window closing animations, but has window opening animations. Feels really unpolished
> Single click on dock to maximize the app but clicking maximized app doesn't minimize it. Why?
> Ctrl + Alt +T doesn't open terminal, it's like oxygen to me.
> Can't set VSCode to open with Ctrl + Alt + C.
> Can't set custom global shortcuts at all, even windows can to some extent
> Can't highlight text in terminal or anywhere to paste with middle click mouse button.
> Ctrl + C to cancel a command in terminal but Cmd + C to copy text in terminal. Ok, then why Cmd + T to open a new tab in terminal instead of ctrl?
> The shell startup time is too much on MacOS. I have to wait for a second for the shell to load before I start typing my commands. On Linux, pressing Ctrl+Alt+T and writing commands right away feels so good!
> No package manager by default, brew is honestly very slow compared to Linux solutions.
MacOS isn't unusable of course, I'd prefer it over Windows anyday but it just introduces a lot of UX friction Linux desktop just doesn't.
I hope those "Infosec's" don't have Linux servers to secure ;)
It is harder to find anti virus software that runs on Linux, at least I am told.
Ah the snakeoil that drive a whole industry ;)
You can make it work but it requires more effort than most corp teams are willing to put up with.
True but often 24x7 connected to the world...but yeah you are right, not often do you loose a whole server ;)
I also wouldn't characterize it as "harder to secure" but rather "extra work to support." A homogenous endpoint fleet makes all IT tasks significantly easier, and endpoint management tools for Linux tend to be less mature and more difficult to work with.
Only 1 browser to secure! Infosec requires an activeX compatible browser for installing expensive security contraptions. IT can't possibly tolerate Firefox! What, there are more browsers out there? What, Microsoft creates a new browser? What, marketing sent out a new campaign only viewable in Chrome? What, our own site doesn't work in Internet Explorer, and nobody noticed in 2 years?
After fighting their own users for over a decade and looking very sad-kitten-face when every single one of their dastardly back-stabbing users did not follow the holy dictates from above, enterprise IT found out it was actually possible to secure a browser that was not internet explorer. I expect Linux to go the same way. In fact, it did just that for servers.
I assume in lots of cases devs have a fair amount of leeway in installing stuff locally, maybe if you set up a VM you run a whole desktop in there.
Currently I am using Zed editor that is Mac only for now.
But yes, MacOS' software support is good because more people have Macs and there is also a lot of money to be made there but MacOS' DX/UX support is okay. Not great, not bad, just okay. I personally think Linux nailed the DX.
Engineering and development tools are on the whole far better supported under Linux.
I spend most of my time in Linux VMs in cloud, or in Docker etc running Linux now to do the $work I need, despite having a powerful 64GB M1 Macbook Pro issued by work. Why? Because that's what our production environment is. And that's where the right versions of things are.
Oh and fighting with Homebrew etc sucks. That it's 2022 and Apple ships a Unix without a modern Unix packaging system is ridiculous. Almost all professional dev types working on MacOS are using brew or similar systems -- why has Apple not noticed this and fixed their distribution/packaging system, which remains a throwback to 1990s Unix/NeXTStep?
At this point the Macbook itself I use primarily as a web browser and Zoom meeting joining tool. (And it's far better at this than my Linux laptop, which gave me constant headaches with multimonitor support etc).
Pray tell, what is a "modern unix packaging system"?
- The multitude of apts yums etc. that still require sudo for even basic user software?
- snap? If understand it correctly, there is still a multitude of issues with it and heated debates in various coreners of the internet
- nix? the one that no one truly understands and is half-baked at best?
Any other from this list? https://en.wikipedia.org/wiki/List_of_software_package_manag...
I wish I could use Linux on my work laptop, unfortunately we aren't given such option. Had it not been for WSL, perhaps I'd request a MacBook.
Usually the latter comes down to the company having group-policies, or mandatory compliance software managed centrally.
Sometimes I've picked Linux and had to jump through hoops installing anti-virus, or other similar things.
Given the choice I'd pick Linux every time, but if that's not an option and I want the job then Mac is a good fallback. I'd rather quit my job - and have done so - than run Windows.
Chad!
These days with immutable containers, etc, it matters less. But a decent shell, the ability to run automation tools easily, etc makes a difference.
I know that WSL allows most things, and many devops tools are written in golang/rust, which are available for Windows, but I started at a time when Ruby, Perl, puppet, cfengine, etc, etc were basically not decent options on Windows.
I keep up, I use AWS, kubernetes, etc, but I'm used to flexible, scriptable, and predictable working environment - and for me that means Linux.
The focus stealing proclivities of both macOS and Windows for new application windows can also go die in a fire as far as I'm concerned.
I also enjoy the simple keybinds I have to sling windows between monitors and workspaces easily. I have no idea how I'd do that with any of the tools on macOS or Windows in a maintainable way (XMonad's configuration lets me cartesian product between (noun, key) and (verb, modifier) lists to make things very consistent).
There's an abundance of jobs available to you if you're a decent programmer, so avoiding the places which prevent you from running your OS of choice is a good first filter to apply.
Yup. The company I work for kinda has this. Their security software does support Linux, but usually lags a bit. So to fully use it, you have to not apply the latest kernel updates. Makes total sense for a vendor promising to improve your "security posture".
They're working on improving the situation, from what I understand, but they're still not there yet. The provider is a company you've probably heard of, that doesn't allow you to download the installers if you're not signed in (they're not custom, since they still require you pass in some installation token to tie it to your tenant). Good times.
Fortunately for me, instead of bugging me to switch to Windows, they're bugging the vendor for improved Linux support. The reason being that we intend to run this on Linux servers, too, and don't expect to change those to Windows.
A new [nationality omitted] hire, Boris, wasn't a Windows fan so he immediately cracked open his laptop and added a hard drive running Linux dangling out the side, obviously not within the policies. He lasted about 2 weeks.
[1] https://github.com/koekeishiya/yabai [2] https://github.com/koekeishiya/skhd
Yabai is a more complete windows manager. It has some features like:
- Automatic Tiling, Stack or Floating windows
- Shortcuts to move between windows based on position (like other tiling wms)
- Create, move and destroy workspaces
- Move apps to specific workspaces
- Windows borders
Plus it integrates really well with https://github.com/Jean-Tinland/simple-bar
I've had mostly the same experience on ZorinOS. It just works, never crashed on me, never made me spend hours fixing some weird bug. All my hardware is fortunately well supported.
But yeah, I'd give MacOS more scores on the UI design.
> getting an equivalent font rendering is hard
I haven't had any such issues and I don't use Arch because ZorinOS provides me everything out of the box.
It was a long list anyway, having that many “minor issues” is a major issue.
I’m not someone who spends much time configuring computers but as much as I will argue in favour of sane defaults, sometimes things do just boil down to personal preference. Apple make it very difficult to change things. (Microsoft, unfortunately, seem to be taking inspiration from Apple too).
If a person is that sensitive to workflow, neither standard Mac or Linux will suffice.
I find Linux to be more difficult to customize because everyone is using different desktop distros which i think causes these types of apps to be buggy.
I don't think it's easy… you need to somehow magically know about this undocumented "alfred", hope it isn't malware, download it.
On plasma I open systemsettings, I search "shortcuts" and I can change all of the KDE ones in one place.
I think having it already there is easier than downloading unknown undocumented app. But just my opinion.
> I find Linux to be more difficult to customize because everyone is using different desktop distros which i think causes these types of apps to be buggy.
Sure, server stuff is hard, but desktop is much more limited.
Every solution you’ve posted there is a 3rd party application outside of macOS. Which really just proves my point.
If you have to resort to undocumented hacks to make changing basic things “easy” then it isn’t easy.
Whereas KDE (for example) provides all of that in its base install. You can roll with the defaults, which are pretty sane, or you can change them to suit your preferences.
> If a person is that sensitive to workflow, neither standard Mac or Linux will suffice.
That’s a pretty absurd conclusion. We aren’t talking about computer illiterate people here. We are talking about skilled IT professionals having personal occasional preferences that differ from what the defaults are.
To quote Monty Python: We are all individuals.
> I find Linux to be more difficult to customize because everyone is using different desktop distros which i think causes these types of apps to be buggy.
The fact that everyone can run different desktop distros is further proof that Linux is easy to customise!
There’s absolutely nothing wrong with preferring macOS. If that’s what you find better to use then good for you. But it’s a really large stretch to argue that Macs are more customisable or easier to customise than Linux systems.
All the CUI-style bindings like Windows' and Linux's Control-c for copy are done using Command instead. It's a change, sure, but a minor one that also deconflicts many bindings. How do you copy in the terminal on Windows and Linux? If it's C-c, how do you send sigint? How do you select all in a terminal if C-a defaults to going to the start of a line?
Most of the remaining inconsistencies or confusing bindings (Cmd-y for history in Safari) are a consequence of too many bindings. Cmd-h is already taken for hiding the current application and is a useful mnemonic across many applications, whereas Cmd-h[istory] is useful for a limited number of applications, and it would be inconsistent for those applications to override the system default.
At least on Linux I can have crystal clear (looking) font on my 2K 27" monitor.
On MacOS it looks blurry because they expect you to buy a higher DPI monitor - there's no subpixel rendering. If you want to share your monitor with your gaming PC as well (and you don't want to spend thousands on video card and monitor), you are left with subpar fonts on your MacOS.
This still unfortunately depends on what you're using it for. If development is your main use-case, MacOS will most certainly not work. It's absolutely dumbfounding how many darwin-specific bugs exist in common software (especially in the age of M1), but the real problems simply come from setting up a decent dev environment. Shopping around to customize MacOS in the way I like it is much more time-consuming than cloning my Nix dotfiles and building an environment from scratch.
It's still possible to use a Mac as a development machine, but the edges around it have gotten really sharp. Most of the Mac devs I know are writing code in a Linux VM, these days.
To quote Big Lebowski, "that's just, like, your opinion, man".
I've used MacOS for development since 2008. PHP, Erlang, JS/TS, Python, Java, C#... It certainly does work.
Almost every[1] dev conference you go to you see people on MacBooks (a tiny percentage running Linux on them). Often the majority of people will be on MacBooks.
> Most of the Mac devs I know are writing code in a Linux VM, these days.
I have the exact opposite experience.
[1] Well, it's an exaggeration and bias of course, but...
For pure development stuff, though? You're torturing yourself on MacOS. For every pretty menubar you enjoy, there's a dead POSIX zombie underneath your floorboard or an encroaching platform limitation coming from the top-down. Then you have to deal with the fact that MacOS is by-far the least stable software target of the Big Three OSes, and managing your libaries/software without third-party software is a nightmare. By the time you install all your package managers, Emacs/Vim plugins, browser-of-choice, three or four versions of bash and Git, Via Xcode, most people ask themselves why there isn't a better way.
Ultimately everyone's experience is anecdotal, but survey says that developers are turning over a GNU leaf...
Ah yes. All developers that go to developer conferences are there to deliver those conferences (whatever that means).
> For pure development stuff, though? You're torturing yourself on MacOS.
And you're saying that with the full knowledge and authority because?...
To reiterate. I've been developing exclusively in MacOS since 2008 in a variety of programming languages for a variety of things.
> there's a dead POSIX zombie underneath your floorboard or an encroaching platform limitation coming from the top-down.
Demagoguery.
> and managing your libaries/software without third-party software is a nightmare
wat
> By the time you install all your package managers, Emacs/Vim plugins, browser-of-choice, three or four versions of bash and Git, Via Xcode, most people ask themselves why there isn't a better way.
wat
I spend about as much time installing this as you spend installing the same on... well, any machine. Because most of that doesn't come preloaded with Linux either. I do agree that XCdoe Commandline Tools are a joke. But how many times a week do you install them (and other tools)? Zero? I can spend 5 extra minutes on my setup once every four years or so.
No idea what the FUD is about "several versions of bash and git", I use a single git and zsh (which is now default on MacOS).
And yes, I stopped using emacs a long time ago (which I used for three years... you guessed it: on MacOS [1]) and switched to a proper IDE.
[1] This was my init.el https://gist.github.com/dmitriid/4078311
Maybe I'm scarred or spurned or something. MacOS has not been kind to my workflow over time though, and going back to using Monterey for work was an exercise in frustration.
So. MacOS wasn't for you, and you extrapolated it to "if you are on MacOS, it doesn't work". Well, it keeps working for me (and a great number of other developers)
For example, over the past 6 years across two jobs I haven't used Docker except for running some tests (bringing up and tearing down MySQL databases or using Google's pubsub emulator). So while it is slow, it hasn't been slow enough for me to care. I haven't had the need to mount NTFS drives. I havent' had the need to use Linux inside MacOS (and the few times I needed it in the past decade VirtualBox has been enough).
On the other hand... I needed to set up a Linux VM on a NAS to run a small family website I built in Elixir + Phoenix. I'm deifnitely rusty in Linux but ooh boy. Good luck getting a relatively recent release onto a system which insists that everything must come from a packge manager and installed via sudo for the entire system. Thank god for asdf, but it was still a pain and a half (because asdf builds everything from source and figuring out the names for the required libs is a masochistic sort of fun).
So your mileage and mine definitely vary.
Just like every single OS. Your linux box doesn't come with most of the things you listed pre-installed and preconfigured: your vim/emacs plugins, your browser of choice, git, your speicifc versions of libraries etc. etc.
Edit: BTW there's a reason there are so many tools like pyenv, or SDKman, or asdf that first appear on Linux and then get ported to other systems. Because the rosy development paradise that is Linux is everything but.
> For professional programmers, I am adamant that Linux is a more consistent experience than dealing with the issue du-jour in MacOS.
Linux has it's own share of issues du jour that impact actual use of the operating system. And most of the issues I have with OS very rarely come down to the problem with the development tools/environments/what not. Hell, I switched to M1 as an experiment about a year after it came out... and everything just worked (big thanks to those who made stuff work under M1, but even non-converted tools kept working).
And I've personally seen many people switch away from Linux to MacOS precisely because they found the overall experience of being in MacOS better. Because even if you "just" develop stuff, you still want your machine to have all the human stuff: from reliable hibernation/sleep to good touchpads to crisp displays to media support to ... yes, "touch up photos or edit video" (not necessarily for a living).
* Best-in-class hardware. Touchpad, M1 power, and battery life.
* With that, best-in-class drivers, I never have to mess with them. Sleep mode actually works.
* If you're an iPhone user (which I am) being able to text with people from the desktop is invaluable.
Everything I did with Windows development I did in VMWare, just having a stable laptop and touchpad was 90% of it for me. Windows actually runs better in VMWare on Mac than on native hardware because the hardware and drivers on Mac are so much better.
These days I'm a cloud dev. Which for me means only three apps I need. VSCode, a browser, and a good *nix terminal. Mac does all three great.
That being said, if all you need is VSCode, a browser, and a good *NIX terminal, then Asahi Linux should feel pretty much finished to you. Or any hardware that promises good Linux support, really. With KDE and a Magic Trackpad, I can get the gesture-driven workflow I loved in MacOS without the... well, MacOS part.
Ultimately, you should use whatever suits you. I'm unconvinced that MacOS remains the best option for most developers, though.
I checked this out, am I right that this is prerelease alpha quality? I should really switch to this??
Nope it bloody doesn't. The amount of missing features (why can't the scroll direction be different between touchpad and mouse? Why is there no native window management?), stupid bugs and simply undebuggable issues ("A USB device is consuming too much power, it has been disabled"... Which device, they all still work?? Or iPad screen sharing not working without any indication why, or the device refusing to go to sleep when connected to an external monitor that also charges, etc. etc.) just doesn't fit the "just works" bill. Some things work very well, many others don't or do but with subpar UX.
Yes some features are missing and hard to add, but it's like a car with a lacklustre stereo. IME the Linux cae can't run for more than 100km without something breaking.
In fact, I don't remember ever needing to use LD_LIB_PRELOAD. Or driver debugging.
Linux is not perfect, my current laptop did not work perfectly until Ubuntu 22.04.
But your description of things is way hyperbolic.
What does this even mean?
I don't think Macs can claim that anymore, if they ever could:
https://mjtsai.com/blog/2022/12/27/ventura-issues/
https://news.ycombinator.com/item?id=34155875
I get that it was a great bit of marketing, and it's become a fossilized idea in many people's heads, but I've never had the kind of bizarre failures in Linux that the article and the comments talk about regarding modern macOS.
> and apps look gorgeous.
This is a matter of taste. I dislike the Mac UI and the fact Macs only have one UI is one dealbreaker out of many.
Not for me - it still feels like, UXwise, it's stuck in the earl 2000s.
We're in 2022, and no window snapping? Randomly rearranging workspaces/desktops? Forgetting which apps are on which monitor whenever it goes to sleep? Inconsistent shortcuts + lack of used-defined global shortcut assignment? Inability to set mouse acceleration?
Just how low are your expectations?
Can't you do this from System Preferences > Keyboard > Shortcuts > App Shortcuts?
I know third-party apps are not as good as native support, but here are my recommendations in case anyone is interested. Both worth their price.
> no window snapping?
I've been a happy Divvy [0] user for years.
> Inability to set mouse acceleration?
BetterTouchTool [1] can customize mouse acceleration beyond what user can do in System Preferences.
[0] Divvy. https://apps.apple.com/us/app/divvy-window-manager/id4138575...
[1] BetterTouchTool. https://folivora.ai
> cmd and ctrl are used interchangeably
Not sure which apps you are talking about, but I've not encountered any apps that use Ctrl-T to open a new tab. They are all Cmd-T.
hardware: M1/M2(!!), display, touchpad. hard to imagine wanting any laptop that's not Apple silicon right now.
unsure if getting my dual displays working(Apple Studio Display, LG Ultrafine) will be a pita on linux
My guess would be because you're going from an OS that handled everything for you to a completely customizable OS like ArchLinux. I have never had issues getting dual displays to work on Fedora. I have 2 Benq displays connected via thunderbolt on Fedora now and have done similar with the LG Ultrafine.
I have actually gone back to 2K displays and I find those better for programming. I am currently running 3 2K displays (all of them massive 32 inch) via a single cable to my docking station. I also have a thinkpad t420s this can do the same. Both of them running Ubuntu 22.04
For context, I've used Desktop Linux from 1996 till 1998, 2002 till 2007 and tried again for the past two years with a Ryzen desktop.
The main reasons that bring me back to macOS (apart from the M1 / M2 hardware):
- I much much much prefer the macOS keyboard shortcut setup. Command+C works everywhere. On Linux, Ctrl+C works most of the time, but sometimes it's Ctrl+Shift+C or something else. I run into this far too often because I'm a create of habit.
- I also enjoy that basically all apps adhere to the same keyboard shortcuts. E.g. Command+T for new tab works not just in Terminal, but in every tabbed app.
- I haven't found a way to customise Gnome or KDE so that application switching with Expose / Mission Control works as fluid as on the Mac. I use this all the time to go to different windows.
- I like that the package manager is separate from the operating system. More than once have I run into a Linux situation where I had weird package conflicts and it was super tricky to get out of it. With Brew I just reinstall it and I'm done.
Because Ctrl+T swaps the two characters around the cursor, which is what it should do in a terminal (and in Mac OS, it does this in all text boxes in all applications). Mac OS is actually remarkably consistent about all of this. In Linux, Ctrl+A goes to the beginning of the line in a terminal, but it selects all text in other applications. In Mac, Ctrl+A goes to the beginning of the line, everywhere.
In fact, this is common to a lot of little poweruser features on macOS, and I think is a big driver of distaste towards non-native apps by long-time Mac users.
huh TIL! and Ctrl+E goes to the end. amazing thanks
C-t swaps adjacent characters
C-b/f move backward/forward a character
C-p/n move up/down a line
C-k kills (cuts) to the end of the line
C-y yanks (pastes) what was killed (but does not use the same clipboard as Cmd-c)
C-h deletes backwards one character
C-d deletes forward one character
Probably more, but that about covers the ones I use.> Computer refuses to communicate with the dock.
> Bluetooth audio doesn't work.
> Screen resolutions get fucked when reconnecting monitors.
No, it doesn't. Fullscreening an app window takes you to a new desktop, or to be more precise, makes it fullscreen. If you just maximize it, it stays in the same desktop.
> Single click on dock to maximize the app but clicking maximized app doesn't minimize it. Why?
I have never seen that behavior. Single clicking on the dock selects the application, but does not maximize any windows.
> Ctrl + Alt +T doesn't open terminal, it's like oxygen to me.
Using iTerm, double tap command (this is an option you have to enable) will bring up a terminal. It is great.
> Ctrl + C to cancel a command in terminal but Cmd + C to copy text in terminal. Ok, then why Cmd + T to open a new tab in terminal instead of ctrl?
This one shouldn't be too shocking if you're familiar with terminals. In the terminal, the control characters are passed through intact to the terminal itself to do whatever it needs to do. Hijacking them for application (the terminal emulator itself) control would be bad behavior.
The behaviour must be inconsistent then, because I just clicked the green icon on edge, safari and vscode and it popped me off to a new virtual window.
double clicking the title bar will maximise it vertically on Safari, and full screen on vscode and edge
All this predates the behaviours described that are followed by Windows and other OSS desktops. Neither is better, both depend on habit and familiarity. For some of us that used Mac’s since the 80’s, the Windows approach is a complete anathema. Organising the workspace into neat grids is not something many of need or have missed - that’s not to say that it’s pointless, but it doesn’t necessarily fit the workflow of macOS. As mentioned, there are myriad tools, most of them free, to add the behaviours that you seek.
- Last time I tried, Linux could not do proper fractional scaling. I use 4k 27" displays and wish to use 1.5x scaling. macOS does it perfectly, Windows does it perfectly. Linux does all kinds of shitty stuff. Never could get it working properly. You either get blurry scaling or screen tearing and shit.
- Scroll inertia thing is fucked on Linux. Trackpads are not fun to use.
- I love clipboard managers, keeping history of clipboard, allowing search in previous entries etc. All solutions on Linux have been simply bad. And as far as I can tell, it is not even possible to properly do it on wayland.
- Laptops do not sleep properly. I tried 2 different devices, more than once they heated up in my backpack. I can't have that.
Note that I'm not a foreigner to Linux. I've been running and loving Linux servers my entire life and I can get around stuff pretty fine. I just don't have the stamina to deal with desktop linux.
Genuinely curious did xrandr not work for you? I have the same setup and use 1.5 scaling. (Ubuntu focal).
This happens on Mac and windows but on windows I just use force resolution on the Nvidia driver to add one extra mode, and on Mac switch res x did it.
So sadly Mac is my main good travel PC option.
You must have tried Linux really quickly :p tongue-in-check
Or you were running headless xD
- fractional scaling is a known sore spot, but it seems like it's getting better fast. Wayland finally has fractional scaling and the upcoming release of KDE is coming with proper fractional scaling support.
- The laptop sleep setting is some that can be (sometimes) fixed by changing a bios setting (called something along the lines of 'Sleep State'). It's part of a Microsoft + Intel initiative to make PCs "more like smartphones," with all the extra "user friendliness" you would expect from that.
Can't comment on scroll inertia. Libinput has been working pretty well with my assortment of trackpads. Touch input seems ok on Wayland too, using an ITHC based device.
Have not had the sleep problem with Linux lately. Actually, the problem has kind of reversed - nowadays, this problem is more associated with Windows, thanks to Windows Modern Standby being impossible to disable on newer Intel processors. Still, sleep may be broken if you are using an NVIDIA based device. All I can say is, NVIDIA is one thing better avoided with Linux today. Obviously, if you want your best shot, using hardware that is designed and tested only on other OSes that has merely reverse engineered support in Linux is not going to give it to you, though I understand why people are not willing to fork the cash over to one of the few vendors like System76 that actually do a reasonable job.
You got me on clipboard management, that sucks today. I'm pretty sure it's not impossible in Wayland, but it'll need compositor support. KDE on X11 used to have great clipboard management; dunno what the status of that is in 2022, as I used KDE most in the KDE3 days. Clipboard management is hard for valid reasons though. Just like on all other operating systems, clipboard isn't really a place that data lives, it's an IPC layer. When you copy, nothing happens except for the advertisement that something has been copied to the clipboard. Sometimes clipboard operations hang if an app becomes unresponsive, and the act of "pasting" is not necessarily without side-effects. This makes active clipboard management pretty hard to get right, if it's possible at all with today's designs. The biggest problem is LOSING the clipboard when an app closes, in some environments. That really does need to be fixed. That said, believe it or not, it happens on Windows too, just, thankfully, not in most common scenarios.
Depends on when you used it last time. On Linux we have two graphic systems, Xorg that doesn't support it, and Wayland that supports it out of box. Some distros switched to Wayland years ago, others still prefer Xorg as the default option, just change to Wayland during installation. I have 2 screens, each with different resolution and it's all fine.
>- Scroll inertia thing is fucked on Linux. Trackpads are not fun to use.
This is highly configurable on Plasma (KDE). I would say, too many possible options are given, but it's not as bad as on Windows where on one laptop double tab is double click, on another it means scroll-click. Plasma tries to fit everyone, but requires some turning like this.
>- I love clipboard managers, keeping history of clipboard, allowing search in previous entries etc. All solutions on Linux have been simply bad. And as far as I can tell, it is not even possible to properly do it on wayland.
We're back to Plasma, you can configure global clipboard and screen-independent clipboard, they would also share history and clipboard recorded is enabled on default.
>- Laptops do not sleep properly. I tried 2 different devices, more than once they heated up in my backpack. I can't have that.
This still suck very much, welcome to systemd integration layers that need to be done as root and you never know if it's working until you test it after a reboot.
And AFAIU clients (applications) still need to implement this protocol. Something like wxwidgets or old gtk versions probably won’t ever get to implementing it.
* Some compositors employ some workarounds to achieve this, like the scaling tricks where they render to a larger buffer and then downscale it…
We a lot problems like that when we want to integrating Linux desktops in our enterprise environment.
We are not using red hat or but have dedicated Linux computers.
I've found fractional scaling OK on Linux doing it with Xrandr. It works the same way MacOS does it. A bit of a bear to setup although Ubuntu has had it easy to use in their version of Gnome since 20.04.
This is a bit of a workaround, but I've been using it for close to 5 years on Gnome / Ubuntu with a lot of success:
You can install gnome-tweaks, and modify the text scaling factor to fractional numbers (ex: I have it set to 1.4 on a 2560x1400 14" screen). The vast majority of applications use this to scale both text, and icons (chrome, terminal, file editor, desktop, etc).
And I realize as I type this that it's a "workaround", which kind of reiterates your point about it being difficult to use. That said, I personally feel like macOS has similar issues (docker, desktop handling, slightly.. different bash tools, etc), and a lot of it is a matter of using something you're not used to.
If you tried to install Linux on two random devices designed for Windows and they do not work flawlessly, then I am not surprised. My Librem 15, which came with Linux preinstalled, has 100% reliable sleep.
- I thought that was a patents thing?
- Compared to what? The clipboard managers on windows seemed all pretty bad.
- yeah, better than windows (e.g. see the linus tech tips rant about it), but s3sleep is much better still. Luckily many higher priced ones offer that as an option in the UEFI settings.
I turn the lid down on my laptop and it goes to sleep. It pull it up and the system comes back up. Reliably. Every single time.
I guess that narrows my choices down to Windows and MacOS. Between them I find it much harder to choose, but Macs just have a solid lead on the hardware front for now. The M1/M2 chips are just chef's kiss. And I don't know why most Windows laptops come with such junk webcams.
Edit: I almost forgot! Linux still doesn't have hardware accelerated video playback on browsers. How can anybody recommend using linux on their laptop despite this is beyond me. Is this a joke? Like do you guys just always keep your laptops plugged in all day? Why not just get a desktop at that point?
AFAIK it's easier to set up on Wayland, but I have it working on X.
edit:
Maybe I'm super lucky, but I rarely had problems with suspend on Linux. Having said that I prefer no suspend on closing the lid, and AFAIK that's not an option on MacOS.
Especially if I'm also carrying something in my other hand.
I at least sometimes see coworkers walking around with open laptops, which looks inconcenient. I am sure they have their reason for not closing the lid.
Those aren't really problems, but it can be a minor matter of convenience, and I've set both my work and personal laptops to not suspend when the lid is closed.
I'm not saying that's in any way a better idea than keeping the typical default, and I have absolutely no opinion on what anybody else should do.
FWIW, I also don't care whether macOS gives an option for not triggering sleep when closing the lid, which was the original matter. But I don't agree that there's no reason to close the lid except for suspending.
How much time did you have to spend fiddling with your config to get it working? Does it work reliably? Last I checked, it wasn't even possible with an NVIDIA card.
>Having said that I prefer no suspend on closing the lid, and AFAIK that's not an option on MacOS.
Yes it is.
Max an hour. It's an Intel GPU on a cheapo netbook (hence the need to make it as efficient as possible). Arch wiki is quite decent for this kind of stuff.
I don't know about NVIDIA, I didn't own one since a long time.
On every single windows or mac laptop, I just seem to the same peace of mind I have come to expect from smartphones. Click, system goes to sleep. Click, system is up.
On linux, every time I approach the laptop, it is with that small but unshakable feeling of dread. What is my laptop going to do this time? Will it decide to come up with the same state I left it in? Or will it decide this is a good time to reboot?
It's not the case for my M1 MBP. Having it connected to an external USB C/Thunderbolt monitor makes it simply refuse to sleep, even when clicking on the Sleep button, closing the lid, etc. Even outside of that it's a crapshoot if simply closing the lid when on battery power will actually make it sleep, or i will realise on Monday it never slept.
Undocking/docking works fine. Perhaps you have some process running that is preventing sleep.
Yes it does.
This is exactly how my Librem 15 works with Linux and Qubes OS.
It means that your browser uses the dedicated video card for rendering video frames and pushing it to your monitor instead of using the CPU.
Why you would want this? The same reason you use a straight-edge to draw a line and a compass to draw a circle. The right tool for the job. I'm sure most people here would have had the experience of the first time training their machine learning model on a GPU instead of the CPU and having their jaw drop at how much faster it was? GPUs are simply much better than CPUs at the things they are designed for. Sure, most CPUs are still powerful enough to push 1080p videos to the screen, but that comes at the cost of poor performance and battery life.
So does my laptop. And my sister's laptop; and my father's laptop; and my cousin's laptop; you see where I'm going.
>Linux still doesn't have hardware accelerated video playback on browsers.
I don't know about Chromium, but Firefox has.
>Like do you guys just always keep your laptops plugged in all day?
No, because I installed Linux its battery now last longer than on Windows.
Linux does that on my laptop. In fact, I just close the lid, put it in his bag, and forget about it.
The battery does last about 6 hours of coding and browsing. It's not 12 hours like the Apples, but it has been enough for my writing sessions.
I do agree about the junk webcam :/
I have been that guy who loved to customize every last ounce of the user facing experience of my system. (I still spend most of my time inside of Emacs irrespective of which OS I'm on.) I had a dotconfig folder that I used to carry around to different machines and it's fun and all that. But I'm no longer a student, I simply can not justify spending time tinkering around trying to get the basics working. Bad battery life is a deal breaker. Unreliable suspend is a deal breaker. No, I will not spend a minute trying to get it working. I would rather just run linux on virtualbox or, more recently, use Windows + WSL or a Mac.
>The battery does last about 6 hours of coding and browsing.
And does hardware accelerated video playback work on the browser?
This works with my current HP Spectre x360, I don't remember it ever working in any of the previous laptops.
> And does hardware accelerated video playback work on the browser?
I think the answer is not, as I notice about 6-8% of CPU load when watching videos in the browser.
I really like macOS but I am slowly moving towards Fedora on the laptop and Windows 11 with WSL on the desktop.
For general use and macOS/iOS development, definitely the former, macOS is far superior, IMO.
It has become unfriendly for Apple development too. Increasing lockdown, endless permission prompts, bugs piling up into a mountain, and the forced OS updates required by Xcode.
Linux is terrible on desktop - but it’s beautiful for everything else.
A few months back, there was an issue with the master build of grub that would leave computers unbootable. It just so happened that the arch devs were using the master branch because nobody wanted to back port some security fixes.
Instead of owning up to the issue and apologizing, we got some lame half-assed excuses days after the event. When I asked the security dev about it, he patronized my concerns and told me I would be better off on an 'easier' distro.
I immediately formatted my drive and installed pop os, and I have had exactly zero issues since. Linux is fine on the desktop. Arch, however, is terrible.
Don't use arch if you are not prepared to configure it yourself.
- safari (for testing and debugging, not daily driving)
- mobile app dev for iOS
- nicer hardware experience than any linux laptop I know of (superior screen with perfect hidpi support, best trackpad, actual all day battery life, top-notch performance) without any major compromises for my needs
- full hardware compatibility without any fiddling (my thinkpad required regular fiddling to deal with the fingerprint sensor and runaway power drain)
I don’t run into any of the issues you mention, but I use a very trackpad/mouse-oriented way of navigating because my brain refuses to remember lots of shortcuts, and I have an assortment of mac utility apps that fill the gaps (like moom for window tiling).
It has to just work. There's a lot to like in Linux, particularly in the Cloud but it still has to just work on a laptop.
I don’t see what’s inconsistent there. Cmd+key sends a command to your terminal application, Ctrl+key sends a command to a process running in your terminal.
That’s why, for example, Cmd+C copies selected text in your terminal window, while Ctrl-Y yanks text in many applications (including many shells, via readline).
I have used Linux as my main driver on all my desktops and laptops between 1999 and 2021 until I migrated to Macbook Pro.
The simple reason is that maintaining basic operating system to do the basic things it should be doing should not be taking so much of my time. I am sick and tired of fixing another audio, wifi or power usage issue because package maintainers decided they have a different idea or spend time fixing my graphics driver every couple of months at the most inopportune time. I need to be able to open my laptop and reliably be able to continue with my work, is that so much to ask for?
So I switched to MacOS and for now I could not be happier. Setting up some things is as frustrating as it has always been for me but at least once I do it it tends to keep working.
I decided it was enough for me and I bought a Mac. There are still some design choices from MacOS that I don't get, things I wish I could customize, but I definetely don't regret my decision.
Linux has HDMI volume control? Interesting. This piqued my curiosity and I wondered if Linux supports ReadyPlay and other DRM standards to support higher bitrate and higher resolution Netflix streaming.
It does not.
You can only get a low bitrate, awfully blocky and distorted (although pretty high resolution 720p) on Linux. The resolution is useless tho because the bitrate is so low.
I pay for my Netflix subscription. And when I want to watch a movie on my projector, I first torrent it (fiber optic, takes two minutes top), then play it. No random Internet issue. I torrent the x264 "webRIP" which I figure out is basically the film I paid for the right to watch using my subscription. I'm not a "data hoarder" / movie collector: I watch the movie then delete it. Same for series.
I started doing this after I upgraded my Netflix subscription to a higher tier then noticed streaming quality on OS X was still crap.
If you’re using Safari, streaming quality will be the same on OS X as on your smart TV. If you use Chrome or another browser, yeah quality does suck.
Chrome does not support the DRM that the studios require for higher bitrate streaming
I may be missing the intended point, but AFAIK neither Windows nor Linux support HDMI volume control (I use all 3 regularly, but only Windows and Linux over HDMI). My Nvidia GPU is connected to a 4K 120Hz TV using HDMI for audio, the TV volume controls are independent of the OS volume settings. Unless OP meant macOS doesn't allow setting the volume independently of the HDMI device.
If I haven't quoted one of your items, it means I agree with it, but...
> No screen edge tiling, spend more time managing application windows
Yes, but you can install Hammerspoon or similar.
> Inconsistent keyboard shortcuts, cmd and ctrl are used interchangeably for no reason (Biggest issue). Why do I need to do Ctrl+Tab to switch tabs but Cmd+T to create tabs? Why is History not Cmd/Ctrl+H in browsers? I need to memorize more shortcuts on MacOS for no reason, when it could very well just do it all with a single modifier key.
Control-T (and many control-foo combinations) is already used in terminals. It's a standard emacs binding to transpose characters.
> Maximizing an app takes you to a totally new desktop
Agree, this is horrible, so I use Hammerspoon.
> Ctrl + Alt +T doesn't open terminal, it's like oxygen to me.
You can set any bindings like this up with Hammerspoon.
> Can't set VSCode to open with Ctrl + Alt + C.
You can set any bindings like this up with Hammerspoon.
> Can't set custom global shortcuts at all, even windows can to some extent
You can, with Hammerspoon.
> Ctrl + C to cancel a command in terminal but Cmd + C to copy text in terminal. Ok, then why Cmd + T to open a new tab in terminal instead of ctrl?
This was addressed above. Likewise it would be really annoying if Ctrl + C was to copy text in a terminal instead of being interrupt.
> The shell startup time is too much on MacOS. I have to wait for a second for the shell to load before I start typing my commands. On Linux, pressing Ctrl+Alt+T and writing commands right away feels so good!
I don't have this problem, not sure why you do. I can open a terminal instantly and start writing instantly.
As for why I use macOS, I actually use it only on my laptops (personal and work) because I find non-mac laptops ergonomically dreadful in comparison (e.g. trackpad, etc.). I know this is subjective and I'm sure plenty of people feel the opposite. I use Linux (with i3) on my desktop.
> I don't think that's fair as developers spend ages customising everything anyway
I've got into development. I use KDE Neon now and really, the only thing I customize on a new install is left single and double click defaults in the OS, changing system performance mode to prefer performance over battery and install the IDE and Yakuake for a better terminal.
Other than that, the starting development for me is literally just installing the IDE, cloning the repository and opening the project file (and the IDE will pull in all the dependencies, linter settings automatically).
> I can open a terminal instantly and start writing instantly.
One of the best things about Yakuake I love is that it's literally that. Hit F12, multi-tab terminal slides down like the old quake console (yes, that's where the name came from).
Also, I get less flack from the IT department if I'm on something standard.
When things don’t work on Linux, the last thing I want to do is open the terminal.
- I’m used to a trackpad. I only had laptops growing up and never used a mouse; now, I can move the cursor very precisely on a trackpad, but I’m very inaccurate with a mouse. macOS’s trackpad support is miles beyond every other OS, in every aspect.
- I love the command key. There was a discussion just the other day on HN about how much more ergonomic it is to press modifiers with your thumbs; having to frequently reach over to control would be awkward to me. And having the command key for OS-level shortcuts be a different key than the control key for shortcuts in terminal apps is incredible, because I don’t have to memorize weird new shortcuts for basic functions like copy/paste/opening tabs in terminal apps. Perhaps I could swap the control and GUI keys on Linux, but I’d still have a lot of keyboard shortcuts to relearn, and I’d have to figure out what to do about terminal applications.
- I use a lot of music production software that’s Mac-only, so the best I could do is dual-boot, not leave macOS completely.
Still, last year it was time to upgrade my computer, and I was thinking about biting the bullet and making the switch because I wasn’t looking forward to buying a terrible butterfly keyboard touch bar Mac. But then the M1 MBP came out.
Maybe I’ll switch my workflows to Asahi Linux eventually, but it would take a lot of effort unless someone knows a good way to make these things less painful — especially the command keys.
I'm looking forward to Zrythm gaining more and more features and becoming an adequate alternative to mainstream DAWs.
It quickly becomes subpar once you have to use commercial applications, and can be a massive productivity drain after an update breaks some core feature of your hardware.
"Oh, neat. I applied a small patch and now I don't have audio."
For me it all comes down to the touchpad experience. Excellent on Macs, shitty on Linux laptops (and it's not just shitty touchpad hardware, but the combination of hardware and driver).
Most of your other points are just the regular differences between systems. If you're used to one, it's hard to get used to another (personally I like working on macOS more than Windows or Linux, and I need to switch regularly between all three).
For some people, we don't want to dicker with getting Linux to just work.
Yes, Docker on MacOS sucks and there are other tradeoffs. But the day to day management of not having to deal with drivers, sleep issues, etc. it's Mac over Linux for me.
I prefer linux dev because docker doesn't have to run in a VM and I'm closer to developing on the platform that I actually deploy on. That's it, those are the only two reasons.
1) I chose the route of entirely disabling nvidia and using the built-in intell graphics cards. This was probably a mistake in hindsight. I did it because I wanted to use less battery, but, so much stuff seemed to work sub-optimally.
2) For chrome in particular, I had to jump through a lot of hoops just to get it to render things properly and play videos. This had knock-on effects with chromium apps like slack and zoom. I never got Zoom the app working on Linux, but was forced instead to use the browser version.
3) I ended up having to install a non-stock kernel to get a lot of things working.
4) I remember running into issues with sleep not working. I don't even remember exactly what I had to do to fix, but, it's another example of something a MacOS user will never have to think about.
Anways, I prefer Linux over MacOS so much that I was willing to experience a ton of pain to use it, but I could not honestly recommend it to others at the time. I hope it's gotten better since a few years ago, but I would be very surprised to hear it has. Each new generation of laptops brings new custom chipsets, hardware, etc. with no formal Linux support.
Using Linux ~99.9% of times at both work and personal use for the last five years. 0.1% is Windows, because PowerPoint.
Using Pop OS (NVIDIA) for the last 2.5 years, and Linux Mint before that.
I have near zero issues, and spent contiguous months and years without any Linux Evenings [0]. Had 3-4 Linux Evenings in these 5 years.
I was about to say: "Why not just use LibreOffice Impress?" - but the truth is that it's still far away from qualifying as a Powerpoint replacement. LO Writer has really gotten its act together over the years, and now handles Word documents very well and is a worthy replacement - Impress not as much.
So, I urge you to spend a little time trying to open your PPT presentations in Impress, and if/when you see issues with it - complain about them! As an active LO user (https://events.documentfoundation.org/libreoffice-conference...) I feel the user base is not putting enough pressure on developers to put focus on Impress polish.
Also, donations help: https://www.libreoffice.org/donate/
... then maybe in a couple of years you could ditch PowerPoint and make your 99.9% into 100%.
I use PP at work and talks that I give occasionally (2-3 per year).
For other things, I just use Google Docs and Sheets. They are enough for my usecases.
As a challenge, last year, when I taught a class (as a volunteer)- I made all my slides with Impress. While it wasn’t painful, PP is miles better and smoother.
While there are many FOSS softwares where I regularly report issues, and donated, and even contributed to some, presentations is not that important to me to spend a lot of time at.
Oh, Impress is basically the same as PowerPoint, the differences are not significant. Here's a 11-minute video exemplifying the experience of creating a simple presentation from scratch:
https://www.youtube.com/watch?v=DDmEvjs4iBw
... frankly, I wouldn't even watch it, just pretend PowerPoint came out with a new version where they tweaked the UI a bit.
You missed this bit?
I did use Impress to make slides for 7 classes (>100 slides).
I will go with PP for now.
And, yes, using computers since 6, having one for myself since 10- I need not really explicitly learn UIs of programs intended for non-tech mass users.
I had all the issues you describe until 2010… Then my apple macbook that I used to run linux died, I bought a thinkpad and everything has worked since then.
> I never got Zoom the app working on Linux, but was forced instead to use the browser version.
I think that's a feature, since zoom had many spyware scandals.
>I think that's a feature, since zoom had many spyware scandals.
It's probably much easier to run on 100% Linux if you can dismiss away the inability to run common business apps as a "feature".
This is why I run a Linux VM on a Mac -- I do nearly all of my development work in the Linux VM, and am fully supported by our IT department on the OSX side to run our business apps.
I've been using linux for work since when I started working. I also do daily zoom calls.
I tend to dismiss comments from people that clearly didn't run linux in the past decade but still keep complaining about the same things they experienced when they last tried it for 2 days in university.
I have a laptop like this that I'm trying to run Fedora on instead of Windows but it's frustrating because the UI works best at 1.5x scale, which the DE (GNOME/KDE) handle ok, but third party apps are all over the place. It's difficult to goad even something as simple as Anki into doing the right thing at non-integer UI scales under Linux, whereas under Windows it works flawlessly.
> No screen edge tiling, spend more time managing application windows
> Maximizing an app takes you to a totally new desktop
Spectacle or any of several other programs solves these. It's the only major piece of customization I do on any new Mac. First thing I install after Homebrew. I almost never manage windows with the mouse. One might object, "but that's not default!" but then Mac also catches shit for not being customizable, yet here I am, customizing it, so IDK, doesn't seem like a real objection if the proposed alternative is Linux where customization tends to be even more fiddly than that. FWIW Spectacle's not given me one single problem or glitch in something like eight or nine years of use. Install, grant accessibility permissions to it, use its menu to set it to start at launch, never think about it again until I set up a new Mac. I think there are, separately, also ways to change the behavior of the maximize button (in fact I think I used to use such a customization, before I discovered Spectacle)
> Hidden dock doesn't appear unless I smash my cursor on the bottom edge. Dock Autohide is very finicky, ZorinOS' way is much more graceful and natural.
As a hidden dock/taskbar lover since Win95 I'm not sure what you mean. I've not noticed a difference between its behavior and every other I've set to hidden, which includes most consumer versions of Windows, a couple server versions of same, plus XFCE, Gnome (1+), and KDE (2+) on Linux. But I've also never heard of ZorinOS so maybe it's doing something unique (and maybe really nice!)
> No window closing animations, but has window opening animations. Feels really unpolished
I just tried "new window" in a couple programs to see if I could figure out what you mean—maybe there's an animation and I'd just become blind to it. Still don't see it, steps to reproduce?
> Single click on dock to maximize the app but clicking maximized app doesn't minimize it. Why?
You don't minimize or maximize apps, but windows. Clicking an app in the dock focuses it, un-minimizing (not sure what you mean by "maximizing", here?) its active window if necessary. Doesn't seem inconsistent to me, and is probably a lot less surprising/annoying than if clicking an app that had all its windows minimized didn't restore any of them, or if clicking an app (interpreted by the OS as "foreground this thing", basically) instead minimized its windows (which one? All of them? If some are minimized already, then WTF? Swap them?). I mean, if you click on a pinned app that's not running, it launches the app—would you expect that clicking the dock icon a second time terminate the app?
> Ctrl + Alt +T doesn't open terminal, it's like oxygen to me.
> Can't set VSCode to open with Ctrl + Alt + C.
I don't fiddle with more advanced ways to map shortcuts in macOS (I've done less customization of everything in general, as I get older) but I'm like 99% sure these are easy fixes. Maybe not something exposed in settings, but still, easy to fix. And it's so workflow- or preference-specific that I don't think making it a default would be reasonable. I just launch everything with search on every platform these days, personally, but that's a matter of taste.
> The shell startup time is too much on MacOS. I have to wait for a second for the shell to load before I start typing my commands. On Linux, pressing Ctrl+Alt+T and writing commands right away feels so good!
Default Terminal app's pretty damn fast. I only find this to be the case if I've got a really heavy zsh config or something like that.
> No package manager by default, brew is honestly very slow compared to Linux solutions.
Brew's my overall favorite package manager I've ever used, and I've used a ton. Admittedly, though, a lot of that is because I really like having a strict separation between what's necessary for my desktop to basically function, and what my package manager is allowed to monkey with. Tastes vary, I suppose. And it does have a package manager by default, you just don't like it (and neither do I)—it's the App Store.
-----
Anyway, the real killer feature of Mac devices is this:
When, in a professional setting, your Mac doesn't work, Tim Cook's an asshole.
When your Linux workstation doesn't work, you're an asshole.
That's not my judgement—it's what I've observed about how the two situations are perceived. If the Mac "doesn't work" less often (very much the case for me, but YMMV) that's just a bonus.
> brew doesn't support multiple users (really [0])
[0] https://www.codejam.info/2021/11/homebrew-multi-user.html
Why I use it: I just never had any good hardware for a linux laptop and I hate to tinker with configuration. There's always things that work so-so with linux laptops. Macbook gives good hardware, excellent system integration and I like the defaults out of the box. None of the things you listed have importance for me.
I would probably use a linux distro on a desktop machine though.
Linux is great to revive old macbooks that are no longer supported by Apple though. Linux mint on 10 years macbooks works great.
Wait, Linux allows you this?! How?
On top of that, the minor personal preferences of a workstations should really not be much of an issue in your professional career. It's not like you can tell all your customers, suppliers and colleagues to do things differently just because that's more comfortable for you. Nobody will pay for that.
The few people that do run whatever they want, however they want, have a much larger liability and much less support, but they are free to do so. In the event that friction is introduced due to the choices of anyone within the department, it's up to the non-standard one to address it. This gives everyone enough freedom but prevents unrealistic expectations.
I'm also very annoyed by most of the things you have listed, but there are two things that are a deciding factor in favor of mac for me:
1. In addition to webdev I sometimes need to do design, graphics, 3D art, and on linux most of the software just doesn't work. There's absolutely zero chance I'd be willing to cope with GIMP and Inkscape instead of using Photoshop and Affinity designer. There's a lot of other software (for screen recording and video editing, for instance), that works on mac and doesn't on linux.
2. On mac, things just work. On linux there's more customization, and open source software, but you pay for it dearly by having to spend hours (sometimes days) tinkering with configs and installing dependencies every time you're trying to get anything to work. I didn't mind that before, but at this point, I'm too old for this sh*t. I just want my laptop to work and help me do my work and make stuff, I don't want to cross my fingers and pray every time I need to install something I need to get anything done.
As a heavy terminal user this bothers me a lot..
Control+T and Control+C has very special use for the shell. I don't want a terminal "app" taking over those bindings for a misc feature.
I don't get why the Meta key is rarely used in Linux desktops.
These machines have been normal Dell Desktops and Laptops. Normal LTS versions of Ubuntu.
It has happened enough that I don’t trust Linux as a desktop system for whatever computer I’m using. I can absolutely use it, I’m comfortable on the command line.
I want Linux to be reliable for me as a desktop system. It’s the dream of truest owning your computing. But I haven’t had that experience yet.
MacOS is certainly not perfect, but I’m very happy with it, and it feels reliable to me.
The simple answer is both Apple hardware and software support is well defined and is the gold standard.
Linux Desktop software support on the other hand is ill defined and even if the hardware claims to have support, it somewhat worse than macOS or even Windows thanks to the inconsistency of the Linux desktop stack letting it down.
This has been an eternal problem with the Linux desktop, and at this point you might as well use Windows with WSL2, since that is the best 'Linux Desktop'.
Indeed, I've started using that as a way to see how flexible companies are. "Can I use a Linux laptop?". Some are like "sure, as long as you get your work done!". Those are better places to work, IMO.
Some companies are just "that's the standard and what everyone uses and that's just the way things are" and they aren't great places to work.
Non-rhetorically, Is this no longer even a consideration?
Logic like that just sends my mind reeling. I don't really know what software development looks like anymore, but sadly the build/deploy homogeneity is lost on a new generation of developers.
Obviously I write Windows software on Windows, there's no realistic alternative.
For software that runs on all of Windows/Mac/Linux, I...still generally use Windows, because Visual Studio is really good for C++ and C#.
I do like macOS for embedded development, though.