Friday, June 13, 2025

Manipulation on visionOS

Of all the great things introduced at WWDC25 this year, ManipulationComponent and the manipulable() SwiftUI modifier are really great. These provide some rather natural interactions with objects with one line very little code.

I just published an open-source sample visionOS app, Manipulatives, which demonstrates the basics of this. My approach is to group everything I want to become manipulable as a child of one Entity with a specific name. Then I can search for that parent Entity, and loop thru all of its children adding ManipulationComponent. This would, of course, be even simpler if the ManipulationComponent were available directly form within Reality Composer Pro (Feel free to file a Feedback and reference my FB17979086).

With ManipulationComponent and Entity Observables, I see this as a great combination to tracking how users are moving entities around. I’m excited to put this into action and look at ways to turn user’s manipulations of Entities into dynamic behaviors and actions in my apps’ scenes.

Friday, May 23, 2025

WWDC25 Wish List

 Since I make apps for Apple's platforms, WWDC is the main event of my whole year. The developer conference is a time where Apple announces plans for the next major versions of visionOS, iOS, macOS, tvOS, and watchOS.


Sometimes we get major new announcements, like visionOS and the Apple Vision Pro at WWDC23.


I have been making apps for visionOS ever since and I’m really excited about where this platform is heading.


My wishlist for visionOS

  • Supercharge the Shared Space
    • I want apps to be able to leverage knowledge of the users hands when they are inside a volume in the shared space. Think of making a drum set app where you can position each drum as a volume just where you want it, and then play in the shared space while you have your music up in another app, and maybe be recording in GarageBand in another window
      • FB16447897 (visionOS Hand Anchoring Component in Shared Space (Volumetric Windows))
    • As a developer, I want to offer “pinning” hints to visionOS. I want to be able to suggest that this window could be pinned to a table of minimum width/depth or to a wall or next to a TV, …
    • I want to allow ARKit sessions to run within the overlap of my volumetric windows in the shared space. Let me “see” the mesh or table or wall that the volume overlaps with. Let me see the relative position of my open windows / volumes in the shared space. With this, I could make an app where you place a volume in opposite corners of a room and get the dimensions quickly.
    • As a user, I want to make a mapping of my home and name the rooms, ideally maybe even those are picked up and/or synced with HomeKit. Then allow me to share that with developers in a privacy preserving way so that I can configure apps to work differently in different rooms as I move around.
    • I’d like to be able to pin multiple instances of an app to different rooms and have the app available to me when I am in the room, and dismissed when I leave the room
  • Native development tools on visionOS - Reality Composer Pro, Xcode, Swift Playgrounds
  • Shared in-person sessions where each visionOS device has a common anchored position for content. To interact in a mixed immersive space with others would unlock some great experiences
  • Shared in-person sessions between visionOS, iOS, macOS. With RealityView on all of these platforms, having a common coordinate space would again unlock some powerful interactions
  • Spatial Templates for any number of participants (visionOS or not). I want to be able to provide “seat” assignments to everyone whether they are sharing a Spatial Persona or not, and whether they are even on a visionOS device or not. This would allow me to place people at “tables” for a conference session, or give proper assignments for a game night
  • TabletopKit for iOS and macOS also. Extending this framework to any platform that has RealityView support seems natural to me.
    • FB13873238 (TabletopKit support for iOS, iPadOS, macOS, tvOS)


One more thing…


I’d like to give my aspirations for where I hope Apple might be headed. I’m sure that I’m wrong, but I want to put out there what I would like to see and cast my own view of the future out there.


The next big evolution I see is around Spatial Computing. I want to see Apple combine the awareness of where I am in space (Center Stage) to turn the flat displays of iPhone, iPad, Mac, AppleTV into portals into immersive spaces. If I use my iPhone with an AppleTV I should be able to use Continuity Camera to enable this same tracking on a big TV.


With a full awareness of my position relative to the display, the display now becomes a view in space that I can move my head around to explore and watch it respond in real time.


Maybe I can use an Apple Pencil Pro to poke into the space for more precise selection.


Then I want a truly Spatial Home Screen and work environment. When I open my MacBook at my office desk, my work environment is ready for me, with slack tucked away to the side. I can “look around the corner” to pull out the music mini player and manage other glanceable tasks.

Thursday, March 17, 2016

Happy Saint Patrick's Day

On this day of many things green, I'd like to offer this Xcode theme that I have been using for a few months, Mulder. It's quite green to celebrate Season 10 of The X-Files. Here's what it looks like in action:
Xcode keeps themes in a folder: ~/Library/Developer/Xcode/UserData/FontAndColorThemes so here are my recommended steps to add this theme to your Xcode:
    1) Open Xcode
    2) Choose Xcode > Preferences
    3) Choose Fonts & Colors
    4) Press the + button in the bottom left corner and make a new theme named "Mulder"
    5) Quit Xcode
    6) Copy the downloaded Mulder.dvtcolortheme file to ~/Library/Developer/Xcode/UserData/FontAndColorThemes/.
    7) Open Xcode and enjoy a greener coding experience. :-)

Tuesday, October 13, 2015

Lucky 13

On Sunday October 13, 2002, my fiancée and I were long distance. She was finishing up her college degree and I was working in Chicagoland. We had attended a wedding this particular weekend, and had driven back to college on my way back to my apartment. I was driving on a two-lane Missouri highway, listening to music and driving without cruise control for some reason. I usually would set my cruise control for a bit over the speed limit where I might manage to avoid attention from police yet this particular day I was going without it, and as a result was traveling a bit slower that I would have normally.

Suddenly, a fox appeared in front of my car on the left-hand side. I swerved the car to the right off the edge of the pavement with right-side tires onto the gravel shoulder, and turned back to return to the road. The car started skidding with the rear moving to the right. I recalled some old driving test television shows I watched in my early teenage years and knew I was supposed to take my foot off the gas and turn into the skid, and to be careful not to overcorrect. I took my foot off the gas, I turned into the skid -- too much. The car continued skidding, this time off to the right-side of the road. I saw an overpass ahead around the corner. I saw a car coming from the other direction. Then I saw grass as the car turned toward the rising hill off the side of the highway and my car skidded further off the edge of the road. I didn't really have time to even process it, but I was glad to be moving away from that car.

The next thing I knew the car was upside down. I was suspended by my seatbelt and didn't want to be like that. I put a hand on the roof of the car to brace myself as I unbuckled and rolled myself out of the car. My door opened perfectly, the window still whole in fact. The windshield had shattered. Every other window was shattered. The car was upside down, over the guardrail it had just smashed thru. It wasn't until I got the police report and saw the officer's sketch that I realized how exactly the car got to that position. The driver's side door behind me was demolished. I can't imagine any person sitting in that seat surviving the crash. I was a foot away from that. Had I been driving a bit faster, it's just as likely that I would've hit the guardrail at my door instead of the empty one behind me.


I was impressed and grateful for all of the people who stopped and helped to call 911. I'm especially thankful for the police officer who found my phone and glasses among the belongings that had flown around in the wreck.

A colleague of mine told me about a belief in China that surviving an experience like this one meant I was marked for something great. I've keep considering this. I want my life to be worthy of this gift. This borrowed time that I'm living on since that day. My family is the legacy I care most about, and I cannot be prouder of what Katie and I have grown. All of our children are so smart, kind, playful, and empathetic.

I was fortunate enough to be one of the first developers to make apps on the App Store, and my Flashlight app has been used by millions of people. That's still so surreal for me to think about, and I'm so thankful for the opportunity to share my work with so many people.

I've had 13 years since this crash, and I've thankfully been able to do longer road trips without thinking about this. Some things certainly fade with time. My wife's birthday is November 13th. My daughter's ultrasound was on Friday the 13th.

13 is my lucky number.

Sunday, September 13, 2015

PixelPop Festival 2015

I want to thank everyone involved with PixelPop Festival this year. I was delighted to have an opportunity to show my games and show an preview of my new game, Stacker. It's truly heartwarming to get to see people experiencing my creations for the first time and I got so much great feedback and so many great ideas to add. I'm putting my iOS games on sale for $0.99 this week until September 20th.

Thanks again! Now it's time to get a little rest… :-)

Wednesday, September 12, 2012

A Talk about ViewControllers

This July, I gave a short talk about some best practices with ViewControllers on iOS for the West St. Louis CocoaHeads group.

This includes my tips on where/when to do certain actions to balance resource usage and keep your UI snappy.

Here is the PDF of the presentation: CocoaHeads ViewController Talk

Thursday, April 12, 2012

CryptoQuote Daily Challenge Update

Greetings,

I'm happy to report that the new Daily Challenge Server is up and running, and my initial testing is going very well. Soon (within the next week or two), CryptoQuote for iPhone, iPod touch, and iPad will be updated to version 2.4. This version is designed to use the new server.

Once I'm happy with the iOS update running "in the wild," Android apps will be next.

So, in a few weeks, CryptoQuote for Android will be updated to version 2.0, adding the Daily Challenge feature for Android users, including Kindle Fire, NOOKcolor, and NOOKtablet.