Time keeps on slippin, splippin, slippin

I’ve been amazed by all the posts and stories from people having time to do all the things they have been putting off. They are taking the “extra” time made available during our current lockdowns, and learning new skills, playing old games, and basically just relaxing. Unfortunately, I’ve not had that ability.

On March 12th, I presided over an emergency meeting of the board and production team of the non-profit theatre group were I am currently President of the board. We were two weeks from opening night of this year’s performance, and the governor of our state had just announced that groups of 250 people or more could not meet. The group decided that we could not, keep rehearsing, and had to quickly develop a plan for how we could restart rehearsals and the production, when restrictions were removed. We’ve currently moved the show date to early August, and I am hoping that the dates hold.

I had hoped that this break would free up my evenings to relax a bit, but instead I still had to submit the group’s main yearly grant proposal. Given that this is my last year as President of the group, I’ve been working hard to document and automate many of the processes, something I had wished had been done before. Due to COVID-19, the deadline for the grant was moved to our a few weeks, which was a good thing for my automation, but meant that I filled the time with more work on the grant.

The other automation I’ve been working on is to complete the transition from Quicken to Quickbooks for the non-profit’s financial management. The amount of manual work that the group does to generate reports and budgets for each production, has been amazingly high. So transitioning to quickbooks would greatly improve the reporting, and also benefit in the generation of grant proposals.

These two activities easily filled the vacuum of time that opened due to the show shifting. (In my best Ronco – Ron Popeil voice) but wait, there’s more. I’ve been working to nominate new board members for the non-profit, cancelling all our March ad buys for the show, and rescheduling them for the August date. So that takes a bit more time.

I had planned on working on re-adding Twitter support into my app – Wasted Time. If you follow my blog, you know that last year, I completely rewrote the app in Swift UI and Combine making it available for the Mac and Apple Watch, on top of the original iPhone version. The twitter API I was using is no longer supported, and I would need to completely rewrite that part of the app, which I didn’t want to cause to delay the app. Of course, I’ve not had time to circle back and work on this, but I have plans. 😉

It seems that the extra time has been filled with extra work.

Mac App Store = Tighter checks on new app

I’ve been playing with Catalyst since WWDC. Well not so much playing with it, but thinking about it while completely rewriting my Wasted Time app into SwiftUI. The main catalyst for rewriting the app is all the frustrations I had with Storyboards and Autolayout. Every time I wanted to add a new UI element to my app, it seemed that Autolayout would freak out! I also used this opportunity to write a simple WatchOS only version of Wasted Time, and surprisingly it translated well. (It has been available on the Watch App Store since Oct.)

After writing the WatchOS version of Wasted Time, I used this as the basis for the full rewrite of the iOS app. I learned that some of the SwiftUI elements, didn’t translate well; just like some of the iOS elements didn’t work on WatchOS (Tabbed Menu Items). (Available on the iOS and iPadOS App Store since Jan. 2nd).

One of the key differences between this version on prior versions, is that I need to rewrite my Twitter code, which I have not yet done. As such, I don’t have Twitter enabled in the new version, and will probably not have this done for a few months (I am currently rehearsing for a new light opera which I will perform in late March, it consumes all my free time).

I also submitted the Mac version, using catalyst, at the same time as the iOS version; however, it has been rejected from the App Store multiple times! This has been an incredible learning experience. The most surprising aspect of the rejects is that they find one issue and immediately reject. Each of the items so far, could have been easily seen in the first submitted version. Let’s go thru them:

1) Rejection due to name mismatch. I had setup the app for the App Store as Wasted Time Mac! But when using Catalyst, it just used the name of the App in the about window. As such it was listed as “Wasted Time”. I was able to just go to iTunes Connect and rename the app, and then hit resubmit the same binary.

2) Rejection due to twitter switch not “working”. This was on me completely. I had added the UI element for the Twitter code as I started to work on Twitter. But I had not yet completed the Twitter code. So the App Store toggled the switch and nothing happened. (Unfortunately my plan was to get this work, but after half of my vacation coding time being taken away due to illness, the code wasn’t ready). Funny thing is, the iOS version has the same switch, and it passed the App Store check.

3) Reject due to help menu. When I first started working on the Mac version of the app, I did a truly native app version. I had issues with the App Store upload, I also decided it would be cooler to actually do the catalyst version. On the native version, I actually had gone in to the Storyboard and removed a bunch of menu items. On the Catalyst version, I had not removed non-functioning menu items. The basic app layout has a tab which explains how to use it. This is because on iOS devices there’s no real help system. In Catalyst you can’t use the storyboard “fix” to remove the menu items, but by using the menuBuilder function, I was able to remove all those items which do not function.

4) Forth time is the charm! Here’s the URL for Wasted Time – on the Mac!

Cracking the Code

Today’s been very productive so far:

  • I’ve been able to fix a few UI issues that have really bugged me in my Mac version of WastedTime.
  • I’ve uploaded version 9.0 of WastedTime for iOS to the App Store – the total rewrite of Wasted Time using SwiftUI and Combine
  • I’ve built both a Mac Native and a Mac Catalyst version of Wasted Time

Things I still need to do:

    Figure out how to use Twitter api with the call back URL

Year End Thoughts

Finally taking some time off and getting time to reflect on the year/decade in technology. Einstein’s idea of relative time is very appropriate for thinking about the last decade. Every year that I am on this planet, the time between years seems to run quicker and quicker.

It’s been an amazing decade for technology: We’ve scene the launch of AR and VR in a meaningful way – remember Google Glass and the original Oculus Rift? Well now we have HoloLens and Oculus Quest, and we are seeing meaningful usage in maintenance within the enterprise. We’ve seen Apple shift from Objective-C to Swift, and expansion to new ways to manage the explosion of screens (who has played with SwiftUI?).

We’ve gone from a web-based / desktop world, to a app based / mobile world. Personally, I spend more time on my iPad for reading, writing, and some content creation then I do on my MacBook Pro.

The Internet of Things has gone from hype to the trough of disillusionment. This is actually great news, as this means that it is common enough that we will now start building out those solutions that are meaningful.

Electric vehicles have gone from rare to the Tesla 3 being the best selling car in the world. The number of these that I see in the lot at the office, seems to reinforce this.

On the negative side, all this connectivity and innovation has driven an explosion of ransomware with cities, hospitals, and other government. Security and privacy continue to be under attack, as most people still do not understand how much information they leak online.

And finally, we still don’t have cheap and affordable flying cars! Well maybe this coming decade!

Status update on WastedTime (all platforms)

Over the last few weeks, I’ve been working to do two things on the WastedTime set of apps. (Wow! I can say set of Apps now).

While the basic functionality is working on all three platforms, iOS, macOS, and WatchOS, I am not happy with the behavior of SwiftUI to render the various graphics. SwiftUI has introduced some really cool images with the SFSymbols library, and using those simplifies the sizing of elements across platforms.

Well, not really, given that SFSymbols is not really supported correctly on macOS. So that means that my buttons to add and remove attendees in a meeting cannot be the same on macOS. That wouldn’t be a problem, if SwiftUI would allow me to use the Image() for buttons. My plan was to go back to my original images used in the iOS app, and just leverage them for the macOS version. Nope – they don’t render at all.

So, I decided I would go back and start working on the Twitter integration instead. This seemed like it would be pretty easy, since I had that working fine using TwitterKit on iOS for years now.

Well, not really, given that Twitter discontinued that service… So, I would have to try and use a new library. I decided to try Swifter. I had heard good things about this library, and they support both iOS and macOS. While I setup the code to enable Twitter and to create a Tweet, nothing happened. Evidently, you need to setup a callbackURL to leverage the new Twitter serviced. Having not dealt with callbackURLs at all, I took to StackOverflow to get more information. Net-net, there is no information. So, go to the gitrepo for Swifter, and again, no help. So I posted an issue to the repo, and have been in a wait state until I hear back.

Guess, I am going to have to do a lot more reading and learning. More to come…

WastedTime for Mac (beta available)

So, I did it, I wrote my first ever macOS application. It is WastedTime for Mac, and I am amazed it works. It is still beta, and I am going to add in the twitter integration. I also need to add keyboard short cuts so you can you the (+) and (-) keys on your keyboard to add and remove attendees, but it works!

The most amazing part was that I could take my WatchOS app, and extend the project to add a new target, and reuse 90% of the program logics. Once I have the macOS version completed I will recreate the iOS and iPadOS version. Wish me luck!!

oh, and by the way, here’s a picture of the app – yeah I could really use a designer:

Working on Wasted Time for Mac

Now that WastedTime Watch! Has been released, and so far, I’ve not heard any new bug reports, or even seen any crash reports, I’ve started re-writing WastedTime completely. What I mean by that is, I am working on converting the iPhone/iPad version to a Catalyst application. I will then release a Mac version.

What does this mean? Well I’ve been using Twitter’s own Swift based APIs that were made available a few years back via Cocoapods. That has been killed a while back, and it certainly is not supported on the Mac. This means I am learning a whole new API to support the Twitter integration. It is called Swifter.

The biggest transition, however, is covert in from RxSwift to Combine. Luckily, when I wrote WastedTime Watch!, I did it from the ground up, so I had written a Combine version of most of the logic. So hopefully I will get a few hours each week for the next few weeks to complete the re-write.

Wish me luck!

WastedTime Watch!

WOW! I excited to announced that Wasted Time for the Apple Watch is now available. While there is one bug I need to squash, I would love it people would down load it.

The bug is that the cost information is not being saved, but if you don’t kill the app you will be OK. If you go to the setup screen, enter the rate. Use a keyboard or the scribble function, and don’t enter commas. After you enter the rate, toggle the Hourly / Salary buttons… and then start your first meeting!

WastedTime Watch!

Summer activities and Betas

Over the last almost two month I’ve been staying crazy busy, at work (the day job), at my non-profit (the opera group), and dealing with problems in the various Apple betas from this summer. The biggest issue of the Apple betas has been my experience with Catalina. While Catalina itself hasn’t been a big user change, it has had numerous problems on my 2016 MBP with Touchbar.

As I mentioned during WWDC, I had lost my entire hard drive during the initial install and had to completely rebuild the machine. This isn’t a major issue by itself. Sometimes it’s nice to get rid of all the cruft and rebuild a machine, but the machine has been extremely unstable since. A few issues are the most troublesome:

1) iCloud Drive – as others have mentioned, Apple has had major issues with iCloud Drive during these betas. To me it has shown itself in two major ways. First, I’ve not been able to actually restore all my data from iCloud Drive. iCloud will start the download, and then get in what seems like a loop, uploading the same data, and never finishing. I have all my source code in iCloud Drive (and yes, also in GIT) so that I can go from one machine to the next and pick up where I was, when working on a program. The second issue is that when working in a file, especially in my source code, iCloud Drive seems to want to backup the file with the name “Name #.extension”. And then litters your drive with multiple copies of files. I have seen upwards of 6 versions of files. This can cause both xCode and Git to then add a bunch of files into my projects. Of course things get confused and I have to find which one is “current” so that I don’t back level my code.

2) Open from the internet issue – while working on my code across machines, xCode will see that I’ve updated code on my Mojave machine and since iCloud comes from the internet, it will be get confused saying my code that I am trying to open is from the internet, causing very long open times for some projects. While this is very very annoying, so far this hasn’t caused any data loss.

3) To wind down, I like to play World of Warcraft at times, but Apple’s new security model won’t let it run, since it doesn’t have a sign certificate in it. I’ve reached out to Blizzard multiple times to let them know, but so far no fix coming.

4) The splitting up of iTunes to multiple apps seems to be fine, BUT they’re have not yet implemented homesharing. This is a major show stopper for me, as I have a NAS full of my ripped music, tv shows, and movies. I cannot use homesharing to stream them to my MBP, and I am very worried that this will be a big issue for my Apple TV when Catalina goes GA. I’ve raise feedback/ bug report on this one. I hope others raise Cain about this one, as this is a major step backwards.

What are your experiences with Catalina? I’d love to hear how it is working out for you.