Migrating your iPhone contacts to your Android phone

I recently moved from an iPhone to an Android phone.  My immediate concern was how to move my contacts over between the two devices. iCloud backup of my contacts really came in handy for this.

First, make sure to have your contacts backed up to iCloud.

Log in to iCloud at https://www.icloud.com/ using your Apple ID and proceed to the contacts page. Select all of the contacts (CTRL+A for Windows, COMMAND+A for Mac), click the gear on the bottom left, and select export as vCard.

Now log in to your Google Contacts using your Google account. Click import and select the vCard file you just exported.

Upon completing the import, make sure to review your contacts and merge any duplicate contacts that may have resulted from the import. This is the perfect opportunity to clean up your contacts before syncing them with your phone.

Fixing crashed WordPress comments

I recently noticed that I had lost all my comments from the Enterpriseyness blog (this website, a WordPress site). I decided to look at the database table that stores my comments. By default, the comments are stored in wp_comments but you have the option to use any prefix other than ‘wp’ when you are setting up your WordPress site.

I decided to take a look at the comments table for some clues and was presented with the following error message:

#144 - Table './###/wp_comments' is marked as crashed and last (automatic?) repair failed

I am not a heavy MySQL user so I went off to Google and came across a few ideas. Before anything else, I made sure to back up my current database. Things are bad, I don’t want them getting worst. The first idea I came across was to simply attempt to repair the table manually

repair table wp_comments


This immediately brought my WordPress comments back. You can learn more about repair function on MySQL’s website.

Fixing the GoDaddy WordPress FTP credentials issue

Over the past few years, people have been writing about an intermittent issue with WordPress sites hosted on GoDaddy where upon trying to update the WordPress site, the user is prompted for FTP credentials but the credentials are not accepted.This issue doesn’t seem to occur on fresh installations and no one is quite sure what is causing the issue.

Though people have been having this issue primarily on GoDaddy hosted WordPress sites, it’s a GoDaddy feature itself that allows you to address the issue.

  1. Log in to your GoDaddy hosting account and proceed to the web Hosting Details page for your site.
  2. At the top of the page, you will see the Homepage Snapshot

    Homepage Snaphot
    Homepage Snaphot
  3. Click on Manage WordPress get a list of applications you have installed on your hosting account.
  4. Select the site you are experiencing the issues on and click “Update to x.y.z”. As of writing this blog entry, the latest version is 3.5.1

    Update to new version
    Update to new version
  5. Confirm the upgrade

    Confirm the upgrade
    Confirm the upgrade
  6. The interface will update to show the installation process

    Updating display
    Updating display
  7. Once the installation is complete, log in to your site’s dashboard and you will be presented with the chance to update the underlying database for your WordPress site. Click the button to update the database and your site will be up and running with the new version of WordPress. If you proceed to your plugins page, you will be able to update your other plugins using the regular process.

A review of Themify’s Minshop theme

Minshop is a responsive WooCommerce theme from the good people at themify.me. In building out the eCommerce solution for The Men’s Fashion, Minshop has allowed us to jump start the front end thus saving weeks of design effort and allowed us team to deliver a working product in minimal time.

Responsive Layout

Minshop is an HTML5 WordPress theme with a responsive layout that optimizes the view for both desktop and mobile audiences. You can test out the response layout for yourself by resizing your browser window. The “mobile” view is accessible on your desktop if you re-size your browser to 480 pixels. The entire top navigation becomes a mouse/touch enabled menu that is easier to navigate in a mobile browser.

Layout and Design

Minshop offers a minimal interface but also allows you to choose from a variety of skins to help you get your store out the door as quickly as possible. The responsive theme looks great on both desktop and tablet/phone browsers out of the box.


The slider feature has been instrumental in showcasing new and featured products.

Social Sharing & Open Graph

Out of the box, the Minshop theme generates the OpenGraph tags that will control how your pages’ content are displayed when shared on Facebook, Pinterest, and any other OpenGraph enabled service.

Search engine optimization

Minshop implements the following Schema.org schemas

  • http://schema.org/Offer
  • http://schema.org/Product

Feature Wish list

There are a few additions I would love to see the Minshop team make on their great theme.

  • More HTML5 semantic markup
  • The ability to have the copy for the Shop page show to the left or right of a 2 or 3 column grid of products

ASP.NET MVC4 Project + SQL CE 4 limitations

With the official RTM release of Visual Studio 2012 and the MVC 4 project (also available for VS 2010), I have been using some of the features of new features and out of the box features of hte MVC 4 project to ease the development of my user stories.

SQL CE 4 made database backends much simpler by allowing developers to utilize a SQL engine even if you don’t have it installed on your computer and the zero-config usage is great. SQL CE does have some its limitations and the OAuthWebSecurity class  exposes one such limitation: Transasction Scopes.

Given a development environment with a SQL CE 4 database, you can register a number of authentication providers such as Facebook and Google out of the box with no issues.

Dictionary<String,Object> facebookPermissions = new Dictionary<string,object>() ;
facebookPermissions.Add( "scope", "email" );
  appId: "My Facebook App ID",
  appSecret: "My Facebook App Secret",
  displayName: "Facebook",
  extraData: facebookPermissions


The limitation materializes when trying to disassociate the authentication provider (in this case, Google) from the base account. If you are using SQL CE 4 and the code made available to you with the out of the box ASP.NET MVC 4 project, you will get the following error when attempting to disassociate the account with the OAuth provider.

The connection object can not be enlisted in transaction scope.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: The connection object can not be enlisted in transaction scope.

Source Error:

Line 110: using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.Serializable }))
Line 111: {
Line 112:  bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name));
Line 113:   if (hasLocalAccount || OAuthWebSecurity.GetAccountsFromUserName(User.Identity.Name).Count > 1)
Line 114:   {

Hosted source control and project management with Subversion and Team Foundation Server

I have been using Subversion for many years both professionally and on open source projects (mainly Razor Image Viewer). Initially, I had Subversion running as a service on my local computer but the more I thought about a strategy for backing up my work, the more it made sense to use a hosted environment. The $25 dollars a year it costs me for a hosted source control service wouldn’t even cover the electricity for my own server.

I am currently using a hosted Subversion and TRAC with ProjectLocker. The hosted service allows me to focus on my development and other project without the need to maintain a server or keep it on all the time. I love TRAC’s custom workflows but it doesn’t offer the breadth of capabilities required for application lifecycle management (ALM).

I have used Microsoft’s Team Foundation Server and am more and more impressed by it as it has matured since its initial version in 2005. With the release of Team Foundation Server 2012, there will also soon be a TFS Express solution available to teams of 5 for free. Currently, Microsoft is offering a free web based preview of Team Foundation Service hosted online (under the hood, it’s a farm of Azure VMs). I am using this for a couple projects and will be writing more about this soon.

If you are using Visual Studio 2010 you will need to install a hotfix in order to connect Visual Studio 2010 with the TFS Preview hosted source control. Microsoft’s website makes you jump through a few hoops before directing you to the download page for hotfix KB2581206. Visual Studio 2012 connects properly to the hosted Team Foundation Service out of the box.

To connect Visual Studio 2010 to your TFS Preview repository, the Getting Started with Visual Studio page incorrectly states to use the full project URL https://fabrikamfiber.tfspreview.com/DefaultCollection/FabrikamFiber (to end the URL with your project’s name). The correct URL for your Team Foundation Server is https://fabrikamfiber.tfspreview.com/DefaultCollection, for example. Visual Studio will provide you a list with the projects to which you can connect.

Brian Harry has written more about TFS Express

iOS ‘native’ web apps with HTML5

I’ve been considering iOS development recently but I don’t have a Mac on which to develop. Alternatively, I have been looking into HTML5 ‘native’ web apps. These are web apps that look and feel like native iOS applications.

I am using my Batch Image Resize web app for my R&D on this topic.


The web app can be installed via Safari’s ‘Add to Home Page’ feature.

It looks like a native App

As per the Apple Developer Guide, adding the elements below will allow the site to act like a native app when access from your iOS device.

‘apple-touch-icon’ defines the image to use for the icon.

‘apple-touch-startup-image’ defines the splash screen image.

The ‘apple-mobile-web-app-capable’ meta tag allows the page opened via your home screen to behave like a native app. When I open the ‘app’, I see it in full screen browser with no address bar at the top or any of the menus at the bottom.

<link rel="apple-touch-icon" href="/path/to/custom-icon.png"></link>
<link rel="apple-touch-icon-precompsed" href="/path/to/custom-icon.png"></link>
<link rel="apple-touch-startup-image" href="/path/to/startup-image.png"></link>
<meta name="apple-mobile-web-app-capable" content="yes"> <!-- Full Screen --></meta>



Deploying an ASP.NET Web Application with SQL CE 4 & Entity Framework without installation

Update – 12/15/2011

As of Visual Studio 2010 SP1, there’s an easier way to do everything below.

In the Solution Explorer, right click the project and select ‘Add Deployable Dependencies…’, select the dependencies you want to include, and click OK.

Visual Studio 2010 - Add Deployable Dependencies

This will generate the folder _bin_deployableAssemblies with the proper DLLs. Now when you build your solution, the DLLs in _bin_deployableAssemblies are copied to the bin folder.

See Scott Hanselman’s post for a more thorough explanation.

Original Post

I have built an ASP.NET project using SQL CE 4.0 and Entity Framework 4.1. When the time came to deploy the web application to our managed environment, I ran into some issues due to some missing references.

Do to the nature of our hosted environment, installing the EntityFramework and SQLCE4 libraries was not an option but I have worked out all of the required steps to get the web application working in the deployed environment.

Referenced Libraries

The following libraries should be referenced in your project.


Make sure to set the Copy Local property to true.

Manual Copy

The following files should be copied as part of your build script process. These files are placed on your file system when you install the SQL CE 4 package.



On my development box, the machine.config has been modified (when I installed SQL CE 4) to include the SQL CE 4 provider. To use the provider without explicitly installing it on the server, we need to manually add the provider in the Web.config

      <remove invariant="System.Data.SqlServerCe.4.0" />
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />

Login/Register page design

Getty Login

I recently went to the Getty Villa website to get some tickets and came across their login/registration screen. Sadly, their page looks like the type of examples used in hyperbole-filled academic books on how NOT to design the login page. The notes defined here can be applied to most any user interface design.

Consistency of Design

There are three options associated with this part of the user interface: Log In, New User (registration), and Forgot Password. These three ‘associated’ features each have a different visual design. I’m not saying they should all look the same, but the differences in size, bolding, placement, and inconsistency of spaces made for a confusing UI.

The right edge of the ‘Log In’ and ‘Forgot Password?’ buttons should be flush. Personally, I would have placed the ‘New User?’ (what’s with the question mark?) above the log in box. This would allow the UI to explicity differentiate between new and existing users.

Breaking Change in Cruise Control .NET 1.6

Building on my earlier post about Setting up Cruise Control .NET 1.5/1.6 on Windows 7 + IIS7, I have identified a breaking change with CruiseControl .NET 1.6.x.

For readability, I like to place each -D flag in my <buildArgs> definition on a separate line

    -D:LocalDeployRoot=D:cideployMyProject </buildArgs>

however in upgrading to version 1.6.x, I have come across a breaking change. Using the same script in my 1.6.x implementation, I was getting the eror message Target ‘ ‘ does not exist in this project. I confirmed that the NAnt script worked by calling it directly with the same parameters that I was defining via my CCNET project configuration.

After looking into the issue for a while (and even posting a question on StackOverflow) I found a clue when reading through the server log. I noticed that the target was being specified to nant.exe following the <buildArgs> definitions along with the white spaces and newlines. Removing the white space and newlines resolved the issues.

<buildArgs>-D:SolutionFile="$(Batch_WorkingFolderTrunk)MySolution.sln" -D:LocalDeployRoot=D:cideployMyProject</buildArgs>

I have logged a bug report with the Cruise Control .NET team regarding this issue.