Coding at Home: July 3rd, Sonic Workshop #4

Join us today for some more functions at 1pm, Irish time!

Super coders!

You guys have written some amazing code at this stage! I hope you had some time to play around with that touch moved code. We were using a bit of math to figure out where the x position of our touch was, then we divided that by the width of our graphic. This was just to get us a number to plug into the Color initializer. And it was a little bit to show off how we get the updated position of the user’s finger on the graphic.

We fed that color into the setTintColor method on our graphic to visually show how often that new handler we set gets called.

Today’s session

Today we’re going to add a touch handler for when someone presses on the graphic.

We’ve done this before in previous pages. But this time we’ll use some of the other functions defined by the playground for playing music.

We’ll spend a lot of time customizing the behavior of our graphic when we tap on it. And we’ll also spend some time exploring all those messages to our onTouchMovedHandler. Maybe we can come up with some other use for them?

You can get as creative as you like with your function names, you just may sacrifice your sanity with some names.

We’ll see you at 1pm!

Coding at Home: July 2nd, Sonic Workshop #3

Come and join us in the Sonic Workshop today at 1pm, Irish time!


Yesterday we spent some time writing some code in a function in a shared file.

This comes in useful, like we said, when you want to do the same tasks over and over again.

Today’s session

In the previous page we had a function pre-written for us. Today we’re going to write our own. Like yesterday’s function, ours will also return a Graphic to place in the scene.

In our createCrystal function we return a Graphic by using a dash and a greater than sign, followed by the type we return. Like so:

public func createCrystal(image: Image, sound: SonicSound) -> Graphic  {

We’ll want to come up with a good, descriptive name for our new function so it makes sense when we use it in code, later.

This requires a bit of thought up front, but it will pay off when we can come back to our code and understand it without too much trouble.

We’ll also get introduced to a new wrinkle in the syntax for closures. Remember, closures are effectively unnamed functions. With functions, we can define parameters you can pass in, as well as a return type.

In the closure we use for the setOnTouchMovedHandler we’ll see in this session we’ll show you how to specify a parameter for a closure and what that does to what a closure looks like.

Like many things with code, there are many ways to write closures. We’ll try to use the most clear way possible to avoid confusion and make our code readable.

Let’s get coding! We’ll see you at 1pm!

Coding at Home: July 1st, Sonic Workshop #2

We’re back with Sonic Workshop today at our usual time of 1pm, Irish time, join us!

Coding with Closures

Yesterday was a big session. We were introduced to closures and learned a little bit about what they are (unnamed functions, in a few words) and when we would use them. And how.

The closure we wrote had no parameters, so it’s one of the easier forms to use (and write).

You might remember, if you’re not scarred (😉), from the later chapters in the Swan’s Quest playgrounds, that we used closures a bit.

When we got to the Timer code we scheduled a timer and wrote some code to be run every so many seconds. We’re going to learn how to write code like that soon!

Today’s session

Today we’re going to go back to functions. Back in the Everyone Can Code Puzzles days, we learned a lot about functions.

In today’s lesson we’ll write functions that return values. This means we do some work in the body of the function and get give some sort of feedback back to the code calling it.

We’ll also write functions with parameters. This lets us write code that can easily be re-used. If you hang around programming long enough, you’ll realize that’s one of our Holy Grails.

We’ll put our function in some shared code, so it will live with us for the rest of the playground pages.

So come along with us at 1pm, Irish time! Or follow along later. We have a new Sonic Workshop landing page, which shows you videos from the Sonic Workshop YouTube playlist. All the videos in this latest series will show up there.

Coding at Home: June 30th, Sonic Workshop

Join us today for some more coding at 2pm, Irish time!

Note the adjusted time — 2pm!

More playgrounds!

Today we’re going to diverge from the expected plan. Instead of resuming the Augmented Reality playground, we’re going to start a new playground.

Inspired by the Swan’s Quest sessions at WWDC, we’re going to look at their inspiration: Sonic Workshop.

Sonic Workshop is designed very like the Lights, Camera, Code playgrounds we’ve used recently.

So you should feel pretty at home with this one!

It’s an intermediate playground and will explain some of the concepts we encountered in Swan’s Quest.

I can’t wait to get you guys making some sound!

See you at 2!

Coding at Home: WWDC Special #4, the Wrap-Up

Join us today at 1pm when we talk about the final chapter of Swan’s Quest!

The Quest

So Swan’s Quest ended on Friday with one more performance for the swan in Swan’s Quest, Chapter 4.

We added the the playground book for Chapter 4 to our special WWDC feed for ease of use putting it on your iPad.

We’ll spend a little bit of time talking about the final chapter today. The first chapter was an excellent reminder to make sure our apps are accessible, because there are all kinds of users out there.

We focused on playing notes and organizing our code to enable us to do so in a flexible and (relatively) easy to use manner in the last three chapters.

I’ve posted the code online (and will add it to the video description) for solving the puzzle for Chapter 4.

The last three challenges were designed for attendees of WWDC, who are typically professional software engineers who are doing this sort of thing for their day job. So if you’re still learning Swift with us, don’t be too frustrated. These playgrounds give us a nice level of knowledge to aspire to, especially if you’re into music. But don’t forget, most of this code is based on fundamentals you’ve just learned.

Other WWDC goodies

We’ll talk briefly about WWDC and some of the other fun sessions they had this year.

And I’ll also show you one little feature for Reality Composer on the iPad I didn’t realize was there (thanks to @PaulHamilton8!).

This will let us add images to our Reality Composer scenes.

It was an exciting week of great content from the engineers at Apple. We hope you enjoyed our little diversion to Swan’s Quest!

I’ll see you at 1pm, Irish time!

Coding at Home: WWDC Special #3

Join us today for our live coding session at 1pm, Irish time!

Today’s session

Today we’re going to explore Swan’s Quest: Chapter 3, but I’m not quite sure the material lends itself to our session. We’ll see.

There’s some music theory thrown in, subdivision of notes, pitches, frequencies… It’s a little bit Greek to me. But we can take a poke around the playground in the beginning, anyway, and see if we can make head or tails of it.

!! Image from Swan’s Quest: Chapter 3 WWDC20 Session

There are also Protocols, which is an interesting Swift feature, and enumerations, or Enums. This, again, is a little beyond the scope of what we’ve covered so far, but I hope we can make some of it clear.

As before, you can download the Swan’s Quest: Chapter 3 playground from The Code Hub WWDC Playground feed.


It might not be “or”, it might be “and.”

There was an awesome session yesterday called Create Swift Playgrounds content for iPad and Mac.

The playground book they used in that session was excellent, so we may talk a little bit about that playground book, which is now available in The Code Hub WWDC Playground feed.

We’ll see you at 1pm!

Coding at Home: WWDC Special #2

Join us today at 1pm for some more fun, playing with the new set of playgrounds from Apple, Swan’s Quest!

Swan’s Quest, Chapter 2


Have you seen the session for Swan’s Quest, Chapter 2?

It is an awesome playground and builds on the previous challenge, but boy oh boy, are we in deep!

There are some brand new concepts we haven’t covered yet, in our sessions. But we’re going to dive in, anyway, and try and explain and help you solve this new challenge.

First, you’ll want to grab the latest playground from the playground feed we mentioned yesterday.

There’s no VoiceOver setup this time, today we’ll be working with sound, though.

What we’re almost certainly going to want to do is open up the Developer app, either on our iPad or on a Mac.

The Developer page for many sessions (including the Swan’s Quest ones we care about) has a tab bar near the top: Overview, Transcript, and Code.

We’re going to tap on the Code tab if we get stuck.

This tab includes all the code mentioned in the videos. You can copy the code and paste it right into your playground.

This playground uses some advanced stuff. In addition to more advanced audio stuff than we’ve played with, so far, in The Code Hub classes, it includes concepts like Timers, which have some interesting properties, and guard statements, which is a handy control mechanism in Swift.

We’ll talk about all of that stuff today on the session.

In these cases, where the content is that bit more difficult or maybe just something you’re not familiar with (yet), it helps sometimes to copy and paste in code someone insists will work, try it, run it, then play around with it. You can learn a lot by copying someone else’s code and then breaking it!

For the advanced

If you’re blazing ahead, congratulations!

I’ve added the blank Quest Create playground book in the feed, too, so you can grab that and add it to your iPad. It gives you a really interesting starting point for building your own adventure based off this code.

We’ll see you at 1pm, bring some popcorn, patience, and your coding pants!

Coding at Home: June 24th, WWDC Special #1

Join us today at 1pm to get set up for following along with the Swan’s Quest, the new playgrounds from Apple!

Today’s session

I love what Apple is doing with this Swan’s Quest series! We learn about accessibility, which is a hugely important, and often overlooked aspect of programming.

We are going to visit the Swan’s Quest, Chapter 1 session and download the playgrounds and set up our iPad to follow along.

I posted a short video yesterday to walk you through getting set up to use this playground.

So go to the session link and download the playground book.

You’ll need to unzip the file. I had to do it in Files on my desktop… so you can even download that playground book to your desktop and Airdrop it to your iPad for tomorrow’s session.


You can now add the playground book to your iPad via a Swift Playground feed. I’ve added a special, temporary subscribe button on that you can use, from your iPad, to add the playground to your own iPad.

Get the playground book on your iPad, and the next thing you need to do is enable Voiceover support.

First, open up the settings app on your iPad and tap on the Accessibility icon in the settings list.

Scroll down to the bottom of the Accessibility settings and tap on Accessibility Shortcut:

Tap on that item and we’re going to tap on VoiceOver from the next list:

This will let us enable and disable Voiceover by triple-clicking the home button on your iPad.

We can also turn on VoiceOver by going back to the main Accessibility setting screen. At the very top we can tap into VoiceOver and enable it by toggling the switch at the top of the screen:

We’ll need this to solve Swan’s Quest, Chapter 1!

See you at 1pm!

Coding at Home: June 23rd, Grad Break & WWDC20

We will not be broadcasting at 1pm today, because someone in the house is having their last day of sixth class (last day of primary school in Ireland!).

But we do hope to broadcast at some point during the day, so keep your eyes on Twitter, because we’ll give a shout out there. Or you can just watch the live feed, all day long, like a hawk, watching for a tasty Swift mouse to eat.*

Wishes do come true

One of the things we’re most excited about is the publishing of all the session videos up on the Developer app, so we can see what’s going to be talked about.

And take a look!

There are a whole new set of Swift Playgrounds AND a session on creating your own content, checking off a few big items on our wish list!

Today at 6pm, Irish time, is when all these sessions drop, and the first of the new content is presented: Swan’s Quest, Chapter 1: Voices in the dark.

Another session we might find relevant tonight is What’s New in RealityKit.

If you missed the Keynote yesterday, you can catch up with this short little video recapping the announcements from yesterday.

So we likely won’t see you today, but we can’t wait to get back to it tomorrow with you! Keep your eyes on those WWDC videos and Twitter and YouTube and we’ll see you on June 24th!

* Disclaimer: Do not eat Swift Playgrounds.

Coding at Home: June 22nd, Augmented Reality AND WWDC2020!

Join us today, WWDC2020 Day (like Christmas Day, but for developers), for some more live coding at 1pm, Irish time!


Today’s the big day, the kick off of WWDC 2020. We’ll get the big keynote, of course, at 6pm, Irish time, followed by the Platforms State of the Union at 10pm.

They’re always inspiring events to watch, especially if you’re a budding programmer looking for a good, meaty set of problems to solve. Maybe some that you never even realized you could tackle. Like with our Reality Composer work, when we added elements to a book’s cover. Or when we built our own app out of a Swift Playground.

I’ve posted my own wish list for WWDC, but I’m sure there will be plenty of surprises to play with when it’s all said and done.

Today’s session

While we try to keep from bursting, we’ll keep coding in our Augmented Reality Swift Playground today!

We’ll use those actions and start to play with proximity: when the user and their iPad gets close to our models we’ve added to the scene, we’ll be able to run code to react.

We’ll see you today at 1pm for some more coding!