Hacking with Swift: Live!

A couple of weeks ago, I attended the first ever Hacking with Swift: Live! conference in Bath, England. Helpfully, Bath is less than an hour away from where I live so it seemed like a great opportunity to attend a conference while still getting to see my family. And it was fantastic!

If you’re not familiar with Hacking with Swift, it’s a website run by Paul Hudson. Paul is a one-man tutorial machine. I have no idea how he produces so much content. He’s written 15 books on Swift and Apple’s platforms, and his website contains a ton of free articles, tutorials, and videos all about Swift. His SwiftUI content has been really helpful, and again I don’t know how he created so much of it so soon after WWDC.

Hacking with Swift: Live was Paul’s first attempt at running this conference and I think it was a huge success. The venue was modern, clean, and bright, the wifi worked excellently, and the food was really good. There were around 200 attendees which felt like just the right number to me. The format of the event was a little different than other conferences I’ve attended before.

Day 1

Day 1 was quite standard conference fare, with 8 talks from some fantastic speakers: Cory Benfield (Apple), Kelly Hutchinson, Kilo Loco, Ellen Shapiro, Sally Shepard, Daniel Steinberg, John Sundell, and James Thomson. I particularly enjoyed:

  • Cory’s explanation of an easy place to get caught out in terms of performance with Swift’s copy-on-write behaviour.
  • Ellen’s talk about the Swift package manager, and using Swift scripts and tools to improve your development life.
  • Daniel’s talk, which cleverly walked through a SwiftUI example by calling out which Swift Evolution proposals were responsible for which pieces of syntax, and explained how they worked.
  • James’s history of easter eggs in Apple’s software.

But they were all great! The videos are all available on YouTube, and you can find links in this post on hackingwithswift.com.

Day 2

Day 2 was one big workshop. Paul literally wrote a book just for the conference, with 3 large example apps covering most of the big iOS 13 features. We then spent the day following along on our laptops as he led us through each tutorial. It was great to get a chunk of dedicated time working through a real example using the new features.

I particularly enjoyed the morning, which was all SwiftUI. I have to say I have been somewhat skeptical about SwiftUI up until this point (these kids and their new-fangled technologies, what’s wrong with the way we do it now? grumble mumble), but using it for a couple of hours… wow is it quick and convenient to build a UI and preview it.

The SwiftUI demo app we built

The other standout new pieces of API were diffable data sources (they clean up so much code!) and compositional collection view layouts.

A good cause

All of the proceeds from Hacking with Swift: Live went to charity. The conference supported Special Effect, a charity that “puts fun and inclusion back into the lives of people with physical disabilities by helping them to play video games”. It seemed like a great cause, and the conference was able to donate $30,000!

Summary

Paul ended the conference by talking about ‘the bigger picture’. How code brought us all together, but it’s not the most important thing in any of our lives, and how we should think about the difference we can all make in the wider world. He also said how proud he was to bring everybody together to his home town, and brought his family onstage to say they were his reason for doing everything he does. I may have cried a little 😅.

I really enjoyed the event and felt like it could’ve easily been a few days longer (although just two days was quite nice as it limited time away from home). I’m keen to go back next year if they hold it again!

My 2018 in Gaming

Better late than never…

2018 was the first year I’ve managed to consistently track the games I’ve been playing throughout the year. I’m using a Trello board to track games I want to play (Unplayed), am playing (Playing), have played (Beaten), or gave up on (Abandoned)1.

Rather than writing a list of ‘top games’ of the year, and inspired by a couple of my colleagues (#1, #2), I thought I’d instead simply post a summary of the various games I played in 2018 and what I thought of them. I’ve highlighted my favourites with a ⭐️.

Beaten

Shadow of the Colossus (PS4 Remaster) ⭐️

Shadow of the Colossus is easily one of my my favourite games of all time. It’s so simple, yet does such an incredible job of conveying the atmosphere of its empty world. The remaster takes an old game that had really clunky performance, and makes it look and play like a dream.

Celeste (Switch) ⭐️

Celeste is an outstanding indie game, and a deserved contender on a lot of top games of 2018 lists. I got so into it that I stayed up into the early hours of the morning playing the last couple of chapters all in one sitting. I just couldn’t put it down.

Oxenfree (Switch)

A creepy mystery adventure, but pretty slow going.

Splatoon 2 Singleplayer (Switch)

I’ve been playing Splatoon 2 multiplayer since it was released in 2017, but I finally finished up the single player ‘campaign’ at the start of the year. It was fine, I guess? The boss fights were the best part, but I think the main multiplayer modes of Splatoon are good enough that it’s not really necessary.

Subsurface Circular (Switch)

A short game that’s most like an interactive novel, with a few puzzles thrown in.

Darkside Detective (Switch)

A very simple (each scene is mostly static, and you don’t even see the characters walking about) but quite entertaining point and click adventure.

Donkey Kong Country: Tropical Freeze (Switch) ⭐️

I absolutely loved my time with Tropical Freeze. It’s hands-down one of the best 2D (with 3D graphics) platformers ever made. Really inventive, nicely challenging, great to play, and the levels are full of life.

Hollow Knight (Switch) ⭐️⭐️⭐️

Wow. Hollow Knight is my favourite game that I played this year, and is instantly one of my favourite games of all time. It just has so much atmosphere, and it’s great at drip-feeding you abilities and giving you a rush when you realise you can now access some previously inaccessible area. I still shudder when I think about Deepnest…

Captain Toad: Treasure Tracker (Switch)

A cutesy, fun little puzzle game. However, I found that I got bored about halfway through, and there wasn’t enough variety in the levels or mechanics to keep me interested.

Spider-Man (PS4) ⭐️

Probably my second favourite game of the year, after Hollow Knight. It’s an open world game, but the developer didn’t feel the need to make the world too big, or cram it full of too much stuff. It’s managable, in a way that a game like Assassin’s Creed isn’t. I’ve almost 100%ed the main game, which is something I never normally bother to do.

Steamworld Dig 2 (Switch)

A Metroidvania with a digging mechanic. It has quite a tight little gameplay loop, with you revisiting the surface regularly as you dig deeper and deeper, but it didn’t really ever completely suck me in.

Night in the Woods (Switch)

I didn’t enjoy this as much as I’d hoped I would. It looks lovely, and it has a nice atmosphere, but it’s very slow and the ending comes out of nowhere.

Unbeaten

Zelda: Breath of the Wild Champions’ Ballad DLC (Switch)

I really enjoyed Breath of the Wild, but I haven’t been back since I beat Ganon. I started the DLC earlier this year and had a good time with it, but I haven’t played in quite some time. I think it might be tricky to pick it back up. It has a lot of overworld exploration and tasks, which is great for me as I didn’t really enjoy the game’s shrines (and I only ever bothered completing a fraction of them).

Skyrim (Switch)

I’ve played Skyrim on the PC, XBox 360, PS4, PSVR, and now the Switch. One day, I’ll finally finish the main quest.

God of War (PS4)

I’ve really enjoyed God of War so far. In particular, the opening hour or so is like something straight out of a Marvel movie. But for some reason I keep falling off it and I still haven’t got round to finishing it.

Dark Souls (Switch)

After playing quite a lot of Dark Souls, I now see what all the fuss is about. The world, the atmosphere, the combat, the thrill and relief when you finally find a bonfire after attempting an area time and time again. But I put it down to play other games and I haven’t come back yet. The oppressive atmosphere and high difficulty isn’t generally what I’m looking for when I just want to relax with a game in the evening.

Pokémon Let’s Go Pikachu (Switch)

I’ve never finished a Pokemon game. I started with Pokemon Red on the Gameboy, and I’ve picked up a few others along the way – Black, Y, Soul Silver… but I’ve always lost interest quite early on. I’ve got a reasonable way through Let’s Go, and it’s a wonderful update of the original Pokemon Yellow… but I’m very close to dropping out yet again. I think at some point I might just have to accept that I don’t find Pokémon battling very interesting.

Astro Bot Rescue Mission (PSVR) ⭐️

One of the best things I’ve played this year, and one of the best things I’ve played in VR. Astro Bot Rescue Mission has Nintendo-levels of whimsy, character, and innovation. A must-have if you have PSVR.

Hyrule Warriors (Switch)

I’ve been unsure whether to pick this one up for some time. I’m a big Zelda fan, but I didn’t know whether I’d like the Musou gameplay. Turns out I do! It kind of operates on two levels – the battlefield management sometimes gets quite stressful, but the moment-to-moment fighting is actually quite mindless and relaxing. Plus it’s just amazing Zelda fan service.

Wandersong (Switch) ⭐️

Wandersong is a wonderful (or should that be WANDERful?), original indie title where you play a bard and interact with the world entirely through singing. I put it down for a bit while waiting for a bugfix to be released, but I can’t wait to get back into it and wrap up the story.

The Rest

I picked up a handful of games on the Switch that I’m not actively playing, but I’ll probably continue to dip into now and again: Stardew Valley, Dead Cells, Flinthook, Immortal Redneck, and Hand of Fate 2. I’ve also started but completely abandoned a couple of games, including the Horizon Zero Dawn: The Frozen Wilds (I absolutely loved Horizon Zero Dawn, but I left it way too long to get back into it and I just feel like I’m done with that world), and Bayonetta 2 (completely not a game for me. I really really don’t like the gameplay or the aesthetics).

So: 12 games beaten, 8 still on the go, and a handful abandoned. 2018 was a great year for games, and for me once again it was dominated by the Switch.


  1. Hat tip to Shaun Inman’s Unplayed lists for the original inspiration for this categorisation. 

Week Links – 2019/01/20

Week Links – 2018/12/23

It’s nearly Christmas and I’m spending time with family, so just a few links this week!

  • Shawn Blanc’s Plan Your Year workbook has been updated for 2019. I’m really excited to sit down with my wife and plan our upcoming year. We did it for the first time for 2018, and it really helped us put more thought into how we were going to spend our year instead of ambling from one thing to the next.
  • Jocelyn K. Glei’s upcoming RESET course sounds interesting!
  • Six Years With a Distraction-Free iPhone – After removing Twitter from my phone, I noticed I’d often replace that habit with checking email or Slack instead. After reading this post I’ve removed those apps from my phone too.
  • How a Password Changed my Life – I remember reading this a couple of years ago but it came up again this week. Neat idea!

Week Links – 2018/12/15

I’ve decided to start collating a short post each Sunday of interesting things I’ve found online over the past week. It could be anything; this week there’s productivity posts, books, some podcasts, and even a recipe. It’s an experiment.

I’ve decided to start collating a short post each Sunday of interesting things I’ve found online over the past week. It could be anything; this week there’s productivity posts, books, some podcasts, and even a recipe. It’s an experiment.

Podcasts

  • The Seanwes Podcast. Creativity and business topics, released weekly. I listened to a handful of episodes so far which I really enjoyed:
    • 381: Why and How to Start an Exercise Habit. I had a pretty great exercise habit going last year, but I let it slide in 2018 while we were expecting our second child. I finally broke my 465 day move streak on my Apple Watch, and since then exercise just hasn’t been a focus for me. And I’ve noticed it! This episode has helped to give me a kick to start to work on this again. Ask yourself each day: what have I done to exercise my body today?
    • 375: 3-Month Guide to Waking up at 6am Consistently. My morning routine isn’t entirely under my own control, as I have both a 3 year old and a 3 month old kid. But I love the idea of a relaxed morning routine with time intentionally set aside to start the day right and think or stretch or exercise or write.

      While I can’t completely control when I’ll need to be awake on a given morning right now, I can control my evening routine. Listening to this episode made me realise I need to make sleep more of a priority, and I’ve already incorporated some of the ideas into ‘shutting down’ slowly in the evening and getting to sleep at a decent time.

      The other big takeaway for me was thinking about a proactive vs a reactive morning. If I’m woken up by my son yelling that he wants to get up, I’m starting the day in a reactive state. The same goes if you’re checking your email or Twitter as soon as you wake up – you beginning by reacting to what the world is throwing at you. Instead, think about being more proactive and setting your own agenda for the morning.

Productivity

  • Start your days right with a consistent shutdown routine – The Sweet Setup. Cal Newport discusses a similar idea in his book Deep Work.
  • Seventh Week Sabbaticals. More from Sean McCabe, this time the idea of taking a sabbatical week every 7 weeks to prevent burnout and create margin.
  • Taking a Depth Year by Leo Babauta at Zen Habits. I don’t think I’d go so far as doing this for a whole year, but I like the idea of finding more depth and value in the things you already own and the activities or hobbies you’ve already started. Improving existing skills, watching media you already have, reading that stack of books you haven’t got to yet or rereading your favourites.
  • Also from Zen Habits: Simplify Technology with Limits. I really liked the limit of “No phone use in the car, at the dining table, while in line, or while talking with other people”.
  • Finally, a tweet (or rather, a short thread): https://twitter.com/clairejlew/status/1072910212573495296. In 1:1 meetings, ask specific questions and suggest ways you can help instead of just asking an open-ended “how can I help you?”.

Books

  • I just finished Atomic Habits, by James Clear. It’s a really concise, practical guide to creating good habits and breaking bad ones.
  • Also, inspired by the morning routine episode of the Seanwes Podcast mentioned above, I’m currently reading My Morning Routine.
  • I came across a great top 100 list of books from 2018. I downloaded a bunch of samples to my Kindle while going through this list.
  • An older post, but Shawn Blanc has an interesting idea of creating an alternative index for a nonfiction book while you’re reading it. Normally I wouldn’t even consider defacing a book, but I can see this would be a really useful approach with nonfiction books. I current try to mostly read Kindle books, as I want to minimise the amount of physical ‘stuff’ that I own, but flicking through a physical book is definitely much easier and you get a better spacial awareness of your notes and highlights. I’m still not sure what the best balance for me is here. See also: Ryan Holiday’s notecard system.

Misc

  • Matt Gemmell posted about mechanical keyboards. I’m now lusting after a WASD keyboard, and started following them on Instagram.
  • We’ve been prepping Wholefully’s overnight oats for a while now as quick grab-and-go breakfasts, but I just discovered their instant oatmeal recipes. Easier to make than porridge, easier to clean up, and you can prep the pots days before. Just add water.

iPad Pro (2018) First Impressions

Some initial thoughts after trying out the new 2018 11” iPad Pro for a couple of days.

I picked up a new 11″ iPad Pro this week, to replace my original 9.7″ Pro. I’ve been using it for a couple of days now, so here are some of my initial thoughts in no particular order:

    I love the squared edges of the new design. I was surprised to read reviews saying how much thinner and lighter the new iPad feels, as to me it feels marginally thicker (even though it’s actually 0.2mm thinner). It’s also slightly heavier (about 30g). I hope this design is brought to the iPhone next year.

  • The screen feels much bigger (and it is!). iOS and its apps have more room to breathe. Although it would’ve been nice if it were a tiny bit wider to keep closer to the original 4:3 aspect ratio.
  • This thing is a fingerprint magnet! Seems to show up way more fingerprints than my original Pro.
  • I’ve not had a device with ProMotion before, and wow – animations feel super slick. Scrolls like butter.
  • I’m still getting used to how to hold the iPad now that it has thinner bezels. In one hand, you end up with your thumb resting on the edge between the front and side of the device, as the bezel isn’t wide enough to place your thumb there without touching the screen.
  • The majority of the third party apps I’ve tried so far haven’t been updated for the new screen size, which means black bars at the top and bottom of the screen. In landscape, this makes the new aspect ratio (no longer 4:3 on the 11″) even more obvious, and I’m still getting used to it.
  • Face ID works very well, but can be a little awkward in practice due to the camera being situated along just one edge of a device that can be (and is) used in any orientation. Now that the home button is gone, it’s not always immediately obvious where the front camera is when you pick up the iPad – particularly if you’re using it in a dimly lit room. For example, if I’m reading in bed I’ll often hold the iPad in portrait orientation and rest the bottom of it on the bed covers. But half the time it turns out that the iPad is ‘upside down’, so the Face ID cameras get blocked by the bedding. The iPhones X don’t have this issue because the notch helps you know which way is up.
  • This is an incredible, futuristic, fast device. It feels fantastic to hold, looks amazing, and is a joy to use. I’d love to use it for all my computing needs. Xcode for iPad, please!

And a few thoughts on the new Smart Keyboard Folio:

  • The new Smart Keyboard Folio is much sturdier than the old Smart Keyboard Cover, and is certainly much more stable when typing on your lap. The iPad can also now be positioned in at a shallower viewing angle, which is much nicer than the very steep angle of the old cover.
  • I was worried that it’d be difficult to put the iPad into / take the iPad out of the folio, but it’s actually very simple thanks to the magical array of magnets present in the new Pro.
  • The magnets are so strong, it’s now more difficult to collapse the iPad when it’s propped up in the folio. I haven’t yet worked out the right places to grab it without either touching on the screen or mashing on the keyboard.
  • Because the new folio wraps around the front and back of the iPad it does increase the bulk, and it’s even heavier than the Smart Keyboard, which already added quite a lot of weight to the device. Laid flat, the new Pro in the folio is about the same thickness as the thickest part of the old keyboard cover:

Tweet Less, Do More

My wife and I spent some time last week planning some goals, events, and projects for 2018. Among other things, I’d like to read more, blog more, and be more intentional about how I spend my free time.

A first step to achieving this: on the 1st of January, I deleted Tweetbot from my phone. If I want to check Twitter, I can do so on my iPad, but I’ll only look once a day. The payoff has been great, even after only one week:

  • I used to be a timeline completionist (I had to read every tweet), but now I’m letting it go. It’s freeing.
  • I’ve found I’m no longer carrying my phone around the house, everywhere I go. Why did I do that before? What was so important?
  • It’s not just that I’m carrying it around less though. I’m using it less in general. I feel less attached to it. I don’t feel anxious if I don’t know where it is. The other day I left the house to go and work from a cafe, and accidentally left my phone at home because the need to have it didn’t really occur to me.
  • I’ve started charging my phone in a different room at night (not the bedroom), so it’s not the last thing I look at before bed. I also don’t rush to get it first thing in the morning – I’ll generally pick it up before work. Again, it’s one less thing to think about.
  • Instead of constantly checking my phone, I’ve started ensuring my Kindle is always to hand. Before bed, I’ll read some of a book. Any downtime I want to fill, I can read some of a book. As a result, I’ve already read two books in the first week of the year, and that’s unheard of for me in recent times.

Hey, and here I am writing a blog post.

Losing It

Since the beginning of May I’ve lost over 10kg, many many inches, and I’m probably the fittest that I’ve ever been.

A graph showing my weight change since the beginning of May. Down from 76.9kg, to 66.1kg in 3 months.

I’ve always been quite skinny, and I could get away with eating pretty much anything I wanted without putting on weight. But a couple of years ago I stopped walking to work, and around the same time my wife and I had a newborn baby which meant I was constantly exhausted and paid less attention to what I was eating. Quick and easy was the order of the day. Before I knew it, without even noticing it was happening, I was heavier than I’d ever been, and I was very unfit. Clothing that I’d worn for years was starting to feel very snug, or not fit at all. I finally decided enough was enough.

At the beginning of May, my wife and I began to make a conscious effort to improve our health, lose weight, and get fit. It’s not actually been too arduous, and it’s been made much easier by the fact that we’ve been doing it together. If one of us doesn’t feel like working out on a given day, we offer encouragement. We can help each other track our eating, and share the job of preparing meals. We can push through the harder times and celebrate our progress together.

Anyway, enough of the preamble. You’re probably wondering what we’re doing to achieve our goals. It’s really a couple of fairly small lifestyle practices that add up to some great results.

Diet

Eat Less

It sounds obvious, but the big change here is that we started watching what we’re eating. Counting calories can be a bit of an effort (particularly as we cook most meals from scratch), but we did it for the first month to get a better understanding of our intake. It’s also a tried-and-tested way to lose weight. If you have the right calorie deficit every day, you should lose weight. Now it’s become second nature to have smaller portions and make better choices.

MyFitnessPal has been excellent for tracking calories, and I’d highly recommend it. I used it initially to calculate a daily calorie intake based on my weight, height, activity level, and the rate at which I wanted to lose weight. I aim for around 1500 calories a day. It’s got a huge database of foods, and it’s easy to add anything that’s not already in there. You can even scan barcodes for ease of entry.

Less Carbs

We eat very few refined carbohydrates, which really helps when trying to hit a daily calorie goal. No bread. We don’t really eat any rice, pasta, or potatoes. We make the other parts of our meals a little larger to compensate. For example, just make a bit more curry instead of having rice as well. Very occasionally, we’ll have a small spoon of one of the above with a meal, but often we’ll just replace it with some more veg like broccoli.

My wife and I have never really drunk alcohol much (I could count on one or two hands the number of times we have it in a year) and we never have sugary soft drinks, so that helps – just tea, coffee, and water. If you do drink either, cutting them out most of the time can be a great way to ditch a tonne of empty calories.

Think

Essentially, improving your diet boils down to making better choices. At each meal, particularly if you’re dining out, think about what small tweaks you could make to cut out some calories or make things healthier.

Swap those chips for a healthier side. Have an extra sausage and some more vegetables, but ditch the mash. Have a takeaway, but just don’t have rice with your curry (or share with someone else). I’ll often weigh up the rough calorie cost in my head: “do I really want to ‘spend’ an extra 200 calories on this?”

We still have treats, we just don’t go crazy. To borrow a phrase from Matt Gemmell, we just don’t routinely overindulge.

A lot of people say losing weight is 80% down to diet, and I think that’s pretty accurate. Watching my diet is the main way I’ve lost weight. Exercise is for toning, building a bit of muscle, and generally improving my fitness level.

Exercise

Three pieces of technology have been indispensable to my efforts to get fit: Apple Watch, a website, and a bike.

Apple Watch

The Apple Watch features three daily activity goals: “Stand”, which requires you to stand for 1 minute each hour for 12 hours of the day; “Exercise”, which requires you to do 30 minutes of activity a day; and “Move”, which requires you to hit a user-defined goal for calories burnt each day.

The Activity watch face on the Apple Watch, showing the current time and 'scores' for each of the watch's three daily activity goals: Move, Exercise, and Stand.
When I first got my Watch, I paid attention to these activity rings. I had a 78 day Move streak going (hitting the goal every day). But then I accidentally broke the streak, and I’ve rarely looked at the activity goals since. It seemed such an effort to get back to 78 days.

From the 1st of May, I decided to make a conscious effort to hit every ring every single day. It’s a way for me to force myself to get active each day. Today marks the 100th day of my new streak, and I really don’t want to break it now. I set my calorie goal low to begin with to set myself up for success, and I’ve been increasing it every week.

A notification on the Apple Watch, congratulating the user on reaching a 100 day Move streak.

Nerd Fitness

I’m alternating between two things to hit my activity goals each day. The first is regular body weight strength workouts. We use an online workout plan from the Nerd Fitness Academy. Nerd Fitness provides a simple, structured workout plan which you can do at home with either no or minimal equipment. We’ve worked our way up from ‘bodyweight level 1’, and we’re now at level 3.

Each level offers two or three different workouts which you can alternate between. We aim for 3 workouts a week. Each workout consists of a warmup, 3 or 4 exercises which you normally do in sequence and repeat 3 times, and then a cool down. The whole thing usually takes us no more than 15 or 20 minutes, and we’re both much stronger than we were when we started. It’s been great to see just how much we’ve progressed over the last couple of months.

The exercises are generally very straightforward; things such as push ups, inchworms, one-arm rows, squats, and lunges. Each exercise also has a really short, simple, well made video showing how to do it correctly.

Some days it’s a struggle to start a workout, but one of us can usually motivate the other to get going. It really doesn’t take very long, and we always feel good about it once we’ve actually done it. Our 2 year old son also enjoys joining in and doing his exercises with us.

Exercise bike

My secret weapon in my goal to hit my activity rings every day is my exercise bike. Back at the start of this adventure, with some fantastic advice from Matt Gemmell (you might see a pattern here), I picked up a relatively cheap stationary indoor bike. I primarily use it on the days I’m not doing a strength workout.


It’s so easy just to climb on and crank out some kilometers and burn calories. Even if it’s the end of the day and I haven’t hit my goal, it requires almost zero motivation or energy to just walk over to it, get on, and go. If I was relying on running as my daily exercise, I’d be very reliant on the weather and whether I even feel like getting dressed in the appropriate gear and leaving the house. The bike reduces the barrier to entry, and I can’t recommend it enough. I can even prop my iPad on the console and watch YouTube or Netflix while I ride.

Get Fit With This One Weird Trick

If you’re looking to lose weight or get fitter yourself, hopefully this post has given you some ideas and inspiration.

My inspiration for this post, as well as for me to finally try to get fitter, was Matt Gemmell’s excellent post from a couple of years ago, Workout. Matt went through a similar journey, and the results he saw in six months are just incredible. I highly recommend checking it out.

Inspecting iOS State Restoration Data

State preservation and restoration allows iOS apps to save state when they’re sent into the background, and restore that state if the app is killed and then relaunched. If you’ve ever implemented state restoration yourself, you may have run into a case where it’d be helpful to see exactly what state iOS was storing.

It turns out that Apple actually provides a tool to help you do just this, but it’s kind of hidden away and documentation is relatively sparse. Fortunately, it’s pretty easy to use. When you run it, it’ll output a structured plist showing all of your encoded objects, their restoration identifiers, and restoration class information. Here’s a step by step guide.

Continue reading “Inspecting iOS State Restoration Data”