Saturday Sept 17 8:30am - 5:30pm Kalkin Hall, UVM Campus, Burlington, VT

Sessions

Read more about the sessions of Vermont Code Camp 2015.

Room 1

Introduction to Meteor.js: Why and How (Kyle Mitofsky) 9:00am-10:00am

Level 100 (Absolute Beginner)

If you're interested in web development at all and haven't yet played around with Meteor, then this talk is for you. Even if you don't plan on using it in production immediately, the web world is changing, and meteor is creating new paradigms that are important to pay attention to. Unlike most JavaScript frameworks, Meteor runs on the client and the server. Combine that with their de facto database, MongoDB, and it means you can write your entire application from client to server to database all in a single language. Oh, and did I mention that the database (Mini-Mongo) also runs on the client?

Meteor uses the publish and subscribe model to automatically send changes from the database to your client, where the rendering template engine will figure out what the new data would look like, compare with the current info to change the fewest possible DOM elements, and automatically update it on the fly.

It comes bundled with a bunch of other amazing tools, like hot code deploys without logging users out of the system, easy one step builds into hybrid mobile applications for Android and iOS, command-line tools to help development, and one of the most active development communities I've ever seen. It's no wonder why it has raised an unprecedented $31 million (with an M!) in venture capital funding.

This talk will go into the basics of building a Meteor application, and how you can start developing and deploying Meteor applications today. In fact, we'll build and deploy a live Meteor app during the talk (then I'll figure out what to do with the remaining 55 minutes).

Resources:

The Future is Now: Using ES6 in Your JavaScript Code Today (Ben Glassman) 10:15am-11:15am

Level 300 (Pretty Darned Experienced)

Review of new features introduced to Javascript in ES6 with comparison to how you might achieve similar functionality without ES6. Examination of options for using ES6 features in your JavaScript code today without dropping support for legacy browsers through transpilaton and shims.

Resources:

Client Work with WordPress: Workflows, Expectations, and Egos (Josh Lee) 11:30am-12:00pm

Level 200 (Still a Little Green Behind the Gills)

Client projects are the bread and butter for many WordPress developers, and a necessary evil for others. Josh will talk about tricks he’s learned over the years to keep client projects fun, collaborative, and profitable — whether it’s managing the expectations of a solopreneur or negotiating the fields of committees for a larger client.

Resources:

The New, New Microsoft: OS X, Linux, git, npm, and Docker (John Bennett) 1:00pm-2:00pm

Level 200 (Still a Little Green Behind the Gills)

Running .NET apps on OS X and Linux has been possible for many years thanks to the Mono project. Now, with the brand new — and fully open source — CoreCLR and .NET Execution Environment (DNX), OS X and Linux are supported by Microsoft as first-class .NET platforms. In this session, we’ll explore the new DNVM, DNU and DNX command-line tools by building a simple ASP.NET 5 app. We’ll do this on OS X in the new slimmed down Visual Studio Code editor — with no .sln or .csproj files in sight. We’ll show how git, node, npm, and gulp work together with VS Code to create a simple, clean, and fast development environment. For bonus points, we’ll deploy our app to a Docker container running on Linux in Azure.

Familiarity with .NET is helpful, but not necessary.

Managing Your Career: If You Don't, Who Will? (Josh Winslow) 3:45pm-4:15pm

Level 200 (Still a Little Green Behind the Gills)

While doing big up front design doesn't make sense in an Agile model, planning out your career is incredibly important. After all, there are no unit tests for your career; refactoring it can be a very painful and time consuming process. In order to help you architect your career, this talk will lay out some of the different things to think about when setting career goals (technical growth, work/life balance, compensation, career trajectories) and give you some tools that you can start using right away to prepare you for your next move, be it a new job, new role, or even new project.

Resources:

React + Flux = Joy (John Need) 4:30pm-5:30pm

Level 300 (Pretty Darned Experienced)

Introduced by Facebook, React is not another web application framework. It's a game-changing view rendering engine. Combine that with Flux, a non-MVC design pattern, and you can build scalable and maintainable web applications.

Resources:

Room 2

Visual Programming for Science and Business (Mitch Miller) 9:00am-10:00am

Level 200 (Still a Little Green Behind the Gills)

A variety of available products exist that allow developers to build complex applications by graphically hooking together widgets on screen and, perhaps, writing short pieces of code. This talk will show how these graphical programming environments can be used to solve problems for scientists.

Resources:

C# 6.0: Level Up Your Productivity (Bill Wagner) 10:15am-11:15am

Level 200 (Still a Little Green Behind the Gills)

Yes, you like to write code. But you want to deliver maximum value in the least amount of time. C# 6 wants to help you achieve that goal. Since the C# team moved over to Roslyn, the newest version of the C# compiler, they’ve been adding features to the language that make C# development more productive. In this session, you’ll learn about the new language features. You’ll see primary constructors, auto property initializers, expression bodied members, null propagation operators, and exception filters. Most importantly, you’ll learn how these new language features make you more productive. You’ll learn how you can type less, code more, and express your intent more succinctly and clearly. Level up your productivity and become a master of C# 6.

Resources:

Getting SQL Schema and Code into Version Control Using SQL Server Database Projects (Floyd Hilton) 11:30am-12:00pm

Level 200 (Still a Little Green Behind the Gills)

An overview of Octopus Deploy and how you can use it to streamline and simplify your .NET deployment process.

Self Service BI Integration in Corporate BI (Christian Coté/Sophie Marchand) 1:00pm-2:00pm

Level 300 (Pretty Darned Experienced)

This session will first demonstrate how the Power BI suite tools can help you to create and delivers Dashboards in Excel using Power Query, Power Pivot and Power View.

The second part of this session will focus on how we can leverage the data created using self service BI tools to enhance and enrich our corporate DW/BI.

Automating Database Schema and Data Deployments Using Entity Framework Code First Migrations (Michael Tamlyn/Michael Commo) 2:15pm-3:15pm

Level 300 (Pretty Darned Experienced)

Deploying and versioning relational databases is challenging. It's even more difficult when databases are partitioned or federated to logically separate data or to support scaling. Ideally, accessible tooling should be available to deploy, version, upgrade, and downgrade your database schema; to transform and seed your test and reference data; and to complement your existing continuous integration and delivery process. This demo-based session will introduce you to open source tooling for applications leveraging Entity Framework and targeting SQL Server or SQL Azure. Don't suffer through another failed database migration and avoid costly downtime. Enjoy a seamless local debugging experience that can be shared by your team. Join us and we'll show you how.

Resources:

Windows Services Made User Friendly (Brandt Newton) 3:45pm-4:15pm

Level 200 (Still a Little Green Behind the Gills)

Windows Service programs are ideal for performing long lasting tasks but lack UIs for easy configuration and monitoring. Pairing your service with a web app results in a solution that is user friendly while still remaining independent. We will demo a new product from Mach7 Technologies that uses this structure to migrate large collections of medical images from one archive to another.

Real-time IoT Sensors with Azure Event Hubs (James Sturtevant) 4:30pm-5:30pm

Level 200 (Still a Little Green Behind the Gills)

IoT is a hot topic. Find out what it is and how to get started building your own IoT solution on Azure. See how to set up an Event Hub, which is a highly scalable publish-subscribe event ingestor that can intake millions of events per second, how to send the data from a Raspberry Pi, then how process the data in real time.

Room 3

Live Coding Web Applications with ClojureScript and Figwheel (Nick Husher) 9:00am-10:00am

Level 200 (Still a Little Green Behind the Gills)

Write code, reload browser, click and type your through the app to get to the point you were working on. Your change doesn't work. Make change. Reload browser. Click. Click. Type. Type. Now do it on multiple browsers or multiple devices.

This is clearly an inhumane way to write software, and the quality of our programs suffers as a result. Figwheel offers a glimpse into the value live-reloading a web application without losing the application state, or altering the application state without reloading the application.

Resources:

Writing a RESTful API with the Go language (golang) (John Cicilio) 11:30am-12:00pm

Level 200 (Still a Little Green Behind the Gills)

In this session I will demonstrate how to write a RESTful API, compiling for different operating systems (Linux and Windows). We will use the Gorilla web toolkit to simplify the built out of the RESTful endpoints.

Patterns & Practices for Real-world Event-driven Microservices (Rachel Reese) 1:00pm-2:00pm

Level 100 (Absolute Beginner)

At Jet.com, we've based our architecture around cloud-based, event-driven microservices, and over the last several months, have schooled ourselves on what works and what doesn't. This session will walk you through the lessons we have learned on our way to developing our platform.

Resilient Management of State in Functional Systems (Peter Vile) 2:15pm-3:15pm

Level 200 (Still a Little Green Behind the Gills)

Functional systems pride themselves in pushing state to boundaries of the system, however eventually state has to be managed. This talk looks at one approach to that management: Akka and event sourcing. An overview of the concepts behind event sourcing will be followed by several examples demonstrating limitations and advantages of this technology and methodology to allow data to survive when systems fail.

Clojure: Scripting for the JVM (Aaron Cummings) 3:45pm-4:15pm

Level 200 (Still a Little Green Behind the Gills)

A look at the relationship between systems and scripting languages, a brief introduction to Clojure, and using Clojure as a scripting language for systems running on the JVM.

Code Generation with T4 and Visual Studio (Jeremy Hutchinson) 4:30pm-5:30pm

Level 300 (Pretty Darned Experienced)

Do you find yourself writing repetitive code? Learn how to use the Text Template Transformation Tool (T4) that's built into Visual Studio to create source files, configuration files, stored procedures and more using simple ASP.NET like templates in the .NET languages you already know.

Room 4

If You See What I Mean: Fixing and Avoiding Broken Programs Using the Power of Abstraction (Eric Smith) 9:00am-10:00am

Level 200 (Still a Little Green Behind the Gills)

So you inherited some code. Do you know what the programmer was trying to say? Was the programming language powerful enough to help? Are you relying on decaying comments and English-like naming to compensate? Denotational semantics is the ultimate powertool in cutting through the syntactic clutter of programming languages and careless thinking. We'll get warmed up with a look at intuitionist logic and the Curry-Howard isomorphism. We'll get up to cruising altitude with dependent types. Then we'll finish up with denotational semantics and see how it can give you x-ray vision through that jumble of a program.

Resources:

A Git Parable (Cori Drew) 10:15am-11:15am

Level 100 (Absolute Beginner)

Are you baffled by the community's obsession with Git? Do your knees tremble at the thought of encountering a merge conflict, or even worse: getting thrown into "detached head" state? When a new team says they're using Git, do you wonder why they're turning up their noses at the centralized VCS you know?

Everybody understands adding, committing, pushing and pulling; but trying to understand Git with the same paradigm as you approach centralized version control systems is a recipe for fear, uncertainty & doubt. Git doesn't work like a centralized version control system, which can be confusing.

If you want to understand how Git truly is different, this session is for you.

Git becomes much easier to understand once you approach it with the understanding that it's fundamentally different from a centralized VCS. The goal of this talk is to shed some light on how Git works under the hood.

To develop a mental model of how Git works, we'll start with, "The Git Parable," by Tom Preston-Warner. We'll take a look at some of Git’s core concepts including its basic object storage, how commits work, how branches and tags work, and we’ll look at the different kinds of merging in Git (yes, including rebase). You’ll walk away with a better understanding of these concepts, able to use Git with more confidence.

Clean Code: Single Responsibility Principle (Hetal Dave) 11:30am-12:00pm

Level 100 (Absolute Beginner)

This is a session for developers of all levels and platforms. An extension to my last year's session, Clean Code: Write Clean Think Clean. We will talk about whats, whys and hows of Single Responsibility Principle. And how it is effective not only in programming or coding but also while designing and planning.

Static Web Apps: Rethinking Server Side Templating (Jon Hoguet) 1:00pm-2:00pm

Level 300 (Pretty Darned Experienced)

As our web applications are become more and more static (via SPA frameworks), our Server Side Templating Engine becomes less and less relevant. Wouldn't it be great if you didn't even need it?

Resources:

Mithril and Webpack: Performance and Simplicity in Client-side Applications (Michael Hellein) 2:15pm-3:15pm

Level 200 (Still a Little Green Behind the Gills)

Webpack is an opinionated module packaging system for the front end. Mithril is a tiny functionally-minded JavaScript MVC. In this session, we'll see what they're capable of together.

Writing Automated Tests Using Python, Selenium, and Behave (Jessica Ingrassellino) 3:45pm-4:15pm

Level 300 (Pretty Darned Experienced)

Participants will learn how to develop regression tests for web apps using Behave, Python, and Selenium.

For All Code, There Exist Properties to Be Checked (Paul Blasucci) 4:30pm-5:30pm

Level 200 (Still a Little Green Behind the Gills)

Love it or loathe it, testing is an unavoidable aspect of developing high-quality software. But there's a world of difference between well-tested code and simply writing tests. Very often, the difference boils down to how you assess the "correctness" of your code. By focusing on software as a mapping from inputs to outputs, property-based testing offers a powerful methodology for testing the logical invariants a piece of code should always uphold, regardless of implementation details.

This session presents a review of FsCheck, a powerful library for doing property-based testing and sophisticated data generation in the CLR ecosystem. In addition to the basic features of the library, attendees will learn about identifying common invariant patterns and building specifications from collections of properties. Time will also be spent exploring how FsCheck can be used to refine domain models and integrate with other popular testing tools. Finally, real-world examples will highlight both the strengths and weakness of this approach to software craftsmanship. While no prior knowledge is assumed, familiarity with the CLR (.NET or Mono) will be helpful.

Room 5

Turning Points: Instructional Tales of Achievement, Embarrassment, and Woe (Scott Douglas) 10:15am-11:15am

Level 100 (Absolute Beginner)

Scott has been a human for 32 years and a programmer for at least 15 of those years. He’s learned a lot by being around smart, dedicated people at Microsoft, DreamWorks Animation, and Dealer.com. To be truthful, he’s also made some mistakes. Come to hear (sometimes embarrassing) anecdotes and reflections on events that have shaped Scott’s perspective of programming and programmers. Learn how not to ask for feedback from your manager. Discover what code Scott wrote that caused his co-worker to essentially yell at him. You won’t believe what happens next!

Social Network Analysis & Visualization (Al Ramirez) 11:30am-12:00pm

Level 200 (Still a Little Green Behind the Gills)

Introduction to grabbing data from well-known social networks (Twitter or Facebook) or also non-traditional networks, deriving information from the network using specific algorithms/heuristics, and presenting visualizations.

Resources:

Effective Design Reviews: How to Give and Receive Meaningful, Actionable Design Feedback (Everett McKay) 2:15pm-3:15pm

Level 100 (Absolute Beginner)

We all know the design review routine: The design team walks through the design, carefully explaining it screen by screen. They point out that it is early in the process, so they are more interested in the big picture issues than low-level details. At some point, someone volunteers to redesign a feature whose problems aren't yet even fully understood. The boss, a 'visual thinker,' points out that she really can't stand that shade of blue and that her mom could never use this UI, even though it is targeted at trained specialists. The consensus feedback of 'looks great,' while encouraging to hear, is probably quite literal because the mock-up does in fact look great visually.

What we don't all know is that the traditional design review process, while popular, is mostly a waste of time. The designers, who know the design better than anyone, start by explaining how it works—undermining the team's ability to find usability problems from a fresh perspective. The feedback is often focused on the wrong level of detail. Participants engage in redesign and start debates over details that hardly matter yet. The boss feels obligated to mess with the design to feel like she is doing her job properly. And the mock-ups are beautiful, which makes it look professional but often results in an emotional, visual reaction—undermining the team's ability to give the harsh, critical feedback on the important design issues that we so desperately need.

In this session, you will learn:

  • Why traditional design reviews are often ineffective.
  • How to give and receive effective feedback on a peer level.
  • How to turn feedback based on personal opinion into something that is objective.
  • How to handle vague, confusing feedback.
  • How to shut down defending, redesigning, and debating.
  • Why scenario-based reviews result in better feedback (and fewer battles over personal opinion) than feature- or screen-based reviews.
  • Why design review rules are a good idea (along with a sample set).
  • Why positive feedback is important for effective reviews.
  • How to manage up, so that your manager helps improve design review effectiveness.

The session will end with a group review of a sample design, using both the traditional and recommended approaches so that you can see the difference.

Building Testing Teams in the Land of Ben & Jerry's (Kip Steele) 3:45pm-4:15pm

Level 100 (Absolute Beginner)

How to build a testing group when finding technical talent for QA is very hard to fill.