The Code Camp scheduled presentations are listed below. If you are interested in presenting but missed the
opportunity to get on the official list of presentations there may be an "unconference" where
anyone can give an ad-hoc presentation.

Are you a JavaScript developer who has gotten past the basics and wants to know more? Have you attempted to understand JavaScript's inheritance strategy and walked away even more perplexed? Then come on in - and let's talk about inheritance that isn't so class(ical) based.

Mobilizing your HTML5 app with PhoneGap

We'll analyze the structure of a mobile-friendly web application written using some HTML5 features, then step through the process of tapping into some common smartphone features using PhoneGap 1.0, and then deploy to the Android Market.

10:00-11:00

Client-Side Autosaving with Backbone.js and Rails

Usability is the single most important tenet that can turn a good app into a great one. Autosaving is a fun aspect of usability that can provide both a better user experience and increased reliability.

Together we will explore how to use Backbone.js and Rails to create autosaving. In the process you'll learn about getting started with Backbone.js and Rails from a pragmatic point-of-view.

Story Testing is AWESOME

Story tests are a highly valuable activity that can decrease uncertainty around features and can be a really cheap way to start bootstrapping tests around your software.

In this workshop we'll mobprogram on:

Write good feature files

Turn them into well abstracted steps

Use cucumber below the UI

Unlock the Power of Arduino with Libraries

We'll focus on hardware add-ons and how they typically come with ready-to-use packaged routines (so you don't have to start by wiggling I/O lines yourself).

11:00-12:00

How I Learned to Love Dependency Injection

Tightly coupled applications lead to heartache. They are difficult to manage. They are difficult to maintain. The create applications that are inflexible. They make TDD, or even TAD (Test After Development) all but impossible. It doesn't have to be this way. This session will demonstarte how the concept and practice of Dependency Injection (also known as Inversion of Control) and some easy to use frameworks can help make your application more loosely coupled, more flexible, more maintainable and more testable.

The Death of JSP

Over the decades the ebb and flow of client- vs. server-side architectures has been tossed about on the waves. Now, the pendulum is swinging toward a client-side approach to application design once again. But this time the browser is the new operating system and there is no place for server-side content generation -- such as JSPs. Find out how this impacts the tools we use, the way we build applications, and the implications for the end user.

12:00-1:00

Python for Non-Python Programmers

This talk will expose participants, who should be familiar with programming, but not with Python to Python. It will give a high level overview of the basic language constructs. It will highlight some of the applications that can be developed with Python and summarize some of the add-ons.

Perl - laziness, impatience, hubris, and one liners

This talk is targeted at intermediate- or higher-level software engineers (no Perl experience required) aka "I program to get work done". Starting with the one liners to solve common tasks to automation and mechanization we will travel through many different Perl use cases that intersect with our daily home and work lives.

Topics included but are not limited to:

the command line

text smashing

files, files everywhere

surfing the internet

testing, and

the dreaded land of CPAN

Perl is dead. Long live Perl.

1:00-2:00pm

Woo Hoo! Lunch!

2:00-3:00

Concurrency: Not as hard as math!

Alex would like to introduce you to Concurrency, or the art of making several things happen at once. This talk will cover a few different strategies and design approaches for coding concurrent systems, including work sharing and asynchronous programming.
You can benefit from this talk if you are a beginner to mid-level .Net or Java programmer. If you already roll 20's with threads, this talk may not be for you, but you are welcome to come and heckle.

Intro to Verilog for C programmers

Wikipedia says that "Verilog is a hardware-description language used to model electronic systems", but what does that really mean?

Coming from a C/C++ background, I'll talk about how Verilog is [dis]similar to C/C++. I'll also demonstrate how to write code, including:

basic synthesis

basic state machines

asynchronous/synchronous behavior

At the completion of this session, you will have enough of an overview to write/simulate code.

Python Koans

The Koans walk you along the path to enlightenment in order to learn Python. The goal is to learn the Python language, syntax, structure, and some common functions and libraries. We also teach you culture. Testing is not just something we pay lip service to, but something we live. It is essential in your quest to learn and do great things in the language.

This session is complementary to the ""Python for Non-Python Programmers"" session. Although the earlier session is not a requirement for attending the Koans session, you might find it to be a useful introduction.

3:00-4:00

Your database, exposed: HTSQL

Databases generally need reporting tools for their data to be useful.
Those tools tend to be difficult to afford and difficult to set up,
demanding many hours and highly specialized skills to prepare
the tool for business users.

HTSQL is a new open-source web gateway for relational databases
that can be downloaded, installed, configured, and serving reports
all within sixty seconds, beginning from a clean machine.
Bring a stopwatch and watch it happen!
HTSQL is more than just simple, though. It introduces a revolutionary
language for describing queries that business users can understand, hack, and share.

Behavior Driven Development with SpecFlow

This will be a introductory discussion on Behavior Driven Development and doing BDD development on a .NET application using SpecFlow. We will start work on a .NET application using SpecFlow as a way to turn our scenarios into code.

4:00-5:00

DevOps Rocks!

Learning how to create a successful DevOps environment in your team can make it easier to ship software quickly and reliably. The basic tools and techniques will be covered for allowing a team to both develop and deploy their own software, rather than throwing it over the wall to sys admins when it's time to ship.

Qualculus

The flexibility and scalability of software often determines its usable life span and the cost of maintenance. The methodology, Qualculus, allows for analysis and design of software which is easier to adapt to future requirements and allows for a more dynamic application. This can reduce development time and a faster turnaround in the software development cycle. This in turn can help reduce cost.