{"id":4889,"date":"2023-08-27T12:12:25","date_gmt":"2023-08-27T19:12:25","guid":{"rendered":"https:\/\/www.flamingspork.com\/blog\/?p=4889"},"modified":"2023-08-27T12:12:25","modified_gmt":"2023-08-27T19:12:25","slug":"random-useful-macos-things-for-linux-developers","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2023\/08\/27\/random-useful-macos-things-for-linux-developers\/","title":{"rendered":"Random useful macOS things for Linux developers"},"content":{"rendered":"\n<p>A few random notes about things that can make life on macOS (the modern one, as in, circa 2023) better for those coming from Linux.<\/p>\n\n\n\n<p>For various reasons you may end up with Mac hardware with macOS on the metal rather than Linux. This could be anything from battery life of the Apple Silicon machines (and not quite being ready to jump on the Asahi Linux bandwagon), to being able to run the corporate suite of Enterprise Software (arguably a bug more than a feature), to some other reason that is also fine.<\/p>\n\n\n\n<p>My approach to most of my development is to have a remote more powerful Linux machine to do the heavy lifting, or do Linux development on Linux, and not bank on messing around with a bunch of software on macOS that would approximate something on Linux. This also means I can move my GUI environment (the Mac) easily forward without worrying about whatever weird workarounds I needed to do in order to get things going for whatever development work I&#8217;m doing, and vice-versa.<\/p>\n\n\n\n<p>Terminal emulator? <a href=\"https:\/\/iterm2.com\/\">iTerm2<\/a>. The built in Terminal.app is fine, but there&#8217;s more than a few nice things in iTerm2, including <a href=\"https:\/\/github.com\/tmux\/tmux\/wiki\">tmux<\/a> <a href=\"https:\/\/iterm2.com\/documentation-tmux-integration.html\">integration<\/a> which can end up making it feel a lot more like a regular Linux machine. I should probably go read the <a href=\"https:\/\/gitlab.com\/gnachman\/iterm2\/-\/wikis\/tmux-Integration-Best-Practices\">tmux integration best practices<\/a> before I complain about some random bugs I think I&#8217;ve hit, so let&#8217;s pretend I did that and everything is perfect.<\/p>\n\n\n\n<p>I tend to use the Mac for SSHing to bigger Linux machines for most of my work. At work, that&#8217;s mostly to a <a href=\"https:\/\/aws.amazon.com\/ec2\/graviton\/\">Graviton 2 EC2 Instance<\/a> running Amazon Linux with all my development environments on it. At home, it&#8217;s mostly a <a href=\"https:\/\/www.raptorcs.com\/BB\/\">Raptor Blackbird POWER9<\/a> system running <a href=\"https:\/\/fedoraproject.org\/\">Fedora<\/a>.<\/p>\n\n\n\n<p>Running Linux locally? For all the use cases of containers, <a href=\"https:\/\/podman-desktop.io\/\">Podman Desktop<\/a> or <a href=\"https:\/\/github.com\/runfinch\/finch\">finch<\/a>. There&#8217;s a GUI part of Podman which is nice, and finch I know about because of the relatively nearby team that works on it, and its relationship to <a href=\"https:\/\/github.com\/lima-vm\/lima\">lima<\/a>. <a href=\"https:\/\/github.com\/lima-vm\/lima\">Lima<\/a> positions itself as WSL2-like but for Mac. There&#8217;s <a href=\"https:\/\/mac.getutm.app\/\">UTM<\/a> for a full virtual machine \/ <a href=\"https:\/\/www.qemu.org\/\">qemu<\/a> environment, although I rarely end up using this and am more commonly using a container or just SSHing to a bigger Linux box.<\/p>\n\n\n\n<p>There&#8217;s <a href=\"https:\/\/apps.apple.com\/us\/app\/xcode\/id497799835?mt=12\">XCode<\/a> for any macOS development that may be needed (e.g. when you want that extra feature in UTM or something) I do use <a href=\"https:\/\/brew.sh\/\">Homebrew<\/a> to install a few things locally.<\/p>\n\n\n\n<p>Have a read of <a href=\"https:\/\/amboar.github.io\/\">Andrew<\/a>&#8216;s blog post on <a href=\"https:\/\/amboar.github.io\/notes\/2023\/03\/27\/openbmc-development-on-an-apple-m1-macbook-pro.html\">OpenBMC Development on an Apple M1 MacBook Pro<\/a> too.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A few random notes about things that can make life on macOS (the modern one, as in, circa 2023) better for those coming from Linux. For various reasons you may end up with Mac hardware with macOS on the metal &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2023\/08\/27\/random-useful-macos-things-for-linux-developers\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[615,7],"tags":[],"class_list":["post-4889","post","type-post","status-publish","format-standard","hentry","category-powerpc","category-work-et-al"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-1gR","jetpack-related-posts":[{"id":385,"url":"https:\/\/www.flamingspork.com\/blog\/2005\/03\/29\/bugzilla-bug-51149\/","url_meta":{"origin":4889,"position":0},"title":"Bugzilla bug 51149","author":"Stewart Smith","date":"2005-03-29","format":false,"excerpt":"Bugzilla bug 51149 For those of you migrating from MacOS X to Linux, this is something that should be good for you. Get Evolution to import your vCard's from the MacOS X Addressbook without my little perl script. I'm full time on Linux these days, but it would be awesome\u2026","rel":"","context":"In &quot;GNOME&quot;","block_context":{"text":"GNOME","link":"https:\/\/www.flamingspork.com\/blog\/category\/gnome\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":502,"url":"https:\/\/www.flamingspork.com\/blog\/2005\/10\/28\/arjen_lentz-mysql-thread-cache\/","url_meta":{"origin":4889,"position":1},"title":"arjen_lentz: MySQL thread cache","author":"Stewart Smith","date":"2005-10-28","format":false,"excerpt":"arjen_lentz: MySQL thread cache It should be noted however that creating and destroying threads on some platforms is a very very cheap operation. Linux with NPTL (esp on x86) is one such platform. (even without NPTL on x86 it's stil pretty cheap). On PPC with LinuxThreads it's quite expensive. On\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":137,"url":"https:\/\/www.flamingspork.com\/blog\/2003\/08\/03\/linux-on-an-ibook\/","url_meta":{"origin":4889,"position":2},"title":"linux on an ibook","author":"Stewart Smith","date":"2003-08-03","format":false,"excerpt":"well, i've got the Linux and the MacOS X on the ibook now. Finally had enough things to do that the procrastination value of moving 25GB worth of home directory data around was worth it. This, of course, had to be accomplished by buying another hard drive. So, an extra\u2026","rel":"","context":"In &quot;linux-kernel&quot;","block_context":{"text":"linux-kernel","link":"https:\/\/www.flamingspork.com\/blog\/category\/linux-kernel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":696,"url":"https:\/\/www.flamingspork.com\/blog\/2006\/05\/10\/an-apple-article-on-mysql-on-mac-os-x\/","url_meta":{"origin":4889,"position":3},"title":"An Apple article on MySQL on Mac OS X","author":"Stewart Smith","date":"2006-05-10","format":false,"excerpt":"MySQL on Mac OS X: An Ideal Development Combination They got one bit a bit unclear. They say \"In fact, the development team at MySQL AB uses the Mac platform for developing the MySQL server software itself.\" Which is misleading at best if not downright wrong. Yes, some people do\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1360,"url":"https:\/\/www.flamingspork.com\/blog\/2012\/05\/28\/zfs-could-have-been-the-future-of-unix-filesystems\/","url_meta":{"origin":4889,"position":4},"title":"ZFS: could have been the future of UNIX Filesystems","author":"Stewart Smith","date":"2012-05-28","format":false,"excerpt":"There was a point a few years ago where Sun could have had the next generation UNIX filesystem. It was in Solaris (and people were excited), there was a port to MacOS X (that was quite exciting for people) and there was a couple of ways to run it on\u2026","rel":"","context":"In &quot;linux-kernel&quot;","block_context":{"text":"linux-kernel","link":"https:\/\/www.flamingspork.com\/blog\/category\/linux-kernel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1017,"url":"https:\/\/www.flamingspork.com\/blog\/2008\/02\/22\/solaris-linux-it-is-gnu-folks\/","url_meta":{"origin":4889,"position":5},"title":"Solaris, Linux, it is GNU folks&#8230;","author":"Stewart Smith","date":"2008-02-22","format":false,"excerpt":"Brian \"Krow\" Aker's Idle Thoughts - Solaris, Linux, it is GNU folks... Brian hits the nail on the head... The way you get a usable system is install all the GNU tools. This is how I go from fresh Ubuntu install to building MySQL: apt-get build-dep mysql-server apt-get install bison\u2026","rel":"","context":"In &quot;life, the universe and everything&quot;","block_context":{"text":"life, the universe and everything","link":"https:\/\/www.flamingspork.com\/blog\/category\/life-the-universe-and-everything\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/4889","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=4889"}],"version-history":[{"count":1,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/4889\/revisions"}],"predecessor-version":[{"id":4890,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/4889\/revisions\/4890"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=4889"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=4889"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=4889"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}