Getting Ready for WWDC And Building my HomeLab

It’s been an eventful year, and WWDC is right around the corner (tomorrow as I write this). every year since 2018, I’ve taken an Education-Vacation to align with WWDC. In 2018 and 2019, I was lucky enough to actually get a ticket to go in person. I’ve tried the last few years, but no luck so far.

Picture of author at the WWDC conference in 2019.  It's a selfie with the glowing logo of WWDC19 over the left shoulder, and a presentation stand.

WWDC 2019 was amazing, and I had a great time meeting other developers and talking to Apple engineers. It was also the year that the first developer build bricked my MacBook Pro, and I had to schedule time to have the Apple team to re-image my machine as if the Beta came from the factory! What an experience that was.

Well this year, I will be squirreled away at home for 8-12 hours a day, going thru videos and setting up my development devices to try and take advantage of the new APIs and features that Apple will be releasing tomorrow. I hope that they will make my Apps more competitive in the App Store.

In the mean time, I have been doing a lot more work with AI models at my day job. I’ve been working for a year at Atlassian, as a Principal in their Advisory Innovation Lab. My job is to help build those solutions that our consulting teams will use with large enterprise customers. I am primarily focused on AI governance, which is a huge and important things for enterprises right now. And as such, I’ve been spending a lot of time doing some amazing things to help build out systems and processes for the safe, secure, and appropriate usage of AI tools.

This approach me focused on setting up my own private AI stack at home, and over the last few weeks, I’ve been building a set of processes so that I can ask questions about my code and gain insights to patterns that have been alluding me.



Today, I have finally finished a web-based chat setup using Ollama, LM Studio, Open WebUI, Qdrant, and custom python code. I can now load up a chat with any of my major projects, it automatically indexes any code changes to update the RAG model I have setup, and I use qwen2.5-coder-32b-instruct with a large context window.

The one challenge I am still working on is how I can take advantage of a great set of Swift skills developed by Paul Hudson over at hackingwithswift.com. Once I can figure that part, I am hoping to add Apple’s latest Swift developer documentation to my RAG in order to ensure that I am always using the latest APIs in my discussions.


Like my good friend Andy Piper, I don’t like the idea of my code or data being consumed by large enterprises for their advantage. If they want to pay for, I am sure we can come up with a financial arrangement, but until then, it is my code and my ideas.

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!