Archive for the ‘Macintosh’ Category.

iPhone sync hangs on “Syncing (Step 2 of 4) — Preparing to sync”

If you are like me (and you know you are), I like to regularly sync my iPhone to my MacBook Pro. This is mainly just for tracking what music I listen to, as I do not do backups to my local computer any more.

Alas, there is a fly in the ointment. Lately I have been plugging my iPhone into my MBP, and then from Finder I click on the iPhone on the left and click the Sync button, and along the bottom it stays at “Syncing (Step 2 of 4) — Preparing to sync” and never moves. Here is an example of what it looks like: (You’ll forgive me if I redact some of the more sensitive bits here.)

By the way, this is an Apple Silicon MBP and it is on the latest Sonoma.

I have a solution that seems to work for me, but keep in mind that your mileage may vary, especially since the workaround that I am talking about involves terminating a system process.

So as it turns out, there is a system process running called “MDCrashReportTool” that is somehow interfering with this process. The way that I have been able to get this to complete is to launch the Activity Monitor, then from the CPU tab search for “crash”, and your window will then look something like this:

Double click on the MDCrashReportTool entry, and from the dialog that pops up click Quit, and then click Force Quit. Once you do this, your sync should go through without incident, even if it was hung on step 2 of 4 when you kill the MDCrashReportTool process.

You will have to do this every time you reboot the computer, as the MDCrashReportTool seems to reappear again for me.

macOS VPN adventures

I use a VPN to connect for work, and have been having some macOS VPN adventures with my MacBook Pro. Mostly my problem was that, on occasion, the internet connectivity would not work, as I could connect to the VPN just fine, but any internet requests would just return with a failure.

The way I found to work around this issue was to go into the advanced settings for the VPN and hard code the DNS server of 8.8.8.8 in there. After doing that, it seemed to work much more solidly.

As a bonus tip, if you happen to use VMware Fusion on your Mac to run a Windows VM, I would also recommend going into the network adapter settings for your VM (all of them if you have more than one) by launching your VM and selecting Settings from the Virtual Machine menu, and select the Internet Sharing “Share with my Mac” setting instead of going directly to your Wi-Fi or Autodetect under Bridged Networking, or otherwise your VM will not communicate through the VPN you have running on your Mac at the same time.

Ignore warnings in a specific file in Xcode

If you use any 3rd party or open source code in your iOS or macOS application, you know how deflating it is to get your code all compiling with no errors or warnings, only to have your open source code spit out lots of warnings. If only there were a way to ignore warnings in a specific file in Xcode…

Well as it turns out, you can go into the Build Phases section in your target’s settings, find the file or files you want to disable warnings for, double click on the Compiler Flags, and add in the following entry:

-w -Xanalyzer -analyzer-disable-all-checks

This entry will have the additional benefit of also disabling the Clang static code analysis warning messages for the files, which can be just as annoying as the warnings.

BTW, Happy 60th Birthday to the Wizard, Jordan Rudess of Dream Theater. Jennifer and I saw them here in Columbus tonight as they performed The Astonishing live, and the show was great.

METHOD_LOG

I have a lot more projects that I am working on at my new gig, and as such, I am always looking for my METHOD_LOG definition. It is a quick define that I put in my Objective-C code so that I can log what class and method I am in, without having to type out a description of the class and method into an NSLog statement.

So here is the code for METHOD_LOG, along with a DebugLog define that I use quite often instead of NSLog:

#if defined(DEBUG)
    #define METHOD_LOG (NSLog(@"METHOD_LOG: %@ %s", NSStringFromSelector(_cmd), __FILE__))
    #define DebugLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#else
    #define METHOD_LOG
    #define DebugLog(...)
#endif

BTW, Happy International Caps Lock Day.

Codesign error: “Warning: –resource-rules has been deprecated in Mac OS X >= 10.10”

So you are humming along and everything is going great. Then all of a sudden you start getting the error message “Warning: –resource-rules has been deprecated in Mac OS X >= 10.10”, especially if you are using some kind of tool to re-sign code.

Apparently, in your build settings for your target in Xcode, there is a Code Signing Resource Rules Path entry that is no longer supported. Once this is removed and the app is rebuilt, the message should no longer appear. Of course, if you are re-signing an app that you do not have the source code for, this could be a challenge.

Here is the technical note from Apple that describes the issue:

TN2206

BTW, Happy 60th Birthday to the best rock guitar player of all time, Joe Satriani. I am looking forward to seeing Joe in a few weeks at the G4 Experience on Long Island.

Advent of Code

I have been going through the 2015 version of the Advent of Code, which is a web site that has a bunch of interesting programming puzzles. In an attempt to try to learn something new, I decided I would solve the puzzles using Swift. I am about half way through so far, and the results have been eye opening.

Here is the link to the Advent of Code web site:

http://adventofcode.com

And here is a link to my Github repository with the solutions:

https://github.com/Wave39/AdventOfCode

BTW, Happy Birthday to Mike Keneally, the excellent guitarist and musician who has worked with so many great artists, including Joe Satriani and Steve Vai.

Swift (or in other words, “Et tu, Objective-C?”)

Well the WWDC keynote has come and gone. And what do you know, a developer conference keynote geared towards developers. I guess all those bloggers and press types that took up some of the WWDC tickets from us actual developers are pretty disappointed today, as there were no shiny new devices shown.

The big announcement in my opinion was Swift, which will be the successor to Objective-C for developing on the Mac and iOS platforms. It looks somewhat interesting, as yet again they have lowered the bar and made it much easier to develop software for their platforms. But this is a disadvantage as well as a strength, as folks will continue to churn out the clones and inferior products that clutter up the App Store.

I applaud Apple for creating Swift and not recycling an existing language such as Ruby, Python, or Javascript, as these languages all come with their own baggage. Hopefully I will not be throwing away the 6 years of experience that I have built up with Objective-C and they will allow it to be used for the foreseeable future.

Ah, I miss the days when retain/release separated the men from the boys in the iOS world…

There was some good news in the presentations from yesterday. In the Platforms State of the Union presentation, they indicated that the 100 device barrier for beta testing and internal testing will essentially be rendered moot through Apple’s integration of TestFlight. This feature can’t come soon enough for me, so please hurry up Apple.

BTW, so many birthdays today, not sure where to begin… Kerry King of Slayer (happy 50th), Ian Hunter most famously of Mott the Hoople, Chuck Barris of the Gong Show… But the name that jumps out for me is Tristan Rogers, currently portraying Colin on The Young And The Restless. Happy Birthday, mate!

Easily modifying the play count of a track in iTunes (Mac)

At some point, I must have accidentally put a track on single repeat, as I noticed that I now have a runaway leader in my Top 100 Most Played playlist on my Macintosh. Since you cannot edit the play count field when you do Info on a track, I set out to find a way to do this.

Lo and behold, an elegant solution…

Doug’s AppleScripts for iTunes — New Play Count (link redacted, no longer available)

The script here will ask you for a numeric value, and set the play count of all the tracks you have selected to that value. Score!

BTW, Happy Birthday to both my brother Jeff, and to Mariano Rivera, both born this day in 1969. You may be aware that one of those people is famous and one is not, so for those of you who may not have ever heard of Mariano Rivera, he was a relief pitcher for the New York Yankees.

iPhone/iOS development utilities

I have really been liking a couple of freeware iPhone, iPod touch, iPad, and iOS Simulator tools that I found. They both run great on my iMac, and are super simple to use, while providing some great missing functionality that the Xcode tools do not have.

The first is iExplorer from Macroplant, which allows you to spelunk through the file system of a device connected to your system. It works with stock devices as well as jailbroken devices. Here is the link to download this application:

iExplorer

The other tool is iOS-Simulator Cropper from Curious Times. This tool take screen shots from the iOS Simulator and, shockingly enough, automatically crops them down so that you can use them in your marketing materials or for uploading to the App Store. Here is the link to download this application:

iOS-Simulator Cropper (link redacted, URL not available)

EDIT: I changed the link to iExplorer (the application formerly known as iPhone Explorer), so the link above should not be broken any more.

Garage Band loop browser acting up

This is not so much a development issue as just a general usability issue, but it had frustrated me for a while and I am glad I got the issue behind me.

The problem was that my Garage Band v6 (2011 version) had some problems with the loops. When I would fire up the program, some of the loops in the loop browser showed up sort of grayed out with an arrow next to them. When I click on one of the grayed arrowed loops, I would get a message about how I needed to use Software Update to download the loops onto my computer. However, when I would go to Software Update, it would insist that there were no updates available. Also, when I went back into Garage Band to do the same thing again, it would respond with this message:

You have already initiated the installation of additional content for GarageBand via Software Update. For additional information please open the ‘Software Update’ application.

The battle of wits has begun.

Finally after trying to uninstall and reinstall a couple of times, and after looking through umpteen dozen posts on how this fixed it or that fixed it, I came upon this post on Apple’s web site:

Update the loop library (this link is dead as of 2/23/2012)

Finally I have slain the ROUS that was my loop browser issue.

EDIT:

The link above appears to be dead as of February 23, 2012, a quick Google search for “update the loop library” with specifying the site of apple.com yielded this link on Apple’s web site:

Update the loop library (http://support.apple.com/kb/PH1936) (this link is dead as of 1/8/2017)

I do not recall the exact contents of the now dead link, but from what I remember, I think that link and this one recommended very similar steps of actions.