Click here to Skip to main content
15,507,012 members

Dominic Burford - Professional Profile


Follow on Twitter LinkedIn      Blog RSS
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.



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


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.

GeneralIs your software team a democracy or a dictatorship? Pin
Dominic Burford16-Oct-17 22:44
professionalDominic Burford16-Oct-17 22:44 
GeneralSimplifying updating data Pin
Dominic Burford21-Sep-17 23:46
professionalDominic Burford21-Sep-17 23:46 
GeneralWhen 100% code coverage is not always enough Pin
Dominic Burford21-Jul-17 6:11
professionalDominic Burford21-Jul-17 6:11 
GeneralThat's the app in the app stores Pin
Dominic Burford18-Jul-17 6:00
professionalDominic Burford18-Jul-17 6:00 
GeneralDefensive Programming Pin
Dominic Burford28-Jun-17 8:23
professionalDominic Burford28-Jun-17 8:23 
GeneralMy first year - How time flies Pin
Dominic Burford19-Jun-17 2:40
professionalDominic Burford19-Jun-17 2:40 
GeneralShould software architects write code? Pin
Dominic Burford16-Jun-17 5:22
professionalDominic Burford16-Jun-17 5:22 
GeneralEnsuring your data is safe with Azure SQL Database Pin
Dominic Burford2-Jun-17 3:24
professionalDominic Burford2-Jun-17 3:24 
Critical to any business is its data. Data is king. So it's vitally important to ensure you have a plan to restore your data should anything untoward happen to it. From accidental user error, to application error, to an outage, fire or flood. There are many ways in which data can be lost or its integrity compromised.

So it's important to ensure you have regular backups, and that you perform regular restores of that data. After all, you don't want to find out after you have lost all your data, that there is a problem with your backup making it impossible to restore it.

If you are using Azure SQL Database (ASD) for your data storage, there are a range of options available to you. I won't go through all of them, as there are plenty of articles online already. I'll just describe the options I have chosen for our particular application and business needs.

ASD provides several business continuity features including automated backups and optional database replication. Each type of business continuity feature has different characteristics for estimated recovery time (ERT) and potential data loss for recent transactions. Understanding these ensures you can make an informed decision with regards to the needs of the business.

The business continuity needs of the business will depend on several factors including:

- Is the data mission critical?
- Is the data bound to an SLA? Will the loss of data result in financial liability?
- Does the data have a low rate of change? (the data changes infrequently such that losing data for a certain period of time is acceptable)
- is the data cost sensitive?

In conjunction with the estimated recovery time (EST) mentioned earlier, there are two other important factors to understand when considering the business continuity of your business.

- Recovery Time Objective (RTO) is the maximum acceptable time before the application fully recovers from a disruptive event
- Recovery Point Objective (RPO) is the maximum amount of recent data updates (time interval) the application can tolerate losing when recovering after the disruptive event

ASD automatically creates database backups at no additional charge. They occur straight out the box. You don't need to do anything to make them happen. Database backups are an essential part of any business continuity plan because they protect your data from accidental corruption or deletion. If you need to keep your backups longer than the default storage period, then you can configure a long-term backup retention policy. The default retention policy on the Basic tier is 7 days, whilst for the Standard and Premium tiers it is 35 days.

ASD creates full, differential and transaction log backups. The transaction log backups generally occur every 5 - 10 minutes, with the frequency based on the performance level and amount of database activity. Transaction log backups in conjunction with full or differential backups, allow you to restore to a specific point-in-time to the same server that hosts the database.

In addition to getting automated backups, I then configured Geo-Replication. Active Geo-Replication (AGR) enables you to configure readable secondary databases in the same or different data centre locations (or regions). Secondary databases are available for querying and for fail-over in the case of a data centre outage, or in the event of being unable to connect to the primary database. When you configure a secondary database, you give it a name and login credentials, as you would with any other database. This allows you to connect to a secondary database in exactly the same way as you would the primary (or any other) ASD. After a fail-over, the new primary has a different connection endpoint.

So in the event of a disruptive event that causes the outage of the data centre that hosts your ASD, you can automatically fail-over to a secondary database in a completely separate region. You are able to configure up to four of these secondary databases. You can initiate fail-over to any one of these secondary databases. Once fail-over is activated to one of your secondary databases, this then becomes the new primary database. All other linked secondary databases automatically link to the new primary. You can configure automatic fail-over or manual fail-over, whichever best suits the needs of the application and the business.

I haven't even scratched the surface of ASD and its business continuity features. I hope to return to this topic in a future article. As I've said before, everything about Azure is fantastically easy to use and configure (either through the Azure portal, Azure Powershell or the REST API), and this is certainly true with regard to its database features. If your data is important to you, then check out the features in Azure SQL Database.
"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

GeneralWhat makes a Senior Software Engineer? Pin
Dominic Burford30-May-17 22:53
professionalDominic Burford30-May-17 22:53 
GeneralMore Software Interview Skills 101 Pin
Dominic Burford25-May-17 7:03
professionalDominic Burford25-May-17 7:03 
GeneralSoftware Interview Skills 101 Pin
Dominic Burford12-May-17 6:44
professionalDominic Burford12-May-17 6:44 
GeneralBeat the Thrashing Pin
Dominic Burford5-May-17 7:03
professionalDominic Burford5-May-17 7:03 
GeneralWorking with Azure Blob Storage Pin
Dominic Burford27-Apr-17 3:29
professionalDominic Burford27-Apr-17 3:29 
GeneralWrestling with Apple Pin
Dominic Burford20-Apr-17 4:37
professionalDominic Burford20-Apr-17 4:37 
GeneralTwo unit tests, zero integration tests Pin
Dominic Burford10-Apr-17 23:39
professionalDominic Burford10-Apr-17 23:39 
GeneralThe Mediocre Mindset Pin
Dominic Burford29-Mar-17 2:10
professionalDominic Burford29-Mar-17 2:10 
GeneralHow much code coverage is enough? Pin
Dominic Burford21-Mar-17 6:14
professionalDominic Burford21-Mar-17 6:14 
GeneralThe Mythical Full Stack Developer Pin
Dominic Burford14-Mar-17 4:18
professionalDominic Burford14-Mar-17 4:18 
GeneralCreating your own private NuGet server Pin
Dominic Burford2-Mar-17 1:36
professionalDominic Burford2-Mar-17 1:36 
GeneralConsuming a dependency using NuGet Pin
Dominic Burford28-Feb-17 7:05
professionalDominic Burford28-Feb-17 7:05 
GeneralCoding Standards Pin
Dominic Burford24-Feb-17 7:02
professionalDominic Burford24-Feb-17 7:02 
GeneralSoftware Architecture Challenges Pin
Dominic Burford17-Feb-17 2:31
professionalDominic Burford17-Feb-17 2:31 
GeneralGetting the Most Out of Your Unit Tests Pin
Dominic Burford9-Feb-17 10:21
professionalDominic Burford9-Feb-17 10:21 
GeneralBuilding a strong development team Pin
Dominic Burford8-Feb-17 7:31
professionalDominic Burford8-Feb-17 7:31 
GeneralLast pieces of the mobile app in the Web API puzzle Pin
Dominic Burford27-Jan-17 6:03
professionalDominic Burford27-Jan-17 6:03 

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.