Issue 497
5th March 2021
Written by Dave Verwer
Comment
One of my wishes for last year’s WWDC was that we’d see Xcode level up its support for projects opened from a Package.swift
file. Compared to working with an xcodeproj
or xcworkspace
project, it can feel a little bit like you’re using “Xcode Lite” when working on a Swift package or server-side Swift project.
So, I was delighted to come across SE-0303 – Package Manager Extensible Build Tools, currently in review. It proposes a new plugin
target type in a Swift package used to invoke custom commands during a build. The most obvious benefit of this would be to finally allow tools like SwiftLint to be used with Package.swift
projects, but many other use-cases are immediately apparent.
SE-0303 has significant implications for those of us working with Swift on the Server too. Most notably, allowing our front-end (CSS/JS) build process to become part of the core product build process, rather than being off to one side. I have lots of thoughts around integrating existing web technologies with server-side Swift, but they will have to wait for another day!
It still feels strange to have two entirely different ways of managing a Swift project inside one tool, though. I’m sure there were many good reasons for the decision, but it is a curious one! I’m hopeful that SE-0303 will not stand alone and that some of the goodies that the Xcode team will unveil in a few months move us towards a more unified set of tools between these two ways to organise Swift projects.
Sponsored Link
Find Your Next iOS Dev Job Through HiredHired is home to thousands of actively hiring startups and Fortune 500 companies. Create a free profile, name your salary, and connect with hiring managers looking to grow their teams.
News
Farewell buddybuild… againWell, this is sudden! buddybuild hasn’t been taking new customers since being acquired in 2018, but to shut down with less than a month’s notice is shocking.
I was always sceptical that whatever Apple planned to do with buddybuild would look like a hosted CI service. It would have made some sense, but I couldn’t see them getting involved in that business. I suspected that team (who were exceptionally talented) might go and work on something related, but not a hosted CI service.
We don’t know the full story here, and likely never will, but it’s possible that the team did go and work on something different, and this is just the end of what we knew as buddybuild. I think that’s unlikely at this point, but it’s possible. Less than one month’s notice isn’t a positive signal, though. 😅
Mobile Native Foundation
There are plenty of individuals and small teams writing about their iOS development experiences, but it’s a little rarer for people to discuss the issues and challenges facing larger teams publicly. The project’s primary focus for today seems to be the discussion forums, but Keith Smiley also talks about some of the open-source contributions in this blog post.
Tools
Kaleidoscope and the Xcode DebuggerI was pleased to see Kaleidoscope get new owners recently. It’s a great app that I’ve used for many years, but it hadn’t received much love in recent years. That’s all changes now, with this very cool Xcode integration feature. Snapshot a variable using a custom LLDB command, then snapshot it again later, and instead of looking through lines of LLDB output, you’ll see a diff. 👍
Code
Core StoreCore Data works well with new technologies like SwiftUI and Combine, but does it feel at home with them? It does not. Like Daniel Steinberg, I would love to see Apple’s take on what a persistence framework looks like in 2021. This is my big hope for this year’s WWDC.
… and it’ll probably be my big hope for next year’s WWDC too 😂
How does the SwiftUI Environment work and can it be used outside SwiftUI for Dependency Injection?
Joseph Lord asks a good question about the SwiftUI environment. The answer? Well, you should read the post, but of course, the answer is “kinda”. 😂 It also gives him a chance to talk about his MicroInjection framework, with even more detail in this follow up post.
Be careful with Obj-C bridging in Swift
Are all uses of as
the same? They are not, and you might be leaving yourself open to some obscure crashes if you’re bridging to Objective-C. Bruno Rocha explains more.
macOS Development
Adding Services to Grocery for MacIf you want your macOS app to really stand out with people who have used the platform for a long time, then you’ll want to think about the Services menu. What if your app is primarily a Catalyst app though? Is that even possible? The fact that Conrad Stoll has written a whole article about it should give you a hint! 🚀
Business and Marketing
I’m going to reveal to you my ultimate secretI wasn’t sure whether to link to this tip from Cabel Sasser. Will it get too much attention from you know who? 🤫 I decided to go for it, mainly because I already saw it being widely shared. I hope this isn’t the last straw,though!
Why am I linking it? Well, it’s a fantastic way to move people towards a solution that will make them happy, and isn’t that what we’re all trying to do? Quite how that became against the rules is maybe a better question to ask. 😅
Videos
Analyse, Design & Code the ClubHouse app with SwiftUIThis video from Franck Ndame on recreating the Clubhouse UI from scratch is incredibly well-produced and enjoyable to watch. Follow it up by checking out the Figma design and source code.
Jobs
macOS Platform Engineer @ Vectorworks – Super Bowl half-time shows, the World Trade Center Memorial, and the Oscar’s stage were designed using our 3D modeling software. With over 685,000 global users in the Entertainment, Architecture and Landscape industries, we are building a Vectorworks community who are influencing the next generation of design with our software on both Mac and Windows. Join us! – Columbia MD
iOS Engineer @ onX – onX is a pioneer in digital outdoor navigation, where we bring our outdoor passion to work every day with a singular goal–to awaken the adventurer in everyone. We do this by engineering industry-leading technology, and by crafting dynamic outdoor experiences. Come join a team that empowers millions of outdoor enthusiasts to explore the unknown! – Remote within the US
Senior iOS Engineer @ National Public Radio – This is a unique opportunity to join a dynamic team working to improve our iOS products. – Washington DC
Senior iOS Software Engineer @ TeamSnap – If you find sharing party parrot emojis in Slack amusing, TeamSnap is the place for you. We’ve been remote since before remote was cool. You’ll work on a team with big ideas and tiny egos to develop a product that has been featured by Apple at WWDC (Worldwide Developer Conference) and has 23+ million users. – Remote within the US
Principal iOS Software Engineer @ Tripadvisor – Great opportunity to work with the latest Swift and Swift UI iOS development technology on MVVM architecture. Help drive key architectural discussions and designs leading from the front as a technical authority within the talented iOS team. – Boston MA
Mobile Full Stack Engineer @ Expensify – Join our passionate team of top-notch engineers to solve a real-world problem, and help people spend less time managing expenses and more time pursuing their real goals. As we revolutionize the way people manage their expenses, being part of the Expensify team means building the easiest, fastest, and most efficient platform to automate everything expense-related. – San Francisco, Portland, Michigan, New York, London, or Melbourne
Senior iOS Software Engineer @ Doximity – Doximity, the medical network used by over 70% of US clinicians, is hiring passionate Senior iOS engineers (remote-friendly!). You’ll get to be part of an amazing product team and work on an app that is constantly evolving. Use your skills (Swift, MVVM, FRP) to be an integral part of our newly launched telemedicine feature. Apply today! – Remote within the US
Mobile Automation Build Engineer @ Doximity – Come work on a small team, inside a fast growing, largely remote company! In this role, you will maintain the mobile (iOS and Android) CI/CD pipelines, and ensure our app continues to make the lives of healthcare professionals better on a daily basis. – Remote within the US
iOS Engineer @ Turo – Help us build product features that delight guests who book vehicles on our platform and enable hosts with the tools they need to manage their fleet. The iOS team is actively transitioning our iOS codebase from Objective-C to Swift, and we’re learning SwiftUI together–in labs–as we migrate our internal, watchOS, and tvOS apps. It’s really an exciting time to be an Apple-centric engineer at Turo. – San Francisco CA
Are you hiring? Get your open iOS development positions listed right here by posting a Featured Listing over at iOS Dev Jobs.