by Brady Gaster
SignalR, an asynchronous signaling library, is one of the new tricks in the Microsoft web stack. Think about the possibilities available to you in a browser when you've got constant, server-initiated conversations and real-time responsiveness from within the web browser (like chat, stock updates, publish/subscribe implementations, and so on). Brady Gaster will introduce you to SignalR and will walk through the process of setting up an MVC 3.0 application to work with SignalR using both it's Hub and Connection methodologies. From the server-side implementation of each, up through the jQuery code that allows for the web content to respond to server activity, and a brief investigation into the code SignalR dynamically creates to proxy the calls will be topics covered during this session.
by Carol Smith
User Experience (UX) can be surprisingly difficult to bring into organizations. This session will give you the facts to back up your convictions. Carol will provide you with clear and convincing responses to tough questions about UX and usability methods. You’ll leave with facts about the Return on Investment (ROI) of UX, how to respond to UX skeptics, and how to turn your entire team into usability evangelists.
by Keith Elder
In this session we will explore writing an English-based rules engine that allows developers to create domain-specific rules for an application that can be easily understood by anyone. We will use a combination of C# and the DLR (dynamic language runtime) with IronRuby on the .NET platform to create a way to write, manage, and process rules for an application.
by Jim Weirich
A Code Kata is a simple programming exercise, practiced repeatably by a developer. Much like a musician practices scales and finger exercises to develop his musical skills, a developer will practice code katas to develop his programming skills.
This talk will be a live performance of a simple TDD-based code Kata, followed by an analysis of the forces and choices involved in the feedback loop between the code and the tests encountered during the kata. By examining this interaction of tests and code, we come to a better understanding of how to use tests to actively affect the direction of our design. By reflecting on the process, we understand how to pick "what to test next".
This talk is targeted for developers who have started using Test Driven Design (TDD) and feel that they don't quite "get it" yet, and are looking for guidance in the technique.
Please select from the following options – 1) Ruby 2) Java 3) Python 4) Node.js 5) Clojure 6) All of the above If presented with the above quiz, Heroku would pick #6. Heroku provides a fully managed cloud platform that lets you develop in any of the above languages (with more on the way). With no servers, routers, load balancers etc. to manage, you’re free to focus entirely on your code. With Heroku, you can scale your application up or down with a single command, deploy your code with a simple git push command and monitor your application logs and status in real time. Interested in finding out more? Come join us for an introduction to Heroku and see how you can develop your next application in the cloud. We promise – no more quizzes. Just some code and some command lines.
by Scott Seighman
The Java SE 7 release is the result of nearly five years of industry-wide development involving open review, weekly builds and extensive collaboration between Oracle engineers and members of the worldwide Java community via the OpenJDK project. Over the past year the OpenJDK community has continued to grow, including the addition of major vendors such as IBM and Apple. In June Oracle announced that the Java SE 7 Reference Implementation will be based entirely on the OpenJDK open source code.
The Java SE 7 release includes new features such as small language changes for improved developer productivity, a new Filesystem API, support for asynchronous I/O, a new fork/join framework for multicore performance, improved support for dynamic and script languages, updates to security, internationalization and web standards and much more.
In this session, we'll provide an overview of the these new features and highlight the major improvements.
Test Driven Development can be hard. Oh, sure, it's easy to write the standard bank account tests that you see in all of the demos. But what about real life? What about that service that hasn't been developed yet? What if the code you are trying to test doesn't follow Uncle Bob's SOLID principles? I will show you how free mocking tools will brighten your day!
by Bruce Eckel
Programming languages always seem to do some things well but not others: Python punts when it comes to user interfaces, Java’s artificial complexity prevents rapid development and produces tangles, and it will be awhile before we see benefits from C++ concurrency work. The cognitive load of languages and their blind spots increases the cost of experimentation, impeding your ability to fail fast and iterate. If you use a single language to solve your problem, you are binding yourself to the worldview limitations and the mistakes made by the creator of that language. Consider increasing your wiggle room by crossing language boundaries, complementing a language that is powerful in one area with a different language powerful in another. Language hybridization can speed development to quickly discover your real problems, giving you more time to fix them. After making a case for hybridizing your thinking in general, I will present a number of simple examples; first showing the benefits of using other languages with multiprocessing in Python and Actors in Scala, then hybridization creating a Go language JSON-RPC server and a Python client, and finally a Python web server with a web client using CoffeeScript, jQuery and Ajax. All examples are kept small so that the syntax of each new language can be explained.
If you aren’t building a mobile app today, maybe these tidbits of information will convince you otherwise: 70% of the world’s population has a mobile phone; what’s more, over a million Android devices are activated weekly. 1/2 of all local searches are done on a mobile device; moreover, over 90% of mobile Internet access is social media related. Clearly, if you aren’t building mobile apps today, you will be soon. In this session, I’m going to show you Ruboto, a framework that leverages the power of JRuby to enable you to quickly build and deploy Android apps. As you’ll see, with the expressiveness of Ruby and the full stack nature of this Rails-like framework, you can go from idea to device in short-order. You will leave this session with the knowledge of how to rapidly build a GPS enabled mobile app targeting Android using your existing Java and/or Ruby skills. Now it's up to you to build the next Angry Birds with your new skills!
by Gary Short
The .Net framework provides a rich set of collection classes, but how much do you really know about them? In this presentation we’ll take a deep dive into the .Net 4.0 collection classes and examine which are best for what scenario and why. By the end of the presentation, you’ll no longer be happy just reaching for the same old collection you always have before, but you’ll be armed with the information required to pick the best collection for your needs.
by Rob Reynolds
Last year a collective effort of the .NET community and Microsoft started a project to help make you more productive. Join one of the non-Microsoft core team members as he deep dives into the awesome of NuGet. Come find out what package management means for you and the bottom line. You don’t want to miss this!
by Amir Barylko
All of us who use Castle Windsor IoC Container know how easy is to configure and use. But registering classes and interfaces is just the tip of the iceberg with Windsor. Have you ever wonder how to start using Aspect Oriented Programming in your code? Well if you are using Windsor, you already could! Without any setup! What about creating factories that just wrap Windsor functionality? What if I told you that you don't need to write those classes, Windsor can do it for you! Join me for a session in which we will explore together Windsor facilities (like Startable, TypedFactory and Nhibernate, etc) and AOP functionality provided out of the box!
There has been a long debate lately about the similarities and differences of ASP.NET MVC and Ruby on Rails. In this session, Shay Friedman will walk you through the good, the bad and the ugly of both frameworks providing you points to consider when coming to choose one of them. Come and see how these two wonderful web development frameworks collide!
by Jon Skeet
C# is a fabulous language. A lot of care has been paid to its design, and the specification is precise and well-written. It’s pragmatic and powerful, giving some of the features which make scripting languages terse while maintaining the benefits of static typing. So what’s not to like? Well... nothing’s perfect. In this session I’ll explore some aspects of C# which perhaps took too much legacy from C++ and Java, some “gotchas” from newer features which can cause pain if you’re not aware of them, and some aspects which are simply not quite as smooth as they might be.
As developers, we are asked to absorb even more information than ever before. More APIs, more documentation, more patterns, more layers of abstraction. Now Twitter and Facebook compete with Email and Texts for our attention, keeping us up-to-date on our friends dietary details and movie attendance second-by-second. Does all this information take a toll on your psyche or sharpen the saw? Is it a matter of finding the right tools and filters to capture what you need, or do you just need to unplug. Is ZEB (zero email bounce) a myth or are there substantive techniques for prioritizing your live as a developer? Join Scott Hanselman as we explore this topic…perhaps we’ll crowd-source the answers!
by Sohil Shah
This talk will cover architecting and implementing an Enterprise Mobile App. The development will be done using OpenMobster, an open source platform for mobilizing cloud services. It will involve writing a Sync App. It will cover how to write the Cloud side channels to expose the Enterprise backend. Then on the device side this data will be available for access in offline mode. As the data changes on one device, the Sync Engine will automatically push it to the Cloud and other devices using that piece of data.
You will also learn how to use the cross platform Java API for performing Push. Push is the mechanism used by the Cloud to notify the device of some change that may have occurred on the Cloud. The Java API abstracts the low-level details of Push associated with iPhone and Android.
by Jeff Morgan
Cucumber is a great tool for writing executable specifications. When written well they provide the basis for a team's understanding of the specification. When they run successfully they provide a confirmation that a feature is done and working properly.
The problem is that most Cucumber features are written poorly. They often include technical terms or a lot of unnecessary details that hide the behavior we are trying to describe. This problem is so profound and pervasive in the industry that some are beginning to believe that is is not possible to describe behavior well with Cucumber.
This talk and hands on demonstration will bring attention to typical smells found in cucumber scenarios. Once we discuss a smell, we'll look at an example that exhibits that problem and then refactor the code and feature to clean it up. Along the way we'll also introduce some common design patterns that can be applied to keep your code nice and d.r.y.
by Matt Yoho
Rong is a client-server Pong implementation written in Ruby that hopes to take a whack at your office productivity. Though Pong itself is a relatively uncomplex game, it allows a variety of interesting game programming problems to be explored when constructing the game in a robust manner as a client-server application. We'll talk through the structure of the implementation, the involved libraries, including libraries supporting 2-D game development in Ruby, and the techniques involved in creating a responsive network-based game.
If you are developing software and getting paid for it, software process is part of your life. Even the absence of a defined process is a process of sorts. For over forty years the world of software development has been churning through forms of process, with each successor disclaiming the validity of its forebears to the cheers of those liberated from the oppressive chains of process past.
But if the latest acclaimed process is the answer, why do so many groups slough off what seemed to be working well a scant few years ago in favor of yet another choice? Furthermore, the time between process changes gets shorter and shorter. Waterfall reigned for ages, then RUP, then Scrum and XP, and now Lean/Kanban, each enjoying successively shorter seasons of favor as the de facto choice. Process is but a framework to facilitate the collaboration of a group of people to produce a desired outcome. It is not a substitute for culture, technical excellence, discipline, and product strategy.
In this keynote, Barry emphasizes the need to continue thinking critically about the processes and practices we embrace, accounting for the context in which they exist, and the importance of reflection and refinement at both the organizational and personal levels
by Mike Pirnat
Python's "batteries included" philosophy means that it comes with an astonishing amount of great stuff. On top of that, there's a vibrant world of third-party libraries that help make Python even more wonderful. We'll go on a breezy, example-filled tour through some of my favorites, from treasures in the standard library to great third-party packages that I don't think I could live without, and we'll touch on some of the fuzzier aspects of the Python culture that make it such a joy to be part of.
Android has made mobile development easy and accessible to thousands of developers, but what makes the best Android developers stand out? This discussion covers the tips and tricks that professional Android developers use to make featured apps.
Last year Microsoft released the Kinect, a completely new way of interacting with the computer that turns the user’s body into the input device. Using XNA as a platform, you will learn about how the Microsoft Kinect SDK works and how it can be used to control the computer. You will also learn to overcome the new challenges the Kinect introduces into building a user interface in this session. The Kinect is just the beginning of “touch-free” computing. The techniques you will learn in this session will give you a jump start on creating truly natural interfaces for the touch-free future.
by Chris Nelson
by Bill Wagner
Do you want to write code that adapts to code that calls it? Write C# libraries that perform actions you never thought possible in a statically typed language? This session will show you coding techniques based on Expression Trees that enable you to write meta-code that examines the code that calls it and adapts its behavior based on the caller. You’ll learn to write general purpose algorithms you never dreamed were available in C# or .NET. If your mind has been blown enough yet, we'll go into the Roslyn API set and build code that builds more code to do even more interesting and crazy things. All in the name of good, never evil.
Continuous Integration has become a proven practice for improving software quality by ensuring that the codebase is _integrated_ (validated, compiled, and unit tested) on a _continuous_ (on check-in or scheduled) basis. It’s a great first step on the road to quality production code, but it’s just that: a first step. Beyond the gates of continuous integration lies a path filled with quality quagmires, from countless configuration files to database script disasters to deployment automation. While many developers will shrug their shoulders and say that it’s not their problem, the true professionals will not only take an interest in how their code makes it through production, but advocate for an end product that reflects the quality of their work. In this technology-neutral talk, we’ll explore how to take the foundation laid by continuous integration all the way through production, discuss how to deal with both the technical challenges and the people challenges (management, operations, etc), and show how a single developer can make a huge impact on the software development organization.
You have started developing applications that take advantage of today’s multi-core processors. Come learn how to take your parallel programming skills to the next level. This session will focus on design patterns in parallel programming. Come learn about Parallel Loops, Fork/Join, Producer/Consumer, Map/Reduce and other design patterns used in parallel programming.
by Jen Myers
Designers are designers and developers are developers and never the twain shall meet, right? Except – not really. There are some imaginary lines drawn around the two disciplines of design and development, but the truth is they are closely intertwined, and it can be very useful for a developer to have design knowledge and skills in his or her toolbox. This presentation will correct some commonly-held misconceptions about design, cover the basics of design from a developer’s perspective and explore how a developer can employ these principles to build clearer, cleaner and more usable applications.
Discussion: What is design, or more to the point, what isn’t it? Introducing the design myths we’re going to debunk: design is decoration, design is entirely subjective, and design is separate from development.
Myth #1: Design is decoration. Typically, design is defined as only the visual layer on top of website or application. However, design also encompasses structure, content and organization, at all levels of a project.
Myth #2: Design is subjective. True, there is difficult-to-define element of creativity to design. But, just like coding, design has rules and guiding principles, such as those dealing with color theory, typography, negative space, ratios and contrast.
Myth #3: Design is separate from development. They are different disciplines, but having each work in tandem will produce stronger products that won’t need design retrofitting later down the road. Developers can facilitate this with a bit of design know-how integrated into their communication and process.
by Keith Dahlby
It's been a few years since dynamic .NET went mainstream with the promotion of the Dynamic Language Runtime into .NET 4, but it's still largely viewed as a fringe technology. This session aims to change that by reviewing what the DLR is, diving into how it works with C# 4 and Visual Basic 10, and looking at some interesting applications of the DLR. In particular we'll discuss C# interop with IronPython and IronRuby; Clay, a dynamic library used by Microsoft's Orchard CMS; and simplified data access through Microsoft.Data, Simple.Data and Rob Conery's Massive.
11th–13th January 2012