Presentations

I enjoy presenting on technical topics at user groups, lunch & learns and development conferences. If you attended one of my sessions at a recent conference, links to my slides are below. Feel free to leave feedback on the comment form or, better yet on SpeakerRate via the “Rate this talk” links by each session.

 

Clean Code – Writing Code for Humans

Inspired by Steve McConnel’s “Code Complete”, Uncle Bob’s “Clean Code” and Andrew Hunt’s “The Pragmatic Programmer”, this session reviews best practices for writing code in a style that’s easy to create, maintain and understand. We have a lofty goal: programming style as documentation. We’ll discuss concrete methods to get you there and give you a vocabulary for pragmatically evaluating code quality.

Various refactoring techniques, code smells, anti-patterns, and rules of thumb are discussed including fail fast, return early, separation of concerns, arrow code, magic numbers, the boy scout rule, being “stringly typed”, DRY, the stepdown rule, table-driven methods, the importance of staying native, techniques for finding subtle redundancy, reinventing the square wheel, when to create a method, doing comments right, horizontal and vertical density, and simple design patterns. Part of this session involves refactoring a confusing and ugly chunk of code into something beautiful, easy to read and maintain. While examples are in C#, coders in any language should be able to follow along and apply the principles discussed.

Slides and source code

Presented At:

 

Building Secure Web Applications

What could a hacker do to your web application? Lock all your users out of their account? Collect a list of every user’s email to spam them or lure them into a phishing scheme? Are your users passwords safe from theft? Could a simple brute force attack allow a hacker to login as another user? Is your application’s database at risk for total compromise? Are supposedly secure sections of your app actually easily accessible to the public? Are your admin users at risk of having their sessions stolen and impersonated? Let’s get clear answers to these critical concerns.

This session leverages hacking techniques outlined in “The Web Application Hacker’s Handbook”. We will review a variety of best practices and potential pitfalls that are easy to overlook. We will discuss the top 10 most critical web app security issues and view their implications through real-time hacking of an insecure web application. And after we’ve seen how to hack, we’ll discuss how to defend our apps from the thugs.

Slides and source code

Presented at:

 

Embarrassing Coupling Problem? Let’s Solve That with Dependency Injection.

This session begins with an overview for developers who are new to Dependency Injection (DI). We’ll discuss why DI is a key pattern for building scalable, maintainable, high performance applications. We’ll learn the importance of coding to an interface rather than an implementation, discuss why IoC containers are useful, and review how DI allows you to write loosely coupled and testable code.

With this foundation established, we’ll dive into common DI anti-patterns, review lifetime scope alternatives, and learn how to compose objects via a composition root. We’ll wrap up with a quick review of how you can handle cross-cutting concerns like logging and security with dynamic proxies. Examples are in C#, but coders in other strongly typed languages should be able to follow right along.

Slides and Source code

Presented at:

  • Nebraska Code Camp 2013
  • Kansas City .Net User Group

 

Become an Outlier: Career Advice for the Developer Mind

As a developer, your image and your mind are your product. We’ll discuss the concrete activities and skills that transform average developers into outliers. You’ll learn why developers can’t afford cable, ways to improve your “luck surface area”, and techniques to compress your career through accelerated development. This session is loosely inspired by Malcolm Gladwell’s “Outliers”, Chad Fowler’s “The Passionate Programmer” and Seth Godin’s “Poke the Box”.

Slides

Presented at:

  • CodePaLOUsa Louisville 2013
  • Kansas City Developers Conference 2013 – Rate this talk

 

Pragmatic Architecture in .NET

An architect’s job is to reduce complexity, not increase it. Yet the developer life is filled with jargon, acronyms, and seemingly infinite choices. So how do we know when complexity makes sense? We’ll learn when abstractions are justified and discuss how to structure applications so they’re maintainable, scalable, and testable.

We’ll make sure everyone is comfy with the core jargon like N-Teir, separation of concerns, and loose coupling. Then we’ll dive into various patterns for implementing the three common layers: data access, business logic, and presentation. You’ll learn when table module, active record, DDD, and ORMs make sense and walk away with the tools to better evaluate and justify complexity. We’ll focus on the value of keeping things simple whenever we can. Examples are presented in C# in Visual Studio but developers in Java, PHP, and other C-like languages should be able to follow right along.

Slides

Presented at:

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>