It’s been almost a year since I moved from using a Windows laptop to an iMac for all my daily tasks, so time for a recap of my experience.

We will get to my introduction to macOS, but first a look back on my time with Windows.

My Windows story

My very first encounter with a computer was with PCs running Windows 95 back when I was 6-7 years old.

The "It's now safe to turn off your computer" message from Windows 95.
Ah, the days when you had to first Shut Down your PC and then, wait for this screen to appear to turn off its power switch.

Since then, I had only used Windows (apart from learning Linux for some CS courses), for work and personal stuff. I’ve been on all major Windows versions, with their ups (Windows 7) and downs (Windows Vista 🤬), on laptops from HP, Lenovo, Dell and Asus.

To get you into a short nostalgia trip, I have done all these things on Windows:

  • Used MS-DOS (C:/>_) to run some arcane commands and install a game from a CD-ROM (this one!).
MS-DOS in Windows 95 screenshot
Mounting .exe files in the olden times.
  • Spent hours in mIRC chat rooms (the precursor to today’s Discord servers I guess?).
  • Downloaded a ton of music, movies, and probably malware, with Napster, Limewire, and, of course, uTorrent.
  • Used Microsoft Frontpage to learn how to build websites.
Microsoft Frontpage in Windows XP
The pinnacle of web development at the time.
  • Burned so many CDs and DVDs with Nero.
  • Used the Run… prompt too many times.
  • Defragmentation, disk cleanup, format, all these shenanigans.
Windows defrag tool window
Felt like a true Windows expert when I was using this.
  • Saw the blue screen of death too many times.
  • Hit Ctrl+Alt+Delete to restart the File Explorer process too many times.
  • Downloaded cracks, mounted daemons, and used keygen tools with repetitive, SNES-like, music to play some games when I couldn’t afford them.
Beware! Listening to a keygen song after all this time may activate you like a sleeper agent and start spitting out serial numbers.

Indeed, Windows is where I learned to interact with a computer.

It’s also where I learned programming, set up a development environment for the first time, and started working professionally as a web developer almost 8 years ago.

After such a long time, I had reached the level of what you would call a power user: I could move around the interface pretty quickly, knew a lot of shortcuts and tricks, and could get over the occasional issue or hiccup.

My Asus TUF Gaming laptop, with my cat walking right behind it.
My last Windows laptop: Asus TUF Gaming FX505DT (Ryzen 7 3750H/32 GB/512 GB/GTX 1650 4 GB).

Moving to the other side

In late 2020, I was building the MapChart iOS app and needed an iDevice to enroll to the Apple Developer program and sign off the app builds. My Huawei Honor 9 was getting a bit laggy after almost 3 years of use, so I bought a brand new iPhone 11. This was my first introduction to Apple’s ecosystem.

Then, I also needed a way to test and build the MapChart app for iOS, so I signed up for MacInCloud, which lets you rent a cloud instance of a Mac (Mac Mini, in my case). I would connect to the Mac, pull my latest changes from GitHub, run/test the app, build it for iOS and upload it for distribution to the Apple Store.

On my Windows PC, connected to MacInCloud and working on the app.
On my Windows PC, connected to MacInCloud and working on the app.

Gradually, I was looking more and more to the other side (macOS) and getting acquainted with it. Until in April 2021, when I stumbled upon Apple’s keynote for the new iMac.

That was it! It made sense to switch to an iMac:

  • A desktop suits me well. I mostly work from my home desk, so the extra mobility provided by a laptop is not needed. The bigger screen can also be helpful when working with code.
  • With a Mac, I can natively test my websites on all browser engines: WebKit (Safari), Chromium (Chrome), and Gecko (Firefox). No need for using a service like Browserstack any more.
  • In the same vein, I can run my app both on Android emulators and iOS simulators without having to switch devices.
  • I was already within the Apple ecosystem, due to the iPhone.
  • Using the cloud Mac instance was getting a bit tedious. There were limitations when trying to install software. It was also a bit slow to do programming for long periods of time.
  • The colored options of the new iMac looked so fresh and stunning!

After poring through previews, first looks and official reviews, I finally took the plunge and ordered the blue M1 iMac (8GB RAM, 512 GB SSD) on May 31st.

Front view of iMac in blue

In the meantime, anxious about using a completely new environment, I started reading all the “switching from Windows to macOS” articles I could find (I guess you reading this one are in the same state?).

Unfortunately, due to all the supply line issues at the time, I ended up waiting for almost 3 months before it was finally here. I still remember sitting on a beach in Syros island and getting the email that my order was ready for pickup! Couldn’t wait for the return from my vacation to go and grab it from the store.

So, here it was!

My iMac updating to the latest macOS version
First moments with the new iMac.

Setting up the iMac

Setting it up was a breeze. I had already bookmarked some great guides (1, 2) that helped me install all of my dev-related tools.

I mostly do web development and multi-platform app development (don’t know how to better describe it?) with Flutter, so I went ahead and installed all the necessary stuff like:

  • Homebrew and Git
  • XCode and its command line tools
  • iTerm2 for the Terminal
  • VS Code
  • Android Studio and Android tooling
  • MAMP for running a local server
  • Inkscape
  • Photoshop
  • Python
  • NodeJS
  • Flutter and all related plugins

Homebrew was a life-saver at this time (and since), combined with macOS’s straightforward way of installing apps. Indeed, I was able to have a fully working environment in just 3-4 hours.

My blue 2021 iMac with a code editor and some terminal windows open. Next to it my water flask and coffee mug.
Ready to go, with Sublime Text, iTerm2, and the iOS Simulator in full display! A while later, I started using VS Code as my editor of choice.

So, after this rather long introduction on switching from Windows to macOS, time for the one-year review of the new machine and its OS.

Hardware, or my impressions from the 2021 iMac

Design

This is the most beautiful piece of tech I have ever owned. The screen is so thin, and I still can’t fathom how such a powerful system fits into just the chin of the iMac.

Before the launch of this iMac, there was a lot of talk about its first-time-in-use white bezels. People were worried that white would be distracting to have around the screen, or that it made the iMac look less professional.

In my opinion, the white bezels look great and they blend seamlessly with the white walls of my home (and most houses, I guess). After a while, I tend to forget they exist, so all I can focus on is the iMac’s screen.

My cat sitting right next to my blue iMac with a Sublime Text window shown
Just beautiful.

Display

I was immediately in love with the Retina screen. After a year, every other non-Retina, non-Apple computer screen, seems like a decade old.

It’s also just the proper display size for me: 27″ would take up a lot of space. Anything less than 24″ is not enough to stand on its own for dev work.

To serve as my second screen, I got a similarly sized 24″ display (the HP 24mh), so I have more than enough of screen real estate for any kind of workflow.

Performance

There is no other way of stating this:

Apple silicon is miles ahead from the competition. You can check this out on any benchmark website, where even the first-gen M1 (like the one on the iMac) scores pretty high compared to most Intel processors.

However, only when experiencing it IRL, you can truly experience how fast, silent, and responsive this machine is.

Opening any app, even behemoths like Photoshop or Xcode, is almost instant. Moving around the file system with Finder is seamless. Running localhost servers or browsing through large codebases have no effect on the system’s performance.

Matter of fact, I have only heard the fans spinning like 10 times the past year: most of these when compiling a large Flutter project, the rest when I wrote some infinite loops when solving Advent of Code problems (😅).

Namely, I can only compare it to another jaw-dropping speed improvement: the first time I used an SSD drive, instead of an HDD drive, on a previous laptop.

On my previous Windows laptop, which was specced with a Ryzen 7 and 32GB RAM, it was still common to see the hourglass (“loading”) cursor while moving around the system.

On macOS, things are snappy and I rarely encounter the equivalent rainbow spinning wheel. Of course, this also has to do with the absolutely tight optimizations that Apple can build, since they control all aspects of the system (hardware and software).

And the good thing is that I have seen only a slight deterioration on its performance after a year. Lately, once or twice a month, I can see some slugishness when having a lot of apps open, compiling and running tests on multiple dev environments, but it always goes away after a restart.

To be fair, I have somewhat regretted getting the 8GB RAM version; while it performs great as I described above, the 16GB RAM would probably turn out better in the long run, using smaller memory swaps, and extending the lifespan of the SSD.

Connectivity and accessories

I would love to have some additional ports on this iMac, and not having to resort to using a dongle for HDMI connectivity and USB support. In any case, subsequent Apple products, like the latest MacBooks and the Mac Studio, have been adding ports, so it seems that this trend is reversing.

Finally, I am pretty satisfied with the Magic Keyboard. I haven’t faced any connection issues, the keys are satisfying to press, and the TouchID button is useful in many ways for authentication.

I cannot say the same for the Magic Mouse, which now sits unused in a drawer somewhere. To this day, I am still puzzled on why it still exists.

Google image search for Magic Mouse ergonomics
Googling for Magic Mouse ergonomics. Seems like a lot of people are searching for ways to make it work.

So, hardware is excellent, but what about software?

My impressions on macOS (and comparison to Windows)

Understandably, I was initially a bit anxious getting into a new operating system, and learning to be productive with it.

However, after enough research and practice, I can confidently say that I now feel at home using it, both for dev work and personal stuff.

Let me break it down:

Keyboard shortcuts

First thing I did to help with the transition, was to rebind the Control keyboard key to the Command modifier (and vice versa).

On macOS, Command is used as a modifier for almost all the keyboard shortcuts that CTRL is used for on Windows. After 20 years of using my pinky finger for CTRL shortcuts, it proved hard to retrain my muscle memory, so I opted for this customization.

Next, since I am big on using the keyboard for moving around the interface, I needed a way to keep track of all the new or different keyboard shortcuts I was using on macOS.

This led me to creating my own app for saving keyboard shortcuts, called Shortcut Keeper, which has now been downloaded from hundreds of other users that face similar issues.

Indeed, it helped a lot. I was able to quickly memorize so many useful hotkeys and be more productive in such a short time.

A screenshot of the Shortcut Keeper app, with various macOS-specific keyboard shortcuts
My saved shortcuts for macOS on Shortcut Keeper. When I want to remember the key combo for an action, I quickly open the app and check it out. After memorizing a shortcut, I delete it.

Window management

Switching between apps and their windows is one of the main pillars of an operating system.

Screenshot of various app shown in Mission Control
Mission Control is handy and has a cool animation effect.

In this area, I think that the default macOS features are a bit lacking and confusing, compared to Windows:

Dock and Command-Tab

The dock looks nice and all, but a Windows taskbar is more straightforward.

Switching between my open apps with the Windows taskbar, which shows only open programs, was easier and I constantly used it. In the macOS dock, there is more distance between them and the “open” dot at the bottom of the icons is barely visible, so I mostly resort to using Command-Tab or Mission Control.

Windows also had a nice feature where, when hovering over a program’s icon in the taskbar, you saw a preview of the currently opened windows (even minimized ones) and could quickly switch to it.

Window controls

On Windows, you had minimize-maximize-close. The holy trinity of window management worked well and was intuitive.

On macOS, you can hide, or minimize, or close an app’s window, with all of these spawning different behaviors on different circumstances, like when using Command-Tab or clicking on a dock icon. This handy flowchart sums it up nicely:

A fun diagram of the windows handling behavior of macOS

Then again, closing an app’s window doesn’t close the app at all, so this was a bit confusing in the beginning (now I think it is fine as a behavior, as the app stays in the background and its memory/startup is efficiently managed from the OS).

Finally, what’s up with the green zoom (maximize) button? Why would I need to use an app in full screen? I have never used it, as most times maximizing the current app window is enough, if I want to focus on it and have as much screen room as possible. It also has a non-standard behavior for some reason: try using zoom on a Chrome window vs on Safari, and you’ll see the puzzling difference:

Second display frustration

Occasionally, when using my second monitor and waking my Mac from sleep, the app windows arrangement I had from my previous session gets completely lost. I find that all my windows have moved to the main display, and have to rearrange them every time as before.

This had not even once happened when I used a dual monitor setup on Windows. I had also seen a macOS utility app that fixed exactly this issue, so it surely is a more general problem.

How I do windows management on macOS

Rectangle, Rectangle, Rectangle. I constantly use the shortcuts provided by Rectangle to properly arrange everything on my screen, and find it so intuitive and easy to use. This is such an essential tool for arranging app windows, that I am surprised it hasn’t been already integrated with macOS.

I also use Spaces (the equivalent of virtual desktops on Windows) to separate my environments (personal, app dev, web dev, etc.) and keep less windows active at any time.

Finally, I never minimize windows. Minimized windows are harder to find via Command-Tab (which I use for switching between apps) and even clicking on the dock icon doesn’t bring them into view. This seems to work well for me and I am able to move around the interface more fluidly.

Things working out of the box

While I love discovering and using small utilities and new apps, I love even more having an official, well-supported solution provided directly from the OS. And this is an area where macOS shines.

Spotlight and searching

What an absolutely great piece of software Spotlight is. I hit Cmd-Space, write my search term, and I immediately get the result I need. It works great when searching for apps or files, with no delay and with good suggestions every time.

There is a similar PowerToys tool for Windows if I remember correctly, but again it doesn’t match Spotlight’s speed and efficiency. Also, searching for a single file in Windows Explorer was almost always so frustrating, with the search many times not completing at all:

Windows Explorer getting stuck in search
There were so many times that my searches got stuck in this state…

Default apps

I find myself constantly using Apple-developed apps on my iMac, like Notes, Reminders, Messages, Calendar, Stocks, Keynote, and so on. All these are simple and easy to use, and the fact that they automatically sync with my iPhone is a huge productivity boost.

Screenshots and screencasts

Cmd-Shift-5 and you are ready to go. I think that 90% of use cases are covered by macOS’s screengrab utility. On Windows, we had only PrintScreen for many years, and then we got the Snipping Tool, which I find a bit lacking for some cases.

Additionally, screen recording on Windows is fundamentally broken. You are suggested to use XBox Game Bar (why?) or a third-party solution like OBS Studio or Screencast-O-Matic. Either option cannot even compare to the simplicity of hitting Cmd-Shift-5 and recording your screen.

Connecting devices

While the situation with drivers has been better on Windows in latest years, you can still encounter connection issues when trying to install a new peripheral to your PC. When connecting my printer, for example, had a lot of issues with driver updates, or having to install additional programs or to restart my PC, in order to get the USB connection working.

Up to this point, anything I connected to my iMac just worked, either wired or wirelessly. Bluetooth and Airdrop work without issues and no additional software is necessary for most things.

Terminal and package managers

MacOS’s default Terminal app is great to work with and with Homebrew, you can install almost anything with just a simple command. Again, Windows has been improving on this front for the past few years, with solutions like Windows Terminal, PowerToys, or Chocolatey, but it still seems a bit late to the party.

App quality

It seems to me that most apps I find on macOS have a better design than ones on Windows. It could be that macOS-exclusive app developers give more thought to the design of their apps? Does having an official design guidelines documents from Apple help with this?

macOS design resources from Apple
Apple provides standard design guidelines for all platforms, along with useful resources.

I also haven’t seen yet any app with ads embedded in its interface (while on Windows, even Microsoft places ads inside the Start Menu), or an app that tries to side-load sketchy software, like antivirus programs or OS cleaners, on installation. This is just good for my ease of mind.

Settings and customization

Again, standardization and great design gives macOS the lead:

The System Preferences app on macOS is easy to navigate and you can quickly find any setting you want to toggle. I have heard it is getting an iOS-like redesign for macOS Ventura, with a mixed reception from beta users so far, so my opinion may change later (hopefully not!).

macOS System Preferences
Clean and compact.

The Windows Settings screen, on the other hand, has been redesigned so many times that it’s hard to find the various settings and is a bit slow to interact with.

Also, almost all apps I’ve used on macOS keep their settings in one place, accessible via the Cmd+, keyboard shortcut. You don’t need to look into menus or non-standard UI elements to reach the preferences screen.

The ecosystem

And we finally come to what is macOS’s biggest advantage in my opinion: the ecosystem.

a MacBook next to an iPhone showing the same web page
Source

All my Apple devices connect and sync with each other effortlessly.

Features like Airdrop, Handoff, or Continuity, let me move stuff and work between my iPhone and the Mac so fluidly, that I don’t even think about it.

It’s a different experience altogether from the one I had with Windows and my previous Android phone, when I had to resort to moving files via Google Drive, or third-party software.

In fact, here are some typical daily tasks for me:

  • I sit on my desk and my Apple Watch unlocks the iMac.
  • I add a task to my Reminders via the iMac app and immediately have it shown on my watch and phone.
  • Need to send files between my iMac and iPhone? Airdrop gets it done in seconds.
  • Even better, I can copy an image or text on my iPhone and paste it anywhere on my iMac.
  • Want to add a photo I took today to this blog post? I open up the macOS Photos app, which is immediately synced, and I grab it.
  • If I find an interesting article while on my phone, I can just send it to the Mac to read it in the larger screen via Handoff.
  • Focus modes, like Work or Do Not Disturb, work the same way across all my devices.
  • Passwords, settings, cards, etc. are all shared between my devices seamlessly.

All the above tasks have become so easy when using Apple’s ecosystem, that I cannot even fathom how more cumbersome it would be with any other setup.

I am aware that there are solutions available for such tasks, when using Windows/Linux and Android. For example, the cloud copy/paste can be done via a third-party app or when using a Logitech keyboard, or I could send browser tabs if I use Chrome on both devices. Again, it’s about Apple devices and software providing a built-in, standard, effortless way.

Finally, I firmly believe that Apple has nailed the cloud storage and update functionality with iCloud. I had various issues with syncing and loading content at times, when using Google Drive, Dropbox, or Microsoft OneDrive.

Closing thoughts

I don’t think I will go back to using Windows any time soon.

Currently, I am fully satisfied with the performance and ease of use that my iMac and macOS provide. The lock-in effect of using Apple products is strong enough, that I am now (voluntarily) tied to their ecosystem.

Indeed, I consider my move from Windows to macOS a huge upgrade to my productivity and convenience so far.

Is It Worth the Time?
Windows takes ~2 seconds to open a simple PNG image each time. If macOS Preview does it in a fraction of a second, switching to it becomes a prudent time-saving investment.

There are countless instances where I have saved time in my daily tasks, and as they say programmer time is more valuable than computer time!

Till next time!

a cat sitting in front of an iMac, which displays a code editor and Simulator