| |
Tracks 1–9 |
09.30 |
Technical Keynote – There’s a storm coming…
Dave Wheeler
We find ourselves in the beginnings of a perfect storm, which presents developers with tough, but interesting, challenges to face.
Consumers have embraced IT in ways that were unimaginable in the pre-iPhone era, revolutionising users’ concepts of applications and the Internet. Previously unthinkable ideas, such as BYOD, are now being actively discussed, if not actually implemented.
Stores have brought indie development into the mainstream, with garage development teams able to build software that reaches out to a global audience.
Novel interaction technology has altered expectations of the user interface forever.
So is the future going to be defined by the “There’s an app for that” model, with small, optimised native applications the order of the day? Or will the future be driven by dynamic, cross-platform applications written in HTML 5, CSS and JavaScript that are hosted in the browser?
And has the drive towards touch-enabled, lightweight, always-connected devices altered the future direction of application development forever?
Independent industry observer Dave Wheeler invites you to explore his vision of the future, as he attempts to answer these questions, and more, as he guides you through a world of stores, fledgling standards and new paradigms, tools and technologies.
The storm is coming. The question is simple: will you be ready for it? |
11.00 |
Coffee Break |
11.30 |
TRACK 1
A lap around Windows 8
Dave Wheeler
Windows 8 is here.
Come to this session for a 90-minute whistle-stop tour of Windows 8, the Modern UI, WinRT and all the other goodies that you need to know.
If you can only make one Windows 8 session at DevWeek, then this is the one for you. But it’s also a great warm up for the rest of the Windows 8 track.
TRACK 2
LINQ and C#
K. Scott Allen
This talk is a journey through the underpinnings of LINQ using the C# language. We’ll see how extension methods, lambda expressions, and expression trees all work together to support type safe queries against in-memory data, and remote data. We’ll explore the functional aspects of LINQ and take a look at solving everyday problems using new technique.
TRACK 3
An introduction to Workflow 4.5
Richard Blewett
.NET 4.0 shipped with a new version of workflow. This version was a rewrite taking on board the customer feedback from previous versions. What we have ended up with is a streamlined, flexible runtime for building rich functionality in a visual scripting environment. .NET 4.5 has removed some of the rough edges on this initial release.
This talk looks at what problems workflow is designed to solve and examines the basic building blocks of a workflow-based application – including how you can provide a customized editing environment for workflows that your business users can work with.
TRACK 4
Building interactive clients with knockout.js
Kevin Jones
Client side development in the browser is becoming more and more important. Clients expect highly interactive applications that respond quickly to changes. To manage this developers have to cope with the demands of JavaScript. While jQuery is a fantastic tool, sometimes it feels too low-level and maybe needs something layered on top. One such layering is knockout.js. This provides an MVVM programming model for the browser. This talk looks briefly at the basis for MVVM and then into the details of knockout.js. We will cover the data-binding that is at the heart of this toolkit looking for example at how knockout does data updates and computed values. We will also see how knockout can work with your server-side coding.
TRACK 5
Top features that every mobile application should have
Dino Esposito
A mobile device has different characteristics when compared to a laptop – memory, battery, connectivity, screen, input devices, sensors, processing power. More importantly, a mobile device is often used on-the-go and in uncomfortable situations. All this makes writing an application a different type of challenge and requires a different set of design patterns.
This talk focuses on general features that developers should consider for a mobile application regardless of the platform, OS or API. You’ll find listed common practices and patterns for login, simplified data entry, (remote) data fetch, user interaction, and data presentation. We’ll be presented screenshots from real mobile sites and iOS, Android, and Windows Phone apps, but it’s not going to be a code-laden, hands-on style presentation.
TRACK 6
How to write a method
Kevlin Henney
We all know how to write a method. We all understand the practices we use, their deep rationale and their implications. We are perfectly rational, reasoned and unbiased about how we code and the practices we employ. Not.
It turns out that we pick up habits and practices without reasoning and retrospectively create justification and rationale for what we do, whether it is naming conventions, indentation, control flow, use of language features, commenting, etc.
This session tries to take a more rational approach that allows you to evaluate and improve how you write methods. And, because it questions common practices using rationality rather than emotion and attachment, you will disagree with a number of the recommendations. That should be at least half the fun!.
TRACK 7
Design patterns in the real world
Allen Holub
Design patterns do not exist in splendid isolation. In the real world patterns overlap one another and interact in complex ways. This class takes a unique approach to teaching patterns by analyzing a real computer program in terms of the patterns used to implement it.
We’ll look at how the design patterns are actually used in practice, and see how the strengths and weaknesses of the patterns play off one another. You’ll also get a chance to see how real-world realizations of the patterns can differ from the Gang-of-Four examples and how a given pattern can be implemented in various ways.
The examples are in Java, but C++ and C# programmers should have no problem following along. Some familiarity with the Gang-of-Four patterns is assumed, however (you should, at minimum, be able to identify them by name).
TRACK 8
SQL Azure overview – how to develop and manage it
Nuno Filipe Godinho
In this session we will be looking at an overview of SQL Azure in terms of Architecture, Application Topologies that can be used and its Provisioning Model. We’ll also be looking at how Deployment can be done, and which Security we can expect on it. One of the important parts will be understanding the elements that are currently supported and not supported on the current version of SQL Azure, and what we can expect about the future.
TRACK 9
Modeling and implementing hierarchies with SQL Server
Bob Beauchemin
This session looks at support in SQL Server for hierarchical data, comparing and contrasting the methods of maintenance and query. I’ll focus on SQL Server 2008’s new hierarchyID data type, with a look at performance and ease-of-use compared with the adjacency model, nested set model, and XML storage and query. |
13.00 |
Lunch |
14.00 |
TRACK 1
WinRT for .NET developers
Dave Wheeler
.NET is a first-class development technology for writing Windows 8 Modern UI applications, but you have to understand how it works if you want to write great applications that perform.
Come to this session to find out how to consume and interact with WinRT from managed code.
Learn how to write WinRT components; how to integrate them with C++ and JavaScript code; and just how natural and fluid it is to work with WinRT from managed code.
And, more importantly, you’ll understand where the pitfalls might lie.
TRACK 2
Understanding the Reactive Framework
Richard Blewett
Reactive Framework is a new library that uses the new IObservable interface and LINQ to create a compelling new programming model that allows you to build “event” based code with declarative LINQ statements.
This talk introduces the Reactive Framework and shows how it can greatly simplify your code.
TRACK 3
A .NET developer’s introduction to SharePoint
Sahil Malik
Are you a .NET developer who has heard of SharePoint? Have you ever wondered what a SharePoint project is like? Is it something you should try out? What is it like to develop for SharePoint, and how is a SharePoint project different from your usual .NET project? This session gives you a pretty decent introduction.
TRACK 4
The new world of HTML5 and CSS3
K. Scott Allen
WebSockets, Webworkers, animations, transitions, and SVG. These are just a few of the new capabilities we can use to build applications with modern browsers.
In this session we’ll give overviews and demonstrations of these new features and see how to build applications with the latest standards.
TRACK 5
The bitter-sweet taste of PhoneGap for mobile developers
Dino Esposito
A company that wants to come out with a mobile application for a wide audience should likely plan to target two or more mobile platforms – iOS, Android, Windows Phone, BlackBerry to name a few. This means different SDKs, different programming languages, different skills, and even different computers. PhoneGap provides some common ground for developers to build mobile applications using a single skillset if not a single codebase. Moreover, the single skillset is not something new but it’s a combination of popular web technologies: HTML, CSS and JavaScript.
On the other hand, by writing a mobile application with PhoneGap you tie up yourself to the performance of the browser, which may not be that good. So in this talk, we get to know the PhoneGap platform (including the Build platform) and explore its technical details and especially its pros and cons.
TRACK 6
Software architecture for developers
Simon Brown
The agile and software craftsmanship movements are helping to push up the quality of the software systems that we build. Together they are helping us to deliver better software that better meets the needs of the business while carefully managing time and budgetary constraints. But there’s still more we can do because even a small amount of software architecture can help prevent many of the problems that projects face, particularly if the team seems to be more chaotic than they are self-organising. Successful software projects aren’t just about good code and sometimes you need to step away from the IDE for a few moments to see the bigger picture. This session is about that bigger picture and is aimed at software developers that want to learn more about software architecture and its role in delivering better software. Join us for a guide to software architecture on modern software projects that’s pragmatic rather than academic and lightweight rather than “enterprisey”.
TRACK 7
From the user to the unit – how to start using tests
Kevin Jones
One of the key questions in testing is “how do I start?”. In this talk we will try to answer that question. Tests should start with features, so the talk will briefly cover requirements gathering in the form of user stories and how to turn those into scenarios and features. From these scenarios we can generate the initial set of acceptance tests and then start to home in on the code. From this we will discover how the unit tests should drive the code forward until the feature tests pass. All the while we will keep the process in mind and see how you can make this cycle into your development process.
TRACK 8
Advanced SQL Azure – performance and scalability
Nuno Filipe Godinho
In this session we’ll look at some more important SQL Azure topics like performance and scalability, and how concepts like Sharding, SQL Azure Federation are important in order to achieve scalability improvements. We will also look at how SQL Azure Data Sync is important for these concepts and also to keep a local replica of the SQL Azure Database, SQL Azure Backups, Import and Exports and other new features that are being release by the SQL Azure team.
TRACK 9
SQL Server 2008 database internals
Klaus Aschenbrenner
Have you ever wondered how SQL Server 2008 stores a database file physically on the hard drive? In this session you will learn the internal structure of a SQL Server 2008 database file, and how SQL Server stores tables and indices internally in the file system. Furthermore you will see the DBCC T-SQL command in action, with which you can analyse the internal storage format of your database files.
The aim of this session is to help you get the last percent of performance from your next database solution. |
15.30 |
Coffee Break |
16.00 |
TRACK 1
The application lifecycle for Windows Store applications
Mark Smith
Windows 8 uses a new model for controlling the lifecycle of Windows Store applications. When the user is not working with your application, Windows conserves resources by suspending it. Furthermore, the system may terminate suspended apps at any time, losing any information or state that the application had. This session introduces the application lifecycle concepts as well as techniques for saving and restoring application data and running background tasks during these lifecycle transitions so the user has the illusion that the application continued running.
TRACK 2
Taking advantage of C# 5 async/await
Andrew Clymer
.NET 4 introduced the new ‘task’ abstraction, and C# 5 will take advantage of integrating this into the language via the async and await keywords. Furthermore, the new task abstraction promotes a new way of architecting asynchronous behaviour; in this talk we will explore how to take advantage of these new keywords and other new types and features being exposed in the next version of .NET to deliver far simpler asynchronous Windows UIs.
TRACK 3
Building single-page apps with HTML and JavaScript – lessons from the trenches
Phil Murphy
When the client said “it has to run in a browser, but look and feel like a native Metro app,” we knew a Single-Page App (SPA) was the only way to go.
This workshop looks back on the lessons learned the hard way during the 9-month build of a complex, feature-rich, multi-tier enterprise app, using HTML, JavaScript, Knockout, C# and SignalR (among others).
We cover the rationale behind building SPAs, the great benefits they can bring, but also the many challenges they throw up, and some of the ways we overcame them. We look at the techniques and frameworks chosen at the time, and consider how we might change those decisions with the benefit of hindsight.
TRACK 4
Light-weight architectures for ‘everyone’ with ASP.NET Web API
Christian Weyer
Service orientation, SOAP and maybe WCF are now part of the tool box for distributed applications. But nowadays some rethinking is required. The triumphant advance of mobile devices and an increased drive towards open architectures may not quite fit the ‘traditional’ implementation of service-orientation. In this talk, Christian Weyer shows how to architecturally meet those new requirements and introduces you to the world of lightweight web APIs. Based on the new ASP.NET Web API stack, you will see how to implement web APIs and consume them in various client applications.
TRACK 5
jQuery 101
Robert Boedigheimer
jQuery provides a very productive environment for client-side programming in JavaScript and is used by a majority of major web sites today. It takes advantage of existing knowledge of CSS selector syntax to offer a powerful and efficient alternative to accessing elements. The use of operation chaining and implicit iteration lead to a very compact and productive syntax. The library is very lean at a mere 32K, yet provides a strong base and a great extensibility model which has led to a large number of plugin extensions to simplify web development. This session will review how to use the library for very useful features while avoiding browser inconsistencies, and making AJAX calls to the server. Several plugins will be demonstrated which provide stunning client experiences with as little as one line of code! We will also study how to extend the library with our own custom utility functions and plugins. Learn how jQuery greatly simplifies client side development.
TRACK 6
SOLID understanding
Kevlin Henney
The SOLID principles are often presented as being core to good object-oriented practice. While they are not a perfect or consistent description of how to organise and manage OO code effectively, they are a good starting point. But there is also more to good code than just traditional OO practice, so this talk looks at the contradictions and consequences of the SOLID principles.
This session starts by going over the SOLID principles, looking at code examples and also different interpretations of the principles themselves. It builds to present a more nuanced view of OO practice and practices that you can take back to your code.
TRACK 7
Test first development with NUnit
Kevin Jones
Test first development is a technique whereby a developer writes a test then writes the code to make that test pass. In this talk we will cover that technique and how to use NUnit to write those tests. We will also talk about some of the test patterns such as arrange, act, assert and “only test one thing”.
We’ll introduce NUnit and its various APIs, including the newer fluent API for writing asserts and how to write data-driven tests in NUnit.
Finally, the talk will touch on Mocking and moq frameworks along with dependency injection.
TRACK 8
High performance statistical queries
Dejan Sarka
SQL Server 2012 database engine has so many business intelligence improvements that it might become your primary analytical database system. However, in order to get the maximum out of these features, you need to learn how to properly use them. This in-depth session shows some extremely efficient statistical queries that use the new Window functions and are optimized through proper indexing, including columnstore indices. We will also explain the formulas and usage of those statistical procedures. This session is useful not only for BI developers; database and other developers can successfully learn how to write efficient queries as well.
This is an advanced level session, and attendees should have experience with T-SQL.
TRACK 9
Filestreams and filetables in SQL Server 2012
Bob Beauchemin
SQL Server 2012 contains improvements to the SQL Server 2008 filestream feature. The biggest feature is the filetable, a way to use filestreams but treat the data as a non-transactional file system share. This talk covers the similarities and differences when using file tables and filestreams, as well as discussing property-level search on files. |
17.30 |
Drinks Reception in the Exhibition Hall |
|