Widgetsmith 2.0

When I started out building Widgetsmith, I had originally envisioned it as a niche tool for power users. It is a rich toolbox with endless scope for customization and utility. What ended up happening was a complete surprise to me. It was instead embraced by a wide audience who use it to take control over their home screens and make their iPhone feel that little bit more ‘theirs’.

Widgetsmith is today getting a major update to how its core features work with the introduction of Widgetsmith 2.0.

Themes & Artwork

The original design of Widgetsmith put configuration of the aesthetic aspects of each widget on equal footing as purely functional aspects. You’d choose the text color in the same way as you’d assign the desired timezone location. This made sense in a world where the principal use case was utility. In a world, however, where Widgetsmith is primarily being used to add aesthetic flair to your home screen this approach leaves something to be desired.

So instead, in version 2.0 of Widgetsmith I’m introducing the concept of themes to the app. You can now choose from a wide variety of pre-built themes from within the app, each with its own distinct flavor and feel. These range from the simple, to lively, to seasonal, each giving your widgets a distinctive look.

But of course I wouldn’t want these change to reduce the real joy of Widgetsmith, which is making the widgets exactly yours. So each of these themes can be completely customized to your tastes. You can still change the fonts, colors and borders of each widget just like before, but the great thing is that now your changes can apply across all instances of a theme. This makes it super easy to update all your widgets at once as your mood or tastes shift.

Additionally, this shift has opened up another avenue for customization too, with the introduction of Artwork. I’ve begun working with top designers to provide a wide range of seasonal and fun borders and overlays for your widgets to give them that little extra pop. The first batch of these include a fall themes, with a Winter and Christmas batch coming around the corner. There are also more simple, geometric artwork types available.

In addition to the new theme based configurator I also have included perhaps my single most requested feature…an RGB/HEX color chooser.

Conclusions

I’m incredibly grateful for all the customers of Widgetsmith. Its success has been truly staggering to me. I never expected an app that I made to reach 10’s of millions of people, all around the world. I’m incredibly excited to keep making Widgetsmith better and better over the coming months with dozens of additional themes and updates planned. Stay tuned!

Widgetsmith is available for free in the App Store.

Some artwork and themes require a Widgetsmith Premium membership
David Smith




Request: Provide a non circular option for Extra Large Complications

The announcements of watchOS 7 have generally felt like Christmas Morning to me. As someone who has been working heavily with complications for the last few years, Apple resolved nearly all of my outstanding complaints for the platform. I can now implement nearly all of the ideas I have for watch display and do so in a more power efficient and clean way.

There was, however, one tiny lump of coal in my stocking. One of the many improvements to the complication system was the introduction of a new “Graphic Extra Large” complication. This is a modern update of the classic “X-Large” complication that allows for full color rendering and use of the new SwiftUI complication system.

I really like this watch face as it provides a large clear time and then a substantial canvas for complications…except in their current state in Beta 1 all the complications that are shown here must be masked to a circle. ☹️

This seems like a huge waste of the screen space of this watch face and limits what data types can be effectively displayed here. There are certainly many data that fit well into a circle, for example all the gauge based displays. But many data types just don’t fit well into this constraint.

As an example, here is a mock-up of a data type that I think would be wonderful on this face, but currently isn’t possible, Calendar.

There clearly isn’t a total prohibition against rectangular complications as the Modular faces received an ever larger canvas in this update…but it appears that for this face in particular there was a stylistic choice to only permit circular complications.

I have filed this desire as Feedback #FB7798509. Fingers crossed this might change in a later beta of watchOS 7.

David Smith




The Gentlest of Sherlockings

This week Apple introduced sleep tracking for the Apple Watch with watchOS 7. This was a day I’ve long expected since I introduced Sleep++ way back in September of 2015 alongside watchOS 2. I wanted to try out Apple’s approach for a few nights before I commented on what impact I think this will have for Sleep++.

In short, I think this will be an overall boost for 3rd-party sleep trackers and lead to a broadening of the Apple Watch sleep tracking ecosystem.

We call it ‘sherlocking’ when Apple takes a feature or capability of a 3rd-party app and elevates it into the main OS. The impact of this can take a wide range of forms. It can be utterly destructive and eliminate the market for the original app, or just as often, it can elevate awareness of the features and be a boon for developers.

Over my more than a decade of being an Apple developer I’ve personally experienced both ends of that spectrum.

For example, when Apple introduced 3rd-party keyboards I created Emoji++. Which provided a more intuitive way of finding emoji. A similar design was later adopted by the iOS keyboard and with it all interest in my app evaporated overnight.

But I’ve also had the opposite experience. When Apple added a motion co-processor with the iPhone 5S they provided no mechanism for reading the data it tracked. So I made Pedometer++ which was the first app to surface this step data to users. A year later Apple introduced the Health app as one of the built-in apps which included step tracking as one of its features. The net result was a dramatic up-tick in Pedometer++ usage and downloads.

What I saw happen with Pedometer++ was that by adding step tracking to the Health app Apple provided the most powerful marketing tool possible. They introduced countless users to the idea that they could use their iPhone to track their steps and that awareness then overflowed into the 3rd-party ecosystem.

So often the biggest challenge I face as an indie developer isn’t just making customers aware of my products, but making them even consider that the capabilities I provide are even things that their iPhone can do. When Apple takes on a feature and makes it a 1st-party experience they also take on the burden of that communication and educating customers about what is possible.

Often the experience Apple provides is tailored to support the widest possible audience, which by definition will work for most customers. However, there will always be customers who want more than a basic experience. Which is where the overflow to 3rd-party developers can begin. I hear countless stories of customers who started off tracking their steps in Health but then later switched to Pedometer++ when they wanted a richer, more powerful experience.

Having spent a while exploring Apple’s sleep tracking design I’m increasingly confident that I’ll see a similar effect this fall.

The biggest challenge I face in marketing Sleep++ is convincing potential customers that sleep tracking is even possible with an Apple Watch. They read an Apple Watch review with a long list of pros, but then always finish with “No Sleep Tracking” in the cons list.

I suspect this fall Apple will heavily market sleep tracking as a feature of the Apple Watch (and if I were to guess introduce a new sensor or capability with the Series 6 watches that makes it even better). Apple’s approach to sleep tracking that they announced this week seems to fall firmly in the “designed for a wide audience” bucket. It is thoughtfully designed and I’m sure their data analysis is first class, but there is only so far they will go.

My goal for Sleep++ is to provide approachable, intuitive display of your sleep patterns to help you make better sleep choices. For example, Sleep++ provides things like this advanced visualization of your typical nightly patterns:

This intuitive display of complex data is the main reason that I hear people like and stick with Sleep++ rather than one of my varied competitors. I believe this approach will continue to provide value moving forward.

If anything Apple providing 1st-party analysis will improve what I can offer by allowing me to leverage their advanced data collection into my own sleep analysis algorithms and improve the accuracy of my data. All the data Apple is collecting is stored in the Health app so I can start pulling it into Sleep++ and boost my own accuracy too.

I suppose a good summary of my expectation is that right now (say) 1% of Apple Watch wearers think to try sleep tracking. After this fall, most Apple Watch wearers will be aware of it and (say) 50% will try it out. Apple’s approach will be sufficient for 90% of them, but 10% will want more. Leading to now 5% of Apple Watch wearers looking for a 3rd-party app to augment their experience…so I end up way ahead overall.

This is entirely speculative and it is possible that the market for Sleep++ will completely evaporate, but I’ve been doing this for long enough and have seen this pattern repeat itself often enough that I really don’t think so.

I suppose you could say I’m not losing sleep over it (sorry I couldn’t resist).

David Smith




Building Maps for watchOS and Watchsmith 1.3

WWDC 2020 is right around the corner and with it we will likely see the introduction of watchOS 7, but I’m not quite finished with watchOS 6. Today I’m rolling out Watchsmith 1.3. Which includes a completely custom mapping system which brings interactive, dynamic maps to watchOS.

Since the first Apple Watch a built-in Maps app has been included with watchOS. This provides turn-by-turn directions and point-of-interest search. This functionality, however, isn’t available for 3rd-party apps. For us all we have had a basic map component that provides for static display of a map with optional pin annotations.

These are useful but limited in their capability. So once I wrapped up my major work for Watchsmith I left myself a little ‘dessert’ project to see if I could leverage the capabilities in watchOS 6 to build my own fully dynamic mapping system. My goal was to provide something comparable to what customers would be used to on iOS, with full interaction, dynamic zoom, and rich overlays. I wasn’t aware of any other app that has done this so I wasn’t really sure if it would be possible.

I was delighted to eventually to get this to work, which is a testament to the great work the watchOS team has done with bringing SwiftUI to the Apple Watch. Even more exciting is that this can run smoothly on a variety of Apple Watch hardware (including the Series 3).

Radar Map

The first place I then took this new capability was to add interactive weather radar. This augments the existing forecast displays with a visual view of the weather. You access this in the Weather area of the app and it provides an animated view of the last hour’s precipitation. You can pan this view by swiping your finger, use the Digital Crown to zoom in and out, or double tap to quickly zoom in.

This is showing data from the RainViewer system which has some of the best global coverage I could find.

Live Workout Map

I’ve also now added the ability to view a live map showing your current position during outdoor workouts. This is includes a route track showing where you have been so far. This view also indicates your current direction of travel.

Workout Route Map

For any workout that includes route tracking (whether recorded in Watchsmith or not) I now also show you a full map of your path. If you tap on the summary map you can then also get a fully interactive version should you want to zoom into any part of it.

Conclusion

I’m really excited that things like this are now possible on watchOS. For so long I have felt that there were so many ideas I had for features that simply weren’t possible to create on watchOS.

Getting mapping to work has been a delightful departure for this kind of limited thinking. It is clear to me now that I am only limited by my imagination not by my tools anymore. I suspect this will become even better in watchOS 7, I can’t wait.

Watchsmith in the App Store.

(Radar Map, like all weather data display, requires a Premium subscription)

David Smith




Choosing Fitness

Today I turned 37 and I am the strongest I have ever been.

I can say that with certainty, because this morning I tested my deadlift and lifted 300lbs, which is the heaviest weight I have ever lifted in my life, ever.

I’m not much of a ‘fitness is something that starts in the gym and ends up on your social media’ kind of person, but this milestone is very significant for me as the culmination of a three year long journey. I think I’ve learned a few lessons from this experience that I wanted to share in the hopes that they might be useful to someone else. None of these are particularly ground breaking but they the honest assessments of where I’ve done well or poorly over this process.

I find it really tricky to talk about fitness. It feels so hard to not come across as boasting or insensitive, so please know that’s where I’m coming from.

Three Years Ago

Three years ago I decided that I wanted to take my health and fitness seriously. I was 34, and while in good health I was beginning to feel the effects of age. I could get away with not really working out or being too thoughtful about what I ate in my twenties, but as I entered my mid-thirties this lack of intentionality was perceptible.

Mostly in small ways. Like how I’d feel after running up the stairs, or helping a friend move a couch, or over indulging at a meal. But I didn’t like where this path would end up leading me, so I decided to change.

For me this looked like starting to go to the gym 5 times a week and becoming more conscious of my diet. The result is that 3 years later I am in the best shape I have ever been. Better even than when I was 18 and ran cross country.

Here are a few assorted notes from along the way.

Find something that you will consistently do

The more I have gotten into fitness, the more I am aware of the incredible diversity of methodologies, approaches, gyms, influencers and media there is in the fitness space. Deciding on a direction is incredibly overwhelming.

The key thing I have found is that is more important to find something that you will do consistently than it is to find the ‘perfect program.’ The results from a good program, followed consistently, will always outpace the result of a great program followed intermittently.

The fundamentals of change in fitness are universal. If you want to get strong, you must lift things that are heavy. If you want to get flexible, you must stretch your muscles. If you want to get endurance, you must raise your heart rate. If you want to acquire new skills, you must practice. If you want to lose weight, you must eat fewer calories than you burn.

There are meaningful differences between programs, but they vary in terms of the coefficients of your change, not the fundamentals. So find a program you will follow that is honest about the work you need to do in order to get the results you desire, and then don’t worry about if it is perfect.

Set Goals

The reason today was such a big milestone for me personally is that a 300lbs deadlift was the last of the five goals I set for myself when I began working out in earnest.

My whole life I’ve been thin and scrawny. My body type is the classic distance runner. Which was useful when I ran cross country, but if I’m honest I never really liked. I used to say that I was ‘wiry’ to make myself feel better, but to tell you the truth I was weak, and I didn’t like that.

Goals are a powerful framing tool, to help you navigate towards the desired end state. Three years ago I set out five goals for myself, in five different areas of fitness.

  1. Run a sub-6 minute mile (Short Endurance)
  2. Complete Murph1 in less than an hour (Long Endurance)
  3. A bodyweight clean-and-jerk (Technique)
  4. A 200lbs clean (Power)
  5. A 300lbs deadlift (Strength)

Over the last three years, I’d reached all the others, but raw strength has always been my sticking point. But I set it as my goal and then worked towards it.

I will say that I have found that the best kind of goals are the ones that involve a ‘transformation’ - where you are looking forward to something you want to be able to do but can’t now. All of my goals involved an end state that, while desired, felt almost impossible when I started. What is great about that kind of transformational goal is the sense of pride you feel when you attain it. It is incredible. You are literally doing the impossible and that just feels cool.

Additionally, I have found it helpful to have an ‘emotional’ goal as well. Something that tugs at my heart and helps me through the challenging times in the gym. For me that is the thought of picking up my daughter (8) in my arms. Every morning, whenever she first sees me, she runs towards me and leaps into my arms. She has done this since she could first run. I want to remain fit and strong enough so that for as long as she wants to do this I will able to catch her. I never want to have to say “Oooph, sorry my love, but you’re getting too big for this.” The feelings and emotions that pierce me if I think of having to say that have gotten me through many a tough workout.

These types of transformational and emotional goals are in contrast to the kind of goal that is doing more of something you can already do. For example, setting the goal of running three 5K races in the summer after you run your very first one. This might be a good means to motivate you in the day-to-day, but I personally struggle to have goals like that really drive me. I’m not different at the end of it, just more of the same.

Similarly I’m not the kind of person who is really motivated by streaks. I can see how they are powerful for some personalities, but for me the challenge is always that once I miss a day then all the past work feels somehow worthless. In contrast, a transformational goal is entirely built on steady progress over the long term, where missing a day or week doesn’t matter overly much.

Don’t get hurt

While perhaps an obvious thing to say, avoiding injury has turned out to be one of the most important lessons I’ve learned about fitness. Yet nearly everyone who starts taking their fitness seriously will inevitably encounter it at some point. But it doesn’t have to be the inevitable result of exercise.

The best bit of advice I ever got on this was from a coach who would always introduce heavy lifting days with the phrase “Be Ambitious, but Not Greedy.” That so clearly summarizes the mindset that makes progress but avoids injury. You want to work hard, do the difficult work of improvement, but do so in an honest, humble way. Greedy exercise involves taking our abilities for granted and letting our ego make decisions for us.

In my own experience, injury occurs when “Capability exceeds Preparation.” You get hurt when you are physically capable of something (otherwise you couldn’t have performed the action that hurt you), but you weren’t ready to do it. This can be in the micro, like failing to adequately warm-up. Or this this can be in the macro, where you are not listening to your body and overworking yourself.

The tyranny of relative change really hurts us here. If we take a step 10% backwards by getting injured, we don’t have to do 10% of forward work to catch up for it. We have to do 11% more, just to break even again. But, if you only ever takes steps forward, no matter how small, you will always be getting closer to your goals.

Variety

Another essential aspect I’ve found is that it is really important to have variety in your workout program. Both for your interest and motivation, as well as to help you avoid injury, doing lots of different things is highly desired.

Before I started exercise, I did what I think every legal disclaimer at the start of a workout video says and I “Consulted my Physician.” He said something that I have kept in the back of my mind the whole time.

“You only have so many repetitions in each of your joints, so the more you can spread out the load on them, the better.”

Before my current regime I would run, just run. This worked fine when I was a teenager and into my early twenties, but eventually my knees and hips started to hurt. So I’d stop running for a while, then when I’d start again they’d feel good for a time, then again they’d hurt, and the cycle would continue. This was unsustainable and unproductive.

Instead, what I do now is seek out exercises that are widely different and complementary. I might run one day, lift heavy another, do HIIT the next, and so on. This is better both for my enjoyment of the activity and has been dramatically helpful for keeping my joints happy.

For me, I have found that following a program with this built-in is really helpful (with something like CrossFit), but just about any approach judiciously mixed up will do.

Recovery is more important than intensity

I remember listening to a fitness podcast early on and being stunned by someone observing that lifting weights doesn’t make you stronger, indeed each rep actually makes you weaker…it is recovering from lifting weights that makes you stronger. This is a subtle but essential distinction to make.

I have found that I can crush it in the gym, but if I don’t take care of myself in my life, all that work isn’t actually doing me much good. I need to sleep well. I need to stay hydrated. I need to eat well. I can’t out-exercise a poor lifestyle.

Thankfully I have found that there is a virtuous cycle between working out and a desire for healthy choices more generally. If I make poor sleep or food choices the night before working out, my performance will be affected in a tangible way. I will feel sluggish, weak and not able to do what I am typically capable of. This is an awful feeling, and after experiencing it enough times I found that if I draw this connection consciously I am much more likely to make good choices each night.

Comparison is Poison

There will always be someone faster than you, someone who is stronger than you, someone who has a better body than you, someone who is more athletic than you. This is universal and both depressing and freeing at the same time.

When I first started going to the gym I found myself constantly comparing myself to the other people there. This never led me anywhere useful. Everyone of us is on our journey and has a different body.

We tend to assume our own strengths and be embarrassed by our weaknesses. If I can run better than someone else then I just chalk that up to being built like a runner…but if someone else is stronger than me that’s because I’m weak. Neither is particularly helpful. We cannot control other people, or how they rank compared to ourselves. We can only be better than our past self - that is something we can control.

Fitness Tracking with the Apple Watch

Of course I couldn’t finish this discussion without mentioning the Apple Watch. It should come as no surprise there has been a steep increase in my interest in health and fitness app development over the last three years. This is no coincidence. I have found that the Apple Watch is a really compelling tool for assisting me in reaching my goals.

This comes in several forms. The most straightforward of which is the “Observer Effect” - simply by measuring something we perform better at it. If I go out for a run and just start running, or instead I hit “Start Workout” on my wrist, the later case will result in a better run. There is something deep down in our brains that just works harder if it knows it is being watched.

This reminds me of the experience I’ll have at the gym if a coach walks past me. All of a sudden my form gets better, my pace increases and I feel more capable…just by being watched. The Apple Watch is a smaller version of that feeling that we can have with us all the time. It can always be there to watch and observe.

I’ve also found it to be really helpful to have a objective measure of my performance. This can take both sides. Either I can be encouraged by how tough this workout feels is being proven out in my heart rate or pace. Or alternatively, I can look down at my wrist and see that I can push things a bit further. In both cases I can do better because I’m not basing my choices purely on how I feel, which can often be misleading in the moment.

I also have found that I just love making this kind of app. The countless stories I have received from users of Pedometer++, Activity++, Sleep++, Workouts++, and Watchsmith are really incredible. Stories of how people are using my apps to help them on their own fitness journeys. That is more impactful than any other kind of work I’ve ever done.

Straightforward but not Easy

Writing this kind of thing feels a bit weird. I don’t want to be preachy, I don’t want to be boastful, I don’t want to make anyone feel badly. My goal is quite the opposite. I know that if I’d read this myself a few years ago I would have very mixed feelings about it. “Oh that’s great for him, but that’s not for me.”

I overcame my reticence to write this with the thought, however, that for someone it might land the other way. That if an un-athletic, scrawny programmer can double his deadlift and become strong then maybe so can they.

The most universal truth I’ve found is that fitness is “Straightforward but not Easy” - anyone who says otherwise is trying to sell you something. It takes deliberate, intentional, challenging work, but the process is reliable. If you want to get strong, pick up heavy things. If you want to change your body shape, eat better. If you want to have endurance, get your heart rate up. If you do, you will see the result. It won’t be easy but it will happen.

  1. Run 1 mile, Perform 100 pull-ups, 200 push-ups, 300 air squats, Run 1 mile. Partitioned as desired, all while wearing a 20lbs weighted vest.

David Smith