Click here to Skip to main content
14,238,693 members

Dominic Burford - Professional Profile



Summary

Follow on Twitter LinkedIn      Blog RSS
6,504
Author
2,026
Authority
8,985
Debator
8
Editor
97
Enquirer
127
Organiser
2,550
Participant
I am a professional software engineer and architect with over eighteen 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 enjoy cycling, running and taking the dog for long walks. I love listening to music and am a fan of Rush and the Red Hot Chilli Peppers to name a few.

 
Articles 13 (Prolific)
Tech Blogs 0
Messages 1,140 (Master)
Q&A Questions 0
Q&A Answers 31
Tips/Tricks 14
Reference 0
Comments 93

Reputation

For more 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 frequencysilversilversilversilverAdmin
Bypass spam checks when posting contentsilversilversilversilversilversilvergoldSitebuilder, Subeditor, Mentor, Protector, Editor, Staff, Admin
Store personal files in your account areaplatinumplatinumSitebuilder, Subeditor, Supporter, Editor, Staff
Have live hyperlinks in your profilebronzebronzebronzebronzebronzebronzesilverSubeditor, Protector, Editor, Staff, Admin
Have the ability to include a biography in your profilebronzebronzebronzebronzebronzebronzesilverSubeditor, Protector, Editor, Staff, Admin
Edit a Question in Q&AsilversilversilversilverYesSubeditor, Protector, Editor, Admin
Edit an Answer in Q&AsilversilversilversilverYesSubeditor, Protector, Editor, Admin
Delete a Question in Q&AYesSubeditor, Protector, Editor, Admin
Delete an Answer in Q&AYesSubeditor, Protector, Editor, Admin
Report an ArticlesilversilversilversilverSubeditor, Mentor, Protector, Editor, Staff, Admin
Approve/Disapprove a pending ArticlegoldgoldgoldgoldSubeditor, Mentor, Protector, Editor, Staff, Admin
Edit other members' articlesSubeditor, Protector, Editor, Admin
Create an article without requiring moderationplatinumSubeditor, Mentor, Protector, Editor, Staff, Admin
Approve/Disapprove a pending QuestionProtector, Admin
Approve/Disapprove a pending AnswerProtector, Admin
Report a forum messagesilversilverbronzeProtector, Editor, Admin
Approve/Disapprove a pending Forum MessageProtector, Admin
Create a new tagsilversilversilversilverAdmin
Modify a tagsilversilversilversilverAdmin

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


 
GeneralWriting flexible filters for your data using Predicates Pin
Dominic Burford16-Jul-19 6:11
professionalDominic Burford16-Jul-19 6:11 
GeneralRe: Writing flexible filters for your data using Predicates Pin
Slacker00723hrs 39mins ago
professionalSlacker00723hrs 39mins ago 
GeneralRe: Writing flexible filters for your data using Predicates Pin
Dominic Burford20hrs 31mins ago
professionalDominic Burford20hrs 31mins ago 
GeneralBlocking Asynchronous Code Pin
Dominic Burford4-Jul-19 22:11
professionalDominic Burford4-Jul-19 22:11 
GeneralDesigning and implementing flexible RESTful services Pin
Dominic Burford14-Jun-19 0:50
professionalDominic Burford14-Jun-19 0:50 
GeneralWriting asynchronous code with .NET Pin
Dominic Burford10-Jun-19 3:34
professionalDominic Burford10-Jun-19 3:34 
GeneralWeird Minification Behaviour in ASP.NET Core Pin
Dominic Burford28-May-19 3:54
professionalDominic Burford28-May-19 3:54 
GeneralThe Importance of Structure and Dilligence Pin
Dominic Burford24-May-19 6:14
professionalDominic Burford24-May-19 6:14 
GeneralWhen should you rewrite that legacy application? Pin
Dominic Burford22-May-19 0:03
professionalDominic Burford22-May-19 0:03 
GeneralImproving Your SQL Stored Procedures Pin
Dominic Burford2-May-19 5:47
professionalDominic Burford2-May-19 5:47 
There's an approach that I have been using for several years now that has helped me improve and simplify my stored procedures. This is for stored procedures that return data i.e. SELECT stored procedures as opposed to INSERT or UPDATE stored procedures. This approach is particularly useful where a stored procedure needs to reference more than one table i.e. where there is a JOIN between one or more tables.

Firstly I create a VIEW of the data that I want to query. The VIEW contains all the tables, columns, JOINs etc as necessary. It is from this VIEW that the stored procedure will SELECT its data as necessary. All the stored procedure needs to do then is filter the data from the VIEW with a WHERE clause.

The advantages of this approach is that the VIEW hides the underlying details of all the JOINs. The stored procedures then become simple affairs as they simply SELECT from the VIEW. This leads to simpler stored procedures, and allows a VIEW to be reused across multiple stored procedures. Therefore you don't need to repeat the same complicated JOINs in each of your stored procedures.

Example VIEW
CREATE VIEW [dbo].[v_CardDefinitions] AS
	SELECT 
		CardDefinitions.*,
		Cards.ID AS CardID,
		Cards.ParentID,
		Cards.[Index],
		Cards.UserID,
		Cards.CardDefinitionID,
		Users.Email AS UserEmail,
		Modules.Name AS ModuleName
	FROM 
		CardDefinitions
	LEFT JOIN
		Cards ON CardDefinitions.ID = Cards.CardDefinitionID
	JOIN
		Modules ON CardDefinitions.ModuleID = Modules.ID
	LEFT JOIN
		Users ON Cards.UserID = Users.ID
	WHERE 
		CardDefinitions.Active = 1
Example stored procedure
CREATE PROCEDURE [dbo].[Cards_GetById] 
	@cardId INT
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    SELECT 
		DISTINCT ID, Name, [Permissions] 
	FROM 
		v_CardDefinitions 
	WHERE 
		ID = @cardId
END
So to summarise the approach.

- Create a VIEW of the data that JOINs all the necessary tables
- Create a stored procedure that SELECTs data from the VIEW by filtering the VIEW using WHERE clauses

This is an approach that I use regularly as it simplifies the stored procedures I need to create.
"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

GeneralPassing a list of items to a SQL stored procedure Pin
Dominic Burford27-Mar-19 0:55
professionalDominic Burford27-Mar-19 0:55 
GeneralSoftware development is like plumbing Pin
Dominic Burford8-Mar-19 5:12
professionalDominic Burford8-Mar-19 5:12 
GeneralVersioning a .NET Core 2.2 application Pin
Dominic Burford7-Mar-19 5:04
professionalDominic Burford7-Mar-19 5:04 
GeneralUsing tags with push notifications from Azure Notification Hub Pin
Dominic Burford17-Feb-19 23:21
professionalDominic Burford17-Feb-19 23:21 
GeneralSending Push Notifications with Azure Notification Hub Pin
Dominic Burford25-Jan-19 4:34
professionalDominic Burford25-Jan-19 4:34 
GeneralUnit testing a Xamarin Forms mobile app Pin
Dominic Burford13-Jan-19 21:59
professionalDominic Burford13-Jan-19 21:59 
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 
GeneralDeploy a Mobile app to Azure using Azure DevOps Pin
Dominic Burford21-Sep-18 5:30
professionalDominic Burford21-Sep-18 5:30 

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.