Advertisement · 728 × 90

Posts by Sam Shi

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 🙃

11 months ago 0 0 0 0

Summertime cycling in North Carolina means wearing sunglasses in the dark to keep the constant swarm of gnats out of my eyes 🤢

11 months ago 0 0 0 0

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 :)

11 months ago 1 0 0 0

Especially considering how many screenshots & screen recordings I take for my class! Wow!

11 months ago 0 0 0 0

I finally hopped on the CleanShot X train and—oh my god! How have I lived without this?

11 months ago 0 0 1 0

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 🤷‍♂️

11 months ago 1 0 1 0
Email inviting Sam to the in-person event at WWDC 2025

Email inviting Sam to the in-person event at WWDC 2025

:)

1 year ago 3 0 0 0

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 😅

1 year ago 1 0 0 0

🫡

1 year ago 0 0 0 0
Advertisement

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)

1 year ago 2 0 1 0

Nice! I played around with an AudioKit metronome app early last year and it was no joke. Where’d you get your sound assets?

1 year ago 0 0 1 0

But they’re SO good

1 year ago 0 0 1 0

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 :(

1 year ago 0 0 0 0

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

1 year ago 0 0 1 0

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.

1 year ago 0 0 1 0

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”

1 year ago 0 0 1 0

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

1 year ago 0 0 1 0

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

1 year ago 0 0 1 0

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

1 year ago 0 0 1 0
Advertisement
Screenshot of Weather.app showing the weather in Moncure, NC. With temperatures of 19° and 61° in the same week.

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…?

1 year ago 2 0 0 0
Preview
UNC COMP 433 Course homepage for UNC's COMP 433 course taught by Sam Shi.

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 :)

1 year ago 2 0 0 0
A screenshot of the Spotify Now Playing screen showing Childish Gambino's Redbone

A screenshot of the Spotify Now Playing screen showing Childish Gambino's Redbone

A SwiftUI recreation of Spotify's Now Playing screen

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" :)

1 year ago 1 0 1 0
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 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

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!

1 year ago 1 0 1 0
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.

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)

1 year ago 1 0 1 0
A screenshot of an Instagram recreation built with SwiftUI. Showing the UNC Computer Science Instagram feed

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!

1 year ago 2 0 1 0

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 🙂

1 year ago 2 0 1 0
An orange 3d printed Swift logo, a silver 3d printed Apple “hello”, and a succulent in a line on a wooden shelf.

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 🥹

1 year ago 3 0 1 0
Post image

Being able to see (and interact with!) iPhone notifications on my Mac has made these pesky 2FA pushes a lot less annoying :)

1 year ago 0 0 0 0
Advertisement

Me too :) We’re making it happen though

1 year ago 0 0 0 0

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!

1 year ago 6 0 1 0