Recent advances in operating systems and mobile devices have forced us into the world of interconnectedness, latency and concurrency. The problem is that as programmers, we think primarily in terms of space, and treat the time dimension as an unwelcome afterthought. This is why latency and concurrency is hard; this is why we end up with bugs and warts in our otherwise clean designs. The solution is to embrace time as a first-class concept. In this session, we’ll make that switch, with the help of C# 5’s asynchronous functions and Reactive Extensions. We’ll show how to properly isolate concurrency from business logic and create clean, testable and reusable time-based abstractions. And most importantly, we’ll cover the rules for time-centric thinking, and what it takes to become a C# Time Lord. Join Joe Albahari, author of LINQPad and C# 5.0 in a Nutshell, in a genuine 400-level talk for C# programmers and architects.