- Видео 144
- Просмотров 66 565
The Swift Bird
Германия
Добавлен 29 окт 2022
I’ve been building software with Swift for over 6 years, and on this channel, I share the things I’ve learned along the way: everything from the fundamentals to advanced topics.
AI is testing Swift Testing (kinda) | @SwiftBird AI Podcast
This time I asked Google’s #NotebookLM to reflect on my Swift Testing video (ruclips.net/video/ua-Toyuqe_4/видео.html). The result was kinda unruly: a couple pretty good illustrations-but also *two* “ad breaks” (in a 10-minute episode!) and a bunch of engagement tricks. Okay then… 😅
You can support the Swift Bird by…
• …becoming a sponsor: patreon.com/SwiftBird
• …buying me a coffee: www.buymeacoffee.com/SwiftBird
Chapters:
• 0:00 That sounds intriguing…
• 0:22 Foreword
• 0:51 AI Speaks
• 10:41 Afterword
The Swift Bird, a Yakov Manshin production 🎞️
#SwiftTesting #softwareengineering
You can support the Swift Bird by…
• …becoming a sponsor: patreon.com/SwiftBird
• …buying me a coffee: www.buymeacoffee.com/SwiftBird
Chapters:
• 0:00 That sounds intriguing…
• 0:22 Foreword
• 0:51 AI Speaks
• 10:41 Afterword
The Swift Bird, a Yakov Manshin production 🎞️
#SwiftTesting #softwareengineering
Просмотров: 188
Видео
Swift Testing Deep Dive: Better Tests with Less Code | @SwiftBird
Просмотров 524Месяц назад
Swift Testing is an all-new, all-Swift framework for automated testing, introduced by Apple at WWDC24-and developed with support of the community (yes, it’s open-source). In this video, I explain Swift Testing’s key features, highlight some important changes from XCTest, and list a few cases where Swift Testing doesn’t work. • Check out this repo where I migrated a small demo project from XCTes...
What does AI think of Swift 6 updates? | @SwiftBird AI Podcast
Просмотров 323Месяц назад
I asked #NotebookLM, Google’s “personalized AI research assistant,” to generate an “audio overview” (basically a podcast episode) based on my own video’s (ruclips.net/video/j6GeWft5jiw/видео.html) transcript. Let’s see (or rather, hear) what AI has to say about the new and updated features of Swift 6! In the meantime, I’m looking forward to what _you_ have to say about this format 💬 You can sup...
These Swift 6 Features Change a Lot! | @SwiftBird
Просмотров 4 тыс.Месяц назад
These Swift 6 Features Change a Lot! | @SwiftBird
Who Cares About Tests? YOU Should! | Swift & iOS Basics | @SwiftBird
Просмотров 5694 месяца назад
Who Cares About Tests? YOU Should! | Swift & iOS Basics | @SwiftBird
What You Need to Know About #WWDC24 | Recap for Developers | @SwiftBird
Просмотров 2,3 тыс.4 месяца назад
What You Need to Know About #WWDC24 | Recap for Developers | @SwiftBird
The Crucial Performance Tool You Don’t Really Use | Copy-on-Write in Swift | @SwiftBird
Просмотров 7705 месяцев назад
The Crucial Performance Tool You Don’t Really Use | Copy-on-Write in Swift | @SwiftBird
You Use Them Every Day-But Do You Know Everything Important? | @SwiftBird
Просмотров 7497 месяцев назад
You Use Them Every Day-But Do You Know Everything Important? | @SwiftBird
The Last Milestone Before Swift 6 (+ Xcode 15.3 & iOS 17.4 Details) | @SwiftBird
Просмотров 5 тыс.8 месяцев назад
The Last Milestone Before Swift 6 ( Xcode 15.3 & iOS 17.4 Details) | @SwiftBird
Autorelease Pool, Lazy Initialization & More | Advanced Memory Management in #Swift (2) | @SwiftBird
Просмотров 1,3 тыс.8 месяцев назад
Autorelease Pool, Lazy Initialization & More | Advanced Memory Management in #Swift (2) | @SwiftBird
Side Table, Object Lifecycle, Unowned Refs | Advanced Memory Management in #Swift (1) | @SwiftBird
Просмотров 2 тыс.8 месяцев назад
Side Table, Object Lifecycle, Unowned Refs | Advanced Memory Management in #Swift (1) | @SwiftBird
Your Peace of Mind Is Now $0/Month | Unleash Xcode Cloud for Your Apps | @SwiftBird
Просмотров 1,4 тыс.9 месяцев назад
Your Peace of Mind Is Now $0/Month | Unleash Xcode Cloud for Your Apps | @SwiftBird
What I WOULDN’T See in Swift in 2024 (But Want It Anyway) | @SwiftBird
Просмотров 1,3 тыс.10 месяцев назад
What I WOULDN’T See in Swift in 2024 (But Want It Anyway) | @SwiftBird
ARC, References & Retain Cycles | Intermediate Memory Management in #Swift | @SwiftBird
Просмотров 81110 месяцев назад
ARC, References & Retain Cycles | Intermediate Memory Management in #Swift | @SwiftBird
What Memory Is & Why Manage It | Essential Memory Management in #Swift | @SwiftBird
Просмотров 90210 месяцев назад
What Memory Is & Why Manage It | Essential Memory Management in #Swift | @SwiftBird
Now’s Your Turn! | Build Your Own Swift Macros | Swift Macros Deep Dive (Part 2) | @SwiftBird
Просмотров 1,6 тыс.11 месяцев назад
Now’s Your Turn! | Build Your Own Swift Macros | Swift Macros Deep Dive (Part 2) | @SwiftBird
All You Need to Know About Swift Macros | Swift Macros Deep Dive (Part 1) | @SwiftBird
Просмотров 3,4 тыс.Год назад
All You Need to Know About Swift Macros | Swift Macros Deep Dive (Part 1) | @SwiftBird
How to Develop iOS Apps on Windows | @SwiftBird
Просмотров 8 тыс.Год назад
How to Develop iOS Apps on Windows | @SwiftBird
Swift Macros, Implicit Returns & Explicit Lifetime Management | What’s New in Swift 5.9 | @SwiftBird
Просмотров 5 тыс.Год назад
Swift Macros, Implicit Returns & Explicit Lifetime Management | What’s New in Swift 5.9 | @SwiftBird
The Good, the Bad & the Greedy | What’s New in Xcode 15 | @SwiftBird
Просмотров 2,6 тыс.Год назад
The Good, the Bad & the Greedy | What’s New in Xcode 15 | @SwiftBird
Can Swift Replace Bash (for Scripting)? | @SwiftBird
Просмотров 2,9 тыс.Год назад
Can Swift Replace Bash (for Scripting)? | @SwiftBird
WWDC23: Top 5 Updates for Developers | @SwiftBird
Просмотров 1,4 тыс.Год назад
WWDC23: Top 5 Updates for Developers | @SwiftBird
15-Year-Old App Goes All Swift | Caffeine Refactored | @SwiftBird
Просмотров 380Год назад
15-Year-Old App Goes All Swift | Caffeine Refactored | @SwiftBird
Your Int and Double Can Break the Bank (Literally) | Decimal in Swift | @SwiftBird
Просмотров 673Год назад
Your Int and Double Can Break the Bank (Literally) | Decimal in Swift | @SwiftBird
Xcode Overview, Project Setup, App Lifecycle | Intro to iOS App Development (Ep. 1) | @SwiftBird
Просмотров 556Год назад
Xcode Overview, Project Setup, App Lifecycle | Intro to iOS App Development (Ep. 1) | @SwiftBird
Reviving a 15-Year-Old App | Caffeine Refactored | @SwiftBird
Просмотров 543Год назад
Reviving a 15-Year-Old App | Caffeine Refactored | @SwiftBird
Your App Is (Probably) Losing a Quarter of All Users | Accessibility in iOS Apps | @SwiftBird
Просмотров 335Год назад
Your App Is (Probably) Losing a Quarter of All Users | Accessibility in iOS Apps | @SwiftBird
Can You Keep a Secret? What About Your App? | Secrets Management in iOS Apps | @SwiftBird
Просмотров 341Год назад
Can You Keep a Secret? What About Your App? | Secrets Management in iOS Apps | @SwiftBird
Implicit weak self, @backDeployed & More | What’s New in Swift 5.8 | @SwiftBird
Просмотров 3,8 тыс.Год назад
Implicit weak self, @backDeployed & More | What’s New in Swift 5.8 | @SwiftBird
why so angry? and why looking on the right side ever few secs
I’m not angry 😅
Wow, do you just look so young, or did you start programming, when you were 5? 😲
Haha, if only any of that was true… 😂
Fantastic video! Thanks for sharing a new way for me to understand Swift. I especially appreciate your insight and the end which reminds me that without you, the AI wouldn’t be as useful, your input is at the core of the podcast!
I’m reading sarcasm here 🤔 But thanks anyway!
@@SwiftBird sincerely! I don’t think Apple Developer Documentation would be as “intriguing” as your transcript.🤭
I'm in the process of migrating my project, and this video is really giving me hope that I can pull it off. Huge thanks for sharing it!
Best of luck with your project!
5 years!
Try not to look to the side every few seconds in your future videos
Thanks for your feedback! I actually thought about it. Your point makes sense. But on the other hand, isn’t that somehow unnerving when someone stares at you all the time? 🤔
guys and gals, please be nice and click like, this guy made the effort to make the video and summarize it for us. like and subscribe
Wow, thank you 😍
Thank you: Just one advice: More code ... less face, more structure ... less waterfall of words, an agenda and a summary ... would make it even a little better!
Thank you! I personally support your point, but most viewers don’t. While this channel is very small, the dataset shows a strong tendency: Videos tightly packed with facts have lower retention. My interpretation is that people are having a “that’s too much, give me a break” moment-and leaving (while also leaving a huge chunk of information on the table, which is the main problem). As I started incorporating extra explanations, illustrations, and discussion points, the videos became longer, but-surprisingly-more people stick around till the end. I guess it’s just easier to digest new stuff when you’re not pressured to stay alert at all times. Not sure a silver bullet even exists here, but at least I hope chapter marks and links to sources help when you want to maximize “value per minute spent.”
🔥
The thing is that most people don't want to develop with Apple frameworks or APIs. We just want to write code on a common set of standard APIs, compile, execute and debug if necessary. iOS devices are not that special from others (yeah, I said it) and having to buy specific hardware to create basic apps should not be necessary in the first place.
True, iOS devices aren’t special by themselves, but they give you access to a huge market. And I agree that specific hardware should not be necessary for development. But porting the entire developer infrastructure could take years. And for what? So people on Windows can create “basic” (primitive) apps? I doubt customers would be happy about it, while developers who are motivated enough will find a way to get the right hardware. Apple of course benefits from those Mac sales, but it’s not just greed-there is objective reason. Not sure I understand your point about standard APIs 🤔 Swift’s standard library and certain frameworks are available everywhere, but when you need device-specific features, you use device-specific APIs. Isn’t this how it works everywhere? I don’t think you can use Win32 on the Mac or something, and even Java probably has platform-restricted APIs.
I'm impressed with the quality of this podcast. Want to push this through some of my transcripts now lol Really cool, thanks for sharing and thanks to the RUclips algorithm for sending me here 😁
Thanks for tuning in! This podcast feature is mostly good, but sometimes it’s awfully inaccurate, just lying with a straight face 😅
@@SwiftBird yeah, I tried with a few articles I've written last night. Mostly I was thinking "how did it get that from the article?!" 😂 But there were a few good podcasts out the back of them. Probably helps if you give it more data to draw from
@Sancarn I figured it also draws from its overall knowledge, which sometimes results in pretty wild (and often inaccurate) illustrations 😂
why you look so angry?
I do? Never noticed that 😅
Maybe that is his "i am speaking English (not my first language) face" I don't think he looks angry. I think he's just choosing his words while recoding and we can see him editing his thoughts in realtime.
Great insight! Though I’d say it’s more about emotions than thoughts. Most videos are scripted because I don’t want to confuse or mislead viewers with inaccuracies, and by the time every detail is fact-checked and proofread, they hardly evoke any sort of emotion. So when I’m recording, I’m trying to come up with ways to sound more natural and less robotic 😅
Such an underrated channel. Keep going!
I will! Thank you 🙌🏻
🙋🏼♂️
I'm excited for more Foundation stuff being ported to linux in swift 6 (like async URLSession methods)
Nice, thx for this info. I guess learning Swift is never ending story. But is fun every time I discover something new
Very true!
It feels like you are working on you accent
Haha, not really, I didn’t do anything special 😅
cool cool cool. just in time
"Migrating to this version might take you a while." Not if you are an unemployed neet who uses Swift for personal projects ; ) Plus, I think I have to explore more with the pointer API and hardened concurrency model before I do serious work.
It’s a matter of perspective! Some personal projects would give a hard time to even the most experienced developers 😅 I wonder, are you interested in the pointer APIs for something specific? I can’t remember the last time I actually needed them for my real tasks 🤔
@@SwiftBird Yes, I am making a fantasy console, and I was playing with 5.10 a bit. I sort of am looking at the various pointer types. I would say 80% of my code was mostly just Swift doing that awesome reference counting. But I also did some magic with an enum and the ‘unsafepointers’ until I found out opaque pointer exists and I should be using that lol. Other then that? Not really. I actually would say the other project was a Raylib binding, but I gave up because of the frustrating lack of documentation for specifically the compiler/package manage for binding with C/C++ code. The old Raylib binding for 4.5 is alright….but 5.5 is around the corner so only using it as a soft reference. Another case is with GDExtension with swift, which I would recommend to look at if you ever wanna do game dev. It is complicated, but it is binding to Godot which is C++, so what can you do there? 🤷 Other then the fantasy console, the only other thing I am looking at is a website with Swift. I think SwiftNIO is so much better then equals in Crystal/Go’s ecosystem. (which is not saying much but at least Go makes it painless to do concurrency…) Anyway! yes, definitely a matter of perspective! I also have to do a renderer/rasterizer with Swift, but luckily most of my code was single threaded before I added an actor stub, so I will definitely have to explore that. What I really wish existed as a Linux guy…was a Bevy for Swift.
I’m genuinely impressed! Keep it up 🔥 Swift on the web is my long-time dream. I tried, more than once, to find a sustainable way of using Swift with WASM (so I can deploy Swift backends on Firebase or Cloudflare), but it seems like the Swift / JS bindings infrastructure is still very limited 😵💫
Thanks a bunch
Fastlane review, please. I use it at work and I would love to see your opinion on a useful configuration and use case.
Noted 🙌🏻
Thank you, this video was really helpful! <3
Haha, thanks 😄
Perfect explanation, keep it up 👏🏻
Thank you!
Man you are incredible. But working on the accent would make it even better
Thank you! ✨ My English accent is far from perfect, no doubt. Not sure it can be improved much (it’s too late probably), but just in case, every video has subtitles 🙌🏻
@@SwiftBird It is not late. Anyone, even 70 year olds can speak almost like a native speaker. It is actually way faster to improve than you think
I’ll keep that in mind, thanks!
My problem with Swift and why I won't even try it is because it is basically only for MacOS. Kind of like how C# is only for Windows. Sure, you could run it on other platforms, but it isn't going to be as smooth most of the time.
Hard to argue with that. While there’s a number of GUI frameworks plus fairly simple integration with C-which make Swift pretty similar to something like Rust-the lack of proper support in IDEs makes working with it far from smooth. Basically your best option is VS Code, but the Swift plugin is very rudimentary.
@@SwiftBird Yeah. Also, I ain't touchin' VSCode with a 10 ft pole. Neovim for me baby!
@@oglothenerd constructive criticism is good, swift needs to get up to par with other modern languages in terms of cross compatibility and dx. however, three things i want to add: 1. it's ironic to complain about dx on non-native platforms when you blatantly refuse to use the tools that currently offers the best dx, and not to say the swift extension for vscode is officially developed and maintained by SSWG (Apple). 2. c# is in no way "only for windows" and haven't been for years, it's not even remotely close to swift in that regard. 3. sourcekit-lsp is open source and available for neovim if you really want to.
@@evrensen467 About point 1, are you saying I should use MacOS just so I can properly use Swift? Yeah, I am a proud Linux user, that isn't happening.
@@oglothenerd idk what part of that point made you think this is about operating systems, if you read the last sentence the "vscode" should be a clue that i'm commenting on your "I ain't touchin' VSCode with a 10 ft pole" comment. you're a dev and if the work you do requires you to use a tool whether you hate or love it you use it.
Just found your channel it’s great! Any tips for someone trying to learn swift who’s new to programming?
Thank you! Perhaps my main advice is to try different formats (textbooks, RUclips videos, etc.) before committing to a 500-page book or an expensive online course. For instance, I choose hands-on projects because I can take different routes and experiment beyond the given task, keeping myself focused and entertained. On the other hand, practical projects don’t always go smoothly (you have to investigate and solve unforeseen problems by yourself), which can demotivate those who prefer comprehensive guidance. So try a few things first and then see what works best for you. I don’t believe you need a “special talent” to learn programming-but wrong tools can make this experience miserable.
Is it just me or these new testing examples and its way to write feels like more of a proxy of the code that is being tested? I mean if we are testing a multiply for 2... the code is probably in the app main code not on the test itself since its the main code we are testing... Not sure if I explain well what I mean. I'm sure I'll understand it better when I tried it later and find different examples to make sense of it. But if the @test states a sequence of expected events/results... isn't that all what we expect from tests? the whole test? so why have the body of the test?
I wouldn’t say we’re _proxying_ the production code in tests; more like defining the constraints it has to fit into, without recreating (or even knowing about) the implementation. In Swift Testing, it’s no different from the usual way we write tests. Typically, the body of a single test consists of four parts: 1. Define an input (which we control); 2. Define the expected result (which we know is correct); 3. Call the production code (which we’re not sure works correctly) on our input and get the actual result; 4. Make sure the actual result matches our expectations. We often need to check the same production code on different inputs, for which there’s a number of techniques: duplicating test methods (which is error-prone and tedious to update but gives you good visibility of which scenarios fail), using a for-in loop to iterate over different inputs within a single test (which requires less duplication but makes finding errors more difficult), etc. Parameterized testing solves this specific problem, without reinventing the fundamental approach to testing. It’s basically syntactic sugar to duplicate tests without you copying and pasting them manually. Test arguments move the inputs and expectations out of the test body, but you _still_ have two more tasks to do: call the production code and compare the results. That’s what the test body is for. In the demo, I don’t multiply anything _in the test code:_ The test knows _what_ the production code has to return, but doesn’t care _how_ it does it, so the production implementation doesn’t leak into tests. Not sure I 100% understood what you meant, so please correct me if I didn’t.
Я также проверил эту связку и не могу не подтвердить её эффективность.
Отлично, спасибо!
A new UI Framework and new programming language every year? Why should this be necessary or desirable? Can you elaborate? SwiftUI took years to become anything close to a production-ready framework. And why should Apple introduce a new programming language?
Sure, I’ll clarify. The purpose of this video is to highlight the updates you might’ve missed after the consumer stuff had stolen all the spotlight at the keynote. A new programming language and UI framework serve only as an illustration: Had Apple introduced something like that, it would’ve been _all_ people talk about (I witnessed the lines for SwiftUI sessions at WWDC19). The point I’m making in the video is, you shouldn’t overlook the other (exciting) updates simply because they’re not as groundbreaking as a new UI framework.
awesome vid...btw 5:50 was there a new air released a few months ago that i missed?
Thank you! Yep, the refreshed Air came out back in March: www.theverge.com/2024/3/4/24089999/apple-macbook-air-m3-announced-13-15-inch
I mostly took a break from Swift to pick up D because I wanted to get over my fear of C/C++ languages. Regular {} and ; were kind of hard for me to get used too. But now I am back and I am super excited for Swift 6! I have been using since 5.9 and it is my go to 'feel good' language next to perhaps Nim or Crystal. I too and looking forward to the new testing framework. My favorite new feature is the do catch error handling. I am working on a fantasy console, partly to build my own platform, partly to learn emulators and boot environments and partly because I love games. I think I can use that in managing console errors and validating contracts. I personally prefer to write code with explicit errors, so this is kind of my dream feature. I always liked how safe swift, it is almost like a less hair pully rust or a opinionated nim imho.
Wow, seems like you’ve got a lot of experience to compare Swift to! Good luck with your console project!
Thanks for being so concise, I love it!
Glad it was helpful!
I was waiting for your review! Keep the good analysis and thank you!
Will do!
I have watched a couple videos from your channel now. You have excellent content and the refinement of the video editing is really good for RUclips. Just an amazing channel. Thank you!
Thank you! Just trying to do my best here 🙌🏻
0:59 "Lets talk about whats wrong with bash" ....*held my breath with antici-*.... "To be fair to it, nothings really wrong" ...*-pation**dramatic exhale*....
When you start writing a video, you never know how it’s gonna end 😂
Thank you for the video!
Thank you for tuning in! 😄
For anyone who does find they are required to use (or debug) scripts written in 'bash' or plain 'sh', then look up a util called "Shellcheck". It can be very helpful.
Will we still be able to use storyboard in the new swift update?
Of course!
Excellent video, bro! I just have a question: With macros, is it possible to attach additional event handler to a button? For instance, can you add an extra tapGesture() for each button in the view? I'm considering adding analytics code automatically to every button in a SwiftUI view.
Thanks! What you want isn’t gonna be very easy because of two things. First, macros can’t change the existing code, so it’s not like you can swap the button’s action closure for the original action _plus your analytics code._ I thought of suggesting the good old property wrappers (which _can_ replace the original expressions), but then the second thing comes into play: SwiftUI buttons don’t expose their action closures. If this was a real task, not just an engineering exercise, I’d consider the least invasive approach: extending SwiftUI’s Button with an initializer which returns a normal Button, only with its handler updated to send the event. With something like init(_:event:action:), all you have to do is literally stick the event name in between the title and action.
I am looking forward to type pack iteration in Swift 6.
Interesting case. Thanks.
First like ,view, comment
Incredible explanation. Thank you so much.
Glad it was helpful!
Amazing! Thank you. You definitely deserve more views. Keep it up!
Will do! Thanks!
Even more cool stuff happens when a struct has a property which is a reference :) Great channel!
So much better than lots of medium articles, precisely explained!
Thanks! 🙌🏻 Actually, I often use the very same Medium posts for my research, adding just a couple things on top. I do some extra fact-checking (and even after that I don’t expect anyone to just trust my word, hence the links in the description). I try to present the data in a more visual format (although I still don’t have enough time to implement _all_ of my ideas). And then, I wrap everything in a cohesive narrative. The last part is probably the most important ingredient because (for me, at least) seeing the connections and big picture makes understanding stuff much easier (e.g. weak refs have certain properties for which the side table is needed, and the way the side table works calls for certain object-lifecycle steps). Like, everything affects everything, and I’m trying to untangle those connections 😄
Keep it up! Love your videos
Thank you so much 😍
Talk about Swift, count me in
Thanks for the simple and clear explanations!
Glad it was helpful!
We have had tons of build system crashes on Xcode 15.3. We had to downgrade back to 15.2. Also strict concurrency checking has yielded hundreds of errors and thousands of warnings. Not even sure how we’re going to do the swift 6 migration in our codebase. Apple seems to have blindly slapped @MainActor on every single UIkit construct. Regardless if it’s a simple struct that should be sendable, or a class with mutable state.
Crashes of the build system itself? 🤔 Personally, one (big) issue I noticed after all the releases (and the video) is, Apple seems to have tweaked some checks on the App Store back end. I used to build my app with beta and RC versions of Xcode for the past few months, and they worked just fine in TestFlight. But a couple weeks ago, when I uploaded a fresh build created in the same environment, with very few changes in the project, that build was “processing” in ASC for, like, 12 hours-and then failed to deploy. Apple even reached out to me and showed some errors I’d never seen before: apparently, at least one Firebase component was “not a proper framework bundle.” I wouldn’t be surprised if that was the first time they saw this themselves. The funny thing is, I tried rebuilding and redeploying a commit that succeeded before, and got the same problem with infinite processing. Speaking of concurrency, I also noticed quite a few changes in the strict mode, but that project was small enough for me to fix them (except now I can’t go back to 15.2). So yeah, Xcode 15.3 does have its fair share of problems, after all 😵💫
@swiftbird so would you recommend downgrading to 15.2 then going back to 15.3 once they have addressed the bugs. Even when I start a new project the default “Hello World!” View will not preview or simulate
I think it could be something different in your case 🤔 Most of the issues I had were caused by third-party frameworks (e.g. Firebase) or App Store checks-neither are part of Xcode itself. Missing previews in SwiftUI happen from time to time, except they’re not really missing-it’s just the preview pane (“canvas”) decided to not show for some reason (but it can be re-enabled in editor options).