Return of the Mac (2005)
paulgraham.com
paulgraham.com
I often dock between standard-DPI displays and portable mode (with the high-DPI/'retina' display.) I first noticed that Windows doesn't correctly handle DPI switching with window borders, Explorer, and notifications back in 2019 (the old 2x scaling level remains when switching from portable to docked), and filed a feedback with the built-in app on Windows. I worked around this by killing dwm.exe and explorer.exe every time I docked my Surface. This issue was still present earlier this year, and deciding I had enough of dealing with all these little Windows 'quirks', wherever they arose, I switched back to my old Mac.
It turns out that SIP and Gatekeeper aren't nearly as much of a problem as I was led to believe, neither of these features have hampered me once. The Big Sur interface changes, whilst I thought I'd never get used to them, have actually grown on me. Since switching back, I've discovered a lot of quality native apps that simply have no analog on Windows–OmniFocus stands out here. And as always, Homebrew still exists and works just as well as it always has for most of my *nix related tasks.
Hearing about the M1 performance improvements, I can see myself staying on Mac for quite some time yet–I'll upgrade to an M1 MacBook Air once this 2015 MBP (six years old!) kicks the bucket.
Edit: For some context, I'm mainly a .NET developer. .NET Core/5 is a game-changer for cross-platform and development is first class on really any system nowadays. I've settled on JetBrains Rider for my IDE and find myself generally happier than I was with VS on Windows.
Well, that's the whole thing. HiDPI in and of itself works well. I use it with a 24" UHD monitor and I absolutely love the setup.
But the main issue with Linux, at least with X11, is that it doesn't handle multiple displays with different DPI settings.
As you noted, QT seems to work fine, as do some other toolkits that have dynamic scaling according to the monitor size. Alacritty does this too, for example (don't know what toolkit they use, though).
But GTK in particular is terrible. Yes, you can configure it to use scaling, in which case it works well, IF you don't need fractional scaling (though recent versions of Gnome seem to support it somehow).
But now, if you're going to use, say, a HiDPI laptop with a "regular", larger external monitor, you're gonna have a bad time. If you enable scaling, the widgets will be huge on the LoDPI display. If you disable it, widgets will be teeny tiny on the HiDPI one.
The issue is really with window managers and toolkits. What needs to happen is that window managers ask the applications (the top level windows really) to scale themselves -this can be done not just for DPI purposes- and then the applications should apply that scaling.
(applications should expose that they can support this - like they expose that they support handling a 'close window' event - so that compositing window managers can do it themselves for applications that do not support it, which is also why this needs to go through the window manager)
Qt can do this but AFAIK window managers do not do this because there isn't any standard events for that - i remember an email about this exact topic when i took a look at the Xorg mailing list for WMs some time ago, but it didn't seem to be going anywhere (in that it barely had any replies).
So it really is about standardizing how it is to be done. I think the main reason it isn't done is that such setups are comparably rare (i mean hidpi displays themselves are very rare - if you check any desktop resolution stats they often barely are a blip - and having both a hidpi display and a regular dpi one is even less common than that) so developers aren't that interested in implementing such a thing.
One way it could be done however is also pushing the idea that this isn't just for multimonitor setups: as i wrote above, you can use that for generic scaling, which is useful even for single monitor regular dpi setups (if anything it can be very useful for low resolution setups - like 1366x768 and similar which are way more common than hidpi - when faced with applications with a lot of padding, etc).
And this is really not that dissimilar under Windows: nowadays you have a lot of different GUI toolkits and applications still need to "opt-in" and explicitly support stuff like scaling, so you have a lot of applications that do not do that.
On Windows, Win32 doesn't do that by default because it would break backwards compatibility from those Windows 95 binaries being run on a Windows 10 2021 edition, so it must be a conscious decision to enable it.
UWP and WinUI work just fine.
The issue was elsewhere - it provided standardized wire protocol and you could not break it. It could extend it, but applications not aware of the extension would be not able to benefit. Windows and Mac on the other hand kept the protocol proprietary and you had to use supplied libraries, you could not talk to the display server directly. So Microsoft and Apple could update these libraries; on Linux, there was no such option, all the apps using wire protocol instead of client libraries would be left out in the dark.
It is issue with X11. If you have Wordperfect binary from 1999, it still has to work; it does not matter that RandR provides information, old clients will not ask for it and without it, they will be broken.
That's why Xwayland does upscaling by itself.
> mean hidpi displays themselves are very rare - if you check any desktop resolution stats they often barely are a blip - and having both a hidpi display and a regular dpi one is even less common than that
Cause and effect. They are rare, because using them sucks, making them even rarer. On systems, where they do not suck, they are not that rare. This attitude makes entire platform worse off.
This is why i wrote "so that compositing window managers can do it themselves for applications that do not support it, which is also why this needs to go through the window manager". You do not need X11 support for that, functionality that exist can be used right now to do it - assuming the applications and WMs cooperate to specify the necessary attributes and events, of course.
> That's why Xwayland does upscaling by itself.
You can also do this with a compositor for applications that do not support scaling themselves (which would be the default state - again this isn't any different than the 'supports close event' flag that already exists for decades now). Without a compositor you're out of luck (for the most part)...
...However!
Keith Packard worked on server-side scaling some time ago [0] (not sure if it was merged with mainline) which would allow this to be done even without a compositor (well, kinda, technically the server does the compositing just for the scaled windows). So even without a regular desktop compositor this should still be implementable, assuming that functionality was (or will be) merged in mainline Xorg. But note that this is only for the case where one wants to run applications that do not support scaling and have hidpi scaling and also not using a compositor. The rest can already be implemented with Xorg as-is.
>X11 provides the necessary information via RandR to perform per-monitor scaling
This is not true. If it were true, it would be significantly easier to get DPI scaling to work on X11 and XWayland already. If you're referring to the physical size measurements, there are numerous problems with those, and they should never be used to do DPI scaling. If you're developing for Wayland, you should just ignore those measurements and use the scale provided by the server. If you mean that applications can draw themselves at arbitrary scales, they could always do that, without even bothering with RandR, but that will break down when you try to handle the compositing cases, e.g. stretching a window across monitors and expecting the display/input coordinates to scale correctly. So regardless of what you're trying to get the apps to do, some more work needs to be done there.
Even if those problems were fixed, DPI scaling would still not work without more changes in the server. The major reason why it can't even work is because of input coordinate scaling -- the server needs to be able to scale coordinates based on a factor provided by the client, and RandR does not provide this, and it doesn't make sense to add it to RandR either. If you want to standardize how this is done, the best way would just be to copy the method used by Wayland back into the X server. Part of it might be merging those patches by Keith that you linked, part of it might be somebody finishing this MR: https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests...
I don't know about that, though the only person i personally know with a HiDPI display uses X without a compositor (they just use a theme with everything being big).
> If there was interest in those, at the very least somebody would have to adapt them
These are only part of the puzzle, they are not really that useful by themselves without the rest of what i wrote, which would actually be the more involved problem. Having scaling without a compositor is more of a "cherry on top" than anything else.
> This is not true. If it were true, it would be significantly easier to get DPI scaling to work on X11 and XWayland already.
I think mixing DPI and scaling is the root of the problem here. Scaling is something independent from DPI settings, though DPI settings can be used for setting up the defaults.
However scaling is useful regardless of DPI.
> If you're referring to the physical size measurements, there are numerous problems with those, and they should never be used to do DPI scaling.
Why not? They can be used to calculate defaults. I've heard that by default the official X server misreports DPI, but many distributions apply patches to fix that - not sure why the X server does this but it is something to be fixed. Personally i never had issues with how the X server reported my monitors' DPI and i've used a bunch of different monitors over the decades.
Regardless this is something that can be fixed anyway - after all if Wayland can get the proper information, so can X11.
> If you mean that applications can draw themselves at arbitrary scales, they could always do that, without even bothering with RandR, but that will break down when you try to handle the compositing cases, e.g. stretching a window across monitors and expecting the display/input coordinates to scale correctly. So regardless of what you're trying to get the apps to do, some more work needs to be done there.
The idea is for RandR to be used by the window manager as an initial/default scaling setup for windows per monitor. The users should be able to alter that of course and even alter per-window (i mean toplevel window here) scaling (via their window manager).
> Even if those problems were fixed, DPI scaling would still not work without more changes in the server. The major reason why it can't even work is because of input coordinate scaling -- the server needs to be able to scale coordinates based on a factor provided by the client, and RandR does not provide this, and it doesn't make sense to add it to RandR either.
IIRC this was actually fixed some time ago to allow scaling via compositors. Outside compositors we're back to Keith's patches. But this is also an issue for applications that do not support scaling.
Basically what i mean is this, to summarize it:
* Applications can either support or not scaling. If they do support scaling they set some attribute to their toplevel windows to indicate that.
* The Window Manager sends events to toplevel windows that support scaling to setup their scaling whenever the scaling changes (the window is dragged to another monitor, the user requests a different scale level via an icon menu or shortcut or whatever). If a window doesn't support scaling (note that an application can have windows that both support and not support scaling, not that it matters much but it is a good idea to avoid associating application support with window support) it gets scaled by either the window manager (if it is a compositor), a dedicated compositor (some compositors can work with other window managers) or the server (with Keith's patches).
There could also be support for toolkits to do the scaling themselves if the window manager doesn't support scaling (e.g. window managers that support scaling can use an attribute in the root window to indicate that support), but that is more complex and may not be really necessary.
Note that only the case where an X application doesn't support scaling and a compositor is not running is where the current server functionality isn't adequate. Everything else should already be there, but it needs support from toolkits (to support the relevant events and of course scaling their contents) and window managers (to implement scaling events). Perhaps RandR's DPI info isn't reliable (though that hasn't been my experience) but that can be fixed, the harder bits are getting toolkits and window managers to support that stuff.
The physical measurements could be used to inaccurately guess defaults, some Wayland servers might do that, but it's not preferred. The X server doesn't "misreport" DPI in the sense that it's purposefully sending a wrong value, there's a process that it does (I may not be remembering this exactly) where it tries to read from the EDID, which could be wrong values. If the values are there but wrong those will just get quietly passed through, if those are zero then it then tries to fill in measurements based on a default DPI. Random X clients with access to RandR can also change the measurements stored in the server for whatever reason -- basically there is no possible way for this value to always be correct if you just want a number that tells you what DPI to target.
You're right this could be fixed, just like every bug could technically be fixed if given enough attention, but somebody needs to take the time to backport the Wayland method to X, which I don't have high hopes for it happening any time soon. The main thing you're missing in the server, as I said, is scaling of input coordinates. The compositor or the toolkit can't do this, it has to happen in the server, because those events are sent directly from the server to the client. It's probably a better approach to get that working, and then put a prop on the root window, and then hack kwin/mutter/whatever to use that, but I don't think anyone has tried to implement it that way yet.
Do you have a link/cite for this? I couldn’t find easily somewhere summarizing pixel density stats.
“Desktop resolution stats” is not the same thing. All the retina displays have at least a 2x pixel ratio so these tables on a cursory Google search are clearly lumping 13 inch MacBook pros into the 1280x800 bucket for instance.
You got a reference to something that clearly is accounting for pixel ratio?
https://data.firefox.com/dashboard/hardware
> these tables on a cursory Google search are clearly lumping 13 inch MacBook pros into the 1280x800 bucket for instance.
How can you tell that? Even JS-only trackers can use Window.devicePixelRatio to get the real resolution, if needed.
If you use 2x scaling (or other integer scaling), everything is fine. If you need fractional scaling, things break down pretty quickly, at least on GNOME.
Once you use fractional scaling (e.g. 1.5), GTK applications will scale correctly, but are slightly slower and consume more mattery. However, all XWayland applications are unusably blurry.
Unfortunately, fractional scaling is really needed on 14" 1080p laptops or 4k e.g. 27" screens. With 1x scaling everything is tiny and with 2x scaling gigantic.
The only workaround that worked ok for me was using 1x scaling and using font scaling in GNOME. Many controls and icons are tiny that way, but at least text is readable and not blurry. Of course, this only works up to some extend and when both screens need the same amount of scaling (since font scaling cannot be configured per screen).
But your comment makes me hesitate to buy a HiDPI monitor!
[0]: https://arstechnica.com/gadgets/2009/08/mac-os-x-10-6/21/#re...
In fact you can speed it up slightly by making sure the display resolution is exactly “half” the actual resolution so to prevent MacOS from scaling 8x internally first.
I have had major issues with trying to replace the battery. Beware of third-party replacements, which idle at 12V. The original battery idles at 2.2V and "wakes up". A voltage spike when waking from battery killed my logic board, and 3 professionals have failed to repair it so far. I've spent over NZ$1900 on 5 replacement batteries to try to get something that works, since September 2020. I just want a laptop that I can use on the bus, with a removable SSD so I won't lose my data when it breaks, and iTunes so I can sync my iPod and iPhone.
4TB Sabrent Rocket M.2 SSDs with adaptors don't come cheap. Getting that much storage soldered onto the logic board is even more expensive.
This feels like a bit of a false dichotomy, WSL isn't the only alternative.
We are so very far from limited to windows vs mac for desktop today, it's easier than ever to use Linux or even a BSD as a daily driver on a PC laptop. Even the article in 2005 noted hackers switching to intel boxes (not mac intel boxes) for FreeBSD and Linux at the time.
For a 2009 MBP it was a nice experience trying out FreeBSD and various linux distros before settling on Debian. The only stumbling block on that machine was the macEFI, which there were eventually plenty of solutions for - I hear the later machines are a bit of a nightmare to run anything other than MacOS though.
Linux is the standard OS at my work. We use it on servers, so it makes sense to use it on the desktop too for maximum dev familiarity and compatibility, since it now works well there... it's even started to be used by some of the non-devs to reduce windows/mac update fatigue and general performance issues even though they only need office apps... I'm at a small company but I know of other large companies with big IT depts applying the "locked down OS image" approach to Linux for desktop too.
I find the concept of "windows" as the only safe OS image IT depts are willing to use, as fairly antiquated. Much like IE used to be the only browser you were allowed to use in many big old corps and gov agencies for "security" reasons.
Although this is an aside, the original context of the article was only "hackers" machines, and whatever your interpretation of that is, it probably doesn't involve fortune 500s.
I am always surprised by these things. I mean, even trying to use something widely-used (nowadays) as Zoom, basically gives me two options (on a HiDPI screen):
- Use X11, but when I share a window and use drawing tools, whatever I draw is displaced by a seemingly constant offset. It's caused by scaling for HiDPI, because if I disable scaling, things work.
- Use Wayland, but I can only share the whole screen. Drawing works, but the overlay is incredibly flaky and often incorrectly registers clicks.
Besides that on both Wayland and X11, doing video call makes the fans blow at full speed and quickly drains the battery when a laptop is not hooked up (probably no hardware acceleration of video encoding/decoding). Oh, and I probably want to use a wired headphone, because using a BlueTooth headsets regularly dropout.
Zoom is just a single example, but there are just so many paper cuts if you want to work outside a solo developer context.
(Windows has a lot of issues as well, but at least basic workflows generally work.)
I haven't used HiDPI monitors on linux yet, being able to use linux easily is more important to me for dev, it's a known area of weakness, and I just don't need the extra pixels for dev so it's easier to just avoid it. If you are doing graphics linux is probably not the best OS for the job tbh, and that's a shame but just the way it is currently.
> Zoom is just a single example, but there are just so many paper cuts if you want to work outside a solo developer context.
I suppose it depends upon how much crap software the workplace forces upon their workers, I understand that it's often mandatory to use a bunch of proprietary software for various types of communication and management stuff.. i.e stuff that's not central to actual dev work. If you can get away with a browser, then it's not bad at all... and when there is an option for a native version, use the browser, because usually it's some horrific electron thing that's even worse.
I strongly disagree. Zoom on macOS and macOS works very well (I currently use it for a remote course). My experiences have been far far better than Teams, Google Meet, Skype, Jitsi etc. Most of which I have had to use for work or private. My wife is hoping that her employer will relent sometime and offer Zoom, because she prefers it so much over Google Meet, whatever Blackboard uses, etc.
It could be that your experience is colored by the Zoom web interface, which I only used once on Linux and it was terrible then.
I haven't used HiDPI monitors on linux yet, being able to use linux easily is more important to me for dev, it's a known area of weakness, and I just don't need the extra pixels for dev so it's easier to just avoid it.
For me it's one of those things that can't be unseen. I have happily used lo-DPI screens for decades, but since I can't really stand lo-DPI screens anymore since I had my first retina MacBook. Even though I am doing development 80% of the time, I want my fonts to be crisp.
If you can get away with a browser, then it's not bad at all... and when there is an option for a native version, use the browser, because usually it's some horrific electron thing that's even worse.
I guess that's true on Linux. Unfortunately, very few web apps beat native applications like OmniGraffle, the Affinity Suite, or even PowerPoint.
Also which video conferencing app "is the worst" seems to be pretty subjective, but tbh they are all pretty crappy and replaceable, i'm not really sure what this has to do with OS choice.
For developers that only care about POSIX CLI and daemons, others from us actually don't care about it and do graphics and GUI programming, where the screens and GPGPUs play a big role.
Yes, it is central to our actual dev work.
For example, if you want a notification icon to always be shown, you have to open a menu, open another menu, scroll to find the one you want, open an option list, and finally hit "show icon and notifications". Why can't you just right click an icon and hit "show icon and notifications"? Because Windows doesn't give a shit about you.
That was on a MBP like 2015 or so. The error message was not helpful at all, I had to ask someone with experience or I would still be installing ruby to this day.
(Given I don't remember anything else)
Google actually autocompleted “in the terminal” when I started typing out the question and this was answered by the first link.
I have tons of development environment software installed and I’ve never opened the Xcode GUI.
Good they fixed it. Still made a bad impression on me back then coming from using Linux for over a decade.
What was absolutely insane was not replicating the functionality into the new control panel setup leading to power users feeling dumb because they can’t find network settings under network settings.
For your specific notification icon issue, I thought you can just drag the icon from the pop up tray to the main system tray to keep it always visible?
Or, you know, just drag and drop it into the always shown area.
That’s the thing with some people and Apple; I generally moan whenever Apple changes their UI substantially (the change to the “flat” iOS comes to mind first), but soon I come to wonder how I ever liked anything else. :)
The biggest change for me was the switch to zsh which ended up in me changing my default shell everywhere else.
I love Linux, and I love the PIs, but it can’t see any reason to stick with the Ubuntu desktop. When a pro level M1 or M2 iMac is released, I will be moving back.
Then don't. Linux has hundreds of alternative desktops that you can install and try out in minutes. KDE, i3, Awesome, bspwm, Openbox and many many more are all at your fingertips.
It’s all frankly half baked and clunky, and the time investment in configuration is insane.
Yes, you can find individual features that are better than MacOS spread across them, but you can’t get good design, aesthetics and features in any single one of them.
You can certainly get by with it, but why would I want to just ‘get by’?
You don’t have to on MacOS.
> or "get by" without 32-bit libraries
Why would you want 32 bit libraries? 32-bit support was also ditched in popular Linux distributions (Ubuntu, Fedora, Red Hat) in the same year as MacOS.
> or "get by" without a functional graphics API?
To claim there is no functional graphics API on MacOS is utterly absurd.
Apple stuff is consistently good. It's not perfect but there's not really anything that kicks you in the balls every day to the point it makes you want to burn all your technology and live in the woods. About 5 minutes with any recently Gnome release on a Linux laptop makes me want to do that.
Linux is always 50% done. That last 30% to get it to Apple's 80% done is boring so they just rewrite everything again or fork some new clothes for the emperor.
The worst experience is windows. There's several layers and each one gets to about 33% done and is replaced with a new one. All the old layers sit there like rings in a tree, occasionally having to be gouged out to fix an obscure issue.
My approach with Linux has been to not even try to make the Linux desktop try and compete with macOS or even Windows. Instead, I really like the "OS as IDE" approach, which has caused me to settle into using most of the Suckless stuff -- dwm, st, dmenu. Live in your terminal and keep each application's function and jurisdiction as small as possible, and Linux is really great. For programming. Only.
On Linux, I just have a script that I run that sets everything up the way I want it. I'll admit, it took a few hours to make (and has received a few updates over the years), but it feels much closer to that "100%" mark than a fully-customized Mac to me. Plus, I'd rather not rely on the whims of yet another "move fast and break things" company jockeying to take over more and more of my digital life. I'm good here.
They can also both be turned off! Gatekeeper in 30 seconds and SIP in less than five minutes. I legitimately understand why people get worked up about optional features.
There are too many things in macOS which can't be fixed. You can't even change the color of your mouse pointer if you want to.
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/ResourcesI had a similar feeling when given a new windows laptop in 2020 to work with that was supposedly better spec'ed than my late 2013 macbook 15". The problem has been windows and the lack of finding flow in it's OS. I've been trying to document workflows & apps here for the past year to see if alternatives are emerging: https://docs.google.com/spreadsheets/d/148zTJUwfVv9xfDcpSoH3... . For me it's not so much the development environment but whether I can quickly deal with administrivia tasks (organizing files, copying things from one form to another, etc.). I'm surprised windows 11 still lacks miller columns: https://en.wikipedia.org/wiki/Miller_columns
My concern about the apple platform going forward isn't so much about the technical, but the material - my 2013-era macbook died recently and found the fact that I could remove the ssd and plug it into a similarly old mac to still be a savior , despite having multiple backups. It's driven me to consider installing linux on an intel windows tablet over buying an M1 macbook - I'm getting leary of both the lack of repairability and really wanting a tablet on stand + detached keyboard/trackpad for sake of ergonomics.
Eventually I used my Linux desktop mostly and later my Linux laptop went away in favor of a Chromebook, which supported their beta Linux environment. It wasn't perfect, but sleep/suspend worked and I could do most "Linux" things I needed to do. I also started using a Macbook Pro at work again after being off of OS X for 5 or 6 years and it was just a reminder to me that a Unix-like desktop that didn't need as much fiddling around existed(of course some of you may point out that the fiddling is more restricted on OS X, which is a fair point as well), but the thermal issues of the later Intel Macbooks kept me from buying one for personal use.
So fast forward to last year. I was moving and some other stuff was in flux and my already long in the tooth desktop needed to be put away for a while and while my Chromebook was useful, I didn't like relying on it as a primary machine. Since I didn't play too many demanding games anymore I thought this would be a good chance to kill two birds with one stone and get a laptop that capable playing the meager game library I had, which meant mostly better integrated graphics rather than discrete, and since it was before Intel Xe came out, a Ryzen 4000 series CPU seemed like the obvious choice with a GPU that was roughly GTX 1050ti class, just enough for me. Sadly it appears that AMD pushed forward with some new kind of "hybrid sleep" or what ever they're calling it and wast supported by Linux very well at all(I'm not sure of the exact state at the time of writing this, there was some talk of support landing in 5.13, but I'm not sure of that happened or if it got pushed out to 5.14). So I did the Windows thing full time for the first time in a very long time with WSL, which I actually grew to like somewhat, but I still wasn't happy with the laptop.
By the end of the end of 2020, Macbooks with the M1 were in the wild and the results seemed very good. And since I was still using a Macbook Pro for work during this time, I still had mostly positive feelings about macOS. It had its peculiarities, but I liked it better than Windows, and required less effort to keep running than Linux, I just didn't like the jet engine that my Macbook turned into when ever I tried to do anything remotely demanding. In fact I've always hated fans, and fan noise was a one of motivating factors in dumping my desktop. My "grail" machine has been a fast laptop with no fans or other moving parts. SSDs have been a thing for a while, but we've not had a rally solid performing fanless machine until the M1 Macbook Air(in the 21st century, I'm not counting the fast for their time fanless machines of the 80s and early 90's). So I felt almost obligated get that machine and that's what I did and haven't regretted it for a second(though ask me again in 4 or 5 years if/when Apple starts dropping support for these first gen ARM devices). It can silently keep up with any work I would do compared to my work 16" Macbook Pro which runs much hotter and louder and so far the M1 Air has been able to do what I've needed it to do.
"If you want to know what ordinary people will be doing with computers in ten years, just walk around the CS department at a good university. Whatever they're doing, you'll be doing. "
Lots of 3D. Face swapping / face filters. Photo / Video retouching. Background Tracking, face tracking, motion capture. 3D scanning (with photos).
It is quite interesting that Weta / ILM were at the forefront of what happens in general computing.
This aged well :-)
And to be honest, I was never very impressed with the sound quality of B&O way back in the 1970s, when they were seen to be the height of sophistication.
The newer Bose 700 makes too many compromises to look nice IMO.
My friend bought one of the last G3 iBooks. It ran Mac OS X 10.2 that was arguably the first “stable” release of Mac OS X.
I had such a great experience I bought a 15” October 2005 PowerBook as my first Apple laptop.
It was under performant compared to Intel offerings of the day but I badly wanted Mac OS X. I was thrilled when I could buy a 2007 MacBook Pro to replace it with a Core2Duo processor.
Now, the M1 MacBook Air is so unbelievably fast and power efficient.
I used both MS Word, Excel and Adobe Framemaker on Windows in the 1990s (much less 2005) with very few problems - I was really impressed at how well such a complex piece of software as Frame ran on Windows, and I don't think it now supported on the Mac.
Now it's a bit better with Swift or web applications using Electron.
Then Electron sent many of us back to vi in search of lost CPU cycles.
-- A JavaScript Dev
https://en.wikipedia.org/wiki/Turbo_Vision
https://dl.acm.org/doi/10.1145/800225.806843
vi might have visual on the name, but only for those in the Bell Labs silo
Objective-C was embraced by the developer community in such a way that they quickly deprecated Java Bridge and eventually got rid of Java development costs altogether.
I also remember having to wait a long time whenever the JVM was starting. It was annoying when a website did contain a Java applet because my web browser would be stuck until the JVM was ready.
XCode also did Java back then.
https://developer.apple.com/library/archive/documentation/Co...
https://developer.apple.com/library/archive/documentation/Co...
https://developer.apple.com/library/archive/documentation/Ja...
Linux userland tools in the last 10 years are incredible; it’s not easy to draw a direct line between that and the Mac, but I’m relatively certain there is correlation.
I’m talking about castnow, youtube-dl and a whole slew of other software which integrates proprietary things. In the 00s things like those were almost all running exclusive to windows.
I'd say it was the other way around, and it also bleeds into Windows. For example (of course): git.
Yet, still waiting for a Git GUI for Linux.
It's a lot easier to justify buying an Apple product with an excuse than to realize that relentless advertising is what caused people to give Apple money.
There was a clear gap in the market for a unix system that was up and running with minimal fuss, apple capitalised (accidentally happened upon) this.
They by definition market their product and win sales. Sales funded Linux and a lot of OSS beyond what hobbyists could possibly have done, an inconvenient truth.
People who want to support their own installation of Linux or FreeBSD do so without considering a commercial OS and a few of them constantly shitpost about how anyone could possibly not make the same choice as they do.
I was 14 years old in 2005 and knew nothing about programming, but was able to get Linux installed in a few minutes.
There is a real reason, but the part of the brain that makes the decision is different than the speech part of the brain.
The marketing company won.
This is a Major red flag.
Speaking of cheap plastic. "Cheap keyboard" ring a bell?
After my freshman year of college ended, in the summer of 2006 I replaced my desktop (which was dual-booting Windows XP and FreeBSD) with a Core Duo MacBook, which was just released two months before. It felt great using a Unix machine where I didn't have to worry about driver support, and where I can run Unix applications and various proprietary software packages such as Microsoft Office without dual-booting, emulation, or virtualization.
I've stayed a Mac user since, though lately I'm in the slow transition of switching away; I just replaced my 2013 MacBook Air with a Microsoft Surface Pro 7 running Windows 10 (I love WSL!), and I plan to replace my 2013 Mac Pro with a Ryzen 7 or 9 build sometime in 2022 or 2023, which will most likely run FreeBSD. In the interim I've installed many Linux and FreeBSD systems for work and for play.
More just an anecdotal opinion but to me the iPad and iPhone (the ecosystem effect) and Apple's marketing are really what gave them the leg up on the personal computing level. I still remember those "I'm a PC, I'm a Mac" ads pitching the PC as the uncool choice. That's a powerful message to people and they must of thought it would work otherwise they wouldn't of run that ad - if not to dev's the general public. Individuals were buying them locally as home machines way before companies really allowed them for work because of this marketing and the easy integration to their other consumer devices - at least that's what I saw locally here (not US).
If it never got popular on the consumer end and I couldn't manage my office docs and such on it, while I may use it at home, many workplaces and therefore the mainstream dev may of never adopted the Mac. What I use at "home", is what I want to use when I come into the workplace. There needs to be a critical mass before most workplaces (where many dev's work) to adopt it and therefore develop an ecosystem around it (e.g. your favourite IDE's, tool chains, etc)
This accident also allows for what-ifs, had Apple been successful with Copland or bought BeOS instead, none of which UNIX friendly.
Most stuff we produce are *nix compatible. I’m no great hacker but everything I wrote to make my life easier is shell based.
I think Windows with ASL will have the same impact, with more and more *nix compatible software being produced.
One different example may is the gnome shell desktop. Many of us who use it have basically overcome the win95 approach of desktop design. There is as far as I know no equivalent on windows or Mac. And a port would not be possible as you can't replace their window managers.
Then there is the whole Linux standard toolset, that yes works on windows these days, but obviously feels very foreign and doesn't integrate well to the system.
It's not only a matter of porting software when some things are so fundamentally different
Because it’s a lot more work, and because it’s next to impossible to create a great cross platform app with a native feeling UI.
And who do we have to thank for that? Perhaps there's some business out there that made a chocolate-themed UI toolkit that was notoriously proprietary and unworkable, so much so that it drove the industry into a software drought that only let up when x86 was fully standardized?
Maybe I'm just spitballing here.
I might’ve been able to fudge Figma to do what I needed, but even that wouldn’t have been ideal, with how it’s designed for collaborative prototyping more than a generic digital vector graphics editor. Aside from that, I don’t like using Figma simply because they don’t publish specs for their file format and try to lock you in (as opposed to Sketch, which uses a publicly documented file format that has plenty of converters).
Cornerstone (macOS Subversion client) is atrocious, God help you if you created a sandbox in the wrong place, deleting it could wipe out your repository. Tortoise (Windows) is so much better.
As a Windows developer recently porting my code to macOS, I am underwhelmed. I expected to be blown away.
I switched to a m1 mac last year after nearly 4 decades of low level x86 work, incl. drivers, rootkits, and the like. These days I code in higher level languages such as rust or, ehm, python, and the mac offers a fine experience. Ironically, what pushed me over the fence was the pandemics; most of the video conferencing stuff causes windows laptops to sound like vacuum cleaners.
Think about how many Mac enthusiast podcasts, websites, and blogs there are. Windows should have many more of these, but they don't. And Linux enthusiast sites are very technical and low level. There's no writing about being a Linux user that isn't also about being a developer.
Where are there no companies like the Omni Goup, Cultured Code, and Panic turning out great applications for Windows? In theory, the market is an order of magnitude bigger yet the reality seems to be that there are fewer Windows users willing to pay for great software. Is it because Windows users are not on that platform by choice?
Desktop Linux users are definitely there by choice, yet they too seem to be unwilling to pay for software.
There are such companies! For video games. Video games and B2B/business-productivity software is where the money is on Windows. Your buyers are PC gamers or businesses.
There are also lots of unsophisticated low-needs users who are on Windows at home because it's what was cheap at the big box store, and/or they learned in the earlier PC days to shop based on spec numbers back when those mattered much for basic home users, and the Apple section of the store doesn't look very interesting if you shop that way.
AFAI can tell (from watching relatives fitting this profile, which is... all of my relatives, plus many relatives of friends) the only way to make money off them, since the death of actual boxed software in stores (which they did used to sometimes buy!), is to be Microsoft and use Win10 to spam them until they buy (maybe not even realizing what's happening or, once they've paid, what they bought or what it's for or how to ever use it—yes, really) or be a straight-up malware scammer type. The problem with those users, if you want to sell them software, is they basically just want/need a browser, MS Office, and perhaps something to play the unorganized folder of pirated MP3s of 50s-90s music the unsophisticated-user side of the family has been passing around for 20 years. They may want something to organize photos and such, but they'll never figure out how to use it right even if you show them how, unless it's high-lock-in, very automatic ("AI" tagging and such), and probably cloud-based (so, likely some Web crap, not desktop software, oh and because advertising and hoovering up user data to train AI is an endless money spigot if and only if you already have massive scale you'll likely be competing on price with "free", so, have fun with that).
> Desktop Linux users are definitely there by choice, yet they too seem to be unwilling to pay for software.
Developing for Linux means receiving support load for all its desktop brokenness (driver problems [mostly video drivers]; issues with any basic hardware+software systems your software relies on to work well for all but the most basic operation, like audio for example; xorg/wayland/DE instability) and every crazy configuration out there.
Sure you can say "fuck off, we support exactly and only [a couple major desktop distros] with the default config that you get if you keep clicking OK on the OS installer and then not changing anything, and only on [list of hardware], report on any other set-up and you will be ignored" but you're already on such a tiny platform that you can hardly afford to annoy/turn-off/generate-vocal-anti-fans-among users. So instead... you develop for literally anything else, or maybe toss out some electron garbage to Linux as an afterthought.
Linux is expensive per-user and doesn't bring you that many users to begin with. Plus, yeah, there may be less willingness to pay for software.
It just seems strange that with a billion desktops, there aren't a few million who would buy software like OmniFocus or Things if it existed on Windows.
And yeah, desktop Linux is messy.
I also have a girlfriend in Taiwan, and met her while working there for 4 years, at a job partly made possible by PTT BBS (a very old Telnet web forum). I'm so grateful for VoIP, fast Internet connections, and being able to chat to her every night (at 5:20 of course, which sounds like 我愛你 in Mandarin).
"If you want to attract hackers to write software that will sell your hardware, you have to make it something that they themselves use. It's not enough to make it 'open.' It has to be open and good."
Are there any such platforms nowadays, that aren't restricted by a walled garden? (says he, typing this on a 2014 MacBook Pro running 10.13, while charging his iPhone 4S running jailbroken iOS 6.1.3).
Huh? The 零-你 pun relies on not making a sound distinction which does exist in Mandarin. They sound similar in other Chinese languages, not Mandarin.
https://bangordailynews.com/2002/06/11/news/during-visit-to-...
Then I moved to a new middle school that would bring in carts of iBooks for us to do work on. Some things were weird (lack of a right click for one), but other things just felt incredibly natural and the design didn’t scream “soulless device for office drones.”
When my parents got me my first computer the next year, it was a Mac, and I’ve stuck with Apple for 17 years since then.
One of our developers had used mac since the pre-Intel days. He used to develop mostly mac native apps. In recent years it has been mostly web dev in linux.
He ran Linux through vagrant on mac. Now he does the same on pc. He says that the hardest thing about moving is that he lost his browser shortcuts.
Ps he has a company provided PC, Intel and M1 macs on his home desk so really he can use whatever he wants.
1. Any time spent learning the "innards" of an OS, would be spent on Linux. Most of that learning has resulted from tinkering with the Raspberry Pi.
2. All of the software that I use on a daily basis would be platform independent, especially my programming tools.
As a result, right now I have the luxury of being ambivalent about platforms. I actually spend remarkably little time interacting with the platform, mainly setting up networking when I get a new machine. I can choose a new computer based on ergonomics and cost. Windows happens to have the best touch screen support right now, and refurb'd computers are not intolerably expensive.
So, when you achieve something, it will worth the effort.
Funny enough, the situation was not temporary, the change in trend was real and sustained.
Context is important here. I wasn't running my own business at the time. I was working for a company that had somewhere around 250 Macs and maybe 10 or 20 PC's.
What happened?
Apple made the transition and, as a result, all software and hardware this company had invested in became obsolete, virtually overnight. We are talking about a non-trivial amount of money and resources.
I saw and experienced the pain that caused first hand. From that point forward I always had this in the back of my mind. As I moved to run my own business with limited funds, the last thing I wanted to face was making any investment that could be subject to that kind of a pole-shift effect. Macs, for the most part, were out.
It's interesting to see the level of nit-picking people on HN tend to apply to a PC running Windows. I think things change when you are responsible for your own bottom line and have to get practical. There's nothing wrong with the hardware or software. At least nothing wrong enough to be a deal-breaker. The proof? Probably tens to hundreds of millions of companies running all kids of businesses just fine using PC's. Compatibility, long term viability, cost and cost of ownership (repairs!) are far more important than being able to right-click an icon to get a convenient function to work.
Microsoft/Windows has always been about long term compatibility. That means things evolve slowly. That's OK.
Aside from that, at least in our case, the engineering software we run won't work on anything else. In some industries you have no other options.
The Linux question and WSL. I don't understand the complaints. I run multiple Linux virtual machines on any of our powerful Windows desktop or laptops. No issues whatsoever. Some of us dual-boot. Other than Linux hardware and other issues, no problems at all. In fact, we carefully select our hardware during builds (or when buying laptops) in order to ensure the greatest level of compatibility with both Windows and Linux software we use.
If there is a solid justification for using an Apple machine, I am all for it. That's why we have several of them. No issues at all. I just don't think the nit-picking is valid or useful any more. If you are in business you just want to get shit done. There's nothing seriously wrong with quality PC hardware and the software ecosystem that runs on it, Linux or Windows.
Are you talking about the 68k to PPC transition? Because Apple made an enormous amount of effort to ensure both forward and back compatibility so I don't think your statement is true at all. "Fat binaries" allowed new software to run on 68k systems for years after the transition - you could even run 68k Mac apps on OS X for a few years!
And future versions of MacOS remained compatible with 68k Macs up until (if my memory serves) Mac OS 8.1. Even if you didn't upgrade to OS 9, most software ran on 8 anyway just fine.
They had to draw the line somewhere, but you had a long time to deal with the transition thanks to Apples efforts.
The company had very expensive media software suites that became incompatible. This isn’t about word processors and browsers but rather the case of essential and sometimes expensive businesses tools.
The article was about *hackers* moving from a platform to OS X. With M1, I saw a lot of content producers, web devs, ... to go to the M1, but not so much hackers... especially as the platform is *very* restrictive in terms of APIs / apps / etc.
A lot of my friends moved from macOS to a GNU/Linux distribution recently, especially as the hardware in general is more and more "as good" as a macbook.
But, again, this is my own opinion based on what I read and saw - I do not have stats to show how many hackers just passed from macOS to anything else (or stayed on an Intel powered macbook).
What’s restrictive about it?
Actually using the OS; you can do pretty much anything you want - up to and including installing practically everything ever written for linux (including entire window managers and the whole lot - I've seen full GNOME installs on top of MacOS). About the only thing you can't do is modify the proprietary binary blobs they give you, but that's just commercial software 101.
This dark idea of an "authoritarian apple" is the same sort of "conspiracy fantasy" that people project onto the motives of political parties they don't like. It's the same sort of "leaps of logic" to assume "oh, yeah, they restrict app store apps from adding kernel extensions, so — they must hate the idea of you having control over anything, so obviously you don't have root access to your own machine.". "Or okay, yeah, you still have that, but obviously they're about to rescind that, any decade now." They're not.
The prediction is wrong, because it's an extrapolation from a bad starting point — which is a total misread of their motives. The motive isn't about authoritarian control; it's about eliminating footguns.
---
For example, it's awful nice to be able to have a power failure, have my machine boot back up, and see all of my windows from the prior session right where I left them, and even have all the data in them refreshed from an autosave. As a system API, not just a per-app thing. Or, it's nice to install a program, and know that doing so is totally self-contained; it's not barfing a bunch of (potentially incompatible) new library dependencies into /usr/ or whatever that could screw with something else I've got installed. That I don't have to sweat over it "altering something" in my system when I do the install process. There are a lot of things like this; things where I basically feel like I've got a "wingman" or someone watching my back, because the folks who wrote it were primarily concerned about designing it so I'm highly unlikely to screw myself (i.e. the polar opposite of `rm -rf`).
It's just way lower stress to be able to focus on the actual problem I'm working on instead of also having to second-guess if my machine's going to betray me. That peace of mind isn't just a fluffy emotional thing; it also reduces cognitive load so I can work more effectively.
This is utterly false.
"the hacker" wants a suite of coreutils that are updated constantly. They want a package manager and an extensible system. They don't want their computer to second-guess them, and they don't want a large corporation to decide what's right for them.
This has nothing to do with the false claim about restrictive APIs.
> If you're looking for a true Unix box, you're shooting yourself in the foot by buying a Mac, especially today.
This has nothing to do with the false claim about restrictive APIs.
> "the hacker" wants a suite of coreutils that are updated constantly. They want a package manager and an extensible system. They don't want their computer to second-guess them, and they don't want a large corporation to decide what's right for them.
This is an ideological statement that has nothing to do with the false claim about restrictive APIs.
All of what you said may be true, but it doesn’t make the claim about restrictive apis any less false.