I enjoy being a speaker. I have learned a lot through my mentors, colleagues, and through other community speakers, and standing before a group of my peers and sharing my knowledge is one way that I can give back to the development community. By linking together my speaking and my blog, I can provide a central repository for the slide decks and demo code for my sessions and make these things available to the audience for further review. Here, you will find all of my slides and code for all past presentations, as well as information about all my past and future talks. This post will also be linked through my top navigation so that it can be easily found, and will also be regularly updated with any new schedules and slide decks.
Thank you to everyone who as attended any of my sessions, and as always, I encourage you to give me any feedback you have via SpeakerRate.
Upcoming Talks
I would love to speak at your meeting, event, user group, or conference; please feel free to contact me if you are interested.
.NET Users of Fort Wayne (NUFW), July 10, 2012
On July 10th, 2012, I will be presenting at the July meeting of the .NET Users of Fort Wayne (NUFW) in Fort Wayne, Indiana. The meeting's session will be "Your Spark Razored by NHaml: A Comparison of Popular ASP.NET MVC View Engines." | Event Site
St. Louis Days of .NET, August 3 & 4, 2012
On August 3rd-4th, 2012, I will be presenting two sessions at the St. Louis Days of .NET in St. Louis, Missouri. My sessions at the conference will be "Going for Speed: Testing for Performance” and “XCopy is Dead: .NET Deployment Strategies that Work." | Event Site
That Conference, August 12-14, 2012
I will be presenting at That Conference, a developer's conference in Wisconsin Dells, Wisconsin, held August 12th through the 14th. I will be presenting "Serious Business with Node.js: Module Development." | Event Site
DevLink Technical Conference, August 29-31, 2012
At the DevLink Technical Conference, held in Chattanooga, Tennessee on August 29-31, I will be presenting three sessions covering development in Orchard and in node.js. The presentations will be "Serious Business with Node.js: Module Development," "Serious Business with Node.js: TDD for Node," and "Serious Business with OrchardCMS: Module Development." | Event Site
Presentations
ASP.NET MVC: A (Microsoft) Web Coder's Salvation
There was a time when everything was moving towards the desktop. This Internet thing was new and cool, but there was no way it would ever last. And no one knew how to code for the web, at least not anything beyond animated lava lamps and cute "Under Construction" images. So, to make coding for the web easier, they made ASP.NET to be just like coding for a desktop, using the same patterns, the same event-based model, and the same stateful approach. But the web isn't stateful, its only events are GET and POST, and is nothing like a desktop, so we tortured ourselves for years forcing a square peg through a round hole. The time has come for redemption, and its name is ASP.NET MVC. Spend an hour discovering how coding for the web is supposed to be--how it is today--and end your misery. Salvation awaits.
Slides | Code Walkthrough
Previous Sessions
Grand Rapids, Michigan | GRDevDay developer's conference | November 2011
Okemos, Michigan | Lansing Day of .NET | June 2011 | Event Site
Cincinnati, Michigan | Cincinnati .NET User Group | March 2011 | SpeakerRate
Cincinnati, Michigan | Cincinnati Financial (Internal User Group) | March 2011 | SpeakerRate
Kalamazoo, Michigan | Microsoft Developers of Southwest Michigan | September 2010 | SpeakerRate
Louisville, Kentucky | Kentucky .NET User Group | July 2010
Ann Arbor, Michigan | Ann Arbor .NET Developers | May 2010 | SpeakerRate
Lansing, Michigan | Greater Lansing User Group for .NET Developers | March 2010 | SpeakerRate
Ann Arbor, Michigan | A2<div> | February 2010 | SpeakerRate
Toledo, Ohio | North West Ohio .NET User Group | January 2010 | SpeakerRate
Flint, Michigan | Greater Lansing User Group for .NET Developers | January 2010 | SpeakerRate
Dev Basics: The ASP.NET Page Life Cycle
When a request occurs for an ASP.Net page, the response is processed through a series of events before being sent to the client browser. These events, known as the Page Life Cycle, are a complicated headache when used improperly, manifesting as odd exceptions, incorrect data, performance issues, and general confusion. It seems simple when reading yet-another-book-on-ASP.NET, but never when applied in the real world. In this session, we decompose this mess, and turn the Life Cycle into an effective and productive tool. No ASP.NET MVC, no Dynamic Data, no MonoRail, no technologies of tomorrow, just the basics of ASP.NET, using the tools we have available in the office, today.
Slides | Code
Previous Sessions
Ann Arbor, Michigan | Ann Arbor Day of .NET | May 2010 | SpeakerRate | Event Site
Flint, Michigan | Greater Lansing User Group for .NET Developers | September 2009 | SpeakerRate
Lansing, Michigan | Lansing Day of .NET developer's conference | August 2009 | SpeakerRate | Event Site
Knoxville, Tennessee | CodeStock 2009 developer's conference | June 2009 | SpeakerRate | Event Site
Bullets Kill People: A Presenter's Guide to Better Slides
Effective communication is a pivotal component of a success. Be it presenting at a user group, assisting with a Sales demo, or simply justifying to your boss the purchase of Visual Studio upgrades, you will give a presentation in your career. But the effectiveness of your presentation is not just about being well-spoken and having a prepared outline; the quality of a slide deck has as much impact on a presentation as the quality of the speaker. Slides can destroy. Slides can invigorate. Slides can shape the mood of your audience and bend it at will. Learn to harness this power; use it to tell your story effectively, persuasively, and leave your audience inspired.
Previous Sessions
Louisville, Kentucky | CodePaLOUsa | March 2012 | Event Site
New York, New York | Code Camp NYC 2011.2 developer's conference | October 2011 | Event Site
Hampton Roads, Virginia | MADExpo 2011 developer's conference | July 2011 | Event Site
Knoxville, Tennessee | CodeStock 2011 developer's conference | June 2011 | Event Site
Continuous Integration: More than just a toolset
Does your team spend days integrating code at the end of a project? Continuous Integration can help. Using Continuous Integration will eliminate that end-of-project integration stress, and at the same time will make your development process easier. But Continuous Integration is more than just a tool like CruiseControl.Net or TeamCity; it is a full development process designed to bring you closer to your mainline, increase visibility of project status throughout your team, and to streamline deployments to QA or to your client. Find out what Continuous Integration is all about, and what it can do for you.
Slides
Previous Sessions
Hampton Roads, Virginia | MADExpo 2011 developer's conference | June 2011 | Event Site
Columbus, Ohio | Central Ohio .NET Developers Group | March 2011 | SpeakerRate
Nashville, Tennessee | DevLink Technical Conference | August 2010 | SpeakerRate | Event Site
Wilmington, Ohio | Central Ohio Day of .NET | June 2010 | SpeakerRate | Event Site
Lansing, Michigan | Michigan Department of IT | December 2009 | SpeakerRate
Lansing, Michigan | Greater Lansing User Group for .NET Developers | November 2009 | SpeakerRate
Southfield, Michigan | Great Lakes Area .NET User Group | January 2009 | SpeakerRate
Toledo, Ohio | North West Ohio .NET User Group | January 2009
Sandusky, Ohio | CodeMash 2009 developer's conference | January 2009 | SpeakerRate | Event Site
Ann Arbor, Michigan | Ann Arbor .NET Developers | October 2008
Flint, Michigan | Greater Lansing User Group for .NET Developers | September 2008
The Geek's Guide to SEO
So, you have a web site. Your own soapbox to the world. As a developer, it seems easy for us to claim a spot on the world wide web, set up shop, customize the look and feel, and throw up some content. The hard part is attracting people to your new little flag in the sand. Hey, we majored in Computer Science, not Marketing. But there is hope: one hour of tips, tricks, and general how-to about promoting your site using programming, power toys, and other technical prowess. Our discussion will include ways to attract and appeal to search engine spiders using better tools that are freely available and better code that doesn't include learning new languages or frameworks.
Previous Sessions
Hampton Roads, Virginia | MADExpo 2012 developer's conference | June 2012 | Event Site
Toledo, Ohio | North West Ohio .NET User Group | October 2011
Knoxville, Tennessee | CodeStock 2011 developer's conference | June 2011 | Event Site
Nashville, Tennessee | DevLink Technical Conference | August 2010 | SpeakerRate | Event Site
Going for Speed: Testing against Performance Expectations
Unit Testing has settled into the mainstream. As developers, we write code that checks code, ensuring that the outcome matches some expected result. But, are we really? As end-users (which includes each one of us from time to time), when we ask a question, we don't just expect our answer to be right, we expect it to be right now. So as developers, why are we only validating for accuracy? Why aren't we going for speed? During this session we'll discuss meeting the performance needs of an application, including developing a performance specification, measuring application performance from stand-alone testing through unit testing, using tools ranging from Team Foundation Server to the command line, and asserting on these measurements to ensure that all expectations are met. Your application does "right." Let's focus on "right now."
Previous Sessions
Pittsburgh, Pennsylvania | Pittsburgh Tech Fest | June 2012 | Event Site
Louisville, Kentucky | CodePaLOUsa | March 2012 | Event Site
Grand Rapids, Michigan | West Michigan .NET Users Group | September 2011 | Event Site
Dayton, Ohio | Dayton .NET Developers Group | March 2011 | SpeakerRate
Sandusky, Ohio | CodeMash 2.0.1.1 | January 2011 | SpeakerRate | Event Site
Grand Rapids, Michigan | Grand Rapids Day of .NET | October 2010 | SpeakerRate | Event Site
Cincinnati, Ohio | CINNUG Software Quality Fire Starter | October 2010 | SpeakerRate
Nashville, Tennessee | DevLink Technical Conference | August 2010 | SpeakerRate | Event Site
XCopy is Dead: .NET Deployment Strategies that Work
Back in 1995, when we first started deploying web sites, the copy command was enough. Our web sites only consisted of a static HTML file and a few graphics of animated lava lamps. But our systems are more complex now; instead of a dozen files being uploaded through FTP to a single web server, we have hundreds of files spread across multiple load-balanced web servers, dozens of applications interwoven in a tiered server architecture, and an expectation that it can be deployed error-free without impacting our stringent SLAs. When a tool is no longer sufficient to perform the task at hand, it is time to find a better tool. XCopy is dead; it is time for strategies that work.
Previous Sessions
Knoxville, Tennessee | CodeStock 2012 developer's conference | June 2012 | Event Site
Chattanooga, Tennessee | DevLink 2011 Technical Conference | August 2011 | Event Site
Serious Business with node.js: Module Development
JavaScript has left the browser and is prowling on the server. No longer just for image rollovers and AJAX, Node.js has given JavaScript a new resurgence as a server-side language with a platform for creating lightweight networked applications. In this session, we will move beyond Node’s base web servers and Twitter applications, and into module development: those small, reusable components that are the foundation for every business application on every platform. Learn how to create a module within Node.js, how to test your module and validate functionality, and how to get your creation distributed into the wild.
Previous Sessions
Hampton Roads, Virginia | MADExpo 2012 developer's conference | June 2012 | Event Site
Knoxville, Tennessee | CodeStock 2012 developer's conference | June 2012 | Event Site
Serious Business with node.js: TDD for node
If you don’t test it, how do you know it works? Over the past few years, we have been compelled to write unit and integration tests for our applications--code that validates code--and it is these tests that change a one-off tool into a well-architected, robust, business-ready application. Yet, every new framework requires a new testing framework, so in this session, we will discuss testing frameworks for node.js. You will walk away with a solid understanding of how to write tests against your node.js applications and modules, leading to confidence that your work is business-ready.
Serious Business with OrchardCMS: Module Development
So, you need a Content Management System on the .NET framework. While your business might spend wheelbarrows of money on a platform that is powerful and extensible, your personal site would abandon extensibility for a free, open-source solution. But what if we had an option that was free and powerful and extensible? We do: OrchardCMS. Since we already know that Orchard is free, in this session we will discuss the power of Orchard’s CMS engine. You will learn how to build new modules for the Orchard platform, allowing you to extend functionality as you see fit to meet the needs of your site, your business, and customers.
Your Spark Razored my NHaml: A Comparison of Popular ASP.NET MVC View Engines
If you've worked with ASP.NET MVC, you've likely worked with the WebFormsViewEngine, and have felt like you've stepped back 10 years into Classic ASP 3.0. But one of the powers of ASP.NET MVC is its flexibility to use other View Engines, allowing you to to keep the same Model and Controller while using code in your Views that doesn't bring back scary memories of COM. Spark, Razor, and NHaml are all View Engines that have each made a statement in ASP.NET MVC. Let's see what they are all about, how they compare, and how they stack up to the WebForms engine.
Previous Sessions
Indianapolis, Indiana | Indianapolis .NET Developer's Association | May 2012
Pittsburgh, Pennsylvania | Pittsburgh .NET Users Group | April 2012 | SpeakerRate | Event Site
Findlay, Ohio | Findlay Area .NET User Group | November 2011
Chattanooga, Tennessee | DevLink 2011 Technical Conference | August 2011 | Event Site