Are you tired of TDD workshops that make you do boring things like calculate bowling scores and prime factors or demonstrate how to win at the game of life? If so, this is the session for you! In this TDD workshop we will be building the domain model for EverCraft -- a new MMORPG from Blizzards of the Coast. We have lots of story cards prepared covering features from combat to magic, classes to spells, and races to items. Plus, we'll be defining some of these cards during the session in case you want that +9 knife of ogre slaying or enjoy casting magic missile at the darkness. This workshop is language agnotisic and for all levels of developers. The focus is on TDD and emergent design but pair programming will be covered as well. The only requirement is that you bring a laptop and that you be able to test-drive you code with your language of choice. When you are done you will emerge a better programmer for the experience but there is small chance you will have a craving for Cheetos and Mountain Dew.
by Carl Franklin
This year's discussion will focus on Software Quality. Carl Franklin will moderate the panel. Audience participation is strongly encouraged. Microphones will be provided, as will paper for writing questions (for those who may be intimidated by the huge room that is now the main dining area).
by Ted Neward
It used to be easy: building an 'enterprise' app meant using EJB, or COM+, or Web Services. It meant building a big, high-throughput, transactionally-oriented client/server system in a server-side-heavy topology. But (they tell us) that's over now. It's all "cloud", and "mobile": small clients accessing large servers living in a data center "someplace else", in a high-throughput manner. Somehow it doesn't feel any different. Neither did mainframes, for that matter. How are we end up here? What's the new "enterprise" developer supposed to do? What about all the new stuff (dynamic and/or functional languages, "NoSQL", and more)? Where does that all fit in? And what does all this have to do with geometry and history, again?
Test Driven Development is more than just writing tests first. It requires a different thought process. I will show you that thought process, and how to become a more effective developer, write less code, reduce zero defects, deliver your code faster, and make it to happy hour!
by Bill Wagner
Traditional async programming models produce convoluted and hard to follow code. They rely on callbacks, developer created state machines, thread marshalling and other jargon we’d rather not look at every day. That led developers to prefer synchronous APIs whenever they were available. No more. C# 5 contains new features that enable you to write async programs that are much more clear and easy to comprehend.You’ll learn how to move up the abstraction layer and spend more of your valuable time expressing what you want done, rather than concentrating on the mechanics of asynchronous programming techniques. You’’ll also learn several techniques to maximaze the responsiveness of programs that use async APIs. WIth C# 5,the compiler sprinkles pixie dust on your code and it just works asynchronously. Once you’ve learned what Async features offer for you, you should learn how the pixie dust is implemented by attending Jon Skeet’s talk “Async from the inside”
by Carl Quinn
Netflix has moved its production services from being completely datacenter-based, to being primarily cloud-based in a little over a year. This talk will briefly explain why we did it and why we chose Amazon's AWS. The talk will then delve into the evolution of our build and deployment architecture, starting with how our orignal monolithic DC-based SQL-tied webapp was built and deployed, and then detailing the evolution of our continuous integration systems which helped prepare us for the cloud move. And finally, it will cover our current full build pipeline and deployment system which keeps us agile in the cloud now by providing quick turnaround, and rapid roll-out and recovery.
In this session, we will be creating a really simple iPhone application from scratch. We will learn the basics of developing in Object Oriented C, using XCode 4. This session will also include some tips on Mac and XCode environments in order to improve the development experience. After this session, we will realize that developing for iPhone isn't as hard as some developers tend to believe like a CodeStock attendee stated in his/her feedback last year; "I had never seen XCode or Objective C before and I walked away from this session believing that it was within reach."
by Brad Colbow
In design the user experience is paramount and getting the little details right can make a huge difference. In this presentation Brad talks about his experience designing interfaces for mobile devices and looking at how little changes can have a big impact on how we use them. You will be introduced to the world of human interface guidelines for mobile devices. What can we learn by comparing and contrasting the guidelines of these mobile players and how can we incorporate it into our apps and websites? What are the main differences in developing for these platforms and what do user experience designers need to take into account before starting a project? Should you focus on building an app or make your website mobile friendly instead?
Oh yes. Building web applications on the Microsoft stack continues to evolve. There’s lots of great tools to leverage but it can be difficult to keep up with all the options. In this technical and fast-paced session, you’ll learn from Scott Hanselman how the pieces fit together. We’ll look at The Next Version of Visual Studio, ASP.NET MVC 4, WebForms 4.5, NuGet, Scaffolding, Web API, SignalR, Entity Framework Code First (Magic Unicorn Edition) plus Migrations, jQuery and lots, lots more. We’ll also see how many times Scott can say “unobtrusive” in a single talk. You’ll leave this session with a clear understanding of the technology options available on the Microsoft Web Stack. What’s changed and why? What direction are we going? Let’s see what we can build in an PowerPoint-free hour with the Microsoft Web Stack of Love. We’ll also talk about how you can use the Next Version of Visual Studio to work on and enhance your existing .NET 2, 3 and 3.5 apps as well. Two weeks of content in one hour. Guaranteed.
Come learn about the newest features in Windows Phone Mango, including enhanced emulator, Fast Application Switching, Multitasking, Reminders, Background agents, Sensors, Tiles and Local Database.
by Jim Weirich
Do you always seem to be fixing bugs in your software project? Are you spending more time fixing defects that actually implementing new behavior? If so, this talk is for you. In the mid-90s, Steve Maquire wrote a book that strongly effected the way I developed software. Primarily writing in C and C++ in those years, the struggle to deliver bug free software was especially a challenge. In the book "Writing Solid Code", Steve gives sage advice on the problems of developing large software projects and the challenges that go with making sure your softare actual does what you think it should. Although as Ruby developers we are no longer using C to deliver our large projects, the challenge of writing solid, reliable code is still before us. Based on Maquire's advice and my own years of Ruby experience, this talk will show developers tools, techniques and practices that they can use to improve their software and begin writing solid code.
by Steve Smith
As ASP.NET MVC continues its rapid delivery pace, there are many new features to explore, including a number of updated project templates, better support for mobile applications, and support for asynchronous methods. In this session, Steve Smith (ASPInsider and ASP.NET MVP) demonstrates these new elements, as well as code generation “recipes” that can easily be deployed via NuGet. You will leave this session ready to take advantage of the latest features ASP.NET MVC has to offer.
by Joel Cochran
Microsoft Expression Blend is the premier GUI editor for WPF and Silverlight applications. In this presentation you will receive an introduction to the Blend UI and how to use it to quickly and easily build an application interface. Topics will include Configuration, Layout Controls, how to leverage Blend with Visual Studio, and more.
by Jon Skeet
This talk will assume you’ve either been to part 1, Bill Wagner’s talk “Async from the outside” - or that you’ve used the preview builds available with async. Using async and await in C# 5 can feel like magic - much as LINQ probably did when you first saw it years ago. Does that make you nervous? Is your immediate response to a new feature always, “I must know how this works”? Do you reach for the spec or ildasm before trusting the compiler? If so, this is the talk for you. The pixie dust can all be explained away though, and in this talk I’ll do exactly that. No more Santa Clause; good-bye Easter Bunny - they’ll be replaced by state machines, continuations, pattern-based awaiting and task builders. Having moved up in abstractions when using async, we’ll have to move down to the generated code to see how it’s all implemented. Be prepared to be somewhat frazzled by the intricate dance performed by the C# 5 compiler on your behalf - and then be very grateful that the end result is that you don’t need to write such code yourself any more!
Welcome to the world of Ruby: where the gems are deep, rough, and rarely documented! No need to fear though, in this presentation you'll learn what a RubyGem is, how they're used in Rails and Ruby applications, and of course, how to make your own. You'll see just how easy it is to share your code with others in the Ruby universe, and why creating packages is a joy instead of a burden thanks to the tools and ecosystem of RubyGems.
by Jeff Fansler
Storing, retrieving, and querying data in a mobile application raises some interesting problems. Most applications don’t just deal with data locally, but also have to interact with a central data store. How do you deal with these issues when your application is running on a device that can often times be disconnected? In this session we will explore these problems and solutions using examples in Windows Phone 7. We will also look at a few open source libraries that you can use in your applications to get up and running quickly.
by Bill Pugh
FindBugs is a static analysis tool that finds coding mistakes in Java programs. It is widely popular, with more than a million downloads. In a student involving hundreds of engineers at Google, the issues identified by FindBugs were evaluated as should fix or must fix issues 81% of the time. However, many projects and developers use FindBugs on an ad-hoc basis, with individual developers running FindBugs sporadically. Some projects use FindBugs as part of their continuous build system, but find themselves unsure of the return on their investment and wondering if there might be a more effective way to use FindBugs. When first applying FindBugs is a large project and seeing hundreds or thousands of issues, others simply give up on using FindBugs. I'll briefly review FindBugs, and describe techniques for cost-effective integration of FindBugs into the software development process for medium to huge software projects, with a focus on new features available in FindBugs 2.0. Topics include how to customize FindBugs to prioritize and filter issues important to your project, how to store bug data in a cloud so that everyone working on the project shares information about when the issue was first seen and whether people think the issue is important to fix, and ways to use annotations to help FindBugs detect even more errors in your code.
by Kate Pricer and Timothy Fisher
Join us in this session to hear a story about how two Compuware employees Tim Fisher and Kate Pricer, a developer and a visual designer, have worked side-by-side the past six months on a variety of web and cross-platform mobile apps. Perhaps your familiar with the concept of pair programming for developers? Tim and Kate will tell you how they have used a similar strategy for merging technology and design to achieve high performance design and implementation cycles. Within Compuware they have formed a team known as “Fisher Pricer” which has gained recognition throughout the company for the innovative way they have been working and collaborating side-by-side, merging design and technology on each project they work on. One of their recent projects was an award winning mobile app for the Maker Faire Detroit which they created from scratch in just a few weeks. Their style of working enables close collaboration and rapid feedback shaving weeks off a typical back and forth period between a development team and a design team. Learn how together they conceive the user experience and UI layout for their projects followed by individual yet highly collaborative work on the graphic design and coding of the projects. Can this strategy work for you? Join us to learn how it has worked at Compuware.
by Chris Risner
In this session we’ll cover the basics of Android development. We’ll start by looking at how an app flows and how views relate to activities. Next we’ll look at different view controls and how to connect and handle different events. Then we’ll get familiar with intents are and how to fire them. Finally, we’ll cover how to get your app out to the market and onto devices.
by Paul Stack
This session will focus on the practices needed to implement a good continuous delivery system as an extension of a CI process. It will touch, very briefly on CI and how a good CI setup is needed as a precursor for continuous delivery. The session will then talk about what benefits continuous delivery will give us and some potential strategies to overcome the pitfalls and the obstacles of moving a team towards a continuous delivery environment.
by Carin Meier
Clojure is a powerful, elegant, and dynamic programming language on the JVM. This presentation will be a gentle introduction to the language with code examples presented in a fairy tale format. Join Princess Chloe in the kingdom of Clojureland and help her fight an evil wizard and an infinite headed hydra while learning an introduction to Functional Programming and the basics of the Clojure language along the way.
An iPhone app moves from screen to screen as the user taps and swipes. You can paper prototype or you could use a digital tool to get the feel of your app. Or you could just start developing it using the new storyboard architecture included in Xcode. This session will show you how to use Storyboards to layout and create an application in iOS5 for iPhone or for iPad.
by Matt Stine
Have you ever wished that your local development sandbox could look exactly like production, but you've got a mismatch between your local OS and your production OS? And what about the age old "it works on my machine" excuse that quite often stems from differences between developer sandboxes?
Many have turned to virtualization, creating a machine image that can be passed around the team. But who manages the template? How do you keep things in sync? In this session, we'll explore Vagrant (http://www.vagrantup.com), an open source tool that allows you to easily create and manage virtual development environments that can be provisioned on demand and "thrown away" when no longer needed.
Our agenda will include:
by Joshua Smith
Prolog is not like any other language you are likely to come across. It is a logic driven, declarative language that has been around since the 70s. It is not OOP nor purely functional, and though it has influenced many languages it never really got popular outside of Japan. That's the bad news and most people stop here. However, the good news is that Prolog allows you to attack certain problems in an elegant and succinct way. Prolog and Prolog-like languages have found use in a variety of AI, scheduling systems, and the semantic web. This presentation is directed at novice Prolog programmers and people who may have never seen prolog. Prolog has very little syntax (more than Fourth, less than Ruby) and so that part is easy (you'll get a handout). The hard part of Prolog is that it's so different. We will cover the basics of Prolog and work our way up to a simple expert system. We will also cover how to use Prolog to consume and provide web services using the LGPL'd SWI Prolog.
by Sam Corder
Session description forthcomingAndroid is shiny but programming in Java is dull. The last release to make any significant changes to the language was in 2004. Since then our expectations of what a language should provide has grown. While our smart phones may be as powerful as an early vintage 2000s desktop, there is no need to write code in a language of the same vintage. This is the story of an individual who longed to code in a modern language for his shiny new Android phone and found that bliss in Scala. This session demonstrates everything needed to hit the ground running starting with establishing a development environment, moving into a small crash course in Scala and rounding out the corners with a tour of the ecosystem around Android Scala development.
by Glenn Block
Node.js provides a beautiful new platform for building server side applications, which until now has been inaccessible to the Windows developer. Microsoft has been working as a core contributor to the Node project to break this barrier and provide a great Node story on Windows. Come to this talk and we’ll talk about Node.js, why you should care as a windows developer and how you can build node applications both on-premise and in Azure.
by James Bender
Configuring development, staging and production environments from scratch can be and extremely boring and time consuming task that only grows as your company grows. Chef is a tool that helps you deal with configuring any number of environments that can be as easy as a single click. In this talk I will show the basics of starting out with Chef and talk about my experiences of creating Chef scripts for both Linux and Windows environments that make it a breeze to scale your infrastructure, or just rebuild your development environment when you delete that all important system file.
by Jimmy Bogard
At its heart, much of Domain-Driven Design is all about object-oriented design. The challenge with elegant designs is that they all start out ugly. But our domain objects don't need to stay as anemic, data-centric property bags. With a small set of well-honed refactoring techniques, we can turn an ugly domain model into a wicked domain model, where our business objects respect boundaries, take our commands, and never, ever find themselves in a bad state.
11th–13th January 2012