Under the Radar

175: Moon++


00:00:00   Welcome to Under the Radar, a show about independent iOS app development.

00:00:04   I'm Marco Arment.

00:00:05   And I'm David Smith. Under the Radar is never longer than 30 minutes, so let's get started.

00:00:09   So, I hear you have yet another new app.

00:00:12   I do.

00:00:13   I'm so surprised.

00:00:15   Well, you know, I feel like it had been a while since I launched my last one.

00:00:19   Well, I feel like, you know, you have two frequent hit points that inspire you to make a new app.

00:00:26   Point number one is when, you know, if it's a watch app, if you figure out something you can do on the watch,

00:00:31   because you're super into watch development.

00:00:33   Point number two is if there's a new hardware capability of the new generation of devices.

00:00:40   And in this case, it seems like those have both hit here.

00:00:44   You found something new to do on the watch, especially, you know, even in the area of something like API-level stuff,

00:00:49   and also the Series 5 watches added a compass, which no one can really figure out what to do with,

00:00:55   but you figure out something to do with it.

00:00:57   Sure.

00:00:58   Yeah, so I guess I'll sort of dive into a little of the back story of this.

00:01:02   So, one of the things that--so when all the reviews came out for the Series 5 Apple Watch,

00:01:11   I was just--I watched lots and lots of review videos and saw lots of reviews,

00:01:14   and in most of these, there is a picture of the new California face with the moon complication in sort of its bottom slot.

00:01:24   Its main slot.

00:01:25   And I was like, "Did it kind of look cool?"

00:01:28   And I was like, "Well, I'll try that out."

00:01:29   So I set that as my main complication for a little bit, because the Series 5 watch,

00:01:35   what you choose as your watch face and what your complications are is now suddenly something that's a bit more--

00:01:40   I'm trying to be a bit more thoughtful of, because it's constantly visible to the world and to me all the time.

00:01:46   And so I tried that out, and then that evening, I go out--that morning,

00:01:53   I went out and looked at the sky and looked at the moon.

00:01:57   And then I looked down at my wrist, and then I looked at the moon, and the two weren't the same,

00:02:02   which bothered me a lot, because here I have this watch that is incredibly powerful and capable,

00:02:10   has a GPS coordinate, it's able to--I could model the entire solar system with the computational capabilities of this watch.

00:02:17   And here I have this complication that's a picture of the moon that doesn't look like the moon that's directly in front of me,

00:02:23   like up in the sky.

00:02:25   And when something like this bothers me, I have a tendency to not be able to let it go very easily.

00:02:32   And so I then embarked on a week-long journey down astronomy and all kinds of weird math,

00:02:40   some of which I understand, some of which I have no idea about but can just apply the formula.

00:02:45   In terms of creating an astronomically accurate moon complication.

00:02:51   And so that is what I've done.

00:02:53   It is available now in the App Store, and in addition to just being something that now has scratched a niche

00:02:58   and solved a problem that I had, I've for a while been looking for an opportunity to make a watch-only app,

00:03:05   to use SwiftUI, and then like you said, to use the compass in the new watch,

00:03:11   as well as just make folk thinking a lot about watch face and complications as they relate to always-on-watch face.

00:03:20   And so that's sort of the origin of this thing.

00:03:22   And I've got to say, it was just a ton of fun in learning something completely new.

00:03:28   I knew nothing about all these weird astronomy terms that I've had to learn about.

00:03:33   And things that are kind of my intuitive thought about how the moon looks and how it moves through the sky,

00:03:42   that you kind of like, I've looked at the moon my whole life.

00:03:45   And I think in my mind though, you kind of have in your mind that the moon is always straight up and down.

00:03:54   So for the simplest, say you imagine the moon in its crescent phase,

00:04:00   where it kind of looks like a C. In my mind it should always look like a C.

00:04:06   But it actually kind of rises, at least in the northern hemisphere, or if you're in the northern parts of the world,

00:04:12   it rises like a U, turns into a C, and then turns into an N, all over case.

00:04:17   Oh, like it rotates around its, like, ah, okay.

00:04:21   Which makes sense intuitively if you imagine that it's moving along a circle,

00:04:27   and its midpoint is sort of locked onto that circle.

00:04:33   And so if it didn't rotate, you know, from a U to a C to an N,

00:04:39   it would have to be like turning itself along that circle as it went.

00:04:44   Because otherwise, like, it just wouldn't work.

00:04:48   If you take your hand and make a C shape and move it in a circle, that's what happens.

00:04:53   And there's a bunch of math you can do to work out what that looks like, but that's all that's happening.

00:04:59   But here I am, you know, 36 years old, looking at the moon my whole life, and I've never really thought about that.

00:05:05   That's how the moon has to move, that when it rises, it tends to rise in that kind of,

00:05:11   sort of U shape, and then comes up to the C.

00:05:15   And usually that's just not something you think about, but that's the way it works.

00:05:20   I wanted to make an app that did the math to work out based on your GPS coordinate,

00:05:24   because the degree to which it's rotated and the way it looks to you is impacted by your latitude,

00:05:30   it's impacted by the declination of the moon, which is where the moon is relative to the equator.

00:05:37   So the moon isn't actually always directly above the equator, it oscillates up and down along the equator,

00:05:43   and so that's part of it, and there's all kinds of these cool little math things that you have to do.

00:05:48   So it was fun to kind of just dive in, learn just enough to be dangerous, just enough to do the math so I can rotate it.

00:05:56   I will say testing this has been really kind of slightly comical, because A, it's like,

00:06:04   I can just go outside and look at it, but then you have to adjust for what is it like in the southern hemisphere,

00:06:10   or what if you're in different places or different seasons.

00:06:14   Thankfully there's a whole bunch of different resources online that I can simulate different places in the world,

00:06:19   and then in my code I'll say, "Well, what if I was in Sydney and looking at the moon right now,

00:06:24   what would that look like?" And so I can kind of test it, but it is an amusing kind of quality assurance.

00:06:29   And in some ways I did feel a bit funny launching it before I was able to test it for a full month.

00:06:37   Yeah, I was going to say, the lunar cycle, the Apple Watch Series 5 has not been out for a complete lunar cycle yet.

00:06:44   No, which is slightly funny. Thankfully, the way the app works is it lets you preview the moon's cycle with a digital crown.

00:06:53   So if you swipe, if you roll the digital crown back and forth, it'll time shift through time,

00:06:59   so you can preview what the moon will look like at different points in time.

00:07:02   And so I can just kind of assume that as long as that logic is reasonable, that the actual,

00:07:08   as time goes on it will still continue to work and look reasonable.

00:07:12   But that is kind of a funny thing that I realized. It's like, I've only ever seen the app in real life

00:07:17   as a waning crescent, a new moon, and then now a waxing crescent.

00:07:22   And so it's like, I hope it works for the gibbous moons and the full moon and all the other parts of it.

00:07:29   But it's kind of a funny QA problem.

00:07:32   That's pretty cool. I also like, I love this, like, you know, so as everyone knows, I'm a watch nerd,

00:07:37   and there are moon phase complications on real mechanical watches.

00:07:42   And all they can do though, because they don't know your location, you know, so I mean maybe,

00:07:48   there have been occasionally watches that will do some things like sun art and sunset calculations

00:07:53   that you have to basically tell the watchmaker who's making it where you are,

00:07:56   and they like adjust the gears and stuff to match your location.

00:07:59   And if you ever move, you have to send it in for service to get it changed.

00:08:02   But you know, for the most part, you know, most watches don't know your location

00:08:07   and can't compute things like that.

00:08:09   So you know, the moon phase complication on most watches doesn't have it properly rotated and everything.

00:08:14   And this is one thing that like, the Apple Watch is great for things like this,

00:08:18   because it's a computer. It knows so much about you.

00:08:21   It has so much capability, and it can do cool things like this.

00:08:25   It's exactly the kind of little detail that Apple should be doing with their own built-in stuff.

00:08:29   Like, Apple's built-in moon complication should already be doing this.

00:08:32   Like, they should move past what physical analog watches can do,

00:08:36   and do like the smart computer thing, because they can.

00:08:39   Because you know, they're never going to be a good analog watch.

00:08:41   So they might as well be a really great computer watch.

00:08:43   And the fact that they didn't do it is on them. I'm just so happy that you did it.

00:08:47   It's just so cool to have this, because now you can have a good moon phase complication

00:08:52   that does things that an analog watch moon phase can never do.

00:08:56   Yeah, and it's fun I think too that one of the things they changed in WatchOS

00:09:00   that made an app like this feel more even approachable for me,

00:09:04   is that in WatchOS 6 we can now just do watch-only apps.

00:09:07   And like, this is a perfect example of something where it makes sense to do an app like that.

00:09:13   Where I really didn't want to have to make an iPhone version of this app.

00:09:18   Because it's not really what it's about. Like, I made this app for the complication,

00:09:22   and fair enough I have to have a watch app to back that up.

00:09:25   But then having to also make an iPhone app, like that seemed a little annoying.

00:09:30   I'm not sure I would have... It would have felt like I was biting off more of a problem

00:09:35   if I had to do that as well, and come up with a good design for that.

00:09:38   And have a design that works for the Pro Max phones down to the SE phones,

00:09:43   and do all that kind of stuff.

00:09:45   It's just like, that's way more challenging than building a watch app.

00:09:49   Because intrinsic to a watch app is that it's so limited because the screen is so small.

00:09:54   There's only so much we can do, though we can do more now with SwiftUI,

00:09:57   which I'll get into in a minute.

00:09:59   And so anyway, that was just kind of a nice part of it too.

00:10:01   And it's cool, and I will say, and this is something I think we speculated a bit about

00:10:05   when we were talking about the new watches.

00:10:08   Like, I just love seeing this now on my wrist.

00:10:12   And it feels cool to have this kind of personal connection to my watch face.

00:10:17   And it's always on, it's always visible.

00:10:20   And that's just a cool thing about having more customization and more flexibility with watch face design.

00:10:28   I think it's just a lovely aspect of the watch that I think there's been not as much exploration of it.

00:10:34   That Apple try, they keep trying, but I feel like they just keep slightly missing.

00:10:43   And I'm enjoying the thought and the process with this, as well as a few other ideas that I'm kicking around

00:10:50   of pushing out what we can do there.

00:10:53   Because when it's right and it's cool, I love that right now in the morning,

00:10:58   when I look at my watch, the moon looks one way,

00:11:01   and then as the day progresses, it sort of slowly rotates inside, and I know what's happening there.

00:11:05   Like, that's cool, and that's personal, and it makes me feel more connected to my watch, which I like.

00:11:10   We are sponsored this week by Linode.

00:11:12   With Linode, you can instantly deploy and manage an SSD server in the Linode cloud.

00:11:16   You can get a server running in just seconds with your choice of Linux gesture, resources, and node location.

00:11:21   Linode serves their customers with the help of 10 data centers across the globe,

00:11:25   and they're always adding more.

00:11:27   So Mumbai, India, and Toronto all will have data centers by the end of the year.

00:11:32   Linode features native SSD storage, a 40 gigabit network, and Intel Xeon E5 processor,

00:11:38   so you can serve your customers even faster than before.

00:11:40   And, so you don't have to stress about overspending, Linode has designed their pricing tiers

00:11:44   to feature hourly billing with monthly caps on all plans and add-on services,

00:11:49   including their backups and the node balancers and everything else they offer.

00:11:52   So Linode has pricing options to suit everyone.

00:11:55   Their plans start at one gig of RAM for just $5 a month,

00:11:59   and they offer high memory plans starting with 16 gigs of RAM

00:12:02   and a bunch of other specialty things from there.

00:12:04   I got to say, I use Linode for all of Overcast hosting, and I absolutely love it.

00:12:08   I have about 25 servers there right now, from the super small ones to super big ones,

00:12:13   all across the whole spectrum. I just love what Linode has to offer.

00:12:16   And they have a special offer for you.

00:12:18   As a listener to this show, you can go to Linode.com/Radar

00:12:21   and use promo code radar2019 to get $20 towards any Linode plan.

00:12:26   On the one gig plan, that could be four months for free.

00:12:29   And with a seven-day money-back guarantee, you have nothing to lose.

00:12:33   Give Linode a try today. That's Linode.com/Radar and promo code radar2019 to learn more,

00:12:39   sign up, and make the most of that $20 credit.

00:12:41   Our thanks to Linode for their support of this show and all of Relay FM.

00:12:45   So the other thing that was kind of fun about this is that I got to use SwiftUI for the first time.

00:12:50   Which I think in many ways I would highly recommend that if you want to learn SwiftUI,

00:12:55   doing it on the watch is good and it's bad.

00:12:58   It was great in that it was a nice constrained problem.

00:13:02   It's kind of a place where it is worth the overhead and the headache of SwiftUI

00:13:08   because compared to WatchKit, it is so much better.

00:13:12   But it's definitely a bit awkward because WatchOS development is a bit awkward.

00:13:16   But I've got to say, it was really cool to use and compared to WatchKit, it is night and day.

00:13:22   It is amazing. I can do animations and make things interactive and visually rich

00:13:29   and all these weird things that I'm not having to do these weird hacks for.

00:13:34   I can have a much more flexible and fluid thing.

00:13:38   It was just so amazing given the number of hacks and the weird things I've had to do in the past

00:13:43   to make any kind of animated or interactive watch app.

00:13:48   Being able to just do these things natively has been amazing.

00:13:53   Most of what I've done at some point, a lot of what my previous WatchOS apps,

00:13:58   at some point I pushed the limit of WatchKit to a point that I can't get what I want.

00:14:04   And what I end up doing is in Core Graphics, I render UI images and I just keep updating them onto the screen.

00:14:12   I essentially build my own entire UI layer out of Core Graphics.

00:14:17   Once a second or whatever, I change the display on the screen, which is terrible.

00:14:25   It's not something that anyone should do. Don't go down that road. It was a terrible idea.

00:14:30   But you had to.

00:14:32   Yeah, that was all we could do. And now in SwiftUI you don't.

00:14:36   Which means that we also get great things for free. Basic animation.

00:14:41   You have an object on the screen and you move it to somewhere else.

00:14:45   It smoothly animates at presumably 60 frames a second between those two.

00:14:50   Whereas before, the best I could do would be update it a couple times a second maybe

00:14:55   and have this 3 or 4 frames per second animation to move things around.

00:15:02   Which was not great at all.

00:15:05   And it interacts properly with our digital crown and is flexible between the different watch sizes.

00:15:11   I've got to say, SwiftUI on the watch is amazing for what it allows now.

00:15:18   It is still a pain to work with, I've got to say though.

00:15:21   Is it just because it's young?

00:15:24   I think so. The two things that really stuck out to me as being just annoying.

00:15:30   One is the documentation for it is very sparse.

00:15:36   Given the state of all of Apple's recent API documentation, I'm not surprised sadly.

00:15:42   But it's to the point, most of the documentation you go to on Apple's page,

00:15:48   you just get the method signature with no text, no explanation.

00:15:54   And a lot of the way that SwiftUI is composed with the way methods are sub-classing or extensions or those types of things,

00:16:08   it's hard to work out what methods you can call on what objects or what customizations will work and what right things.

00:16:16   And trying to work that out is ultimately just trial and error.

00:16:19   You just go into Xcode and try it and see if for this particular type of view,

00:16:25   if you can apply this particular kind of property.

00:16:28   And sometimes you can, sometimes you can't, but mostly you're just guessing.

00:16:31   And the other thing is just the integration with Xcode is just very problematic.

00:16:40   And I'm not even talking about--

00:16:42   I gave up. The first day I tried to use the live preview thing that they have where I booted up into Catalina so that I could use that,

00:16:52   and that was just painful.

00:16:55   And ultimately, it's kind of a cool thing, and I could imagine when that works, it being really cool and flexible.

00:17:01   But most of the time what I found is because it's trying to happen in real time,

00:17:06   it's also trying to happen while you're compiling your app.

00:17:10   And so you always have the classic thing of can you type faster than the compiler can finish,

00:17:15   because otherwise you end up with this weird case where you've half implemented a method or a function or whatever it is,

00:17:22   and then it gets a compiler error, which fair enough, that's true.

00:17:26   But eventually what kept happening is it seemed like it would crash the preview and then I'd have to restart it.

00:17:31   And so ultimately I just went back to the old standby that works great.

00:17:35   It's just a very tight build and run cycle that I just kept-- I would make a change, build and run,

00:17:42   and if I'm doing this on the simulator, it was nice and speedy and worked nine times out of ten pretty well.

00:17:50   And so that worked reasonably well. I would say stay away from previews, at least at this point on the watch.

00:17:56   It just wasn't worth it.

00:17:58   And then the other thing is the error messages you get with SwiftUI, if you mess something up, are just--

00:18:04   Yes.

00:18:06   I don't even know. They're not error messages. They're not in any way descriptive of what the actual problem mistake you made.

00:18:13   The line of code that it points to as being the problem is never the actual line of code.

00:18:20   Other than syntax errors where I mistyped type something or had the wrong symbol,

00:18:28   unless it was that kind of an error, that was never the line.

00:18:32   I went-- it's like the old debugging scheme where you have lots of print statements.

00:18:38   For SwiftUI, the debugging scheme when you have a weird cryptic error message is you just start commenting out code

00:18:44   until you isolate-- it's sort of like you're doing this binary search of like,

00:18:48   "If I comment out the top half of this function, do I still get the error message?"

00:18:53   Okay, I do. So then I need to-- then the next half and the next half, and eventually you find the line of code

00:18:59   that when you comment it out, the error goes away. And that's the best you can do at this point.

00:19:04   And most of the time the error message is something just very strange, like, "Can't convert void this into open and close parentheses."

00:19:13   And you're just like, "Okay." It turns out it's actually that you call the method with the wrong value,

00:19:21   or things that are normal errors that you will make in your development.

00:19:28   And I got a bit better after the course of a week of using SwiftUI, of guessing what the error was based on how cryptic it was.

00:19:36   But I gotta say, the tooling for this needs to come a long way before it kind of feels worth doing.

00:19:44   I don't think on iOS at this point. I would recommend going down this road because UIKit is just--

00:19:49   it can do everything that SwiftUI can do, whereas-- versus like WatchKit, which just can't do these things,

00:19:57   so it isn't worth it. And at least with UIKit, the error messages are reasonable, it's very well documented,

00:20:04   there's lots of examples, there's lots of places that you can go to get help. If you have something weird happen,

00:20:09   UIKit is not without its bugs and its quirks, but I feel like they're fairly well understood.

00:20:15   I know what's going wrong with UIKit, whereas with SwiftUI, sometimes it was just like, "I don't know what's going on."

00:20:23   Yeah, SwiftUI, I think a lot of this is just because it's so young, and I expect a lot of this will be fixed over time,

00:20:30   but there's also a substantial discoverability problem with, as you mentioned earlier, like, what can it do?

00:20:38   What methods can I call on this object? There's a huge discoverability problem there, and the almost complete lack of documentation is not helping here.

00:20:46   And then there's also, in the implementation of SwiftUI, as basically a DSL inside of Swift, which is itself a very, like, you know,

00:20:56   compiler, complex, syntactically complex language, you know, adding a DSL on top of that makes the tooling even more complex,

00:21:04   and it makes it so that I'm not sure it's ever going to be possible to have really great error reporting, like, by the compiler.

00:21:13   I think it can certainly be improved from where it is now, but unless there is some significantly deeper integration with SwiftUI being, like, special-cased in Xcode,

00:21:23   and how it handles things, and how the compilers report errors and everything, it's going to be hard to ever make a lot of these things more useful,

00:21:29   or more intuitive, or nicer, and more friendly. SwiftUI, it's always going to have this problem of, like, it is visually very pleasingly simple.

00:21:39   Like, when you see SwiftUI code, you're like, "Wow, that's so beautiful!" But writing it is a different story.

00:21:44   Writing it is, you know, especially when you aren't that familiar with it yet, you can know Swift, and you can know UIKit,

00:21:51   and those things are not very helpful here, because it's a totally different language, and, you know, it's a language inside of Swift,

00:21:57   and I think it's just going to, there's going to be, I think, a certain ceiling of how friendly it can ever get.

00:22:03   And we're nowhere near that yet, but I think it's always going to be more complex than it appears to be when you see code on slides.

00:22:13   Probably, yeah. I think that's just the nature of these kinds of things, like, when it works, it's magic,

00:22:19   and in my experience, any programming environment or philosophy that has that kind of, like, when it works, it's magic thing,

00:22:28   like, when it doesn't work, it's terrible. It falls down very hard and aggressively, but when it works, it's amazing.

00:22:36   And so that's just kind of, I am slightly hopeful, I'm just thinking of back in the day where, with Objective-C,

00:22:42   all of the work they were able to do with the static analyzer, and how they were able to pull things out of the code

00:22:51   that weren't just, like, compiler, like, you could use what the compiler knew to make lots of inferences

00:22:58   and help give you, you know, these very clever, I'm thinking even back before automatic reference counting,

00:23:05   like, back in those days where it could do some really clever things, and I'm hopeful that, like,

00:23:11   they could do a similar thing with SwiftUI where they can give, they can infer what is, like, right now,

00:23:18   what's happening is we're getting the, like, the actual compiler messages that are just, like, just from the Swift compiler.

00:23:25   And I would hope that eventually we could get to a place that there is, like, the Swift compiler,

00:23:29   and then there's, like, the static analyzer that is running on top of that to look at what's, like,

00:23:34   look at the, when I get this error, like, what does this actually mean? And in some ways, like, maybe it can do the thing that

00:23:40   I'm doing where I'm, like, commenting out code to, like, find the line that is actually causing the problem,

00:23:46   and, like, it can do that analysis very quickly, like, in real time where it just tries to remove different aspects of the,

00:23:53   of my code tree and says, like, this seems to be the part that is causing this problem, or who knows.

00:23:59   Like, they've gone down this road enough in the past that I'm hopeful, but yes, right now it's tricky.

00:24:05   Yeah.

00:24:06   And I guess the last thing I wanted to touch on is the, my experience using the watch app store.

00:24:11   Oh, yeah, because it's a watch-only app, so the way people are supposed to get it is by, can you buy it on the phone, or do you have to buy it on the watch?

00:24:17   Yes. Well, this is, I guess, so the first thing I wanted to, like, I, one of the main reasons I wanted to, like, make this app is

00:24:22   I had no idea how this process would work. Like, does it work with TestFlight? Can you, how do you sell it?

00:24:28   Can you link to it? Because, like, if, you know, if I have a link for the app, like, what does that mean on the watch?

00:24:33   There's no, like, browser on the watch? And so, a couple things. So it does work in TestFlight.

00:24:39   You can upload a watch-only app to TestFlight, and it, the process is basically the same for anything, and you just, in TestFlight, it'll just say, like, watch only, and you, you know, install it to the watch.

00:24:51   So that works just fine. On the iOS side, like, when you're submitting the app, it's everything you kind of would expect.

00:24:59   Like, the setup of the screen, like, it has, still has all the slots for, like, the iPhone screenshots and things, but they're not required.

00:25:06   So you only have required to set the watch screenshots. And then, once the app is out in the world, it shows up in both the iOS and WatchOS app stores.

00:25:18   You can buy it, and link, if you link to it, they'll obviously go to the iOS app store page for it.

00:25:26   And they can buy it there. And, in theory, I think what's supposed to happen, and I'm not sure if this is controlled by the, like, automatically install apps setting in the watch, uh, companion or not.

00:25:38   But I think what's supposed to happen is you buy it, and then it just shows up on the watch.

00:25:42   Based on my support queue, that is not always the case.

00:25:46   Oh, no.

00:25:47   In fact, that is often not the case. And you can end up with these very cryptic messages, and it's very inconsistent, and I've had, basically what I've had to do is tell a lot of people that what you do, if you bought it on your phone, is you go on the watch.

00:26:00   If it doesn't show up automatically, go to the app store on the watch, scroll all the way to the bottom, there's, like, an account area there, you hit account, and then you hit purchased, and then you should be able to install it from there.

00:26:10   And that works for most people. You can buy it on the watch itself. However, you really need to think through the name of what your app is.

00:26:21   Because people have to find it in one of two ways. They either have to scribble the words one letter at a time, and then they need to be able to actually scribble those letters, or they need to be able to say it out loud to Siri and have it take dictation.

00:26:38   The name I chose was Moon++, which turns out...

00:26:42   Oh, God, wait, let me try. Dictation. Moon++. Okay, it says and Moon++, and it brings up nothing. It brings up one thing that's in German.

00:26:53   That is not what you want. It turns out that what you have to say, if you actually want to search for it, is Moon plus sign plus sign.

00:27:01   That is the way that you correctly search for an dictation, which is not something anyone would intuitively think about.

00:27:11   So I've been spending all morning trying to come up with better names for these things.

00:27:16   Usually when you come up with a new name, you think about, like, is the domain available? Is there another app like this in the App Store?

00:27:22   I'm spending all morning just talking to Siri, saying things out loud, and seeing what it thinks I said, and trying to say it in weird ways, or playing music in the background, and then saying it, and seeing if it works.

00:27:34   So this experience is not great. But this is the early days, and I think the Watch App Store is a weird place, too.

00:27:43   Because right now, I think there's like eight or nine, maybe ten apps that are being featured, when you actually open the App Store. There's like ten apps there.

00:27:52   I imagine if you're one of those apps, good news. That's great. If you're not, you don't exist.

00:28:00   Do you think anyone's really going to this? I just scrolled through now. It's kind of a painful experience. I don't think anyone's really going to be doing this.

00:28:09   Maybe not. I don't know. But if you're a watch-only app, it seems like an important place to show up.

00:28:19   It's an awkward experience. I don't know if it's worth it. If I had just made an iPhone app, things would have been a lot simpler.

00:28:29   But I kind of like that I didn't have to. I think I just need to come up with a better name, test that name through Siri, and hopefully, too, there's a lot of things that seem to be complicated.

00:28:43   The series one and two Apple watches don't support watchOS 6 yet. So people who get these weird error messages that say they need to update their watch, but they can't update their watch.

00:28:56   Because watchOS 6 isn't available for those yet, but it will be at some point. At this point, watchOS 6 was released for the series 3, 4, and 5 watch, but it has not yet been released for the series 1 and 2 watch.

00:29:09   But they're not incompatible. They will have it. Just not yet for some reason. Just not yet. For whatever reason.

00:29:15   Oh, I love this rollout so much. So this has been my week. The customer support side has been a bit of a pain, but making a watch app has been a lot of fun. Making complications is my new favorite thing, and I'm going to be making dozens of these, I suspect.

00:29:30   And SwiftUI, the tooling is terrible, but the result is really good. That's my quick summary.

00:29:37   Awesome. Well, thanks for listening, everybody, and we'll talk to you in two weeks.

00:29:41   Bye.