Andy Clymer & Richard Blewett
Solid async programming in .NET
Allen Holub
Agile: principles, practice, &
architecture
Kathleen Dollard
Improve your .NET game – taking
your C# skills to the next level
Kevlin Henney
Software craftsmanship
Dominick Baier & Brock Allen
Identity & access control for
modern web applications & APIs
Dino Esposito
Architecting applications for the
enterprise
Sp
ace
is li
m
ite
d –
bo
ok
no
w
From the organisers of SDD – choose
from six intensive 3-day workshops,
presented by world-class experts
❝
Final day at #sddconf for me. Has been really good. Has got me excited aboutwriting software (and doing it better) again.
~
❝
Really enjoyed the identity and access management workshopwith @BrockLAllen and @leastprivilege.
~
❝
Excellent balance of Agile, Architecture andTech.
~
❝
I thought Andy Clymer and Richard Blewett wereoutstanding.
~
❝
Back from an awesomefew days at @sddconf brain is too full right
now!
~
❝
2 features of a greatconference: 1. Good speakers (check) 2. Good
food (check). The rest is just a detail. #sddconf
~
❝
Dino’s workshop was exactly what I needed andI walked away with many answers.
~
❝
I feel like my brain is saturated after 4 days of learning @sddconf. Plenty of new and useful stuff to go back to work withnow.
~
❝
Can definitely recommend talks held by@KevlinHenney #sddconf
~
❝
Enjoyed a great range oftalks at #sddconf – slowly dragging my knowledge
out of the dark ages.
~
❝
SDD conference hasbeen awesome.
~
❝
@KathleenDollard thanksfor a great session on Debugging – plenty of food for thought. Session is at the top of my list for
sdd2015 #sddconf
~
❝
Bye #sddconf – I leave a different programmer thanwhen I arrived!
~
❝
sddconf over. Brainfrazzled. Social skills minimal. Thanks to all speakers and conference
organizers. Till next time!
~
❝
Thank You Dino for the great presentation. Amazing!!! @despos#sddconf
~
❝
Finally beginning to properly understand asyncand await thanks #sddconf
~
❝
@richardblewett thanks for a great talk with somevery valid points #sddconf
~
Following successful SDD conferences in May 2014 and 2015, feedback from attendees suggested the idea of a spin-off event with a new format, offering the opportunity to spend more time focusing on a specific topic in much greater depth. Our first SDD Deep Diveconference features eight of the highest-rated speakers from SDD 2015, all of whom have many years of experience educating software developers and architects.
We hope that one of the three-day workshops will be of interest to you – if so, we’d recommend that you register as soon as possible, as the number of places is strictly limited.
If you have any questions about any aspect of the event, please feel free to send us an email: [email protected]
Best wishes
Nick Payne & Paul Mayer
왘Book now to secure your seat – see back page
왘Follow us on Twitter: @sddconf 왘sddconf.com/deepdive
Venue & location
America Square Conference Centre 1 America Square, 17 Crosswall London EC3N 2LB
j.mp/america-square
SDD Deep Dive takes place at the America Square Conference Centre in central London, near a number of famous landmarks including the Tower of London and Tower Bridge.
This is a modern, air-conditioned venue, with well-equipped rooms, state of the art technology, and high-quality catering. It also incorporates a genuine piece of history, as the original London Wall (one of the largest construction projects carried out in Roman Britain) runs right through the venue, providing a fascinating and unique feature. America Square Conference Centre is close to Tower Hill and Aldgate tubes, Fenchurch Street rail station, and various bus routes.
Welcome to SDD Deep Dive
Choose
one of six
intensive
workshops
Learn
from our
hand-picked,
top-rated
speakers
Deep dive
into your
selected topic
over 3 days
Book now
to secure
your seat
Solid async
programming
in .NET
Andrew Clymer & Richard Blewett
In today’s world, where responsive UIs and scalable servers are an absolute
requirement, alongside being able to use a machine’s resources effectively, solid async
programming is an essential skill for a developer. This means
understanding how to execute functionality
asynchronously, both in terms of compute and I/O. In this intensive workshop you’ll learn, through a combination of lectures and hands-on exercises, how to write async code efficiently and safely on the .NET
framework.
Attendees will need to bring their own laptops with Visual Studio 2013 installed – we’ll provide access to power.
Day 1
The Parallel Framework Extensions library (PFx) will become the main model for building asynchronous code. The pivotal type enabling this transition is the Task class. This is a functionally very rich type allowing the creation of both short and long lived asynchronous work. Tasks can have dependencies on one another and support cancellation. We’ll look specifically at how this class gives us a unified framework for building multithreaded code.
Async programming requires careful attention to detail since most objects are not designed with multithreaded access in mind. We’ll cover the core .NET
synchronization primitives such as
Interlocked, Monitors, reader-writer locks and kernel objects.
We need to consider thread safety when sharing state across multiple threads, and understand the possible race conditions and select the cheapest synchronisation technique to satisfy thread safety. We’ll explore the use of built-in concurrent data structures shipped with TPL that will simplify
multi-threaded code while maximising concurrency and efficiency.
Day 2
C# 5 builds on the Task API, introducing the async and await keywords which bring async execution as a first class concept in the C# language. These new keywords create a very elegant model for all sorts of async work.
The original goal of PFx was to provide support for splitting computationally intensive jobs across multiple processor cores. Even though the scope of the library
Andrew Clymer
Prior to co-founding Rock Solid Knowledge, Andy cut his teeth working in various start-ups, programming on a host of platforms, and finally working for a company acquired by Cisco in 1997. After working for Cisco for a few years, the pull of the start-up world was too much to resist, and he now spends his time working on RSK’s kiosk-based solutions on Windows Embedded with .NET, alongside consulting and teaching for a diverse range of clients. Andy is co-author of Asynchronous
programming on the .NET framework, published by Apress.
왘rocksolidknowledge.com 왘@andrewclymer
has expanded, this is still an important part of this infrastructure. We look at the tools PFx gives you to aid parallelizing algorithms, but also show that without care PFx isn’t necessarily a free lunch.
The nature of server side applications often means they are asynchronous by their very design, servicing many clients at the same time on different threads. We’ll focus on a range of server side technologies, and demonstrate how to perform maximum concurrency for the minimum number of threads.
Day 3
Reactive Framework is a library that uses the .NET 4.0 IObservable interface and LINQ to create a compelling new programming model, which allows you to build “event” based code with declarative LINQ statements, greatly simplifying your code.
TPL Dataflow is a downloadable addition to the TPL (Task Parallel Library) that ships with the .NET framework, which provides an alternative approach to define concurrency, greatly reducing the complexity normally associated with async programming. Debugging async code is hard due to the inherently non-deterministic nature of multithreaded applications. We’ll look at a variety of tools and techniques to assist you in tracking down those elusive Heisenbugs.
Architecting
applications for
the enterprise
Dino Esposito
Get a fresh perspective on real-world software design: from DDD to CQRS, and from both up to Event Sourcing.
Overview
The purpose of this class is to present the state-of-the-art of software architecture, and to discuss a few implementations primarily but not exclusively on top of the .NET Framework.
Domain-driven design (DDD) emerged a decade ago as a very engaging way to tackle complexity in the heart of software. Today we need to split the DDD approach into two distinct parts: analytical and
Richard Blewett
Richard is one of the founders of Rock Solid Knowledge. He has been working in the software industry for over 20 years – starting with
mainframes, through the early years of client/server, to today’s service-oriented world. He has spent much of his professional life working on large distributed systems, including being the middle-tier architect on the UK national police systems. He is the co-author of
Pro Async Programming with .NETand a Microsoft Integration MVP. Richard is a well-known conference speaker having spoken at SDD, TechEd, DevWeek, Basta, Software Architect, and Oredev, and he can often be found helping people on various newsgroups, mailing lists and web forums. He is also a DevelopMentor instructor, where he writes and teaches material on a wide range of technologies.
왘rocksolidknowledge.com 왘@richardblewett
strategic.
The analytical part of DDD is about defining a ‘ubiquitous language’ to share with stakeholders and ‘bounded contexts’ to lay out the definitive domain architecture. In a nutshell, DDD
analysis is about understanding the business processes and the structure of the client organization. This type of knowledge is essential to model an appropriate software architecture.
The strategic part of DDD is about choosing the ideal software architecture for each bounded context, in accordance with a few parameters such as expected lifespan of the software, skills, legacy code and the canonical costs and deadlines. This class provides a pragmatic view of domain-driven software development and weds together architectural patterns with
concrete technologies and frameworks. Through the evolution of software design practices, we’ll help you decide for yourself whether CRUD, CQRS, Domain Model or event-driven architecture are most appropriate. This class won’t
evangelistically promote any specific approach or technology, but will dissect the recent dynamics of software design to highlight what makes each pattern suitable (or unsuitable) for a particular business scenario.
Takeaways
•Discover the natural architecture of a system using ubiquitous language and bounded contexts
•Take a user experience (UX) first approach, rather than designing for data
•Found your design on distinct command and query stacks rather than
comprehensive models
•Use event-sourcing and CQRS together to model complex business domains more effectively
•Reconsider the role of the database – a polyglot layer rather than a product
•Reconsider tools and strategies for scalability and performance
•Understand the scope and impact of devices in architecture
Note: All of the code shown during the class uses C# and the Microsoft .NET Framework. However, this is only for convenience – much of the content of this class is language and platform independent.
Format
This class isn’t purely presentation-based – there will be numerous conceptual demos and excerpts from sample applications as well as real-world projects.
Dino Esposito
A long-time trainer and highly-rated consultant, Dino is the author of many popular books for Microsoft Press which have helped the professional growth of thousands of .NET developers and architects. CTO of a fast-growing company providing software and mobile services to professional sports, Dino is also a technical evangelist for JetBrains, where he focuses on Android and Kotlin development, and a member of the team that manages WURFL – the database of mobile devices used by organizations such as Google and Facebook. Recently, Dino co-authored (along with Andrea Saltarello) the second edition of bestseller Microsoft
.NET: Architecting Applications for the Enterprise(Microsoft Press).
왘paper.li/despos/13650843855 왘@despos
Target audience
Developers and lead developers keen to grow professionally by learning design principles and architectural patterns to apply in their work; project managers and IT managers who co-ordinate the various phases of the software development process; solution architects who need a crisp refresher or who are looking for a new perspective to rejuvenate their design spirit.
Software
craftsmanship
Kevlin Henney
Although a great deal of the enthusiasm for Agile development initially grew from software developers, much of the current focus in Agile circles has moved to organisational aspects, product
management and soft skills. Craftsmanship
has long been a quality and a metaphor applied to software development, but more recently software craftsmanship has emerged as a more explicit movement and branding focused on reclaiming and re-emphasising the importance of the detail, of how to code and how to do it well.
This workshop explores the key elements of software craftsmanship, from what
constitutes good code and tests to deliberate practice and reflection. There will be discussion, examples, and hands-on sessions, following a coding dojo format with a focus on pair programming and test-driven development.
Topics will include:
•What do we mean by good code
•Why does code quality matter, and what are the economic consequences of poor code •How to manage technical debt and – even better – how to avoid accumulating it
•What are the limits of estimation •Empirical versus planned approaches to
Kevlin Henney
Kevlin is an author, presenter and consultant on software development, focusing on OO design, patterns, Agile development and software architecture. He has written on the subject of programming practice for many magazines and websites, including Better Software, The Register, C/C++ Users Journal, Application Development Advisor, Java Report and C++ Report. He is a member of the IEEE Software Advisory Board and was a member of the ISO C++ standards committee. Kevlin is co-author of two books on patterns, and editor of 97 Things EveryProgrammer Should Know. Over the years he has spoken at numerous conferences around the world, including SDD, DevWeek, GOTO, Software Architect, QCon, OOPSLA and ACCU. 왘kevlin.tel
development
•How to make use of deliberate practice and reflection
•What makes a unit test a good unit test
•TDD and other approaches to unit testing Hands-on sessions will involve pairing at laptops, so please try to bring a laptop – as long as at least half the participants have laptops there will be enough, and we’ll provide power so don’t forget to bring your charger.
There will be slides, there will be discussion, there will be code – and there will be fun!
Agile: principles,
practice, and
architecture
Allen Holub
This class is not your typical Agile training. Most training fails because of a dogmatic approach that teaches process by rote without covering the essential subjects that you need to understand in order to be successful. This class teaches you agility –
how to be agile in the true sense of the word. Our focus is on the ability to not just accept, but welcome changes as you work, and to leverage those changes to create better products. We cover agility in considerable depth: from philosophy, to business value, to nuts-and-bolts code construction and architecture.
At the core of this class is the notion that agility comes about by applying basic principles, not by rigidly following a single process. We dig deeply into Lean/Agile philosophy and practice, providing you with a much deeper understanding than you can get from a certification mill. We focus on agility itself, starting with a discussion of issues strategic to the business, include agile culture. We show you how to set up an organization where agility can thrive. Then we explore Lean Manufacturing and the Lean-Startup business philosophy that underlies agile thinking. You’ll learn how to improve the efficiency of, not just the team, but the whole business. And you’ll learn how to develop products that the market will embrace.
We move on to the Agile Manifesto and Principles, and see how they impact everything from governance to the layout of your office.
That background gives the foundation we need to analyse several different practice frameworks. We’ll cover a number of Lean/Agile processes in depth (Lean, Scrum, XP, Kanban), and we’ll talk about everything from day-to-day ceremonies to effective tools. We’ll also provide considerable
Allen Holub
Allen is a world-class expert in Agile process, software architecture, and OO design. He’s built full-stack web applications, micro-services, compilers, database servers, real-time operating systems, and more. He provides guidance and training for all sizes of organizations, working with everyone from C-levels to developers. Allen has also written a dozen books and hundreds of articles, and taught for the University of California Berkeley Extension.
왘holub.com 왘@allenholub
practical advice about how to instil agility into traditionally managed, phased-development (waterfall) organizations. Then, we’ll talk about the hardest part of agile: implementing it in your workplace. We’ll discuss how the organization has to change to support agility, and how to transition from a traditional workflow. We’ll also talk extensively about the needs of agile teams and how to support them. Finally, we’ll cover the practical aspects of agile: building code that can stand up to the rigours of constant change within the framework of a fundamentally agile architecture. We’ll look at code organization in general, basic design principles,
modularity and micro-service architectures, messaging, designing for scalability and robustness, and most importantly, how to design for volatility of both the platform and the stories/requirements.
This class will provide you with a solid foundation for bringing agility into your organization.
Identity & access
control for modern
web applications &
APIs (using ASP.NET
4 & 5, OpenID
Connect, OAuth2,
and IdentityServer)
Brock Allen & Dominick Baier
Modern application design has changed quite a bit in recent years. “Mobile-first” and “cloud-ready” are the types of applications you are expected to develop. Additionally, Microsoft has revamped their web stack with OWIN, Katana, and ASP.NET 5 to keep pace with these architectural demands.
Needless to say, you also have to secure
these apps. Multi-platform, multi-client, and highly-mobile users bring a new set of challenges, so the approaches of the past are no longer appropriate for
modern applications. This three day workshop is your chance to dive into all things security related to these new technologies. Learn how to securely connect native and browser-based applications to your back-ends and integrate them with enterprise identity management systems as well as social identity providers and services. The first day will focus on securing web applications, whereas the second day will shift to Web APIs and their security needs. The first two days will utilize the current ASP.NET framework including OWIN and Katana. The third day will conclude with a look towards the next ASP.NET runtime and the unification of MVC and Web API, as well as the most common customizations of the popular open source IdentityServer
Brock Allen
Brock is an independent consultant with almost 20 years of industry experience, specialising in .NET, web development, and web-based security. He’s an author and instructor for developer training company
DevelopMentor, where he manages the web curriculum. Brock is also a member of Thinktecture, and contributes to the various open source projects there. He frequently posts to the ASP.NET forums, is an MVP for ASP.NET/IIS, a member of ASPInsiders, and a contributor to the ASP.NET platform.
왘brockallen.com 왘@BrockLAllen
framework.
Day 1: Web
Applications
•Authentication & Authorization on .NET 4.5 •Middleware-based Security Framework – Cookie-based Authentication, Enterprise Authentication with WS-Federation, Social Logins(e.g. Google, Facebook, Twitter, etc.), OpenID Connect
•Web Application Patterns – Single Sign On/Single Sign Off, Federation Gateway, Account & Identity Linking, Delegation, Home Realm Discovery
Day 2: Web APIs
•ASP.NET Web API Security – Architecture, Authentication & Authorization, CORS, Katana Integration
•Web API Patterns – Token-based Authentication, Delegated Authorization, OAuth2, Flows, Scopes, OAuth2 Middleware, Federation
•OpenID Connect (revisited)
Day 3: ASP.NET 5 and
IdentityServer
•From Katana to ASP.NET 5 – DNX, Pipeline, DI, MVC 6, Security middleware
•Customizing IdentityServer – Scopes and Clients,
UserService, Views/branding, Patterns, Deployment
Improve your .NET
game – taking your
C# skills to the next
level
Kathleen Dollard
The power and flexibility of the C# environment comes with a cost of complexity. If you understand this complexity better, and improve your everyday skills, you’ll be better able to build great programs in this amazing
environment. If you’re an intermediate or advanced C# developer, you’ll leave this workshop creating better C# code faster. Our ecosystem is sorting through an enormous number of changes right now. The course kicks off by looking at roadmaps and how these changes are going to affect your team. The rest of the first day focuses on specific ways to improve your techniques for debugging, testing, profiling, and logging.
Day two focuses on .NET internals and you’ll explore some of these issues by solving puzzles using techniques from the first day. You’ll gain a deeper understanding of nuances of types and memory management. You’ll see patterns to effectively use generics. You’ll enhance your perspective of “good” versus “bad” inheritance and the behaviour of virtual, new, statics and overloads. You’ll also dive deep into delegates and lambdas to leverage
Dominick Baier
Dominick works as an associate consultant for the German company Thinktecture (thinktecture.com). His focus is on identity & access control protocols and APIs, and how to apply them to real-world software projects. He started the popular IdentityModel, IdentityServer and AuthorizationServer open source projects
(thinktecture.github.io), which are now used by many developers and companies around the world. 왘leastprivilege.com 왘@leastprivilege
functional approaches to C#.
Day three focuses on code and application quality. You’ll learn ways to assess code quality and refactor code. You’ll also learn to improve application
performance via async techniques, and the scenarios where this introduces complexity without significant benefit. The afternoon focuses on how to build Visual Studio 2015 analysers to provide project specific rules and implement fixes across your application with a single click. This also introduces Roslyn, which you can leverage in other ways.
This course goes deep right where you need it. For example, you might already know about the stack and heap. But can you confirm or rule out garbage collection as the cause of a performance problem? Do you know about the .NET 4.5 changes to how
the large object heap is managed? Do you know how to decide between the two types of garbage collection?
The course focuses on key aspects of the current and upcoming .NET Framework. You’ll learn how .NET Core 5 fits into the big picture and get an idea of how fast it’s expanding. You’ll learn the role of the adjacent frameworks and .NET Native, and a few key differences such as the new reflection model. But the focus will remain on the main .NET Framework. The course will not cover surrounding technologies. It will not cover ASP.NET, Entity Framework, WPF, etc.
Throughout the three days you’ll also learn tips and tricks to be more effective in Visual Studio and how to think about C# and .NET in ways consistent with their behaviour. You’ll also see the new C# 6 features in the context of how you’ll use them to improve your code.
You’ll learn all this from .NET expert and long-time MVP Kathleen Dollard, sharing her passion for effectively using C#, the .NET frameworks, and our tools. While much of the course will be presentation style, Kathleen will also include puzzles and collaboration to create a fast paced and varied environment to maximize what you learn and retain.
Kathleen Dollard
Kathleen wants to teach you to code better. There’s more to learn about the tools you use every day and the tools you aren’t yet using. Coding is our passion and debugging is our challenge – you’ll be happier if you do both better. Kathleen has written dozens of articles, spoken at various conferences and user groups around the world, and pushes Microsoft to respond to your real-world needs as a long-time MVP. Her open source project RoslynDom offers alterative access to information in the .NET Compiler Platform, Roslyn with a load/interrogate/mutate/build SyntaxTree model. She has courses in the Pluralsight library and a series of C# 6 webcasts now available for free on WintellectNOW.
왘blogs.msmvps.com/kathleen 왘@kathleendollard
왘
Space is limited – book now to
secure your seat
As the number of places for each workshop is limited, we recommend that you confirm your booking as early as possible in order to avoid disappointment.
Terms & Conditions
Places may be cancelled up to midnight on 1stSeptember 2015,
in which circumstance a cancellation fee equivalent to 25% of the value of the relevant registration(s) will be charged. Cancellations made after 1st
September 2015 will incur a cancellation fee equivalent to 100% of the value of the relevant registration(s). In the event that a named delegate is unable to attend, another representative of the delegate’s organisation is welcome to attend in their place,
as long as we are notified of the change before the start of the conference.
While we will make every effort to ensure that all of the advertised sessions and workshops are delivered at the conference, we reserve the right to make changes if this is unavoidable, e.g. if a speaker is unable to attend due to illness.
If a registered delegate is unable to attend the conference for any reason that is beyond our control, e.g. illness, bad weather, transport issues, bereavement, no longer
being employed by the organisation which booked his or her place, terrorism, security alerts, or an act of God, we regret that we will not be able to refund the relevant fees.
Personal data is gathered in accordance with the Data Protection Act 1998.
Your data will ONLY be used by us to send you information about this and future SDD conferences – it will not be shared with any third parties.
Book Online
sddconf.com/registerAny Queries?
Email: [email protected]Hotel
Accommodation
If you need a hotel room please note that this isn’t included in the registration fees – details of various hotels near the conference venue are available on the SDD website.
What’s Included?
The prices above include a hot buffet lunch each day, refreshments, and a conference T-shirt (in return for submission of a completed evaluation form), but they don’t include hotel accommodation.
Organiser Details
SDD Deep Dive 2015 is organised by:
Yellowstone TechMedia Ltd 13 Glenferrie Road, St Albans, Hertfordshire, AL1 4JT, UK Company Registration No: 08439742
VAT Number: GB 171 1762 21
Price per 3-day workshop £1195(+ VAT)
How to book
Secure your seat now at SDD Deep Dive 2015 – simply book online at