The theme of my week has been “dealing with the consequences of my own actions”
Past me didn’t think enough about future me when setting up the syllabus and final project requirements 🙃
The theme of my week has been “dealing with the consequences of my own actions”
Past me didn’t think enough about future me when setting up the syllabus and final project requirements 🙃
Summertime cycling in North Carolina means wearing sunglasses in the dark to keep the constant swarm of gnats out of my eyes 🤢
My former students never cease to amaze me. In the past couple of months, several have landed some REALLY cool iOS roles—Apple, PayPal, GoFundMe, Walmart, GameChanger, and more 🤯
So honored to have been a part of their journeys :)
Especially considering how many screenshots & screen recordings I take for my class! Wow!
I finally hopped on the CleanShot X train and—oh my god! How have I lived without this?
Em dashes rule! I’ve been using them a lot lately, but unfortunately I don’t like how they look—I really wish there were some spaces around that bad boy. Oh well 🤷♂️
Email inviting Sam to the in-person event at WWDC 2025
:)
I want to convince my students that quality & organization of their code matters. So, we're taking a look at quite a controversial pattern in the iOS world – MVVM 🫣
Figuring out how to teach this is pretty tough 💀. The specifics of code organization is often so arbitrary and subjective 😅
🫡
For future reference, if you want to have multiple Buttons/NavigationLinks in a Form/List row, you can use .buttonStyle(.plain) on one or all of them!
This disables the default whole-row tap target behavior (which causes this funky stuff)
Nice! I played around with an AudioKit metronome app early last year and it was no joke. Where’d you get your sound assets?
But they’re SO good
I’ve tried having accessibility considerations as a final project requirement, but it was a losing battle. People tended to put off final projects so long that they ended up cramming and forgetting about accessibility :(
When I have time to talk about accessibility + SwiftUI, it’s usually just a brief introduction to the basic modifiers – accessibiltyLabel, accessibilityRepresentation, etc. Again, mostly to show them that they exist and give them a rough idea of what they do
There’s definitely room for growth here
I also like to do an activity where we identify permanent and temporary impairments of different kinds – ex: broken arm
The goal there is to convince them that accessibility matters and that it affects everybody at some point in their life.
The thesis of that tour is just showing them that people have other needs from them - rather than trying to tackle the large and amorphous task of “how to make an app accessible”
I always also like to do an “accessibility tour”. I think most folks haven’t really thought about all of the other ways people interact with their devices – Switch Control, VoiceOver, etc. So I like to show videos of people doing so
From day one I talk about using the built-in FontStyles and Colors with accessibility as a key motivator (dynamic type, light/dark mode, increase contrast, etc)
I think this kind of plants the seed of accessibility considerations
It can be hard to squeeze such a large topic in. I often take a high level approach – trying to expose them to other ways ppl use iPhones and convince them that accessibility matters
Screenshot of Weather.app showing the weather in Moncure, NC. With temperatures of 19° and 61° in the same week.
Oh North Carolina… could you please pick a season…?
If you'd like, you can check out the course content at comp433.notion.site. It's all written for the 80 students enrolled in my course, but you can totally follow along from elsewhere. Let me know if you do!
That's all I have for now. Hope you enjoyed the update :)
A screenshot of the Spotify Now Playing screen showing Childish Gambino's Redbone
A SwiftUI recreation of Spotify's Now Playing screen
Next week, they'll be working on a project to do a static recreation of the Spotify "Now Playing" screen. This is an incredibly fun project that I've had students do before. Here's my reference screenshot and SwiftUI implementation for Childish Gambino's "Redbone" :)
A SwiftUI recreation of the Messages conversation preview. - Sender: Sam Shi - Time: 4:33 PM - Message: $5 wings at Four Corners tonight? I don't think there's a game so it should be too busy
A SwiftUI recreation of the Apple TV episode preview UI. Displaying metadata about Silo Season 1 Episode 1
Today, since everyone had finished setting up their development environments, we were able to do our first "lab" session!
Students came to class and followed detailed instructions to recreat some UI from Messages and Apple TV – aiming for a perfect recreation. It was a ton of fun!
A screenshot of a presentation slide showing an mis-ordered set of view modifiers on the right and a view with a series of concentric backgrounds in the colors of the rainbow on the right.
In the next couple of classes, we talked about how to use HStack & VStack to arrange views, built a simple mental model for how view modifiers work, and talked about some common SwiftUI views and how to use them (Text, Image, Color, Shape, etc)
A screenshot of an Instagram recreation built with SwiftUI. Showing the UNC Computer Science Instagram feed
On FDOC (first day of class), we covered the standard course logistics, like all classes.
But, rather than stopping there, I like to end the first day by showing students how easy and fast SwiftUI is with a recreation of the Instagram UI with hardcoded data. It's always a ton of fun!
First two weeks of class are done!
So far we've covered the fundamentals of displaying, arranging, and styling views with SwiftUI. Next week – using @State and Button to create interactive apps!
Check the thread for a more detailed breakdown of what we've done so far and what's next 🙂
An orange 3d printed Swift logo, a silver 3d printed Apple “hello”, and a succulent in a line on a wooden shelf.
One of my TAs just dropped these 3d printed goodies off for my office 🥹
Being able to see (and interact with!) iPhone notifications on my Mac has made these pesky 2FA pushes a lot less annoying :)
Me too :) We’re making it happen though
M.S. Computer Science? ✅
Teach a university course on iOS? ⏰
I’m beyond excited to share that I’ll be returning to UNC to teach my own, custom-built course on iOS dev :)
This will be a wild ride, but I’m stoked to share my passion for Swift and SwiftUI with my students. Stay tuned for updates!