Presentations

Discover how the industry's best minds use the latest technologies to build solutions.
  • Data + Integration
  • Java/JavaEE/Spring
  • HTML5 + Javascript
  • Alternative Languages
  • Cloud
  • Agile + Tools
  • Mobile
Functional Design By Example

Maybe you have heard the name “functional programming” and you’re interested to learn what it is. Well there is no better way to learn a new paradigm than by actually seeing it implemented. In this workshop we’ll take a working code example and transform it into the functional paradigm all in Java 7. We’ll step through everything from higher-order functions, function purity and even to some levels of immutability. At the end, we’ll show how we can make use of Java 8’s lambdas by very simple changes to the code that we’ve already refactored.
At the end, you should be able to take the concepts that you learn from this workshop and start using them the next day at work!

Track:
Workshop (Full Day)
Skill Level:
Beginner
Slot:
3/10, 9:00 AM | WS Room 104
Tags:
Spring XD: Big Data Integration's perfect solution is at your service.

Whether your project is big data or enterprise integration, Spring XD makes it easy to solve common big data integration problems such as data ingestion and export, real-time analytics, and batch workflow orchestration. In this workshop we will cover stream creation, batch job execution and high availability. You will learn how to create streams to capture live data from various sources (hdfs,tcp, no sql, RDBMS), filter and modify the data as well as capture counts then output this data to various sinks (hdfs,tcp, no sql, RDBMS). Also covered is how to create batch workflow solutions that span traditional use-cases such as moving data between flat files and relational databases as well as Hadoop use-cases.
The best news is that you don’t need to code anything up to get going, no build scripts, no IDE, no maven coordinates. If you are working on a big data, Spring Integration, Spring Batch project this workshop is for you. This is a hands-on workshop so bring your laptop!

Track:
Workshop (Full Day)
Skill Level:
Intermediate
Slot:
3/10, 9:00 AM | WS Room 102
Scala & Play & Akka

A full day hands on workshop that teaches some of the Scala basics to get you started, then moves on to the Play Framework a web framework that can either use Java or Scala to do anything web (we will be doing Scala). Then we move on to actors and reactive programming using Akka. Bring your thinking caps on because this won’t be for the faint of heart, but it will be fun.

Track:
Workshop (Full Day)
Skill Level:
Beginner
Slot:
3/10, 9:00 AM | WS Room 117
Android Workshop

Learn Android development from the ground up. We’ll start with the SDK and the Android Studio IDE and build, test, and deploy applications on both emulators and (if available) physical devices. Several examples will be provided that cover a range of topics from basic activities to the SQLite database to accessing RESTful web services.

Track:
Workshop (Full Day)
Skill Level:
Beginner
Slot:
3/10, 9:00 AM | WS Room 105
Tags:
Hacking Web Components and Polymer

Component-oriented UI development has been popular for over twenty years, with the introduction of Visual Basic. The promise is simple: packaged reusable code that makes powerful widgets like grids, toolbars, menus, smart input controls, panels, media players, charts, graphs, trees, image viewers, and so on, easy to integrate into applications.

On the web, frameworks such as ASP.NET, JSF, Tapestry, Wicket, GWT, and Vaadin take advantage of component architectures, and there is no shortage of JavaScript/HTML5 widget libraries such as YUI, KendoUI, jQuery UI, Bootstrap, ExtJS, and so on. Each of these frameworks allows developers to build their own custom components, but those components won’t work outside of the framework. Wouldn’t it be nice if there were a standard way to build a UI component that runs in a browser? A component model that is part of the open web?

Finally, there is: Web Components, an emerging standard from the Web Applications Working Group (WAWG). Web Components consists of five different standards: Templates, Decorators,
Custom Elements, Shadow DOM, and Imports. Together, these standards allow you to build custom widgets with HTML5, JavaScript, and CSS that can be used just like native HTML elements.

Since the standards are not fully supported in all browsers, you need a library to support them in non-compliant browsers. Google’s Polymer does just this, and more.

Come to this workshop to learn about these exciting new technologies hands-on.

Track:
Workshop (Full Day)
Skill Level:
Beginner
Slot:
3/10, 9:00 AM | WS Room 106
Tags:
Down and Dirty with Java EE 7

This is a hands-on workshop/extended lab to introduce the Java EE 7 platform.

The main theme of Java EE 7 is boosting productivity and embracing HTML 5. The changes include APIs like JAX-RS 2, JMS 2, Java Batch, Java EE Concurrency, WebSocket, JSON-P and JSF 2.2. The workshop will introduce these changes in a step-by-step fashion using a realistic end-to-end application deployed on GlassFish 4 using NetBeans.

Although the primary focus will be on the new APIs and features, we will take a holistic approach to the workshop and also cover the features introduced in Java EE 5 and Java EE 6 such as the ones in EJB 3, CDI, JPA, Bean Validation and JSF focused on annotations, intelligent defaults, type-safe, powerful, fluent APIs.

At the end of the workshop, you will have a broad introduction to Java EE 7 and will be ready to write your own applications having already written quite a bit of code in the workshop.

Track:
Workshop (Full Day)
Skill Level:
Beginner
Slot:
3/10, 9:00 AM | WS Room 103
Tags:
Being "Live!" Real time technology decisioning

The Weather Company has gone through a transformation over the past 3 years taking us from a Cable TV focused company to a Big Data Technology leader. I will talk through the culture transformation that was required in order for us to achieve this rapid transformation and why having a Technology team that is playing off a prerecorded and tightly governed soundtrack isn’t the answer and why being Live is how to best bring the “Art of the Possible” of technology thinking to life.

Track:
Keynotes
Skill Level:
Beginner
Slot:
3/12, 9:15 AM | Hall A
Managing Your Manager

As developers, we deal with management all the time but aren’t normally interested in becoming managers ourselves. In fact, we take a perverse pride in being difficult to manage and being more interested in being right than doing what is politically expedient.

Unsurprisingly, this leads to difficulties when business crises arise, like reorganizations, layoffs, or simply new opportunities that we would like to pursue. It’s hard to get what you want when we’re viewed as part of the problem rather than the solution.

This talk is about understanding the world of your manager and how you can take simple steps to build a relationship that you can rely on when you need it.

Track:
Keynotes
Skill Level:
Beginner
Slot:
3/11, 9:15 AM | Hall A
Introduction to ElasticSearch

ElasticSearch is an open source search and analytics engine that is easy to configure and deploy. This talk will explore some of the differentiating and compelling features that Elasticsearch offers, as it becomes the defacto full-text provider for the enterprise. Deploying Elasticsearch is a trivial endeavor, but knowing how to configure your cluster initially for optimal performance, is an art. In this presentation, I will share much of what I’ve learned in deploying and scaling-out massive Elasticsearch clusters that were designed from the ground up, optimized for performance with a specific use in mind. Some of the topics covered will focus on optimizing clusters, organizing and retrieving data, disaster recovery, and avoiding failure and performance degradation in a running cluster. Common and not-so-common deployment scenarios will also be investigated, such as: Log aggregation, Full-Text search, and its use in a CQRS architecture.

Track:
Java
Skill Level:
Beginner
Slot:
3/12, 4:00 PM | Ballroom B
Programming with Streams in Java 8

We all have heard about lambda expressions in Java 8. The real unsung hero of Java 8 are the Streams. In this presentation we will take an example driven approach to explore streams, their core capabilities form the application development point of view, and how to explore these capabilities for improve performance and efficiency.

Track:
Java
Skill Level:
Beginner
Slot:
3/11, 4:00 PM | Ballroom B
Tags:
Gimme Caching, the Hazelcast JCache Way

Hey lads, lemme tell ya a story.
Once upon a time, we’re talking about the year 2001, a few people had an amazing idea. They were thinking about something that would change the world. It would make the world easy and give programmers almost unlimited power! It was simply referred to as JSR 107, one of the least things to change in the upcoming future. But those pals were way ahead of their time and nothing really happend. So time passed by and by and by and over the years it was buried in the deep catacombs of the JCP. Eventually, in 2011, two brave knights took on the fight and worked themselves through all the pathlessness, to finalize it in 2014. Lads you know what I’m talking about, they called it the “Java Caching API” or in short “JCache”. Yes you heard me, a Java standard for Caching!

A software system cannot possibly imagined without Caching today and it was time for a standard. No matter if you want to cache database queries, generated HTML or results of long running calculations, new systems have to reach a critical mass to be successful. Therefore caching becomes a First-Class-Citizen of application landscape, the principle of Caching First. JCache has grown for 13 years to it’s final success and had an amazing Co-Spec-Lead, Greg Luck - the inventor of EHcache.

Track:
Java
Skill Level:
Intermediate
Slot:
3/12, 2:30 PM | Ballroom B
ZombieTime - JSR 310 for the Undead

Surviving as a zombie is tough… with the constant risks of sunlight, fire, and pesky mobs, doing your job of infecting the local villagers can be deadly. Fortunately, with the new JavaFX ZombieTime app, powered by the JSR 310 Date and Time API, you can rest easy. With built-in time zone and DST support you no longer have to worry about roaming around under the scorching hot sun. Accurately calculate out how long you have to infect the villagers before you decompose using Durations. And coordinate global attacks on the humans by syncing with your undead brethren on Instants. With the power of Java 8, eradicating the human race with a highly infectious virus has never been easier!

This presentation is designed to teach Java Date and Time APIs to the undead, but the living are welcome to be our “guests”. You may also learn some JavaFX in the process – that is entirely my fault. Any correlation between the characters and events in this presentation and the impending extinction of mankind is purely coincidental.

Track:
Java
Skill Level:
Intermediate
Slot:
3/12, 10:30 AM | Ballroom B
Building "Bootiful" Applications with Spring Boot

Alright, so maybe “bootiful” won’t ever work, but I tried, and it was worth it too because you’re reading this. Spring Boot, the new convention-over-configuration centric framework from the Spring team at Pivotal, marries Spring’s flexibility with conventional, common sense defaults to make application development not just fly, but pleasant! Join Spring developer advocate Josh Long @starbuxman for a look at what Spring Boot is, why it’s turning heads, why you should consider it for your next application (REST, web, batch, big-data, integration, whatever!) and how to get started.

Track:
Java
Skill Level:
Beginner
Slot:
3/11, 10:30 AM | Ballroom B
Raspberry Pi with Java 8

This session is designed to help you use your Java programming skills to create hobby projects using the Raspberry Pi as an inexpensive (35 euros) interface to the physical world. We will teach the concepts by demonstrating examples with working projects and source code. Some of the topics we will cover include:
* Unboxing your Raspberry Pi and setting up Java
* Electrical circuit design for GPIO
* Using the Java 8 Device Access API
* Programming common I2C devices
* Device communication over HTTP, MQTT, and Web Sockets
* Creating visual and touch UIs
* 3D Printing custom hardware

Coming out of this session you will have the knowledge you need to start building your own embedded projects for your home or office, and can leverage your Java programming skills to connect it to the Internet of Things. Start building the future now with Java 8 Embedded technology!

Track:
Java
Skill Level:
Intermediate
Slot:
3/11, 1:00 PM | Ballroom B
JMS.Next(): JMS 2.0 and Beyond

JMS is the Java standard for accessing enterprise messaging systems. This session introduces JMS 2.0 (JSR 343), the first update in more than a decade and easily the longest-awaited component of the forthcoming Java EE 7 standard. The biggest new feature of JMS 2.0 is a new API that makes JMS much easier to use, especially in a Java EE application. JMS 2.0 also provides API features to support greater scalability as well as additional messaging features and a long list of minor enhancements and clarifications. With JMS 2.0 final with Java EE 7, now is an ideal time to find out more about it.

In this session, we will also discuss what might be next for the JMS specification.

Track:
Java
Skill Level:
Intermediate
Slot:
3/11, 5:30 PM | Ballroom B
Tags:
Making Java Bearable with Guava (2015 Edition)

This 2015 presentation covers the Guava library developed by Google (http://code.google.com/p/guava-libraries/).
Guava provides collection extensions to the Java Collection API and, along with this, a cornucopia of time-saving
utilities that bring Java as close as possible to some of the more functional
and/or dynamic language competitors like Scala, Ruby, and Clojure. Why a brand spanking new 2015 version of this presentation? Well, there more new stuff to learn and use!

This presentation covers briefly on functions, predicates and how they interact with Java 8. It covers how to use new collection constructs that make life easier, including MultiMap, BiMaps, and MultiSets, immutable collections, handling Futures with callbacks and shutdowns, caches, and then we will dwell on tons of the newer features that came with Releases 16, 17, and 18.

Track:
Java
Skill Level:
Beginner
Slot:
3/11, 2:30 PM | Ballroom B
Tags:
Java Persistence API

Still not sure about JPA? Or maybe you’ve been using it for a while already. Refreshers are always good to have! We’re all at different skill levels, but this presentation looks to have something for everyone.

Why shouldn’t I always use a List for a collection? Should I use a ManyToMany or a OneToMany? How should I do this dynamic query with the Criteria API? Learn some tips and tricks from the Expert Group Members, implementers and power users. We’ll cover some advanced use cases, some gotchas, and some solutions for success.

Track:
Java
Skill Level:
Beginner
Slot:
3/12, 1:00 PM | Ballroom B
Async Programming Techniques

Hey! You. It’s time to add a few skills to your toolbelt. You may be safely living in the world of server MVCs and ORMs, but sooner or later, it’s going to be time to deal with the client-side beast….

The asynchronous beast. 1, 2, 3 will become 1, 3, 2. Code inside harmless little functions will get called sometime you don’t even know about, and everything you knew about the order of programming will go out the window.

Your mind will melt. And you will drink your 4th Coke of the afternoon, only to be unable to sit still.

Don’t let this happen. Come to this presentation and learn about asynchronous programming.

You’ve probably seen a peek of asynchronous code: handing off “functions” to ajax calls that magically get called, or wiring up jQuery handlers that will call a function when a link is clicked. If you ever had to make a second, and a third, and then a fourth ajax call from either of those callbacks, you know what I’m talking about. It’s commonly referred to as “callback hell”, and it’s unfortunately easy to find your way there.

In this presentation, we’ll cover various techniques for dealing with asynchronous programming. Spanning Android, iOS and Javascript, we’ll go over patterns to solve common client problems, pitfalls of each and great libraries on each platform.

You’ll come away with a heavier toolbelt, and some tidbits lodged deep into your brain that will fire off the next time you start to head down towards the dreaded callback hell.

Track:
Functional Programming
Skill Level:
Beginner
Slot:
3/12, 2:30 PM | Ballroom C
A Gentle Introduction to Reactive Extensions

Reactive Extensions have been around for quite a while. First originated in the Microsoft space, they are now available pretty much on any language and platform, including Java and JavaScript. In this session we’re going to understand what reactive extensions are all about and how we can leverage them to create asynchronous and scalable applications. We’ll see the benefits they provide over other more traditional asynchronous models and see how to put them to use with practical examples. This session is about finally understanding Rx and removing all the myth surrounding it.

Track:
Functional Programming
Skill Level:
Beginner
Slot:
3/11, 5:30 PM | Ballroom C
Design Patterns in the light of Lambdas

Design patterns are common place in OO programming. With the introduction of lambda expressions in languages like Java, one has to wonder about their influence on design patterns. In this presentation we will take up some of the common design patterns and rework them using lambda expressions. We will also explore some other patterns that are not so common, but are quite useful ways to apply lambdas.

Track:
Functional Programming
Skill Level:
Beginner
Slot:
3/12, 10:30 AM | Ballroom C
Tags:
Programming with Lambda Expressions in Java

Programming with Lambda Expressions in Java
Now that Java is supporting lambda expressions, it’s time to hone our skills to make use of them. Lambda expressions can help create concise code, however, it takes more than learning the syntax to put them to good use. In this presentation we will learn the idiomatic use of lambda expressions, explore the ways in which we can use them to solve common tasks, and look into libraries and APIs that make use of them in Java.

Track:
Functional Programming
Skill Level:
Beginner
Slot:
3/11, 2:30 PM | Ballroom C
RxJava and Retrolambda - Making Android development more FUNctional

We will discuss some of the challenges inherent to performing asynchronous operations on Android and why the standard toolset isn’t very fun to work with. Then we will talk about how how the combination of RxJava and Retrolamda can tidy up your code and simplify these async operations by moving you towards a Functional Reactive Programming style.

Track:
Functional Programming
Skill Level:
Intermediate
Slot:
3/12, 4:00 PM | Ballroom C
Refactoring to Functional

How many times have been told how functional programming is so much better than imperative, and then being presented with a functional approach to calculating a fibonacci sequence, leaving you wondering how that can be even remotely useful when working in real world applications? Yep, we’ve all been there. It seems that every time someone wants to explain functional programming to us, it’s around how to solve some mathematical problem. But how does that provide us value? How do we deal with things like grouping functionality, loose coupling or dependency injection?
Join this journey where we’ll look at code we usually write when developing business applications and how to refactor this using functional paradigms, and more importantly, see if these provide us with any value.

Track:
Functional Programming
Skill Level:
Intermediate
Slot:
3/11, 10:30 AM | Ballroom C
Benchmarking: You're Doing It Wrong

Knowledge of how to set up good benchmarks is invaluable in understanding performance of the system. Writing correct and useful benchmarks is hard, and verification of the results is difficult and prone to errors. When done right, benchmarks guide teams to improve the performance of their systems. When done wrong, hours of effort may result in a worse performing application, upset customers or worse! In this talk, we will discuss what you need to know to write better benchmarks. We will look at examples of bad benchmarks and learn about what biases can invalidate the measurements, in the hope of correctly applying our new-found skills and avoiding such pitfalls in the future.

Track:
Functional Programming
Skill Level:
Intermediate
Slot:
3/11, 4:00 PM | Ballroom C
ParadigmShift(imperativeCode, FunctionalParadigm); Functional Java Style

Are you interested in learning how to take some existing code and apply the functional paradigm to it? Do you want to better understand how to recognize patterns of reuse and where Functional Programming can be implemented? We’re going to take a small code block and refactor it into a Functional Paradigm. By the end of this, you should have a better understanding of what Functional Programming is and how it can benefit you and your teams as well as being able to recognize patterns of Functional Programming so that you can go and implement these concepts in your own code bases.

Track:
Functional Programming
Skill Level:
Beginner
Slot:
3/12, 1:00 PM | Ballroom C
Introduction to ClojureScript

More than 55 years ago John McCarthy had an insanely great idea called Lisp. Lisp marked the beginning of functional programming, interpreters, high-level metaprogramming, garbage collection, and much more. Yet after such auspicious beginnings the idea of Lisp has since faded and many of its innovations have been adopted by much more popular programming languages. Until recently Lisp even appeared doomed to fade into obscurity but several things have conspired to make Lisp somewhat cool again - one of these is Clojure, a fun modern Lisp targeting the Java Virtual Machine.

However the Web doesn’t speak JVM bytecodes. It speaks JavaScript - thus the cornucopia of languages that now compile to JavaScript. The most well known include GWT, CoffeeScript, and more recently Dart and TypeScript. However none of these represent a real break from the status quo.

John McCarthy’s insanely great idea still has a lot to offer the Web and we’ll see how with ClojureScript, an implementation of Clojure that targets JavaScript.

Track:
Functional Programming
Skill Level:
Beginner
Slot:
3/11, 1:00 PM | Ballroom C
Production Debugging at 100mph

Production debugging is hard, and it’s getting harder. With architectures becoming more distributed and code more asynchronous, pinpointing and resolving errors that happen in production is no child’s game. This session covers some essential tools and more advanced techniques Java developers can use in their code to debug live servers and resolve errors quickly.

We’ll cover five techniques for distributed logging, and some of the pitfalls which make resolution much harder and can even lead to downtime.

We’ll review how some of the new language features introduced in Java 8 such as Lambda expressions and Nashorn JavaScript can actually make debugging harder, and what are the things you can do to overcome them.

Last, we’ll also touch on some little known JDK tools that give you super deep visibility into a live JVM, without having to restart it or use a debugger.

Track:
JVM Languages + Debugging
Skill Level:
Intermediate
Slot:
3/12, 1:00 PM | Ballroom D
The JDK Tools: the Secret Weapons of the JVM

The JDK ships with a plethora of command line applications. Some of these utilities we use everyday without much thought: the ubiquitous java, javac and jar commands for example. Others, we completely ignore as anarchisms: use appletviewer lately? Most of these applications, however, remain almost invisible, hiding inconspicuously in the bowels of the JDK directory structure. Yet these under appreciated tools contain some powerful functionality for troubleshooting, monitoring and analysis of applications on the JVM. Tools such as jcmd, jstat, jmap, jhat among others should be in the ready arsenal of every Java (or any JVM language) poweruser. Let’s take a look at how you can utilize these utilities and make them a part of your JVM toolbox.

Track:
JVM Languages + Debugging
Skill Level:
Intermediate
Slot:
3/12, 4:00 PM | Ballroom D
Tags:
jvm
Building microservices with Scala, functional domain models and Spring Boot

In this talk you will learn about a modern way of designing applications that’s very different from the traditional approach of building monolithic applications that persist mutable domain objects in a relational database.We will talk about the microservice architecture, it’s benefits and drawbacks and how Spring Boot can help. You will learn about implementing business logic using functional, immutable domain models written in Scala. We will describe event sourcing and how it’s an extremely useful persistence mechanism for persisting functional domain objects in a microservices architecture.

Track:
JVM Languages + Debugging
Skill Level:
Intermediate
Slot:
3/11, 4:00 PM | Ballroom D
The Epic Groovy Puzzlers - As usual - Traps, Pitfalls, and End Cases

Remember the epic Java Puzzlers? Here’s the Groovy version, and we have some neat ones! Even though we are totally a Grails shop here at JFrog, some of these had us scratching our heads for days trying to figure them out.
And there is more! Contributions from the truly Groovy senseis, including @glaforge, @aalmiray, @tim_yates, @kenkousen make this talk an unforgettable journey to Groovy’s O_o.
In this talk you’ll have the expected dose of fun and enlightenment hearing about our mistakes and failures, great and small, in hardcore Groovy/Grails development.

Track:
JVM Languages + Debugging
Skill Level:
Intermediate
Slot:
3/12, 10:30 AM | Ballroom D
Tags:
AAHH! There's a leak in my App!

So you know that Java is a Managed language and us, as Java developers don’t worry about mundane things like memory allocation (PFFFT!), and sometimes we get into a sense of the secure, letting the super incredible JVM take care of everything for us. But alas, with complacency we can get in trouble. Memory leaks are real (–Insert horror scream here–), and we must understand how these happen!

In this session we will go into how the JVM allocates and keeps “things around”, and then how memory leaks are inadvertently created. Not just that, but we will also deep dive in how to find and fix these leaks by using Free tools like VisualVM. We will walk through Strong/Weak and Phantom references and review unintended leaks (like using anonymous inner classes that have strong references). If you program in the J2SE space, or if your are an Android app developer, or even a Java EE who has to do a lot of Session and/or Batch processing this session is for you!

The title is a reference to Cloudy with a Chance of Meatballs 2 (https://www.youtube.com/watch?v=4c1dqJPsSa4)

Track:
JVM Languages + Debugging
Skill Level:
Intermediate
Slot:
3/12, 2:30 PM | Ballroom D
Applied real-world projects with Java and JavaScript

JavaScript is a powerful, flexible, and dynamically typed language. JVM is proven to be reliable and stable production platform. The power of the JVM is an ability to run programs written in different languages, including JavaScript. You can short the development cycle by leveraging a scripting abilities of JavaScript. This presentation is about the emerging opensource frameworks that allow to mix Java and JavaScript in the same application.

In this session you’ll get introduced to the latest state of the polyglot frameworks that use JavaScript and Java side-by-side. We’ll discuss the following topics:

  • The Nashorn benefits for the server and the client side developers.
  • Using JavaScript and NodeJS applications and libraries on the Java platform.
  • Real-world projects overview that leveraging on Java-JavaScript interactions, including (but not limiting to) Avatar, Vertx and others.
Track:
JVM Languages + Debugging
Skill Level:
Intermediate
Slot:
3/11, 5:30 PM | Ballroom D
Clojure in Real Life

There has been a lot of talk about Clojure lately, but many of the discussions have focused on individual features, such as macros, asynchronous programming and browser UI libraries. These features are great, but is that enough information to make the change to Lisp style syntax and a functional paradigm?

This talk will provide a big picture view, with examples of many of the features that make Clojure so powerful: Immutable values, powerful collection types, interop with Java or JavaScript, Go style channels, polymorphism, and being able to interact with running programs through a REPL. There will also be discussion of a number of pain points that can make it hard to get started with Clojure, and how to overcome them.

Track:
JVM Languages + Debugging
Skill Level:
Beginner
Slot:
3/11, 2:30 PM | Ballroom D
Learning 5 JVM Languages in the Next 5 Years

Take control of your knowledge portfolio and be in demand! Your command of the top JVM languages; Java 8, Groovy, Scala, JRuby, and Clojure; will set you apart from the rest. This presentation will introduce each of these languages, highlight common ground, and show some stark differences.

This presentation will cover:
* How to install each of the JVM languages
* Describe the “functionality” of each of the languages
* Expressiveness vs. Terseness of each language
* How each language handles mutability
* How each language handles concurrency
* Amazing tricks of each language
* Comparison of language typing
* Comparison and contrast of language performance
* Each language’s killer app
* Analysis of the language culture and where to get help?
* Tips on how to start learning and keep learning with a busy schedule

Track:
JVM Languages + Debugging
Skill Level:
Beginner
Slot:
3/11, 10:30 AM | Ballroom D
Groovy - getting started and practical in hours

Love and know Java? Feel that it’s sometimes gets in your way? A bit of too much boilerplate? Too much effort required to get some work done? Groovy is here to help! You’re gonna love it, we promise. Feeling at home while being more productive, what else can you ask for? We’re going to cover the basics, the syntax differences between Java and Groovy, the data types, the object orientation, the Groovy truth and, of course, closures and the functional aspects of Groovy. We’ll also review some of the advanced features, like compile time and runtime metaprogramming, builders and slurplers and more, as time allows.

Track:
JVM Languages + Debugging
Skill Level:
Beginner
Slot:
3/11, 1:00 PM | Ballroom D
IoT Realized - The Connected Car

For this session we will explore the power of Spring XD in the context of the Internet of Things (IoT). We will look at a solution developed with Spring XD to stream real time analytics from a moving car using open standards. Ingestion of the real time data (location, speed, engine diagnostics, etc), analyzing it to provide highly accurate MPG and vehicle range prediction, as well as providing real time dashboards will all be covered. Coming out of this session, you’ll understand how Spring XD can serve as “Legos®” for the IoT.

Track:
Data, Integration & IoT
Skill Level:
Intermediate
Slot:
3/12, 10:30 AM | Room 104
Creating Our Robot Overlords: Autonomous Drone Development with Java and the Internet of Things

Who wants a mindless drone? Teach it to think, and it can do so much more. But how do you take it from Toy Story to Terminator? This session’s speaker discusses a new open source library, Autonomous4j, for autonomous drone development. Combining this library and some components from his mad science toolkit, he demonstrates how to get your Internet of Things off the ground and do some real cloud computing. In the session, you’ll learn how to write an autonomous drone program with Java 8; deploy it to the drone’s positronic brain, an onboard Raspberry Pi; have the Pi guide an AR.Drone to accomplish a task; monitor it via a JavaFX console; and create your own robot overlord. Demos are included: you’ve been warned! This presentation will feature an AR Drone flying autonomously

Track:
Data, Integration & IoT
Skill Level:
Beginner
Slot:
3/12, 1:00 PM | Room 104
Cassandra + Spark: The New Analytics Toolbox

The state of analytics has changed dramatically over the last few years. Hadoop is now commonplace, and the ecosystem has evolved to include new tools such as Spark, Shark, and Drill, that live alongside the old MapReduce-based standards. It can be difficult to keep up with the pace of change, and newcomers are left with a dizzying variety of seemingly similar choices. This is compounded by the number of possible deployment permutations, which can cause all but the most determined to simply stick with the tried and true. In this talk I will introduce you to a powerhouse combination of Cassandra and Spark, which provides a high-speed platform for both real-time and batch analysis.

Track:
Data, Integration & IoT
Skill Level:
Intermediate
Slot:
3/11, 4:00 PM | Room 104
Continuous Delivery with JBoss Fuse and OpenShift PaaS

Struggling to deploy your integration middleware/services?

In this talk, we’ll get a deep dive on improving your time to production so your business can delivery value quicker using powerful integration and cloud technology.

Come see how JBoss Fuse (an opensource ESB based on Apache Camel and ActiveMQ) can be used to integrate applications on premise or in the cloud combined with a automated continuous delivery model based on Jenkins and OpenShift.

Track:
Data, Integration & IoT
Skill Level:
Intermediate
Slot:
3/11, 1:00 PM | Room 104
How Would ESBs Look Like If They Were Done Today

Looking past the former hype topics like enterprise application integration and ESBs and SOA and alike: Fact is, that the need for reliable integration solutions which are manageable and scalable is growing. More devices and data-sources combined with new and upcoming use-cases and exciting wearables in a cloudified and heterogeneous infrastructure require more bits and pieces than just a central ESB with some rules and point to point connections. How would that look like? And how to keep this kind of solutions manageable?

Track:
Data, Integration & IoT
Skill Level:
Beginner
Slot:
3/11, 10:30 AM | Room 104
Spring Integration Java DSL - A Deep Dive

Spring Integration is becoming an increasingly popular integration framework within the enterprise; it was recently recognized as the most popular such framework (even outscoring other integration solutions such as ESBs) in a recent DZone survey of integration solutions.

The most recent addition to the framework is a fluent Java DSL.

The Spring Integration Java DSL provides a set of convenient Builders and a fluent API to configure Spring Integration message flows from Spring @Configuration classes. The Java DSL for Spring Integration is essentially a facade for Spring Integration. The DSL provides a simple way to embed Spring Integration Message Flows into your application using the fluent Builder pattern together with existing Java and Annotation configurations from Spring Framework and Spring Integration as well. While not requiring Java 8, the use of Java 8 Lambda expressions in the DSL makes for even more succinct configuration.

This session takes a deep dive into using the DSL to define a reasonably complex integration application. While concentrating on the use of Java 8 Lambda expressions we will also cover pre java 8 constructs for those users not yet ready to make the move.

Track:
Data, Integration & IoT
Skill Level:
Intermediate
Slot:
3/11, 5:30 PM | Room 104
Applying Testing Techniques for Big Data and Hadoop

Testing “Big Data” can mean big time investment; several hours often spent just realize you made a simple typo. You fix the typo and then wait another couple hours for your script to hopefully this time run to completion. Even if the Big Data script or program ran to completion are you sure your data analysis is correct? Getting programs to run to completion and to assure functional accuracy per the requirements are some of the biggest hidden problems in big data today.

During this overview presentation we will first introduce unit and functional testing techniques and high level concepts to consider in the Hadoop Ecosystem. The second half of the presentation we will explore real testing examples using tools such as PigUnit, JUnit for UDF testing, BeeTest and Hive limited test data set testing.

Track:
Data, Integration & IoT
Skill Level:
Beginner
Slot:
3/12, 2:30 PM | Room 104
What is new in Spring Integration 4?

Releases 3 and 4 of Spring Integration have brought a whole slew of new features, ranging from components to configuration options, all tailored to increase the power of the framework and its ease of use.

The most significant enhancement being, of course, the ability of writing completely XML-free enterprise integration applications, using Spring Integration, and Spring Boot, a significant amount of time will be dedicated to that, and you will see a few demos that illustrate the power of the new facilities.

But certainly, the new additions amount to more than that, and you are welcome to learn about it all!

Track:
Data, Integration & IoT
Skill Level:
Intermediate
Slot:
3/12, 4:00 PM | Room 104
Take Apache Camel to the Cloud with Fuse on OpenShift

Apache Camel is more than just an integration framework. It is the heart of many modern micro-services infrastructures. In this workshop I am going to walk you through a pre build demo about a investment bank scenario where we are going to manage investment funds. We are trying to modernize our infrastructure by utilizing an event-driven architecture to process new funds when they get created. However, on of our business partners can’t/won’t update their communication strategies, so we’re stuck with trying to modernize within some constraints. All this is going to happen with the help of JBoss Fuse utilizing different contained components like Apache Camel, A-MQ and others to build and change an application with the JBoss Developer Studio and deploy the example on OpenShift.

Track:
Data, Integration & IoT
Skill Level:
Beginner
Slot:
3/11, 2:30 PM | Room 104
RESTful services and OAUTH protocol in IoT

From the software development perspective Internet of Things (IoT) is about programming sensors, connecting them with each other and integrating them with existing business applications.

While IoT-enabled devices can use a variety of proprietary software, RESTful Web services and OAUTH protocol play a role of a glue that allows to integrate multiple devices into an application workflow. This presentation will demonstrate a sample architecture of such an application. You’ll also see a live demo of using commercial consumer devices as a part of an application that utilizes REST API, OAuth, Websockets, JavaScript and Java. This presentation will give you an idea of how to authenticate users and integrate new IoT devices as they become available on the market.

Track:
Web
Skill Level:
Intermediate
Slot:
3/11, 5:30 PM | Room 117
Spring 4 Web Applications

Spring MVC is among the most active areas of the Spring Framework with plenty of community-driven features and refinements. The 4.x generation (including 4.0, 4.1 and the upcoming 4.2) are no exception. This talk provides an overview of the areas in which the framework has and continues to evolve.

Track:
Web
Skill Level:
Intermediate
Slot:
3/12, 1:00 PM | Room 117
Vaadin and Web Components

The upcoming web components standard promises encapsulation and isolation between web UI components so that they can be reused. The standard is built on shadow DOM, customer HTML elements, HTML import and CSS sandboxing. While each of these is interesting by its own right, the combination of these tools has a potential to simplify web platform and empower developers building larger applications.

The value proposition is really close to that of component based frameworks like Vaadin: Make building good quality user interfaces easy with a powerful encapsulation. Are Java frameworks on a crash course with web components or could they complement each other?

Let me present you A new research project that answers what Vaadin has to do with web components. Is Polymer related? How GWT fits in? Which is the right way to go - Java or JavaScript for the user interface layer? Or both?

In this session we will demo what Vaadin team has been building on top of web components standards for a while. Differences between and vision for convergence of web development and Java is discussed.

Track:
Web
Skill Level:
Beginner
Slot:
3/12, 2:30 PM | Room 117
Building and Debugging the Mobile Web

In the past year, Mozilla has spent a great deal of time building and refining tools and products for the mobile world. These include Firefox Developer Edition, Firefox OS, Firefox for Android, and new developer tools that allow you to debug apps running on iOS, android, Chrome or Firefox OS. In this talk Jason Weathersby from Mozilla will walk through some of these advancements. The primary topics that will be covered will be:

What is the Firefox Developer Edition?
What’s new with the Developer Tools?
What is Firefox OS and how do you develop and debug apps?
Running Firefox OS apps on Android.
Using Firefox Developer Tools to Monitor and Tune Performance of HTM5 apps.
Debugging Safari and Chrome on iOS and Android.

Track:
Web
Skill Level:
Intermediate
Slot:
3/12, 10:30 AM | Room 117
Tags:
HTTP 2.0 comes to Java. What Servlet 4.0 means to you.

It’s hard to overstate how much has changed in the world since HTTP 1.1 went final in June of 1999. There were no smartphones, Google had not yet IPO’d, Java Swing was less than a year old… you get the idea. Yet for all that change, HTTP remains at version 1.1.

Change is finally coming. HTTP 2.0 should be complete by 2015, and with that comes the need for a new version of Servlet. It will embrace HTTP 2.0 and expose its key features to Java EE 8 applications. This session gives a peek into the progress of the Servlet spec and shares some ideas about how developers can take advantage of this exciting
update to the world’s most successful application protocol on the world’s most popular programming language.

Track:
Web
Skill Level:
Intermediate
Slot:
3/11, 4:00 PM | Room 117
Hypermedia: The Good, the Bad, and the Ugly

In this session we’re going to take a hard look at hypermedia, and what it really means to utilize HATEOAS (hypermedia as the engine of application state). We’re also going to jump into different hypertext specifications, tackle the hypermedia vs documentation debate, and take a good hard look at how hypermedia can help extend the life of your API. But we’re also going to take a hard look at the cons of implementing hypermedia, and why not everyone is a fan. In short, we want to look at the good, the bad, and the downright ugly to make sure that we utilize hypermedia in our RESTful APIs in the most efficient manner possible.

Track:
Web
Skill Level:
Advanced
Slot:
3/11, 1:00 PM | Room 117
Spring Data REST - Data Meets Hypermedia

Check out Spring Data REST, a library than can rapidly bridge your data access layer to a RESTful interface using hypermedia. See how you can build the backend for your startup rapidly using top notch practices. We will then look at Spring-A-Gram, a sample application built with Spring Data REST and other front end tools, that let’s you snap pictures from your laptop or smartphone, and uploads them to the server with little effort.

Track:
Web
Skill Level:
Beginner
Slot:
3/11, 2:30 PM | Room 117
Java Native GPIO Operations

In this session you will see how to interact with RaspberryPI (or other ARM based Single Board Computer) GPIO using Oracle Java 8 VM for ARM.
With Oracle JDK 8 update 6 for ARM you can write an application 100% Java that interacts with RaspberryPi GPIO (I2C, SPI, UART, PWM and Digital Ports) making easy the maintenance and portability to other Single Board Computers. We will show you a small demonstration reading a temperature Sensor and showing the value in a screen made using JavaFX.

Track:
Web
Skill Level:
Intermediate
Slot:
3/12, 4:00 PM | Room 117
Tags:
Java EE 8: A Community Update

Java EE 7 is here and the horizons for Java EE 8 are emerging. In order to solidly kick start Java EE 8, the GlassFish team conducted a series of community surveys. This session shares the content, results and analysis of these surveys. We will also share the detailed progress of Java EE 8 technologies already underway. The goal is to foster interest, discussion and participation around Java EE 8.

Some of the items covered include HTTP 2, Server-Sent Events (SSE), JSON binding, JCache, CDI/EJB alignment, cloud, PaaS, multitenancy/SaaS, JMS 2.1, JAX-RS 2.1, CDI 2, security simplification, REST management/monitoring, an action-oriented Web framework and much, much more.

You are encouraged to bring your questions, comments and ideas. The time to get involved in shaping the future of Java EE is now!

Track:
Web
Skill Level:
Beginner
Slot:
3/11, 10:30 AM | Room 117
Tags:
How to Quickly Connect Internet of Things Devices to the Cloud

9 billion devices around the world are currently connected to the Internet, the number of connected devices is expected to increase dramatically within the next decade with estimates ranging from 50 billion devices to 1 trillion.
IBM Internet of Things Foundation is a fully managed, cloud-hosted service that makes it simple to derive value from the Internet of Things (IoT) devices. It allows for the secure collection of data from both sensors, devices and gateways. When combined with the IBM Bluemix™ platform, IBM IoT Foundation provides simple, but powerful application access to devices and data. You can rapidly compose analytics applications, visualization dashboards, mobile apps and applications. These can feed your back-end enterprise with IoT data to generate new business models and insights.
Internet of Things Foundation provides capabilities including device registration, connectivity, control, rapid visualization and storage of data derived from the Internet of Things:
• Connect: Easily register and connect devices and apps
• Collect: Collect and manage a time series view of data from IoT devices
• Assemble: With Bluemix, visually assemble events from IoT into logic flows
• Manage: Manage connections and subscriptions with a highly scalable service

Track:
Cloud + DevOps
Skill Level:
Beginner
Slot:
3/11, 2:30 PM | Room 106
The Server is dead, long live the Service

In a micro services world the details of the infrastructure underlying our small services becomes less important. Most pieces will not require any special optimizations and can be run on standardised infrastructure. Do we need to control this standardised infrastructure or should we look into defining the work a part should accomplish through code and leave the rest to a service provider to figure out?

Is Docker the future of defining those work centers? Or is even Docker too low level and are services like AWS Lambda the future that completely abstract the underlying infrastructure away and provide a purely functional and event driven way to compose infrastructure.

Topics to Discuss

How much should we standardise for MicroServices
Which level should be the lowest level we control
Is Event driven asynchronous infrastructure the future
Would this lock us too much into a specific provider
How much does lock-in matter with small services built on open source frameworks

Track:
Cloud + DevOps
Skill Level:
Advanced
Slot:
3/12, 10:30 AM | Room 106
Kubernetes: An open container scheduling framework

Kubernetes is an open framework for scheduling Docker containers by Google. It was written from the start to be a lean, portable and extensible framework that lets developers actively manage containers the same way Google does. Containers back all of Google’s internet services from Search to Gmail and offer tremendous advantages in terms of efficiency and manageability. Google has been working closely with the broader software community to make containers accessible, and major companies like Microsoft, Red Hat and IBM are also backing the technology and making sure that it runs in a multi-cloud world. During this session we will provide an overview on the Kubernetes framework, discuss how it works to bring active management to the containers world, and give a glimpse into the future as we talk about what is coming next with the project.

Track:
Cloud + DevOps
Skill Level:
Intermediate
Slot:
3/11, 1:00 PM | Room 106
Docker for Java Developers: Hands-On Lab

Containers are enabling developers to package their applications (and underlying dependencies) in new ways that are portable and work consistently everywhere—on your machine, in production, in your data center, and in the cloud. And Docker has become the de facto standard for those portable containers in the cloud, whether you’re working with Amazon Web Services, Google Cloud Platform, or Microsoft Azure.

Docker is the developer-friendly Linux container technology that enables creation of your stack: OS, JVM, app server, app, and all your custom configuration. So with all it offers, how comfortable are you and your team taking Docker from development to production? Are you hearing developers say, “But it works on my machine!” when code breaks in production? And if you are, how many hours are then spent standing up an accurate test environment to research and fix the bug that caused the problem?

This lab offers developers an intro-level, hands-on session with Docker, from installation (including boot2docker on Windows/Mac), to exploring Docker Hub, to crafting their own images, to adding Java apps and running custom containers.

This is a BYOL (bring your own laptop) session, so bring your Windows, OSX, or Linux laptop and be ready to dig into a tool that promises to be at the forefront of our industry for some time to come. Prerequisites for the session will be published at burrsutter.com and announced via Twitter @burrsutter prior to the session.

Track:
Cloud + DevOps
Skill Level:
Intermediate
Slot:
3/12, 1:00 PM | Room 106
Tags:
Deploy at scale with Docker, CoreOS, Kubernetes and Apache Stratos

Platform-as-a-Service (PaaS) streamlines DevOps and allows developers to focus on application development. The PaaS handles provisioning, scaling, high availability, and tenancy.

Integration with the Docker platform, CoreOS Linux distribution, and Kubernetes container management system bring more scalability and flexibility to a PaaS. This session will include installing and deploying sample applications using Docker,CoreOS and Kubernetes, and a walkthrough on how it can be extended to support new application containers. It will also include a demonstration of app deployment, provisioning, auto-scaling, and more.

Track:
Cloud + DevOps
Skill Level:
Intermediate
Slot:
3/11, 4:00 PM | Room 106
Tags:
Docker: containerizing a monolithic app into a microservice-based PaaS

Convert a monolithic application into a microservice-based PaaS using Docker and related, containerization technologies. This will be the third presentation of a series of presentations that began greater than one year ago to evangelize the benefits of Docker. The scope of content spans from a development environment to a hybrid PaaS, and how Containerization is an enabler of architectural choice, innovation, scalability, and polyglot solutions.

The basics of Docker will be examined including repositories, brief discussion about managing and monitoring Docker containers, service discovery, and security. New and emerging technologies will be a constant theme, particularly about microservices, in addition to the ongoing evolution of the market and what the future may bring. Common organizational issues (and tactical solutions) that may impede successful decomposition and migration of legacy monoliths will be discussed, including security, DevOps and refactoring.

Hypothetical architectures will be described for building progressively more robust and complex applications and deployment models. The goal is to highlight the power, flexibility and scalability that containers enable.

Examples will start simple, from a local development environment, that is a simple two container setup that encapsulate a database and application tier. Subsequent discussion will involve progressively more complex and robust deployments that include features such as service discovery, automatic load balancing, and abstractions to simplify linking of containers including service gateways. With the stopping point of a hybrid PaaS.

Track:
Cloud + DevOps
Skill Level:
Intermediate
Slot:
3/11, 10:30 AM | Room 106
Tags:
From Chef to Docker: A Saner Management for a Multi-facet Development Environment

Databases, servers and micro-services all set up automatically on a developer machine in a matter of minutes. Testing, staging and production environments built with the click of a button. Yesterday’s dream has become today’s reality, and we at JFrog have been doing it for several years with the help of tools like Vagrant, Chef, Artifactory and Jenkins.
But can we do better? Of course we can…thanks to Docker! By breaking up our monolithic environment into interconnected containers, we can achieve a faster setup and amazing flexibility. But with this flexibility come unprecedented headaches and challenges.
In this session we will talk about our experience migrating a complicated, multi-faceted dev environment from a Vagrant-Chef combo to Docker, and about the challenges and opportunities that this new setup brings.

Track:
Cloud + DevOps
Skill Level:
Advanced
Slot:
3/12, 4:00 PM | Room 106
Tags:
Apache Usergrid, an open source BaaS

Build Apps not Servers! Whether you need to support one App or a hundred, Usergrid is your backend. As easy as a LAMP stack, but built for mobile. Get Apps to production in record time and stop wasting cycles writing server-side code. Complete SDKs for iOS, Android, HTML5/JS, Node.js, Ruby, Java, .NET, and PHP. Open source since 2011.

Track:
Cloud + DevOps
Skill Level:
Beginner
Slot:
3/11, 5:30 PM | Room 106
Tags:
Synchronizing State in a Multi-Device World

Once upon a time, we used one computer at a time. Today is different. We find ourselves in a world where we use many devices simultaneously. As users, we expect all of our data to be available, and up to date on every device. As developers we know this means that we have to brave the complexity of synchronization and concurrency across many platforms.

Modern cloud development platforms provide a solution to this challenge. In this session, Jenny Tong, a Developer Advocate at Firebase, shows you how to use some of these technologies to make your real time, multi-platform development easier.

Track:
Cloud + DevOps
Skill Level:
Intermediate
Slot:
3/12, 2:30 PM | Room 106
Tags:
Immutable Infrastructure: the new App Deployment

App deployment and server setup are complex, error-prone and time-consuming. But what if… What if it took just seconds to compile our application to the most minimal machine image required to run it? What if this image was measured in megs instead of gigs? And what if it could then be transported and run unchanged on your laptop and in the cloud? All with one command and no underlying OS required?

In a world where computing infrastructure is no longer a scarce resource, in a world of abundance where elastic software-defined units of computing have replaced rigid bare metal, it is time to adjust our thinking. It is time to embrace at the new reality of 2015 and the new opportunities it creates. And to do so we we’ll investigate how to take the best practices we learned at the application level and start applying them to entire machines.

We’ll look at how platforms and tools like AWS, Docker, Heroku and Boxfuse fit into this picture. We’ll analyse their strengths and weaknesses and discuss when you should use them.

This talk is for developers and architects wishing to radically improve and simplify how they deploy their applications. It takes Continuous Delivery to a level far beyond what you’ve seen today. Welcome to Immutable Infrastructure. This is the new black.

Track:
Microservices + Security
Skill Level:
Intermediate
Slot:
3/11, 4:00 PM | Room 105
Migrating NoSQL

NoSQL, not using SQL, has a variety of ways to migrate data. One of my teams wrote their own automated fashion to migrate our database. While doing this we made a conscience decision to remove the ability to “roll back” the database. Why did we think this was a good idea? What are some other alternative approaches to keeping your schema current?

Track:
Microservices + Security
Skill Level:
Intermediate
Slot:
3/11, 5:30 PM | Room 105
App Dev Insecurity

Are you an application developer? You might have been feeling insecure recently. If you want to create more secure software but don’t know where to start, this is the talk for you.

Rosalie and Jack are application developers who have recently been tasked with diving into the scary world of information security. Privilege escalation, buffer overflows, cross site scripting and SQL injection can be complicated and intimidating topics! This presentation will break down the fundamentals of information security from the perspective of the professional application developer. While it may seem like you can’t afford to spend time worrying about security, we believe that with the recent explosion of major vulnerability disclosures, you can’t afford not to.

Track:
Microservices + Security
Skill Level:
Beginner
Slot:
3/11, 2:30 PM | Room 105
Tags:
Flyway - Database Migration made easy.

We all take version control for granted. And it is, when it comes to code. On the database side, however schema evolution is often performed ad-hoc: a quick statement here, a little script there. The result: confusion and uncertainty. Has this update already been applied on this instance? Should we apply this other script first? Is our application going to run against this database?

No more! This is where database migration tools come to the rescue! We’ll look at a popular open-source choice called Flyway. By the end of the session, you’ll have a solid understanding of what it does, how it works and how to effectively integrate it into your project. We’ll look at concepts and solutions. We’ll tackle the hard problems and show you how this fits in a Continuous Delivery and Zero Downtime workflow. This will transform how you deal with your database, and you’ll never look back.

Track:
Microservices + Security
Skill Level:
Intermediate
Slot:
3/12, 10:30 AM | Room 105
Think Small To Go Big - An Introduction To Microservices

Monolithic applications may be the norm on-premise but in the cloud they spell trouble. The cloud is all about flexibility, your app needs to handle all types of unpredictable conditions while still functioning like nothing is wrong. To be flexible in the cloud you need to think small, really small, one app per component small. These small highly specialized apps are called microservices, and when combined, provide the ultimate cloud based application that scales, is fault tolerant, and is easy to maintain and deploy. In this session you will learn all about microservices and why this architectural pattern is the way to go when building cloud applications.

Track:
Microservices + Security
Skill Level:
Beginner
Slot:
3/11, 10:30 AM | Room 105
Microservices and You - the straight dope

You have started to hear about microservices and you want to learn more about what happens when the rubber meets the road. We will start with an introduction to the basic ideas behind microservices. From there I will go over some pros and cons. To anchor the talk in reality, I will cover the process I went through in constructing http://wwww.flatfluffy.com, a multi-device application for gamified recording of roadkill. This will include the code and tools I used to run the whole application. In particular I will show how this type of architecture was used to produce the mapping experience in FlatFluffy. My talk style is very informal and interactive so there will be a back and forth to discuss some of your implementation questions. Come in curious, leave with some solid ideas in how to get started on your first microservice architected application.

Track:
Microservices + Security
Skill Level:
Intermediate
Slot:
3/12, 4:00 PM | Room 105
Cloud Native Apps with Spring Cloud

Do you want to build a cloud native application and don’t know where to start? How do services find each other? How do I configure many instances of each service? How do I see what’s going on with my services?

If you’ve ever asked any of these questions, this session will give you some answers using Spring Cloud and Netflix OSS to create microservices that are robust, discoverable, scalable and configurable.

Learn basic concepts about Spring Cloud and Netflix OSS and how they are integrated. See demos of and learn how to use the following:

  • Spring Cloud Config Server (distributed configuration)
  • Eureka (service registration and discovery)
  • Hystrix (circuit breaker/fault tolerance library)
  • Hystrix Dashboard (service health dashboard)
  • Ribbon (client side load balancing, including RestTemplate integration)
  • Feign (easy rest clients)
  • Zuul (routing)
  • Spring Cloud Bus (distributed Spring Boot actuator)
Track:
Microservices + Security
Skill Level:
Intermediate
Slot:
3/11, 1:00 PM | Room 105
Tags:
Wait Wait, Don't Pwn Me!

“Wait, wait! Don’t pwn Me!” is a live, developer and security news game show that pits three developer luminaries against each other in a game of wits. Past participants have included Joshua Corman, Chris Eng, Space Rogue and Matt Tesauro. Host Mark Miller, selects topics from the week’s developer and security news, posing the news items as limericks, fill-in-the-blank, and audience participation questions. The panel competes against each other, and the audience, for speed and accuracy when answering the questions.

During the AppSec USA 2013 Conference, the RSA 2014 Conference and the 2014 AppSec USA, and the AppSec 2014 Europe Conference this was a rollicking, high spirited session, exposing the prevalence of developer and security issues highlighted in the main stream news. It demonstrates how hard it is to keep up to date, even for the experts. Audience members should come prepared as we test their knowledge against the panel, trying to determine what is real news and what is fake.

This is a fun filled session where panelists and audience members compete for prizes. It is sure to put you in a good mood for the rest of the conference.

Track:
Microservices + Security
Skill Level:
Intermediate
Slot:
3/12, 1:00 PM | Room 105
Patterns for Developing Secure Web Applications

You know that it’s a wild and dangerous world out there on the Internet. You don’t need to be convinced that your application needs to be secured against intruders, hackers, bots, and worms. You’ve vaguely heard of XSS, CSRF, Authc, Authz, and the rest of the AppSec alphabet soup, but you’re not sure how to structure your application, what controls you need, or how to make sure you’re making the right investments of time and money to efficiently minimize risks.

This session will present some patterns and anti-patterns in web application architecture and process. We’ll talk about how to identify the parts of your application that require the most attention and which parts of your SDLC need the most security TLC.

Examples will be mostly in Java and JavaScript, but the ideas will be largely language-agnostic, so attendees will not need to be experts in either. This will be a technical talk, but appropriate to both programmers in the trenches and the managers who love them.

Track:
Microservices + Security
Skill Level:
Intermediate
Slot:
3/12, 2:30 PM | Room 105
Ins and Outs of Sass: Build Front-End Systems

Front-end web development is at an extremely exciting juncture. A plethora of new tools have emerged over the last years to deal with the ever growing complexity of front-end development in a multi device world.Sass is one piece of the front-end system; a powerful tool that has addressed the short comings of CSS by bringing programming concepts to front-end developers and designers.

In this session we’ll cover the core Sass feature set from a practical, daily use perspective. The goal is to introduce you to Sass concepts so that you leave feeling more comfortable with Sass and walk away with new Sassy insights to take back to your team or solo-practice as well as techniques for improving your front-end development process.

Topics

  • Sass data types: variables, maps, and lists
  • Mixins, extends, and functions
  • Control directives
  • File organization: partials, nesting, @import
  • Sass ecosystem: extensions and the community
  • Sass and the Node.js/IO.js ecosystem, including Ruby Sass and Libsass

N.B.

Learning is best learned by doing. Exercises will be provided for you to follow along,. You don’t need to have Sass running on your machine to participate.

Track:
HTML5
Skill Level:
Beginner
Slot:
3/12, 4:00 PM | Ballroom F
Tags:
Responsive Design: Planning, Execution & Management

In only the last few years, Responsive Design patterns and paradigms have brought forth spectacular, sweeping changes in UI web production. The demands for device-compliance as well as the always-growing mobile market have made Responsive Design a necessity for many websites and web applications. While taking the Responsive approach may offer incredible opportunities, it also carries a gamut of challenges.

This session will cover best practices for the planning, production, and management of Responsive websites. In addition to code examples using the Bootstrap 3 framework, we will cover technical topics such as footprint optimization, asset type selection, relative metrics, and client-side automation. Additionally, we will examine approaches in the management of Responsive projects such as iterative fidelity and Responsive workflow paradigms.

Track:
HTML5
Skill Level:
Beginner
Slot:
3/11, 10:30 AM | Ballroom F
Not Your Grandad's Static Sites

Once upon a time, static sites were new and cool, even if very limiting. Changing them was tedious and required a lot of hand-coding or [cough] Dreamweaver design view. Eventually we gave up on static sites and went fully dynamic. Static sites were old and uncool. Today, however, static sites are cool again and don’t have all the limitations of the static sites of old.

There are a ton of tools available for generating static sites, the most popular being Jekyll. In this session, we’ll look at and compare Jekyll with several alternative generators.

Track:
HTML5
Skill Level:
Beginner
Slot:
3/11, 1:00 PM | Ballroom F
Ridiculously Easy Layouts with Flexbox

The Flexbox (or Flexible Box) Layout Model is a set of CSS attributes allowing for the efficient creation of robust, multi-screen application layouts. Flexbox uses a dual-axis container/item layout model allowing for powerful approaches to element space distribution, alignment, and sizing. This can be a tremendous boon for web projects with dynamic data and design flux. It may also tremendously simplify responsive layouts that are dependent on commonly complicated grid models.

This presentation will introduce the mechanics of the Flexible Box Model and demonstrate its capability for simplifying markup and styling. Comparisons will be made to other layout paradigms to illustrate strengths of the model.

Track:
HTML5
Skill Level:
Intermediate
Slot:
3/11, 2:30 PM | Ballroom F
Tags:
Polymer: How web components are shaping the future.

The developer community is doing work right now that is being used to write new W3C standards for web components. Think of encapsulation or OOP. Google’s approach is Polymer, a library which provides a “sugaring layer” of features. Polymer is built on top of platform.js, which extends the functionality of your browser to include next-gen features required to run web components. Some of the new features involved include building modular elements inside of HTML Templates, support to write your own unique Custom Elements with custom named tags (eg. could be functioning html), the Shadow DOM which protects styles from bleeding over, and Model Driven Views (front end to back end data binding). Google’s Platform.js is also being used by Mozilla X-Tags.

It is important to note that Polymer is forward facing only and does not attempt to conform to any sort of backwards compatibility; only the last two versions of any given browser are supported and there is no intention to appeal to previous standards. Polymer is not a programming language, it’s just an opinionated library. The core polymer team are also key contributors to W3C’s evolving standards for web components. Work being done now is for tomorrow’s standard, so we can get a fresh perspective on how the web should work instead of simply conforming to legacy approaches.

The talk will include basic instructions for getting started with Polymer using NPM and Bower. We will discuss the role of web components in future standards. There will be a general outline of how Polymer and it’s dependencies fits into the stack and what job each part of the stack preforms.

We will go over how to make custom elements so you can get started actually having fun with Polymer.

Track:
HTML5
Skill Level:
Intermediate
Slot:
3/12, 2:30 PM | Ballroom F
Making Payments Fun

Who ever said payments were complicated/boring? This will be an introduction into the world of online payments and how to make it fun and enjoyable for your customer. Whether it be on your smartphone or website, we’ll show you how you can get setup and accept payments quickly. We’ll also show you some cool tricks, tips and best practices and ways to get started. At the end of this expect to be able to make the most fun, enjoyable and seamless shopping cart checkout experience ever.

Track:
HTML5
Skill Level:
Beginner
Slot:
3/11, 5:30 PM | Ballroom F
WebRTC, Narwhals and Unicorns

This talk is about taking a pragmatic look at WebRTC. In it, we examine the history of WebRTC. The good, the bad and the ugly of WebRTC. And finally, How can we leverage WebRTC NOW to build the next SnapChat or Google Hangout? Think you know WebRTC? Believe me, you’ve never seen it like this.

Track:
HTML5
Skill Level:
Intermediate
Slot:
3/12, 1:00 PM | Ballroom F
Developing High Performance Websites and Modern Apps with JavaScript and HTML5

Creating high performance sites and apps is crucial for every developer. In this session, we will explore the best practices and performance tricks, including startup time, UI responsiveness, and Memory efficiency to make your apps running faster and fluid. A causal game will be used to illustrate step by step how to optimize the application by applying all the optimization strategy. Come learn the tips, tricks, and tools for maximizing the performance of your sites and apps with JavaScript and HTML5.

Track:
HTML5
Skill Level:
Intermediate
Slot:
3/12, 10:30 AM | Ballroom F
Responsive Design using the Zurb Foundation Framework

I will share a modern workflow using Grunt, Yeoman, and Bower to build a foundation based project using Sass. I will then show responsive design techniques using foundation and Sass. The goal is to provide some common uses of Sass and Foundation to quickly and more efficiently create responsive websites.

Track:
HTML5
Skill Level:
Beginner
Slot:
3/11, 4:00 PM | Ballroom F
11 Tips & Tricks to be a Better (Mobile) Developer

What do you do to hone your craft as a mobile developer? What goals have you set (if any) to be a better developer in 2015? In this session, I’ll show you 11 items that I use to continually improve my skills and effectiveness, both professionally and personally.

Track:
Mobile
Skill Level:
Beginner
Slot:
3/11, 10:30 AM | Ballroom A
Enabling the next generation of native apps with IBM MobileFirst

Once your app goes live in the app store you will have just entered into an iterative cycle of updates, improvements, and releases. Each successively building on features (and defects) from previous versions. IBM MobileFirst Foundation gives you the tools you need to manage every aspect of this cycle, so you can deliver the best possible product to your end user. In this session, we’ll cover the process of integrating a native iOS application with IBM MobileFirst Foundation to leverage all of the capabilities the platform has to offer. If you’ve heard about that Apple & IBM partnership, you’ll want to attend this session to learn how it all works.

Attendees will learn how to setup MobileFirst Platform Foundation server using the command line tools, how to integrate both Objective-C and Swift code projects to the MobileFirst Foundation Server, and how to leverage and consume data adaptors, how to implement remote logging, and how to leverage MobileFirst analytics to monitor everything happening within the application.

Track:
Mobile
Skill Level:
Intermediate
Slot:
3/11, 4:00 PM | Ballroom A
The Javascript Toolkit

With the recent explosion of javascript based technologies and frameworks, it’s difficult for a web application developer to be up-to-date with them. Even so, Javascript is starting to be treated like a first class citizen language and to support that, we need a full toolkit that will help us to create, build, test and deliver during the whole developing cycle.
In this talk, we’ll go through categories like scaffolding, building, automated testing, dependency management, dynamic loading, test frameworks and DOM utilities, explaining the benefits to have this as part of the development and giving example of the tools that can be used.

Track:
JavaScript
Skill Level:
Intermediate
Slot:
3/12, 2:30 PM | Ballroom E
Tags:
Visualizing Data with D3.js

D3.js is the preeminent JavaScript library for visualizing data in a web browser, but it has the reputation of being challenging to learn and difficult to master. This session introduces D3 starting with its underlying philosophy. This understanding makes it easy to appreciate the library’s scope and power. We’ll also walk through example code and see some of the nifty visualizations that no other JavaScript library can support.

Track:
JavaScript
Skill Level:
Intermediate
Slot:
3/12, 4:00 PM | Ballroom E
Tags:
Durandal Aurelia: Next Generation Web Apps

Want to see what the future of web development will be like? Looking for a simple framework or set of libraries that can help you build complex web or cross platform apps? You’re going to want to see this. In this talk we’ll introduce you to Durandal Aurelia, a new framework with a rich heritage. You’ll learn about the fundamental features of the framework, such as Dependency Injection, Templating, Databinding and Routing, while we build a simple application. You’ll leave with all the knowledge you need to get started building your own applications with Aurelia.

Track:
JavaScript
Skill Level:
Beginner
Slot:
3/12, 10:30 AM | Ballroom E
Tags:
Building a Mobile Location Aware System with Beacons

What if instead of a broad location, you could have pinpoint location awareness of someone in a physical space. How could this change everything about how we interact with the physical world? In this session we will be exploring Beacon technology, which enables this, the underlying Bluetooth Smart standard, and how we can use these systems to change everything from shopping, to accessibility for the disabled, all built on top of a mobile device.

Track:
Mobile
Skill Level:
Intermediate
Slot:
3/11, 2:30 PM | Ballroom A
Introducing NativeScript

NativeScript is a free and open source JavaScript framework for building native iOS, Android, and Windows Phone apps. But I know what you’re thinking: another way of building apps? What makes NativeScript special? Here are a a few cool things:

  • Direct access to native APIs—no plugins required. Want to create a file on Android? Run new java.io.File()—in JavaScript!
  • Completely native performance through the use of a JavaScript bridge natively available on all three mobile platforms.
  • Cross-platform libraries for common use cases. Need to call a JSON API? Run http.getJSON("https://api.mydomain.com/get").
  • Style native apps using CSS. Yep, that’s actually a thing.

Curious about how it all works? Come learn! Architectures will be explained; apps will be built; and fun will be had by all.

Track:
Mobile
Skill Level:
Intermediate
Slot:
3/12, 2:30 PM | Ballroom A
Using APIs and cloud tools for rapid mobile app development

Gone are the days where you can afford to take months to build an enterprise mobile app. In today’s fast market, you need to be able to prototype the app in a few days, release the first version in a few weeks, get feedback, fix bugs, release the second version. Repeat. In this session you will learn how to use APIs and a cloud platform for rapid mobile development. We will use the Appery.io mobile platform to build a real app. This is a live coding session where you will be able to test the app on your phone, and we will package the app for iOS/Android.

Track:
Mobile
Skill Level:
Beginner
Slot:
3/11, 5:30 PM | Ballroom A
Ionic Framework: The Missing SDK for Hybrid apps

For years, developers have tried to find an easier way to create mobile apps; they discovered hybrid mobile apps but soon found out that hybrid wasn’t ready for prime-time. Developers encountered problems with speed, building good-looking UIs, and a plethora of hardware differences that forced them to go back to the land of native development. AngularJS changed the way developers built apps for the web, and now Ionic has changed the way developers build hybrid apps on mobile.

Easy-to-use, beautiful, and ready to perform, Ionic is an open source framework made for hybrid apps. In this talk, see how to use AngularJS and how to supercharge it with Ionic to create an SDK for the web.

Track:
Mobile
Skill Level:
Beginner
Slot:
3/12, 10:30 AM | Ballroom A
JSON calls in Android 101 - WITH PUPPETS!

Making a call to a web URL and then processing a JSON response within an Android app is essential to the developers toolbook. It can be daunting, frustrating, boring and confusing and there are NO good tutorials on the internet. This presentation will walk beginners through the creation, processing and parsing of a JSON call, with an hilarious analogy for each line of code. Audience participation will be requested for a paper-bag-puppet show to further nail down the concepts. No one who attends this session will ever get lost in the quagmire of JSON again.

Participants will walk away with a Github link to the code we’ve created and a copy of the presentation slides. One former participant reviewed the session as “The best Tuesday ever.”

Track:
Mobile
Skill Level:
Beginner
Slot:
3/12, 1:00 PM | Ballroom A
Tags:
What’s next for JavaScript? Overview of ECMAScript 6.0.

After some failed attempts to overhaul the standardized version of JavaScript called ECMAScript, the less ambitious version 6.0 is due at the end of 2014, and is already being implemented in browsers. This session discusses its new features, including a formal “class” syntax, arrow functions, default function parameter values, symbols, static methods, private properties, modules, and generators.

This session will explore the new features of JavaScript from a Java developer’s perspective, and present JavaScript as more of a complete language rather than a scripting language for web apps.

Track:
JavaScript
Skill Level:
Beginner
Slot:
3/11, 1:00 PM | Ballroom E
Web Apps with AngularJS - Part II

In this session, we will take a look at Angular - the powerful MVVM SPA framework from Google. We will discuss some of the terminology that Angular offers, and see how we can use that to develop highly interactive, dynamic web applications. See “Detail” for a list of topics I cover and the Github repo URL

In this session we continue our discussion from Part I. As we continue to evolve our application we will seek to use, and understand a few more of AngularJS’ core constructs.

Factories and services
Routing using ng-view and $routeProvider
AJAX calls to a backend using $http
If time permits we will look at a few good practices when developing AngularJS applications, ways to modularize your code, and some tools that aid in the development of AngularJS applications.

Track:
JavaScript
Skill Level:
Beginner
Slot:
3/11, 5:30 PM | Ballroom E
React.js: Super-fast Single Page Web Applications

React.js is a view library from Facecbook for building performant user-interfaces in JavaScript. In this session, we’ll explore React.js and understand why it’s a great step forward for building complex UI’s that run fast. We’ll code up an example web application using React.js and step through the basics of using the library while discussing concepts like the virtual DOM and components.

Track:
JavaScript
Skill Level:
Beginner
Slot:
3/11, 10:30 AM | Ballroom E
Web Apps with AngularJS - Part I

In this session, we will take a look at Angular - the powerful MVVM SPA framework from Google. We will discuss some of the terminology that Angular offers, and see how we can use that to develop highly interactive, dynamic web applications. See “Detail” for a list of topics I cover and the Github repo URL

In this session we will take a look at Angular and using it to develop rich web applications. Angular embraces HTML and CSS, allowing you to extend HTML towards your application, and uses plain JavaScript which makes your code easy to reuse, and test.

Note: This is an intro level talk. It is targeted towards developers who are curious about Angular and want to learn about the fundamental features and concepts in Angular.

Topics Covered -

Bootstrapping an AngularJS application using ng-app
ng-init and the evaluation {{ }} directive
A brief look at $rootScope and scoping rules
ng-model
Controllers, Dependency Injection, and the View-Model
Looping using ng-repeat
Forms using ng-form, form validation and submission in AngularJS
ng-messages to display form validation messages to the user
Angular provided filters and custom filters
GitHub URL - https://github.com/looselytyped/angudone-workshop/tree/solutions

Track:
JavaScript
Skill Level:
Beginner
Slot:
3/11, 4:00 PM | Ballroom E
IMMUTABILITY, INTERACTIVITY & JAVASCRIPT

Surprisingly the high performance mutation available in modern JavaScript engines is a great foundation for building high performance immutable collections. Even more surprisingly efficient immutable collections permit new ways of approaching user interface programming. While the details will be in Om, an immutable user interface toolkit written in ClojureScript over Facebook’s React, the talk will be primarily focused on high level concepts easily ported to JavaScript. We’ll dive in and see how trees of JavaScript arrays can permit building these efficient immutable collections. Then we’ll see how embracing immutable values dramatically simplifies some classic hard problems in client side programming including but not limited to undo, error playback, and online/offline synchronization.

Track:
JavaScript
Skill Level:
Beginner
Slot:
3/12, 1:00 PM | Ballroom E
Introduction to Swift for iOS

Do you want to write native apps for iOS, but NSString *string = @“This syntax sucks!”; scares you? Never fear, Swift is here. Swift is a modern, fast and powerful language that will become the de-facto standard for writing iOS apps. Come to this session to take a look at how to build an app from scratch using this new language.

Track:
Mobile
Skill Level:
Intermediate
Slot:
3/12, 4:00 PM | Ballroom A
Tags:
Cross platform Native Development with Titanium

Ever wish you could use your JavaScript-foo to build a NATIVE mobile app? Wish there was an open-source platform that would let you build awesome cross-platform mobile apps? Come to this session and learn about Titanium, an open-source, JavaScript based platform for creating native mobile apps.

Track:
Mobile
Skill Level:
Beginner
Slot:
3/11, 1:00 PM | Ballroom A
Automating Web Performance Testing with PhantomJS2

HTTP requests, heavy/unminified resources, and UI thread blocking should be on the mind of every front-end developer. These are just a few issues that can cause serious bottlenecks in page load times. Having a faster load time equals better search engine rankings, higher conversion rates, and an overall reduction in bandwidth costs. How do we measure all the aforementioned performance killers? How can we bring these measurements into our automated build process to ensure that our site is getting better, and not worse?

PhantomJS, a headless WebKit with JavaScript API, gives us the ability to create lightweight performance measurement tools with JavaScript (and so much more). In this talk we’ll review how PhantomJS has influenced some of the web’s top ranking sites and how it can be put into any automated build to produce reporting on performance. We’ll look at how other open source projects such as WebPageTest.org measure up to this approach and see when one might be better over the other.

Track:
JavaScript
Skill Level:
Beginner
Slot:
3/11, 2:30 PM | Ballroom E
The Expert Manifesto - Growing Effective Self Organizing Teams

We’ve all heard of the mythical “Self Organizing” team. A team you can just lock in a room for two weeks, come back, and something is ready for your demo. But few of us have actually seen these mysterious beings in the wild. This is because they are very rare.

Yes, many teams’ leaders claim they are self organizing and agile, but how many teams out there:

  • Continuously fix and react to fires, instead of having time to prevent them in the first place?
  • Are in a state that can best be described as “continuous chaos” ?
  • Promise things and do not deliver?
  • Avoid talking to each other and assume everything is not in their respective responsibility?

And How many architects and other types of experts really know :
* What is really expected of them?
* How to measure if they are doing things right, and the right things?
* How to handle that difficult team member?
* How to make time for the things they wish they could do?
* How to get the team to change its behavior and do things better (such as unit testing?)

All these and more will be covered in this session by Roy Osherove

Track:
Agile
Skill Level:
Intermediate
Slot:
3/11, 4:00 PM | Room 103
Tags:
As a Human I Want... Software Development process in light of human behavioral science

Why do methodologies like Scrum, Kanban, RUP, PMI work for some organizations and not yours?

Over the past decades researchers have explored the biological and psychological foundations of Human achievement, perseverance, will-power and even happiness. These studies have revealed that success is more often than not a matter of the habits you practice.

In this talk I challenge you to answer the question “Is your process a collection of good habits or bad?”

Track:
Agile
Skill Level:
Beginner
Slot:
3/12, 4:00 PM | Room 103
Tags:
Consulting vs. Industry: Charting a Professional Technical Career Path

For technical professionals, there are distinct differences between a career in Consulting versus a career in Industry. This session will describe both, the differences between the two, the advantages of each for a technically-oriented career, and how to determine which is better for you. The discussion will be neutral and intended to ensure the participants know their option and the longer term career impacts of their decisions. The presentation will also include information on what recruiters look for in resumes across both areas and how to best position yourself for either option.

The goal of the talk will be ensure the attendees know about great options available to them, how to assess these options in terms of their own personal characteristics and goals, and make intentional career decisions that set them up for long term success.

Track:
Agile
Skill Level:
Beginner
Slot:
3/11, 5:30 PM | Room 103
Framework Fanboys: Cause, effect, and what to do about it

Developers will often adopt a framework long before it is prudent, or will cling to a framework long after it has become irrelevant. This phenomenon of picking and sticking with a framework for all the wrong reasons affects everything we do, from the estimates we give, to the people we hire, and the companies we want to work for. Attempts to mitigate the risk of poor framework choices are often thwarted by the ability of a single developer to introduce a questionable framework that then gets adopted by their peers. The effect is magnified by the fact that many developers would rebel and quit if they could not use their framework of choice.

This talk will explore this phenomenon in an attempt to find it’s root causes. This meandering journey will take us down the dark paths of the recruiting industry’s keyword obsession, academia’s attempts to prepare graduates for the real world, as well as the natural human instinct to play with new and interesting things - regardless of the cost. Once we understand the nature of the problem, an attempt will be made to identify potential solutions, from those as uninspiring as training courses to as extreme as weekend hackathons.

Track:
Agile
Skill Level:
Intermediate
Slot:
3/12, 10:30 AM | Room 103
Tags:
What It's Really Like to Work in an Enterprise Agile Environment; Leading SF Local Retailer's Asia Expansion Program

In 2011 and 2012 a Leading San Francisco based retailer embarked on their Asia Expansion Program to open new stores and brands in the Japan and China markets. Three project teams totaling 60+ people where activated all working together in the same agile code base. All three projects were successful but with great challenges, pains and difficulties. In this presentation you will learn about what challenges occurred, what collaboration techniques were used at the project and program level as well as what lessons were learned which now can be shared with you.

Track:
Agile
Skill Level:
Intermediate
Slot:
3/11, 1:00 PM | Room 103
Tags:
Are Your Continuous Tests too Fragile for Agile?

With a fragile test suite, the Continuous Testing that’s vital to Agile just isn’t feasible. If you truly want to automate the execution of a broad test suite—embracing unit, component, integration, functional, performance, and security testing—during continuous integration, you need to ensure that your test suite is up to the task. How do you achieve this? This session will provide tips on ensuring that your tests are up to the task:
• Logically-componentized: Tests need to be logically-componentized so you can assess the impact at change time. When tests fail and they’re logically correlated to components, it is much easier to establish priority and associate tasks to the correct resource.
• Incremental: Tests can be built upon each other, without impacting the integrity of the original or new test case.
• Repeatable: Tests can be executed over and over again with each incremental build, integration, or release process.
• Deterministic and meaningful: Tests must be clean and deterministic. Pass and fail have unambiguous meanings. Each test should do exactly what you want it to do—no more and no less. Tests should fail only when an actual problem you care about has been detected. Moreover, the failure should be obvious and clearly communicate what went wrong.
• Maintainable within a process: A test that’s out of sync with the code will either generate incorrect failures (false positives) or overlook real problems (false negatives). An automated process for evolving test artifacts is just as important as the construction of new tests.
• Prescriptive workflow based on results: When a test does fail, it should trigger a process-driven workflow that lets team members know what’s expected and how to proceed. This typically includes a prioritized task list.

Track:
Agile
Skill Level:
Beginner
Slot:
3/12, 1:00 PM | Room 103
Tags:
Why Agile Fails and What You Can Do About It

Agile works great, when it works. It tends to be most successful in small companies, with small teams that can work completely independently of others. It tends to fail when more teams are involved, when there are dependencies between them. Even though we’re “doing Scrum”, it still just doesn’t yield the promised benefits. When agile fails it can be disappointing and costly. People get blamed, agile gets blamed, the training gets blamed, and the organizational culture gets blamed. Yet companies keep trying. Many companies make multiple attempts to transition to agile because they’ve bought in to the underlying principles of agile and see it as a solution to their problem hitting dates, their long time to market, their slow return on investment, and their quality problems.

In this talk we’ll examine 8 causes for Agile’s failure in large enterprises, and why starting a transformation with culture or even practices isn’t the solution. We’ll examine why the ultimate solution begins with putting in place the certain organizational structures and planning a journey through predictability on our way to adaptability. Specifically, to begin we need a thoughtful mix of product or feature teams and component or service teams, as cross functional as practicable in each instance; agile structures above the team; and appropriate agile governance at the portfolio and program management layers. This creates an environment in which agile can begin to stick, can begin to deliver value, and creates a platform from which we can move on to increased agility.

Track:
Agile
Skill Level:
Beginner
Slot:
3/11, 10:30 AM | Room 103
Tags:
Stopping a Slow Motion Train-wreck: A survival guide to project recovery.

Even in healthy organizations and on functional teams, projects can fail. It could be a lack of visibility, poorly-managed process, integration missteps, or any of a hundred other things. We’re all familiar with the immediate repercussions of failing software projects: lost revenue, delayed schedules, technical debt, etc. But, there are also less understood downstream issues which hamper or prevent full organizational and cultural recovery, even after individual project issues are addressed.

However, with some careful study, it’s possible to identify and prevent many of these cascading failures. We’ll examine the entire lifetime of a failing project: we’ll look at the leading indicators of danger so we can identify them sooner, we’ll discuss common root causes and mitigation strategies so we can deal with them more effectively, and we’ll propose some follow up strategies, so we can recover from organizational, technical, and cultural damage as soon as possible.

Track:
Agile
Skill Level:
Beginner
Slot:
3/11, 2:30 PM | Room 103
Keeping It Clean - Lessons learned from Open Source on how to polish code

Creating clean, consistent, readable code is not easy. It’s especially difficult with Open Source where many different contributors can add code. This talk covers some of the techniques that we use in the Spring project to keep Java code clean, and shows how you can apply them within your own team.

We’ll discuss some of the formatting, refactoring and naming techniques that we use, and show some real examples of how code has been changed and improved over time. We’ll also talk about how you can use Git inside your organization, how you can run internal projects in a similar way to Open Source and how applying disciplines and constraints can really enhance your code!

Track:
Agile
Skill Level:
Intermediate
Slot:
3/12, 2:30 PM | Room 103
Git Workflow: Little Red Riding Hood and the Big Bad Ogre

Git is a powerful version control system. Depending on how well one understands Git, it’s a tool that either instills fear and panic in the hearts of developers, or it’s a powerful ally that can be relied upon in times of need. Have you ever wondered how rebasing works, or why you would choose to rebase instead of merge? What is a fast forward merge anyway? In this talk, not only will we discover why ‘The Brothers Grimm’ never published ‘Little Red Riding Hood and the Big Bad Ogre’, but we’ll also cover Git basics and take a deeper dive that will elevate your Git foo.

Track:
User Experience + Tools
Skill Level:
Intermediate
Slot:
3/11, 10:30 AM | Room 102
Unit Testing Good Practices and Horrible MIstakes

In this Session Roy Osherove goes through how NOT to write Readable, Maintainable, Trustworthy tests, but looking at various open source projects’ tests and analyzing them for these properties.
We will learn why you want to seperate your unit tests from integration tests, why you want to only have one mock per test (but many stubs), and many other things, such as what makes a great test name, when NOT to use a setup method, and when to use an Isolation (mocking) framework.

more info at ArtOfUnitTesting.com

Track:
User Experience + Tools
Skill Level:
Intermediate
Slot:
3/11, 1:00 PM | Room 102
User Experience Tricks of the Trade

Buzz. Buzz. Buzz. User Experience is certainly one of the latest buzzwords, but…what do User Experience professionals actually do?

Honestly, most UX folks, especially generalists, do a little bit of everything - from user interface design and information architecture to usability studies and market research. This workshop concentrates on one of the most important things UX professionals do: help businesses focus on the customer.

In this workshop you will roll up your sleeves and actually participate in some UX research activities. You’ll learn how even a little bit of customer interaction can lead to huge insights… and then you’ll learn how to interpret those insights and incorporate them back into your Agile project.

Information for Review Team:
In the first activity, the participants will play the role of the customer. I guide them through a couple of exercises to create an outline of what customers need and want from a product. I’ll use an accessible example, like a web application for paying a bill online.

  1. In four or five areas around the room, put a piece of poster paper on the wall.
  2. Split the participants into groups.
  3. Have each group fill in boxes on the paper to describe the attributes of a particular kind of user but focus on the tasks that user needs or wants to accomplish (like a brand new user who needs to pay a late bill). This includes describing what helps or impedes them from doing their task. It also includes describing the user in useful ways (this person is typically early 20’s, in a hurry, has kids, etc.)
  4. Rotate the groups to add/subtract/move things from the previous groups list.
    Once this is complete, I’ll demonstrate how this information can be used to create a “quick and dirty” persona, as well as describe how additional research can be combined with this activity to create a more formal persona.

Finally, I’ll lead the participants through an activity where they play the role of the business trying to prioritize stories. I’ll show them how they can use the personas to help guide them and how to help avoid common the trap of thinking that just because they know the business intimately they automatically know what the customer would need or want.

Prerequisite Knowledge:
General Agile knowledge, particularly SCRUM framework, is assumed.

Track:
User Experience + Tools
Skill Level:
Intermediate
Slot:
3/11, 5:30 PM | Room 102
Intermediate Git

You have been using Git for a while now. You understand the DAG and how commands like merge and rebase work. But there is a lot more to Git such as the stash, reflog, and interactive rebases. How can one use these to make their more effective use of Git?

In this session we will look at some of the advanced facilities that Git offers. We will see how we can use the stash to improve our workflow with Git, how we use rebsae to rewrite and even split commits. After this session you will be well on your way to Git mastery.

Track:
User Experience + Tools
Skill Level:
Beginner
Slot:
3/12, 10:30 AM | Room 102
Tags:
git
Object Oriented UX is the New Information Architecture

UX Designers like to think that the top navigation of a website is really important. It’s a critical component to the User Experience…right?

UXers internalize this belief, because they were raised on it. Before the web became interactive, it was information architecture that put UX designers on the map (or the job boards, rather). All those “pages” of static content had to be bucketed, filed, and organized. The navigation, with it’s top of the page prominence, was their claim to fame! But in our practice today, what is the very first thing that we hide when screen size gets tight?

The navigation.

In addition, we are starting to see that users actually downright ignore the nav, even when it’s visible in all of its desktop,docked glory. Users go straight for the big shiny objects - the content on the page.

So, if we hamburgered our navigation on mobile, and people ignore it on desktop, how do we get people to flow through our site? Well, the content must become the navigation. This is where Object Oriented UX comes in. OOUX helps create an efficient, elegant modular system. UXers, designers, and developers reduce rework, and the end user will have a more consistent experience.

This talk will introduce OOUX, walk through examples, and show you how to incorporate it into your process.

Track:
User Experience + Tools
Skill Level:
Intermediate
Slot:
3/12, 2:30 PM | Room 102
Discover the Zen of Writing with Asciidoctor

Writing e-mail is easy. We do it all the time.
Writing documentation is H-A-R-D. We practically have to force ourselves to do it.
Why, then, do we make it more difficult by burying the content deep in XML or struggling with finicky WSYWIG editors?

What if you could write documentation just as you write email? That’s the idea behind AsciiDoc, one of the most widely used lightweight documentation languages.

AsciiDoc is a plain text syntax designed for humans that makes content easy to edit, read, version and share in raw form or rendered as a myriad of output formats.
AsciiDoc goes beyond other lightweight documentation languages by satisfying even the most advanced semantics and publishing requirements, an ideal shorthand alternative to DocBook.

Using Asciidoctor, a modern implementation of the AsciiDoc processor, you can produce beautiful HTML 5, ePub and PDF output—and even slides! We’ll survey the various libraries and tools in the Asciidoctor ecosystem that help make writing a pleasant experience.

Follow the lead of authors. Drop the angled bracket and discover the zen of writing with Asciidoctor.

Track:
User Experience + Tools
Skill Level:
Beginner
Slot:
3/12, 1:00 PM | Room 102
Collaboration Tools for Distributed Teams

Working with a distributed development team presents some unique challenges, from real time communication barriers to working across different time zones. However, with the right set of tools, navigating these challenges can become manageable. In this talk, we will explore the set of tools that DZone uses to bring together a team of globally distributed developers to achieve rapid, high-quality production, as well as discover what tools others are using. If you work in a distributed team, you won’t want to miss this one!

Track:
User Experience + Tools
Skill Level:
Intermediate
Slot:
3/11, 2:30 PM | Room 102
Tags:
Designing APIs: the other User Interface

You may think that just because you don’t do any “front end” work, you don’t need to worry about knowing how to design a good user interface. The truth is that you’re designing user interfaces all the time - you just don’t think of it that way. Just because you’re writing code that doesn’t include a GUI, don’t think there isn’t a user interface involved. An API is a user interface and many of the principles that go into designing a good GUI are just as applicable when creating the public interface for a package, a service, or even a single class.

In this session, you’ll learn the fundamentals of good user interface design, techniques to help you deliver a great user experience, and how to apply them even when there’s not a single pixel involved.

Track:
User Experience + Tools
Skill Level:
Intermediate
Slot:
3/12, 4:00 PM | Room 102
Building a Continuous Delivery Pipeline with Gradle and Jenkins

Getting software from a developer’s machine to a production environment without a fully automated process is time-consuming and error-prone. Continuous Delivery enables building, testing and deploying of software through build pipelines with well-defined quality gates. In this session, we will discuss how to build such a pipeline with the help of Gradle and Jenkins.

With Jenkins as the centerpiece of our build pipeline, we will model our way from build to deployment. We will start by introducing an example application and learn how to build it with Gradle. Step by step, we will touch on topics like automating unit, integration and functional tests, incorporating popular code quality tools, as well as packaging, publishing and deploying the deliverable.

Track:
User Experience + Tools
Skill Level:
Intermediate
Slot:
3/11, 4:00 PM | Room 102

Questions?

Contact us at info@ajug.org