mikeroyal / Apple-Silicon-Guide

Apple Silicon Guide. Learn all about the A17 Pro, A16 Bionic, R1, M1-series, M2-series, and M3-series chips. Along with all the Devices, Operating Systems, Tools, Gaming, and Software that Apple Silicon powers.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool




Apple Silicon Guide

followers

Maintenance Last-Commit

A guide covering Apple Silicon including the applications, libraries and tools that will make you better and more efficient with your Apple Silicon powered device.

Note: You can easily convert this markdown file to a PDF in VSCode using this handy extension Markdown PDF.


Apple M3/M3 Pro/M3 Max/M3 Ultra Architectures.


Apple M2/M2 Pro/M2 Max/M2 Ultra Architecture.


Apple M1/M1 Pro/M1 Max/M1 Ultra Architectures.

Table of Contents

  1. Getting Started with Apple Silicon

  2. Gaming

  3. Wafer Level Multi-Chip Packaging Technology

  4. Xcode Development

  5. Core ML Development

  6. Metal Development

  7. Visual Studio Studio (VSCode) Development

  8. Unreal Engine 5 Development

  9. Unity Development

  10. Blender Development

  11. Virtualization

  12. Docker

  13. Kubernetes

  14. Ansible

  15. Running Linux on the Apple Silicon

  16. Running Windows 10/11 on the Apple Silicon

  17. Game Development

  18. Professional Audio/Video Development

  19. 3D Graphics & Design

  20. Swift Development

  21. Objective-C Development

  22. C/C++ Development

Getting Started with Apple Silicon

Back to the Top

Apple Hypervisor is a framework that builds virtualization solutions on top of a lightweight hypervisor, without third-party kernel extensions. Hypervisor provides C APIs so you can interact with virtualization technologies in user space, without writing kernel extensions (KEXTs). As a result, the apps you create using this framework are suitable for distribution on the Mac App Store.

Apple A-series is Apple's 64-bit ARM-based system on a chip (SoC) used in their iPhones and iPads. Though, at WWDC 2020 it was announced that Apple Silicon would transition into Mac laptops.

Apple Silicon Chips

A17 Pro

Back to the Top


A17 Pro is built on new 3nm architecture. It has 6-CPU cores, with the 2-performance cores 10% faster and the 4-efficiency cores significantly more efficient. Along with a 6-core GPU that is 20 percent faster than the A16 Bionic(iPhone 15 & 15 Plus models). The Neural Engine, will be almost twice as fast as the A16 Bionic. Apple has also added hardware-accelerate ray-tracing to the A17 Pro GPU. The A17 Pro chip is available in the iPhone 15 Pro and 15 Pro Max.


Apple A17 Pro Architecture. Image Credit: Apple

A16 Bionic

Back to the Top


A16 Bionic Chip is Apple's first 4nm SoC for iPhone 14 Pro & Max with a 6-core CPU has two performance cores and 4 high-efficiency cores. Along with a 5-core GPU and 16-core neural engine.


A16 Bionic Chip Architecture

H2

Back to the Top


H2 Chip is Apple's SoC for the AiPods Pro that facilitates stronger(2x more) active noise cancellation, personalized spatial audio, and better performance during phone calls.


H2 chip powering the AirPods Pro. Credit: Apple

S9

Back to the Top


The S9 chip has 60% more transistors in its CPU than the Series 8, and 30% more in its GPU. Along with neural engine boosting on-device processing for Siri requests, including 25% faster voice dictation in the Apple Watch Series 9.


S9 Chip for Apple Watch Series 9. Image Credit: Apple

U1

Back to the Top


U1 Ultra Wideband (UWB) chip is an Apple-designed silicon chip that has Ultra Wideband technology for spatial awareness. The U1 chip enables directional AirDrop functionality.

  • UWB (Ultra-wideband) is a short-range radio technology that precisely pinpoints and measures distance between other UWB equipped devices.

Apple devices with the U1 chip

  • Apple AirTags
  • iPhone 11
  • iPhone 11 Pro
  • iPhone 11 Pro Max
  • iPhone 12mini
  • iPhone 12
  • iPhone 12 Pro
  • iPhone 12 Pro Max
  • iPhone 13 mini
  • iPhone 13
  • iPhone 13 Pro
  • iPhone 13 Pro Max
  • iPhone 14
  • iPhone 14 Plus
  • iPhone 14 Pro
  • iPhone 14 Pro Max
  • Apple Watch Series 6
  • Apple Watch Series 7
  • Apple Watch Series 8
  • Apple Watch SE (2nd Gen)
  • Apple Watch Ultra
  • Apple HomePod mini


U1 Chip Die

R1

Back to the Top


The R1 chip is dedicated toward real-time sensor processing, taking the input from 12 cameras, five sensors (including a LIDAR sensor) and six microphones on the Vision Pro headset.


R1 & M2 chips in the Vision Pro Headset

M1

Back to the Top


Apple M1 Chip is Apple's first SoC chip designed specifically for their ARM Mac products, it delivers incredible performance(8-core CPU and 8-core GPU), custom technologies, and great power efficiency. The M1 Chip is now available for Macbook Pro 13 with M1, Macbook Air 13 with M1, Mac Mini with M1, iPad Pro, and iPad Air.


M1 Chip. Source: Apple

M1 Pro

Back to the Top


Apple M1 Pro Chip is a 8 or 10-core system-on-a-chip (SoC) architecture designed for pro systems in the MacBook Pro 14”. The chip features fast unified memory, industry-leading performance per watt, and incredible power efficiency, along with increased memory bandwidth and capacity. The M1 Pro offers up to 200GB/s of memory bandwidth with support for up to 32GB of unified memory and a GPU (14-core or 16-core option).


M1 Pro Chip. Source: Apple

M1 Max

Back to the Top


Apple M1 Max Chip is a 10-core system-on-a-chip (SoC) architecture designed for pro systems in the MacBook Pro 16”. The chip features fast unified memory, industry-leading performance per watt, and incredible power efficiency, along with increased memory bandwidth and capacity. The M1 Pro offers up to 400GB/s of memory bandwidth with support for up to 64GB of unified memory and a GPU (16-core or 32-core option).


M1 Max Chip. Source: Apple


M1/ M1 Pro/ M1 Max CPU Performance. Source: Apple


M1/ M1 Pro/ M1 Max GPU Performance. Source: Apple

M1 Ultra

Back to the Top


Apple M1 Ultra Chip is a Apple's most powerful silicon chip in their M1-series lineup. The M1 Ultra is composed of two M1 Max chips that are connected together using Apple's UltraFusion Architecture packaging. This means the M1 Ultra can be configured with up to 128GB of high-bandwidth, low-latency unified memory that can be accessed by the 20-core CPU, 64-core GPU (800GB/s memory bandwidth), and 32-core Neural Engine. The M1 Ultra is currently available in Apple's Mac Studio.


M1 Ultra Chip. Source: Apple


M1 Ultra CPU Performance. Source: Apple


M1 Ultra GPU Performance. Source: Apple

M2

Back to the Top


Apple M2 Chip has a 18% faster CPU, 35% faster GPU, and 40% faster Neural Engine than the base M1 chip. It can be configured with up to 24GB of high-bandwidth, low-latency unified memory that can be accessed by the 8-core CPU, 10-core GPU (100GB/s memory bandwidth), and 16-core Neural Engine. The M2 will be available in Apple's new MacBook Air, MacBook Pro 13" with old design, and iPad Pro with M2 .


M2. Source: Apple


M2 CPU Performance. Source: Apple


M2 GPU Performance. Source: Apple


M1 vs M2. Source: Apple


M2 Gaming Performance. Source: Apple


M2 Image Processing Performance. Source: Apple


M2 Video editing Performance. Source: Apple


M2 Image filters & Effects Performance. Source: Apple

M2 Pro

Back to the Top

Apple M2 Pro Chip has a 20% faster CPU, 30% faster GPU, and 40% faster Neural Engine than the base M1 Pro chip. It can be configured with up to 32GB of high-bandwidth, low-latency unified memory that can be accessed by the 12-core CPU, 19-core GPU (200GB/s memory bandwidth), and 16-core Neural Engine. The M2 Pro will be available in Apple's MacBook Pro 14", MacBook Pro 16", and Mac mini.

M2 Pro Chip. Image Credit: Apple

M2 Max

Back to the Top

Apple M2 Max Chip is a Apple's most powerful silicon chip in their M2-series for right now. The M2 has a 20% faster CPU, 30% faster GPU, and 40% faster Neural Engine than the base M1 Max chip. It can be configured with up to 96GB of high-bandwidth, low-latency unified memory that can be accessed by the 12-core CPU, 38-core GPU (400GB/s memory bandwidth), and 16-core Neural Engine. The M2 Max will be available in Apple's MacBook Pro 14", MacBook Pro 16", and Mac mini.

M2 Max Chip. Image Credit: Apple

M2 Ultra

Back to the Top

The M2 Ultra is composed of two M2 Max chips that are connected together using Apple's UltraFusion Architecture packaging.

The M2 Ultra can be configured with up to 192GB of high-bandwidth, low-latency unified memory that can be accessed by the 24-core CPU, 76-core GPU (800GB/s memory bandwidth), and 32-core Neural Engine. The M2 Ultra is available for the Mac Studio and Mac Pro.

M3‌

Back to the Top


Apple M3 Chip has a 35% faster CPU, 65% faster GPU, and 40% faster Neural Engine than the base M1 chip. It can be configured with up to 24GB of high-bandwidth, low-latency unified memory that can be accessed by the 8-core CPU (4 high-performance and 4 energy-efficient), 10-core GPU (100GB/s memory bandwidth), and 16-core Neural Engine. Available in the MacBook Pro 14” and iMac.


M3 Chip Architecture. Image Credit: Apple


M3 Chip Family efficiency cores performance. Image Credit: Apple


M3 Chip Family Neural Engine performance. Image Credit: Apple

M3 Pro

Back to the Top


Apple M3 Pro Chip has a 30% faster CPU, 40% faster GPU, and 40% faster Neural Engine than the base M1 Pro chip. It can be configured with up to 36GB of high-bandwidth, low-latency unified memory that can be accessed by the 12-core CPU (6 high-performance and 6 energy-efficient), 18-core GPU (150GB/s memory bandwidth), and 16-core Neural Engine. Available in the MacBook Pro 14” and MacBook Pro 16”.


M3 Pro Chip Architecture. Image Credit: Apple

M3 Max

Back to the Top


Apple M3 Max Chip has a 80% faster CPU, 50% faster GPU, and 40% faster Neural Engine than the base M1 Max chip. It can be configured with up to 128GB of high-bandwidth, low-latency unified memory that can be accessed by the 16-core CPU (12 high-performance and 4 energy-efficient), 40-core GPU (400GB/s memory bandwidth), and 16-core Neural Engine. Available in the MacBook Pro 14” and MacBook Pro 16”.


M3 Max Chip Architecture. Image Credit: Apple

M3 Ultra

Back to the Top


Apple M3 Ultra Chip is a Apple's most powerful silicon chip in their M3-series lineup. The M3 Ultra is composed of two M3 Max chips that are connected together using Apple's UltraFusion Architecture packaging. This means the M1 Ultra can be configured with up to 256GB of high-bandwidth, low-latency unified memory that can be accessed by the 32-core CPU (24 high-performance and 8 energy-efficient), 80-core GPU (800GB/s memory bandwidth), and 32-core Neural Engine.


M3 Ultra Chip Architecture.

Apple AR and Vision Pro Headset

Back to the Top

Important Terms to Know

  • Augmented Reality (AR) is an interactive experience of a real-world environment where the objects that reside in the real world are enhanced by computer-generated perceptual information.
  • Virtual Reality (VR) is a simulated experience that can be similar to or completely different from the real world. The applications of virtual reality include entertainment (video games), education (medical or military training) and business (virtual meetings).
  • Mixed Reality (MR) is the merging of real and virtual worlds to produce new environments and visualizations, where physical and digital objects co-exist and interact in real time.
  • Extended Reality (XR) is a concept referring to all real-and-virtual combined environments and human-machine interactions generated by computer technology and wearables. Including augmented reality (AR), mixed reality (MR) and virtual reality (VR).


Vision Pro Headset. Image Credit: Apple


Vision Pro Headset with battery pack. Image Credit: Apple


R1 & M2 chips in the Vision Pro Headset. Image Credit: Apple


visionOS. Image Credit: Apple

  • visionOS is Apple's iOS-like operating system for their upcoming AR/VR (Augmented Reality/Virtual Reality) headset powered by Apple's Silicon M2 and R1 chips. It will have an App Store with apps that include mixed-reality versions of their core Apple apps like Messages, FaceTime, Maps, and AR/VR games from Apple Arcade. Along with features such as Memojis and SharePlay that could be central to the user experience.

visionOS Resources

Apple Vision Pro Headset Specs:

  • Powered by an M2 chip and R1 chip(dedicated toward real-time sensor processing for the 12 cameras and 5 sensors on the Vision Pro headset).
  • High-resolution 4K micro OLED displays.
  • Display refresh rate of 90Hz and supports a special 96Hz mode for 24fps video.
  • Display Pixel Size will be between 3000 ppi-4000 ppi.
  • Display offers a brightness of 5,000 nits.
  • The color gamut is quoted as DCI > 97% DCI.
  • 96W USB-C power adapter.
  • A USB-C port for data transfer.
  • A proprietary magnetic port(MagSafe) to attach the battery pack.
  • Expected battery life of about 2 hours per pack.
  • 12 optical cameras and 5 sensors for tracking movements, mapping the environment, and projecting visual experiences.
  • WiFi 6E, which adds 6GHz spectrum to the 2.4GHz & 5GHz bands for increased bandwidth and less device interference.

OLEDoS (OLED on Silicon) is a display panel that typically has a diagonal length of less than 1 inch and meets the 3000 ppi-4000 ppi resolution criteria of AR/VR device displays. Existing OLED displays use Low-Temperature-Poly-Silicon (LTPS) or Oxide TFT based on glass substrates. OLEDoS uses silicon-wafer-based CMOS substrates. Using silicon substrates, ultra-fine circuit structures typically used in semiconductor processes can be reproduced, which in turn lead to the creation of ultra-high-resolution OLEDs when organic matter is deposited on them.

LG and Sony OLEDoS Display Specs:

  • High-resolution 4K micro OLED displays.
  • Display Pixel Size will be between 3000 ppi-4000 ppi.
  • Display offers a brightness of 5,000 nits.
  • The color gamut is quoted as DCI > 97% DCI.

LG OLEDoS


OLEDoS: Solution for ultra-high resolution

Credit: LG

Sony OLEDoS


Specs for OLED and OLEDoS

Credit: Sony

Tools and Frameworks

  • Reality Composer Pro is a tool that let's you discover how to easily compose, edit, and preview 3D content with Reality Composer Pro. Follow along as you explore this developer tool by setting up a new project, composing scenes, adding particle emitters and audio, and even previewing content on your device.
  • Reality Composer is a powerful tool that makes it easy for you to create interactive augmented reality experiences with no prior 3D experience. The Reality Converter quickly converts your existing 3D models to USDZ so it works seamlessly in our tools and on all AR-enabled iPhone and iPad devices.
  • Apple Vision is a framework that performs face and face landmark detection, text detection, barcode recognition, image registration, and general feature tracking. Vision also allows the use of custom Core ML models for tasks like classification or object detection.
  • Metal shader converter is a tool that converts shader intermediate representations in LLVM IR bytecode into bytecode suitable to be loaded into Metal. It’s available as a library and a standalone executable. All the functionality exposed through the library interface is available via the standalone executable.
  • USDZ is a file format that contains a 3D scene or object saved in the USDZ Universal format, which is developed by Apple and Pixar Animation Studios. It is an uncompressed and unencrypted .ZIP archive that stores a Universal Scene Description (.USD, USDA, or USDC) file, which includes 3D geometry and shading data. USDZ files may also contain .PNG and .JPEG image textures and .M4A, .MP3, or .WAV audio files utilized in the 3D object or scene.
  • ARKit is a set set of software development tools to enable developers to build augmented-reality apps for iOS developed by Apple. The latest version ARKit 3.5 takes advantage of the new LiDAR Scanner and depth sensing system on iPad Pro(2020) to support a new generation of AR apps that use Scene Geometry for enhanced scene understanding and object occlusion.
  • RealityKit is a framework to implement high-performance 3D simulation and rendering with information provided by the ARKit framework to seamlessly integrate virtual objects into the real world.
  • RealityUI is a Swift Package for creating familiar UI Elements and animations in a RealityKit rendered Augmented Reality or Virtual Reality scene.
  • SceneKit is a high-level 3D graphics framework that helps you create 3D animated scenes and effects in your iOS apps.
  • SwiftUI is a user interface toolkit that provides views, controls, and layout structures for declaring your app's user interface. The SwiftUI framework provides event handlers for delivering taps, gestures, and other types of input to your application.
  • UIKit is a framework provides the required infrastructure for your iOS or tvOS apps. It provides the window and view architecture for implementing your interface, the event handling infrastructure for delivering Multi-Touch and other types of input to your app, and the main run loop needed to manage interactions among the user, the system, and your app.
  • SpriteKit is a general-purpose framework for drawing shapes, particles, text, images, and video in two dimensions. It leverages Metal to achieve high-performance rendering, while offering a simple programming interface to make it easy to create games and other graphics-intensive apps.
  • MetalFX is a new API that provides platform optimized graphics effects for Metal applications. With MetalFX Upscaling, your application can now render frames at a lower resolution, reducing rendering time, without compromising rendering quality. We'll also show you how and when to use its two effects: spatial upscaling, which delivers substantial performance gains, and temporal AA and upscaling, which delivers the highest quality rendering.


MetalFX Rendering. Image Credit: Apple

  • Apple Core Animation Framework is a graphics rendering and animation infrastructure that provides high frame rates and smooth animations without burdening the CPU and slowing down your app.
  • Apple Core Graphics Framework is a framework based on the Quartz advanced drawing engine. It provides low-level, lightweight 2D rendering with unmatched output fidelity.
  • GPUImage3 is the third generation of the GPUImage framework, an open source project for performing GPU-accelerated image and video processing on Mac and iOS. This third generation is redesigned to use Apple's Metal in place of OpenGL.
  • XR Interaction Toolkit package is a high-level, component-based, interaction system for creating VR and AR experiences. It provides a framework that makes 3D and UI interactions available from Unity input events. The core of this system is a set of base Interactor and Interactable components, and an Interaction Manager that ties these two types of components together.
  • Input System is a tool that allows your users to control your game or app using a device, touch, or gestures
  • XR Hands package is an API that allows you to access hand tracking data from devices that support hand tracking. To access hand tracking data, you must also enable a provider plug-in that implements the XR hand tracking subsystem.

Developer Resources

Devices powered by Apple Silicon

Back to the Top


Devices powered by Apple Silicon.

macOS

macOS is an advanced desktop operating system (OS) for Apple's series of desktops and laptops.


macOS Sonoma. Source: Apple

These are the Mac computers compatible with macOS Sonoma:

  • iMac 2019 and later
  • iMac Pro 2017
  • Mac Pro 2019 and later
  • Mac Studio 2022 and later
  • MacBook Air 2018 and later
  • MacBook Pro 2018 and later
  • Mac mini 2018 and later

iOS

iOS is an advanced mobile operating system (OS) for Apple's series of iPhone products.


iOS 17. Source: Apple

iPadOS

iPadOS is an advanced mobile operating system (OS) for Apple's series of iPad products.


iPadOS 17. Source: Apple

watchOS

watchOS is an advanced mobile operating system (OS) for Apple's series of Watch products.


watchOS 10. Source: Apple

tvOS

tvOS is an advanced mobile operating system (OS) for Apple's series of TV streaming devices.


tvOS. Source: Apple

visionOS

visionOS is Apple's iOS-like operating system for their upcoming AR/VR (Augmented Reality/Virtual Reality) headset powered by Apple's Silicon M2 and R1 chips. It will have an App Store with apps that include mixed-reality versions of their core Apple apps like Messages, FaceTime, Maps, and AR/VR games from Apple Arcade. Along with features such as Memojis and SharePlay that could be central to the user experience.


visionOS. Image Credit: Apple

Getting Software

Back to the Top

Apple App Store

Developing for the App Store


Homebrew is the missing Package Manager for your macOS, Linux, and Windows 10 (with Windows Subsystem for Linux (WSL)) system. Homebrew is an essential tool for any developer/engineer.


MacPorts Project is an open-source community initiative to design an easy-to-use system for compiling, installing, and upgrading either command-line, X11 or Aqua based open-source software on macOS.

Nix package manager is a cross-platform package manager that utilizes a purely functional deployment model where software is installed into unique directories generated through cryptographic hashes. Choose from Thousands of Packages The Nix Packages collection (Nixpkgs) is a set of over 80 000 packages for the Nix package manager.

  • Nix-darwin is Nix modules for darwin, /etc/nixos/configuration.nix for macOS.

Multi-user installation on macOS:

$ sh <(curl -L https://nixos.org/nix/install)

Note: Nix will install all it's packages within /nix/store.

Note 2: You may need to source the nix profile at this point.

source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh

source /nix/var/nix/profiles/default/etc/profile.d/nix.sh

Productivity & Workflow Apps

Back to the Top

Signal is a state-of-the-art end-to-end encryption (powered by the open source Signal Protocol) messaging app that keeps your conversations secure.


Signal

NordVPN is a VPN service and the flagship product of the cybersecurity company Nord Security. It's available for wireless routers, NAS devices, and other platforms.


NordVPN

WireGuard is a fast, open-source, and secure VPN tunnel. WireGuard allows users to manage and use WireGuard tunnels. The app can import new tunnels from archives and files, from QR codes, or you can create one from scratch.


WireGuard

Tailscale is a open-source mesh VPN alternative built on WireGuard® that makes it easy to connect your devices. It includes features like automatic key rotation, NAT traversal, and single sign-on with two-factor authentication.


Tailscale

BitWarden is a free and open-source password management service that stores sensitive information such as website credentials(logins and passwords) in an encrypted vault while conveniently keeping them synced between all of your devices.


BitWarden

1Blocker is a fast, secure, and robust tool for iPhone, iPad, and Mac that empowers users to put a stop to invasive online content.


1Blocker

Matrix is a client tool that gives you simple HTTP APIs and SDKs (iOS, Android, Web) to create chatrooms, direct chats and chat bots, complete with end-to-end encryption, file transfer, synchronized conversation history, formatted messages, read receipts and more.


Matrix

Element is a Matrix web client built using the Matrix React SDK. It is a robust and reliable hosting service for fast, secure real time communication.


Element

Nextcloud is a suite of client-server software for creating and using file hosting services. It offers an on-premise Universal File Access and sync platform with powerful collaboration capabilities and desktop, mobile and web interfaces.


Nextcloud

Synology is a tool that allows you to easily access and manage files in your Synology Drive on the go. Apart from common file types, such as documents, images, videos and music, you can also open Synology Office document, spreadsheets and slides in the user-friendly viewer provided by Drive.


Synology

Adobe Lightroom Photo Editor is a free, powerful photo & video editor and camera app that empowers you to capture and edit stunning images. It offers photo & video editing tools like sliders to retouch your images, apply photo filters, fine-tune backgrounds, and use transformative presets to quickly add unique adjustments.


Adobe Lightroom Photo Editor

Things is an app that helps you plan your day, manage your projects, and make real progress toward your goals.


Things

Airbuddy 2 is a utility that let's you simply open your AirPods case next to your Mac and see the current status right away, just like how it works on your iPhone. A single click gets you connected, a swipe down lets you connect and change listenings modes at the same time. It has a fully customizable battery alerts help you keep track of your device's batteries.


Airbuddy 2

Fantastical 3 is a calendar app that works seamlessly across your Mac, iPad, iPhone, and Apple Watch.


Fantastical 3

Bartender is an app for macOS that superpowers your menu bar, giving you total control over your menu bar items, what's displayed, and when, with menu bar items only showing when you need them. It improves your workflow with quick reveal, search, custom hotkeys and triggers, and lots more.


Bartender menu bar tray


Bartender Settings

Magnet is an app that keeps your workspace organized. magnet is activated by dragging, customizable keyboard shortcuts or via menu bar, it declutters your screen by snapping windows into organized tiles.


Magnet

AltTab is an app that brings the power of Windows’s “alt-tab” window switcher to macOS.


AltTab

MonitorControl is an app that controls your external display brightness and volume and shows native OSD. Use menulet sliders or the keyboard, including native Apple keys.


MonitorControl

WebCatalog is an app that turns any Website into Real Desktop Apps.


WebCatalog

Maccy is a lightweight clipboard manager for macOS. It keeps the history of what you copy and lets you quickly navigate, search, and use previous clipboard contents.


Maccy clipboard manager

Daisydisk is a utility that provides a visual breakdown of your disk space in form of an interactive map, reveal the biggest space wasters, and remove them with a simple drag and drop. It supports all kinds of local drives, as well as the most popular cloud disks.


Daisydisk

Page screenshot for Safari is an awesome extension, just a click away, ready to use every time you need to capture a webpage screenshot, either the full page or just part of it. Along with your pictures will also automatically open in Preview for easy editing (annotations, blurring sensitive info, printing, drawing, sharing).


Page screenshot for Safari

Paste is a Clipboard manager for Mac, iPhone, and iPad.


Paste

PasteBot is an indispensable tool to improve your productivity. It quickly recalls clippings that you have copied before and apply powerful text filters to format before pasting. Queue up multiple clippings to paste in sequence.


PasteBot

Speedcut is a tool that lets your remove backgrounds from photos straight from your Mac's menu bar.


Speedcut

Pulse is a powerful logging system for Apple Platforms builtin in SwiftUI. It allows you to record and inspect logs and URLSession network requests right from your iOS app. Shared logs and view them in Pulse Pro or use remote logging to see them in real-time. Logs are stored locally and never leave your devices.

p align="center">
Pulse

Cleaner One Pro is an all-in-one Mac Master Cleaner App. It can optimize your disk usage, free up space on your Mac, keep the hard drive clean, remove duplicate photos and other files, manage your apps, and much more.


Cleaner One Pro

Yabai is a window management utility that is designed to work as an extension to the built-in window manager of macOS.


Bear is a Private Markdown Editor for iPhone, iPad and Mac. It uses todos to stay on task across every device. Organize easily Link notes to each other to build a body of work. Add hashtags to organize the way you think. Use Face/Touch ID to protect sensitive notes.


Bear

Obsidian is a powerful knowledge base that works on top of a local folder of plain text Markdown files. It comes with 25 core plugins, 638 community plugins, and 130 themes, plus custom styling, you can tweak Obsidian to work and look exactly how you want it.


Obsidian

MarkText is a simple and elegant open-source markdown editor that focused on speed and usability.


MarkText

1Focus is an App and Website Blocker to keep you focused on your work. Block specific apps such as email, games or unsupported web browsers. Also, block internet access by blocking the installed web browsers and the App Store.


1Focus

Harvest is an easy Time Tracking Software With Invoicing. It creates a project Create entries for your projects and tasks, or import them via one of our integrations.


Harvest

MindNode is a map and brainstorming tool that lets you capture, organize, style and share your thoughts. Capture your thoughts Organize your ideas Style your mind map Discreetly Powerful All the features you need.


MindNode

Unclutter is a 3-in-1 productivity app to power up your efficiency and comfort on Mac during the day. It's a smart and super handy place on your desktop for storing notes, files and pasteboard clips.


Unclutter

Warp terminal is a blazingly fast, rust-based terminal reimagined from the ground up to work like a modern app.


Warp

Jettison is a tool that automatically ejects external disks from your Mac before your computer goes to sleep. Simply close the lid of your MacBook and Jettison will automatically eject your backup drive, iPod, or whatever is connected so you can safely unplug it.


Jettison

Numi is a calculator that magically combines calculations with text, and allows you to freely share your computations. Numi combines text editor and calculator Support plain English.


NuMi

Dropzone is a productivity app for the Mac that makes it faster and easier to move and copy files, launch applications, upload to many different services, and more.


Dropzone

System Color Picker is the macOS color picker as an app with lots of extra features.


System Color Picker

Raycast is a blazingly fast, totally extendable launcher. It lets you complete tasks, calculate, share common links, and much more.


Tinkertool is an application that gives you access to additional preference settings Apple has built into MacOS. This allows to activate hidden features in the operating system and in some of the applications delivered with the system.


Tinkertool

App Cleaner is an application that uninstall/remove applications from Mac entirely with all their preferences, caches and other bits and pieces.


App Cleaner

Infuse is a Video Player for iOS, Apple TV, and Mac. It plays every video file ever created to avoid wasting hours converting and transcoding files.


Infuse Video Player

Secure & Privacy Focused Web Browsers

Back to the Top

Note: While Safari is a great browser that comes included on all Apple devices. It may not have all the extensions you need for your workflow so I recommend checking out the several great options below.

Mozilla Firefox is a free and open-source web browser developed by the Mozilla Foundation.


Firefox

Brave is a fast, private and secure web browser for PC, Mac and mobile. It comes with Brave Search, which is a private search engine that puts you first, not big tech for those that don't want to use Google Search.


Brave

Ungoogled-Chromium is a lightweight approach to removing Google web service dependency.


Ungoogled-Chromium

Vivaldi is a fast, private and secure web browser for PC, Mac and mobile. It comes with built-in features like Notes, Screen Capture, Image Properties and (a lot) more.


Vivaldi

Ghostery Dawn is a fast, private and secure web browser for PC, Mac and mobile. It comes with the complete Ghostery Privacy Suite including Ghostery Glow a private search engine that does not log your search history, which means you get served objective results, not results that are filtered by the likelihood you’ll click on them.


Ghostery Dawn

DuckDuckGo Privacy Browser is a fast, private and secure web browser for MacOS and mobile(iOS and Android).


DuckDuckGo

Privacy & Security Focused Browser extensions

Back to the Top

UBlock Origin is a free and open-source, cross-platform browser extension for content filtering primarily aimed at neutralizing privacy invasion in an efficient, user-friendly method.

Privacy Badger is a browser extension that automatically learns to block invisible trackers.

DuckDuckGo Privacy Essentials is an extension that seamlessly helps prevent your personal information from being exposed during everyday online activity.

Ghostery is a comprehensive privacy protection Ad Blocker browser extension.

HTTPS Everywhere is an extension created by EFF and the Tor Project which automatically switches thousands of sites from insecure "http" to secure "https".

CleanURLs is an extension will automatically remove tracking elements from URLs to help protect your privacy when browsing through the Internet.

PixelBlock is an Gmail extension that blocks email tracking attempts used to detect when you open and read emails.

Sitejabber is an extension for consumers to find trustworthy online businesses and avoid scams.

Firefox extension

Chrome extension

1Password is a password manager that provides a place for users to store various passwords, software licenses, and other sensitive information in a virtual vault that is locked with a PBKDF2-guarded master password.

Bitwarden is a free and open-source password management service that stores sensitive information such as website credentials in an encrypted vault.

Guardio is a lightweight extension designed to help you browse quickly and securely. It will clean your browser, speed it up, and protect your private information.

OneTab is an extension that converts your tabs to a list and speeds up your browser.

Privacy-focused Search Engines

Back to the Top










Microsoft Office Alternatives

Back to the Top

OnlyOffice is a secure offline/online office suite highly compatible with MS Office formats for Windows, Mac and Linux.


OnlyOffice

FreeOffice is a secure office suite highly compatible with MS Office formats for Windows, Mac and Linux.


FreeOffice

LibreOffice is a free and open-source office productivity software suite similar to Microsoft Office.


LibreOffice

Universal Control

Back to the Top

Universal Control is a software feature for Apple devices such as MacBooks and iPads that makes it possible to use a single keyboard, mouse, and trackpad with your Mac and iPad as long as they're side-by-side. Much like SideCar, there are limited settings for Universal Control. Without a second device connected, you can go to System Preferences -> Displays and click Advanced to pull up Universal Control settings. If a device is already connected, you'll have to go to Displays -> Display Settings -> Advanced.


Bluetooth, Wi-Fi, and Handoff must be enabled on each device, and they must be within 30 feet. If you prefer to use Universal Control wired, the devices can be connected via USB and you must trust your Mac on your iPad. At the moment, Apple does not mention support for Ethernet but we will test this ourselves during the beta period.

You must also have supported devices. Apple says supported devices include:

  • MacBook Pro (2016 and later)
  • MacBook (2016 and later)
  • MacBook Air (2018 and later)
  • iMac (2017 and later)
  • iMac (5K Retina 27-inch, Late 2015)
  • iMac Pro, Mac mini (2018 and later)
  • Mac Pro (2019)
  • Any iPad Pro
  • iPad Air (3rd generation and later)
  • iPad (6th generation and later)
  • iPad mini (5th generation and later)


Stage Manager

Back to the Top

Stage Manager is an iPadOS feature that provides better support for external displays. Stage Manager allows the iPad Air(M1 chip) and iPad Pro(M1 chip):

  • Fast access to windows and apps: The windows of the apps you’re working in are displayed prominently in the center, and other apps are arranged on the left side in order of recent use.
  • Resizable windows: Resize your windows to make them the perfect size for your task.
  • Center app: Focus on the app you’re working with without going full screen.
  • Overlapping windows: Create overlapping windows of different sizes in a single view, giving you the control to arrange your ideal workspace.
  • Group apps together: Drag and drop windows from the side or open apps from the Dock to create app sets that you can always get back to.


File Sync/Transfer

Back to Top

Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers in real time.

Seafile is an open source file sync&share solution designed for high reliability, performance and productivity. Sync, share and collaborate across devices and teams.

Synology is a tool that allows you to easily access and manage files in your Synology Drive on the go. Apart from common file types, such as documents, images, videos and music, you can also open Synology Office document, spreadsheets and slides in the user-friendly viewer provided by Drive.

Nextcloud is a suite of client-server software for creating and using file hosting services. It offers an on-premise Universal File Access and sync platform with powerful collaboration capabilities and desktop, mobile and web interfaces.

TeraCopy for Mac is a program to copy and paste large files at a high speed. The program is used for frequent file transfers, large file sizes, moving files from separate SSD drives/Hard drives.

FileRun is a self-hosted Google Drive alternative. It is a full featured web based file manager with an easy to use user interface.

FileBrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory.

Rsync is a utility in the command line which enables users to transfer and synchronize files efficiently between a computer and an external hard drive in the entire connected network.

rsync.net is a Cloud Storage for Offsite Backup that give you an empty UNIX filesystem to access with any SSH tool. Built on ZFS for data security and fault tolerance with support for rsync/sftp/scp/borg/rclone/restic/git-annex.

Warpinator is a free, open-source tool for sending and receiving files between computers that are on the same network.

FileZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.

WinFsp is a set of software components for Windows computers that allows the creation of user mode file systems. In this sense it is similar to FUSE (Filesystem in Userspace), which provides the same functionality on UNIX-like computers.

SSHFS-Win is a minimal port of SSHFS to Windows. Looking under the hood it uses Cygwin for the POSIX environment and WinFsp for the FUSE (Filesystem in Userspace) functionality.

RiftShare is a cross platform (Windows, MacOS, Linux) file sharing tool that supports fully encrypted transfers both on the local network and off network using a simple passphrase. RiftShare uses magic-wormhole under the hood and is compatible with other magic-wormhole clients. It is also fully open source and licensed under the GPLv3.

Usermode FTP Server is a tool that let's you start an FTP server as user and transfer files with any FTP client. Allowing you to access your files directly with many file browsers' builtin FTP support: Windows File Explorer, Thunar, Gnome Files, Dolphin and many more.

TagSpaces is a free, no vendor lock-in, open source application for organizing, annotating and managing local files with the help of tags. It features advanced note taking functionalities and some capabilities of to-do apps. It's available for Windows, Linux, Mac OS and Android.

Replacing iCloud with Nexcloud

Back to the Top


Replacing these iCloud services:

Nextcloud is an industry-leading, on-premises content collaboration platform for file sync & share and communication server. It is fully open source and you can host it yourself or pay a company to do it for you. Also checkout the following links below:


Nexcloud login screen

Nextcloud Hub is a tool that allows you to share and collaborate on documents, send and receive email, manage your calendar and have video chats without data leaks. As fully on-premises solution, Nextcloud Hub provides the benefits of online collaboration without the compliance and security risks.


Nexcloud Hub

Nextcloud AIO (All In One) is a tool that provides easy deployment and maintenance with most features included in this one Nextcloud instance.

Features it includes:

  • Nextcloud
  • Nextcloud Office
  • High performance backend for Nextcloud Files
  • High performance backend for Nextcloud Talk
  • Backup solution (based on BorgBackup)
  • Imaginary
  • ClamAV
  • Fulltextsearch

Nextcloud Desktop Client is a tool to synchronize files from Nextcloud Server with your computer.

Nextcloud Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.

Nextcloud Files is a tool tool that allows your employees have easy access to their files, photos and documents to work and can share and collaborate with team members, customers and partners. So IT knows nobody besides those they shared with has access to those files.

Nextcloud Talk is a tool that protects your communication better than other team collaboration platforms like Microsoft Teams or Slack, making sure your data stays on your servers. It also goes further than other encrypted communication technologies by keeping even metadata from leaking.

Nextcloud Home is a tool that allows you store your documents, calendar, contacts and photos on your server at home, at one of at one Nextcloud's providers or in a data center you trust.

Nextcloud Enterprise is a service that gives professional organizations software optimized and tested for mission critical environments.

Nextcloud Outlook Integration is a tool that automatically upload files to replace large attachments or integrate Calendars and Contacts in Microsoft Outlook.

Collabora Online in Nextcloud is a powerful LibreOffice-based online office suite with collaborative editing, which supports all major document, spreadsheet and presentation file formats and works in all modern browsers.

ONLYOFFICE integration in Nextcloud is a service that empowers your users to collaborate on office documents with team members in real time. It has compatibility with Microsoft Office formats means perfect documents, every time.

Nextcloud VM(virtual machine appliance) is a set of carefully crafted family of *nix scripts, which interactively guide you through a quality-controlled installation of a Nextcloud instance for Home/SME Server and scripts for Raspberry Pi 4. It is Community developed and maintained.

Adding External Storage

Back to the Top

Sabrent XTRM Q is a perfect SSD for all your creative pursuits: high-res photos, videos, sound files, etc. It's perfect for saving, creating and editing available in 500GB, 1TB, 2TB, and 4TB drives.

Shell Thunder is a high-performance Intel-Certified Thunderbolt 3 SSD Enclosure engineered for active cooling with smart fan technology. Shell Thunder is designed for 2280 and 2260 m.2 NVME SSDs for macOS and Windows.

Orico USB4.0 NVMe SSD Enclosure is a high-performance SSD Enclosure engineered with up to a 40Gbps transmission rate and 2 TB capacity. It supports Windows, macOS, and Linux devices.

USB-C to Lightning Cable (2 m) is cable to connect your iPhone, iPad, or iPod with Lightning connector to your USB-C or Thunderbolt 3 (USB-C) enabled Mac for syncing and charging, or to your USB-C enabled iPad for charging.

SanDisk Phone Drive (iPhone, iPad, or MacBook) up to 256GB.

More fast External Storage options for MacOS/iOS/iPadOS:

Backups

Back to the Top

Proxmox Backup Server is an enterprise backup solution for backing up and restoring VMs, containers, and physical hosts. The open-source solution supports incremental backups, deduplication, Zstandard compression, and authenticated encryption.

Borgmatic is a simple, configuration-driven backup software for servers and workstations. It protects your files with client-side encryption. Backup your databases too. Monitor it all with integrated third-party services.

BorgWarehouse is a fast and modern WebUI for a BorgBackup's central repository server.

Emborg is a simple command line utility to orchestrate backups. It is built as a front-end to Borg, a powerful and fast de-duplicating backup program.

Vorta is a backup client for macOS and Linux desktops. It integrates the mighty Borg Backup with your favorite desktop environment to protect your data from disk failure, ransomware and theft.

rsync.net is a Cloud Storage for Offsite Backup that give you an empty UNIX filesystem to access with any SSH tool. Built on ZFS for data security and fault tolerance with support for rsync/sftp/scp/borg/rclone/restic/git-annex.

BackupPC is a high-performance, enterprise-grade system for backing up Linux, Windows and macOS PCs and laptops to a server's disk. BackupPC is highly configurable and easy to install and maintain.

UrBackup is an easy to setup Open Source client/server backup system, that through a combination of image and file backups accomplishes both data safety and a fast restoration time. File and image backups are made while the system is running without interrupting current processes. Available for Windows, macOS, and Linux.

Kopia is a user-friendly desktop app for Windows, macOS, and Linux which allows you to create snapshots, define policies, and restore files quickly with Fast and Encrypted Backups.

rsnapshot is a filesystem snapshot utility based on rsync. This makes it easy to make periodic snapshots of local machines, and remote machines over ssh.

Proton Drive is an end-to-end encrypted Swiss storage space for your files, photos, and videos, ensuring that nobody, except those authorized by you, can access your data.

pCloud is a secure place for your photos, videos and documents from every device, anywhere you go. pCloud starts with 10 GB free storage and automatically backup your photos and videos and free up space from your device.

SSD Drive Health/Data Recovery

Back to the Top


MacOS Recovery Options

Disk Drill is a free tool that can scan and recover data from virtually any storage device — including internal Macintosh hard drives, external hard drives, cameras, iPhones, iPads, iPods, Android devices, USB flash drives, Kindles, and memory cards. It can read your device even if it is failing, unreadable, or has lost a partition. Combining several powerful scanning algorithms, Disk Drill provides a complete Mac data recovery solution.

DriveDx is an advanced drive-health diagnostic and monitoring utility. It not only monitors the drive’s built-in S.M.A.R.T. status, but also analyzes the changes of all drive health indicators that are closely related to SSD or HDD failures (like SSD wear out / endurance, reallocated bad sectors, offline bad sectors, pending sectors, I/O errors, and more) and alerts the user immediately if anything goes wrong.

AmorphousDiskMark is a tool that measures storage performance.

Checking Battery Health

Back to the Top

coconutBattery is a tool that keeps you aware of your current battery health. It shows you live information about the battery quality in your Mac, iPhone and iPad.


Checking Battery on your Mac device.


Checking Battery on your iOS device.

Low Power Mode

If you have a Mac laptop, you can change the options below to reduce energy use and optimize the lifespan of your battery.

On your Mac, choose Apple menu > System Settings, then click Battery in the sidebar. (You may need to scroll down.)

Do any of the following:

  • Click the pop-up menu next to Low Power Mode on the right, then choose “Always,” “Only on battery,” or “Only on power adapter.”

  • Click the Info button next to Battery Health on the right, then turn on Optimized Battery Charging and “Manage battery longevity.”

  • Click Options on the right, then turn on “Put hard disks to sleep when possible” and “Automatic graphics switching.”


Cooldown is a simple menu bar app that allows you to quickly toggle Low Power Mode on and off.

Planned features

  • Automatically toggle LPM at certain times.
  • Automatically toggle LPM when certain apps are opened.
  • Design improvements.


Charging/Powerbanks

Back to the Top

While the Apple Silicon Macbooks, iPhones, iPads, and Air Pods have great battery life. It's always good to have a portable USB-C powerbank for charging your device when you're traveling, conferences, etc..

Anker PowerCore III (45W USB-C PD output)

Anker 747 Charger (GaNPrime 150W)

Anker 737 Charger (GaNPrime 120W)

Anker 736 Charger (Nano II 100W)

Anker 735 Charger (GaNPrime 65W)

Anker 733 Power Bank (GaNPrime PowerCore 65W)

Anker 525 Power Bank 20000mAh

Omni 20+ 20000mAh Laptop Power Bank

MAXOAK Portable Laptop Charger(26756mAh/99Wh), Portable Power Station with AC Outlet PD 45W USB-C Solar Generator Battery Backup Power Supply

MAXOAK K2 185Wh/50000mAh Power Bank for Laptop

HenHot 65W USB-C Portable Charger

Baseus 65W USB-C Power Bank with Built-in Cable

USB-C Adapters

Back to Top

USB-C Fast Charging Cables

Back to Top

MacOS/iOS Security Hardening

Back to the Top

Resources

Enable full disk encryption

Full disk encryption is pretty much self-explanatory. You want to encrypt your disk, so you prevent unauthorized access to your data.

To turn on full disk encryption on macOS:

  1. Go to System Preferences > Security & Privacy > FileVault
  2. Click on the lock on the bottom left side of the screen to authenticate (you need to authenticate to make changes, in this case, to turn on full disk encryption)
  3. Click Turn On FileVault... and follow the procedure step by step


File Vault

Hardened Runtime is a tool that along with System Integrity Protection (SIP), protects the runtime integrity of your software by preventing certain classes of exploits, like code injection, dynamically linked library (DLL) hijacking, and process memory space tampering.

System Integrity Protection (SIP) is a security technology in OS X El Capitan and later that's designed to help prevent potentially malicious software from modifying protected files and folders on your Mac.

Effaceable Storage is a dedicated area of NAND storage, used to store cryptographic keys, that can be addressed directly and wiped securely.

SepOS is the Secure Enclave firmware, based on an Apple-customized version of the L4 microkernel.

Pulse is a powerful logging system for Apple Platforms builtin in SwiftUI. It allows you to record and inspect logs and URLSession network requests right from your iOS app. Shared logs and view them in Pulse Pro or use remote logging to see them in real-time. Logs are stored locally and never leave your devices.

Lynis is a security auditing tool for systems based on UNIX like Linux, macOS, BSD, and others. It performs an in-depth security scan and runs on the system itself. The primary goal is to test security defenses and provide tips for further system hardening. It will also scan for general system information, vulnerable software packages, and possible configuration issues.

Pareto Security is a MenuBar app to automatically audit your Mac for basic security hygiene.

GRR Rapid Response is an incident response framework focused on remote live forensics.

mac_apt is a DFIR (Digital Forensics and Incident Response) tool for macOS/iOS to process Mac computer full disk images (or live machines) and extract data/metadata useful for forensic investigation. It is a python based framework, which has plugins to process individual artifacts (such as Safari internet history, Network interfaces, Recently accessed files & volumes, etc..)

AdGuard DNS is a tool that let's you control all web traffic on your devices, block ads, trackers, and malicious domains.

Quad9 is a free service that replaces your default ISP or enterprise Domain Name Server (DNS) configuration. When your computer performs any Internet transaction that uses the DNS (and most transactions do), Quad9 blocks lookups of malicious host names from an up-to-the-minute list of threats. This blocking action protects your computer, mobile device, or IoT systems against a wide range of threats such as malware, phishing, spyware, and botnets, and it can improve performance in addition to guaranteeing privacy.

MacOS Forensic Analysis

Back to The Top

MacOS Forensic Analysis is the process of building in-depth digital forensics knowledge of MacOS and iOS systems.

  • Memoryze for Mac - Memoryze for Mac is Memoryze but then for Macs. A lower number of features, however.
  • Knockknock - Displays persistent items(scripts, commands, binaries, etc.) that are set to execute automatically on MacOS.
  • macOS Artifact Parsing Tool (mac_apt) - Plugin based forensics framework for quick mac triage that works on live machines, disk images or individual artifact files.
  • MacOS Auditor - Free Mac MacOScomputer forensics tool.
  • MacOS Collector - MacOS Auditor offshoot for live response.
  • The ESF Playground - A tool to view the events in Apple Endpoint Security Framework (ESF) in real time.

VPN

Back to The Top

VPN (Virtual Private Network) is a service that encrypts your internet traffic on unsecured networks to protect your online identity, hide your IP address, and shield your online data from third parties.

  • Wireguard - A new minimal VPN Solution that is very fast.
  • Tailscale - The easiest, most secure way to use WireGuard and 2FA. Tailscale helps you manage and access private or shared resources from anywhere in the world.
  • NetBird - An open-source VPN management platform built on top of WireGuard® making it easy to create secure private networks for your organization or home.
  • SoftEther - Multi-protocol software VPN with advanced features.
  • OpenVPN - Uses a custom security protocol that utilizes SSL/TLS for key exchange.
  • Pritunl - OpenVPN based solution that's easy to set up.
  • sshuttle - Poor man's VPN.
  • strongSwan - Complete IPsec implementation for Linux.
  • tinc - Distributed p2p VPN.

SSH

Back to The Top

Secure Shell Protocol (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network.

  • Tailscale SSH is a service that allows Tailscale to manage the authentication and authorization of SSH connections on your tailnet.
  • SSHrc - sources ~/.sshrc on your local computer after logging in remotely.
  • StormSSH - A command line tool to manage SSH connections.
  • Advanced SSH config - Enhances ssh_config file capabilities, completely transparent.
  • AutoSSH - Automatically respawn ssh session after network interruption.
  • Cluster SSH - Controls a number of xterm windows via a single graphical console.
  • DSH - Dancer's shell / distributed shell - Wrapper for executing multiple remote shell commands from one command line.
  • Mosh - is a command-line program, like SSH. You can use it inside xterm, gnome-terminal, urxvt, Terminal.app, iTerm, emacs, screen, or tmux.
  • Parallel SSH is an asynchronous parallel SSH library designed for large scale automation. It differentiates ifself from alternatives, other libraries and higher level frameworks like Ansible or Chef.

Firewall Filtering

Back to The Top

Firewall is a system that provides network security by filtering incoming and outgoing network traffic based on a set of user-defined rules. In general, the purpose of a firewall is to reduce or eliminate the occurrence of unwanted network communications while allowing all legitimate communication to flow freely.

Little Snitch is a host-based application firewall for macOS. It can be used to monitor applications, preventing or permitting them to connect to attached networks through advanced rules.


MFA

Back to The Top

Multifactor Authentication (MFA) is when you sign into your online accounts - a process we call "authentication" - you're proving to the service that you are who you say you are. Traditionally that's been done with a username and a password.

YubiKey is a security device that makes two-factor authentication as simple as possible. Instead of a code being texted to you, or generated by an app on your phone, you simply press a button on your YubiKey. Each device has a unique code built on to it, which is used to generate codes that help confirm your identity. The YubiKey USB authenticator includes NFC and has multi-protocol support including FIDO2, FIDO U2F, Yubico OTP, OATH-TOTP, OATH-HOTP, Smart card (PIV), OpenPGP, and Challenge-Response capability to give you strong hardware-based authentication.

Authelia is an open-source authentication and authorization server providing two-factor authentication and single sign-on (SSO) for your applications via a web portal. It acts as a companion for reverse proxies by allowing, denying, or redirecting requests.

ZITADEL is an open-source authentication and authorization server providing two-factor authentication combining the best of Auth0 and Keycloak. Built for the serverless era. It includes Multi-tenancy with branding customization, secure login, self-service, OpenID Connect, OAuth2.x, SAML2, LDAP, Passwordless with FIDO2 (including Passkeys), OTP, U2F, and an unlimited audit trail is there for you, ready to use.

Microsoft Authenticator is an app helps you sign in to your accounts when you're using two-step verification. Two-step verification helps you to use your accounts more securely because passwords can be forgotten, stolen, or compromised.

Google Authenticator is a software authenticator developed by Google that implements multi-factor authentication services using the Time-based one-time password and HMAC-based one-time password, for authenticating users of software applications.

Disk Image Creation Tools

Back to Top

Disk Image Creation - is a process of Data backup and recovery where creating an image ensures that the original data on the disk is preserved. With an exact copy, you can extract the data from the disk image anytime you need.

  • Bitscout - Bitscout by Vitaly Kamluk helps you build your fully-trusted customizable LiveCD/LiveUSB image to be used for remote digital forensics (or perhaps any other task of your choice). It is meant to be transparent and monitorable by the owner of the system, forensically sound, customizable and compact.
  • Magnet ACQUIRE - ACQUIRE by Magnet Forensics allows various types of disk acquisitions to be performed on Windows, Linux, and macOS as well as mobile operating systems (Android and iOS).

Evidence Collection

Back to Top

Evidence Collection - is a set of protocols that apply to both pre-collection and post-collection evidence. This process helps with Preserving & Collecting Evidence making sure the evidence is not destroyed or devalued as a source of information.

  • Acquire - Acquire is a tool to quickly gather forensic artifacts from disk images or a live system into a lightweight container. This makes Acquire an excellent tool to, among others, speedup the process of digital forensic triage. It uses Dissect to gather that information from the raw disk, if possible.
  • artifactcollector - The artifactcollector project provides a software that collects forensic artifacts on systems.
  • bulk_extractor - Computer forensics tool that scans a disk image, a file, or a directory of files and extracts useful information without parsing the file system or file system structures. Because of ignoring the file system structure, the program distinguishes itself in terms of speed and thoroughness.
  • Forensic Artifacts - Digital Forensics Artifact Repository
  • Live Response Collection - Automated tool that collects volatile data from Windows, macOS, and *nix based operating systems.
  • Margarita Shotgun - Command line utility (that works with or without Amazon EC2 instances) to parallelize remote memory acquisition.
  • UAC - UAC (Unix-like Artifacts Collector) is a Live Response collection script for Incident Response that makes use of native binaries and tools to automate the collection of AIX, Android, ESXi, FreeBSD, Linux, macOS, NetBSD, NetScaler, OpenBSD and Solaris systems artifacts.

Incident Management

Back to Top

Incident Management - is the process used by development and IT Operations teams to respond to an unplanned event or service interruption and restore the service to its operational state.

  • Catalyst - A free SOAR system that helps to automate alert handling and incident response processes.
  • CyberCPR - Community and commercial incident management tool with Need-to-Know built in to support GDPR compliance while handling sensitive incidents.
  • Cyphon - Cyphon eliminates the headaches of incident management by streamlining a multitude of related tasks through a single platform. It receives, processes and triages events to provide an all-encompassing solution for your analytic workflow — aggregating data, bundling and prioritizing alerts, and empowering analysts to investigate and document incidents.
  • CORTEX XSOAR - Palo Alto security orchestration, automation and response platform with full Incident lifecycle management and many integrations to enhance automations.
  • DFTimewolf - A framework for orchestrating forensic collection, processing and data export.
  • DFIRTrack - Incident Response tracking application handling one or more incidents via cases and tasks with a lot of affected systems and artifacts.
  • Fast Incident Response (FIR) - Cybersecurity incident management platform designed with agility and speed in mind. It allows for easy creation, tracking, and reporting of cybersecurity incidents and is useful for CSIRTs, CERTs and SOCs alike.
  • RTIR - Request Tracker for Incident Response (RTIR) is the premier open source incident handling system targeted for computer security teams. We worked with over a dozen CERT and CSIRT teams around the world to help you handle the ever-increasing volume of incident reports. RTIR builds on all the features of Request Tracker.
  • Sandia Cyber Omni Tracker (SCOT) - Incident Response collaboration and knowledge capture tool focused on flexibility and ease of use. Our goal is to add value to the incident response process without burdening the user.
  • Shuffle - A general purpose security automation platform focused on accessibility.
  • threat_note - Lightweight investigation notebook that allows security researchers the ability to register and retrieve indicators related to their research.
  • Zenduty - Zenduty is a novel incident management platform providing end-to-end incident alerting, on-call management and response orchestration, giving teams greater control and automation over the incident management lifecycle.

Sandboxing/Reversing Tools

Back to Top

Sandboxing - is a security practice in which you use an isolated environment, or a "sandbox," for testing. Within the sandbox you run code, analyze the code in a safe, isolated environment without affecting the application, system or platform.

Reverse-engineering - is the process of dismantling a device, system, or piece of software to see how it works. It's done primarily to analyze and gain knowledge about the way a product works but often is used to duplicate or enhance the product.

  • Any Run - Interactive online malware analysis service for dynamic and static research of most types of threats using any environment.
  • CAPEv2 - Malware Configuration And Payload Extraction.
  • Cutter - Reverse engineering platform powered by Radare2.
  • Ghidra - Software Reverse Engineering Framework.
  • Hybrid-Analysis - Free powerful online sandbox by CrowdStrike.
  • Intezer - Intezer Analyze dives into Windows binaries to detect micro-code similarities to known threats, in order to provide accurate yet easy-to-understand results.
  • Joe Sandbox (Community) - Joe Sandbox detects and analyzes potential malicious files and URLs on Windows, Android, MacOS, Linux, and iOS for suspicious activities; providing comprehensive and detailed analysis reports.
  • Mastiff - Static analysis framework that automates the process of extracting key characteristics from a number of different file formats.
  • Metadefender Cloud - Free threat intelligence platform providing multiscanning, data sanitization and vulnerability assessment of files.
  • Radare2 - Reverse engineering framework and command-line toolset.
  • Reverse.IT - Alternative domain for the Hybrid-Analysis tool provided by CrowdStrike.
  • StringSifter - A machine learning tool that ranks strings based on their relevance for malware analysis.
  • Threat.Zone - Cloud based threat analysis platform which include sandbox, CDR and interactive analysis for researchers.
  • Valkyrie Comodo - Valkyrie uses run-time behavior and hundreds of features from a file to perform analysis.
  • Viper - Python based binary analysis and management framework, that works well with Cuckoo and YARA.
  • Virustotal - Free online service that analyzes files and URLs enabling the identification of viruses, worms, trojans and other kinds of malicious content detected by antivirus engines and website scanners.

Gaming

Back to the Top


Gaming on Apple Silicon Resources

MacOS Game Mode

Back to the Top

Game Mode is a tool enabled in macOS 14, it prioritizes CPU and GPU power for the game title you're running. Optimizing your gaming experience across the board with smoother and more consistent frame rates. For example, Game Mode makes gaming on Mac more immersive by lowering audio latency with AirPods, and significantly reducing input latency with popular game controllers like those for Xbox and PlayStation by doubling the Bluetooth sampling rate.

  • Game Controller is an Apple framework to support users interacting with your app using a physical or virtual game controller. Game controllers include third-party products, such as the DualShock 4, DualSense, and Xbox, as well as the mouse, keyboard, Siri Remote, and racing wheels.


Game Mode. Image Credit: Apple

Game Porting Toolkit

Back to the Top


Game Porting Toolkit is Apple's new translation layer which combines Wine with Apple's own D3DMetal which supports DirectX 9 through 12. Games that use anti-cheat(Easy Anti-Cheat and BattleEye) or aggressive DRM generally don't work. Games that require AVX/AVX 2 CPUs also don't work.

  • The Game Porting Toolkit builds a dxil to metallib converter and DirectX11/DirectX12 to Metal runtime translator. Non-graphics APIs are translated by Wine and do not use any tech from moltenVK, DXVK; or SPIRV-Cross. The Metal shader converter can be shipped by games and can be used in the game developer asset pipelines.

  • Metal shader converter is a tool that converts shader intermediate representations in LLVM IR bytecode into bytecode suitable to be loaded into Metal. It’s available as a library and a standalone executable. All the functionality exposed through the library interface is available via the standalone executable.


Game Porting Toolkit running Cyberpunk 2077 on a M1 Macbook. Image Credit: Isaac Marovitz

Game Porting Toolkit gets a BIG SURPRISE update! | Andrew Tsai The Mac gaming DirectX 12 Revolution is NOW! Play ANY Windows Game on Mac with the Game Porting Toolkit! | Step-by-Step Guide

Working Games:

  • ALL WORKING GAMES LIST (Game Porting Toolkit = Windows DX12 Latest Games for Apple Silicon)

  • Cyberpunk 2077

  • Elden Ring

  • Diablo IV

  • Hogwarts Legacy

  • Crysis Remastered

  • Cuphead

  • Halo 3 (No Online due to Easy Anti-Cheat Compatibility)

  • Metal Gear Solid V: The Phantom Pain

  • Final Fantasy VII Remake Intergrade (~50 FPS on High settings at 1080p with M1 Pro.)

  • God of War (Works somewhat well on M1 Pro (16gb), wouldn't recommend lesser hardware.)

  • Deep Rock Galactic

  • Sonic Omens

  • Sonic P-06

  • Scarlet Nexus

  • Dyson Sphere Program (some objects and main character weren't visible before)

  • Derail Valley (good performance, no missing manuals, and in-game objects for train operation like on CrossOver)

  • Spider-Man (2018)

  • Spider-Man Miles Morales - requires Windows version fix.

  • Warframe - To get installer/launcher working add dwrite (disabled) to library overrides in winecfg.

  • QUBE 2

  • Deceive Inc. - works well if launched without EAC.

  • Risk of Rain 2 (does not require -disable-gpu-skinning like Crossover 22.)

  • Tetris Effect: (Connected - Game window doesn't like retina mode, works otherwise.)

  • Bloodstained: Ritual of the Night

System Requirements

  • macOS Sonoma should be used, currently it is in beta.
  • macOS Ventura causes large numbers of issues with steamwebhelper.exe crashing so it isn't recommended, use the macOS Sonoma beta.
  • Visit Apple Developer Downloads site, these files are now free to download use for any logged in Apple account.
    • Search for Command Line Tools for Xcode 15 beta and download the dmg file, then install it.
    • If you have an old version Xcode installed, remove it.
    • Search for Game Porting Toolkit and download it. Open the dmg file and then run the pkg.

Using Homebrew

Note: if you have ever installed Homebrew before, then it is advisable to remove arm64 Homebrew as this can interfere with this build process. Either use a Homebrew uninstall script or delete the folder /opt/homebrew/bin.

Open Terminal (search in Spotlight on macOS).

Install Rosetta:

softwareupdate --install-rosetta

Enter an x86_64 shell to continue the following steps in a Rosetta environment. All subsequent commands should be run within this shell.

arch -x86_64 zsh

Install the x86_64 version of Homebrew if you don't already have it.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Make sure the brew command is on your path:

which brew

If this command does not print /usr/local/bin/brew, you should use this command:

export PATH=/usr/local/bin:${PATH}

Build

Run this command to download Apple tap:

brew tap apple/apple http://github.com/apple/homebrew-apple

Install the game-porting-toolkit formula. This formula downloads and compiles several large software projects. How long this takes will depend on the speed of your computer. It can take over 1 hour to complete depending on the speed of your Mac.

brew -v install apple/apple/game-porting-toolkit

If during installation you see an error such as “Error: game-porting-toolkit: unknown or unsupported macOS version: :dunno”, your version of Homebrew doesn’t have macOS Sonoma support. Update to the latest version of Homebrew and try again.

brew update brew -v install apple/apple/game-porting-toolkit

Wine prefix

A Wine prefix contains a virtual C: drive. You will install the toolkit and your game into this virtual C: drive. Run the following command to create a new Wine prefix named my-game-prefix in your home directory.

WINEPREFIX=~/my-game-prefix `brew --prefix game-porting-toolkit`/bin/wine64 winecfg

  • A “Wine configuration” window should appear on your screen.
  • Change the version of Windows to Windows 10.
  • Choose Apply and then OK to exit winecfg.

If the “Wine configuration” window does not appear, and no new icon appears in the Dock, verify that you have correctly installed the x86_64 version of Homebrew as well as the game-porting-toolkit formula.

Preparing the toolkit

Make sure the Game Porting Toolkit dmg downloaded earlier is mounted at /Volumes/Game Porting Toolkit-1.0. Use this script to copy the Game Porting Toolkit library directory into Wine’s library directory.

ditto /Volumes/Game\ Porting\ Toolkit-1.0/lib/ `brew --prefix game-porting-toolkit`/lib/

Put the 3 scripts from the Game Porting Toolkit DMG into here /usr/local/bin using this command:

cp /Volumes/Game\ Porting\ Toolkit*/gameportingtoolkit* /usr/local/bin

Steam install


Go to Steam website and download the Windows version of Steam and place in your Downloads folder.

Install Steam

gameportingtoolkit ~/my-game-prefix ~/Downloads/SteamSetup.exe

Run Steam

gameportingtoolkit ~/my-game-prefix 'C:\Program Files (x86)/Steam/steam.exe'

Log into Steam A common issue is that Steam will present with a blank black window.

Alternate way of launching Steam (after installing):

MTL_HUD_ENABLED=1 WINEESYNC=1 WINEPREFIX=~/my-game-prefix /usr/local/Cellar/game-porting-toolkit/1.0/bin/wine64 'C:\Program Files (x86)/Steam/steam.exe'

If this continues then close the Terminal window and then re-open and try again, repeat until the login screen opens. Now you should be able to download and launch Windows games through Steam.

Epic/Heroic Games and GOG support


This is particularly useful because as it currently, the real Epic Games Launcher fails to install under the Game Porting Toolkit. Heroic supports Epic and GOG.com games.

  • Install the native macOS Heroic Games Launcher or from Homebrew.
  • Open Heroic, and log into your Epic Games and/or GOG.com account.
  • Go to the "Wine Manager" and install a numbered version of Wine, such that it won't auto update- we are going to modify it.
  • At the time of writing this, the newest numbered version of Wine-Crossover is Wine-Crossover-Wine-22.1.0
  • Press the folder icon that appears after installing it to open the directory containing Heroic's Wine installations.
  • Right-click on the version of Wine you just installed and press "Show Package Contents".
  • Open this directory in the Terminal.
    • If you have "OpenInTerminal" this is one button, otherwise press "Show Path Bar" and navigate where it says with "cd".
    • It should be something like cd ~/Library/Application\ Support/heroic/tools/wine/Wine-crossover-wine-22.1.0.

cd Contents/MacOS

Remove the existing Wine:

rm wine

Create a symlink to Game Porting Toolkit's Wine

If using Game Porting Toolkit Wineprefix:

ln -s `/usr/local/bin/brew --prefix game-porting-toolkit`/bin/wine64 wine

If using Whisky:

ln -s /Applications/Whisky.app/Contents/Resources/Libraries/Wine/bin/wine64 wine

cd ../Resources

Remove the existing Wine:

rm -rfv wine

Create a symlink to Game Porting Toolkit's Wine

If using Game Porting Toolkit Wineprefix:

ln -s `/usr/local/bin/brew --prefix game-porting-toolkit` wine

If using Whisky:

ln -s /Applications/Whisky.app/Contents/Resources/Libraries/Wine wine

  • You are now done with Terminal. Install any games you want to try playing.
  • Select the game you want to play, and press the settings button in the top-right.
  • Make sure the version of Wine you just downloaded and modified is selected.
  • Make sure your Game Porting Toolkit Wine Prefix is selected. If you followed Apple's guide this is /Users/you/my-game-prefix.
  • If you Open the "Other" section you can also add any environment variables you want like WINEESYNC=1" and "MTL_HUD_ENABLED=1"
  • Close the settings and try running the game.

Battle.net


Please download the Windows version of Battle.net.

Make a new Wineprefix for Battle.net - we will refer to this as battle-net from now:

WINEPREFIX=~/battle-net `brew --prefix game-porting-toolkit`/bin/wine64 winecfg

  • A “Wine configuration” window should appear on your screen.
  • Change the version of Windows to Windows 10.
  • Choose Apply and then OK to exit winecfg.

Run Battle.net launcher

gameportingtoolkit ~/battle-net ~/Downloads/Battle.net-Setup.exe

Please be aware that there is an issue launching Battle.net once installed, the only current way to re-login is to 'install' the launcher again.

Start individual game without the launcher using this command:

arch -x86_64 gameportingtoolkit-no-hud ~/battle-net 'C:\Program Files (x86)\Diablo IV\Diablo IV Launcher.exe'

Launching individual game

Open your Wine prefix’s virtual C: drive in Finder (open ~/my-game-prefix/drive_c) and copy your game into an appropriate subdirectory.

A. Standard launching

gameportingtoolkit ~/my-game-prefix 'C:\Program Files\MyGame\MyGame.exe'

This launches the given Windows game binary with a visible extended Metal Performance HUD and filters logging to output from the Game Porting Toolkit.

B. Launching without a HUD

gameportingtoolkit-no-hud ~/my-game-prefix 'C:\Program Files\MyGame\MyGame.exe'

C. Launching with Wine ESYNC disable

gameportingtoolkit-no-esync ~/my-game-prefix 'C:\Program Files\MyGame\MyGame.exe'

Logging

The provided bin/gameportingtoolkit* scripts can be copied onto your path to facilitate different forms of logging and launching. You can run these scripts from any shell; you don’t need to switch to the Rosetta environment first.

Logging output will appear in the Terminal window in which you launch your game as well as the system log, which can be viewed with the Console app found in Applications ▸ Utilities. Log messages from the Game Porting Toolkit are prefixed with D3DM. By default the gameportingtoolkit* scripts will filter to just the D3DM-prefixed messages. Troubleshooting • Link

Steam login black screen

Close the Terminal window and then reopen and retry the command, repeat several times.

Alternate way of launching Steam (after installing):

MTL_HUD_ENABLED=1 WINEESYNC=1 WINEPREFIX=<path to the Wine bottle you set up> /usr/local/Cellar/game-porting-toolkit/1.0/bin/wine64 'C:\Program Files (x86)/Steam/steam.exe'

If still not working then try using CrossOver and create a Steam bottle, then redirect this WINEPREFIX to that bottle:

WINEPREFIX="/Users/[username]/Library/Application Support/CrossOver/Bottles/Steam/"

Steam crashes straight after opening: Disconnect any external monitors.

Battle.net launcher won't re-launch: Re-install the launcher to reopen, no other fix at the moment.

Game won’t run because it thinks the version of Windows is too old. Some games detect specific minimum versions of Windows and need to be updated. Use this script to update your wineprefix with build 19042 which should work for most games e.g. Spider-Man Remastered.

WINEPREFIX=~/my-game-prefix `brew --prefix game-porting-toolkit`/bin/wine64 reg add 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' /v CurrentBuild /t REG_SZ /d 19042 /f

WINEPREFIX=~/my-game-prefix `brew --prefix game-porting-toolkit`/bin/wine64 reg add 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' /v CurrentBuildNumber /t REG_SZ /d 19042 /f

WINEPREFIX=~/my-game-prefix `brew --prefix game-porting-toolkit`/bin/wineserver -k

steamwebhelper.exe crashes

This is caused by Steam being run through macOS Ventura or below, upgrade to macOS Sonoma.

Game won't run and crashes with an invalid instruction

Invalid instruction crashes are often (but not always) caused when Rosetta 2 is unable to translate AVX/AVX2 instructions. You may be able to recompile a version of your game without AVX/AVX2 instructions in order to evaluate its potential on Apple Silicon with the Game Porting Toolkit when you hit this error. When porting your code natively to Apple Silicon, NEON instructions are a high-performance replacement for AVX/AVX2.

Game won't run because its anti-cheat or DRM software is incompatible with Wine translation.

You may be able to rebuild a custom version of your game in your Windows development environment with anti-cheat or DRM disabled for your own evaluation purposes. When porting your code natively to Apple Silicon and macOS, contact your anti-cheat or DRM provider—most have native Apple Silicon solutions for your native build.

Game won’t run because it requires Mono, .NET, or the MSVCRT runtime.

The game porting toolkit’s evaluation environment does not pre-install these runtime support packages. If your game makes use of one of these packages, consider searching for and downloading appropriate installers (.exe or .msi) and installing them to your evaluation environment. Additional runtime installers can be run on your environment by just launching the installer and following its installation instructions:

WINEPREFIX=~/my-game-prefix `brew --prefix game-porting-toolkit`/bin/wine64 <some-installer.exe>

And .MSI packages can be installed by launching the Windows uninstaller application and choosing to install a downloaded .msi package:

WINEPREFIX=~/my-game-prefix `brew --prefix game-porting-toolkit`/bin/wine64 uninstaller

Controller issues

Issues may be fixed by enrolling into the Steam beta.

Whisky

Back to the Top

Whisky is tool that provides a clean and easy to use graphical wrapper for Wine built in native SwiftUI. It can make and manage bottles, install and run Windows apps and games. Whisky is built on top of CrossOver 22.1.1 and Apple's Game Porting Toolkit developed by Isaac Marovitz and help from Gcenx.


CrossOver for MacOS

Back to the Top

CrossOver for MacOS is a tool that let's you run many popular Windows games on your MacOS system. It comes with an easy to use, single click interface, which makes installing your games simple and fast. CrossOver is built on the latest versions of Wine, based on contributions from both CodeWeavers and the open-source Wine community.

5 New Features Revealed—Level Up Your Gaming with CrossOver 23 How to play Astroneer on Mac with CrossOver 23 THIS makes CrossOver BETTER than Game Porting Toolkit!

Gaming on Xbox Game Pass

Back to the Top

Note: Xbox Game Pass Cloud Gaming can be accessed on macOS, iPadOS, and iOS through Apple's Safari browser, though, for the best performance I recommend using Microsoft's Edge browser. Also, you can use Parallels to run games on Windows 11 within macOS. Though, only 2D (Hollow Knight, Celeste, etc..) and lower graphics games run well natively with Parallels.

Xbox Game Pass is a video game subscription services from Microsoft starting at $9.99 and $14.99 for the Ultimate Pass.


A list of great Game Pass Games to play.

May 23

  • Planet of Lana (Xbox Series X|S Optimized, Xbox One, Windows PC, & Xbox Cloud Gaming)

May 25

  • Cassette Beasts (Xbox Series X|S, Xbox One, & Windows PC)

May 30

  • Chicory: A Colorful Tale (Xbox Series X|S Optimized, Xbox One, Windows PC, & Xbox Cloud Gaming)
  • Farworld Pioneers (Xbox Series X|S, Xbox One, & Windows PC)

June 1

  • Car Mechanic Simulator 2021 (Xbox Series X|S Optimized, Xbox One, Windows PC, & Xbox Cloud Gaming)
  • Slayers X: Terminal Aftermath: Vengeance of the Slayer (Xbox Series X|S, Xbox One, Windows PC, & Xbox Cloud Gaming)
  • The Big Con (Xbox Series X|S Optimized, Xbox One, Windows PC, & Xbox Cloud Gaming)

June 6

  • Amnesia: The Bunker (Xbox Series X|S, Xbox One, Windows PC, & Xbox Cloud Gaming)
  • Hypnospace Outlaw (Xbox Series X|S, Xbox One, Windows PC, & Xbox Cloud Gaming)

June 8

  • Rune Factory 4 Special (Xbox Series X|S, Xbox One, Windows PC, & Xbox Cloud Gaming)
  • Stacking (Xbox Series X|S, Xbox One, & Xbox Cloud Gaming)

June 13

  • Dordogne (Xbox Series X|S, Xbox One, Windows PC, & Xbox Cloud Gaming)

June 22

  • The Bookwalker: Thief of Tales (Xbox Series X|S, Xbox One, Windows PC, & Xbox Cloud Gaming)
  • Need for Speed: Unbound (Xbox Series X|S Optimized, Windows PC, & Xbox Cloud Gaming) via EA Play

June 27

  • Bramble: The Mountain King (Xbox Series X|S Optimized, Xbox One, Windows PC, & Xbox Cloud Gaming)
  • F.I.S.T.: Forged in Shadow Torch (Xbox Series X|S, Windows PC, & Xbox Cloud Gaming)

June 29

  • Story of Seasons: Friends of Mineral Town (Xbox Series X|S, Xbox One, & Windows PC)

July 3

  • Arcade Paradise (Xbox Series X|S, Xbox One, & Windows PC)

July 5

  • Grand Theft Auto V (Xbox Series X|S, Xbox One, & Xbox Cloud Gaming)

  • Sword and Fairy: Together Forever (Xbox Series X|S, Xbox One, & Windows PC)

July 6

  • McPixel 3 (Xbox Series X|S, Xbox One, Windows PC, & Xbox Cloud Gaming)

July 11

  • Common’hood (Xbox Series X|S, Xbox One, Windows PC, & Xbox Cloud Gaming)
  • Insurgency: Sandstorm (Windows PC)

July 14

  • Exoprimal (Xbox Series X|S, Xbox One, Windows PC, & Xbox Cloud Gaming)

July 18

  • Techtonica (Xbox Series X|S, Xbox One, & Windows PC)
  • The Cave (Xbox Series X|S, Xbox One, & Xbox Cloud Gaming)

July 31

  • Venba (Xbox Series X|S, Xbox One, & Windows PC)

August 1

  • Celeste (Cloud, Xbox Series X|S, and PC)

August 3

  • A Short Hike (Cloud, Xbox Series X|S, and PC)

August 8

  • Broforce Forever (Cloud, Xbox Series X|S, and PC)

August 9

  • Limbo (Cloud, (Xbox Series X|S, and PC)

August 10

  • Airborne Kingdom (Cloud, Xbox Series X|S, and PC)

August 15

  • Everspace 2 (Cloud and Xbox Series X|S)

August 18

  • The Texas Chain Saw Massacre (Xbox Series X|S, PC, Cloud)

August 29

  • Sea of Stars (Xbox Series X|S, Cloud)

September 5

  • Gris (Cloud, Console, and PC)

September 6 or September 1 with Starfield Premium Edition Upgrade

  • Starfield Direct (Xbox Series X|S, Cloud, & Windows PC)

** September 19**

  • Lies of P (Xbox Series X|S, Cloud, & Windows PC)

** September 20**

  • Party Animals (Xbox Series X|S, Xbox One, & Windows PC)

** September 23**

  • Payday 3 (Xbox Series X|S, Cloud, & Windows PC)

September 29

  • Cocoon (Xbox Series X|S, Xbox One, & Windows PC)

October 3

  • The Lamplighter’s League (Console, PC)

October 4

  • Warhammer 40,000 Darktide (Console [Xbox Series X|S])

October 10

  • Forza Motorsport (Console[Xbox Series X|S], PC, Cloud)

October 24

  • Cities Skylines 2 (Console[Xbox Series X|S], PC, Cloud)

October 26

  • Mineko’s Night Market (Console[Xbox Series X|S], PC)

October 31

  • Headbangers Rhythm Royale (Console[Xbox Series X|S])
  • Jusant(Console[Xbox Series X|S], PC, Cloud)

November 1

  • Age of Empires II: Definitive Edition – The Mountain Royals (Cloud, Console, and PC)

November 2

  • PlateUp! (Console)
  • Thirsty Suitors (Cloud, Console, and PC)

** November 6**

  • Football Manager 2024 (PC)
  • Football Manager 2024 Console (Cloud, Console, and PC)

November 7

  • Roboquest 1.0 (Cloud, Console, and PC)

November 9

  • Dungeons 4 (Cloud, Console, and PC)
  • Like A Dragon Gaiden: The Man Who Erased His Name (Cloud, Console, and PC)
  • Wild Hearts (Cloud, Console, and PC) EA Play

November 13

  • Spirittea (Cloud, Console, and PC)

November 14

  • Coral Island (Cloud and Xbox Series X|S)

Games Leaving November 15, 2023

  • Coffee Talk (Cloud, Console, and PC)
  • Exapunks (PC)
  • Ghost Song (Cloud, Console, and PC)
  • Gungrave G.O.R.E (Cloud, Console, and PC)
  • Football Manager 2023 (PC)
  • Football Manager 2023 Console (Cloud, Console, and PC)
  • Lapin (Cloud, Console, and PC)
  • Townscaper (Cloud, Console, and PC)

November 28

  • Rollerdrome (PC, Cloud and Xbox Series X|S)

December 1

  • Remnant: From the Ashes (Cloud, Console, and PC)
  • Spirit of the North (Cloud, Console, and PC)
  • SteamWorld Build (Cloud, Console, and PC)

December 5

  • Clone Drone in the Danger Zone (Cloud, PC, and Xbox Series X|S)
  • Rise of the Tomb Raider (Cloud, Console, and PC)
  • While the Iron’s Hot (Cloud, Console, and PC)
  • World War Z: Aftermath (Cloud, Console, and PC)

December 6 - Coming to Game Pass Core

  • Chivalry 2
  • Totally Reliable Delivery Service

December 7

  • Goat Simulator 3 (Cloud, PC, and Xbox Series X|S)

December 8

  • Against the Storm (PC)

December 13

  • Tin Hearts (Cloud, Console, and PC)

December 14

  • Far Cry 6 (Cloud, Console, and PC)

Leaving December 15

The following games are leaving soon save up to 20% on these games to keep them in your library.

  • Chained Echoes (Cloud, Console, and PC)
  • Opus Magnum (PC)
  • Potion Craft: Alchemist Simulator (Cloud, Console, and PC)
  • Rubber Bandits (Cloud, Console, and PC)

Early 2024

  • Bounty Star (Xbox Series X|S, Xbox One, & Windows PC)
  • Ghostbike (Xbox Series X|S, Xbox One, & Windows PC)
  • Flock (Xbox Series X|S, Xbox One, & Windows PC)
  • To A T (Xbox Series X|S, Xbox One, & Windows PC)

Setting up Game Pass for Offline use (Windows Only)

  • Make sure to use Parallels to run Windows 11 on macOS. Also, only 2D (Hollow Knight, Celeste, etc..) and lower graphics games run well natively with Parallels.

  • Note: Most games with a campaign mode will be playable offline, but games with network co-op or multiplayer features will not work while you’re offline. Before you go offline, connect to the Xbox network to sync your most recent game save to the cloud. While you play offline, your game save progress will continue to be saved locally, and it’ll sync the next time you sign in to Xbox. If you want to continue playing on a different device, you’ll need to go online and connect to the Xbox network to allow your local saved game to sync with the cloud again.

  • Note 2: PC Game Pass game licenses expire after 30 days when playing offline, and licenses for owned games expire after 14 days. To keep playing your game offline, go back online and launch the game. This renews the game’s license on your device and ensures you can go back to playing offline.

You can only have one device as your designated offline device. To set your device as your designated offline device:

  • Make sure that you’re online.
  • Check that your device has the latest Windows updates: Go to Start -> Settings -> Update & security -> Windows Update and see if any relevant updates are available.
  • Open the Microsoft Store. You’ll be prompted to sign in if you haven’t already.
  • Select your profile icon in the upper right corner.
  • Select App settings, and then under Offline permissions, make sure that the toggle is set to On.

Once you set this, any devices previously designated as offline will be toggled to Off, and you’ll no longer be able to play games offline on those devices.

Prepare your game or games

Once your device is set up, you’ll need to launch each game you want to play offline while signed in to the Xbox network. You only need to do this once per game, and you’ll need to do this even if you’ve already launched the game on your device.

  • Make sure that you’re online, and that your device is set as your designated offline device. (See the steps above for details on how to do this.)
  • Launch the game you want to play offline. When prompted, sign in to Xbox.
  • Once you’ve started playing the game, you can exit at any time.

Repeat this process for each game you want to play offline. Once completed, you can go offline at any time and launch those games whenever you want to play them, without needing to sign in online each time.

Manage Temps/Fans (CPU and GPU)

Back to the Top

Stats is a tool that allows you to monitor your macOS system in the menubar.

  • Battery level
  • Bluetooth devices
  • CPU utilization
  • Disk utilization
  • Fan's control
  • GPU utilization
  • Memory usage
  • Network usage
  • Sensors information (Temperature/Voltage/Power)

iStat Menus is highly configurable tool, with full support for macOS light and dark menubar modes. It covers a huge range of stats, including a CPU monitor, GPU, memory, network usage, disk usage, disk activity, date & time, battery and more.

Gaming Peripherals

RGB Devices

Back to the Top

Logitech G Hub is software tool that lets you customize Logitech G gaming mice, keyboards, headsets, speakers, and other devices.

Corsair iCUE is a tool that enables gaming peripherals and personal computer components including computer case fans, RGB lighting, gaming headsets, gaming keyboards, gaming mouse, remap buttons and switches, RAM DIMMS and AIO CPU cooler together.

Game Controllers

Back to the Top


MacOS Ventura Settings for Game Controllers

  • Game Controller is an Apple framework to support users interacting with your app using a physical or virtual game controller. Game controllers include third-party products, such as the DualShock 4, DualSense, and Xbox, as well as the mouse, keyboard, Siri Remote, and racing wheels.

Xbox Wireless Controller + USB-C® Cable


Xbox Controller

PlayStation 5 DualSense™ Wireless Controller


PS 5 DualSense™ Controller

ROG Raikiri Pro PC Controller is a Xbox-licensed PC controller that features a built-in OLED display, tri-mode connectivity, four rear buttons, selectable step triggers, an ESS DAC, plus adjustable joystick sensitivity and response curves.

Nintendo Switch Pro Controller


Nintendo Switch Pro Controller

8BitDo SN30 Pro+ Controller


8BitDo SN30 Pro+ Controller


8BitDo SN30 Pro+ Controller Button Mapping

Google Stadia Controller on ebay

Switch your Stadia Controller to Bluetooth mode to keep gaming wirelessly on your favorite devices and services after Stadia shuts down.

Steam Contoller

  • Note: Steam Controllers were discontinued on November 26, 2019, though, you can still buy them on ebay.

  • Steam Controller Setup

Amazon Luna Controller

  • The Luna Controller is made for Amazon's cloud gaming service. Powered by Cloud Direct technology Connect directly to Amazon's custom game servers when playing on Luna, reducing roundtrip latency by 17 to 30 milliseconds vs. a local Bluetooth connection among Windows PC, Mac, and Fire TV.

Setting up OBS Studio

Back to the Top


OBS (Open Broadcaster Software) is free and open source software for video recording and live streaming. Stream to Twitch, YouTube and many other providers or record your own videos with high quality H264 / AAC encoding. Starting with OBS Studio version 28 it features 10-bit and HDR video encode support for AV1 and HEVC, and native Apple Silicon support on macOS.

OBS Studio 29 new macOS features:

  • Added an upward compressor filter.
  • Added a 3-band equalizer filter.
  • Added support for native HEVC and ProRes encoders on macOS, including P010 and HDR.
  • Added support for macOS Desk View.


OBS Studio

Useful OBS Studio 3rd party plugins and themes.

Discord

Back to the Top

Discord is an application with modern voice & text chat app. It provides clear voice, multiple server and channel support, mobile apps, and more. It's available on Linux, macOS, Windows, iOS, Android, and your web browser.

Twitch

Back to the Top

Twitch for MacOS/iOSis an application where thousands of communities come together for our favorite streamers join millions enjoying live games, music, sports, esports, podcasts, cooking shows, IRL streams, etc..

Game Stores & Launchers

Apple Arcade

Back to the Top

Apple Arcade is a game subscription service that gives up to six family members unlimited access to 100+ incredibly fun games, all with no ads and no in-app purchases.

PlayCover

Back to the Top

PlayCover is a tool that let's run iOS apps and games on Apple Silicon Macs(macOS 12.0 or newer) with mouse, keyboard and controller support.

Devices with the following chips are supported:

  • M1
  • M1 Pro
  • M1 Max
  • M1 Ultra
  • M2

Steam

Back to the Top

Installing Steam through CrossOver

Steam Link app is available free of charge, streaming your Steam PC games to phones, tablets, and TV.

Heroic Game Launcher

Back to the Top

Heroic Game Launcher is an Open Source Game Launcher for Linux, Windows and MacOS (for both Native and Windows Games using Crossover). It supports launching games from the Epic Games Store and the GOG.com Store.

Epic Games Store

Back to the Top

Epic Games Store is a digital video game storefront for Microsoft Windows and macOS, operated by Epic Games.

Blizzard Battle.net

Back to the Top

Blizzard Battle.net is an internet-based online gaming, digital distribution, and digital rights management platform developed by Activision and Blizzard Entertainment. Battle.net is the launcher for World of Warcraft, Diablo III, StarCraft II, Hearthstone, Heroes of the Storm, Overwatch and Call of Duty.

Origin

Back to the Top

Origin for MacOS is an online gaming, digital distribution and digital rights management (DRM) platform developed by Electronic Arts that allows users to purchase games on the internet for PC and mobile platforms, and download them with the Origin client (formerly EA Download Manager, EA Downloader and EA Link).

EA Play

Back to the Top

EA Play is a subscription-based video game service from Electronic Arts for the Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 and Microsoft Windows platforms, offering access to selected games published by Electronic Arts along with additional incentives.

  • Note: you will need to install Origin to access all EA game titles for EA Play even if you use EA Play on Steam.

Ways to Play EA Play on macOS Apple Silicon:

Ubisoft Connect

Back to the Top

Ubisoft Connect is a digital distribution, digital rights management, multiplayer and communications service created by Ubisoft to provide an experience similar to the achievements/trophies offered by various other game companies.

Ways to Play Ubisoft Connect on macOS Apple Silicon:

GOG Galaxy

Back to the Top

GOG Galaxy is an application that lets you combine multiple game libraries into one place and connect with your friends across all gaming platforms, consoles included.

Itch.io Store

Back to the Top

Itch.io Store is an app that lets you effortlessly download and run games and software from itch.io. All of your downloads are kept in a single place and are automatically updated.

XIV on Mac

Back to the Top

XIVONMAC is a modern, open-source Final Fantasy XIV client for macOS.

Game Streaming

Back to the Top

Cloud Game Streaming

Back to the Top

Xbox Cloud Gaming is Microsoft's cloud-based Xbox game-streaming technology (currently in Beta). Play games like Forza Horizon 4, Halo 5: Guardians, Gears of War 4, Sea of Thieves, Cuphead, Red Dead Redemption 2, and 100+ other games on your mobile device or Chrome web browser. Xbox Cloud Gaming does require an Xbox Game Pass Ultimate subscription.

Geforce NOW is NVIDIA's Cloud Gaming Service.

Amazon Luna is Amazon's Cloud Gaming Service. Amazon Luna is Compatible/Supported on a variety of Devices and Browsers.

Shadow is a fully-featured, cloud-based, high-end computer. It is the only remote service that offers performance capable of competing with a local PC. Available on Windows, macOS, Linux, Android/AndroidTV, and iOS/tvOS.

Local Game Streaming

Back to the Top

Steam Remote Play Together is a steam service that let's you share your Steam local multi-player games with friends over the internet, for free. Using Remote Play Together, one player owns and runs the game, then up to four players can join.

Steam Link app is available free of charge, streaming your Steam PC games to phones, tablets, and TV.

PlayStation Remote Play is a feature available on all PS4 and PS5 consoles that let's you control your PlayStation® console remotely wherever you have a high-speed internet connection.

Chiaki is a Free and Open Source Software Client for PlayStation 4 and PlayStation 5 Remote Play for Linux, FreeBSD, OpenBSD, Android, macOS, Windows, Nintendo Switch and potentially even more platforms.

Parsec is a video game streaming platform, which offers a wide variety of games and genres to choose from and provides a high-quality and smooth gameplay. SParsec is developed in order to provide a high-quality smooth gameplay, same time to be free of all ads and in-game purchases.

Moonlight Game Streaming is a program that let you stream from your PC games over the Internet with no configuration required. Stream from almost any device, whether you're in another room or miles away from your gaming rig. Sunshine is a Game stream host for Moonlight that is a self-hosted, low latency, cloud gaming solution with support for AMD, Intel, and NVIDIA GPUs.

Greenlight is an open-source client for xCloud and xHome streaming made in Javascript and Typescript. The client is an application wrapper around xbox-xcloud-player. It runs on Linux, MacOS, Windows, and Steam Deck.


Greenlight

Android Games

Back to the Top

BlueStacks

BlueStacks is a the Fastest & Lightest Android App Player for Windows and macOS.

Game Emulators

Back to the Top

Also checkout these subreddits for more great Game Emulators recommendations

Frontends

EmulationStation Desktop Edition (ES-DE) is a frontend application for browsing and launching games from your multi-platform game collection. It's available for Unix/Linux, macOS(M1 & Intel) and Windows.

RetroArch is a frontend for emulators, game engines and media players. It enables you to run classic games on a wide range of computers and consoles through its slick graphical interface. Settings are also unified so configuration is done once and for all.

OpenEmu is an open-source project whose purpose is to bring macOS game emulation into the realm of first-class citizenship. The project leverages modern macOS technologies, such as Cocoa, Core Animation, and other third-party libraries.

Currently, OpenEmu can load the following game engines as plugins:

Pegasus is a cross platform, customizable graphical frontend for launching emulators and managing your game library (especially retro games) and launching them from one place. It's focused on customizability, cross platform support (including embedded devices) and high performance.

Boxer is a DOSBox game emulator frontend that's fit for your Mac.

Cartridge is a self-hosted game library made with Laravel + Vue.js.

Cartridge Features

  • Scan for ROM files and match with IGDB game information
  • Serve ROM download links alongside game details
  • Manage access to library with user creation and permissions (WIP)
  • Allow users to request games (Planned)
  • Play select ROMs in-browser using JS emulators (Planned)
  • Track played and favorite games (even ones that aren't available for download) (Planned)


Cartridge UI

Nintendo GameCube & Wii

Dolphin is an emulator for two recent Nintendo video game consoles: the GameCube and the Wii. It allows PC gamers to enjoy games for these two consoles in full HD (1080p) with several enhancements: compatibility with all PC controllers, turbo speed, networked multiplayer, and even more.

PrimeHack is a fork of Dolphin Emulator to bring modern Mouse and Keyboard controls, as well as Dual-Stick gamepad controls to the Metroid Prime Trilogy. It also offers many other features such as increased FoV and various new cheats. Versions of Metroid Prime that are currently supported.

Nintendo Switch

Ryujinx is an open-source Nintendo Switch emulator created by gdkchan and written in C#. This emulator aims at providing excellent accuracy and performance, a user-friendly interface, and consistent builds.

yuzu is an experimental open-source emulator for the Nintendo Switch from the creators of Citra.

Nintendo 64

m64p is a Nintendo 64 Emulator. It uses mupen64plus-gui, a brand new mupen64plus frontend written in Qt5. It supports all of the things you’d expect from a frontend (savestate management, pausing, screenshots).

Nintendo 3DS

Citra is an open-source emulator for the Nintendo 3DS capable of playing many of your favorite games.

Nintendo DS

DeSmuME is a Nintendo DS emulator.

melonDS is a tool that aims at providing fast and accurate Nintendo DS emulation. While it is still a work in progress, it has a pretty solid set of features.

Features:

* Nearly complete core (CPU, video, audio, etc...)
* OpenGL renderer, 3D upscaling
* RTC, microphone, lid close/open
* Joystick support
* Savestates
* Various display position/sizing/rotations modes
* Work-in-progress Wi-Fi emulation for online connectivity and local multiplayer
* Experimental emulation of the Nintendo DSi

Super Nintendo Entertainment System (SNES)

Snes9x is a portable, freeware Super Nintendo Entertainment System (SNES) emulator.

bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.

Game Boy Advance

mGBA is a new emulator for running Game Boy Advance games. It aims to be faster and more accurate than many existing Game Boy Advance emulators, as well as adding features that other emulators lack.

DOS

Boxer is a DOSBox game emulator frontend that's fit for your Mac.

DOSBox is an open-source DOS emulator which primarily focuses on running DOS Games.

DOSBox Staging is a full x86 CPU emulator (independent of host architecture), capable of running DOS programs that require real or protected mode.

Atari

Stella is a multi-platform Atari 2600 VCS emulator released under the GNU General Public License (GPL). Stella is available on Windows MacOS, Linux, and FreeBSD.

Hatari is an Atari ST/STE/TT/Falcon emulator for Linux, BSD, MacOS, Windows and other systems which are supported by the SDL library. The Atari ST was a 16/32 bit computer system which was first released by Atari in 1985.

Sega Dreamcast

Flycast is a multi-platform Sega Dreamcast, Naomi and Atomiswave emulator derived from reicast.

Redream is a Dreamcast emulator, enabling you to play your favorite Dreamcast games in high-definition(1080p or 4k).

PlayStation Portable

PPSSPP is a PSP emulator that can run games in full HD resolution. It can even upscale textures that would otherwise be too blurry as they were made for the small screen of the original PSP.

PlayStation 1

DuckStation is an simulator/emulator of the Sony PlayStation 1 console, focusing on playability, speed, and long-term maintainability.

Avocado is a Modern PlayStation 1 emulator.

PlayStation 2

AetherSX2 is a free (no ads) emulator of the PlayStation 2 (PS2) console for ARM-based devices. This enables you to play games which you have dumped from disc on your smartphone.

PCSX2 is a Playstation 2 'emulator', a free program that tries to replicate the Playstation 2 console to enable you to play PS2 games on your PC.

Play! is a PlayStation2 emulator for Windows, macOS, UNIX, Android, iOS and web browser platforms.

PlayStation 3

RPCS3 is an experimental open-source Sony PlayStation 3 emulator and debugger written in C++ for Windows and Linux. RPCS3 started development in May of 2011 by its founders DH and Hykem. The emulator is currently capable of running over 1800 commercial titles powered by Vulkan and OpenGL.

Xbox

xemu is an original Xbox emulator.

Xenia is an Xbox 360 Emulator.

MAME

MAME is a Arcade Machine Emulator.

Performance Benchmarks

Back to the Top

Geekbench 6 is a cross-platform benchmark that measures your system's performance with the press of a button.

GFXBench 5.0 is a high-end graphics benchmark that measures mobile and desktop performance with next-gen graphics features across all platforms. As a true cross-API benchmark, GFXBench supports all the industry-standard and vendor-specific APIs including OpenGL, OpenGL ES, Vulkan, Metal, DirectX/Direct3D and DX12.

PugetBench Benchmarks is an application that has a number of benchmarks that are designed to test many popular professional applications using real-world projects and workflows.

Phoronix Test Suite

UNIGINE Superposition is an extreme performance and stability test for PC hardware: video card, power supply, cooling system.

asitop is a Performance monitoring CLI tool for Apple Silicon.


Wafer Level Multi-Chip Packaging Technology

Back to the Top

InFO (Integrated Fan-Out) Wafer Level Packaging

Back to the Top


InFO is an innovative wafer level system integration technology platform, featuring high density RDL (Re-Distribution Layer) and TIV (Through InFO Via) for high-density interconnect and performance for various applications, such as mobile, and high performance computing. The InFO platform offers various package schemes in 2D and 3D that are optimized for specific applications.

InFO_PoP is the industry's 1st 3D wafer level fan-out package, features high density RDL and TIV to integrate mobile AP w/ DRAM package stacking for mobile application. Comparing to FC_PoP, InFO_PoP has a thinner profile and better electrical and thermal performances because of no organic substrate and C4 bump.


InFO_PoP

InFO_oS is a packaging process that leverages InFO technology and features higher density 2/2µm RDL line width/space to integrate multiple advanced logic chiplets for 5G networking application. It enables hybrid pad pitches on SoC with minimum 40µm I/O pitch, minimum 130µm C4 Cu bump pitch and > 2X reticle size InFO on >65 x 65mm substrates.


InFO_oS

Chip on Wafer on Substrate (CoWoS)

Back to the Top


CoWoS® is a platform that provides best-in-breed performance and highest integration density for high performance computing applications. This wafer level system integration platform offers wide range of interposer sizes, number of HBM cubes, and package sizes. It can enable larger than 2X-reticle size (or ~1,700mm2) interposer integrating leading SoC chips with more than four HBM2/HBM2E cubes.


TSMC CoWoS®-S Architecture

CoWoS-R is a member of CoWoS advanced packaging family leveraging InFO technology to utilize RDL interposer and to serve the interconnect between chiplets, especially in HBM(high bandwidth memory) and SoC heterogeneous integration. RDL interposer is comprised of polymer and copper traces, and it is relatively mechanically flexible. Such flexibility enhances the C4 joint integrity, and allows the new package can scale up its size to meet more complex functional demands.


TSMC CoWoS®-R Architecture

CoWoS®-L is one of the last for chip packages in the CoWoS® platform, combining the merits of CoWoS®-S and InFO technologies to provide the most flexible integration using interposer with LSI (Local Silicon Interconnect) chip for die-to-die interconnect and RDL layers for power and signal delivery. The offering starts from 1.5X-reticle interposer size with 1x SoC + 4x HBM cubes and will move forward to expand the envelope to larger sizes for integrating more chips.

The key features of CoWoS®-L service include:

  • LSI chips for high routing density die-to-die interconnect through multiple layers of sub-micron Cu lines. The LSI chips can feature variety of connection architectures (SoC to SoC, SoC to chiplet, SoC to HBM… etc) within each product, and can also be used repeatedly for multiple products. The corresponding metal types, layer counts, and pitches align with the offering from CoWoS®-S.

  • Molding-based interposer with wide pitch of RDL layers on both front-side and back-side and TIV (Through Interposer Via) for signal and power delivery provides low loss of high frequency signal in high-speed transmission.

  • Capability of integrating additional elements, stand-alone IPD (Integrated Passive Device), right underneath the SoC die to support its signal communication with better PI/SI.


TSMC CoWoS®-L Architecture

Xcode Development

Back to the Top


Getting Started with Xcode

Developer Resources:

Xcode includes everything developers need to create great applications for Mac, iPhone, iPad, Apple TV, and Apple Watch. Xcode provides developers a unified workflow for user interface design, coding, testing, and debugging. Xcode 14 is built as an Universal app that runs 100% natively on Intel-based CPUs and Apple Silicon. It includes a unified macOS SDK that features all the frameworks, compilers, debuggers, and other tools you need to build apps that run natively on Apple Silicon and the Intel x86_64 CPU.


Developing with SwiftUI in Xcode 14

Xcode Cloud is a continuous integration and delivery service built into Xcode and designed expressly for Apple developers. It accelerates the development and delivery of high-quality apps by bringing together cloud-based tools that help you build apps, run automated tests in parallel, deliver apps to testers, and view and manage user feedback.


Xcode Cloud. Source: Apple

SwiftUI is a user interface toolkit that provides views, controls, and layout structures for declaring your app's user interface. The SwiftUI framework provides event handlers for delivering taps, gestures, and other types of input to your application.

UIKit is a framework provides the required infrastructure for your iOS or tvOS apps. It provides the window and view architecture for implementing your interface, the event handling infrastructure for delivering Multi-Touch and other types of input to your app, and the main run loop needed to manage interactions among the user, the system, and your app.

AppKit is a graphical user interface toolkit that contains all the objects you need to implement the user interface for a macOS app such as windows, panels, buttons, menus, scrollers, and text fields, and it handles all the details for you as it efficiently draws on the screen, communicates with hardware devices and screen buffers, clears areas of the screen before drawing, and clips views.

ARKit is a set set of software development tools to enable developers to build augmented-reality apps for iOS developed by Apple. The latest version ARKit 3.5 takes advantage of the new LiDAR Scanner and depth sensing system on iPad Pro(2020) to support a new generation of AR apps that use Scene Geometry for enhanced scene understanding and object occlusion.

RealityKit is a framework to implement high-performance 3D simulation and rendering with information provided by the ARKit framework to seamlessly integrate virtual objects into the real world.

SceneKit is a high-level 3D graphics framework that helps you create 3D animated scenes and effects in your iOS apps.

Mac Catalyst is a set of Apple APIs that developers can use to rapidly port their iOS apps to Apple Silicon M1 Chip and take full advantage of the new capabilities on the new Apple hardware.

Instruments is a powerful and flexible performance-analysis and testing tool that’s part of the Xcode tool set. It’s designed to help you profile your iOS, watchOS, tvOS, and macOS apps, processes, and devices in order to better understand and optimize their behavior and performance.

TestFlight is a tool that makes it easy to invite users to test your apps and App Clips and collect valuable feedback before releasing your apps on the App Store. It allows you to invite up to 10,000 testers using just their email address or by sharing a public link.

Core ML Development

Back to the Top


Core ML Learning Resources

Core ML is an Apple framework for integrating machine learning models into apps running on Apple devices (including iOS, watchOS, macOS, and tvOS). Core ML introduces a public file format (.mlmodel) for a broad set of ML methods including deep neural networks (both convolutional and recurrent), tree ensembles with boosting, and generalized linear models. Models in this format can be directly integrated into apps through Xcode.

Introduction to Core ML

Integrating a Core ML Model into your App

Core ML Models

Core ML API Reference

Core ML Specification

Apple Developer Forums for Core ML

Top Core ML Courses Online | Udemy

Top Core ML Courses Online | Coursera

IBM Watson Services for Core ML | IBM

Stable Diffusion with Core ML on Apple Silicon

Generate Core ML assets using IBM Maximo Visual Inspection | IBM

Core ML Tools, Libraries, and Frameworks

Core ML Tools is a tool to convert machine learning models from third-party libraries to the Core ML format. This Python package contains the supporting tools for converting models from training libraries such as the following:

Non-neural network frameworks:

Create ML is a tool that provides new ways of training machine learning models on your Mac. It takes the complexity out of model training while producing powerful Core ML models.

Apple FaceLit is a Neural 3D Relightable Faces.

TensorFlow is an end-to-end open source platform for machine learning. It has a comprehensive, flexible ecosystem of tools, libraries and community resources that lets researchers push the state-of-the-art in ML and developers easily build and deploy ML powered applications.

Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano.It was developed with a focus on enabling fast experimentation. It is capable of running on top of TensorFlow, Microsoft Cognitive Toolkit, R, Theano, or PlaidML.

PyTorch is a library for deep learning on irregular input data such as graphs, point clouds, and manifolds. Primarily developed by Facebook's AI Research lab.

XGBoost is an optimized distributed gradient boosting library designed to be highly efficient, flexible and portable. It implements machine learning algorithms under the Gradient Boosting framework. XGBoost provides a parallel tree boosting (also known as GBDT, GBM) that solve many data science problems in a fast and accurate way. It supports distributed training on multiple machines, including AWS, GCE, Azure, and Yarn clusters. Also, it can be integrated with Flink, Spark and other cloud dataflow systems.

LIBSVM is an integrated software for support vector classification, (C-SVC, nu-SVC), regression (epsilon-SVR, nu-SVR) and distribution estimation (one-class SVM). It supports multi-class classification.

Scikit-Learn is a simple and efficient tool for data mining and data analysis. It is built on NumPy,SciPy, and mathplotlib.

Apple Vision is a framework that performs face and face landmark detection, text detection, barcode recognition, image registration, and general feature tracking. Vision also allows the use of custom Core ML models for tasks like classification or object detection.

Xcode includes everything developers need to create great applications for Mac, iPhone, iPad, Apple TV, and Apple Watch. Xcode provides developers a unified workflow for user interface design, coding, testing, and debugging. Xcode 12 is built as an Universal app that runs 100% natively on Intel-based CPUs and Apple Silicon. It includes a unified macOS SDK that features all the frameworks, compilers, debuggers, and other tools you need to build apps that run natively on Apple Silicon and the Intel x86_64 CPU.

SwiftUI is a user interface toolkit that provides views, controls, and layout structures for declaring your app's user interface. The SwiftUI framework provides event handlers for delivering taps, gestures, and other types of input to your application.

UIKit is a framework provides the required infrastructure for your iOS or tvOS apps. It provides the window and view architecture for implementing your interface, the event handling infrastructure for delivering Multi-Touch and other types of input to your app, and the main run loop needed to manage interactions among the user, the system, and your app.

AppKit is a graphical user interface toolkit that contains all the objects you need to implement the user interface for a macOS app such as windows, panels, buttons, menus, scrollers, and text fields, and it handles all the details for you as it efficiently draws on the screen, communicates with hardware devices and screen buffers, clears areas of the screen before drawing, and clips views.

ARKit is a set set of software development tools to enable developers to build augmented-reality apps for iOS developed by Apple.

RealityKit is a framework to implement high-performance 3D simulation and rendering with information provided by the ARKit framework to seamlessly integrate virtual objects into the real world.

SceneKit is a high-level 3D graphics framework that helps you create 3D animated scenes and effects in your iOS apps.

Instruments is a powerful and flexible performance-analysis and testing tool that’s part of the Xcode tool set. It’s designed to help you profile your iOS, watchOS, tvOS, and macOS apps, processes, and devices in order to better understand and optimize their behavior and performance.

CocoaPods is a dependency manager for Swift and Objective-C used in Xcode projects by specifying the dependencies for your project in a simple text file. CocoaPods then recursively resolves dependencies between libraries, fetches source code for all dependencies, and creates and maintains an Xcode workspace to build your project.

AppCode is constantly monitoring the quality of your code. It warns you of errors and smells and suggests quick-fixes to resolve them automatically. AppCode provides lots of code inspections for Objective-C, Swift, C/C++, and a number of code inspections for other supported languages.

Metal Development

Back to the Top


Metal Learning Resources

Metal is a low-level API that provides a platform-optimized, low-overhead API for developing the latest 3D pro applications and amazing games using a rich shading language with tighter integration between graphics and compute programs. To help you do more while managing ever more complex shader code, Metal adds an unparalleled suite of advanced GPU debugging tools to help you realize the full potential of your graphics code.

Metal 3 is Apple's newest graphics API that introduces advanced features and compiler tools to load resources faster, compile shader binaries at build time, process complex geometry with mesh shaders, render high-resolution graphics in less time, train machine learning networks faster, and more.

Metal Tools, Libraries, and Frameworks

MTLDevice is the Metal interface to a GPU that you use to draw graphics or do parallel computation.

Metal-cpp is a low-overhead C++ interface for Metal that helps you add Metal functionality to graphics apps, games, and game engines that are written in C++. Sample Code

Metal plugin for TensorFlow is a TensorFlow-Metal PluggableDevice that adds improvements to machine learning training with new operations accelerated on GPU, custom operations, and distributed training support.

MetalFX is a new API that provides platform optimized graphics effects for Metal applications. With MetalFX Upscaling, your application can now render frames at a lower resolution, reducing rendering time, without compromising rendering quality. We'll also show you how and when to use its two effects: spatial upscaling, which delivers substantial performance gains, and temporal AA and upscaling, which delivers the highest quality rendering.


MetalFX Rendering. Credit: Apple

MetalPetal is a GPU accelerated image and video processing framework based on Metal designed to provide real-time processing for still image and video with easy to use programming interfaces.

Apple Foundation Framework is a framework provides a base layer of functionality for apps and frameworks, including data storage and persistence, text processing, date and time calculations, sorting and filtering, and networking. The classes, protocols, and data types defined by Foundation are used throughout the macOS, iOS, watchOS, and tvOS SDKs.

Apple Core Animation Framework is a graphics rendering and animation infrastructure that provides high frame rates and smooth animations without burdening the CPU and slowing down your app.

Apple Core Graphics Frameworkis a framework based on the Quartz advanced drawing engine. It provides low-level, lightweight 2D rendering with unmatched output fidelity.

Paravirtualized Graphics Framework is a framework that implements hardware-accelerated graphics for macOS running in a virtual machine, hereafter known as the guest. The macOS operating system provides a graphics driver that runs inside the guest, communicating with the framework in the host operating system to take advantage of Metal-accelerated graphics.

Xcode includes everything developers need to create great applications for Mac, iPhone, iPad, Apple TV, and Apple Watch. Xcode provides developers a unified workflow for user interface design, coding, testing, and debugging. Xcode 12 is built as an Universal app that runs 100% natively on Intel-based CPUs and Apple Silicon. It includes a unified macOS SDK that features all the frameworks, compilers, debuggers, and other tools you need to build apps that run natively on Apple Silicon and the Intel x86_64 CPU.

SwiftUI is a user interface toolkit that provides views, controls, and layout structures for declaring your app's user interface. The SwiftUI framework provides event handlers for delivering taps, gestures, and other types of input to your application.

UIKit is a framework provides the required infrastructure for your iOS or tvOS apps. It provides the window and view architecture for implementing your interface, the event handling infrastructure for delivering Multi-Touch and other types of input to your app, and the main run loop needed to manage interactions among the user, the system, and your app.

AppKit is a graphical user interface toolkit that contains all the objects you need to implement the user interface for a macOS app such as windows, panels, buttons, menus, scrollers, and text fields, and it handles all the details for you as it efficiently draws on the screen, communicates with hardware devices and screen buffers, clears areas of the screen before drawing, and clips views.

ARKit is a set set of software development tools to enable developers to build augmented-reality apps for iOS developed by Apple. The latest version ARKit 3.5 takes advantage of the new LiDAR Scanner and depth sensing system on iPad Pro(2020) to support a new generation of AR apps that use Scene Geometry for enhanced scene understanding and object occlusion.

RealityKit is a framework to implement high-performance 3D simulation and rendering with information provided by the ARKit framework to seamlessly integrate virtual objects into the real world.

SceneKit is a high-level 3D graphics framework that helps you create 3D animated scenes and effects in your iOS apps.

Instruments is a powerful and flexible performance-analysis and testing tool that’s part of the Xcode tool set. It’s designed to help you profile your iOS, watchOS, tvOS, and macOS apps, processes, and devices in order to better understand and optimize their behavior and performance.

CocoaPods is a dependency manager for Swift and Objective-C used in Xcode projects by specifying the dependencies for your project in a simple text file. CocoaPods then recursively resolves dependencies between libraries, fetches source code for all dependencies, and creates and maintains an Xcode workspace to build your project.

AppCode is constantly monitoring the quality of your code. It warns you of errors and smells and suggests quick-fixes to resolve them automatically. AppCode provides lots of code inspections for Objective-C, Swift, C/C++, and a number of code inspections for other supported languages.

MoltenVK is an implementation of Vulkan running on iOS and macOS using Apple's Metal graphics framework.

VSCode Development

Back to the Top


Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. It comes with built-in support for JavaScript, TypeScript and Node.js and has a rich ecosystem of extensions for other languages (such as C++, C#, Java, Python, PHP, Go) and runtimes (such as .NET and Unity).


VS Code

Visual Studio Code Marketplace is a marketplace for all extensions for Visual Studio, Azure DevOps Services, Azure DevOps Server and Visual Studio Code.


VS Code Marketplace

Code Server is a tool that allows you to run VS Code on any machine anywhere and access it in the browser.

GitHub Codespaces is an integrated development environment(IDE) on GitHub. That allows developers to develop entirely in the cloud using Visual Studio and Visual Studio Code. Also, from any repo or pull request on GitHub you can simply press the period (.) key on your keyboard to bring up the browser-based VS Code environment with the source code file ready for editing. That dot (.) press to bring up the web-based VS Code editor takes you to https://github.dev/.

Language Server Protocol (LSP) is a tool that defines the protocol used between an editor or IDE and a language server that provides language features like auto complete, go to definition, find all references.

VS Code Extensions for Developer Productivity

Back to the Top

Visual Studio Live Share is a service/ extension that enables you to collaboratively edit and debug with others in real time, regardless of the programming languages you're using or app types you're building. You can instantly and securely share your current project, start a joint debugging session, share terminal instances, forward localhost web apps, have voice calls, and more.

GistPad is a Visual Studio Code extension that allows you to edit GitHub Gists and repositories from the comfort of your favorite editor. You can open, create, delete, fork and star gists and repositories, and then seamlessly begin editing files as if they were local, without ever cloning, pushing or pulling anything.

Live Server is an extension for Visual Studio Code that launches a development local Server with live reload feature for static & dynamic pages.

GitHub Pull Requests and Issues is an extension for Visual Studio Code that allows you to review and manage GitHub pull requests and issues in Visual Studio Code.

Terminal is an extension for Visual Studio Code that lets you run terminal command directly in the Editor.

Profile Switcher is an extension for Visual Studio Code that allows you to switch between different profiles you have created.

Material Icon Theme is an extension for Visual Studio Code that gets the Material Design icons into your VS Code.

One Dark Pro is an extension for Visual Studio Code that adds Atom's iconic One Dark theme, which is one of the most installed themes for VS Code.

VSCode Icons is an extension for Visual Studio Code that brings icons to your Visual Studio Code setup.

GitLens is an extension for Visual Studio Code that helps you visualize code authorship at a glance via Git blame annotations and code lens, seamlessly navigate and explore Git repositories, gain valuable insights via powerful comparison commands, and so much more.

Import Cost is an extension for Visual Studio Code that will display inline in the editor the size of the imported/required package. The extension utilizes webpack with babili-webpack-plugin in order to detect the imported size.

Markdown All in One is an extension for Visual Studio Code that gives you everything you need to write Markdown (keyboard shortcuts, table of contents, auto preview and more).

Auto Rename Tag is an extension for Visual Studio Code that automatically add HTML/XML close tag, same as Visual Studio IDE or Sublime Text.

Auto-Close Tag is an extension for Visual Studio Code that automatically add HTML/XML close tag, same as Visual Studio IDE or Sublime Text does.

Settings Sync is an extension for Visual Studio Code that synchronizes Settings, Snippets, Themes, File Icons, Launch, Keybindings, Workspaces and Extensions Across Multiple Machines Using GitHub Gist.

Bookmarks is an extension for Visual Studio Code that lets you mark lines of code and jump to them.

Better Comments is an extension for Visual Studio Code that improves your code commenting by annotating with alert, informational, TODOs, and more.

Code Spell Checker is an extension for Visual Studio Code that works as a spelling checker for source code.

CSS Peak is an extension for Visual Studio Code that allows peeking to css ID and class strings as definitions from html files to respective CSS. It also allows peek and goto definition.

Tailwind CSS IntelliSense is an extension for Visual Studio Code that enhances the Tailwind development experience by providing Visual Studio Code users with advanced features such as autocomplete, syntax highlighting, and linting.

Prettier is an extension for Visual Studio Code that is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.

NPM Intellisense is an extension for Visual Studio Code that autocompletes npm modules in import statements.

Path Intellisense is an extension for Visual Studio Code that autocompletes filenames.

Relative Path is an extension for Visual Studio Code that gets the relative url paths from files in the current workspace.

Path Autocomplete is an extension for Visual Studio Code that provides path completion for visual studio code.

Discord Presence is an extension for Visual Studio Code that updates your discord status with a rich presence.

Code Runner is an extension for Visual Studio Code that runs code snippets or code files for multiple languages: C/C++, Java, JavaScript, PHP, Python, Perl, Ruby, Go, Lua, Groovy, PowerShell, BASH/SH, C#, F#, .NET Core, TypeScript, CoffeeScript, Scala, Swift, Julia, OCaml, R, Elixir, Clojure, Haxe, Objective-C, Rust, Racket, Scheme, Kotlin, Dart, Haskell, Nim, D, CUDA, and custom command.

Kite is an extension for Visual Studio Code that provides an AI-powered programming assistant that helps you write code faster inside Visual Studio Code. Kite works for all major programming languages: Python, Java, Go, PHP, C/C#/C++, Javascript, HTML/CSS, Typescript, React, Ruby, Scala, Kotlin, Bash, Vue and React.

Tabnine is an extension for Visual Studio Code that provides an AI code completion tool trusted by millions of developers to code faster with fewer errors. Whether you are a new dev or a seasoned pro, working solo or part of a team, Tabnine will help push your productivity to new heights while cutting your QA time in your favorite IDE.

Unreal Engine 5 Development

Back to the Top


Recommend Hardware Requirements:

  • OS: MacOS 12 or later

  • CPU/GPU: M1 Pro (10-core CPU, 16-core GPU)

  • RAM: 32 GB

  • Storage: 1 TB

Unreal Engine 5 is a game engine developed by Epic Games with the world's most open and advanced real-time 3D creation tool. Continuously evolving to serve not only its original purpose as a state-of-the-art game engine, today it gives creators across industries the freedom and control to deliver cutting-edge content, interactive experiences, and immersive virtual worlds.


Unreal Engine 5 with Big City Sample Project


Unreal Engine Twinmotion. Source: Unreal Engine


Unreal Engine 5 Project browser


Unreal Engine 5 Vehicle Project Demo


Unreal Engine Marketplace

Unreal Engine Tools

Back to the Top

Blueprint Visual Scripting is a complete gameplay scripting system in Unreal Engine based on the concept of using a node-based interface to create gameplay elements from within Unreal Editor. As with many common scripting languages, it is used to define object-oriented (OO) classes or objects in the engine.


Blueprint Visual Scripting UI

Datasmith is a collection of tools and plugins that bring entire pre-constructed scenes and complex assets created in a variety of industry-standard design applications into Unreal Engine.

Chaos Physics is a Beta feature that is the light-weight physics simulation solution used in Fortnite, and it includes the following major features.

  • RBAN (Rigid Body Animation Nodes)
  • Destruction
  • Cloth
  • Ragdoll
  • Vehicles

Niagara VFX System is one of two tools you can use to create and adjust visual effects (VFX) inside Unreal Engine 5 (UE5). Before Niagara, the primary way to create and edit visual effects in UE4 was to use Cascade. It has many of the same of particle manipulation methods that Cascade offers, the way you interact and build visual effects with Niagara is vastly different.

MetaHuman Creator is a free cloud-based app that empowers anyone to create photorealistic digital humans, complete with hair and clothing, in minutes. MetaHumans come fully rigged and ready to animate in your Unreal Engine projects.

Twinmotion is a real-time 3D immersion software that produces high-quality images, panoramas and standard or 360° VR videos in seconds. Developed for architecture, construction, urban planning and landscaping professionals.

Bridgew by Quixel is a gateway to create a world of 3D content right inside the Unreal Engine. it includes Megascans—the world's largest library of AAA, cinema-quality assets based on real-world scan data.

Lumen is an Unreal Engine 5 feature that uses multiple ray tracing methods to solve Global Illumination and Reflections. Screen traces are done first, followed by a more reliable method. It uses Software Ray Tracing through Signed Distance Fields by default, but can achieve higher quality on supporting video cards when Hardware Ray Tracing is enabled. Note: Lumen works on Apple Silicon with Unreal 5.2 release.

Nanite is Unreal Engine 5's new virtualized geometry system which uses a new internal mesh format and rendering technology to render pixel scale detail and high object counts. It intelligently does work on only the detail that can be perceived and no more.

Procedural Content Generation Framework (PCG) is a toolset for creating your own procedural content inside Unreal Engine. It provides artists and designers the ability to build fast, iterative tools and content of any complexity ranging from asset utilities, such as buildings or biome generation, up to entire worlds.

Unreal Engine's VCam system is a Cine Camera in Unreal Engine that uses a modular component system to manipulate camera data and output the final results to a variety of external output devices. In addition, the Virtual Camera system provides its functionality while in the editor and during Play In Editor (PIE) or Standalone Game mode.

nDisplay is a tool in Unreal Engine that describes how multiple computers work together in an nDisplay rendering network.

Unreal Engine Marketplace is Unreal Engine's Store that has a library Of Textures, Models, Animations, Tutorials, and More for creating amazing 3D projects and games.

UnrealBuildTool (UBT) is a tool that manages the process of building UE4 source code across a variety of build configurations.

UnrealHeaderTool (UHT) is a custom parsing and code-generation tool supporting the UObject system.

AutomationTool is a generic system used to automate processes, including testing and building games.

Proxy Geometry Tool is a tool-set that was developed as a way to increase your Unreal Engine 4 (UE4) project's performance while keeping the visual quality of your project uneffected.

Replay System is a tool which can record gameplay for later viewing. This feature is available in all games, from live, multiplayer games played on dedicated servers, to single-player games, and even including Play-In-Editor sessions. At a high level, the Replay system works by using a DemoNetDriver to read data drawn from the built-in replication system, similar to how a NetDriver operates in a live, networked gameplay environment.

Unreal Engine Developer Resources

Back to the Top

Note: you will need to create an Epic Games account to download Unreal Engine.

Unreal Engine 5 Development Books

Unity Development

Back to the Top


Recommend Hardware Requirements:

  • OS: MacOS 12 or later

  • CPU/GPU: M1 Pro (10-core CPU, 16-core GPU)

  • RAM: 32 GB

  • Storage: 1 TB

Unity is a cross-platform game development platform. Unity can be used to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers. Checkout the Unity Manual to get started on your Unity projects.



Unity Terrain project. Source: Unity


Unity Hub Installs


Unity Asset Store

Unity Tools

Unity Hub is a tool that helps manage multiple installations of the Unity Editor, create new projects, and access your work.

Unity Asset Storeis Unity's Store that has a library Of Textures, Models, Animations, Tutorials, and More for creating amazing 3D projects and games.

Unity Plus is a version of Unity for small businesses and serious hobbyists get more functionality and training resources to power up their projects.

Unity Pro is a version of Unity to create and operate amazing applications and immersive experiences with a complete solution for professionals across industries.

Unity Enterprise is a version of Unity for large teams creating at scale, Unity Enterprise delivers comprehensive technology, resources, and support that fuel innovation, reduce risk, and power your success.

Unity XR is a plug-in framework that enables XR providers to integrate with the Unity engine and make full use of its features.

Unity MARS is a tool that helps you create augmented reality (AR) apps with better workflows and purpose built authoring tools.

Unity Build Server is a tool that offloads your Unity project builds to network hardware, empowering your creative team to iterate more, produce higher quality products, and ship on time.

Unity Teams is a tool that helps you and your team create together, faster. It makes it simple to save, share and sync your Unity projects with anyone.

Unity Automated QA is a tool that shortens the development feedback loop with on-demand tests that anyone on your team can create and run without writing code.

Unity Simulation Pro is a tool that unlocks the true power of scalable simulations through a simulation-optimized version of the Unity runtime.

Unity Forma is a tool that brings the power of real-time 3D to your marketing. It turns 3D product data into interactive 3D configurators, stunning images and more.

Unity Reflect is a tool that helps create an experience immersive and collaborative real-time 3D environments, including in AR and VR, for better decision-making across your entire project lifecycle.

Unity Reflect Develop is a tool that builds your own custom applications to address any problem across the entire building and infrastructure lifecycle for internal or commercial deployment.

Unity ArtEngine is Unity’s material authoring tool. Harnessing the power of assisted creation, the tool helps creators accelerate production pipelines.

Unity Machine Learning Agents is a tol that helps train and embed intelligent agents by leveraging state-of-the-art deep learning technology.

Unity Essential Success is a tool that is your dedicated Support Coordinator and experienced Unity engineers are ready to help.

Bolt Visual scripting is a tool in Unity empowers creators to develop gameplay mechanics or interaction logic with a visual, graph-based system, instead of writing traditional lines of code.

VisualLive is a tool for construction professionals can visualize designs and collaborate in real-time by overlaying large BIM and CAD files onto jobsites using AR.

Professional Services: Optimization Accelerator is atool that boosts your project and your productivity in a four-day sprint with hands-on guidance from a Unity engineer. It will help you analyze performance problems, test solutions, and implement improvements.

Odin Inspector Enterprise is a tool that optimizes your project workflows and save thousands of development hours.

Multiplay is a resilient, multicloud hybrid server hosting and matchmaking platform without having to build and maintain your own infrastructure. Proven at scale in some of the world’s biggest games.

Vivox is a voice and text comms tool that boosts player engagement, retention rates and create immersive multiplayer experiences by leveraging an easy-to-implement, feature-rich voice and text chat service.

Relayᴮᴱᵀᴬ is a tool that provides a great multiplayer gaming experiences with Unity’s Relay service that's now in open beta.

Lobbyᴮᴱᵀᴬ is a tool that connects your players for great multiplayer gaming experiences with Lobby that's now in Open Beta.

Cloud Codeᴮᴱᵀᴬ is a tool that runs your game logic in the cloud as serverless functions and interact with other backend services.

Cloud Saveᴮᴱᵀᴬ is a tool that builds better player experiences by storing game data to the cloud.

Furioos is a tool that streams fully interactive 3D experiences from Unity, other real-time 3D platforms, and Windows applications with peak visual quality in any web browser.

OctaneRender® for Unity is a tool that lets you harness physically accurate rendering directly in Unity and compose gorgeous, cinematic-quality scenes with OctaneRender materials and lighting.

Pacelab WEAVR is a tool that provides a complete XR platform that enables any company, in any industry, to develop and manage enterprise-scale immersive training.

Interact is a tool that creates advanced real-time, human-centric simulations on any VR configuration for training, visualization, and safety.

Prespective is a tool that helps you design and simulate your machine, factory, or system in Unity real-time 3D. Create common ground among stakeholders and speed up decision processes with improved visualization tools.

Pixyz is a tool that lets you can quickly import, prep, and optimize your large CAD, mesh and point cloud models for real-time visualizations in Unity.

Plastic SCM Cloud Edition is a tool that makes Collaboration more efficient with a performant, easy-to-use version control system (VCS) made for programmers, artists and designers.

Backtrace is a game crash management platform that delivers uninterrupted game experiences by automating your response to errors.

SpeedTree® is a group of vegetation programming and modeling software products developed and sold by Interactive Data Visualization, Inc. that generates virtual foliage for animations, architecture and in real time for video games and demanding real time simulations. Unity Technologies acquired SpeedTree in July 2021.

ParSec is a the ultimate remote desktop, powerful enough for teams of developers, designers, architects, and engineers to get the job done and work together from anywhere. Unity Technologies acquired Parsec in August 2021.

SyncSketch is a collaboration software for visual artists that allows a team to view, review, and provide feedback on each other’s work. It includes support for both 2D and 3D assets as well as video. As of December 2021 SyncSketch has been acquired by Unity Technologies.

Weta Digital is a digital visual effects company created by Peter Jackson. It produced the digital special effects for Heavenly Creatures and the Lord of the Rings. Unity Technologies acquired Weta Digital in November 2021.

Unity Developer Resources

Unity Knowledge Base is a library of articles that helps you troubleshoot common problems, whether it’s creating an account, importing assets, or baking a scene.

Unity Develop Books

Blender Development

Back to the Top


Recommended Hardware Requirements:

  • OS: MacOS 12 or later

  • CPU/GPU: M1 Pro (10-core CPU, 16-core GPU)

  • RAM: 32 GB

  • Storage: 1 TB

Blender is a professional, free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, interactive 3D applications and video games.


Blender Developer Resources

Blender Tools and Addons

Blender comes packed with import/export support for many different programs.

Including:

  • Image(JPEG, JPEG2000, PNG, TARGA, OpenEXR, DPX, Cineon, Radiance HDR, SGI Iris, TIFF)

  • Video(AVI, MPEG and Quicktime (on MacOS)).

  • 3D(Alembic, 3D Studio (3DS), COLLADA (DAE), Filmbox (FBX), Autodesk (DXF), Wavefront (OBJ), DirectX (x), Lightwave (LWO), Motion Capture (BVH), SVG, Stanford PLY, STL, VRML, VRML97, X3D).

Eevee is Blender’s realtime render engine focused on speed and interactivity while achieving the goal of rendering PBR materials. Eevee can be used interactively in the 3D Viewport but also produce high quality final renders. Eevee materials are created using the same shader nodes as Cycles, making it easy to render existing scenes. For Cycles users, this makes Eevee work great for previewing materials in realtime.


Eevee final render – “Temple”. Source: Dominik Graf

Cycles is Blender’s ray-trace based production render engine.


Blender's Cycles Render Engine. Source: Blender


Blender VFX(Visual Effects). Source: Blender

FreeStyle is an edge- and line-based non-photorealistic (NPR) rendering engine. It relies on mesh data and z-depth information to draw lines on selected edge types. Various line styles can be added to produce artistic (“hand drawn”, “painted”, etc.) or technical (hard line) looks.

Modifiers are automatic operations that affect an object in a non-destructive way. With modifiers, you can perform many effects automatically that would otherwise be too tedious to update manually (such as subdivision surfaces) and without affecting the base geometry of your object.

UV Unwrapping is a tool that let's you easily unwrap your mesh right inside Blender, and use image textures or paint your own directly onto the model.

UV Sculpt is a “mode” in Blender that allows you to grab, pinch and smooth UVs, just like Sculpt Mode.

Dedicated Workspace is a feature of sculpting organic subjects using the built-in sculpting feature set of Blender.

Brushes is a feature in Blender that comes with built-in brushes such as Crease, Clay Strips, Pinch, Grab, Smooth, Mask and many more.

Dynamic topology( dyntopo) is a dynamic tessellation sculpting method, which adds and removes details on the fly, whereas regular sculpting only affects the shape of a mesh.

Masking is a feature used while sculpting, areas might be hidden behind parts of the mesh or they might be too close to other parts. To work through these, it is useful to isolate parts of a mesh to sculpt on. This can be done by either completely hiding parts of the mesh or by masking areas that can not be sculpted on.

Grease Pencil is a particular type of Blender object that allow you to draw in the 3D space. It can be use to make traditional 2D animation, cut-out animation, motion graphics or use it as storyboard tool among other things.

Constraints are a way to control an object’s properties (e.g. its location, rotation, scale), using either plain static values (like the “limit” ones), or another object, called “target” (like e.g. the “copy” ones).

Shape keys are used to deform objects into new shapes for animation. In other terminology, shape keys may be called “morph targets” or “blend shapes”. The most popular use cases for shape keys are in character facial animation and in tweaking and refining a skeletal rig. They are particularly useful for modeling organic soft parts and muscles where there is a need for more control over the resulting shape than what can be achieved with combination of rotation and scale.

Motion Paths is a tool allows you to visualize the motion of points as paths over a series of frames. These points can be object origins and bone joints.

Simulations is a tool that allows you to create amazing Simulations such as a crumbling building, rain, fire, smoke, fluid, cloth or full on destruction.

Blender Video Editor is a video editor that comes with a built-in video sequence editor allows you to perform basic actions like video cuts and splicing, as well as more complex tasks like video masking or color grading.

Blender Compositing is a feature that comes with an impressive library of nodes for creating camera fx, color grading, vignettes and much more Render-layer support. Along with the ability to render to multiLayer OpenEXR files.

Blender Motion Tracking is a feature that provides production ready camera and object tracking, allowing you to import raw footage, track it, mask areas and reconstruct the camera movements live in your 3d scene.

Blender Development Books

Virtualization

Back to the Top


Developer Quick Links

Virtualization Tools and Frameworks

Apple Hypervisor is a framework that builds virtualization solutions on top of a lightweight hypervisor, without third-party kernel extensions. Hypervisor provides C APIs so you can interact with virtualization technologies in user space, without writing kernel extensions (KEXTs). As a result, the apps you create using this framework are suitable for distribution on the Mac App Store.

Apple Virtualization Framework is a framework that provides high-level APIs for creating and managing virtual machines on Apple silicon and Intel-based Mac computers. This framework is used to boot and run a Linux-based operating system in a custom environment that you define. It also supports the Virtio specification, which defines standard interfaces for many device types, including network, socket, serial port, storage, entropy, and memory-balloon devices.

Apple Paravirtualized Graphics Framework is a framework that implements hardware-accelerated graphics for macOS running in a virtual machine, hereafter known as the guest. The operating system provides a graphics driver that runs inside the guest, communicating with the framework in the host operating system to take advantage of Metal-accelerated graphics.

Cilicon is a macOS App that leverages Apple's Virtualization Framework to create, provision and run ephemeral virtual machines with minimal setup or maintenance effort. You should be able to get up and running with your self-hosted CI in less than an hour.

Parallels Desktop is a Desktop Hypervisor that delivers the fastest, easiest and most powerful application for running Windows/Linux on Mac (including the new Apple M1 chip) and ChromeOS.


Parallels Desktop for Mac

UTM is a full featured system emulator and virtual machine host for iOS and macOS. It is based off of QEMU that allows you to run Windows, Linux, and more on your Mac, iPhone, and iPad.


Ubuntu on UTM

VMware Fusion 22H2 is a software hypervisor developed by VMware for Mac computers.It creates a virtual machine and install an operating system (such as Windows or Linux) inside that virtual machine.

  • Windows 11 on Intel and Apple Silicon, with 2D graphics and networking support.
  • VMTools installation support for Windows 11 guest operating system on M1-based Macs.
  • Virtual TPM device with fast encryption support.
  • Improved Linux support on M1.
  • 3D Graphics HW Acceleration and OpenGL 4.3(Requires Linux 5.19+ & Mesa 22.1.3+) in Linux virtual machines.
  • Universal Binary for Apple Silicon and Intel Macs.


Windows 11 on VMware Fusion

Tart is a virtualization toolset to build, run and manage virtual machines on Apple Silicon.

  • Tart uses Apple's own Virtualization.Framework for near-native performance.
  • Push/Pull virtual machines from any OCI-compatible container registry.
  • Use Tart Packer Plugin to automate VM creation.
  • Built-in CI integration.


Tart

Multipass is a tool to generate cloud-style Ubuntu VMs quickly on Linux, macOS, and Windows. It uses KVM on Linux, Hyper-V on Windows, and HyperKit on macOS.

VMware Horizon is a digital workspace with the efficient delivery of virtual desktops and applications that equips workers anywhere, anytime, and on any device.

VMware Carbon Black is a cloud–native endpoint protection platform combines the intelligent system hardening and behavioral prevention needed to keep emerging threats at bay.

Proxmox Virtual Environment(VE) is a complete open-source platform for enterprise virtualization. It includes a built-in web interface that you can easily manage VMs and containers, software-defined storage and networking, high-availability clustering, and multiple out-of-the-box tools on a single solution.

VirtManager is a graphical tool for managing virtual machines via libvirt. Most usage is with QEMU/KVM virtual machines, but Xen and libvirt LXC containers are well supported. Common operations for any libvirt driver should work.

oVirt is an open-source distributed virtualization solution, designed to manage your entire enterprise infrastructure. oVirt uses the trusted KVM hypervisor and is built upon several other community projects, including libvirt, Gluster, PatternFly, and Ansible.Founded by Red Hat as a community project on which Red Hat Enterprise Virtualization is based allowing for centralized management of virtual machines, compute, storage and networking resources, from an easy-to-use web-based front-end with platform independent access.

KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module.

QEMU is a fast processor emulator using a portable dynamic translator. QEMU emulates a full system, including a processor and various peripherals. It can be used to launch a different Operating System without rebooting the PC or to debug system code.

macOS-Simple-KVM is a set of tools to easily set up a quick macOS VM in QEMU, accelerated by KVM.

Quickemu is a program that quickly create and run optimised Windows, macOS and Linux desktop virtual machines.

AWS ECS is a highly scalable, high-performance container orchestration service that supports Docker containers and allows you to easily run and scale containerized applications on AWS. Amazon ECS eliminates the need for you to install and operate your own container orchestration software, manage and scale a cluster of virtual machines, or schedule containers on those virtual machines.

Cloud Hypervisor is an open source Virtual Machine Monitor (VMM) that runs on top of KVM. The project focuses on exclusively running modern, cloud workloads, on top of a limited set of hardware architectures and platforms. Cloud workloads refers to those that are usually run by customers inside a cloud provider. Cloud Hypervisor is implemented in Rust and is based on the rust-vmm crates.

Xen is focused on advancing virtualization in a number of different commercial and open source applications, including server virtualization, Infrastructure as a Services (IaaS), desktop virtualization, security applications, embedded and hardware appliances, and automotive/aviation.

Packer is an open source tool for creating identical machine images for multiple platforms from a single source configuration. Packer is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel. Packer does not replace configuration management like Chef or Puppet. In fact, when building images, Packer is able to use tools like Chef or Puppet to install software onto the image.

Vagrant is a tool for building and managing virtual machine environments in a single workflow. With an easy-to-use workflow and focus on automation, Vagrant lowers development environment setup time, increases production parity, and makes the "works on my machine" excuse a relic of the past. It provides easy to configure, reproducible, and portable work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team.

Virtualization Concepts & Terminologies

HVM (Hardware Virtual Machine) is a virtualization type that provides the ability to run an operating system directly on top of a virtual machine without any modification, as if it were run on the bare-metal hardware.

PV(ParaVirtualization) is an efficient and lightweight virtualization technique introduced by the Xen Project team, later adopted by other virtualization solutions. PV does not require virtualization extensions from the host CPU and thus enables virtualization on hardware architectures that do not support Hardware-assisted virtualization.

Network functions virtualization (NFV) is the replacement of network appliance hardware with virtual machines. The virtual machines use a hypervisor to run networking software and processes such as routing and load balancing. NFV allows for the separation of communication services from dedicated hardware, such as routers and firewalls. This separation means network operations can provide new services dynamically and without installing new hardware. Deploying network components with network functions virtualization only takes hours compared to months like with traditional networking solutions.

Software Defined Networking (SDN) is an approach to networking that uses software-based controllers or application programming interfaces (APIs) to communicate with underlying hardware infrastructure and direct traffic on a network. This model differs from that of traditional networks, which use dedicated hardware devices (routers and switches) to control network traffic.

Virtualized Infrastructure Manager (VIM) is a service delivery and reduce costs with high performance lifecycle management Manage the full lifecycle of the software and hardware comprising your NFV infrastructure (NFVI), and maintaining a live inventory and allocation plan of both physical and virtual resources.

Management and Orchestration(MANO) is an ETSI-hosted initiative to develop an Open Source NFV Management and Orchestration (MANO) software stack aligned with ETSI NFV. Two of the key components of the ETSI NFV architectural framework are the NFV Orchestrator and VNF Manager, known as NFV MANO.

Magma is an open source software platform that gives network operators an open, flexible and extendable mobile core network solution. Their mission is to connect the world to a faster network by enabling service providers to build cost-effective and extensible carrier-grade networks. Magma is 3GPP generation (2G, 3G, 4G or upcoming 5G networks) and access network agnostic (cellular or WiFi). It can flexibly support a radio access network with minimal development and deployment effort.

OpenRAN is an intelligent Radio Access Network(RAN) integrated on general purpose platforms with open interface between software defined functions. Open RANecosystem enables enormous flexibility and interoperability with a complete openness to multi-vendor deployments.

Open vSwitch(OVS)is an open source production quality, multilayer virtual switch licensed under the open source Apache 2.0 license. It is designed to enable massive network automation through programmatic extension, while still supporting standard management interfaces and protocols (NetFlow, sFlow, IPFIX, RSPAN, CLI, LACP, 802.1ag).

Edge is a distributed computing framework that brings enterprise applications closer to data sources such as IoT devices or local edge servers. This proximity to data at its source can deliver strong business benefits, including faster insights, improved response times and better bandwidth availability.

Multi-access edge computing (MEC) is an Industry Specification Group (ISG) within ETSI to create a standardized, open environment which will allow the efficient and seamless integration of applications from vendors, service providers, and third-parties across multi-vendor Multi-access Edge Computing platforms.

Virtualized network functions(VNFs) is a software application used in a Network Functions Virtualization (NFV) implementation that has well defined interfaces, and provides one or more component networking functions in a defined way. For example, a security VNF provides Network Address Translation (NAT) and firewall component functions.

Cloud-Native Network Functions(CNF) is a network function designed and implemented to run inside containers. CNFs inherit all the cloud native architectural and operational principles including Kubernetes(K8s) lifecycle management, agility, resilience, and observability.

Physical Network Function(PNF) is a physical network node which has not undergone virtualization. Both PNFs and VNFs (Virtualized Network Functions) can be used to form an overall Network Service.

Network functions virtualization infrastructure(NFVI) is the foundation of the overall NFV architecture. It provides the physical compute, storage, and networking hardware that hosts the VNFs. Each NFVI block can be thought of as an NFVI node and many nodes can be deployed and controlled geographically.

Virtualization-based Security (VBS) is a hardware virtualization feature to create and isolate a secure region of memory from the normal operating system.

Hypervisor-Enforced Code Integrity (HVCI) is a mechanism whereby a hypervisor, such as Hyper-V, uses hardware virtualization to protect kernel-mode processes against the injection and execution of malicious or unverified code. Code integrity validation is performed in a secure environment that is resistant to attack from malicious software, and page permissions for kernel mode are set and maintained by the hypervisor.

NVIDIA virtual GPU (vGPU) is a software enables powerful GPU performance for workloads ranging from graphics-rich virtual workstations to data science and AI, enabling IT to leverage the management and security benefits of virtualization as well as the performance of NVIDIA GPUs required for modern workloads.

AMD MxGPU is a hardware-based virtualized GPU solution, is built on industry standard SR-IOV (Single-Root I/O Virtualization) technology and allows multiple virtualized users per physical GPU to work remotely.

Docker

Back to the Top


Running Docker on Apple Silicon (M1/M2)

Docker Desktop for Apple silicon

Lima is a tool that launches Linux virtual machines with automatic file sharing and port forwarding (similar to WSL2), and containerd. It's a great free and open-source alternative for Docker Desktop.

Install Lima using Homebrew

brew install lima docker docker-credential-helper

Colima is a container runtimes on macOS (and Linux) with minimal setup.

Included Features:

  • M1/M2 Macs and Intel support

  • Docker and Containerd support

  • Kubernetes

  • Port Forwarding

  • Volume mounts

Installing Colima

Homebrew

brew install colima

MacPorts

sudo port install colima

Nix

nix-env -iA nixpkgs.colima


Container Architecture. Source: Containerd.io

Docker Learning Resources

Docker Training Program

Docker Certified Associate (DCA) certification

Docker Documentation | Docker Documentation

The Docker Workshop

Docker Courses on Udemy

Docker Courses on Coursera

Docker Courses on edX

Docker Courses on Linkedin Learning

Docker Tools

Lima is a tool that launches Linux virtual machines with automatic file sharing and port forwarding (similar to WSL2), and containerd. It's a great free and open-source alternative for Docker Desktop.

Colima is a container runtimes on macOS (and Linux) with minimal setup.

Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly working in collaboration with cloud, Linux, and Windows vendors, including Microsoft.

Docker Enterprise is a subscription including software, supported and certified container platform for CentOS, Red Hat Enterprise Linux (RHEL), Ubuntu, SUSE Linux Enterprise Server (SLES), Oracle Linux, and Windows Server 2016, as well as for cloud providers AWS and Azure. In November 2019 Docker's Enterprise Platform business was acquired by Mirantis.

Docker Desktop is an application for MacOS and Windows machines for the building and sharing of containerized applications and microservices. Docker Desktop delivers the speed, choice and security you need for designing and delivering containerized applications on your desktop. Docker Desktop includes Docker App, developer tools, Kubernetes and version synchronization to production Docker Engines.

Docker Hub is the world's largest library and community for container images. Browse over 100,000 container images from software vendors, open-source projects, and the community.

Docker Compose is a tool that was developed to help define and share multi-container applications. With Docker Compose, you can create a YAML file to define the services and with a single command, can spin everything up or tear it all down.

Docker Swarm is a Docker-native clustering system swarm is a simple tool which controls a cluster of Docker hosts and exposes it as a single "virtual" host.

Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image. Using docker build users can create an automated build that executes several command-line instructions in succession.

Docker Containers is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.

Docker Engine is a container runtime that runs on various Linux (CentOS, Debian, Fedora, Oracle Linux, RHEL, SUSE, and Ubuntu) and Windows Server operating systems. Docker creates simple tooling and a universal packaging approach that bundles up all application dependencies inside a container which is then run on Docker Engine.

Docker Images is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings. Images have intermediate layers that increase reusability, decrease disk usage, and speed up docker build by allowing each step to be cached. These intermediate layers are not shown by default. The SIZE is the cumulative space taken up by the image and all its parent images.

Docker Network is a that displays detailed information on one or more networks.

Docker Daemon is a service started by a system utility, not manually by a user. This makes it easier to automatically start Docker when the machine reboots. The command to start Docker depends on your operating system. Currently, it only runs on Linux because it depends on a number of Linux kernel features, but there are a few ways to run Docker on MacOS and Windows as well by configuring the operating system utilities.

Docker Storage is a driver controls how images and containers are stored and managed on your Docker host.

Kitematic is a simple application for managing Docker containers on Mac, Linux and Windows letting you control your app containers from a graphical user interface (GUI).

Open Container Initiative is an open governance structure for the express purpose of creating open industry standards around container formats and runtimes.

Buildah is a command line tool to build Open Container Initiative (OCI) images. It can be used with Docker, Podman, Kubernetes.

Podman is a daemonless, open source, Linux native tool designed to make it easy to find, run, build, share and deploy applications using Open Containers Initiative (OCI) Containers and Container Images. Podman provides a command line interface (CLI) familiar to anyone who has used the Docker Container Engine.

Containerd is a daemon that manages the complete container lifecycle of its host system, from image transfer and storage to container execution and supervision to low-level storage to network attachments and beyond. It is available for Linux and Windows.

Kubernetes

Back to the Top


Running Kubernetes Locally on Apple Silicon (M1/M2)

kind is a tool for running local Kubernetes clusters using Docker container “nodes”. It was primarily designed for testing Kubernetes itself, but may be used for local development or CI.

macOS home-brew command

brew install kind

Okra (Orchestration with Kubernetes on Apple) is a virtualization layer created for Mac build infrastructure, Orka allows you to orchestrate macOS in a cloud environment using Kubernetes on genuine Apple hardware.


OKRA CLI

Colima is a container runtimes on macOS (and Linux) with minimal setup.

Included Features:

  • M1/M2 Macs and Intel support

  • Docker and Containerd support

  • Kubernetes

  • Port Forwarding

  • Volume mounts

Installing Colima

Homebrew

brew install colima

MacPorts

sudo port install colima

Nix

nix-env -iA nixpkgs.colima

Kubernetes Learning Resources

Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.

Getting Kubernetes Certifications

Getting started with Kubernetes on AWS

Kubernetes on Microsoft Azure

Intro to Azure Kubernetes Service

Azure Red Hat OpenShift

Getting started with Google Cloud

Getting started with Kubernetes on Red Hat

Getting started with Kubernetes on IBM

Red Hat OpenShift on IBM Cloud

Enable OpenShift Virtualization on Red Hat OpenShift

YAML basics in Kubernetes

Elastic Cloud on Kubernetes

Docker and Kubernetes

Running Apache Spark on Kubernetes

Kubernetes Across VMware vRealize Automation

VMware Tanzu Kubernetes Grid

All the Ways VMware Tanzu Works with AWS

VMware Tanzu Education

Using Ansible in a Cloud-Native Kubernetes Environment

Managing Kubernetes (K8s) objects with Ansible

Setting up a Kubernetes cluster using Vagrant and Ansible

Running MongoDB with Kubernetes

Kubernetes Fluentd

Understanding the new GitLab Kubernetes Agent

Intro Local Process with Kubernetes for Visual Studio 2019

Kubernetes Contributors

KubeAcademy from VMware

Kubernetes Tutorials from Pulumi

Kubernetes Playground by Katacoda

Scalable Microservices with Kubernetes course from Udacity

Kubernetes Tools, Frameworks, and Projects

Open Container Initiative is an open governance structure for the express purpose of creating open industry standards around container formats and runtimes.

Buildah is a command line tool to build Open Container Initiative (OCI) images. It can be used with Docker, Podman, Kubernetes.

Podman is a daemonless, open source, Linux native tool designed to make it easy to find, run, build, share and deploy applications using Open Containers Initiative (OCI) Containers and Container Images. Podman provides a command line interface (CLI) familiar to anyone who has used the Docker Container Engine.

Containerd is a daemon that manages the complete container lifecycle of its host system, from image transfer and storage to container execution and supervision to low-level storage to network attachments and beyond. It is available for Linux and Windows.

Google Kubernetes Engine (GKE) is a managed, production-ready environment for running containerized applications.

Azure Kubernetes Service (AKS) is serverless Kubernetes, with a integrated continuous integration and continuous delivery (CI/CD) experience, and enterprise-grade security and governance. Unite your development and operations teams on a single platform to rapidly build, deliver, and scale applications with confidence.

Amazon EKS is a tool that runs Kubernetes control plane instances across multiple Availability Zones to ensure high availability.

AWS Controllers for Kubernetes (ACK) is a new tool that lets you directly manage AWS services from Kubernetes. ACK makes it simple to build scalable and highly-available Kubernetes applications that utilize AWS services.

Container Engine for Kubernetes (OKE) is an Oracle-managed container orchestration service that can reduce the time and cost to build modern cloud native applications. Unlike most other vendors, Oracle Cloud Infrastructure provides Container Engine for Kubernetes as a free service that runs on higher-performance, lower-cost compute.

Anthos is a modern application management platform that provides a consistent development and operations experience for cloud and on-premises environments.

Red Hat Openshift is a fully managed Kubernetes platform that provides a foundation for on-premises, hybrid, and multicloud deployments.

OKD is a community distribution of Kubernetes optimized for continuous application development and multi-tenant deployment. OKD adds developer and operations-centric tools on top of Kubernetes to enable rapid application development, easy deployment and scaling, and long-term lifecycle maintenance for small and large teams.

Odo is a fast, iterative, and straightforward CLI tool for developers who write, build, and deploy applications on Kubernetes and OpenShift.

Kata Operator is an operator to perform lifecycle management (install/upgrade/uninstall) of Kata Runtime on Openshift as well as Kubernetes cluster.

Thanos is a set of components that can be composed into a highly available metric system with unlimited storage capacity, which can be added seamlessly on top of existing Prometheus deployments.

OpenShift Hive is an operator which runs as a service on top of Kubernetes/OpenShift. The Hive service can be used to provision and perform initial configuration of OpenShift 4 clusters.

Rook is a tool that turns distributed storage systems into self-managing, self-scaling, self-healing storage services. It automates the tasks of a storage administrator: deployment, bootstrapping, configuration, provisioning, scaling, upgrading, migration, disaster recovery, monitoring, and resource management.

VMware Tanzu is a centralized management platform for consistently operating and securing your Kubernetes infrastructure and modern applications across multiple teams and private/public clouds.

Kubespray is a tool that combines Kubernetes and Ansible to easily install Kubernetes clusters that can be deployed on AWS, GCE, Azure, OpenStack, vSphere, Packet (bare metal), Oracle Cloud Infrastructure (Experimental), or Baremetal.

KubeInit provides Ansible playbooks and roles for the deployment and configuration of multiple Kubernetes distributions.

Rancher is a complete software stack for teams adopting containers. It addresses the operational and security challenges of managing multiple Kubernetes clusters, while providing DevOps teams with integrated tools for running containerized workloads.

K3s is a highly available, certified Kubernetes distribution designed for production workloads in unattended, resource-constrained, remote locations or inside IoT appliances.

Helm is a Kubernetes Package Manager tool that makes it easier to install and manage Kubernetes applications.

Knative is a Kubernetes-based platform to build, deploy, and manage modern serverless workloads. Knative takes care of the operational overhead details of networking, autoscaling (even to zero), and revision tracking.

KubeFlow is a tool dedicated to making deployments of machine learning (ML) workflows on Kubernetes simple, portable and scalable.

Etcd is a distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines. Etcd is used as the backend for service discovery and stores cluster state and configuration for Kubernetes.

OpenEBS is a Kubernetes-based tool to create stateful applications using Container Attached Storage.

Container Storage Interface (CSI) is an API that lets container orchestration platforms like Kubernetes seamlessly communicate with stored data via a plug-in.

MicroK8s is a tool that delivers the full Kubernetes experience. In a Fully containerized deployment with compressed over-the-air updates for ultra-reliable operations. It is supported on Linux, Windows, and MacOS.

Charmed Kubernetes is a well integrated, turn-key, conformant Kubernetes platform, optimized for your multi-cloud environments developed by Canonical.

Grafana Kubernetes App is a toll that allows you to monitor your Kubernetes cluster's performance. It includes 4 dashboards, Cluster, Node, Pod/Container and Deployment. It allows for the automatic deployment of the required Prometheus exporters and a default scrape config to use with your in cluster Prometheus deployment.

KubeEdge is an open source system for extending native containerized application orchestration capabilities to hosts at Edge.It is built upon kubernetes and provides fundamental infrastructure support for network, app. deployment and metadata synchronization between cloud and edge.

Lens is the most powerful IDE for people who need to deal with Kubernetes clusters on a daily basis. It has support for MacOS, Windows and Linux operating systems.

Flux CD is a tool that automatically ensures that the state of your Kubernetes cluster matches the configuration you've supplied in Git. It uses an operator in the cluster to trigger deployments inside Kubernetes, which means that you don't need a separate continuous delivery tool.

Platform9 Managed Kubernetes (PMK) is a Kubernetes as a service that ensures fully automated Day-2 operations with 99.9% SLA on any environment, whether in data-centers, public clouds, or at the edge.

Ansible

Back to the Top


Mac Development Ansible Playbook by Jeff Geerling

Ansible Learning Resources

Ansible is a simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT needs. It uses a very simple language (YAML, in the form of Ansible Playbooks) that allows you to describe your automation jobs in a way that approaches plain English. Ansible works on Linux (Red Hat EnterPrise Linux(RHEL) and Ubuntu) and Microsoft Windows.

Red Hat Training for Ansible

Top Ansible Courses Online from Udemy

Introduction to Ansible: The Fundamentals on Coursera

Learning Ansible Fundamentals on Pluralsight

Introducing Red Hat Ansible Automation Platform 2.1

Ansible Documentation

Ansible Galaxy User Guide

Ansible Use Cases

Ansible Integrations

Ansible Collections Overview

Working with playbooks

Ansible for DevOps Examples by Jeff Geerling

Getting Started: Writing Your First Playbook - Ansible

Working With Modules in Ansible

Ansible Best Practices: Roles & Modules

Working with command line tools for Ansible

Encrypting content with Ansible Vault

Using vault in playbooks with Ansible

Using Ansible With Azure

Configuring Ansible on an Azure VM

How to Use Ansible: An Ansible Cheat Sheet Guide from DigitalOcean

Intro to Ansible on Linode | Spatial Labs

Ansible DevOps Tools Integration

Ansible Automation Hub is the official location to discover and download supported collections, included as part of an Ansible Automation Platform subscription. These content collections contain modules, plugins, roles, and playbooks in a downloadable package.

Collections are a distribution format for Ansible content that can include playbooks, roles, modules, and plugins. As modules move from the core Ansible repository into collections, the module documentation will move to the collections pages.

Ansible Lint is a command-line tool for linting playbooks, roles and collections aimed towards any Ansible users. Its main goal is to promote proven practices, patterns and behaviors while avoiding common pitfalls that can easily lead to bugs or make code harder to maintain.

Ansible cmdb is a tool that takes the output of Ansible’s fact gathering and converts it into a static HTML overview page containing system configuration information.

Ansible Inventory Grapher visually displays inventory inheritance hierarchies and at what level a variable is defined in inventory.

Ansible Playbook Grapher is a command line tool to create a graph representing your Ansible playbook tasks and roles.

Ansible Shell is an interactive shell for Ansible with built-in tab completion for all the modules.

Ansible Silo is a self-contained Ansible environment by Docker.

Ansigenome is a command line tool designed to help you manage your Ansible roles.

ARA is a records Ansible playbook runs and makes the recorded data available and intuitive for users and systems by integrating with Ansible as a callback plugin.

Capistrano is a remote server automation tool. It supports the scripting and execution of arbitrary tasks, and includes a set of sane-default deployment workflows.

Fabric is a high level Python (2.7, 3.4+) library designed to execute shell commands remotely over SSH, yielding useful Python objects in return. It builds on top of Invoke (subprocess command execution and command-line features) and Paramiko (SSH protocol implementation), extending their APIs to complement one another and provide additional functionality.

ansible-role-wireguard is an Ansible role for installing WireGuard VPN. Supports Ubuntu, Debian, Archlinx, Fedora and CentOS Stream.

wireguard_cloud_gateway is an Ansible role for setting up Wireguard as a gateway VPN server for cloud networks.

Red Hat OpenShift is focused on security at every level of the container stack and throughout the application lifecycle. It includes long-term, enterprise support from one of the leading Kubernetes contributors and open source software companies.

OpenShift Hive is an operator which runs as a service on top of Kubernetes/OpenShift. The Hive service can be used to provision and perform initial configuration of OpenShift 4 clusters.

Running Linux on the Apple Silicon

Back to the Top

Linux Virtualization on Apple Silicon

Parallels Desktop for Mac is a program that let's you runs Windows side-by-side with macOS (no restarting required) on your MacBook, MacBook Pro, iMac, iMac Pro, Mac mini or Mac Pro. Share files and folders, copy and paste images and text & drag and drop files between Mac and Windows applications.


Parallels Desktop for Mac

UTM is a full featured system emulator and virtual machine host for iOS and macOS. It is based off of QEMU that allows you to run Windows, Linux, and more on your Mac, iPhone, and iPad.


Ubuntu on UTM

VMware Fusion is a software hypervisor developed by VMware for Mac computers.It creates a virtual machine and install an operating system (such as Windows or Linux) inside that virtual machine.

  • Windows 11 on Intel and Apple Silicon, with 2D graphics and networking support.
  • VMTools installation support for Windows 11 guest operating system on M1-based Macs.
  • Virtual TPM device with fast encryption support.
  • Improved Linux support on M1.
  • 3D Graphics HW Acceleration and OpenGL 4.3(Requires Linux 5.19+ & Mesa 22.1.3+) in Linux virtual machines.
  • Universal Binary for Apple Silicon and Intel Macs.

Multipass is a tool to generate cloud-style Ubuntu VMs quickly on Linux, macOS, and Windows. It uses KVM on Linux, Hyper-V on Windows, and HyperKit on macOS.

Asahi Linux Development

Hector Martin has merged the initial support for Apple M1 hardware into the Linux SOC (System On a Chip) tree for Linux Kernel 5.13. Also credit to developers Sven Peter and Alyssa Rosenzweig.

The Linux kernel 6.2 offers mainline support for the Apple M1 Pro, Max, and Ultra chips as work done by Asahi Linux's developers was upstreamed. Though, that does not mean you can simply install a Linux distro like Fedora, Ubuntu, or Debian with the 6.2 kernel.

Asahi Linux is a project and community with the goal of porting Linux to Apple Silicon Macs, starting with the 2020 M1 Mac Mini, MacBook Air, and MacBook Pro. Their goal is not just to make Linux run on these machines but to polish it to the point where it can be used as a daily OS.

M1N1 is a bootloader and experimentation playground for Apple Silicon.

Apple Silicon to Apple Silicon VDM utility is a tool that lets you get a serial console on an Apple Silicon device and reboot it remotely, using only another Apple Silicon device running macOS and a standard Type C cable.

Asahi GPU is a repo that provides research for an open source graphics stack (3D acceleration) for Apple M1 chips.


The AsahiLinux Apple GPU drivers features are a work-in-progress OpenGL 2.1 and OpenGL ES 2.0 support for all current Apple M-series systems. That’s enough for hardware acceleration with desktop environments, like GNOME and KDE. It’s also enough for older 3D games, like Quake3 and Neverball.

Asahi Linux Graphics Team:

  • Alyssa Rosenzweig is writing the OpenGL driver and compiler.
  • Asahi Lina is writing the kernel driver and helping with OpenGL.
  • Dougall Johnson is reverse-engineering the instruction set with Alyssa.
  • Ella Stanforth is working on a Vulkan driver, reusing the kernel driver, the compiler, and some code shared with the OpenGL driver.

Installing the Apple GPU Drivers:

To get the new drivers, you need to run the linux-asahi-edge kernel and also install the mesa-asahi-edge Mesa package.

$ sudo pacman -Syu
$ sudo pacman -S linux-asahi-edge mesa-asahi-edge
$ sudo update-grub

Since only one version of Mesa can be installed at a time, pacman will prompt you to replace mesa with mesa-asahi-edge. This is normal!

Recommendation: Run Wayland instead of Xorg at this point, so if you’re using the KDE Plasma environment, make sure to install the Wayland session:

$ sudo pacman -S plasma-wayland-session

Then reboot, pick the Wayland session at the top of the login screen (SDDM), and enjoy! You might want to adjust the screen scale factor in System Settings → Display and Monitor (Plasma Wayland defaults to 100% or 200%, while 150% is often nicer). If you have “Force font DPI” enabled under Appearance → Fonts, you should disable that (it is saved separately for Wayland and Xorg, and shouldn’t be necessary on Wayland sessions). Log out and back in for these changes to fully apply.

Fedora Linux Development

Most of the hard work, including the kernel and boot software, was done by the Asahi Linux project and their development team.

While you will end up with a fairly usable computer, the exact hardware features you want may not be ready yet. Please look at the Asahi Linux Feature Support page for information.

For more general information about Linux on Apple Silicon Macs, refer to the Asahi Linux project and alpha installer release.

Asahi-Fedora-Builder is a script that builds a minimal Fedora image to run on Apple M1/M2 systems.

Installing a Prebuilt Image

Make sure to update your macOS to version 12.3 or later, then just pull up a Terminal in macOS and paste in this command:

curl https://leifliddy.com/fedora.sh | sh

Fedora Package Install

dnf install mkosi arch-install-scripts systemd-container zip


Fedora Linux

NixOS Linux Development

UEFI Boot Standalone NixOS (February 2023)

This build was tested with the following software:

  • Asahi Linux kernel version 6.1.0-asahi2
  • Asahi Linux's Mesa version 23.0.0_pre20221219-1
  • m1n1 version v1.2.3
  • Asahi Linux's U-Boot version 2022.10.asahi1-1
  • Nixpkgs, as of 2023-02-21
  • macOS stub 12.3 or later

NOTE: For more general information about Linux on Apple Silicon Macs, refer to the Asahi Linux project and Asahi Linux Alpha installer release.

Intro

This section will explain how to install NixOS on the internal NVMe drive of an Apple Silicon Mac using a customized version of the official NixOS install ISO, then boot it without the help of another computer. Aside from the Apple Silicon support module and AArch64 CPU, the resulting installation can be configured and operated like any other NixOS system. Your macOS install will still work normally, and you can easily switch between booting both macOS and NixOS.

Most of the hard work, including the kernel and boot software, was done by the Asahi Linux project and their development team.

Quick NixOS Intro:

  • NixOS is a Linux distribution built on top of the Nix package manager. It has tools dedicated to DevOps and deployment tasks.

  • Nix Tour is an interactive tour that uses the actual package manager to learn you the language by example, in the browser

  • Nix is a package manager and build system that parses reproducible build instructions specified in the Nix Expression Language, is a pure functional language with lazy evaluation. Nix expressions are pure functions taking dependencies as arguments and producing derivation specifying a reproducible build environment for the package. Nix stores the results of the build in unique addresses specified by a hash of the complete dependency tree, creating an immutable package store that allows for atomic upgrades, rollbacks and concurrent installation of different versions of a package, essentially eliminating dependency hell.

  • Nix Expression Language is a pure, lazy, functional language. Purity means that operations in the language don't have side-effects (for instance, there is no variable assignment). The language is not a full-featured, general purpose language. Its main job is to describe packages, compositions of packages, and the variability within packages.

  • Nixpkgs is the largest repository of Nix packages(over 60,000 packages) and NixOS modules. The repository is hosted on GitHub and maintained by the community, with official backing from the NixOS Foundation. Additionally, checkout Language-specific package helpers and Alternative Package Sets.

  • NixOS Packages Search is a tool for searching through NixOS packages.

Warning

Damage to the macOS recovery partitions or the partition table could result in the Mac becoming unbootable and loss of all data on the internal NVMe drive. In this circumstance, a suitable USB cable and another computer which can run idevicerestore will be required to perform a DFU upgrade and restore normal operation. Backups are always wise.

While you will end up with a fairly usable computer, the exact hardware features you want may not be ready yet. Please look at the Asahi Linux Feature Support page for information. Any features marked with a kernel version or linux-asahi should be supported by NixOS too.

Prerequisites

The following items are required to get started:

  • Apple Silicon Mac supported by Asahi Linux with macOS 12.3 or later and an admin account.
  • For Mac mini users: tested and working HDMI monitor. Many do not work properly; if it shows the Asahi Linux logo and console when m1n1 is running, it's fine.
  • USB flash drive which is at least 512MB and can be fully erased, and USB A to C adapter.
  • Familiarity with the command line and installers without GUIs.
  • Optional: x86_64 or aarch64 Linux PC or VM (any distro is fine).

Overview

  • Software Preparation: build the customized NixOS installer ISO and Asahi Linux components
  • UEFI Preparation: use the Asahi Linux installer to set up a standard UEFI boot environment
  • Installation: boot the NixOS installer and use it to set up and install NixOS
  • Maintenance: repair and upgrade NixOS and the Asahi Linux components
  • Removal: restore the system to the stock state

Software Preparation

Nix

This setup takes advantage of the Nix package manager, which handles downloading and compiling everything. You must first install it on your Linux host PC if it doesn't run NixOS. Most distros are compatible, and installation (and uninstallation) is simple. Instructions are available on the NixOS website.

If you can't or do not wish to install Nix and/or build these components yourself, installation ISOs are automatically built and made available from the GitHub Releases page. Download the latest one, use dd or similar to transfer it to your USB flash drive, then skip down to the section on UEFI Preparation. Programs like unetbootin are not supported. These ISOs are fully reproducible; that is, the ISO you download will be (or should be...) bit-identical to the one you will get by following these preparation instructions.

NixOS Apple Silicon

Clone this repository to a suitable location on the host PC. In the future, you can update this repository using git pull and re-run the nix build commands to update things.

$ git clone https://github.com/tpwrules/nixos-apple-silicon/
$ cd nixos-apple-silicon

m1n1

The Asahi Linux project has developed m1n1 as a bridge between Apple's boot firmware and the Linux world. m1n1 is installed as a faux macOS kernel into a stub macOS installation. In addition to booting Linux (or U-Boot), m1n1 also sets up the hardware and allows remote control and debugging over USB.

Change directories to the repository, then use Nix to build m1n1 and symlink the result to m1n1:

nixos-apple-silicon$ nix build --extra-experimental-features 'nix-command flakes' .#m1n1 -o m1n1

m1n1 has been built and the build products are now in m1n1/build/. You can also run m1n1's scripts such as chainload.py using a command like m1n1/bin/m1n1-chainload.

U-Boot

In the default installation, m1n1 loads U-Boot and U-Boot is used to set up a standard UEFI environment from which GRUB or systemd-boot or whatever can be booted. Due to the limitations of the Apple boot picker, there must be one EFI system partition per installed OS.

Use Nix to build U-Boot along with m1n1 and the device trees:

nixos-apple-silicon$ nix build --extra-experimental-features 'nix-command flakes' .#uboot-asahi -o u-boot

The .bin file with m1n1, the device trees, and U-Boot joined together is now in u-boot/.

Kernel and Bootstrap Installer

The bootstrap NixOS installer ISO contains UEFI-compatible GRUB, the Asahi Linux kernel, its initrd, and enough packages and drivers to allow connection to the Internet in order to download and install a full NixOS system.

nixos-apple-silicon$ nix build --extra-experimental-features 'nix-command flakes' .#installer-bootstrap -o installer -j4 -L

The installer ISO is now available as installer/iso/nixos-*.iso. Use dd or similar to transfer it to your USB flash drive. Programs like unetbootin are not supported.

UEFI Preparation

This setup uses the alpha Asahi Linux installer to install a stub macOS and standard UEFI boot environment from which the NixOS installer and installed OS will run. These steps must be run from Terminal.app in macOS. You must also be logged into an administrator account.

Asahi Linux Installation

Download and run the alpha installer with the following command:

% curl https://alx.sh | sh

Choose the following options to get started:

  • Enter your administrator password
  • Do not enable expert mode

Resize your existing macOS install:

  • Resize an existing partition to make space for a new OS (r)
  • Enter the new size of the macOS install. It should be at least 20GB less than its current size to make room for NixOS with a GUI (note that here 1GB = 1,000,000,000 bytes)
  • Confirm the resize operation
  • Wait patiently while the partition is resized; it will take several minutes. Do not attempt to use the machine while this is in progress.
  • Press enter when finished

Install UEFI environment:

  • Install an OS into free space (f)
  • UEFI environment only
  • Name it NixOS (this is what shows up in the firmware boot picker)
  • Wait while the installation proceeds and enter your password when prompted
  • Wait for the default boot volume to be set (this may take several seconds)
  • Read the final advice, then press enter to shut down the machine

Boot into recovery mode by holding the power button down as directed and select the new NixOS option in the boot picker. Follow the prompts and enter your administrator password. The local policy update will take several seconds to complete. Once complete, select that you want to set a custom boot object and put your system to permissive security mode, enter your administrator username (the same one you put in the password for earlier) and password, then reboot when prompted.

If everything went well, you will restart into U-Boot with the Asahi Linux and U-Boot logos on-screen. Shut the system down by holding the power button, then proceed to the next step.

Installation

Booting the Installer

Shut down the machine fully. Connect the flash drive with the installer ISO to a USB-C port through the USB A to C adapter. If on a Mac mini, you must use the USB-C ports as U-Boot does not support the USB-A ports at this time. If not using Wi-Fi, connect the Ethernet cable to the network port or adapter as well.

Start the Mac, and U-Boot should start booting from the USB drive automatically. If you've already installed something to the internal NVMe drive, U-Boot will try to boot it first. To instead boot from USB, hit a key to stop autoboot when prompted, then run the command run bootcmd_usb0.

GRUB will start, then the NixOS installer after a short delay (the default GRUB option is fine). You will get a console prompt once booting completes. Run the command sudo su to get a root prompt in the installer. If the console font is too small, run the command setfont ter-v32n to increase the size.

Partitioning and Formatting

DANGER: Damage to the GPT partition table, first partition (iBootSystemContainer), or the last partition (RecoveryOSContainer) could result in the loss of all data and render the Mac unbootable and unrecoverable without assistance from another computer! Do not use your distro's automated partitioner or partitioning instructions!

We will add a root partition to the remaining free space and format it as ext4. Alternative partition layouts and filesystems, including LUKS encryption, are possible, but not covered currently.

Create the root partition to fill up the free space:

nixos# sgdisk /dev/nvme0n1 -n 0:0 -s
[...]
The operation has completed successfully.

Identify the number of the new root partition (type code 8300, typically second to last):

nixos# sgdisk /dev/nvme0n1 -p
Disk /dev/nvme0n1: 244276265 sectors, 931.8 GiB
Model: APPLE SSD AP1024Q                       
Sector size (logical/physical): 4096/4096 bytes
Disk identifier (GUID): 27054D2E-307A-41AA-9A8C-3864D56FAF6B
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 5
First usable sector is 6, last usable sector is 244276259
Partitions will be aligned on 1-sector boundaries
Total free space is 0 sectors (0 bytes)

Number  Start (sector)    End (sector)  Size       Code  Name
   1               6          128005   500.0 MiB   FFFF  iBootSystemContainer
   2          128006       219854567   838.2 GiB   AF0A  Container
   3       219854568       220465127   2.3 GiB     AF0A  
   4       220465128       220590311   489.0 MiB   EF00  
   5       220590312       242965550   85.4 GiB    8300  
   6       242965551       244276259   5.0 GiB     FFFF  RecoveryOSContainer

Format the new root partition:

nixos# mkfs.ext4 -L nixos /dev/nvme0n1p5

NixOS Configuration

The subsequent steps in this section will help you install NixOS onto your new partitions. More information is available in the Installing section of the NixOS manual. Some changes to the configuration procedure as described in that manual are needed for NixOS on Apple Silicon to work properly.

Mount the root partition, then the EFI system partition that was created by the Asahi Linux installer specifically for NixOS:

nixos# mount /dev/disk/by-label/nixos /mnt
nixos# mkdir -p /mnt/boot
nixos# mount /dev/disk/by-partuuid/`cat /proc/device-tree/chosen/asahi,efi-system-partition` /mnt/boot

Create a default configuration for the new system, then copy the Apple Silicon support module into it:

nixos# nixos-generate-config --root /mnt
nixos# cp -r /etc/nixos/apple-silicon-support /mnt/etc/nixos/
nixos# chmod -R +w /mnt/etc/nixos/

Use vim (or any editor of your choice) to edit the configuration of the new system to include the Apple Silicon support module. Be aware that other editors and most documentation has been left out of the bootstrap installer to save space and time.

nixos# vim /mnt/etc/nixos/configuration.nix

Add the ./apple-silicon-support directory to the imports list and switch off the canTouchEfiVariables option. That portion of the file should look like this:

  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
      # Include the necessary packages and configuration for Apple Silicon support.
      ./apple-silicon-support
    ];

  # Use the systemd-boot EFI boot loader.
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = false;

If you used the cross-compiled installer image, i.e. you downloaded the ISO from GitHub or built it on an x86_64-linux machine, you may add the following line to re-use the cross-compiled Asahi packages. If you don't, they will be rebuilt in the installer, which wastes time. When you update the system and they need to be rebuilt on the Mac itself, remove this line or you will get an error that an x86_64-linux builder is required.

  # Remove if you get an error that an x86_64-linux builder is required.
  hardware.asahi.pkgsSystem = "x86_64-linux";

The configuration above is the minimum required to produce a bootable system, but you can further edit the file as desired to perform additional configuration. Uncomment the relevant options and change their values as explained in the file. Note that some advertised features may not work properly at this time. Refer to the NixOS installation manual for further guidance.

Various non-free non-redistributable peripheral firmware files are required to use system hardware like Wi-Fi. The Asahi Linux installer grabs these from macOS and stores them on the EFI system partition when it is created. The NixOS installer loads them from there while booting so that all hardware is available during installation. By default, the Apple Silicon support module will automatically reference the files in the EFI system partition and incorporate them into your configuration to be managed by the normal NixOS mechanisms.

Currently, the only supported way to update the peripheral firmware files is to destroy and re-create the EFI system partition, so they will not change unexpectedly. If you do not want the impurity of referencing them (or are using flakes where this is prohibited), copy them off the EFI system partition (e.g. on the installation ISO mkdir -p /mnt/etc/nixos/firmware && cp /mnt/boot/asahi/{all_firmware.tar.gz,kernelcache*} /mnt/etc/nixos/firmware) and specify this path in your configuration:

  # Specify path to peripheral firmware files.
  hardware.asahi.peripheralFirmwareDirectory = ./firmware;
  # Or disable extraction and management of them completely.
  # hardware.asahi.extractPeripheralFirmware = false;

You can choose to build the Asahi kernel with a 4K page size by enabling the appropriate option. This results in a reduction in raw compilation speed of 10-25%, but improves software compatibility in some cases (such as with Chromium/Electron and x86 emulation).

  # Build the kernel with 4K pages to improve software compatibility at
  # the cost of performance in some cases.
  hardware.asahi.use4KPages = true;

If you want to install a desktop environment, you will have to uncomment the option to enable X11 and NetworkManager, then add an option to include your favorite desktop environment. You may also wish to include graphical packages such as firefox in environment.systemPackages. For example, to install Xfce:

  # Enable the X11 windowing system.
  services.xserver.enable = true;
  services.xserver.desktopManager.xfce.enable = true;

Some keyboard layouts are not detected correctly. On some devices, the ` key is swapped with <, and ~ with >. The layout can be fixed by setting options in boot.extraModprobeConfig. Which option needs to be set depends on your hardware keyboard's layout (see: Arch Wiki - Apple Keyboard).

# For ` to < and ~ to > (for those with US keyboards)
boot.extraModprobeConfig = ''
  options hid_apple iso_layout=0
'';

NixOS Installation

Once you are happy with your initial configuration, you may install the system. This will have to download a large amount of data.

You can configure wireless networking in the installer using wpa_supplicant by following the minimal installer directions in the NixOS manual.

Once the network is set up, ensure the time is set correctly, then install the system. You will be asked to set a root password as the final step:

nixos# systemctl restart systemd-timesyncd
nixos# nixos-install
[...]
setting root password...
New password: ******
Retype new password: ******
passwd: password updated successfully
installation finished!

If there are any errors, or you mess up entering the root password, you can edit the configuration and safely re-run the command.

Once complete, reboot the system:

nixos# reboot

When the system reboots, the bootloader will come up and boot the default configuration after a short delay. Once NixOS boots, log in with the root password, and create your account, or set your user account password if you created your account in the configuration. To learn more about NixOS's configuration system, read the section in the manual on changing the configuration.

Dual Booting

The machine is now set up to boot NixOS by default when turned on. To access the boot picker, turn off the machine, then hold the power button to turn the machine on instead of just pressing it. Let go once the options come up. To boot a particular OS once, click on it, then click Continue underneath it. To switch the default OS, click on the desired default, hold Option (Alt), then click Always Use underneath it.

Hypervisor Boot

By selecting the appropriate menu option in the Asahi Linux installer, you can also choose to install m1n1 without U-Boot and run U-Boot, the bootloader, and the OS under m1n1's hypervisor.

To run U-Boot under the hypervisor, start m1n1 and attach the Mac to the host PC using an appropriate USB cable, change directories to the repo, then run:

nixos-apple-silicon$ m1n1/bin/m1n1-run_guest --raw u-boot/m1n1-u-boot.bin

To access the serial console, in a separate terminal run:

$ nix-shell -p picocom --run 'picocom /dev/ttyACM1'

Downloading the kernel over USB using m1n1 is not supported.

Maintenance

System Rescue

If something goes wrong and NixOS doesn't boot or is otherwise unusable, you can first try rolling back to a previous generation. Instead of selecting the default bootloader option, choose another configuration that worked previously.

If something is seriously wrong and the bootloader does not work (or you don't have any other generations), you will want to get back into the installer. To start the installer with a system installed on the internal disk, shut down the computer, re-insert the USB drive with the installer, start it up again, hit a key in U-Boot when prompted to stop autoboot, then run the command run bootcmd_usb0.

Once in the installer, you can re-mount your root partition and EFI system partition without reformatting them. Depending on what exactly went wrong, you might need to edit your configuration, copy over the latest Apple Silicon support module, or update U-Boot using the latest installer.

Rerunning the installer will create a new generation but not touch any user data. This means you can "undo" the installation by selecting a previous generation in the bootloader. To redo the installation without changing your root password or changing the version of Nixpkgs, run:

# nixos-install --no-root-password --no-channel-copy

In the extreme case, you can delete the EFI system partition and stub macOS install and rerun the Asahi Linux installer, then follow the steps above to reinstall NixOS's bootloader menu. You will need to regenerate the hardware configuration using nixos-generate-config --root /mnt because the EFI system partition's ID will change. This shouldn't modify your root partition or other NixOS configuration, but of course it's always smart to have a backup. You might also wish to re-copy the peripheral firmware files.

NixOS Updates

NixOS itself can be updated like any other NixOS system. In brief, this is as follows:

$ sudo nix-channel --update
$ sudo nixos-rebuild switch

You may have to reboot after updating in some cases. If something goes wrong, you can boot a previous generation and roll back the channel update. For more details, consult the Upgrading section of the NixOS manual.

Apple Silicon Support Updates

To update the Apple Silicon support module, including the Asahi kernel, U-Boot, and m1n1, you can simply download newer files from this repo under apple-silicon-support and place them under /etc/nixos/apple-silicon-support. Any changes will require a configuration rebuild and reboot to take effect. If you wish to customize your kernel, you can edit the kernel config in /etc/nixos/apple-silicon-support/kernel/config. Consult the comments in /etc/nixos/apple-silicon-support/kernel/default.nix and /etc/nixos/apple-silicon-support/kernel/package.nix for more details. Note that if the kernel device trees change, U-Boot will need to be updated too.

U-Boot and m1n1 are automatically managed by NixOS' bootloader system. If you roll back to a previous generation and things do not work properly due to a device tree incompatibility, you can run /run/current-system/bin/switch-to-configuration switch then reboot to force the bootloader and the correct version of U-Boot/m1n1 to be reinstalled and loaded.

If you want the Apple Silicon support module to be upgraded in tandem with NixOS instead of manually downloading new files, you can add it as a channel with the following command:

$ sudo nix-channel --add https://github.com/tpwrules/nixos-apple-silicon/archive/main.tar.gz apple-silicon-support

Modify your /etc/nixos/configuration.nix to reference the channel instead of the local files:

  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
      # Include the necessary packages and configuration for Apple Silicon support.
      <apple-silicon-support/apple-silicon-support>
    ];

You can now update NixOS as normal. Note that Apple Silicon support module updates will generally require reboots to load new kernels and other boot components:

$ sudo nix-channel --update
$ sudo nixos-rebuild switch
$ sudo reboot

Recovering from Boot Failure with idevicerestore

In extremely extreme circumstances (i.e. something messed up the firmware partition, recovery partition, or partition table), your Mac may fail to boot. On the Mac mini (and presumably Mac Studio), this state is identifiable by a flashing orange power light indicating the Morse code for SOS. On a Mac laptop, this state is identifiable by an illustration of an exclamation point in a circle on the screen with a link to Apple's website.

To make the Mac bootable again, you can use idevicerestore from another Mac or Linux x86_64 or aarch64 VM or computer that has an Internet connection. You will need a USB cable with at least one USB-C end. This procedure has been tested with Mac and Linux hosts restoring a Mac mini with macOS 12.4.

Please note that this procedure may require you to unrecoverably destroy all data on the Mac's internal drive. If erasing is necessary, you will be clearly warned and asked to confirm before it happens. The drive will end up zeroed and its encryption keys (probably) regenerated, so not even the NSA will be able to save you. If you haven't made backups, make peace with yourself now.

You'll need to build idevicerestore from source to get a version capable of restoring Apple Silicon Macs. If Nix is already installed on your second computer, an appropriate version is already packaged in recent nixpkgs-unstable. Check out and build both idevicerestore and usbmuxd (if on Linux):

# git clone https://github.com/NixOS/nixpkgs/
# cd nixpkgs
# nix-build -A pkgs.idevicerestore -o idevicerestore
# nix-build -A pkgs.usbmuxd -o usbmuxd # if on Linux

To start the procedure, hook up the appropriate port on your unbootable Mac to the second computer and invoke DFU mode. This process is covered by Steps 1 and 2 of Apple's documentation. We will first try what Apple calls a "revive" where the disk is not erased, although both we and idevicerestore still call it a "restore".

If DFU mode was started correctly, the unbootable Mac will show up on your second computer as an Apple, Inc. Mobile Device (DFU Mode) in lsusb on Linux or System Information on macOS. If you see Apple, Inc. Apple Mobile Device [Recovery Mode] instead (or nothing), the procedure was not followed correctly and you need to try again.

Open a terminal on your second computer and, if you are on Linux and didn't install the udev rules (which Nix did not), start usbmuxd in the background by running it without any arguments. Then, ask idevicerestore to restore the firmware by using the --latest flag. If you wish to erase the disk either because the revive didn't work or because you want to start with a clean slate, use the --erase flag also.

# sudo usbmuxd/bin/usbmuxd # Linux only
# sudo idevicerestore/bin/idevicerestore --latest
idevicerestore 1.0.0-unstable-2022-05-22
Found device in DFU mode
Identified device as j274ap, Macmini9,1
The following firmwares are currently being signed for Macmini9,1:
[...]
Select the firmware you want to restore:

Once idevicerestore detects the unbootable Mac, select the desired firmware (usually number 1) and wait patiently while the firmware is downloaded; it's about 13GiB. If idevicerestore doesn't detect the unbootable Mac, make sure that your cables are hooked up correctly, that you used sudo, and that you are using a suitably recent version.

The restore process will automatically start once the firmware is downloaded and verified. If idevicerestore fails with the message ERROR: Device did not disconnect. Possibly invalid iBEC. Reset device and try again., the unbootable Mac is likely not in DFU mode, or there is something wrong with your system's udev related to hotplug events. Check that you followed Apple's procedure correctly and that the appropriate USB device is detected.

After 30 seconds of messages and status updates, you should see the Apple logo on the unbootable Mac's screen with a progress bar and idevicerestore will tell you that it is Waiting for device to enter restore mode.... If the unbootable Mac resets after a couple minutes and you get the message ERROR: Device failed to enter restore mode. Please make sure that usbmuxd is running., then usbmuxd is likely not running. Start it and try again.

Once the restore process starts, the progress bar will start moving and idevicerestore will spam lots of information about the process. If it fails with ERROR: Unable to restore device, your only choice may be to restart the process, but this time pass the --erase flag to idevicerestore and destroy all data on the unbootable Mac's internal drive.

Otherwise, wait patiently while the restore proceeds. Expect it to take 20 or 30 minutes at least. Eventually idevicerestore will say DONE and the formerly-unbootable Mac will reboot and start recovery mode (if erasing was not necessary) or the out-of-the-box wizard (if the disk was erased) and you can use it again.

Finally, shut down usbmuxd if on Linux and you started it manually. To clean up your second computer, remove the downloaded firmware, the idevicerestore and usbmuxd GC roots, and run the Nix garbage collector:

# sudo killall usbmuxd # if on Linux
# sudo rm -rf *.ipsw* UniversalMac*
# rm -f result* usbmuxd idevicerestore
# nix-collect-garbage

Removal

Host PC Cleanup

To recover the space on the host PC, change directories into the repo, remove the built symlinks (removing just the installer will recover almost all the space), then run the garbage collector:

nixos-apple-silicon$ rm m1n1 u-boot installer result
nixos-apple-silicon$ nix-collect-garbage

NixOS Uninstallation

NixOS can be completely uninstalled by deleting the stub partition, EFI system partition, and root partition off the disk.

Boot back into macOS by shutting down the machine fully, then pressing and holding the power button until the boot picker comes up. Select the macOS installation, then click Continue to boot it. Log into an administrator account and open Terminal.app.

Identify the partitions to remove. In this example, disk0s3 is the stub because of its small size. disk0s4 is the EFI system partition and disk0s5 is the root partition:

% diskutil list disk0
/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         1.0 TB     disk0
   1:             Apple_APFS_ISC                         524.3 MB   disk0s1
   2:                 Apple_APFS Container disk4         900.0 GB   disk0s2
   3:                 Apple_APFS Container disk3         2.5 GB     disk0s3
   4:                        EFI EFI - NIXOS             512.8 MB   disk0s4
   5:           Linux Filesystem                         91.6 GB    disk0s5
   6:        Apple_APFS_Recovery                         5.4 GB     disk0s6

WARNING: Unlike Linux, on macOS each partition's identifier does not necessarily equal its partition index. Double check the identifiers of your own system!

Remove the EFI system partition and root partition:

% diskutil eraseVolume free free disk0s4
Started erase on disk0s4 (EFI - NIXOS)
Unmounting disk
Finished erase on disk0
% diskutil eraseVolume free free disk0s5
Started erase on disk0s5
Unmounting disk
Finished erase on disk0

Remove the stub partition:

% diskutil apfs deleteContainer disk0s3
Started APFS operation on disk3
Deleting APFS Container with all of its APFS Volumes
[...]
Removing disk0s3 from partition map

Expand the main macOS partition to use the resulting free space. This command will take a few minutes to run; do not attempt to use the machine while it is in progress:

% diskutil apfs resizeContainer disk0s2 0
Started APFS operation
Aligning grow delta to 94,662,586,368 bytes and targeting a new physical store size of 994,662,584,320 bytes
[...]
Finished APFS operation

To complete the uninstallation, open the Startup Disk pane of System Preferences and select your macOS installation as the startup disk. If this is not done, the next boot will fail, and you will be asked to select another OS to boot from.


NixOS with the Plasma Desktop

Debian Linux Development

Most of the hard work, including the kernel and boot software, was done by the Asahi Linux project and their development team.

While you will end up with a fairly usable computer, the exact hardware features you want may not be ready yet. Please look at the Asahi Linux Feature Support page for information.

For more general information about Linux on Apple Silicon Macs, refer to the Asahi Linux project and alpha installer release.

Important Note: Starting from mid-2022, the best advice for getting Debian installed is to be found here: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/m1-debian/.

Artefacts

If you don't want to use the prebuild artefacts, you can build them yourself using the following scripts:

  • prepare_rust.sh - Prepares a rust installation suitable for kernel compilation
  • m1n1_uboot_kernel.sh - Builds m1n1, u-boot and the kernel including gpu support.
  • mesa.sh - Creates mesa packages
  • bootstrap.sh - Creates Debian root and live filesystem
  • meta.sh - Meta package which makes sure that we always get latest and gratest kernel.

Asahi installer

Video Recording

Poweroff your Mac. Hold and press the power button until you see a wheel chain and Options written below. Approx 20 seconds.

In the boot picker, choose Options. Once loaded, open a Terminal under Utilities > Terminal

Run the asahi installer and select Debian:

curl -sL https://tg.st/d | sh

Follow the installer instructions.

Once Debian is booted log in as root without password and set a root password.

passwd

pwconv

Configure wifi by editing the wpa_supplicant.conf, enabling the interface and remove the # before allow-hotplug to enable it during boot.

vi /etc/wpa_supplicant/wpa_supplicant.conf

ifup wlan0

vi /etc/network/interfaces

Reboot to see if grub was correctly installed

reboot

Install a desktop environment for example blackbox

apt-get update

apt-get install -y xinit blackbox xterm firefox-esr lightdm

Create yourself an unprivileged user

useradd -m -c 'Firstname Lastname' -s /bin/bash <username>

passwd <username>

Optional install sshd. You can not log in as root, but only with your unprivileged user

apt update

apt install -y openssh-server

Consult the /root/quickstart.txt file to find out how to do other interesting things.


Debian

Image Credit: Alyssa Rosenzweig

Ubuntu Development

Most of the hard work, including the kernel and boot software, was done by the Asahi Linux project and their development team.

While you will end up with a fairly usable computer, the exact hardware features you want may not be ready yet. Please look at the Asahi Linux Feature Support page for information.

For more general information about Linux on Apple Silicon Macs, refer to the Asahi Linux project and alpha installer release.

Installer

To install a prebuilt image run:

curl -sL https://tobhe.de/ubuntu/install > install.sh	# Download
less install.sh						# Review
sh install.sh						# Run

The installer offers a choice of different Ubuntu releases and build configurations.

Currently supported are:

  • Ubuntu 22.10 Desktop
  • Ubuntu 22.10 Server
  • Ubuntu 22.04 Desktop
  • Ubuntu 22.04 Server

The default username and password are both ubuntu. Root access can be achieved via sudo.

Dual-booting macOS and Linux

Yes, The installer can automatically resize your macos partition according to your liking and install Ubuntu in the freed up space. Removing macOS is not supported at the moment since it is required to update the system firmware.

Building

If you do not want to use the prebuilt disk image, you can build one yourself with the instructions below.

# Install dependencies
sudo apt-get install arch-install-scripts debootstrap mtools parted gnupg eatmydata rsync git squashfs-tools zip

# Install dependencies, if your builder system is NOT arm64
sudo apt-get install binfmt-support qemu qemu-user-static

Build

cd ubuntu-asahi
# Build the entire live image
sudo ./build-generic.sh

The live GPT image file will be output to build/ubuntu.live.img, the zip archive for the Asahi Linux installer will be output to build/ubuntu.live.img.zip.

Clean

The clean.sh script will clean up the build folder, except for the cache folder, which is used by debootstrap to cache debs.

cd ubuntu-asahi
# Clean the build folder
./clean.sh

Running Windows 10/11 on the Apple Silicon

Back to the Top

Windows 11 ARM on Mac? Parallels vs VMware vs UTM VMware can FINALLY GAME on Mac and.. IT'S FREE? Windows on a Mac JUST got better How to Install Windows 11 on Mac for FREE using UTM VM app How to install Windows 11 on Mac M1/M2 Processors for Free (UTM)

Parallels Desktop for Mac is a program that let's you runs Windows side-by-side with macOS (no restarting required) on your MacBook, MacBook Pro, iMac, iMac Pro, Mac mini or Mac Pro. Share files and folders, copy and paste images and text & drag and drop files between Mac and Windows applications.


Parallels Desktop for Mac

UTM is a full featured system emulator and virtual machine host for iOS and macOS. It is based off of QEMU that allows you to run Windows, Linux, and more on your Mac, iPhone, and iPad.


Windows 11 on UTM

VMware Fusion is a software hypervisor developed by VMware for Mac computers.It creates a virtual machine and install an operating system (such as Windows or Linux) inside that virtual machine.

  • Windows 11 on Intel and Apple Silicon, with 2D graphics and networking support.
  • VMTools installation support for Windows 11 guest operating system on M1-based Macs.
  • Virtual TPM device with fast encryption support.
  • Improved Linux support on M1.
  • 3D Graphics HW Acceleration and OpenGL 4.3(Requires Linux 5.19+ & Mesa 22.1.3+) in Linux virtual machines.
  • Universal Binary for Apple Silicon and Intel Macs.


Windows 11 on VMware Fusion

ARM64EC (“Emulation Compatible”) is a new application binary interface (ABI) for Windows 11 on ARM that runs with native speed and is interoperable with x64 architecture. An app, process, or even a module can freely mix and match with ARM64EC and x64 as needed. The ARM64EC code in the app will run natively while any x64 code will run using Windows 11 on ARM’s built-in emulation. The ARM64EC ABI differs slightly from the current ARM64 ABI in ways that make it binary compatible with x64 code. Specifically, the ARM64EC ABI follows x64 software conventions including calling convention, stack usage, and data alignment, making ARM64EC and x64 interoperable. Apps built as ARM64EC may contain x64 code but do not have to, since ARM64EC is its own complete, first-class ABI for Windows.

Windows 11 Desktop

Windows 10 Desktop

Game Development

Back to the Top



Game Engines

Checkout the Unity Engine

Checkout the Unreal Engine

Checkout the Godot Engine

If you would like to Donate to the Godot Project

Checkout Blender

If you would like to Donate to the Blender Project

Checkout Game Maker Studio 2

Game Development Learning Resources

Unreal Online Learning is a free learning platform that offers hands-on video courses and guided learning paths.

Unreal Engine Authorized Training Program

Unreal Engine for education

Unreal Engine Training & Simulation

Unity Certifications

Autodesk for Games

Getting Started with DirectX 12 Ultimate

Getting Started with Vulkan

Getting Started with Apple Metal

Game Design Online Courses from Udemy

Game Design Online Courses from Skillshare

Learn Game Design with Online Courses and Classes from edX

Game Design Courses from Coursera

Game Design and Development Specialization Course from Coursera

Game Development Tools

Unreal Engine is a game engine developed by Epic Games with the world's most open and advanced real-time 3D creation tool. Continuously evolving to serve not only its original purpose as a state-of-the-art game engine, today it gives creators across industries the freedom and control to deliver cutting-edge content, interactive experiences, and immersive virtual worlds.

Unity is a cross-platform game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers.

Unigine is a cross-platform game engine designed for development teams (C++/C# programmers, 3D artists) working on interactive 3D apps.

Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs, developed by Disney and CMU. Panda3D is open-source and free for any purpose, including commercial ventures.

Havok is a middleware software suite that provides a realistic physics engine component and related functions to video games. It is supported and optimized across all major platforms, including Nintendo Switch, PlayStation®, Stadia, and Xbox. Along with integrations for Unity and Unreal Engine and are used in countless proprietary game engines.

AutoDesk 3ds Max is a professional software program for 3D modeling, animation, rendering, and visualization. 3ds Max allows you to create stunning game environments, design visualizations, and virtual reality experiences.

Houdini is a 3D procedural software for modeling, rigging, animation, VFX, look development, lighting and rendering in film, TV, advertising and video game pipelines.

A-Frame is a web framework for building virtual reality experiences in WebVR with HTML and Entity-Component. A-Frame works on Vive, Rift, desktop, mobile platforms.

AppGameKit is a powerful game development engine, ideal for Hobbyist and Indie developers. Where you can start coding in the easy to learn AppGameKit BASIC or use the libraries in C++ & Xcode.

Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline—modeling, rigging, animation, simulation, rendering, compositing and motion tracking, video editing and 2D animation pipeline.

GameMaker Studio 2 is the latest and greatest incarnation of GameMaker. It has everything you need to take your idea from concept to finished game. With no barriers to entry and powerful functionality, GameMaker Studio 2 is the ultimate 2D development environment.

Godot is a feature-packed, cross-platform game engine to create 2D and 3D games from a unified interface. It provides a comprehensive set of common tools, so that users can focus on making games without having to reinvent the wheel. Games can be exported in one click to a number of platforms, including the major desktop platforms (Linux, macOS, Windows) as well as mobile (Android, iOS) and web-based (HTML5) platforms.

Open Computing Language (OpenCL) is an open standard for parallel programming of heterogeneous platforms consisting of CPUs, GPUs, and other hardware accelerators found in supercomputers, cloud servers, personal computers, mobile devices and embedded platforms.

OpenGL Shading Language(GLSL) is a High Level Shading Language based on the C-style language, so it covers most of the features a user would expect with such a language. Such as control structures (for-loops, if-else statements, etc) exist in GLSL, including the switch statement.

High Level Shading Language(HLSL) is the High Level Shading Language for DirectX. Using HLSL, the user can create C-like programmable shaders for the Direct3D pipeline. HLSL was first created with DirectX 9 to set up the programmable 3D pipeline.

Vulkan is a modern cross-platform graphics and compute API that provides high-efficiency, cross-platform access to modern GPUs used in a wide variety of devices from PCs and consoles to mobile phones and embedded platforms. Vulkan is currently in development by the Khronos consortium.

Metal is a low-level GPU programming framework used for rendering 2D and 3D graphics on Apple platforms such as iOS, iPadOS, macOS, watchOS and tvOS.

MoltenVK is an implementation of Vulkan running on iOS and macOS using Apple's Metal graphics framework.

MoltenGL is an implementation of the OpenGL ES 2.0 API that runs on Apple's Metal graphics framework.

Mesa 3D Graphics Library is a project began as an open-source implementation of the OpenGL specification. A system for rendering interactive 3D graphics. Mesa ties into several other open-source projects: the Direct Rendering Infrastructure, X.org, and Wayland to provide OpenGL support on Linux, FreeBSD, and other operating systems.

OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of CPUs, GPUs, DSPs, FPGAs and other processors or hardware accelerators.

VDPAU is the Video Decode and Presentation API for UNIX. It provides an interface to video decode acceleration and presentation hardware present in modern GPUs.

VA API is an open-source library and API specification, which provides access to graphics hardware acceleration capabilities for video processing.

XvMC is an extension of the X video extension (Xv) for the X Window System. The XvMC API allows video programs to offload portions of the video decoding process to the GPU hardware.

AMD Radeon ProRender is a powerful physically-based rendering engine that enables creative professionals to produce stunningly photorealistic images on virtually any GPU, any CPU, and any OS in over a dozen leading digital content creation and CAD applications.

NVIDIA Omniverse is a powerful, multi-GPU, real-time simulation and collaboration platform for 3D production pipelines based on Pixar's Universal Scene Description and NVIDIA RTX.

LibGDX is a cross-platform Java game development framework based on OpenGL (ES) that works on Windows, Linux, Mac OS X, Android, your WebGL enabled browser and iOS.

cocos2d-x is a multi-platform framework for building 2d games, interactive books, demos and other graphical applications. It is based on cocos2d-iphone, but instead of using Objective-C, it uses C++. It works on iOS, Android, macOS, Windows and Linux.

MonoGame is a framework for creating powerful cross-platform games. The spiritual successor to XNA with thousands of titles shipped across desktop, mobile, and console platforms. MonoGame is a fully managed .NET open source game framework without any black boxes.

Three.js is a cross-browser JavaScript library and application programming interface used to create and display animated 3D computer graphics in a web browser using WebGL.

Superpowers is a downloadable HTML5 app for real-time collaborative projects . You can use it solo like a regular offline game maker, or setup a password and let friends join in on your project through their Web browser.

URHO3D is a free lightweight, cross-platform 2D and 3D game engine implemented in C++ and released under the MIT license. Greatly inspired by OGRE and Horde3D.

Vivox is a voice & text chat platform that's trusted by the world's biggest gaming brands and titles such as Fortnite, PUBG, League of Legends, and Rainbow Six Siege.

HGIG is a volunteer group of companies from the game and TV display industries that meet to specify and make available for the public guidelines to improve consumer gaming experiences in HDR.

GameBlocks is a Server Side Anti-Cheat & Middleware software.

Augmented Reality (AR) & Virtual Reality (VR)

ARKit is a set set of software development tools to enable developers to build augmented-reality apps for iOS developed by Apple. The latest version ARKit 3.5 takes advantage of the new LiDAR Scanner and depth sensing system on iPad Pro(2020) to support a new generation of AR apps that use Scene Geometry for enhanced scene understanding and object occlusion.

RealityKit is a framework to implement high-performance 3D simulation and rendering with information provided by the ARKit framework to seamlessly integrate virtual objects into the real world.

SceneKit is a high-level 3D graphics framework that helps you create 3D animated scenes and effects in your iOS apps.

ARCore is a software development kit developed by Google that allows for augmented reality applications in the real world. These tools include environmental understanding, which allows devices to detect horizontal and vertical surfaces and planes. It also includes motion tracking, which lets phones understand and track their positions relative to the world. Also ARCore’s Light Estimation API lets your digital objects appear realistically as if they’re actually part of the physical world.

OpenVR is an API and runtime that allows access to VR hardware(Steam Index, HTC Vive, and Oculus Rift) from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting.

OpenVR Benchmark on Steam is the first benchmark tool for reproducibly testing your real VR performance, rendering inside of your VR headset.

OpenHMD is open source API and drivers that supports a wide range of HMD(head-mounted display) devices such as Oculus Rift, HTC Vive, Sony PSVR, and others.

openXR is a free, open standard that provides high-performance access to Augmented Reality (AR) and Virtual Reality (VR) collectively known as XR—platforms and devices.

Monado is the first OpenXR™ runtime for GNU/Linux. Monado aims to jump-start development of an open source XR ecosystem and provide the fundamental building blocks for device vendors to target the GNU/Linux platform.

Libsurvive is a set of tools and libraries that enable 6 dof tracking on lighthouse and vive based systems that is completely open source and can run on any device. It currently supports both SteamVR 1.0 and SteamVR 2.0 generation of devices and should support any tracked object commercially available.

Simula is a VR window manager for Linux that runs on top of Godot. It takes less than 1 minute to install. Simula is officially compatible with SteamVR headsets equipped with Linux drivers (e.g. HTC Vive, HTC Vive Pro, & Valve Index). We have also added experimental support to OpenXR headsets that have Monado drivers (e.g. North Star, OSVR HDK, and PSVR). Some people have gotten the Oculus Rift S to run Simula via OpenHMD (see here).

Professional Audio/Video Development

Back to the Top



Audio/Video Learning Resources

10 Video Production Tools That Make the Difference Between a Good Video and a Bad One by Dann Albright

Online Audio Editing Classes from Skillshare

Online Video Editing Classes Skillshare

Video Editing Courses from Udemy

Audio Editing Courses from udemy

Video Editing Courses from Coursera

The Basics of Audio Editing from Coursera

Audacity Podcast Production Course: Audio Editing for Podcasters

Video Editing Online Training Courses from LinkedIn Learning

Audio Editing Online Training Courses from LinkedIn Learning

Audio/Video Tools and Equipment

H.264(AVC) is a video compression standard based on block-oriented and motion-compensated integer-DCT coding that defines multiple profiles (tools) and levels (max bitrates and resolutions) with support up to 8K.

H.265(HEVC) is a video compression standard that is the successor to H.264(AVC). It offers a 25% to 50% better data compression at the same level of video quality, or improved video quality at the same bit-rate.

FFmpeg is a leading multimedia framework that can decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge ones on multiple platforms such as Windows, macOS, and Linux.

HandBrake is a tool for transcoding video from almost any format with a selection of widely supported codecs. It is supported on Window, macOS, and Linux.

HTTP Live Streaming (HLS) is a communications protocol developed by Apple that sends live and on‐demand audio and video to iPhone, iPad, Mac, Apple Watch, Apple TV, and PC.

Dynamic Adaptive Streaming over HTTP (DASH) is an adaptive streaming protocol that allows for a video stream to switch between bit rates on the basis of network performance, in order to keep a video playing.

OpenMAX™ is a cross-platform API that provides comprehensive streaming media codec and application portability by enabling accelerated multimedia components to be developed, integrated and programmed across multiple operating systems and silicon platforms.

GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing. Applications can take advantage of advances in codec and filter technology transparently.

Media Source Extensions (MSE) is a W3C specification that allows JavaScript to send byte streams to media codecs within Web browsers that support HTML5 video and audio. Also, this allows the implementation of client-side prefetching and buffering code for streaming media entirely in JavaScript.

WebRTC is an open-source project that adds real-time communication capabilities to your application that works on top of an open standard. It supports video, voice, and generic data to be sent between peers, allowing developers to build powerful voice- and video-communication solutions.

Apple ProRes is a codec technology developed by Apple for high-quality & high-performance editing in Final Cut Pro that supports up to 8K.

Premiere Pro is the industry-leading video editing software for film, TV, and the web. Creative tools, integration with other apps and services, and the power of Adobe Sensei help you craft footage into polished films and videos. With Premiere Rush you can create and edit new projects from any device.

Final Cut Pro is Apple's professional grade video editing software.

Kdenlive is an open source video editing tool that supports unlimited multimedia files. It's based on the MLT Framework, KDE and Qt. People who are looking for a very versatile video editing tool that comes packed with features. The latest 20.08 release is out with nifty features like Interface Layouts, Multiple Audio Stream support, Cached data management and Zoombars in the Clip Monitor and Effects Panel but one may argue that the highlights of this release are stability and interface improvements.

OpenShot is an open-source video editing tool that's designed for users new in the editing environment. It has simple features such as a simple drag-and-drop function, it provides an easy-to-use and quick-to-learn user interface. The powerful video editor offers tons of efficient ways to cut and trim down your videos. You can freely utilize the unlimited tracks, video effects engine, title editor, 3D animations, slow motion, and time effects. It supports commonly used video codecs that are supported by FFmpeg like WebM (VP9), AVCHD (libx264), HEVC (libx265) and audio codecs like mp3 (libmp3lame) and aac (libfaac). The program can render MPEG4, ogv, Blu-ray and DVD video, and Full HD videos for uploading to the internet video websites like YouTube.

DaVinci Resolve is the world’s only solution that combines professional 8K editing, color correction, visual effects and audio post production all in one software tool! You can instantly move between editing, color, effects, and audio with a single click. DaVinci Resolve Studio is also the only solution designed for multi user collaboration so editors, assistants, colorists, VFX artists and sound designers can all work live on the same project at the same time.

Blender comes with a built-in video sequence editor allows you to perform basic actions like video cuts and splicing, as well as more complex tasks like video masking or color grading. The Video Editor includes: Live preview, luma waveform, chroma vectorscope and histogram displays. Audio mixing, syncing, scrubbing and waveform visualization.

Lightworks is a non-linear video editing application for editing and mastering digital video used by the film industry. Its professional edition has been used for box office hits, such as Shutter Island, Pulp Fiction, and Mission Impossible. Intimidating user interface. Like professional video editors, such as Adobe Premiere Pro, Lightworks is rather complicated to use for new users.

Shotcut is an open source multi-platform video editor. You can perform various actions such as video editing (including 4K video quality), add effects, create new movies, import most image files formats, export to almost any file format and much more.

Olive is a free non-linear video editor aiming to provide a fully-featured alternative to high-end professional video editing software.

OBS (Open Broadcaster Software) is free and open source software for video recording and live streaming. Stream to Twitch, YouTube and many other providers or record your own videos with high quality H264 / AAC encoding.

REAPER is a complete digital audio production application for computers, offering a full multitrack audio and MIDI recording, editing, processing, mixing and mastering toolset.REAPER supports a vast range of hardware, digital formats and plugins, and can be comprehensively extended, scripted and modified.

Logic Pro is a digital audio workstation (DAW) and MIDI sequencer software application for macOS.

Ableton Live is a digital audio workstation application. It's designed to be an instrument for live performances as well as a tool for composing, recording, arranging, mixing, and mastering.

Bitwig Studio is a digital audio workstation that has linear and non-linear workflows for sound design, recording, live performance, and more. Along with 90+ instruments, effects, and other creative tools. It is supported Windows, macOS, and Linux.

SonoBus is an easy to use application for streaming high-quality, low-latency peer-to-peer audio between devices over the internet or a local network.

Avid Pro Tools is a digital audio workstation for mixing Dolby Atmos or other 3D audio for film or TV, working in a large mixing stage or a small editing suite.

Adobe Audition is a digital audio workstation with tools for color, audio, and graphics, Premiere Pro works seamlessly with other apps and services, including After Effects, Adobe Audition, and Adobe Stock.

JACK Audio Connection Kit AKA JACK is a professional sound server daemon that provides real-time, low-latency connections for both audio and MIDI data between applications that implement its API. JACK can be configured to send audio data over a network to a main machine, which then outputs the audio to a physical device. This can be useful to mix audio from a number of linked computers without requiring additional cables or hardware mixers, and keeping the audio path digital for as long as possible.

JACK2 is a C++ version of the JACK low-latency audio server for multi-processor machines. It is a new implementation of the JACK server core features that aims at removing some limitations of the JACK1 design. The activation system has been changed for a data flow model and lock-free programming techniques for graph access have been used to have a more dynamic and robust system.

Image-Line FL Studio is a digital audio workstation for mixing audio and music sequencing developed by Image-Line.

Propellerhead Reason is a digital audio workstation with tools you need for creative music production, recording, sequencing and mixing.

Cockos Reaper is a full, flexible feature set digital audio workstation with tools used for commercial/home studios, broadcast, location recording, education, science/research, sound design, game development, and more.

PreSonus Studio One is a digital audio workstation application, used to create, record, mix and master music and other audio.

Steinberg Cubase is a digital audio workstation developed by Steinberg for music/MIDI recording and arranging/editing of audio.

Digital Performer is a digital audio workstation and music sequencer software package. It's can recording, editing, arranging, mixing, mastering, MIDI, and more. Digital Performer will take your music to its highest level, thanks to sophisticated features like Stretch Audio (powered by Zynaptiq’s ZTX PRO technology), live triggering and looping.

Sonic Visualiser is a free, open-source application for Windows, Linux, and Mac, designed to be the first program you reach for when want to study a music recording closely.

PipeWire is a server and user space API to deal with multimedia pipelines.It provides a low-latency, graph based processing engine on top of audio and video devices that can be used to support the use cases currently handled by both pulseaudio and JACK. PipeWire was designed with a powerful security model that makes interacting with audio and video devices from containerized applications easy. Nodes in the graph can be implemented as separate processes, communicating with sockets and exchanging multimedia content using fd passing.

LMMS is an open source digital audio workstation application program. When LMMS is pairedr with appropriate computer hardware, it allows music to be produced by arranging samples, synthesizing sounds, playing on a MIDI keyboard, and combining the features of trackers and sequencers. Developed by Paul Giblock and Tobias Junghans, this program stands for "Linux MultiMedia Studio" and supports handy plugins that enables it to work on different operating systems.

Ardour is an open source, collaborative effort of a worldwide team including musicians, programmers, and professional recording engineers. Development is transparent — anyone can watch our work as it happens. Like a good piece of vintage hardware, you can open the box and look inside.

Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. Developed by a group of volunteers as open source and offered free of charge. Amazing support community.

3D Graphics and Design

Back to the Top




Blender's Cycles Render Engine. Source: Blender


Blender VFX(Visual Effects). Source: Blender


Designing a simple UI/UX for an application in Adobe XD. Source: Adobe

3D Graphics and Design Learning Resources

Introduction to Pixar's Universal Scene Description (USD)

Intro to using Universal Scene Description with NVIDIA

First steps with Universal Scene Description in Blender

AMD Radeon ProRender Developer Suite

Blender Foundation

Blender Foundation Certification Training

Blender Cloud Courses

Blender Institute

Blender Education

Blender Network

Blender Courses from Udemy

AutoDesk Learning, Training & Certification

AutoDesk Design Academy

AutoDesk Courses and Specializations from Coursera

Cinema 4D Quick Tips

Getting Started with Cinema 4D

Graphic Design Masterclass(Photoshop, Illustrator, InDesign) from Udemy

Vectr: Beginner's Guide To Graphic Design from udemy

Canva MasterClass: Design For EveryDay Use from Udemy

3D Graphics and Design Tools

Adobe Creative Cloud is a collection of 20+ desktop and mobile apps(Lightroom, Photoshop, Illustrator, InDesign, Rush, Etc.) and services for photography, design, video, web, UX, and more.


Autodesk® is a collection of professional software products and services used in 3D design, architecture, engineering, manufacturing, and high production entertainment companies.

Maya® is a 3D computer animation, modeling, simulation, and rendering software that can create realistic effects from explosions to cloth simulation.

Maya LT™ is a game design software for indie game makers that can create and animate realistic-looking characters, props, and environments using the sophisticated 3D modeling and animation tools.


Autodesk® Maya. Source:Autodesk

3DS Max® is a 3D modeling and rendering software for design visualization, games, and animation.


Autodesk® 3DS Max. Source:Autodesk

Arnold is an advanced Monte Carlo ray tracing(Global illumination) renderer that helps you work more efficiently.

ReCap™ is a Pro 3D scanning software to transform the physical world into a digital asset. With reality capture data you can better understand and verify existing and as-built conditions to gain insights and make better decisions.

Flame® is a 3D VFX and finishing software provides powerful tools for 3D compositing, visual effects, and editorial finishing. An integrated, creative environment means faster compositing, advanced graphics, color correction, and more.

Mudbox® is a 3D digital painting and sculpting software that let's you sculpt and paint highly detailed 3D geometry and textures.


Autodesk® Mudbox. Source:Autodesk

Blender is a professional, free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, interactive 3D applications and video games.

Cinema 4D is a professional 3D and VFX software suite that is capable of doing procedural and polygonal modeling, animation, lighting, texturing, motion graphic and rendering.

Houdini is a 3D procedural software for modeling, rigging, animation, VFX, look development, lighting and rendering in film, TV, advertising and video game pipelines.

Open Graphics Library(OpenGL) is an API used across multiple programming languages and platforms for hardware-accelerated rendering of 2D/3D vector graphics currently developed by the Khronos Group.

Open Computing Language (OpenCL) is an open standard for parallel programming of heterogeneous platforms consisting of CPUs, GPUs, and other hardware accelerators found in supercomputers, cloud servers, personal computers, mobile devices and embedded platforms.

Vulkan is a modern cross-platform graphics and compute API that provides high-efficiency, cross-platform access to modern GPUs used in a wide variety of devices from PCs and consoles to mobile phones and embedded platforms. Vulkan is currently in development by the Khronos consortium.

Metal is a low-level GPU programming framework used for rendering 2D and 3D graphics on Apple platforms such as iOS, iPadOS, macOS, watchOS and tvOS.

MoltenVK is an implementation of Vulkan running on iOS and macOS using Apple's Metal graphics framework.

MoltenGL is an implementation of the OpenGL ES 2.0 API that runs on Apple's Metal graphics framework.

Mesa 3D Graphics Library is a project began as an open-source implementation of the OpenGL specification. A system for rendering interactive 3D graphics. Mesa ties into several other open-source projects: the Direct Rendering Infrastructure, X.org, and Wayland to provide OpenGL support on Linux, FreeBSD, and other operating systems.

OpenGL ES is the mobile subset of OpenGL. It's supported on all major mobile platforms, and is also the base for WebGL.

OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of CPUs, GPUs, DSPs, FPGAs and other processors or hardware accelerators.

Vuforia is a comprehensive, scalable enterprise AR platform. Our wide-ranging solution suite ensures that we can provide the right AR technology to every customer based on their business needs.

Vuforia Studio is a tool that allows anyone to create beautiful 3D augmented reality (AR) experiences in a matter of minutes with no coding required.

OpenVX™ is an open-source, royalty-free standard for cross platform acceleration of computer vision applications. OpenVX enables performance and power-optimized computer vision processing, especially important in embedded and real-time use cases such as face, body and gesture tracking, smart video surveillance, advanced driver assistance systems (ADAS), object and scene reconstruction, augmented reality, visual inspection, robotics and more.

openXR is a free, open standard that provides high-performance access to Augmented Reality (AR) and Virtual Reality (VR) collectively known as XR—platforms and devices.

GPUImage framework is a BSD-licensed iOS library that lets you apply GPU-accelerated filters and other effects to images, live camera video, and movies. In comparison to Core Image (part of iOS 5.0), GPUImage allows you to write your own custom filters, supports deployment to iOS 4.0, and has a simpler interface. However, it currently lacks some of the more advanced features of Core Image, such as facial detection.

GPUImage3 is the third generation of the GPUImage framework, an open source project for performing GPU-accelerated image and video processing on Mac and iOS. The original GPUImage framework was written in Objective-C and targeted Mac and iOS, the second iteration rewritten in Swift using OpenGL to target Mac, iOS, and Linux, and now this third generation is redesigned to use Metal in place of OpenGL.

EGL is an interface between Khronos rendering APIs such as OpenGL or OpenVG and the underlying native platform window system.

VDPAU is the Video Decode and Presentation API for UNIX. It provides an interface to video decode acceleration and presentation hardware present in modern GPUs.

VA API is an open-source library and API specification, which provides access to graphics hardware acceleration capabilities for video processing.

XvMC is an extension of the X video extension (Xv) for the X Window System. The XvMC API allows video programs to offload portions of the video decoding process to the GPU hardware.

AMD Radeon ProRender is a powerful physically-based rendering engine that enables creative professionals to produce stunningly photorealistic images on virtually any GPU, any CPU, and any OS in over a dozen leading digital content creation and CAD applications.

NVIDIA Omniverse is a powerful, multi-GPU, real-time simulation and collaboration platform for 3D production pipelines based on Pixar's Universal Scene Description and NVIDIA RTX.

Universal Scene Description is an efficient, scalable system for authoring, reading, and streaming time-sampled scene description for interchange between graphics applications.

OpenTimelineIO is an interchange format and API for editorial cut information. OTIO is not a container format for media, rather it contains information about the order and length of cuts and references to external media. OTIO includes both a file format and an API for manipulating that format. It also includes a plugin architecture for writing adapters to convert from/to existing editorial timeline formats. It also implements a dependency- less library for dealing strictly with time, opentime.

OpenSubdiv is a set of open source libraries that implement high performance subdivision surface (subdiv) evaluation on massively parallel CPU and GPU architectures. This codepath is optimized for drawing deforming subdivs with static topology at interactive framerates. The resulting limit surface matches Pixar's Renderman to numerical precision.

Affinity Designer is a professional vector graphics editor used by many industry leading illustrators, designers, and other creatives looking to create high-quality concept art.

Sketch is a professional vector graphics app with a beautiful UI and powerful toolset.

Krita is an open source professional painting program for digital painting and 2D animation.

Vectr is a free graphics software used to create vector graphics easily and intuitively.

Glimpse is a cross-platform raster graphics editor based on the GNU Image Manipulation Program available for Linux, macOS, and Windows. A great tool for making YouTube video thumbnails.

GNU Image Manipulation Program(GIMP) is a cross-platform raster graphics editor based on the GNU Image Manipulation Program(GIMP) available for Linux, macOS, and Windows. A great free alternative for Photoshop.

PhotoGIMP is a simple Patch for GIMP 2.10+ to help all Adobe Photoshop Users feel at home.

Photopea is an advanced online photo editor supporting Adobe Photoshop(PSD), GIMP(XCF), Sketch App(Sketch), Adobe XD(XD) and CorelDRAW(CDR) formats.

Inkscape is an open-source vector graphics editor; it can be used to create or edit vector graphics such as illustrations, diagrams, line arts, charts, logos and complex paintings.

Gthree is a GObject/Gtk+ port of three.js.

FreeCAD is a free and open-source general-purpose parametric 3D CAD modeler and a building information modeling software with finite-element-method support.

Ultimaker Cura is the world’s most popular 3D printing software. Prepare prints with a few clicks, integrate with CAD software for an easier workflow, or dive into custom settings for in-depth control.

Dust3D is a cross-platform open-source modeling software. It helps you create a 3D watertight model in seconds. Use it to speed up your character modeling in game making, 3D printing, and so on.

Goxel is a free and Open Source 3D Voxel Editor.

Sketchfab gives you open-source 3D models ready to view, buy, and download for free.

Swift Development

Back to the Top


Developing with SwiftUI in Xcode 12

Swift Learning Resources

Swift is Apple's main programming language for iOS, macOS, watchOS, and tvOS app development. Though, many parts of Swift will be familiar to developers from their experience of developing in C and Objective-C.

Swift Evolution maintains proposals for changes and user-visible enhancements to the Swift Programming Language.

Xcode + Swift makes developing applications for MacOS and iOS fast and fun.

Swift 5.3 Basics

Start Developing iOS Apps with Swift

Apple Developer Documentation

Apple Foundation Framework

Apple Core Animation Framework

Apple Core Graphics Framework

Virtualization Framework

Paravirtualized Graphics Framework

Getting Started with LLDB

Mac Catalyst - iOS - Human Interface Guidelines

Amazon EC2 Mac Instances

Swift GitHub

Apple Developer Forums

Swift Forums

Google's Swift Style Guide

Swift Courses Online from Coursera

Swift Courses Online from Udemy

Learning Swift course from Codecademy

Swift Tools, Libraries, and Frameworks

Xcode includes everything developers need to create great applications for Mac, iPhone, iPad, Apple TV, and Apple Watch. Xcode provides developers a unified workflow for user interface design, coding, testing, and debugging. Xcode 12 is built as an Universal app that runs 100% natively on Intel-based CPUs and Apple Silicon. It includes a unified macOS SDK that features all the frameworks, compilers, debuggers, and other tools you need to build apps that run natively on Apple Silicon and the Intel x86_64 CPU.

SwiftUI is a user interface toolkit that provides views, controls, and layout structures for declaring your app's user interface. The SwiftUI framework provides event handlers for delivering taps, gestures, and other types of input to your application.

UIKit is a framework provides the required infrastructure for your iOS or tvOS apps. It provides the window and view architecture for implementing your interface, the event handling infrastructure for delivering Multi-Touch and other types of input to your app, and the main run loop needed to manage interactions among the user, the system, and your app.

AppKit is a graphical user interface toolkit that contains all the objects you need to implement the user interface for a macOS app such as windows, panels, buttons, menus, scrollers, and text fields, and it handles all the details for you as it efficiently draws on the screen, communicates with hardware devices and screen buffers, clears areas of the screen before drawing, and clips views.

ARKit is a set set of software development tools to enable developers to build augmented-reality apps for iOS developed by Apple. The latest version ARKit 3.5 takes advantage of the new LiDAR Scanner and depth sensing system on iPad Pro(2020) to support a new generation of AR apps that use Scene Geometry for enhanced scene understanding and object occlusion.

RealityKit is a framework to implement high-performance 3D simulation and rendering with information provided by the ARKit framework to seamlessly integrate virtual objects into the real world.

SceneKit is a high-level 3D graphics framework that helps you create 3D animated scenes and effects in your iOS apps.

Mac Catalyst is a set of Apple APIs that developers can use to rapidly port their iOS apps to Apple Silicon M1 Chip and take full advantage of the new capabilities on the new Apple hardware.

Instruments is a powerful and flexible performance-analysis and testing tool that’s part of the Xcode tool set. It’s designed to help you profile your iOS, watchOS, tvOS, and macOS apps, processes, and devices in order to better understand and optimize their behavior and performance.

CocoaPods is a dependency manager for Swift and Objective-C used in Xcode projects by specifying the dependencies for your project in a simple text file. CocoaPods then recursively resolves dependencies between libraries, fetches source code for all dependencies, and creates and maintains an Xcode workspace to build your project.

AppCode is constantly monitoring the quality of your code. It warns you of errors and smells and suggests quick-fixes to resolve them automatically. AppCode provides lots of code inspections for Objective-C, Swift, C/C++, and a number of code inspections for other supported languages.

Vapor is a web framework for Swift. It provides a beautifully expressive and easy to use foundation for your next website, API, or cloud project.

Hero is a library for building iOS view controller transitions. It provides a declarative layer on top of the UIKit's cumbersome transition APIs—making custom transitions an easy task for developers.

Kingfisher is a powerful, pure-Swift library for downloading and caching images from the web. It provides you a chance to use a pure-Swift way to work with remote images in your next app.

Realm is a mobile database that runs directly inside phones, tablets or wearables. This repository holds the source code for the iOS, macOS, tvOS & watchOS versions of Realm Swift & Realm Objective-C.

Perfect is a complete and powerful toolbox, framework, and application server for Linux, iOS, and macOS (OS X). It provides everything a Swift engineer needs for developing lightweight, maintainable, and scalable apps and other REST services entirely in the Swift programming language for both client-facing and server-side applications.

Alamofire is an HTTP networking library written in Swift.

Eureka is an elegant iOS form builder in Swift

Carthage is intended to be the simplest way to add frameworks to your Cocoa application. Carthage builds your dependencies and provides you with binary frameworks, but you retain full control over your project structure and setup. Carthage does not automatically modify your project files or your build settings.

ReactiveCocoa is reactive extensions to Cocoa frameworks, built on top of ReactiveSwift.

Objective-C Development

Back to the Top

Objective-C Learning Resources

Objective-C was the primary programming language used for writing software for macOS and iOS until Swift was introduced in 2014. It is a superset of the C programming language and provides object-oriented capabilities and a dynamic runtime.

Apple Developer Forums

Google's Objective-C Style Guide

Objective C Courses on Coursera

Objective-C online course on Udemy

Objective-C for Swift Developers course by David Nutter

Objective-C Essential Training on LinkedIn Learning

Objective-C for Swift Developers on Udacity

Objective-C Tools, Libraries, and Frameworks

Xcode includes everything developers need to create great applications for Mac, iPhone, iPad, Apple TV, and Apple Watch. Xcode provides developers a unified workflow for user interface design, coding, testing, and debugging.

AppKit is a graphical user interface toolkit that contains all the objects you need to implement the user interface for a macOS app such as windows, panels, buttons, menus, scrollers, and text fields, and it handles all the details for you as it efficiently draws on the screen, communicates with hardware devices and screen buffers, clears areas of the screen before drawing, and clips views.

Instruments is a powerful and flexible performance-analysis and testing tool that’s part of the Xcode tool set. It’s designed to help you profile your iOS, watchOS, tvOS, and macOS apps, processes, and devices in order to better understand and optimize their behavior and performance.

CocoaPods is a dependency manager for Swift and Objective-C in your Xcode projects by specifying the dependencies for your project in a simple text file. CocoaPods then recursively resolves dependencies between libraries, fetches source code for all dependencies, and creates and maintains an Xcode workspace to build your project.

AppCode is constantly monitoring the quality of your code. It warns you of errors and smells and suggests quick-fixes to resolve them automatically. AppCode provides lots of code inspections for Objective-C, Swift, C/C++, and a number of code inspections for other supported languages.

Realm is a mobile database(replaces Core Data & SQLite) that runs directly inside phones, tablets or wearables.

Infer is a static analysis tool for Java, C++, Objective-C, and C.

Mantle is a model framework that makes it easy to write a simple model layer for your Cocoa or Cocoa Touch application.

Quick is a behavior-driven development framework for Swift and Objective-C.

Aspects is a simple library for aspect oriented programming in Objective-C and Swift.

Hammerspoon is a tool for powerful automation for macOS that acts as a bridge between the operating system and a Lua scripting engine.

Nimbus is an iOS framework whose feature set grows only as fast as its documentation.

C/C++ Development

Back to the Top


C/C++ Learning Resources

C++ is a cross-platform language that can be used to build high-performance applications developed by Bjarne Stroustrup, as an extension to the C language.

C is a general-purpose, high-level language that was originally developed by Dennis M. Ritchie to develop the UNIX operating system at Bell Labs. It supports structured programming, lexical variable scope, and recursion, with a static type system. C also provides constructs that map efficiently to typical machine instructions, which makes it one was of the most widely used programming languages today.

Embedded C is a set of language extensions for the C programming language by the C Standards Committee to address issues that exist between C extensions for different embedded systems. The extensions hep enhance microprocessor features such as fixed-point arithmetic, multiple distinct memory banks, and basic I/O operations. This makes Embedded C the most popular embedded software language in the world.

C & C++ Developer Tools from JetBrains

Open source C++ libraries on cppreference.com

C++ Graphics libraries

C++ Libraries in MATLAB

C++ Tools and Libraries Articles

Google C++ Style Guide

Introduction C++ Education course on Google Developers

C++ style guide for Fuchsia

C and C++ Coding Style Guide by OpenTitan

Chromium C++ Style Guide

C++ Core Guidelines

C++ Style Guide for ROS

Learn C++

Learn C : An Interactive C Tutorial

C++ Institute

C++ Online Training Courses on LinkedIn Learning

C++ Tutorials on W3Schools

Learn C Programming Online Courses on edX

Learn C++ with Online Courses on edX

Learn C++ on Codecademy

Coding for Everyone: C and C++ course on Coursera

C++ For C Programmers on Coursera

Top C Courses on Coursera

C++ Online Courses on Udemy

Top C Courses on Udemy

Basics of Embedded C Programming for Beginners on Udemy

C++ For Programmers Course on Udacity

C++ Fundamentals Course on Pluralsight

Introduction to C++ on MIT Free Online Course Materials

Introduction to C++ for Programmers | Harvard

Online C Courses | Harvard University

C/C++ Tools and Frameworks

Visual Studio is an integrated development environment (IDE) from Microsoft; which is a feature-rich application that can be used for many aspects of software development. Visual Studio makes it easy to edit, debug, build, and publish your app. By using Microsoft software development platforms such as Windows API, Windows Forms, Windows Presentation Foundation, and Windows Store.

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.

Vcpkg is a C++ Library Manager for Windows, Linux, and MacOS.

ReSharper C++ is a Visual Studio Extension for C++ developers developed by JetBrains.

AppCode is constantly monitoring the quality of your code. It warns you of errors and smells and suggests quick-fixes to resolve them automatically. AppCode provides lots of code inspections for Objective-C, Swift, C/C++, and a number of code inspections for other supported languages. All code inspections are run on the fly.

CLion is a cross-platform IDE for C and C++ developers developed by JetBrains.

Code::Blocks is a free C/C++ and Fortran IDE built to meet the most demanding needs of its users. It is designed to be very extensible and fully configurable. Built around a plugin framework, Code::Blocks can be extended with plugins.

CppSharp is a tool and set of libraries which facilitates the usage of native C/C++ code with the .NET ecosystem. It consumes C/C++ header and library files and generates the necessary glue code to surface the native API as a managed API. Such an API can be used to consume an existing native library in your managed code or add managed scripting support to a native codebase.

Conan is an Open Source Package Manager for C++ development and dependency management into the 21st century and on par with the other development ecosystems.

High Performance Computing (HPC) SDK is a comprehensive toolbox for GPU accelerating HPC modeling and simulation applications. It includes the C, C++, and Fortran compilers, libraries, and analysis tools necessary for developing HPC applications on the NVIDIA platform.

Thrust is a C++ parallel programming library which resembles the C++ Standard Library. Thrust's high-level interface greatly enhances programmer productivity while enabling performance portability between GPUs and multicore CPUs. Interoperability with established technologies such as CUDA, TBB, and OpenMP integrates with existing software.

Boost is an educational opportunity focused on cutting-edge C++. Boost has been a participant in the annual Google Summer of Code since 2007, in which students develop their skills by working on Boost Library development.

Automake is a tool for automatically generating Makefile.in files compliant with the GNU Coding Standards. Automake requires the use of GNU Autoconf.

Cmake is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice.

GDB is a debugger, that allows you to see what is going on `inside' another program while it executes or what another program was doing at the moment it crashed.

GCC is a compiler Collection that includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages.

GSL is a numerical library for C and C++ programmers. It is free software under the GNU General Public License. The library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive test suite.

OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library. GLEW provides efficient run-time mechanisms for determining which OpenGL extensions are supported on the target platform.

Libtool is a generic library support script that hides the complexity of using shared libraries behind a consistent, portable interface. To use Libtool, add the new generic library building commands to your Makefile, Makefile.in, or Makefile.am.

Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.

TAU (Tuning And Analysis Utilities) is capable of gathering performance information through instrumentation of functions, methods, basic blocks, and statements as well as event-based sampling. All C++ language features are supported including templates and namespaces.

Clang is a production quality C, Objective-C, C++ and Objective-C++ compiler when targeting X86-32, X86-64, and ARM (other targets may have caveats, but are usually easy to fix). Clang is used in production to build performance-critical software like Google Chrome or Firefox.

OpenCV is a highly optimized library with focus on real-time applications. Cross-Platform C++, Python and Java interfaces support Linux, MacOS, Windows, iOS, and Android.

Libcu++ is the NVIDIA C++ Standard Library for your entire system. It provides a heterogeneous implementation of the C++ Standard Library that can be used in and between CPU and GPU code.

ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files. It's widely used to build languages, tools, and frameworks. From a grammar, ANTLR generates a parser that can build parse trees and also generates a listener interface that makes it easy to respond to the recognition of phrases of interest.

Oat++ is a light and powerful C++ web framework for highly scalable and resource-efficient web application. It's zero-dependency and easy-portable.

JavaCPP is a program that provides efficient access to native C++ inside Java, not unlike the way some C/C++ compilers interact with assembly language.

Cython is a language that makes writing C extensions for Python as easy as Python itself. Cython is based on Pyrex, but supports more cutting edge functionality and optimizations such as calling C functions and declaring C types on variables and class attributes.

Spdlog is a very fast, header-only/compiled, C++ logging library.

Infer is a static analysis tool for Java, C++, Objective-C, and C. Infer is written in OCaml.

Contribute

  • If would you like to contribute to this guide simply make a Pull Request.

License

Back to the Top

Distributed under the Creative Commons Attribution 4.0 International (CC BY 4.0) Public License.

About

Apple Silicon Guide. Learn all about the A17 Pro, A16 Bionic, R1, M1-series, M2-series, and M3-series chips. Along with all the Devices, Operating Systems, Tools, Gaming, and Software that Apple Silicon powers.


Languages

Language:Swift 100.0%