On This Day - Mac OS
Why this app?.
One of the things I really wanted to get into was developing Mac applications for my own use. When I first started playing around with XCode development, I had a hankering for a MacOS application, but found very little on the web that clearly covered even the basics of a Mac application, such as how to change the menus, customise the About popup or create a simple preferences screen.
With so little on the Web, I avoided Mac development and played around the edges of iOS development instead. I did figure some of it out eventually and produced my one and only Mac application; MacWasher which is a thin wrapper around Mailwasher Mobile. I still use it, so I must have done something right.
However, it wasn't a 'proper' Mac application in my eyes. Fast forward a while and we're in to SwiftUI and everything is much simpler... except there still isn't that much in the way of tutorials that gets you started. Then, I cam across a book on the Ray Wenderlich site and everything took a leap forward. This book, while a little pricey, covers everything that I had previously been struggling with, including custom menus, custom about popup, custom preferences screen and all the basics of laying out a Mac application using SwiftUI. And that's just the first project!
This is the resulting application from the first part of the tutorial, together with several tweaks of my own.
Key Learning Points
What did I want to achieve?
This being one of my first Mac specific applications, there were a lot of opportunities to learn new concepts. What I wanted from this included:
- Supporting light/dark mode.
- Layout in a SwiftUI application in the 'traditional' Mac style.
- Customising the menus.
- Handling preferences.
- Handling multiple windows.
- Spicing up the About window.
What it looks like
And the end result is...
And this is what I ended up with once the first version was finally complete. It's a traditional style Mac application that works in the way you would expect a Mac application to work - which is always a good thing to strive for.
Caveat; I'm pretty rubbish at recording these demos, so the video is a bit disjointed in places. Sorry about that - I'll try to do better when I have had some more practice.
Am I really any good?
Don't take my word for my abilities, take a look at other peoples opinions about me.
One very quickly runs out of superlatives with Steve. He is the cleverest person I know. He is highly innovative, passionate regarding the proper maintenance of agreed standards and protocols and establishes excellent relationships with our clients.
Steve is a rare developer resource who is able to provide a good breakdown of technical solutions for all audiences to understand... Steve understands the importance of project deliverable's both from a client and business perspective and shows a personal pride in ensuring the delivery schedules are met.
I have worked closely with Steve for his time with us and long before we formed our company. His technical ability far out-performs anyone I have known or met in companies we have worked with like IBM/EDS/Cap Gemini
Steven showed a great deal of commitment and skill when he worked with me. His attention to detail, comprehensive documentation and well thought out code, using very impressive technical standards meant that it was always possible to rely on the solutions provided being top notch. Steven is an asset to any company, at any level - if I were able to, I'd love to work with him again.
I have had the pleasure of working with Steven for several years in my role as CTO. He his one to the most multi-disciplined technically skilled developers I have known but what sets him apart is his eye for, and attention to detail, particularly when considering the user experience. I would absolutely not hesitate in recommending Steven.