Click here to Skip to main content
15,888,610 members

Dominic Burford - Professional Profile



Summary

Follow on Twitter LinkedIn      Blog RSS
6,554
Author
2,053
Authority
9,852
Debator
8
Editor
100
Enquirer
212
Organiser
2,954
Participant
I am a professional software engineer and technical architect with over twenty years commercial development experience with a strong focus on the design and development of web and mobile applications.

I have experience of architecting scalable, distributed, high volume web applications that are accessible from multiple devices due to their responsive web design, including architecting enterprise service-oriented solutions. I have also developed enterprise mobile applications using Xamarin and Telerik Platform.

I have extensive experience using .NET, ASP.NET, Windows and Web Services, WCF, SQL Server, LINQ and other Microsoft technologies. I am also familiar with HTML, Bootstrap, Javascript (inc. JQuery and Node.js), CSS, XML, JSON, Apache Cordova, KendoUI and many other web and mobile related technologies.

I am enthusiastic about Continuous Integration, Continuous Delivery and Application Life-cycle Management having configured such environments using CruiseControl.NET, TeamCity and Team Foundation Services. I enjoy working in Agile and Test Driven Development (TDD) environments.

Outside of work I have two beautiful daughters. I am also an avid cyclist who enjoys reading, listening to music and travelling.

 

Reputation

Weekly Data. Recent events may not appear immediately. For information on Reputation please see the FAQ.

Privileges

Members need to achieve at least one of the given member levels in the given reputation categories in order to perform a given action. For example, to store personal files in your account area you will need to achieve Platinum level in either the Author or Authority category. The "If Owner" column means that owners of an item automatically have the privilege. The member types column lists member types who gain the privilege regardless of their reputation level.

ActionAuthorAuthorityDebatorEditorEnquirerOrganiserParticipantIf OwnerMember Types
Have no restrictions on voting frequencysilversilversilversilver
Bypass spam checks when posting contentsilversilversilversilversilversilvergoldSubEditor, Mentor, Protector, Editor
Store personal files in your account areaplatinumplatinumSubEditor, Editor
Have live hyperlinks in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Have the ability to include a biography in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Edit a Question in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Edit an Answer in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Delete a Question in Q&AYesSubEditor, Protector, Editor
Delete an Answer in Q&AYesSubEditor, Protector, Editor
Report an ArticlesilversilversilversilverSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending ArticlegoldgoldgoldgoldSubEditor, Mentor, Protector, Editor
Edit other members' articlesSubEditor, Protector, Editor
Create an article without requiring moderationplatinumSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending QuestionProtector
Approve/Disapprove a pending AnswerProtector
Report a forum messagesilversilverbronzeProtector, Editor
Approve/Disapprove a pending Forum MessageProtector
Have the ability to send direct emails to members in the forumsProtector
Create a new tagsilversilversilversilver
Modify a tagsilversilversilversilver

Actions with a green tick can be performed by this member.


 
GeneralApple development sucks Pin
Dominic Burford8-Jan-19 1:09
professionalDominic Burford8-Jan-19 1:09 
GeneralBut the tech giants are private companies Pin
Dominic Burford19-Dec-18 5:31
professionalDominic Burford19-Dec-18 5:31 
GeneralThe latest version of our app nears completion Pin
Dominic Burford7-Dec-18 2:21
professionalDominic Burford7-Dec-18 2:21 
GeneralIs Silicon Valley a force for good? Pin
Dominic Burford27-Nov-18 21:57
professionalDominic Burford27-Nov-18 21:57 
GeneralUsing Javascript to retrieve values from a Xamarin Forms WebView Pin
Dominic Burford27-Nov-18 5:01
professionalDominic Burford27-Nov-18 5:01 
GeneralUsing the MVVM pattern with a Xamarin Forms mobile app Pin
Dominic Burford21-Nov-18 1:13
professionalDominic Burford21-Nov-18 1:13 
GeneralConsuming a private nuget feed in an Azure DevOps build pipeline Pin
Dominic Burford2-Nov-18 6:55
professionalDominic Burford2-Nov-18 6:55 
GeneralBuild a Xamarin.Forms iOS mobile app using Azure DevOps Pin
Dominic Burford8-Oct-18 23:38
professionalDominic Burford8-Oct-18 23:38 
I have been setting up the Azure DevOps builds required for our new mobile app. One for Android and one for iOS. In this article I will focus on the iOS app as this is the one that caused me the most difficulty. There is a degree more difficulty when developing for the Apple platform as you need to have a Mac, certificates and provisioning profiles, so configuring a build for iOS is a little more complex. This is definitely borne out by the number of Stackoverflow posts I found on the various issues I encountered.

Before proceeding, I want to fully clarify something that caught me out. This may seem self evident, but judging by the posts I came across on this issue, perhaps not so much. When running your iOS app from Visual Studio there are two methods of provisioning the app.

- Automatic provisioning - This is useful during development. You need to install a Mac onto your network that is visible to your Visual Studio environment and pair with it. Your Visual Studio environment will then read the necessary provisioning information directly from the Mac (be sure to disable the screen-saver on the Mac or else you'll lose your pairing with it).
- Manual provisioning - This is needed when you intend to build your app from a build server. Unlike automatic provisioning (where your Visual Studio environment just fetches what it needs from the paired Mac), you instead enter the necessary signing identity and provisioning profile information into Visual Studio.

So if you are setting up your iOS app to be built on a build server such as Azure DevOps, you will to use manual provisioning.

When setting up an iOS build you firstly need to select the correct agent pool from Azure DevOps. In this case select the Hosted macOS agent pool. Selecting this provides you with a template consisting of the core tasks necessary for building your iOS app.

- Install an Apple certificate
- Install an Apple provisioning profile
- Build Xamarin.iOS solution
- Copy files to the artifacts staging directory
- Publish the build artifacts

We are also using Visual Studio App Center so I have the following task defined too.

- Deploy to Visual Studio App Center

We intend to use App Center for testing but we haven't set this up just yet.

Installing the Apple certificate and provisioning profile
=========================================================
The Apple certificate and provisioning profile can both be downloaded from your Apple developer account and uploaded to your Azure DevOps build pipeline. The certificate should be in the form of a .p12 file which differs from the .cer file. You may need to open the certificate in XCode on a Mac to generate the required .p12 file. Either way, once you have these files, they need to be uploaded to Azure DevOps. Your build will fail without them.

Build the Xamarin.iOS solution
==============================
Before you proceed to this step, ensure you have set your Xamarin.Forms iOS project to use Manual Provisioning, and set values for the Signing Identity and Provisioning Profile (and these match the previously uploaded certificate and provisioning profile from earlier).On the build task check the box Create app package if you want to create an .ipa file (which is the file that is actually installed onto the devices). If you intend to test your app in any way, then presumably this needs to be checked.

The output from this task should be the required .ipa file.

Copy files to the artifacts staging directory
=============================================
The template makes a good job of this, so this task should need very little configuration. Basically, all the task is doing is copying the generated .ipa file from the build folder to the artifacts folder from where it can be used by subsequent build tasks.

- Source folder - $(system.defaultworkingdirectory)
- Contents - **/*.ipa
- Target folder - $(build.artifactstagingdirectory)

Publish the build artifacts
===========================
This task simply publishes the contents of the artifacts folder from above - $(build.artifactstagingdirectory)

At this point we now have a complete build process that has generated an .ipa file using the latest code changes, and published that .ipa file so that it is available for subsequent build processes such as testing and / or deployment. So at this point you can use your preferred testing / deployment tools of choice. In my case, I have deployed the generated .ipa file to App Center for testing and deployment.

Deploy to Visual Studio App Center
==================================
You will need to configure your build with an App Center token. This authorises your build process to access App Center studio on your behalf. I will write a future article on App Center, but for now it is sufficient to know that I have two apps configured in App Center - one for iOS and one for Android. Once configured, enter the name of the App Center connection into your Azure DevOps task.

If you are using App Center as part of a team then it's a good idea to create an organisation, and assign your developers to the organisation. Then in the App slug you would enter {organisation-name}/{app-name} e.g. myOrganisation/MyAppName.

Now for each build that is triggered, we have a full build pipeline that builds the iOS app and deploys it to App Center from where we can deploy it to actual physical devices (allowing us to monotor analytics, crashes and push notifications).

Setting up this build process has been far from straight-forward. I encountered several problems along the way, and didn't always find answers to my questions. Many times it was down to good old fashioned trial and error, along with a dash of perseverance.
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare

Home | LinkedIn | Google+ | Twitter

GeneralDeploy a Mobile app to Azure using Azure DevOps Pin
Dominic Burford21-Sep-18 5:30
professionalDominic Burford21-Sep-18 5:30 
GeneralSetting up my first build pipeline with Azure DevOps Pin
Dominic Burford19-Sep-18 4:06
professionalDominic Burford19-Sep-18 4:06 
GeneralChoosing a mobile application development platform Pin
Dominic Burford4-Sep-18 1:36
professionalDominic Burford4-Sep-18 1:36 
GeneralExecuting an AJAX request from an ASP.NET Core querystring parameter Pin
Dominic Burford20-Aug-18 5:05
professionalDominic Burford20-Aug-18 5:05 
GeneralBuilding a Document Manager with ASP.NET Core 2.1 Pin
Dominic Burford19-Aug-18 22:38
professionalDominic Burford19-Aug-18 22:38 
GeneralReducing the surface area of the client Pin
Dominic Burford26-Jul-18 21:32
professionalDominic Burford26-Jul-18 21:32 
GeneralUnderstanding what you're doing Pin
Dominic Burford26-Jul-18 3:24
professionalDominic Burford26-Jul-18 3:24 
GeneralSetting environments in ASP.NET Core Pin
Dominic Burford16-Jul-18 21:29
professionalDominic Burford16-Jul-18 21:29 
GeneralCreating a zipped deployment for an ASP.NET Core web application Pin
Dominic Burford28-Jun-18 23:59
professionalDominic Burford28-Jun-18 23:59 
GeneralI’m turning into a Microsoft fanboy Pin
Dominic Burford8-Jun-18 5:45
professionalDominic Burford8-Jun-18 5:45 
GeneralAdding a confirmation dialog to an ASP.NET Core 2.0 form page handler Pin
Dominic Burford7-Jun-18 4:34
professionalDominic Burford7-Jun-18 4:34 
GeneralUploading a file in ASP.NET Core 2.0 Pin
Dominic Burford1-Jun-18 4:07
professionalDominic Burford1-Jun-18 4:07 
GeneralASP.NET Core 2.0 Razor Page Handlers Pin
Dominic Burford15-May-18 0:01
professionalDominic Burford15-May-18 0:01 
GeneralMocking the HttpContext Session object in ASP.NET Core 2.0 Pin
Dominic Burford30-Apr-18 4:31
professionalDominic Burford30-Apr-18 4:31 
GeneralUsing ViewComponents in ASP.NET Core 2.0 Pin
Dominic Burford16-Apr-18 22:49
professionalDominic Burford16-Apr-18 22:49 
GeneralWeb application metrics with Application Insight Part 2 Pin
Dominic Burford10-Apr-18 22:50
professionalDominic Burford10-Apr-18 22:50 
GeneralWriting flexible code in ASP.NET Core 2.0 Razor Pages Pin
Dominic Burford3-Apr-18 5:06
professionalDominic Burford3-Apr-18 5:06 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.