Join us in November for the first annual Back to the Mac conference where misfits, rebels, troublemakers, and the ones who think differently will share their knowledge about developing Mac apps. The conference is free. There are no registration or application fees. It is completely online as a collection of videos on our YouTube channel. Videos are recorded by the speakers and information is provided so viewers can contact presenters with questions or comments.
Dates for the 2020 conference:
If you would like to give a presentation or demo for the 2020 Back to the Mac conference, please submit your talk using the guidelines available here.
The call for 2020 proposals is over. See ya next year.
I’m the creator of Screenie a Mac app to search for text in your screenshots. The core of the app is already open source. My talk will walk you through the text request Vision APIs, and how we can efficiently create an index for a large number of images in Swift using Combine, including code examples from Screenie. I’ll demonstrate how to improve search result accuracy using natural language concepts including tokenization, lemmatization, and data detection - all provided by the NaturalLanguage framework. Last, I’ll cover some new APIs added in macOS 11 for sentence embeddings which we can use to cluster similar screenshots. By the end of the talk, attendees will know how to use high level ML and NLP APIs on macOS to create an efficient image search.
This presentation will discuss using XPC to create a Python interpreter environment within your Mac application, including describing why you’d want a Python interpreter in the first place, why you would benefit by using XPC, and how to establish bi-directional data links. Finally, I’ll discuss the results I observed doing this in my app, Cartographica. The GitHub repository for this presentation is https://github.com/gaige/xpc-python.
If you want to distribute a Mac app outside the Mac App Store, Developer ID is no longer sufficient, you have to notarize your application. While Xcode can do everything for you in its organizer, it’s a good practice to have a separate machine for continuous integration, and that means scripting your builds for distribution. In this talk, we’ll go over the command-line `altool` to interface with Apple’s notarization system, and build a robust, yet simple script that can handle notarizing apps and disk images for immediate distribution from your website.
In this demonstration, I will build a fully functioning Mac app using pure SwiftUI. I'll show how to use the standard Mac features that are not present in iOS apps such as windows of varying sizes and with multiple panes, toolbars, menus, keyboard shortcuts, and UI elements that are not available on iOS or are different on the Mac.
With Speculid, I built an app using existing C++ libraries to create app icons from SVG files. After WWDC 2020, I updated the app along with its build process and use of documents. In this talk, I'll explain how I used HomeBrew, GitHub Actions, and Swift Packages to create a consistent developer experience via continuous integration. I'll also cover how to integrate libraries like Cairo and Librsvg with Swift as well as the challenges associated with packaging, sandboxing, SwiftUI docs and more.
Application bundles seem like a topic everyone understands, but few have tried to build an app manually. We leave all the responsibility to Xcode, but when something goes wrong, we don’t know where to go search for answers. I believe this topic could help macOS developers understand clearly the entry points and what makes up an application bundle. This presentation is based on the following article: https://rderik.com/blog/understanding-a-few-concepts-of-macos-applications-by-building-an-agent-based-menu-bar-app/.
Distributing Mac apps outside the store means signing and notarizing it. When your app need to function offline, this imply that you need to stamp the notarization result as well otherwise risk the dreaded “Apple cannot verify this application for malware” warning to your user. It also means needing to distribute apps as disk images instead of a simple ZIP archive since the latter cannot be stamped. But creating a notarized and stamped disk image is lengthy 10-step process. Xcode is yet to provide a 1-click command to do this. What is the process involved to create a properly notarized and stamped disk image and how to automate this entire ordeal? Watch the talk to find out more.
Accessing a live video's raw frames opens up lots of possibilities such as chroma-keying and precisely timed graphical effects. Even accurately pausing on a single frame and drawing over the top is hard - frame synchronized real-time graphics is another level. People would usually turn to a third-party framework such as FFmpeg. Instead, I will demonstrate the less well-documented APIs in AVFoundation to make this possible. By the end of the talk you’ll know how to render frames from an AVPlayer within a Metal scene. The GitHub repository for this talk is available at https://github.com/earltedly/video-as-a-texture-talk.
In this talk, I’ll run through the journey of making a Mac app, using (mainly) SwiftUI. Building an app with such a new framework has been a lot of fun, but it also came with some challenges. I would love to share some of these challenges I encountered along the way, my troubleshooting process, and the solutions I found. SwiftUI has changed since I started building the app, so I also want to chat about the impacts this has had on the app and the codebase.
In this talk I will show how you get a window overlay that doesn't take focus from your main window but can interact with keyboard events. It will be something like Safari's search bar window and does not steal key focus from the main window.
This talk describes how to use Metal to draw in 2D. Although we ordinarily think of Metal as a 3D graphics API, it can also be used to render 2D elements such as lines, curves, gradients, and text. These can be used to create custom user interfaces or even entire drawing applications. The talk begins with a brief introduction to the Metal API and command submission model, continues with several demonstrations of how to do high-performance low-level rendering in 2D, and concludes with a survey of popular GPU-accelerated UI systems, including Dear ImGui and NanoVG.
The Swift Argument Parser is the premier way to build command line applications. In this talk, I explain the basics of the Swift Package manager and how to get started building your first command line tool using the Swift Argument Parser. I'll go over decoding arguments, flags, and options and how to build a robust terminal application.
Nothing to see this year. Check back next year.