True Offline Apps

True offline apps allow the user to work without an Internet connection. They have a substantial cache of all the data that the user needs to operate. They allow a queue mechanism to store data entry until a network connection is available. Twitter and Facebook are often held up as “offline” apps. But unless an app does offline first with a sync mechanism, it is not offline.

Twitter requires an internet connectionFacebook could not load post

When Visual Studio and Visual Studio for MacOS are truly merged…

The file close context command will be unified.

On Visual Studio, right click on a file tab, “Close All But This.”

On Visual Studio for MacOS, also known as Xamarin Studio, select a file tab, and the context menu is “Close Others.”

Just realigning that bit tells me that Microsoft is serious about merging the tool.

Raspberry Pi Array


The Raspberry Pi Zero is not a very large computer at all. The case for the Zero was $1 more than the board itself!

Right now I have two Raspberry Pi 2 computers and a Raspberry pi 0.

On The Zero I have the sdltrs TRS-80 emulator running.

There were a number of issues I had to go through and packages to update to make the app for Raspian OS.  (And of course, now that I have done it, all my shell history has cleared before I could add it to my notes.) On the screen is the Great Wave game written long ago by friend Troy Lyndon.

On the Windows PC, I run this emulator from Matthew Reed. He has done  a great job.

The whole array is watched from the RealVNC VNC Viewer.

Migrating from XCode 7 to XCode 8 with Jenkins Continuous Integration

During the latest iOS release, a new version of XCode was released. We have continuous integration using Jenkins installed on a Mac. It has XCode and Xamarin installed. We encountered problems in the initial rollout to the build server of XCode.

But, I have worked out what the trouble was with XCode 8. It does not seem to have anything to do with XCode itself, but the fact that XCode 8 uses a different svn client.

  • XCode 8 installs SVN client tool for Subversion 1.9, where the previous version was 1.7 in /usr/bin/svn. The 1.9 client cannot handle reading a 1.7 repository. The current version of Jenkins SVN plugin is set to check out at 1.7, and does not have support for 1.9, although it could be updated. There was a call in the script to get the svn revision number ( REVISION=`svn info ../.. | awk ‘/^Last Changed Rev:/ {print $NF}’` ). This was necessary for CruiseControl on the old Mac Build server, but is no longer necessary in Jenkins because I have added an SVN Revision variable in the Jenkins configuration.
  • Modifiying the Info.plist has been a vexing problem, because the Jenkins build would report this error every time I modified the Info.plist, no matter how I did it.

Encountered unknown tag <<<<<< on line 59

Error Reading File: ../Containers/Touch.Container/Info.plist

Encountered unknown tag <<<<<< on line 59

Error Reading File: ../Containers/Touch.Container/Info.plist

Xamarin Studio Build Tool

It was actually reporting this because the Subversion client was failing to merge on the svn update for the next build. The merge conflict exists because we use a tool called “Plistbuddy” to alter the Info.plist with the build number. It actually re-arranges the XML significantly. Then the next svn merge puts text in like >>>>>>>.mine. The workaround is twofold:

  1. Go to Jenkins and clear the workspace so that the new Info.plist gets read and no merge occurs
  2. Set the svn update in Jenkins to be “revert and update” not just “update”.


Windows Phone Is Out Of Time

I’m in a very small minority of people who have tried a Windows Phone. I have experience with two phones, the HTC Titan and the HTC One M8. I never tried any of the Nokia phones, which many people had. From the start, there was no excitement for the Windows phones. Here are some of my thoughts on the reasons to not push the Windows phones, which were apparent four years ago.

Apps: easy enough, Android and iPhone already had a huge head start on apps, with significant market penetration. Some of the Windows phone apps that did appear, were superior than their counterparts for a while. This was probably because the teams focused on the new platform for a release.  Ultimately, no further development was done when the audience did not show up.

Marketplace: The carrier retail locations did not push them. You had to ask specifically, and then they would talk about them. I am not sure what the markup or kickback was, but it must not have been significant enough to give these phones a try. I don’t know what was spent on marketing these, but it was not enough and not in the right places

Popularity: Not many people had them. They were not going to become popular unless they had something that was really outstanding.

Cool factor: They were “Microsoft” phones. Despite their range of productions and familiarity, “Microsoft” and “Windows” are not “cool” brand names. People speculated that there would have been more success if they had been branded “XBox” phones. The XBox people were probably afraid it would dilute the brand. Nokia was cool, but they are all dead now.

Music: Microsoft had already fallen down with the Zune player, which was a joke by the time the Windows phones came around. But you still used the Zune software to load music. Apple had really set the bar high here with iTunes and the Apple store. The iTunes software may be a horribly unreliable sync tool (which even MacWorld has admitted), but it is a great retail tool and great free music organizer.

At this point the main apps I use are failing. The Amazon Windows app is suspended as of August 15, 2016. The Fitbit app is very slow to sync, and now poor in comparison with the iPhone version. The MapMyRun has not been syncing for at least a year. But it makes nicer run screen shots than the iPhone version. The LinkedIn app is way behind the iPhone version. The iPhone camera has jumped ahead of the HTC cameras and photo apps.

The live tiles are still cool. The Microsoft Solitaire is still the best. But honestly, you cannot play Pokemon Go on a Windows phone.

So, why did I stick with it for so long? I think the easy answer is that because I work with iPhones all day, it was kind of like a holiday. I have a work iPhone that I could turn to if I wanted. The fact that I rarely wanted to told me that what I had was good. But, now that I have an iPhone SE with iOS 9, I find myself using it more and more.


Apple iOS9 and Enterprise distribution certificate trusting


Apple iOS9 has made changes to how you trust enterprise certificates.  Previously you could trust a profile the first time you ran an application from an alert.  Now you need to go to Settings à-> General -> Profiles and trust the profile there.

For example, with iOS 9 , when you try to launch App Market, you may see this alert.


There may in fact be no message at all, the app may fail to launch at all.

Go to Settings -> General. Select Profiles & Device Management.



Select your Enterprise App Profile.



Click on ‘Trust {your app}.



Click on the ‘Trust’ button on the popover.


Your enterprise application, and any other apps signed with your distribution certificate should be listed under the Apps from Developer “iPhone Distribution: {your companyt}”.


Two more project motivational posters

These have made the wall of fame now for our project.

The final feature that breaks the team’s back could be that one that just must be added!



Not My Circus, Not My Monkeys!




Our new project mantra

Calm Down!

Honest Abe, from the Whitest Kids You Know


And the real Honest Abe


Add your Xamarin App to Crashlytics

Here are the steps that I followed
1.) In the Xamarin Studio , go to the touch container and add the Crashlytics API key in the Build -> Crash reporting section. Build and run that app. The evidence suggests that is enough to get data sent to Crashlytics. I saw that it knew about older versions of the app I had built and ran weeks ago with the API key already in.
2.) Go to Xcode and create a new project with the same name as the Xamarin project, com.{company}.{appname}. (You probably need to have that profile downloaded.) I did it in Swift by the way with no issues.
3.) Go to com and go to settings -> Apps (or
4.) You will get an app to download and run. The app walks through the steps of adding
A.) A build phase run script
B.) Code to the application main Crashlytics.startWithAPIKey(“nnnn”)
5.) Run your Xcode version of the app

The Crashlytics web page popped up immediately.


Apple Lightning Cable Magic Knot

When you go into the Apple store, you might get your cable tied into their magic knot. We were there because the replaced iPod crapped out. We got another new iPod. They replaced the first one with a cracked screen at no charge. Thanks Apple!

Lightning Cable USB Knot

What happens to your cable at the Apple Store

Proudly powered by WordPress
Theme: Esquire by Matthew Buchanan.