The Fundamentals of Unit Testing

8:30 am in
Joel CochranMS

By now you have heard of unit tests. Perhaps you have read an article about them or watched a video. Maybe you have even tried to write a few yourself, but the whole unit testing “thing” has not quite hit home yet. Maybe you have been put off by the Testinistas or your company thinks unit tests are just a bunch of extra code. No matter where you are on this spectrum, if you are not writing unit tests as part of your daily coding, then this talk is for you. In this introduction, we will discuss the value of unit tests. You will learn some practical techniques you can use to start to make unit testing part of your daily routine. After our introduction, we will look at more advanced topics such as mocking and Test Driven Development (TDD). We’ll finish our discussion by looking at Microsoft Fakes and discussing how to test legacy software.

Continuous Integration with Visual Studio Online, Octopus and Team City

8:30 am in
Dante Papada, Greg Metzger

This session is all about Continuous Integration using the following tools and technologies:

  • Azure
  • Octopus
  • Team City
  • Visual Studio Online
  • Team Foundation Server
  • Resharper
  • Dot Cover
  • Powershell

We will show you how to get started with Team City and Octopus using Azure, how to automatically run unit tests, show code coverage and do builds using Team City, how to connect Visual Studio Online and Team Foundation Server in the cloud to Team City in Azure and how to use some of the powerful built-in API’s in Octopus.

We’ll set up a project from scratch and show lots of step-by-step examples.

Designing Data Analytics using Microsoft Cloud based BigData Solution – Zoom in Azure HDInsight

10:00 am in
Joy Chakraborty

Learn the capabilities of Microsoft Cloud based BigData platform (a.k.a. Azure HDInsight) and various design choices that it provides, which can unlock the potential of creating new types of business applications that was not possible before. This session will take a deeper dive into Azure HDInsight (which supports Hadoop, Spark, Hive, Mahout, Storm, HBase and many other big-data technologies that runs on top of cloud based virtualized infrastructure), discuss the possible design scenarios in support of writing cross domain data analytics applications and finally writing few (more than one) different real world applications. Most of these technologies are portable and run in all major technological platforms (i.e. beyond Microsoft platform) seamlessly. Even if you are not familiar with cloud or big-data technologies and you don’t work on it, it will give you an high-level overview of these technologies and how they are rapidly changing the business needs in the market and computing industry that you might use directly or indirectly in near future.

Data As A Service — Data Services with Web API 2 and OData

11:30 am in
David HoersterMVP

Building a core data management service for your applications and systems is incredibly useful as it can provide a central hub of data management throughout your organization. But how do you expose that data and what protocol do you follow for querying, filtering and modifying your data service? Microsoft pioneered the OData protocol (now an OASIS standard) and has incorporated the standard into Web API 2. In this session, we’ll learn about the OData protocol, how it is enabled in Web API 2, and how you can extend data services to your data repository using OData….and you won’t even have to depend on the Entity Framework! We’ll also see how you can use OData with your data context of choice (even home-rolled!).

Pulling a Data Access 360 (Micro ORMs in .NET)

1:30 pm in
David HoersterMVP

Over the past decade and a half, the way .NET developers have accessed data has gone from a pretty loose pattern of data readers and data sets (remember those???) to a more formal and patterned repository approach with complex ORMs like Entity Framework and nHibernate. But the pendulum is swinging back towards a simpler approach to data access, and this talk will focus on using a MicroORM (like Dapper.NET) in your .NET application. We’ll look at what a MicroORM is all about, how to get started with Dapper and how you can get up and running with Dapper with a full-featured but simple demo application. Learn how to keep your data access simple yet extremely powerful with this session!

The Practical Side of Bitcoin

3:00 pm in
Judy Katzman

It’s in the news all the time, and you just don’’t know what to think about it. But, Bitcoin is here to stay. It has even been sold by the FBI from confiscated goods. Yes, it’s a “commodity” but we are using it to barter for plane tickets, TV’s, laptops and cell phones. This talk will discuss how to obtain Bitcoins, how they can be used as a payment system, and how to use it day to day.

This is an introduction to Bitcoin for those that have no background in digital currency. The discussion will show how easy it is to send and receive bit coins, as well as how it stands up to traditional payment processes. Leave this discussion with a digital wallet on your phone!

End To End Development with Schwammy’s Favorite Patterns and Practices

8:30 am in
Andy SchwamMVP

Sold Out

To create excellent software, you need to know a lot more than just the language basics. If you are an experienced developer looking to take things to the next level, this talk is for you. In this talk I’ll present many patterns and practices that I use as a Technical Architect. I’ll review and demonstrate many of my favorite patterns such as SOLID, Repository Pattern, Unit Of Work, Dependency Injection, etc. I’ll show how these patterns can be used for both server and client side development in ASP.NET MVC. I’ll demonstrate great ways to use TFS for automating your builds and deployments. During this full day session I will create a web application using VS2015, C#, ASP.NET MVC, Entity Framework, SQL Server, Bootstrap, Knockout.js and ELMAH. Unlike in traditional short talks, with the full day session you’ll see how all the pieces fit together. As always, I’ll throw in lots of tips and tricks along the way. FYI: this is a repeat (with some updates) from my popular full day session from the last Philly Code Camp. The session will not be hands-on for attendees however I’ll provide the complete solution with which you can review and experiment.

Fundamentals of GoLang

8:30 am in
Scott Kay

Go/GoLang is a powerful C-like open source programming language featuring a (relatively) clean syntax, originally created by Google. It is supported by a growing community and is used by popular projects such as Docker and CoreOS.

In this session, you’ll learn the fundamentals of Go’s object model and approach to concurrency. I’ll demonstrate how to use Go’s tools to assist with code formatting, testing, compilation, and race detection.

Built to Last – Evolving from Developer to Software Craftsman

10:00 am in
Todd Snyder

A deep look into using the SOLID Design Principles, design patterns, and other agile best practices in the real world. This talk will go beyond intro level samples to show how to harness the power of agile best practices to design and build applications that are built to last. Come, be inspired and start your journey to becoming a software craftsman.

.Net Compiler Platform (Roslyn) and You

11:30 am in
Jim WooleyMVP

Over the last five years, the C# and VB compilers were re-written from the ground up. Visual Studio 2015 includes this new compiler and features new extensibility and language capabilities. In this session, we will focus on how these changes will impact you as a C# or VB developer in your day-to-day development. We’ll start with exploring the new language features. We’ll then look at how to take advantage of code diagnostics and fixes that are publically available. We’ll end by exploring some of the extensibility points that you can take advantage of if you want to build your own diagnostics and code fixes.

Fun with Lambda Expressions

1:30 pm in
Mike Melusky

Do you want to know what lambda expressions are? Do you want to know what they are and how they differ from anonymous functions? This session will define what they are, how they are used, and why you would want to use them in your code. Numerous examples (both simple and complex) will be provided in the C# and F# programming languages. And if time permits, this talk will also briefly highlight the (newly-added) lambda expressions in Java, and how they differ from the lambda expressions in the .NET languages.

Web Dev Panel

3:00 pm in ,
Chris GomezMVP, Jeffrey FritzMS, Jess ChadwickMVP

How I Learned to Love Dependency Injection

8:30 am in
James BenderMVP

Tightly coupled applications lead to heartache. They are difficult to manage. They are difficult to maintain. The create applications that are inflexible. They make TDD, or even TAD (Test After Development) all but impossible. It doesn’t have to be this way. You’ve probably heard fancy terms like “Dependency Injection” and “Inversion of Control” but what do these mean and can they really help you write better applications and make testing easier? What about all those exotic frameworks? And what the heck is a “container?!” The bad news; this knowledge is a MUST HAVE for most testable applications these days. The good news, they are simpler than you think and besides simply making your code testable will also lead to good architecture practices that will help you develop better applications. This session will explain and demonstrate how these concepts some easy to use frameworks can help make your C# or VB.NET application more loosely coupled, easier to work with, more flexible, more maintainable and more testable.

PowerShell V5.0 ships with Windows 10

10:00 am in
Doug FinkeMVP

Doug Finke, author of “PowerShell for Developers” and 7 time Microsoft PowerShell MVP takes you through the newest version of PowerShell. You’ll learn the wide range of PowerShell’s power for automating tasks, making your life easier. See the game changing features in PowerShell v5 and learn how Powershell enables you to deliver results faster and with more quality. You’ll also see how to integrate/debug PowerShell with .NET, object pipelining, and much much more.

Pester Me! An Introduction to BDD-Style testing for Powershell

11:30 am in
Jason van Brackel

Pester is a BDD-style unit and integration testing framework for Powershell. Learn to unlock the power or automated testing for your Powershell scripts.

Topics Covered Will Include:

Unit Testing
Integration Testing
Files System Isolation with TestDrive
Continuous Integration

This is My Side, That’s Your Side – Keeping Your Unit Tests Isolated with Mocks

1:30 pm in
James BenderMVP

An important goal of Test Driven Development (TDD) is to be able to isolate your code under test. This means the method and class you are testing at any given time should not interact with other classes or external resources like data stores or web services. So how do you test code the relies on these things? You use mock objects to stand in for them! This session will explain the basics of mocking including the different types of mocks (mocks, stubs, fakes, etc.). You will see how to use a mocking framework to make your test writing fast, easy and more dependable. You will also learn some good patterns for creating and using mocks and shown some anti-patterns to avoid. Lastly, you’ll be shown how to introduce mocking and unit testing into an environment that was not really designed for it.

Batch Processing with Azure WebJobs – My Next SuperPower

3:00 pm in
Louis BermanMS

In Azure, everything old is new again. Case in point, the much maligned batch-processing paradigm has been given new life in Azure; whether it be parsing documents into searchable text, process images into thumbnails, creating PDFs, dispatching emails, sending SMS, manipulating files, performing backups, validating data, executing long-running calculations and more. During this code-heavy session I’ll show you how to create a set of secure production-ready WebJobs to do all of the above, with logging, poison-message handling, monitoring, queue and service-bus integration, load / cost optimization and even alerting.

Angular Lab

8:37 am in
Bill WolffMVP

Are you ready for some football? Come build a simple web site of NFL teams and players using the popular Angular framework from Google. In the first half we start with Angular 1.x and learn binding, controllers, modules, filters, directives, templates, and routing. Our halftime break introduces Angular Material Design for exceptional visual design with minimal coding. The second half action picks up with Angular 2 featuring web components and TypeScript. You will understand why this platform is undergoing drastic syntactical changes. These changes enable cross platform development for web, mobile web, native mobile and native desktop.

This lab is completely hands-on with data and frameworks provided on a USB drive. Demonstrations will use Visual Studio Code and NodeJS. Come with that installed or use your favorite code editor.

ZeroMQ, ZooKeeper and FlatBuffers all in One hour

8:30 am in
Ravi Okade

In this session we will create a high performance Pub-Sub solution using ZeroMQ which can be achieved with a few lines of code. So to fill the remaining part of the hour, we will use ZooKeeper which will help fill the zoo with multiple publishers and keep them all behaving. And we will visit FlatBuffers which will make you wonder if serialization protocols will ever stop evolving.

Introduction to .NET Core 1.0 and ASP.NET Core 1.0

10:00 am in
Henry He

.NET Framework was released 14 years ago to create a universal programming layer that gives developers the choice to use any programming language. The Framework was designed with a cross-platform concept in mind, but Microsoft only implemented it for its own platforms. Mono, the open source and cross-platform implementation of .NET Framework, was created by Novell (originally by Ximian), but it is not very popular. Two years ago, Microsoft decided to further open source .NET and make it officially available on different platforms. This was the start of .NET Core. The .NET Core 1.0 was released in June. Let’s take a look at .NET Core 1.0 and ASP.NET Core 1.0 to see the features. What I am going to present here is solely based on my own study, research, and experiments on .NET Core 1.0 and ASP.NET Core 1.0.

Hangfire, the ultimate MVC and WebApi Task Manager

11:30 am in
Ken Lovely

Hangfire is a package you can easily add on to any MVC, WebApi or Owin hosted service that offers you an easy way to perform fire-and-forget, delayed and recurring tasks inside ASP.NET applications and you don’t need a Windows Service. I will demonstrate everything from installation to advanced techniques that you can use in your projects.

Who needs Visual Studio? A look at using .NET Core everywhere else

1:30 pm in
Chris GomezMVP

.NET Core is here! We’ve heard how it is lightweight and cross-platform and that you can use the tools that make you happy. Most of us are going to let Visual Studio do the heavy lifting, and that’s fine, but you can learn much about how things work under the hood if you put the IDE aside and work with .NET Core without ever touching it.

To demonstrate, Chris will demonstrate acquisition and use of .NET Core on a VM untouched by a Visual Studio installation. We’ll compare the outcome to doing the same on Linux, and learn what the Omnisharp effort is all about.

The goal is to talk about how you can achieve the most friction-free experience for projects that want to be accessible on different platforms for people with different tastes. This session is perfect for .NET veterans who are brand new to .NET Core and want to see what the brave new world looks and feels like.

Boo: Programmable Programming for the CLR

3:00 pm in
Mason Wheeler

To many developers, the term “metaprogramming” conjures up images of bizarre rituals performed in esoteric Lisp interpreters. Others hear the term and think of the messy, write-only world of C++ templates and the dark horrors that lurk within the error messages they generate. But metaprogramming is a surprisingly simple technique that, once understood, can greatly enhance your productivity by literally moving your development to a higher level: instead of programming your code, you’re programming your programming language itself!

This presentation focuses on the Boo language, a friendly, easy to grasp, strongly typed language for the CLR. Boo was designed with metaprogramming in mind, and it contains several language features to enhance your productivity as a developer, from basic macros and meta methods to simplify redundant tasks, to code-transforming AST attributes, to full-on code generation, to a customizable compiler pipeline that offers full control over the compilation process for projects that need it.

Among other things, attendees will learn about using Boo and its metaprogramming facilities to create frameworks to simplify common, repetitive tasks, how to create code generators, code transformers, and code verifiers and integrate them into your project, and how to deal with those annoying cases every large project faces where adding a new piece of data requires changes in half a dozen places scattered throughout your codebase.

React vs Angular vs Vue

8:30 am in
Bill WolffMVP

Sold OutThis hands-on lab covers the three most popular JavaScript UI frameworks. Learn the fundamentals of React from Facebook, Angular from Google, and the new guy called Vue.

Part 1: bootstrapping, component definition, markup syntax, and file structures
Part 2: component communication and routing
Part 3: data services, Flux architecture (Redux, Vuex) , and providers
Part 4: Visual Studio Code tooling, Typescript, CLIs, browser add-ons, and Material Design

We develop the the same single page application in all three frameworks while carefully calling out similarities and differences.

Vue + Vuetify + Vuex

8:30 am in
Bill WolffMVP

Vue is gaining a lot of buzz as a worthy alternative to React and Angular in the JavaScript UI framework market. Come see how this fast and lightweight competitor simplifies SPA development chores. Vuetify is a popular implementation of Material Design principles that seamlessly snaps into a Vue app for a modern responsive look and feel. Vuex provides store and state management using Flux architecture patterns.

Creating an Angular Component Library

10:00 am in
Graham Murray

A practical session on creating a reusable Angular UI Component using TypeScript and the HTML5 Canvas, optimizing its payload size through bundling tools and tree shaking, preparing it for deployment, and using it in an application.

Optimizing ReactJS

11:30 am in
Scott Kay

ReactJS is a powerful library that makes it easy to build, reason about, and organize HTML user interfaces. In this session, we’ll build a single page ReactJS app, peer under the hood at how ReactJS behaves, and learn how to optimize for performance.

Creating a Progressive Web Application (PWA) From Scratch to Engaging App

1:30 pm in
Chris LoveMVP

Progressive Web Apps are the new hot thing all the browsers are pushing and businesses want. They combine maximum customer reach with platform integrations previous reserved to native apps.

Progressive web apps have technical requirements of HTTPS, a valid web manifest and a registered service worker. As usual things are not as simple as they seem.

This session demonstrates how you can create a simple progressive web app in under an hour. You will learn how to quickly create a minimum progressive web app and then apply some intermediate techniques to improve the application’s performance and user experience.

The goal is to learn how you can adjust traditional web site architecture to be a proper PWA that you can take back and upgrade new and existing web sites to be a good progressive web app.

Introduction to React Native with Redux

3:00 pm in
Mike Melusky

This session will go the high level details of React, a JavaScript user interface library currently maintained by Facebook. Not only can React be used to build progressive web applications (PWAs), but it also can be used to create native iOS/Android applications using React Native.

Basic concepts of React Native will be covered, such as components, props and state. Advanced topics will also be covered, such as React Navigation and state management Redux (using middleware.) The goal of the session is to build an Android app that can connect to an outside API.