Paul Sheriff

Nashville, Tennessee, United States

Paul Sheriff

Real-World Techniques Explained Simply

Paul has over thirty three years of experience architecting information systems and his expertise is in much demand from Fortune 500 companies. Paul is a top-notch instructor, a pluralsight author, has published 300+ articles, and authored over 14 books on topics ranging from C#, SQL Server and many .NET technologies. Paul has over 24 courses in the www.pluralsight.com library on topics ranging from JavaScript, Angular, MVC, WPF, XML, jQuery and Bootstrap. Paul speaks at many different conferences and user groups around the world.

Current sessions

You Should be Using HTML 5 Features

HTML 5 has a host of new structural and semantic elements that make your web pages more user-friendly. New attributes and input types make your web applications respond better on mobile devices as well. A new set of API's have been added such as geolocation, drag and drop, local and session storage. In this seminar you learn to take advantage of these new features to build great looking and responsive web pages.


WPF Styles, Resources and Templates, Oh My!

This seminar teaches you how to effectively use styles in your WPF applications. You will learn the basics of styles, how to override styles, base styles on other styles, create resource dictionaries and override control templates. Resource dictionaries can be loaded dynamically, placed into DLLs, or right in your main application. You will learn the best practices around how to manage your dictionaries. Being able to change the look and feel of the default controls can go a long way in giving your users a great UI. You will learn to modify controls by changing their default template. At the end of this session you will walk away with a set of reusable styles and resources that you can use immediately in your WPF applications.


Working with Dialogs in WPF

Pop-up dialogs are very common in Windows applications. There are built-in dialogs you can display from WPF. You will learn to call each of the standard dialogs to display messages and ask the users a question like “Yes” or “No”. The standard dialogs don’t look that great when put against a nicely styled WPF application. You will learn to create your own dialog window that you can style and add any kind of message and buttons you want.


What's New in Bootstrap 4

Bootstrap 4 has been recreated from the ground-up using CSS 3 features such as Flexbox. As such, it only supports the latest, stable releases of all major browsers. On Windows, this means only IE 10, 11 and Edge. Many of the old, familiar CSS classes are still available, but have been modified slightly in some cases. And, there are cases where things should be done a little differently. This course provides you with an overview of how to lay out your web pages using Bootstrap 4, while pointing out the differences from Bootstrap 3.


Utilizing the MVVM Design Pattern in WPF

MVVM and WPF go hand-in-hand. This seminar guides you step-by-step on how to take advantage of this powerful design pattern. The main goal of MVVM is to help you develop code that is testable and re-usable, and this can be accomplished by just using MVVM. This seminar shows you how to create your own view model classes and bind them to your WPF screens. You also learn to build a base class on which all your view model classes can inherit.

Learning Objectives
- Use the MVVM design pattern effectively
- Utilize a base class for your MVVM design
- Keep MVVM simple


Utilize Web API Calls from your WPF Application

Many companies already have a Web API interface created. If you are a WPF developer, you can consume those interfaces easily. In this seminar you learn to call a Web API to read, insert, update and delete data. A generic base class is created to simplify the process of calling the Web API.

Learning Objectives
- Build a Web API
- Get and Post data to Web API
- Create a generic base class for calling Web API methods from WPF


Use PouchDB for Offline Web Application Storage

If you need to build an offline web application, you are going to need a way to store your data locally. There are many options for storing data, but using a client-side database provides you with the most options. PouchDB is a great tool for storage. PouchDB provides a consistent API across browsers. It uses a promise-based approach as opposed to a callback approach. This simplifies your code immensely. You will learn the basics of working with offline data in this interactive seminar.


Use JSON Data instead of SQL Server

JSON data is very common in today's programming world. You will most likely need to read files, write files and query JSON data within your applications. One great use of JSON data files is to cache validation table data on the client instead of constantly gathering this rather static table data from the server. This technique comes in very handy in desktop and web applications. You can use JSON files to completely replace a database in some applications. In this seminar you will learn how to perform complete read, add, edit and delete operations on JSON files. You will also see a technique of how to keep your JSON files up to date with any server changes. You will walk away confident that you can put these techniques into use in your applications immediately!


Use MVVM in MVC/MVC Core Applications

The MVVM design pattern has long been used in WPF applications, but has not been prevalent in MVC or MVC Core applications. Using a View Model class in MVC makes good sense as you will learn in this seminar. You are going to be guided step-by-step building an MVC application using the Entity Framework and a View Model class to create a full CRUD web page. Along the way you will learn how MVVM eliminates code from the controller and moves code into a more reusable and testable class.


Use Inheritance and Aggregation to Build Screens in WPF

When you need to create CRUD screens in WPF how can you create them in such a way as to be testable and maintainable? Using control aggregation and class inheritance is a great way to build each piece of the CRUD screen. Your search, list, and editing areas on your CRUD screens can all have their own user control and view model classes. In this seminar you build a user maintenance screen to present a list of users and a place to edit users. You are going to use several different controls and classes to build this complete screen.


Upload Multiple Files Asynchronously

In this seminar you learn how to use jQuery, JavaScript, Ajax and a Web API method to upload multiple files asynchronously. As each file is uploaded, a progress bar is displayed to indicate the progress for each file. In order to accomplish this, you learn to clone an HTML template for each file selected to upload. You also learn to upload additional data with each file. Yes, you can find free, open-source libraries to help you do this, but it is always good to know how these things work under the hood.


The WPF List Box Control Can Do That?!

The ListBox control in WPF is extremely powerful. In fact, after you see all the things you can do with the ListBox you will probably use it more than any other list-type control. In this seminar you will see how to present multiple columns, multiple lines per row, make the list box horizontal, display images, even perform sorting and grouping all with just a little bit of XAML and code. All of this and more is available with this powerful control. Switching templates to display two different sets of information in the same list box and using value converters to format data can really spice up your WPF applications. All these techniques and more will be shown in this fun and informative session. You will walk away with some great reusable code that will be of use to you right away.


The Basics of How to Unit Test your Code

Everyone knows that they should be writing unit tests for their applications, but how many of us really do it? In Visual Studio unit testing is an integrated part of the development environment. There is no longer any reason to avoid not doing test driven development and automated unit testing. In this session you will be introduced to the basics of unit testing, how to run tests, and how to reduce the number of tests by taking advantage of data-driven tests. You will then see an example of how to architect your applications to make testing quicker and easier. At the end of this session you will walk away with the knowledge you need to start automating the testing of your applications.

Learning Objectives
- How to start unit testing
- Create your first unit tests
- Create data-driven unit tests


Take Advantage of HTML 5 Features

HTML 5 has added a host of new structural and semantic elements. New attributes and input types are also available to help make your web applications respond better on mobile devices. In addition, you API's have been added such as geolocation, drag and drop, local and session storage.


Stop Looping and Start LINQing

Do you still find yourself writing a lot of loops, and you can't help but think there must be a better way? Well, you are probably right. LINQ can help you aggregate data, extract data from existing collections, process XML, select data from EF and much more. This seminar shows you common (an uncommon) examples where you might have used loops in the past, and how to translate those into LINQ queries. LINQ is very powerful and generally is much faster than using loops, so start using it today.


Simplify Offline Web Application Storage with PouchDB

If you need to build an offline web application, you are going to need a way to store your data locally. PouchDB is a great mechanism for doing this. PouchDB provides a consistent API across browsers. It uses a promise-based approach as opposed to a callback approach. This simplifies your code immensely. You will learn the basics of working with offline data in this interactive seminar.


Secure WPF Applications

In a typical WPF application you might need to secure any control on any window or user control. There are different ways you need to secure these controls; you may want them to be invisible, disabled, readonly, hidden or collapse. There is no security built-in to WPF, so you must roll your own. This seminar shows an approach to creating a data-driven security system you can tack onto your existing WPF application with just a little bit of code.


MVVM Made Easy for WPF Applications

MVVM and WPF go together like chocolate and peanut butter. This seminar guides you step-by-step on how to take advantage of this powerful design pattern. The main goal of MVVM is to help you develop code that is testable and re-usable, and this can be accomplished by just using MVVM. This seminar shows you how to create your own view model classes and bind them to your WPF screens. You also learn to build a base class on which all your view model classes inherit.


LINQ to XML Makes Working with XML a Breeze

LINQ technology in .NET has some great hooks into XML that make using XML documents very easy. This seminar will explore how you will put this technology to work in your applications. Many XPath queries can be greatly simplified using the LINQ syntax. Besides the obvious advantages of using LINQ to iterate over XML data you can also use it to create and process XML documents. One great way you can use XML is in prototyping. This session will show you how to use LINQ to XML to read and write XML files. You will walk away with a template for creating data access classes for your XML files.


Introduction to HTML / HTML 5

HTML and HTML 5 are the building blocks of web development. In this seminar you are given a thorough overview and understanding of what goes into creating a web page. Learn the basics of HTML elements and attributes through many examples.


Introduction to CSS and CSS 3

Want to make your HTML efficient and easy to maintain? Cascading Styles Sheets (CSS) are the answer. Many developers use an HTML table structure to layout their data input pages. While this works it is not the most efficient, and not very flexible. Learn how to use CSS3 to build input pages that can change without modifying every page and every table in your HTML pages. Learn the new HTML 5 CSS3 tags and how to create cross-browser support for your HTML 5 pages. This seminar will serve as introduction to CSS3 for programmer’s that have had little or no experience with CSS. Many of the new CSS3 rules and properties will be demonstrated such as transform, transitions, resize and column counts.


Integrating jQuery and Ajax in your MVC Applications

Every MVC and Web Forms developer knows that performing a post-back is a time-consuming process. Instead of posting back just to refresh one control like a drop-down list on a page, you can use jQuery and Ajax instead. A typical example is loading one drop-down after selecting a value in another drop-down. In this seminar you learn to create a controller method in MVC that can be called from jQuery to return JSON data. You then learn various methods to process that data to render various list controls on your page.


Improve your Web Pages using Closures and Templating

Many client-side developers struggle with how to use closures. The best way to learn is to take a simple page that does not have closures and convert it to use them. This seminar also presents how to use the mustache.js templating library. This library helps you separate your jQuery code from your HTML when building dynamic pages. Using both of these techniques together makes creating a CRUD page easy.


I Didn't Know the WPF List Box Control Did That!

The ListBox control in WPF is extremely powerful. In fact, after you see all the things you can do with the ListBox you will probably use it more than any other list-type control. In this seminar you will see how to present multiple columns, multiple lines per row, make the list box horizontal, display images, even perform sorting and grouping all with just a little bit of XAML and code. All of this and more is available with this powerful control. Switching templates to display two different sets of information in the same list box and using value converters to format data can really spice up your WPF applications. All these techniques and more will be shown in this fun and informative session. You will walk away with some great reusable code that will be of use to you right away.


Getting Started with Unit Testing in Visual Studio

Everyone knows that they should be writing unit tests for their applications, but how many of us really do it? In Visual Studio unit testing is an integrated part of the development environment. There is no longer any reason to avoid not doing test driven development and automated unit testing. In this session you will be introduced to the basics of unit testing, how to run tests, and how to reduce the number of tests by taking advantage of data-driven tests. You will then see an example of how to architect your applications to make testing quicker and easier. At the end of this session you will walk away with the knowledge you need to start automating the testing of your applications.


Getting Started with MVC Core

Learn how to start building web applications using MVC in ASP.NET Core. MVC is different from Web Forms and a slightly different approach to your thinking is required if you are coming from Web Forms. However, it is not difficult. In this seminar you will get started building your first MVC application.


Getting Started with MVC

Learn how to start building web applications using MVC in Visual Studio. MVC is different from Web Forms and a slightly different approach to your thinking is required if you are coming from Web Forms. However, it is not difficult. In this seminar you will get started building your first MVC application.

Learning Objectives
-Create your first MVC application
-Working with controls
-Handling errors
-Building lists
-Passing data


Get Rid of HTML Tables for Better Mobile Experiences

Using an HTML table is great for devices that have a wider footprint than smart phones. In this seminar you learn to eliminate tables and use some alternate designs for presenting lists of data. Basic device detection techniques are also presented so you can either present a table, or one of these alternate designs depending on the device the user is using.

Learning Objectives
-Build alternate formats for lists of data
-Device detection techniques
-Use CSS to create compelling lists of data


Fundamentals of JavaScript and jQuery

Most development these days is programming web applications. Everything from websites, to mobile apps, to game development. You don't want to miss out. So, hone your skills by becoming proficient at Javascript and jQuery.

The de-facto standard language for programming web pages is JavaScript. If you are new to JavaScript and jQuery, this course is for you. You are introduced to both JavaScript and the jQuery library. You learn to create functions, declare and use variables, interact with, and manipulate, elements on web pages using both JavaScript and jQuery.

After the basics are covered, you learn how to use Ajax calls to call a Web API. A complete CRUD maintenance page is built to illustrate a standard add, edit, and delete page.


From Zero to WPF

Learning XAML for use in Windows Presentation Foundation (WPF) can be a little daunting. This seminar will introduce the basic concepts of XAML and show you how to get started quickly and easily. You will learn how to use Visual Studio to create rich user interfaces in WPF the right way. If you are new to WPF, attend this seminar to see how to move your legacy Windows Forms applications into WPF. The focus on this seminar is using XAML to build business applications in WPF. You will learn to use the various controls you need for a business application, how to use styles for making your application look good, and you will walk away with a ton of samples to help you get your own WPF application started.


Eliminate Code using Data Binding in WPF

Data Binding in WPF is much more than just binding to data in a database. You will learn various methods of using data binding including binding one control to another control, binding to properties in your classes, and having XAML create classes for you. You will learn how to set global settings like font size, colors and other configuration data through easy to use classes. You will also see how to bind to data classes in your back-end database as well. This session will show you how to retrieve data from your SQL Server database and display it in a typical business form. You will learn to use the ObjectDataProvider control to retrieve data and to filter data. You will see a real-world example of a CRUD screen. You will walk away with some useful classes that you can utilize in your own WPF applications.


Easy Image Manipulation in WPF

If your WPF application needs to manipulate images, or work with multi-page TIFF formats, you don't need an expensive third-party library. Using classes that are built into .NET you can read and save images, zoom, scale, pan and rotate. In this session you are going to learn how easy it is to manipulate images within your WPF application.


Cryptography Made Easy

Securing data is essential to all applications these days. The cryptography classes in .NET can be a little daunting to learn. However, once you learn the basics they are fairly simple. In this seminar, you learn to hash data, and to encrypt and decrypt data.

Learning Objectives
- Hashing values
- Encryption and Decryption
- Create wrapper classes to simplify cryptography


Create Your Own SPA using jQuery

There are many frameworks such as Angular and React that help you develop client-side applications in a very structured manner. They help you create Single Page Applications (SPA) where each page, and the logic for each page are created separately. The purpose of this seminar is not to replace these frameworks, but to show you how to use these same techniques using JavaScript and jQuery. You may have a huge investment in JavaScript and jQuery and can’t, or maybe don’t want to, convert to these new frameworks. However, you do want to create a SPA and have a nice structured approach to development using JavaScript and jQuery. In this seminar I present a method to create a SPA using HTML, Bootstrap and jQuery and how to structure your application files.


Create an Address Entry System using Angular

Your boss has tasked you with creating an address entry system that can handle your growing international business. This means you need to be able to handle various address formats in a single screen. You decide to turn to Angular to help you develop this entry system. You are going to develop a set of database tables, Web API calls and a front-end system in Angular to help you meet the goals your boss has set for you.


Create a Title Bar for User Controls in WPF

Using user controls for each of your screens is a great way to build WPF applications. Instead of having multiple windows pop-up on a user's screen, each user control can be loaded onto one main window. However, you do miss out on having a minimize, maximize and close button that a WPF window provides. This seminar shows you how to build a reusable title bar you can add to any user control


Create a Simple ORM using ADO.NET

Are you looking for the fastest method of retrieving data? ADO.NET is the underlying technology for all ORMs such as the Entity Framework, Dapper, NHibernate, etc. However, each of these ORMs add additional overhead which typically translates to slower performance. Most of us don't need, or even use, all the features of these ORMs. This seminar presents a simple ORM where you write a little more code than EF, but less code than others. However, the speed you get is well worth the effort.


Cool Things JavaScript and jQuery Can Do

There is almost no end to what you can accomplish with JavaScript and jQuery. You can detect if your user online or offline, check the device orientation, copy text to a clipboard, copy HTML, switch stylesheets, scroll content, make columns equal height, and detect if your page is the current visible tab in the browser. With just a few lines of JavaScript and jQuery you can accomplish all these things and much more. This seminar presents tons of examples of how to use JavaScript/jQuery to make your web pages look professional.


Cool Features in CSS 3

CSS 3 adds many new features that used to be only possible with JavaScript. New layout methods help you wish responsive design. New functions make creating dynamic HTML quick and easy. Media queries are a powerful way to modify your HTML based on device size. New pseudo classes and filters provide powerful ways to create compelling designs.


Cool APIs in JavaScript

HTML5 and ES6 have added a lot more APIs to the native JavaScript language. All you need is a modern browser. In this seminar you learn to use drag and drop, storing data in session and local storage, playing video and audio, interacting with the webcam on your computer. In addition, you learn about geolocation and how to combine this with google maps.


Become a Web Developer Quick and Easy

If you have not yet made the transition to a web developer, then this seminar is for you! This seminar assumes you have little to no experience using HTML, CSS, Bootstrap, MVC, JavaScript, jQuery or the Web API and would like to become knowledgeable in these standard web building languages. This course is designed for any desktop programmer who wants to learn to develop web applications using .NET and C#. Or, for a web developer who would like to renew his knowledge of the basics of web languages. It is recommended that students are already familiar with Visual Studio, Visual Studio Code, C#, and .NET development.
The HTML markup language is the fundamental building block of web development. You are given a thorough overview and understanding of what goes into creating a web page. The basics of HTML elements and attributes are illustrated through multiple examples.
Want to make your HTML look great, be more efficient, and easer to maintain? Cascading Styles Sheets (CSS) are the answer. This part of this seminar serves as an introduction to CSS. You will learn the best practices for working with CSS in your HTML applications.
Developing websites that are responsive to different size devices is easy when you use the right tools. Twitter’s Bootstrap is the tool of choice these days. Not only is it free, but also has many free themes that allow you to modify the look and feel quickly. Learning bootstrap is easy with the resources available on the web, however, having someone walk you through the basics step-by-step will greatly increase your learning.
Microsoft's MVC Razor language in Visual Studio is a great way to build web applications quickly and easily. In this seminar you are introduced how to get started building your first MVC application.
The de-facto standard language for programming web pages is JavaScript and the jQuery library. You will be introduced to both JavaScript and the jQuery library in this part of the seminar. You learn to create functions, declare and use variables, interact with, and manipulate, elements on web pages using both JavaScript and jQuery.
The Web API is fast becoming a requirement for developers to use to build web applications. Whether you use jQuery, Angular, React or other JavaScript framework to interact with data, you need the Web API. You will be shown step-by-step how to get, post, put and delete data using the Web API.


Consume Web API Calls from WPF

Just because you are a desktop developer, does not mean you can use Web API's that already exist. Many companies already have a Web API interface created, so you should use them if you can. In this seminar you learn to call a Web API to read, insert, update and delete data. A generic base class is created to simplify the process of calling the Web API.

Learning Objectives
-Build a Web API
-Get and Post data to Web API
-Create a generic base class for calling Web API methods from WPF
-Handling exceptions


Asynchronous Programming in JavaScript

Promises and async/await is the modern method of asynchronous programming in JavaScript. In this seminar you see a comparison and contrast between callbacks and promises. You also learn to use the async and await keywords to make working with promises much easier. If you have not worked with promises yet, this seminar is for you as this takes you from beginning to intermediate promise usage.


Apply SPA Techniques to JavaScript Applications

There are many frameworks such as Angular and React that help you develop client-side applications in a very structured manner. They help you create Single Page Applications (SPA) where each page, and the logic for each page are created separately. The purpose of this seminar is not to replace these frameworks, but to show you how to use these same techniques using JavaScript and jQuery. You may have a huge investment in JavaScript and jQuery and can't, or maybe don't want to, convert to these new frameworks. However, you do want to create a SPA and have a nice structured approach to development using JavaScript and jQuery. In this seminar I present a method to create a SPA using HTML, Bootstrap and jQuery and how to structure your application files.


A Message Broker Eliminates Strong Coupling in WPF Applications

A typical WPF application is made up of many pieces. Making sure you don't have references from one piece to another is key to developing any application. User controls and a good messaging system should be the backbone of your WPF applications. Each piece of a WPF window should be built with individual user controls and view models. In this seminar, you create user controls, combine them together, and see how to communicate between them. Creating your WPF applications in this manner takes full advantage of loose coupling principles. Loose coupling makes your application more robust, reusable, maintainable and testable. This seminar shows an application with multiple pieces on a window and how they all interact together, but with no coupling between them.


Tips and Tricks for Importing Data into SQL Server

The SQL Server Import/Export Wizard tool is not a good tool for importing .CSV files. SSIS can sometimes be overkill. In this seminar a free CSV import tool written in C# is illustrated. In addition, you learn a process for importing .CSV data, then massaging that data into a final form from which you perform better reporting on that data. You see some useful stored procedures and functions that can be used to clean up and import data.

Learning Objectives
- Problems with SQL Server Import/Export
- Using a C# utility to import data
- Useful stored procedures and functions for importing data


Getting Familiar with Tag Helpers in MVC Core

Tag helpers can make your HTML easier to read and will make you more productive. In this seminar you learn how to use the new tag helpers in MVC Core. You will be exposed to the built-in Tag helpers such as Anchor, Form, Input, Link, Partial and more. In addition, you learn to build your own custom Tag helper.

Learning Objectives
-Learn the built-in Tag helpers
-See how Tag helpers make your HTML easier to read
-Build a custom Tag helper


Customize Your Web Pages for Each Customer in MVC Core

If you are building a multi-tenant website, you need an easy way to provide a different experience for each customer. This includes different text on pages, different CSS, a different set of menus, and maybe even a different set of pages for specific processes. In this seminar you learn how to parse the URL to pick up a unique customer id and use that to drive everything on your website.

Learning Objectives
- Parse the URL for a unique customer id
- Build a data-driven set of pages
- Build a data-driven menu system


Upload and Store a File Using MVC Core

Many web applications require the user to upload files. The HTML file input allows the user to select a file from their hard drive, but how do you then upload that file? What are the best practices? How can you limit the file size? How can you style the control to match the rest of your site? All of these questions and more will be answered in this step-by-step seminar on how to use the HTML file input control effectively.