That said, I love my M1 MacBook Pro and for now I don’t mind too much keeping my old MacBook nearby.
I think the situation should continue to improve, but there is an extremely long tail of stuff to get working.
The other thing I would mention is that Rosetta is very very slow. A lot of the initial impressions made out it was basically a bit slower, but for a lot of stuff it's slow as hell. You do not want to for example run an IDE in Rosetta.
It was bumpy until March or so, but now I really really like it for Python.
ARM-native images are 100% fine, and x86 images are surprisingly usable via emulation (albeit considerably slower). During the technical preview stage some x86 images simply didn't work at all (MySQL being a big one that springs to mind). However, I've just checked it in the stable release and it's working now. Not sure if there's still images that don't work under emulation though.
If the next MBP16 lineup with M1 (M2?) supports 32+ GBs of RAM other vendors will have to step up their game, though.
Whereas my 2019 MBP will suffer incredibly when I start running out of memory (it literally becomes unusable and requires a hard reboot), the M1 will transparently start swapping, and I generally don't even notice.
Just the other day I noticed a python process was running slower than expected, and it was a bug in my Pandas code so I had allocated 85GB of memory. The rest of the system was operating normally - Chrome, VSCode, Music were all fine.
I regularly kick off a data pipeline process with 8x concurrency, even though each process uses between 4-6GB memory. It's probably inefficient in some way, but overall is still much faster than running at 2x concurrency (where everything would fit in memory and it wouldn't need to swap).
16GiB is insufficient for mobile? iPhone SE has 3GiB and 12 has 6GiB. That is less than half your M1 RAM. How much more does the emulator consume?
So not strictly necessary, but when you're used to it going back to having to work around the limitations is burdensome. People not having lots of ram seldom complain, but they don't know how much time they're wasting on an inefficient workflow.
When I need to run VMs as well, sky's the limit.
In general though, I love my M1 air, but I am sticking to my workstation (5950x, 64GB, debian) for dev work for now.
Quick fix for all of this - whatever platform you run the build on, do it in docker on the exact same base image that lambda uses at runtime.
I know, you’re going to tell me there’s an easy way around this with cross-compilation. But when you already have docker available , quite often everything looks like a nail.
Overall, developing on the M1 Macbook Pro has been great so far.
There is no rush into purchasing an M1 for developers since, the software ecosystem at the time (and still to this day) is somewhat immature and not ready. There is plenty of time to switch to Apple Silicon until the ecosystem is mature.
By then, you would not even consider an M1. It might be an M1X, M2, etc. On top of the already existing issues that plague the first generation, the best thing to do for now is to stay on Intel for now. I am long term Apple Silicon, not long term 'M1'.
This is what I have been saying for weeks [0][1] and weeks [2][3] and now just yesterday. [4] I even said it a day after 'launch day'. [5]
Just wait for WWDC or September.
[0] https://news.ycombinator.com/item?id=26748321
[1] https://news.ycombinator.com/item?id=26159495
[2] https://news.ycombinator.com/item?id=26361883
[3] https://news.ycombinator.com/item?id=26327064
Just use an x86-emulated terminal and you don’t have to worry about this. The only limitation is x86 docker images, which I can’t get to run on my M1. Everything else works as it did on my 2015 MBP (when executed in an x86 terminal).
Will currently rock my 2017 MBP until it shits the bed. While there have been huge strides in getting tools compatible with apple's ARM, I am not a fan of spending huge amounts of efforts to get a tool(s) to work on something that was already working sufficiently enough on x86.
Plus, I imagine in most corporate environments M1 will break many internal tools making it nearly impossible to access protected resources.
I have an M1 Air and ended up listing my iMac I use for work as the Air was just wholely faster for my tasks. For the average dev, I think there's a weird hap right now of "M1 now vs M1X/M2". It's getting later in the cycle and while M1 support has greatly gotten better, it's now closer to new models with drastic changes.
Now in my use (TS/Node), the M1 in native Node is unbelievable, it's twice as fast as Intel machines. But that's my use case.
However, when it came to buying a new engineer on our team a laptop, we had to go with the last 2020 Intel model.
We still have some uncertainty over whether or not our development tools/environment will work on M1. Many python packages will take longer to install I imagine (if there are no wheels for the M1 mac, not sure if that's an issue) and I suspect some won't build at all. I also have some concerns over our Docker environment building.
Is there anyone doing python development and using Docker who can share their experience so far?
Edit: please also share non-python development experience, it's really interesting to hear