New App Idea – Work Active

Not sure if I will keep the name, but I am really excited about a new app idea. It will be my second native watchOS app! My goal is to help people remember to do 5 minutes of simple walking an hour, during their work day. It can be as simple as slow marching in place, but the idea is movement.

I was listening to a NPR story this morning, about a study that they did with a university that showed the health impacts of sitting for 8-9 hours a day was very bad. And while I have a standing desk, that actually is not as healthy as you’d think. Standing for 2 hours a day can lead to blood clots and other health issues.

The most impactful thing you can do, is take a five minute, slow walk, once an hour. Even sitting, if you shuffle your feet, you can have improvements.

So I am noodling what I can do to make this a simple, one time purchase app.


Now I just need a great UI!

Slow but Steady Growth for Vinyl Trackr!

A few weeks back I released an app I’ve been working on for over a year. It is a privacy first Vinyl Trackr, meaning all the data is yours, and it is only stored in your iCloud for syncing across devices. If you don’t have iCloud setup, it will only exist on your device (thanks to the magic of SwiftData!).

So far I’ve only gotten one review, and it made me sad, since the person had bought the app to “Share” with his wife. He installed and then wondered why she couldn’t see the data on her device. I am guessing it was not clear what I meant by private.

While this is disappointing, I am happy to report that a few more people have bought the app, and I am hoping that my next update will expand the base even more. (As an indie developer, any reviews have a huge impact to the reach of my apps).

I spent a lot of time trying to make sure that the app scratched my personal itch, and watching where the purchases are coming in form. The data shows that more interesting is coming from France and Germany, so those will be the first two languages I expand the app to.

I released an app a year ago that does internationalization, so I am hoping that it will be good enough to help me gain additional traction in those markets.

Two Weeks Out, and Excitement is Building

It’s two weeks until all the detailed videos for developers will be made available during Apple’s Virtual WWDC week, and I’ve already setup my plan for the week.

I’ve signed up for a few of the group Q&A sessions on the topics that interest me the most, and I’ve been trying to clean up my code base so that I can start up my summer work to add new features based on what Apple releases.

My hope is that Apple spends this summer cleaning up their features and code base, adds more capabilities to SwiftData, and shows that they are still interested in VisionOS. That’s about it for me.

The myth of unlimited storage

I’ve been blogging and podcasting for over 20 years now, and my hosting provider has always said unlimited storage. Well this week, I was notified that that really means only 20GB of storage. As you can imagine in the 20 years I may have used more than that (actually had 60GB of content, backups, and edits stored on the site).

So I’ve been going through my blog and with the help of ffmpeg compressing so much of my site. I also took my edits offline (and moved them over to my 2TB cloud storage provider.

So now after a weekend of unplanned maintenance I will be under 15GB of storage on the site. Not bad!

My AirPods Review

History of AirPods

I’ve been using AirPods since they were first released, and I can say I love them! I have owned almost every version of them. The only ones that I have skipped so far are the AirPods 4.

When the first pair were released in Dec. of 2016, I immediately ordered a pair. Before that, I had spent 100s of dollars on various wired and bluetooth headsets from companies like Bose, Sennheiser, and Jabra.

I had been worried that the initial AirPods would fall out of my ears, like the EarPods did. But by removing the wire, Apple had fixed that issue. And I’ve never looked back.

AirPods Max

I also picked up the AirPods Max a few years back, they were the perfect replacement for my Bose Quiet Comfort over the ears headphones. But this isn’t about them.

Are the AirPods Pro 3 worth it

I could easily write a one word review – YES! But, let’s break it down.

Fit – I’ve bought multiple third-party foam based ear tips to improve the fit of the AirPods Pro and AirPods Pro 2, but ultimately I always went back to the default tips. The default tips, tend to wear out on my ears, and none of them really fit perfectly. After a few weeks, the fit test would always show one ear having problems with fit. Part of this is because I have non-standard ear canals, i.e. one is larger than the other. The medium tips fit well in the right, and the small fits in the left. Also, we all have oils that build up in the ear which will break down the rubber tips. Right now, after almost non-stop usage, they are still fitting perfectly with the same tip in each ear.

Noise Cancelling – You can’t beat the sound isolation of a good set of over the ear headsets like the AirPods Max or Bose Quiet Comfort line, BUT the AirPods Pro 3, with the good fit from above, have finally fixed that for me. The improved sound quality and fit get’s rid of bubble head. If you’ve used over the ear headset, you know what I mean. That feeling that the world is somewhat too isolated and you are floating around in a sound proof bubble. I also have noticed that over the last few days when I am in Adaptive mode, I can turn the sound down a lot lower than before and still have excellent sound levels, as well as noise cancelling. It’s perfect for listening while I am out taking a walk.

Battery Life – while you can’t really test battery life when you get new tech, my test on Saturday was 8-10 hours with no problem in transparency (or as I like to call it – hearing aid mode). That’s an amazing feat. Over the years, I’ve been around way to much loud noise, but I can tell you the exact point in my life when my hearing started messing up. I was at Prince’s Musicology Tour on April 23rd, 2004. What an incredible show! There was someone behind me to the left, who screamed at the top of their lungs the entire show. For two weeks after that show, I had ringing in that ear. Since that show I have tenitus and drop outs in my audio spectrum. So, what does this have to do with battery life? My AirPods Pro 2 have about 4-5 hours of transparency mode, and so getting thru an entire day with AirPods Pro 3 in transparency mode, is a game changer.

Verdict

I may have to but two more pair to replace my two pair of AirPods Pro 2 that I keep with me when traveling. Currently, I am rotating thru all three pair across the days.

PhotoDome for visionOS

Over the last few months I’ve had the joy of helping beta test an app that was released last week – PhotoDome for Apple’s Vision Pro.

The developer of this app, and I are both members of a slack community focused on developing for the Apple ecosystem. He had posted a question to see if any one with the Apple Vision Pro (AVP) would be willing to test early builds. As an early adopter, obviously by the fact that I have the AVP, I immediately signed up.

Recently on my podcast Games At Work dot Biz, we talked about another application that I was a member of the TestFlight – Cassette. As I mentioned in that episode, I don’t tend to talk about apps that I am testing, unless the developer specifically asks for public feedback. I find that providing feedback to the developer is valuable, but publishing feedback about unfinished code is not.

Now that it is available, I can say that I really enjoy PhotoDome. Similar to the value of Cassette, it provides me with a way of find old memories that I haven’t seen in a long time.

It also provides a truly immersive experience with lots and lots of options for how you may wish to view the content. You are able to pick what content you want to see.

The developer did a great job of creating a sky box so that you can focus on your photos, or you can just be out in the void. In my view above, I picked a nice grid of various Christmas cards from over the years.

I think that people who don’t have a AVP may not understand the interface, since it is hard to describe, but PhotoDome allows you to get a random set of image, from various collections, and present them in multiple different playful ways.

You can have a simple grid (as you see above), moving lanes, random, and one of my favorite – bubbles. The bubbles bounce of each other, etc.

I am hoping for fully spatial video support for a total immersive overload!

I highly recommend, if you have a AVP, that you check it out. We are in the early days of creative new experiences in AR/VR, and supporting the developers who are willing to try this out is a way that we get more and more apps and experiences!. If you have picked it up, I’d love to hear about your experience with it.

Support for Work’s Not Working

I was listening to TWiT the other day, and Wesley Faulkner had just announced a new venture that he’s working on. It’s called “Work’s Not Working“. The basic premise is that in our current corporate environment, the deck is stacked against those doing the work. (Yeah I am over simplifying this a bit, but I feel that’s a great summary).

Why I am supporting

Very early in my career I had a few experiences that align really well with some of the reason why some one may want to join this community.

I was working for a really small consulting firm. The CEO, his son and wife all worked at it too. I had been brought on to help healthcare companies (and others) via contract programming and general IT work. When hired on I was told that part of my compensation would be a percentage of the profits based on the work I had been doing. I never received a bonus in all the years I worked there.

A few years into the job, I was asked to come in and help fix our payroll. They were having to address the changes in the Social Security taxes, when the maximum tax amount split so Medicare and Social Security could have different maximum values. I had done the same work for a customer, so I knew the law and the code.

Given we were small, there was no real test data, so I had full access to the company’s payroll data. I discovered that not only was I the lowest paid consultant (not a surprise), but I was also paid less than the secretary (the CEO’s wife), and I was the #1 profit maker for the company. So all those promises of bonuses based on my profitability were lies.

After this point I was approached by a customer to come work for them. It would be a 50% raise, and I would be instrumental in building out their IT staff. I would also be leading a major system upgrade. This is when I discovered what a “Right to work State” meant. Basically, I didn’t have the right to work, if my current employer didn’t want me going to work in the same industry. Ultimately the CFO of the company that wanted to hire me, told my boss, that if they wanted to get the big upgrade job, they had to let me out of the non-compete clause.

I bring this story up as something that I had to learn about early in my career. Remember, a company has lawyers and a Human Resources department. They work for the company, not the employees. Some of the people are fantastic, but their jobs depend on them doing what is right for the company.

When I read the mission of “Work’s Not Working!” I knew I had to support it. Over the course of my career I’ve been a mentor, manager, and friend for many people I worked with. I hope that Wesley’s work will provide this to a broad reach of developers and more!

WWDC – Day 5

I had high hopes for day five, but I ended up pulling a muscle in my shoulder and I just couldn’t get my head on right to got through online content. I did make some major progress, but then petered out… My backup plan was to power through more today, but I ended up starting to work on my own apps; fixing accessibility issues, designing new icons, and working on some paper cuts. Overall, very rewarding day. The list I did get through are as follows:

  • Discover machine learning & AI frameworks on Apple Platforms – this foundational session when through a few key concepts. How Apple is using ML in their own apps, how to leverage the new foundation model as a developer, and finally how to bring your own models to the device.
  • Dive deeper into Writing Tools – Apple intelligence, first introduced in 2024, the improvements made to writing tools has been extensive. Not only that, but you can now customize native views to limit which features you wish to expose to your users. You can also customize the writingToolsResultOptions to let writing tools know the type of text to expect.
  • Elevate the design of your iPad app – This session takes you through changes you may wish to make to your iPad app to take advantage of the new “liquid glass” design language. While many of the features will be automatically applied if you just recompile, understanding how window resizing, navigation bars, pointers, and the menu bar works will allow your app to really shine on iPad.
  • Embracing Swift concurrency – The biggest change to Swift 6.2, in my humble opinion, is the new Approachable Concurrency change. Since most apps trying to adopt the swift 6 concurrency model were quickly overwhelmed with warning and issues, the new model allows developers to declare that their app is, by default, single threaded. You then add the concurrency deliberately, greatly simplifying getting your app setup. I switched one of my apps to this model and it removed 50% of the warnings I have been trying to resolve.
  • Enhance child safety with PermissionKit – there has been a lot of legislative activity around child safety on line and in app stores across the US. One of the issues has been that this is causing some states to mandate online ID verification for content. One of the challenges is this creates yet another problem area for personal information to leak. One of the interesting aspects that Apple has provided in this new API is the ability to define “age ranges” that are queryable without requiring direct access for websites or apps to PII (personally identifiable information). I hope that this approach get’s adopted more broadly. However, many companies would rather have your PII so that they can sell that data. Anyway, the session goes through how to use the Permission Kit API, including how to create “ask” experiences, causing a child’s device to notify the parent that they want access and requiring positive confirmation by the parent.
  • Enhance your app’s multilingual experience – TextKit 2 was introduced last year and this year it really steps up with the ability to correctly handle two languages at the same time in the same input field. Think about writing words in both left to right and right to left languages in the same sentence. Blows my mind!
  • Evaluate your app for Accessibility Nutrition Labels – this is the session that really side tracked me. There is so much I needed to do after running an accessibility audit on my simplest app, that understand it all becomes even more important. This session does an awesome job of going through specific examples for each of the sessions of the Nutrition Table. Highly recommended!
  • Share visionOS experiences with nearby people – While I know I will never convince my wife to try the Vision Pro, let alone have two of them in our house. This session goes through the architecture of both nearby people as well as remote users. Explaining how placement, recentering, and FaceTime integration all work. Fascinating discussion shared anchors too!
  • Set the scene with SwiftUI in visionOS – A look at how you can now integrated SwiftUI with Volumes and Immersive Spaces, in a much more fluid manner. The new scene bridging capabilities allows for UIKit to also support volumes and immersive spaces. Hopefully this means we will see a lot more visionOS apps coming soon!
  • Say hello to the new look of app icons – the final session I watched before my shoulder and neck pain took me out of being able to focus. This sessions did a great job of getting me psyched to update my own apps. A member of Apple’s design team took you through how Apple updated their own icons across the board. Well done!

WWDC Day 4

Finally getting into the groove of going through all the content I want to watch this week. The main issue is how much great stuff was announced, and now to figure out what it all means to me as a developer.

I attended three more Group Labs, but asked no questions, more of a listen in to all the great questions others asked. My favorite was the Accessibility techniques group lab. I’ve been so naive when it comes to accessibility in my apps. I’ve always believed that Apple’s attention to this meant my apps just worked; however after learning how I could run an accessibility audit on my apps, I was shocked to see how badly I faired.

My oldest app is Wasted Time, I have made it available on iOS, iPadOS, watchOS, macOS, tvOS, and visionOS. Every year I have tweaked it after WWDC to add a new feature or redesign how it handles the UI and data. This year, I ran Apple’s Accessibility Audit against it. I was very disappointed with how badly I fared. So I think this summer will be my “Summer of Accessibility”. My goal is to get all my apps as accessible as possible.

Anyway a quick rundown on the sessions I watched yesterday:

  • SwiftUI Group Lab – This session had one of my favorite Apple presenters – Curt. Over the years, his explanations of SwiftUI content has been simple yet detailed. The biggest part of this lab was getting me to look at the new Instrument for SwiftUI. Can’t wait to check out how to improve my scrolling card view!
  • Wake up to AlarmKit – I was expecting more details on night stand mode, but this session was all about Apple exposing their alarms API for your own app to use. Nice new API for me, but I have no use for it. Expect more apps to interrupt what you are doing 🙂
  • Automate your Deployment Process with App StoreKit API – This was a good session going through the APIs that you can use to improve your build and deploy process. While I am really enjoying Xcode Cloud, most large companies already have their own CI/CD pipelines and Apple is finally opening up many of their APIs to make it easier to upload your builds, kick off TestFlight, and retrieve feedback. Highly recommended for any enterprise CI/CD engineer.
  • Better together: SwiftUI and RealityKit – The expansion of the Spatial Web and improvements in UI consistency across platforms makes this session a must watch. Apple has made it easier to bridge between 3D content in SwiftUI and RealityKit, with Observable Entities, improved unified coordinate systems, and Object Manipulation. I expect to see more blurring between what you can do on visionOS and on your Mac. This is a good thing.
  • Bring advanced speech-to-text to your app with SpeechAnalyzer – With the opening up of Apple’s Foundation Model on various platforms, this is a big quality of life improvement for people wanting to to Speech to Text. The sample app shows you how to do realtime voice to text handling. The new model all runs on device addressing the data privacy issue, and supports many major languages and dialects (Cantonese, Chinese (3 regions), English (13 regions), French (4 regions), German (3 regions), Italian (2 regions), Japanese, Korean, Portuguese (2 regions) and Spanish (6 regions)).
  • Build a SwiftUI app with the new design – As with every year Apple has a major theme in their sessions helping developers address the biggest API announcement. For “liquid glass” this is that session. The explanation on how the app handles placement of various elements and insets is important to understand the UI impacts to your app. I have already done some testing with Wasted Time, and saw multiple things that will require fixing. Another key aspect of this session was how to address your custom controls and make them work with “liquid glass”. I have a custom button type for my apps, that I use to minimize the amount of coding I have to do in each view. I will be taking a look at how it needs to change.
  • Create icons with Icon Composer – On Wednesday I raised a feedback (FB17954788)  to get the Icon Composer team to enable visionOS and tvOS in this new tool. Right now it only support macOS, iOS, and watchOS. Given that visionOS and tvOS already have 3D icons, I would expect that his will be a low priority for Apple to address.
  • Customize your app for Assistive Access – I’ve been interested in this mode for some time. I help elderly family members use their various Apple devices and as such, I am constantly dealing with “gremlins” in the system. For the most part these “gremlins” are mis-clicks on the Mac, where emails mysteriously disappear. I’ve not had the ability to dig deep into this mode and see what it might do for the Mac, but I am interested. I am also wondering how my remote software will behave if the Mac is running in Assistive mode.
  • Deep dive into the Foundation Models framework – I didn’t take many notes on this session, as it required a lot of concentration. I do plan on watching it a few more times; however, the explanation of @Generable and @Guide macros was fantastic. And I felt that Apple has explained how they handle private on device data in a manner that makes me even more comfortable on what it will do. Having said that, I am worried that app makers will take advantage of that expectation and still exfiltrate data to their own cloud based services. Think of how Meta and others are treating your data, and you can understand the challenges that Apple must face to enforce this data isolation and privacy.
  • Design foundation from idea to interface – A really good session on how a designer thinks. I’ve always struggled between building apps that are functional verses those that make the function obvious. Much of what the presenter goes through may be obvious for good designers, for the rest of us this is a much watch.
  • Design hover interactions for visionOS – I think I watched a similar session last year (or in 2023), but without the context that I have now. The presenter really does a good job on how / when you should customize a hover effect. There are some custom controls I have developed in Wasted Time that certainly need a second look.
  • Design Interactive Snippets – As we assumed last year with the hard push on App Intents, the magic for Apple Intelligence was going to be what your app contributes. When it comes to actions, Snippets are where you can provide actions in a an easy to read and obvious manner. This session address this compact displayable view of App Intents.
  • Apple Intelligence Lab – The most exciting part of this lab was the clarity in how to test your AI features. I had always wondered what the best way was to handle this. They also explained the way the system handles limits for the on device model. It seems this is much more liberal than I expected. Nice.
  • Design widgets for visionOS – I am so excited by widgets for visionOS. I spent a lot of time this last year fixing the widgets for Wasted Time, and trying to think of new widgets for my other apps. While the session seems to make it so easy to add them, there is still a lot of clarity missing in my knowledge of widgets for visionOS. I’ve tried to enable them but I had to blackout the code. Perhaps I will make more progress over the summer.
  • Develop for Shortcuts and Spotlight with App Intents – This is a surprisingly cool session. My reaction was this would be a minor update to last year’s App Intents sessions. BUT this sessions goes deep into using Apple Intelligence and other LLMs within your Shortcuts. Highly recommend that people dig through this session in detail.
  • Discover machine learnings & AI frameworks on Apple Platforms – I didn’t take notes on this one, as once again this is a session I plan to view multiple times.
  • Accessibility techniques group Lab – As I mentioned in the paragraph above, this lab got me very excited to address the accessibility issues in my app. I wish they would make the labs available after the fact.