One of the things my boss asked me to do before I leave Farm Bureau for the bustling Bay Area was to put together some resources related to using Visual Studio Team Services. One of my co-workers on the database team also asked me to put together some resources for learning git. So, to that end, I pieced together a few things that would make my absence less disruptive.
As part of the process, I ended up uncovering a few presentation that delved pretty deep under the covers. Now, these are lessons that are best consumed by one who is already pretty familiar with git basics, but I think the reward is a deeper, richer understanding of git behavior that can make us more effective with the tool. I'm not going to rehash everything that is in the videos (just watch the videos, they're excellent), I'll just provide a link and a brief synopsis.
Friday, December 29, 2017
Tuesday, November 7, 2017
Microsoft 70-487: Design a Web API
Exam Objectives
Define HTTP resources with HTTP actions; plan appropriate URI space, and map URI space using routing; choose appropriate HTTP method (get, put, post, delete) to meet requirements; choose appropriate format (Web API formats) for responses to meet requirements; plan when to make HTTP actions asynchronous; design and implement routesQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 4.1
[Blog] Using HTTP Methods (GET, POST, PUT, etc.) in Web API
[Apigee] Web API Design: Crafting Interfaces that Developers Love
[HackerNoon] RESTful API Designing guidelines — The best practices
[MSDN] Web API Routing
[Blog] Using HTTP Methods (GET, POST, PUT, etc.) in Web API
[Apigee] Web API Design: Crafting Interfaces that Developers Love
[HackerNoon] RESTful API Designing guidelines — The best practices
[MSDN] Web API Routing
[MSDN] Media Formatters in ASP.NET Web API 2
[MSDN] REST URI Support in Web API - Converting UriTemplates to Routes
[PluralSight] Implementing an API in ASP.NET Web API
[Blog] ASP.NET MVC and Web API - Comparison of Async / Sync Actions
[MSDN] REST URI Support in Web API - Converting UriTemplates to Routes
[PluralSight] Implementing an API in ASP.NET Web API
[Blog] ASP.NET MVC and Web API - Comparison of Async / Sync Actions
Tuesday, October 31, 2017
Microsoft 70-487: Choose a deployment strategy for an Azure web application
Exam Objectives
Perform an in-place upgrade and VIP swap; configure an upgrade domain; create and configure input and internal endpoints; specify operating system configuration; deploy applications using Azure Web SiteQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 5.2
[MSDN] How to update a cloud service
[MSDN] How to manage cloud services
[Blog] What is Windows Azure Fault Domain and Upgrade Domain?
[MSDN] Set up staging environments in Azure App Service
[PluralSight] Windows Azure Web Sites
[GitHub] Publish to Azure using Web Deploy
[MSDN] How to update a cloud service
[MSDN] How to manage cloud services
[Blog] What is Windows Azure Fault Domain and Upgrade Domain?
[MSDN] Set up staging environments in Azure App Service
[PluralSight] Windows Azure Web Sites
[GitHub] Publish to Azure using Web Deploy
[GitHub] Setting up a VSTS account so it can deploy to a Web App
[MSDN] Azure Exam Prep – Fault Domains and Update Domains
[MSDN] Enable communication for role instances in azure
[MSDN] Azure Guest OS releases and SDK compatibility matrix
[MSDN] Deploy your app to Azure App Service using FTP/S
[MSDN] Azure Exam Prep – Fault Domains and Update Domains
[MSDN] Enable communication for role instances in azure
[MSDN] Azure Guest OS releases and SDK compatibility matrix
[MSDN] Deploy your app to Azure App Service using FTP/S
Monday, October 23, 2017
Microsoft 70-487: Create, configure, and publish a web package
Exam Objectives
Quick Overview of Training Materials
Exam Ref 70-487 - Chapter 5.5
[MSDN] Web Packaging: Creating web packages using MSBuild
[MSDN] Building and Packaging Web Application Projects (pre-VS2013)
[MSDN] Web Deployment Overview for Visual Studio and ASP.NET
[MSDN] How to: Edit Deployment Settings in Publish Profile
[Blog] How to build and deploy a web deployment package using MSBuild
[MSDN] Web Deployment Operation
[MSDN] Web Deployment runCommand Provider
[MSDN] Excluding Files and Folders from Deployment
[MSDN] Web Packaging: Creating web packages using MSBuild
[MSDN] Building and Packaging Web Application Projects (pre-VS2013)
[MSDN] Web Deployment Overview for Visual Studio and ASP.NET
[MSDN] How to: Edit Deployment Settings in Publish Profile
[Blog] How to build and deploy a web deployment package using MSBuild
[MSDN] Web Deployment Operation
[MSDN] Web Deployment runCommand Provider
[MSDN] Excluding Files and Folders from Deployment
Friday, October 20, 2017
Microsoft 70-487: Configure a web application for deployment
Exam Objectives
Switch from production/release mode to debug mode; use SetParameters to set up an IIS app pool; set permissions and passwords; enable and monitor ASP.NET App Suspend; configure WCF endpoints (including HTTPS protocol mapping), bindings, and behaviors; transform web.config by using XSLT (for example, across development, test, and production/release environments); configure Azure configuration settingsQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 5.3
[MSDN] How to: Set Debug and Release Configurations
[MSDN] Understanding Build Configurations
[MSDN] Configuring Parameters for Web Package Deployment
[MSDN] Web Deploy Parameterization
[TechNet] Using declareParam and setParam
[Blog] MSDeploy with Declare and Set parameter files
[MSDN] Configuring Permissions for Team Build Deployment
[MSDN] Basic Security Practices for Web Applications
[MSDN] Best practices for deploying passwords
[Blog] Davidson Sousa - Setting folder permissions using Web Deploy
[Blog] Sayed Hashimi - Setting Folder Permissions on Web Publish
[Blog] Kevin Leetham - Modifying directory permissions with Web Deployment
[MSDN] Enable and monitor ASP.NET App Suspend on Windows Server 2012 R2
[MSDN] ASP.NET App Suspend – responsive shared .NET web hosting
[MSDN] How to: Transform Web.config When Deploying a Web Application Project
[MSDN] Web.config Transformation Syntax for Web Project Deployment
[GitHub] Xdt transform samples
[MSDN] Configure web apps in Azure App Service
[MSDN] Configure Azure cloud service roles with Visual Studio
[MSDN] How to: Set Debug and Release Configurations
[MSDN] Understanding Build Configurations
[MSDN] Configuring Parameters for Web Package Deployment
[MSDN] Web Deploy Parameterization
[TechNet] Using declareParam and setParam
[Blog] MSDeploy with Declare and Set parameter files
[MSDN] Configuring Permissions for Team Build Deployment
[MSDN] Basic Security Practices for Web Applications
[MSDN] Best practices for deploying passwords
[Blog] Davidson Sousa - Setting folder permissions using Web Deploy
[Blog] Sayed Hashimi - Setting Folder Permissions on Web Publish
[Blog] Kevin Leetham - Modifying directory permissions with Web Deployment
[MSDN] Enable and monitor ASP.NET App Suspend on Windows Server 2012 R2
[MSDN] ASP.NET App Suspend – responsive shared .NET web hosting
[MSDN] How to: Transform Web.config When Deploying a Web Application Project
[MSDN] Web.config Transformation Syntax for Web Project Deployment
[GitHub] Xdt transform samples
[MSDN] Configure web apps in Azure App Service
[MSDN] Configure Azure cloud service roles with Visual Studio
Tuesday, October 10, 2017
Microsoft 70-487: Design a deployment strategy
Exam Objectives
Create an IIS install package; deploy to web farms; deploy a web application by using XCopy; automate a deployment from TFS or Build ServerQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 5.1
[MSDN] How to: Create a Web Deployment Package in Visual Studio
[MSDN] Using Web Deploy for Web Farms (2009)
[MSDN] Deploy an Application to a Web Farm
[MSDN] How to: Create a Web Deployment Package in Visual Studio
[MSDN] Using Web Deploy for Web Farms (2009)
[MSDN] Deploy an Application to a Web Farm
[MSDN] Introducing the Microsoft Web Farm Framework
[MSDN] Xcopy
[MSDN] Walkthrough: Deploying an ASP.NET Web Application Using XCOPY
[MSDN] How to: Create an Automated Build and Deployment Solution with TFS
[MSDN] Build and Deployment Automation Case Study
[Blog] Using Windows Azure VMs to Publish and Synchronize a Web Farm
[MSDN] Xcopy
[MSDN] Walkthrough: Deploying an ASP.NET Web Application Using XCOPY
[MSDN] How to: Create an Automated Build and Deployment Solution with TFS
[MSDN] Build and Deployment Automation Case Study
[Blog] Using Windows Azure VMs to Publish and Synchronize a Web Farm
Tuesday, October 3, 2017
Microsoft 70-487: Share assemblies between multiple applications and servers
Exam Objectives
Prepare the environment for use of assemblies across multiple servers (interning); sign assemblies by using a strong name; deploy assemblies to the global assembly cache; implement assembly versioning; create an assembly manifest; configure assembly binding redirects (for example, from MVC4 to MVC5)Quick Overview of Training Materials
Exam Ref 70-487 - Chapter 5.6
[MSDN] Programming with Assemblies:
- How to: Sign an Assembly with a Strong Name
- How to: Install an Assembly into the Global Assembly Cache
[MSDN] Assemblies in the CLR:
- Global Assembly Cache
- Assembly Versioning
- Assembly Manifest
- Strong-Named Assemblies
[MSDN] Configuring Assembly Binding Redirection
[MSDN] Redirecting Assembly Versions
[MSDN] Look at Sharing Common Assemblies in ASP.NET 4.5
[MSDN] How the Runtime Locates Assemblies
[StackOverflow] What is the GAC in .NET?
[MSDN] Programming with Assemblies:
- How to: Sign an Assembly with a Strong Name
- How to: Install an Assembly into the Global Assembly Cache
[MSDN] Assemblies in the CLR:
- Global Assembly Cache
- Assembly Versioning
- Assembly Manifest
- Strong-Named Assemblies
[MSDN] Configuring Assembly Binding Redirection
[MSDN] Redirecting Assembly Versions
[MSDN] Look at Sharing Common Assemblies in ASP.NET 4.5
[MSDN] How the Runtime Locates Assemblies
[StackOverflow] What is the GAC in .NET?
[Blog] Sharing common assemblies with aspnet_intern.exe
[Blog] ASP.NET Assembly Interning
[Blog] Back to Basics: When does a .NET Assembly Dependency get loaded
[YouTube] .NET Assembly Versioning
[Blog] ASP.NET Assembly Interning
[Blog] Back to Basics: When does a .NET Assembly Dependency get loaded
[YouTube] .NET Assembly Versioning
Thursday, September 28, 2017
Microsoft 70-487: Manage packages by using NuGet
Exam Objectives
Create and configure a NuGet package; install and update an existing NuGet package; connect to a local repository cache for NuGet, set up your own package repositoryQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 5.4
[Software] Nuget Package Explorer, Source
[MSDN] NuGet Documentation:
-PowerShell Reference
-Package Creation Workflow
-Hosting your own NuGet feeds
[Wikipedia] Nuget
[PluralSight] Introduction to NuGet
[Software] Nuget Package Explorer, Source
[MSDN] NuGet Documentation:
-PowerShell Reference
-Package Creation Workflow
-Hosting your own NuGet feeds
[Wikipedia] Nuget
[PluralSight] Introduction to NuGet
Wednesday, September 27, 2017
Microsoft 70-487: Create and configure a WCF service on Azure
Exam Objectives
Create and configure bindings for WCF services (Azure SDK—extensions to WCF); relay bindings to Azure using service bus endpoints; integrate with the Azure service bus relay; host services in Azure (from 3.9);Quick Overview of Training Materials
Monday, September 25, 2017
Microsoft 70-487: Host and manage services
Exam Objectives
Manage services concurrency (single, multiple, reentrant); create service hosts; choose a hosting mechanism; choose an instancing mode (per call, per session, singleton); activate and manage a service by using AppFabric; implement transactional services; host services in an Azure worker roleQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 3.9
[MSDN] Sessions, Instancing, and Concurrency
[MSDN] How to: Create a Transactional Service
[CodeProject] WCF Concurrency
[MSDN] Hosting
[MSDN] Deploying an Internet Information Services-Hosted WCF Service
[MSDN] How to: Host a WCF Service in a Managed Windows Service
[DotNetCurry] Hosting WCF Service in Windows Server AppFabric
[Blog] Deploying A WCF Service On Windows Azure
[Blog] Deploying an Existing WCF Service to Azure
[MSDN] Sessions, Instancing, and Concurrency
[MSDN] How to: Create a Transactional Service
[CodeProject] WCF Concurrency
[MSDN] Hosting
[MSDN] Deploying an Internet Information Services-Hosted WCF Service
[MSDN] How to: Host a WCF Service in a Managed Windows Service
[DotNetCurry] Hosting WCF Service in Windows Server AppFabric
[Blog] Deploying A WCF Service On Windows Azure
[Blog] Deploying an Existing WCF Service to Azure
[PluralSight] WCF End-to-End -
Hosting and Service Configuration
Instancing and Concurrency
Transaction Handling
[PluralSight] WCF Advanced Topics
Instancing and Concurrency
Transaction Handling
[PluralSight] WCF Advanced Topics
Wednesday, September 20, 2017
Microsoft 70-487: Secure a WCF service
Exam Objectives
Implement message level security, implement transport level security; implement certificates; design and implement multiple authentication modesQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 3.4
[Book] Programming WCF Services - Ch. 10: Security
[MSDN] Programming WCF Security
[MSDN] Message Security in WCF
[MSDN] Transport Security
[MSDN] Working with Certificates
[MSDN] Improving Web Service Security - Chapter 7, Chapter 5 (Auth)
[MSDN] How to: Use Certificate Authentication and Transport Security in WCF
[CodeProject] Nine simple steps to enable X.509 certificates on WCF
[Book] Programming WCF Services - Ch. 10: Security
[MSDN] Programming WCF Security
[MSDN] Message Security in WCF
[MSDN] Transport Security
[MSDN] Working with Certificates
[MSDN] Improving Web Service Security - Chapter 7, Chapter 5 (Auth)
[MSDN] How to: Use Certificate Authentication and Transport Security in WCF
[CodeProject] Nine simple steps to enable X.509 certificates on WCF
Sunday, September 17, 2017
Microsoft 70-487: Implement messaging patterns
Exam Objectives
Implement one way, request/reply, streaming, and duplex communication; implement Azure Service Bus and Azure QueuesQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 3.8
[MSDN] One-Way Service, How to create, One-Way
[MSDN] Request/Reply Service, How to create
[MSDN] Duplex Service, How to create
[MSDN] Streaming Message Transfer
[MSDN] Large Data and Streaming
[MSDN] Using Service Bus Queues with WCF
[MSDN-Blog] My Hello Azure Service Bus WCF Service
[MSDN] Azure Service Bus
[Blog] WCF Best Practices: One way is not always really one way
[PluralSight] WCF End-to-End - Operations
My post on Creating a Service
[MSDN] Request/Reply Service, How to create
[MSDN] Duplex Service, How to create
[MSDN] Streaming Message Transfer
[MSDN] Large Data and Streaming
[MSDN] Using Service Bus Queues with WCF
[MSDN-Blog] My Hello Azure Service Bus WCF Service
[MSDN] Azure Service Bus
[Blog] WCF Best Practices: One way is not always really one way
[PluralSight] WCF End-to-End - Operations
My post on Creating a Service
Wednesday, September 13, 2017
Microsoft 70-487: Version a WCF service
Exam Objectives
Version different types of contracts (message, service, data); configure address, binding, and routing service versioningQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 3.6
[Book] Programming WCF Services - Ch. 3: Data Contracts
[MSDN] Versioning Strategies
[MSDN] Best Practices: Data Contract Versioning
[MSDN] Using Message Contracts (Versioning section)
[MSDN] How To: Service Versioning (Routing)
[CodeProject] WCF Routing Service - Part IV: Service Versioning
[PluralSight] WCF Power Topics - Versioning Your Services
[Book] Programming WCF Services - Ch. 3: Data Contracts
[MSDN] Versioning Strategies
[MSDN] Best Practices: Data Contract Versioning
[MSDN] Using Message Contracts (Versioning section)
[MSDN] How To: Service Versioning (Routing)
[CodeProject] WCF Routing Service - Part IV: Service Versioning
[PluralSight] WCF Power Topics - Versioning Your Services
Monday, September 4, 2017
Microsoft 70-487: Consume WCF services
Exam Objectives
Generate proxies by using SvcUtil; generate proxies by creating a service reference; create and implement channel factoriesQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 3.5
[Book] Programming WCF Services
Saturday, September 2, 2017
Microsoft 70-487: Configure WCF services by using the API
Exam Objectives
Configure service behaviors; configure service endpoints; configure binding; specify a service contract; expose service metadata (XSDs, WSDL, and metadata exchange); WCF routing and discovery featuresQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 3.3
[Book] Programming WCF Services (in particular, Appendix C: Discovery)
[MSDN] Configuring WCF Services in Code (.NET 4.5+)
[Book] Programming WCF Services (in particular, Appendix C: Discovery)
[MSDN] Configuring WCF Services in Code (.NET 4.5+)
[MSDN] How to: Create a Service Endpoint in Code
[MSDN] WCF Discovery
[MSDN] Routing
PluralSight WCF Library - WCF Power Topics in particular (routing and discovery)
My post on file based config
[MSDN] WCF Discovery
[MSDN] Routing
PluralSight WCF Library - WCF Power Topics in particular (routing and discovery)
My post on file based config
Friday, August 25, 2017
Microsoft 70-487: Configure WCF services by using configuration settings
Exam Objectives
Configure service behaviors; configure service endpoints; configure bindings including WebSocket bindings; specify a service contract; expose service metadata (XSDs, WSDL, and metadata exchange endpoint); configure message compression and encodingQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 3.2
[MSDN] Configuring Services Using Configuration Files
[MSDN] Configuring and Extending the Runtime with Behaviors
[MSDN] Reference Source (.NET Source code search!)
[MSDN] Windows Communication Foundation Bindings
[MSDN] System-Provided Bindings
[MSDN] Choosing a Message Encoder
My Post - PluralSight WCF Library
[MSDN] Configuring Services Using Configuration Files
[MSDN] Configuring and Extending the Runtime with Behaviors
[MSDN] Reference Source (.NET Source code search!)
[MSDN] Windows Communication Foundation Bindings
[MSDN] System-Provided Bindings
[MSDN] Choosing a Message Encoder
My Post - PluralSight WCF Library
Saturday, August 19, 2017
Microsoft 70-487: Create a WCF service
Exam Objectives
Create contracts (service, data, message, callback, and fault); implement message inspectors; implement asynchronous operations in the serviceQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 3.1
[Book] Programming WCF Services
[MSDN] Define a Windows Communication Foundation Service Contract
[Book] Programming WCF Services
[MSDN] Define a Windows Communication Foundation Service Contract
[MSDN] Using Data Contracts
[MSDN] Using Message Contracts
[MSDN] Fault Contract
[MSDN] Create a Duplex Contract
[MSDN] Message Inspectors
[MSDN] How to inspect and modify WCF message via custom MessageInspector
[MSDN] How to modify a WCF message using an IDispatchMessageInspector?
[MSDN] Implement an Asynchronous Service Operation
[MSDN] Synchronous and Asynchronous Operations
[MSDN] Asynchronous Programming Patterns
[MSDN] Using Message Contracts
[MSDN] Fault Contract
[MSDN] Create a Duplex Contract
[MSDN] Message Inspectors
[MSDN] How to inspect and modify WCF message via custom MessageInspector
[MSDN] How to modify a WCF message using an IDispatchMessageInspector?
[MSDN] Implement an Asynchronous Service Operation
[MSDN] Synchronous and Asynchronous Operations
[MSDN] Asynchronous Programming Patterns
Friday, July 28, 2017
PluralSight WCF Library
PluralSight has a pretty robust collection of WCF related courses. I decided it would be useful to index the concepts covered in the courses I watched (as part of putting together to 70-487 study guide).
Monday, July 10, 2017
Microsoft 70-487: Implement transactions
Exam Objectives
Manage transactions by using the API from System.Transactions namespace; implement distributed transactions; specify transaction isolation levelQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 1.3
[MSDN] System.Transactions Namespace
[MSDN] Distributed Transactions
[MSDN] Distributed Transactions Overview
[MSDN] Introducing System.Transactions in the .NET Framework 2.0
[MSDN] Transactions in WCF Services
[MSDN] Transaction Processing
[MSDN] Long Running Transactions
[MSDN] Transaction Isolation Levels
[MSDN] System.Transactions Namespace
[MSDN] Distributed Transactions
[MSDN] Distributed Transactions Overview
[MSDN] Introducing System.Transactions in the .NET Framework 2.0
[MSDN] Transactions in WCF Services
[MSDN] Transaction Processing
[MSDN] Long Running Transactions
[MSDN] Transaction Isolation Levels
[PluralSight] Understanding .NET and WCF Transactions
[Wikipedia] Transaction Processing
[StackOverflow] Why is TransactionScope default Isolation level Serializable
[Book] Database Management Systems (2nd Ed.) - Ch. 18
[YouTube] Database Management Systems Lecture 24 and Lecture 25
[Wikipedia] Transaction Processing
[StackOverflow] Why is TransactionScope default Isolation level Serializable
[Book] Database Management Systems (2nd Ed.) - Ch. 18
[YouTube] Database Management Systems Lecture 24 and Lecture 25
Wednesday, July 5, 2017
Microsoft 70-487: Implement data storage in Azure
Exam Objectives
Access data storage in Azure; choose data storage mechanism in Azure (blobs, tables, queues, SQL Database); distribute data by using the Content delivery network (CDN); handle exceptions by using retries (SQL Database); manage Azure CachingQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 1.4
[PluralSight] Windows Azure Storage In-Depth
[MSDN] Introduction to Microsoft Azure Storage (complete docs)
[MSDN] Storage Queues vs Service Bus Queues
[MSDN] Azure SQL Database Documentation
[MSDN] Azure Redis Cache FAQ
[MSDN] Azure Redis Videos
[MSDN] Azure Storage Client Library Retry Policy Recommendations
[MSDN] Transient fault handling
[MSDN] Retry Guidance for Specific Services
[MSDN] Overview of Azure CDN
[MSDN] What is the Azure SQL Database service?
[MSDN] Microsoft Azure Table Storage - Not Your Father's Database
[MSDN] Azure Storage Table Design Guide
[MSDN] Using Azure PowerShell with Azure Storage
[Channel9] Windows Azure Tables and Queues Deep Dive
[PluralSight] Windows Azure Storage In-Depth
[MSDN] Introduction to Microsoft Azure Storage (complete docs)
[MSDN] Storage Queues vs Service Bus Queues
[MSDN] Azure SQL Database Documentation
[MSDN] Azure Redis Cache FAQ
[MSDN] Azure Redis Videos
[MSDN] Azure Storage Client Library Retry Policy Recommendations
[MSDN] Transient fault handling
[MSDN] Retry Guidance for Specific Services
[MSDN] Overview of Azure CDN
[MSDN] What is the Azure SQL Database service?
[MSDN] Microsoft Azure Table Storage - Not Your Father's Database
[MSDN] Azure Storage Table Design Guide
[MSDN] Using Azure PowerShell with Azure Storage
[Channel9] Windows Azure Tables and Queues Deep Dive
Saturday, June 10, 2017
Microsoft 70-487: Implement caching
Exam Objectives
Cache static data, apply cache policy (including expirations); use CacheDependency to refresh cache data; query notificationsQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 1.2
[MSDN] System.Runtime.Caching
[MSDN] Detecting Changes with SqlDependency
[CodeProject] .NET 4.0 MemoryCache with SqlChangeMonitor
[CodeProject] Query Notification using SqlDependency and SqlCacheDependency
My GitHub Sample Code
70-486: Design a caching strategy
[MSDN] System.Runtime.Caching
[MSDN] Detecting Changes with SqlDependency
[CodeProject] .NET 4.0 MemoryCache with SqlChangeMonitor
[CodeProject] Query Notification using SqlDependency and SqlCacheDependency
My GitHub Sample Code
70-486: Design a caching strategy
Tuesday, June 6, 2017
Microsoft 70-487: Manipulate XML data structures
Exam Objectives
Read, filter, create, modify XML data structures; Manipulate XML data by using XMLReader, XMLWriter, XMLDocument, XPath, LINQ to XML; transform XML by using XSLT transformationsQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 1.6
[MSDN] XML Documents and Data
[MSDN] XML
[MSDN] Understanding XML
[MSDN] XPath Reference
[MSDN] What is XSLT?
[MSDN] XSLT Reference
[Hanselminutes] XML Tools and Technologies
[Hanselminutes] LINQ to XML
A Really, Really, Really Good Introduction to XML
[PluralSight] XML Fundamentals
[PluralSight] XML Processing in .NET Applications
[W3C] XML 1.1 Recommendation (Spec)
[W3C] Namespaces in XML 1.0 3rd Ed. (Spec)
[W3C] XSLT Recommendation (Spec)
[StackOverflow] JSON and XML comparison
[YouTube] XML and XSLT Transformation Explained
[YouTube] Using XSLT to Transform Your XML
My code samples on GitHub
[MSDN] XML
[MSDN] Understanding XML
[MSDN] XPath Reference
[MSDN] What is XSLT?
[MSDN] XSLT Reference
[Hanselminutes] XML Tools and Technologies
[Hanselminutes] LINQ to XML
A Really, Really, Really Good Introduction to XML
[PluralSight] XML Fundamentals
[PluralSight] XML Processing in .NET Applications
[W3C] XML 1.1 Recommendation (Spec)
[W3C] Namespaces in XML 1.0 3rd Ed. (Spec)
[W3C] XSLT Recommendation (Spec)
[StackOverflow] JSON and XML comparison
[YouTube] XML and XSLT Transformation Explained
[YouTube] Using XSLT to Transform Your XML
My code samples on GitHub
Friday, May 26, 2017
Microsoft 70-487: Create and implement a WCF Data Services service
Exam Objectives
Address resources; implement filtering; create a query expression; access payload formats (including JSON); use data service interceptors and service operatorsQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 1.5
[Teched] Best Practices: Creating OData Services Using WCF Data Services (High Quality WMV)
[MSDN] Practical OData (2010 Article)
[Channel 9] Practical OData (2015 Conference talk)
[MSDN] WCF Data Services 5.0 Overview (Complete Docs)
[MSDN] How to: Create a Data Service Using the Reflection Provider
OData Version 4.0 URL Conventions Specification
[MSDN] Interceptors (WCF Data Services)
[MSDN] Practical OData (2010 Article)
[Channel 9] Practical OData (2015 Conference talk)
[MSDN] WCF Data Services 5.0 Overview (Complete Docs)
[MSDN] How to: Create a Data Service Using the Reflection Provider
OData Version 4.0 URL Conventions Specification
[MSDN] Interceptors (WCF Data Services)
Saturday, May 20, 2017
Microsoft 70-487: Choose data access technologies
Exam Objectives
Choose a technology (ADO.NET, Entity Framework, WCF Data Services, Azure storage) based on application requirementsQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 1.1
[Teched] Data Development GPS: Choosing the Right Data Access (slides)
[Teched] Building OData Services with ASP.NET Web API
[Teched] Microsoft Azure Storage Overview
[Teched] Data Development GPS: Choosing the Right Data Access (slides)
[Teched] Building OData Services with ASP.NET Web API
[Teched] Microsoft Azure Storage Overview
[MSDN] Summary of Data Access Guidance
[StackOverflow] Entity Framework VS LINQ to SQL VS ADO.NET
[StackOverflow] Are there good reasons not to use an ORM?
[StackExchange] Is Entity Framework Suitable For High-Traffic Websites?
[StackOverflow] When to use WCF data services and when not?
[StackOverflow] Why would you not use WCF Data Services for querying data?
[StackOverflow] What is the need of OData when I have JSON?
[MSDN] WCF Data Services 4.5
Azure Storage Service landing page
Introduction to Microsoft Azure Storage
Azure Storage 5 Minute Overview (video)
ASP.NET Data Access - Recommended Resources
[Channel9] All Data/All Day Dive into .NET Data Access
[Channel9] OData Overview (2015)
Why Entity Framework Can Be Your Best Friend
[MSDN] Storage queues vs Service Bus queues
Pluralsight Courses:
ADO.NET Fundamentals, Introduction to OData, Anything by Julie Lerman
[StackOverflow] Entity Framework VS LINQ to SQL VS ADO.NET
[StackOverflow] Are there good reasons not to use an ORM?
[StackExchange] Is Entity Framework Suitable For High-Traffic Websites?
[StackOverflow] When to use WCF data services and when not?
[StackOverflow] Why would you not use WCF Data Services for querying data?
[StackOverflow] What is the need of OData when I have JSON?
[MSDN] WCF Data Services 4.5
Azure Storage Service landing page
Introduction to Microsoft Azure Storage
Azure Storage 5 Minute Overview (video)
ASP.NET Data Access - Recommended Resources
[Channel9] All Data/All Day Dive into .NET Data Access
[Channel9] OData Overview (2015)
Why Entity Framework Can Be Your Best Friend
[MSDN] Storage queues vs Service Bus queues
Pluralsight Courses:
ADO.NET Fundamentals, Introduction to OData, Anything by Julie Lerman
Thursday, May 18, 2017
How To Create an On-Prem Windows Build Agent for Visual Studio Team Services
Motivation
I've been working on migrating our code repositories from CVS into git hosted on Visual Studio Team Services (VSTS)... formerly Visual Studio Online. While I've reduced the CVS migrations to running a single script, I also wanted to start exploring some of the other CI functionality VSTS offers. Many of our projects are Maven projects, and while Maven builds are supported, I ran into a snag trying to connect to our on-prem Nexus repository. Using the VSTS "hosted" build agents would involve one of a couple of bad work arounds:
- expose an endpoint in IIS to talk to the Nexus repo outside our firewall. While a one-off point to point fix might solve this issue... the scenario is likely to recur, especially when I start looking at deployments
- open a vpn connection from the hosted build agent to the network. Eww. This would feel like a clunky solution, assuming I could get it working at all. I could see authentication being a real obstacle for this route
The obvious solution was a private (i.e. on-prem) build agent running within our network. I shied away from this approach at first because I didn't want to deal with the server configuration (rightly so, yuck!), but it rapidly became clear that this actually was the simpler solution. The final straw was after I tried to create a Hudson job and ended up fighting with git the whole time (couldn't find the installed binary, installed it again, long file names choked, couldn't get authentication working... quelle nightmare!)
Saturday, May 13, 2017
Microsoft 70-487: Query data by using LINQ to Entities
Exam Objectives
Query data by using LINQ operators (for example, project, skip, aggregate, filter, and join); log queries and database commands; implement query boundaries (IQueryable vs. IEnumerable); implement async queryQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 2.3
PluralSight - Querying the Entity Framework (Julie Lerman)
PluralSight - LINQ Fundamentals with C# 6.0 (Scott Allen)
PluralSight - Practical LINQ (Deborah Kurata)
PluralSight - More Effective LINQ (Mark Heath)
[MSDN] - LINQ to Entities
[MSDN] - DbExtensions Methods
[MSDN] - Enumerable Class
[MSDN] - Queryable Class
[MSDN] - ObjectQuery Class
StackOverflow - Returning IEnumerable<T> vs IQueryable<T>
Entity Framework: IQueryable vs. IEnumerable
My post on Basic LINQ
PluralSight - Querying the Entity Framework (Julie Lerman)
PluralSight - LINQ Fundamentals with C# 6.0 (Scott Allen)
PluralSight - Practical LINQ (Deborah Kurata)
PluralSight - More Effective LINQ (Mark Heath)
[MSDN] - LINQ to Entities
[MSDN] - DbExtensions Methods
[MSDN] - Enumerable Class
[MSDN] - Queryable Class
[MSDN] - ObjectQuery Class
StackOverflow - Returning IEnumerable<T> vs IQueryable<T>
Entity Framework: IQueryable vs. IEnumerable
My post on Basic LINQ
Sunday, May 7, 2017
LINQ Basics by Example
While working on my 70-487 study guide I wrote up a looong section on basic LINQ operators that, while certainly germane, was not really the subject at hand. So I'm refactoring that stuff into it's own post. I look at the LINQ extension methods provided by Enumerable and Queryable (basically the same operations, just different underlying behavior), with lots of example code and console screenshots. All the code samples can be found on my Github page for the study guide examples.
Friday, April 28, 2017
Microsoft 70-487: Query and manipulate data by using Data Provider for Entity Framework
Exam Objectives
Query and manipulate data by using Connection, DataReader, and Command from the System.Data.EntityClient namespace; perform synchronous and asynchronous operations; manage transactions (API); programmatically configure a Data ProviderQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 2.2
[MSDN] EntityClient Provider for the Entity Framework
[MSDN] Entity Framework Code-Based Configuration (EF6 Onwards)
[MSDN] EntityClient Provider for the Entity Framework
[MSDN] Entity Framework Code-Based Configuration (EF6 Onwards)
Tuesday, April 25, 2017
MIT 6.005 - Software Construction (edX)
The resources for MIT's "Software Construction" class are distributed between several disparate sources. There is an entry for 6.005 on the MIT Open Courseware page, where it is called "Elements of Software Construction", and there are two classes on edX: 6.005.1x "Software Construction in Java" and 6.005.2x "Advanced Software Construction in Java".
I'm hoping that working through this class will sharpen my understanding of general software engineering concepts. The emphasis of the class is writing bug free code that is easy to understand and easy to change, which is certainly something you can never be too good at, am I right?
Monday, April 24, 2017
Microsoft 70-487: Create an Entity Framework data model
Exam Objectives
Structure the data model using table per type, table per class, table per hierarchy; choose and implement an approach to manage a data model (code first vs. model first vs. database first); implement POCO objects; describe a data model by using conceptual schema definitions, storage schema definition, mapping language (CSDL, SSDL, MSL), and Custom Code First ConventionsQuick Overview of Training Materials
Exam Ref 70-487 - Chapter 2.5
Programming Entity Framework: Code First - Chapter 5
Programming Entity Framework - Chapter 14
[MSDN] Walkthrough: Mapping Inheritance - Table-per-Hierarchy
Programming Entity Framework: Code First - Chapter 5
Programming Entity Framework - Chapter 14
[MSDN] Walkthrough: Mapping Inheritance - Table-per-Hierarchy
[MSDN] Configuring/Mapping Properties and Types with the Fluent API
[MSDN] Specification for CSDL, SSDL, MSL
[MSDN] Specification for CSDL, SSDL, MSL
Inheritance with EF Code First: Part 1, Part 2, Part 3
[MSDN] Entity Framework Custom Code First Conventions (EF6 onwards)
[MSDN] Entity Framework Model-Based Conventions (EF6 onwards)[MSDN] Entity Framework Custom Code First Conventions (EF6 onwards)
Thursday, April 20, 2017
Instantiating an object in Java without calling a constructor
The Scenario
This isn't a cliche... |
I was working on a Java project that talks to a web service with a custom "Client" class that was written internally. In my project, the client is pulled in from a hosted maven repo as a dependency, so I didn't have access to the source (at least not from this project). I'm trying to be better about writing characterization tests for existing code before I go in and change anything (if nothing else it's a good way to feel out the code). But I had a problem...
The Client has a single constructor, which takes an endpoint, a username, and a password. Calling this constructor tries to connect to the endpoint (and crashes if it fails). Because this was the only defined constructor, subclassing wasn't going to help me. It doesn't implement an interface, so that avenue was also closed down.
So there was no obvious way for me to create a test double to pass in to the code I was actually interested in testing. How in the hell was I going to get around this???
Wednesday, April 19, 2017
Proxy Windows Authentication with a WCF Relay Service
Motivation
The problem I'm going to address here is pretty specific, and the solution I came up with isn't terribly intuitive, but it works. I ran into a situation where we were trying to integrate web services with a vendor product. This is a .NET app running on IIS, and we wanted to authenticate using Active Directory by passing in a username and password to a "UserLogin" soap action (this action returns a security token that is used to make other calls). While initially we thought this worked, it turned out that it wasn't behaving the way we thought it should. Any request was getting a security token, even if the username and password were garbage.Yeah... not what we were going for... |
Sunday, April 16, 2017
MIT 6.046 - Design and Analysis of Algorithms
6.046 is described by Eric Demaine as the final undergraduate algorithms class, with more advanced and more specialized algorithms classes being at the graduate level. I've had my eye on the advanced data structures and advanced algorithms classes for a while, and this class is a fundamental prerequisite for those. Now, being that it's my MO to totally overdo it, naturally I had to find overlapping classes from some of my other favorite providers and watch everything. Had I limited this to one overlapping class it probably wouldn't have been that bad... but I found three other classes: Berkeley CS170, Georgia Tech CS6505, and Stanford CS261. All four classes are what I would call "intermediate" level algorithms courses, with significant overlap in concepts covered:
I probably would have been done a month ago if I hadn't gone so crazy with watching everyone's lectures...
I probably would have been done a month ago if I hadn't gone so crazy with watching everyone's lectures...
Wednesday, March 22, 2017
How to convert a CVS repo to git
Doing this conversion basically requires a Linux environment. My first attempt was in Windows using the various Unix tooling and I just could never get everything to work the way it needed to. It was less work to just spin up a VirtualBox vm with Ubuntu Server and do everything in bash. This document is going to assume you have access to a suitable Linux environment (this will have a Debian-esque flavor being Ubuntu, but any major distro should work).
I’m also assuming you have zero prior CVS knowledge (like me), so I’ll explain a few of the basics around CVS.
Tuesday, March 21, 2017
Exploiting the YOP Poll WordPress plugin
Somewhere in the vast expanses of the wild internet, there is a site I sometimes frequent that likes to put surveys in their blog posts. Quite by accident, I discovered that if I reload the page in an incognito window, I could vote in these surveys multiple times. Being hopelessly curious about what's going on behind the curtain, I ventured down the rabbit hole that led me to spammy scripts and purple underwear (No, seriously...).
Saturday, March 18, 2017
Legacy Berkeley course material pulled over accessibility
One of the earliest sources of free education materials I stumbled upon was webcast.berkeley (right up there with MIT OCW). Seeing these institutions of higher learning release their lectures and course content free, to the masses, made me envision a time when the entire education system could be transformed. Today, with Coursera, Udacity, and edX, we are well on the way to that revolution. But despite these (arguably more sophisticated) offering, I always found myself returning to that well. No more...
Friday, March 17, 2017
Making assertions with jUnit against log4j console output
I will open by saying that making assertions against your log output is probably a bad idea. Probably violates every rule of good testing. That said, I found myself writing characterization tests against some legacy code and I wanted to make sure I didn't break the logging. So I decided to write some flakey, brittle unit tests. It was several hours of pain, and I figured it would be a good idea to document my pain so you can avoid some of it (hopefully by not following in my footsteps at all... sigh)
Friday, February 3, 2017
Advanced CSS Concepts (edX)
Last summer I enrolled in a class on edX called "Advanced CSS Concepts". It was delayed until November because of technical issues on their end, and I put it off until a week ago because Google.
"Oh, advanced ey? That should be interesting" I thought. Boy was I in for a disappointment.
"Oh, advanced ey? That should be interesting" I thought. Boy was I in for a disappointment.
Wednesday, January 11, 2017
My Google Interview Journey
The Hook
It's mid November and I'm minding my own business, when out of the blue I get a message on LinkedIn. It's a technical recruiter from Google, we'll call her "K" (you know, like in The English Patient), and she says she was impressed by my HackerRank badge for Algorithms. She wants to have a chat and learn a little bit about my background, she says. Of course this blew my mind, in a sort of "glitter and confetti shooting out my ears" sort of way. I've had recruiters hit my up on LinkedIn before, but this was Google! I allowed myself to glow in it for a little while, but I tried to keep myself in check too. At this stage, it was just one phone call with a recruiter.
Subscribe to:
Posts (Atom)