Presentations ordered by track

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
Have You Seen Java EE Lately?

With a strong focus on annotations, minimalist configuration, simple deployment, intelligent defaults and Java centric type-safety, Java EE is one of the most productive full-stack development platforms around today. This very code centric workshop is a quick tour of the Java EE platform as it stands today. If you haven’t seen Java EE for a while and want to catch up, this session is definitely for you.

We will start with the basic principals of what Java EE is and what it is not, overview the platform at a high level and then dive into each key API like JSF, CDI, EJB 3, JPA, JAX-RS, WebSocket and JMS using examples and demos. This is your chance to look at Java EE 7 in the context of a realistic application named Cargo Tracker, available with an MIT license at http://cargotracker.java.net.

We will also briefly take a look at the emerging horizons of Java EE 8.

Track:
Workshop (Full Day)
Skill Level:
Intermediate
Slot:
2/15, 9:00 AM | WS Room A406-407
Data Science Workshop

This course will introduce you to the various skills that go into data science, provide practical walkthroughs of relevant languages and tools and lay down a study plan for moving forward in this field.

As there is a rush to hire data scientists these days, there is a coincident rush to update resumes to include the term “Data Scientist”. Unfortunately, like most types of science, it is less a single topic and more a multi-disciplinary way of thinking, inquiring and communicating.

You won’t become a data scientist over night, but you can learn to be one in time. Individuals do not need to know everything about the field, but teams should be composed of individuals who collectively do.

We will cover:

  • Data Science as a field
  • Basic statistics and numerical methods for dealing with data
  • Doing Data Analysis in Spreadsheets
  • The R programming language, its environment and online ecosystem
  • R’s visualization packages
  • Interacting and visualizing data with D3.js
  • Interacting with Big Data environments in R
  • Interacting with Linked Data in R
Track:
Workshop (Full Day)
Skill Level:
Intermediate
Slot:
2/15, 9:00 AM | WS Room A312
Building Large Web Applications with TypeScript and AngularJS

AngularJS is one of the most popular SPA frameworks out there, and not by mistake. Its powerful and game changing capabilities has brought it to where it is today. JavaScript is also an amazing language but big teams and enterprises find it hard to write maintainable code with it. TypeScript comes to fix this problem by introducing new features to JavaScript which make it easier to write and maintain big projects with.
In this 1-day workshop we will build a web application from scratch using TypeScript and AngularJS, while going through the fundamentals of each. Do you want to see how large web applications are being written today? This is the workshop for you!

Track:
Workshop (Full Day)
Skill Level:
Beginner
Slot:
2/15, 9:00 AM | WS Room A305
Docker for Java EE Developers

Containers are enabling developers to package their applications 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. This workshop offers developers an intro-level hands-on session with Docker, from installation 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, OS X, 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.

Track:
Workshop (Full Day)
Skill Level:
Beginner
Slot:
2/15, 9:00 AM | WS Room A302
The Art of Visualising Software Architecture

A consistent, shared vision is essential in order for teams to push in the same direction, but it’s surprising that many teams struggle to effectively communicate the architecture of the software they are building. As an industry we do have the Unified Modeling Language (UML), yet many people favour informal boxes and lines sketches instead. The problem is that such diagrams rarely make any sense, usually need a narrative to accompany them and ultimately slow the team down. Although we can argue whether UML offers an effective way to communicate software architecture, that’s often irrelevant because many teams have already thrown out UML or simply don’t know it. Abandoning UML is one thing but, in the race for agility, many software development teams have lost the ability to communicate visually too.

This hands-on session is aimed at those involved in the software development process and is about improving communication. You’ll see some patterns and anti-patterns related to “boxes and lines” diagrams, and you’ll learn some lightweight techniques for communicating software architecture using simple sketches and my C4 software architecture model.

Track:
Workshop (Full Day)
Skill Level:
Intermediate
Slot:
2/15, 9:00 AM | WS Room A315-316
The GROWS Workshop: A Modern Software Development Methodology

Join Jared Richardson to learn about GROWS, a modern development approach created by Agile manifesto author Andy Hunt and Jared Richardson. GROWS is built around the Dreyfus Model of Skills Acquisition and deliberate experimentation to guide project decisions. Incorporating existing practices, it’s a methodology designed to improve both initial adoption and on-going evolution of your team and organization. Jared describe GROWS in detail, diving into specific steps and practices for managers and executives. Learn techniques to share the company’s vision effectively, and simple tools for managing progress without micromanaging. Know when a project is doing well and when it’s in trouble. Discover how to keep your team on track with the R’s: building on a Rhythm (their iteration cadence), building the Right thing (from the vision), and working the Right way (with craftsmanship and technical practices). Come, learn, and participate as Jared provides an understanding of the GROWS Method and how it can move your company forward.

Track:
Workshop (Full Day)
Skill Level:
Beginner
Slot:
2/15, 9:00 AM | WS Room A314
Tags:
Delivering Cloud Native Applications with Spring and Cloud Foundry

Microservices are currently at the center of the hype cycle in software architecture. Much of the discussion is very technology/programming-centric or bikeshedding on “how big a service should be.” Unfortunately, what’s often missed is how the ideas and principles found in DevOps, Continuous Delivery, Domain-Driven Design, and Agile have converged into an architectural style that supports the operationalization of those same ideas and principles, and that architecture has is what we now call “Cloud Native.” In this workshop we’ll cut through the hype and look at how we can start delivering great software.

We will cover the following big ideas:

  • Microservices Defined: Domain-Driven Design at Scale
  • The convergence of Microservices with Continuous Delivery
  • Inverting Conway’s Law: Defining Team Structure via Context Mapping
  • Cloud Foundry: Self-service Agile Infrastructure for Business Capability Teams
  • Spring Boot/Data/Cloud: Frameworks for Assembling Pattern-Based Distributed Systems
  • Consumer-Driven Contracts for Scalable Dependency Testing
  • Continuous Delivery Pipelines for Microservices

You will need to bring a laptop for this workshop! For the greatest success, try to have the following prerequisites installed before you arrive:

In addition, we will have a few optional advanced labs that may require booting a VM on your laptop. To expedite that process, please add the following:

Track:
Workshop (Full Day)
Skill Level:
Intermediate
Slot:
2/15, 9:00 AM | WS Room A301
Functional Programming with Java8

With Java supporting lambda expressions, we have nothing to stop us from creating functional style of code for our day to day applications. We are so used to object-oriented programming, but remember the paradigm shift we went through to adapt to that way of programming. It is yet another paradigm shift and most of us wonder how in the world can we write functional style code. Much like how OO was not as much about the syntax as it was about the design, functional programming is about the design, the idioms, and the data structures we would use to program.

In this hands-on workshop, we will learn about functional programming using practical examples, create small apps that will make use of this style of programming, and relate to how it differs from the traditional way were used to and the benefits it offers.

Workshop Requirements

This session is a workshop. Please come prepared. Please have the latest version of Java 8 installed along with JUnit. Also, have svn or git-svn installed to get access to example and lab code during the workshop.

  • Java 8
  • JUnit
  • svn or git-svn
  • your favorite IDE
Track:
Workshop (Full Day)
Skill Level:
Intermediate
Slot:
2/15, 9:00 AM | WS Room A311
Building Microservices

In this training, you will discover a consistent and reinforcing set of tools and practices rooted in the philosophy of small and simple; this can help you move towards a microservice architecture. Microservices are typically small systems, with single responsibilities, communicating via the networks, installed as well-behaved operating system services. However, with these finer-grained systems come new sources of complexity.

Audience

Developers, architects, technical leaders, operations engineers and anybody interested in the design and architecture of services and components.

What You Will Learn

During this training, you will understand in depth what the benefits are of microservice architectures, how to break apart your existing monolithic applications, and the practical concerns of managing these systems. We will discuss how to ensure your systems can be more stable, how to handle security and the additional complexity of monitoring and deployment.

Track:
Workshop (Full Day)
Skill Level:
Intermediate
Slot:
2/15, 9:00 AM | WS Room A313
Modular monoliths

If you want evidence that the software development industry is susceptible to fashion, just go and take a look at all of the hype around microservices. It’s everywhere! For some people microservices is “the next big thing”, whereas for others it’s simply a lightweight evolution of the big service-oriented architectures that we saw 10 years ago "done right. Microservices is by no means a silver bullet though, and the design thinking required to create a good microservices architecture is the same as that needed to create a well structured monolith. And this begs the question that if you can’t build a well-structured monolith, what makes you think microservices is the answer?

Track:
Keynotes
Skill Level:
Intermediate
Slot:
2/16, 9:15 AM | Sidney Marcus Auditorium
Java: The Next 20 Years

The Java Platform just turned 20 years old! But, far from slowing down, Java is arguably at the top of its game. Java is the most widely used language for enterprise development, and recently was declared by TIOBE to be the “Programming Language of 2015.” What has Java done to stay relevant over the past 20 years, and what will Java do to continue to be successful for the next 20?

Track:
Keynotes
Skill Level:
Beginner
Slot:
2/17, 9:15 AM | Sidney Marcus Auditorium
Tags:
What's My Modularity

Since the inception of the JAR modularity has been a big reason why developers have chosen Java as a development platform. In Java’s 20 year history there have never been so many options to choose from. This talk explores modularity from OSGi, to Docker, to the upcoming Java 9 release with the promise of Project Jigsaw. Attendees will leave this session with a better understanding of the different types of modular architectures available for Java applications and when to use each.

Track:
Java
Skill Level:
Beginner
Slot:
2/17, 2:30 PM | Room A302
You.areCurrent? Hibernate 5

Hibernate ORM has revved to version 5 recently, along with some of the other projects in the Hibernate suite! Learn about the changes and how they will affect your project (spoiler: upgrading is easy). We’ll take a look at some new features, consolidation, spatial usage, additional Java 8 support, and a few more depending on time.

Track:
Java
Skill Level:
Intermediate
Slot:
2/17, 4:00 PM | Room A302
Tags:
Spring Framework: The Ultimate Configurations Faceoff!

Almost every major version of Spring framework introduced a new way to configure the context: XML, Annotations, Java Config, Groovy… What’s next, and, more important - why so many?! And how to know what to use and when? In this session Baruch, Viktor and Leonid will try to find the silver bullet, and you will have a chance to vote for the best feature implementations or even make a bet of the winner!

Track:
Java
Skill Level:
Intermediate
Slot:
2/16, 2:30 PM | Room A302
Tags:
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:
2/16, 5:30 PM | Room A302
Transforming to Java 8

The new facilities in Java 8 is about the change the way we write code. Our code will become
more expressive and concise. But, exactly how?

In this presentation we will take several common Java code examples, discuss the core idea expressed in code, and transform that code to use the facilities in Java 8. Watch and interact as you see Java code go through a weight loss program right in front of your eyes.

Track:
Java
Skill Level:
Beginner
Slot:
2/16, 10:30 AM | Room A302
Tags:
Java Community Insider Secrets!

You ever wonder how to start your own Java User Group? Maybe how to become a Java Champion or JavaOne Rock Star? Did you ever wonder how you could get published in Java Magazine? Perhaps you were interested to know how join the JCP and sit on an Expert Group. In this presentation you will learn all of the insider secrets on how to become a presence in the worldwide community of 9 million Java developers.

Warning: Community social engagement is highly addictive and can cause one or more of the following symptoms:

  • Difficulty keeping track of your thousands of “followers” and “friends”
  • More “free stuff” than you can store in your garage
  • Humbling run-ins with language designers, JVM gurus, and framework authors
  • Unsolicited, crazy job offers! [e.g. Snorkeling in the Pacific to test your steering algorithm]

Come learn how the Java Community ticks from someone who has gone from Java coder to Java Champion and now is a humble Java Community Servant.

Track:
Java
Skill Level:
Beginner
Slot:
2/16, 4:00 PM | Room A302
Tags:
Do you really get class loaders?

Class loaders are at the core of the Java language. Java EE containers, OSGi, NetBeans modules, Tapestry 5, Grails and many others use class loaders heavily. Yet when something goes wrong, would you know how to solve it?

In this session we’ll take a tour of the Java class loading mechanism, both from JVM and developer point of view. We’ll see how different delegation systems are built, how synchronization works, what is the difference between finding classes and resources, what wrong assumptions has been made and are now supported.

Next we will look at typical problems that you get with class loading and how to solve them. ClassNoDefError, IncompatibleClassChangeError, LinkageError and many others are symptoms of specific things going wrong that you can usually find and fix. For each problem we’ll go through a hands on demo with a corresponding solution.

We’ll also take a look at how and why classloaders leak and how can you remedy that.

Track:
Java
Skill Level:
Beginner
Slot:
2/17, 1:00 PM | Room A302
The Java Rhymester Presents - A tale of Multiple Threads

Let’s sing a story about ol Timmy.
He yearned to write more complex code.
As he venture in the land of the multi-threaded grabs,
He felled swiftly on despair and traps.

Come and listen to the Java Rhymester as we take a plunge into proper multi-threading programming. It’s a hard topic, but it doesn’t have to be! Once you start seeing the code behind threads you’ll know that just being aware of how multi-threading really works will make most of your fears go away, and while the path to writing perfect multi-threaded code is long, this is the journey that will take you there!

Track:
Java
Skill Level:
Beginner
Slot:
2/16, 1:00 PM | Room A302
Speech Recognition on Java

Speech recognition has made ground-breaking progress in the last few years, thanks to the growing availability of faster hardware, bigger data, and better algorithms. Today real-time, near human-level speech recognition is available on desktop and mobile devices, and leveraging this technology to build your own speech-enabled applications is easier than ever before. Many open source tools for speech, including state-of-the-art libraries like CMUSphinx and kaldi offer powerful APIs for developers to perform live speech recognition. In this talk we will show you how to train a language model and build a custom voice-control interface from scratch using open source tools and real-world data. We will demonstrate a plugin built at JetBrains for controlling your IDE by voice, and give you advice for implementing your own speech applications. No prior experience is necessary.

Track:
Java
Skill Level:
Beginner
Slot:
2/17, 10:30 AM | Room A302
Tags:
Scala: Things that make you go h(mmm)

Have you begun working in Scala, know the basic syntax and able to manage simple applications? Do you want to learn more about the language and see how to use some of the more interesting features that the language has to offer? We’ll be covering all the topics that will make all your friends jealous. We’ll start with case classes and enhanced pattern matching then dive into implicits, multi-parameter functions, currying and covariance/contravariance. Finally, if we have time we’ll finish up with with streams, macros and continuations, by the end you should be able to take these concepts and impress your friends using these new awesome concepts making your code base even more awesome!

Track:
JVM Languages
Skill Level:
Intermediate
Slot:
2/16, 2:30 PM | Room A305
Tags:
Reactive Systems with Akka and Java

A set various tools to write reactive, concurrent, fault-tolerant applications and services using immutable data, asynchronous message passing using local and remote actors, software transactional memory, and supervised systems. This entire presentation is done in Java.

Akka is a set of various tools to write reactive, concurrent, fault-tolerant applications and services using immutable data, asynchronous message passing using local and remote actors, software transactional memory, and supervised systems.

Akka is also part of the Typesafe stack, a stack that include the Play web framework, Spray, Slick, and the Scala programming language. This Akka presentation will cover Java style usage of Akka with actors, asynchronous message passing, supervision, and streams

Track:
JVM Languages
Skill Level:
Intermediate
Slot:
2/17, 4:00 PM | Room A305
Tags:
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
Skill Level:
Intermediate
Slot:
2/16, 1:00 PM | Room A305
The Epic Groovy Puzzlers S02: The revenge of the parentheses

More strange, more bizarre, more fun! The Groovy Puzzlers hits with its second season in which we implemented the lesson learned from the first one - do more of the same (always as a duet)! Expect even more “NO WAY!”, “WHOA!”, “WTF!”, O_o and prizes flying around, and expect to learn more about Groovy’s darkest secrets! As usual, the traps we fell into here in JFrog and contributions from top-notch Groovy authors and users!

Track:
JVM Languages
Skill Level:
Intermediate
Slot:
2/17, 2:30 PM | Room A305
Tags:
Spock: Logical Testing for Enterprise Applications

The Spock framework brings simple, elegant testing to Java and Groovy projects. It integrates cleanly with JUnit, so Spock tests can be integrated as part of an existing test suite. Spock also includes an embedded mocking framework that can be used right away.

In this presentation, we’ll look at several examples of Spock tests and review most of its capabilities, including mock objects and integration with Spring.

Track:
JVM Languages
Skill Level:
Beginner
Slot:
2/17, 10:30 AM | Room A305
Kotlin - Ready for Production

Kotlin, a language developed by JetBrains for nearly 5 years is very close to its first release. However, did you know that it’s being used in production for over a few years now already? Both inside and outside of JetBrains there are people deploying Kotlin applications for Android platform, for Web Applications and just about any other type of application.

Why are people using it instead of Java or some of the other languages out there? Primarily because it provides significant benefits in terms of conciseness, readability and safety, without some of the drawbacks that adopting a new language has such as a higher learning curve or interoperability with existing code and ecosystems. See Kotlin not only is interoperable with the Java 100% but even can target JavaScript and allow you to share client and server code while fitting nicely within the ecosystem.

Come and find out more about this language and what benefits it can provide you.

Track:
JVM Languages
Skill Level:
Beginner
Slot:
2/17, 1:00 PM | Room A305
Tags:
The Adventurous developers guide to JVM langs

There are more than 50 actively worked JVM languages in existence today. Some have been ported to the JVM, whereas others were written specifically for the JVM. This hands-on session takes an introductory (but non-Hello, World) look at several JVM languages, including Java 8, Scala, Groovy, Kotlin, Ceylon and Xtend. It covers ZeroTurnaround’s initial experiences, including what rocked and sucked in learning each one. You don’t need any prior knowledge of these languages to attend the session. You will learn whether they are for you and will hear about some real-life experiences of trying these languages for the first time.

Track:
JVM Languages
Skill Level:
Beginner
Slot:
2/16, 10:30 AM | Room A305
The Renaissance of Functional Programming

In a field of continually recycled ideas, the old paradigm of functional programming is gaining popularity among software developers. In this presentation we will review some of the catalytic trends that have reshaped the challenges of software development. We then will discuss how functional programming is a fundamentally simpler paradigm well-suited for modern software development. Managers and developers alike will leave understanding how and why to embrace functional programming to improve their software projects.

Track:
JVM Languages
Skill Level:
Beginner
Slot:
2/16, 4:00 PM | Room A305
Seriously, Use Groovy NOW

Groovy is unusual among programming languages in that it doesn’t seek to replace its predecessor. You can freely mix Groovy with Java on a class-by-class, or even line-by-line, basis. If you are working with Java, there’s no reason not to make your life easier by adding Groovy where it helps the most.

Groovy helps Java in many ways, especially when processing XML or JSON data, replacing anonymous inner classes, adding tons of library methods that Java has needed all along, vastly simplified file and database manipulation, and much more. This talk will demonstrate how you can add Groovy to Java applications and simplify your development job immediately.

Track:
JVM Languages
Skill Level:
Intermediate
Slot:
2/16, 5:30 PM | Room A305
Tags:
Ehcache3: JSR107 on steroids

JSR107, aka the Temporary Caching API for the Java Platform, has now been finalized almost 2 years ago. We’ve heard all about its ease of use and capabilities. But there is much left unaddressed. The good news is that the EG is looking at addressing many of the current shortcomings… But what do you do now? Go for proprietary APIs?!
Ehcache, the de facto caching API for 10 years now, has gone through a major API revamp: Ehcache3. One major theme, beyond its usual ease of use, was JSR107. Natively integrating it, but also looking beyond. With close to no API tie-ins, Ehcache3 lets you extend the JSR107 API transparently to go beyond the specification: topology-wise: whether you want to go offheap and scale up, or scale out by clustering your caches; functionality-wise: using transactional caches, automatic resource control or even using a write-behind cache to scale out writes…
Best of all is that this isn’t only minimally intrusive, it is also all free to use and available as part of the open-source Ehcache v3 that has been GA’ed earlier this year…

Track:
Data, Integration & IoT
Skill Level:
Beginner
Slot:
2/16, 1:00 PM | Room A312
Tags:
Apache Ignite - In-Memory Data Fabric

This presentation will provide a deep dive into new Apache project: Apache Ignite. Apache Ignite is the in-memory data fabric that combines in-memory cluster & computing, in-memory data grid and in-memory streaming under one umbrella of a fabric. In-memory data fabric slides between applications and various data sources and provides ultimate performance and scalability to the applications.

Apache Ignite is the first general purpose in-memory computing platform in Apache Software Foundation family. We believe it will have same effect on Fast Data processing as Hadoop has on Big Data processing. Better understanding of inner details behind Apache Ignite will hopefully encourage more companies and individual committers to join the project.

Track:
Data, Integration & IoT
Skill Level:
Intermediate
Slot:
2/16, 2:30 PM | Room A312
Introduction to Spring Data

It’s 2015. Are you still writing data queries by hand? Learn how Spring Data gives you the tools to leap over that hurdle and dive into solving problems. Feeling locked into your relational database due to having written gobs of SQL operations? See how Spring Data provides the means to reduce that risk and give you the means to branch into other data stores. In this talk, you’ll see how to rapidly get off the ground with data persistence, how Spring Data supports lots of platforms, and also how you can take your solution and turn it into a REST service with just a few extra lines.

Track:
Data, Integration & IoT
Skill Level:
Beginner
Slot:
2/17, 10:30 AM | Room A312
Tags:
Stream and Batch Processing in the Cloud with Data Microservices

The future of scalable data processing is microservices! Building on the ease of development and deployment provided by Spring Boot and the cloud native capabilities of Spring Cloud, the Spring Cloud Stream and Spring Cloud Task projects provide a simple and powerful framework for creating microservices for stream and batch processing. They make it easy to develop data-processing Spring Boot applications that build upon the capabilities of Spring Integration and Spring Batch, respectively. At a higher level of abstraction, Spring Cloud Data Flow is an integrated orchestration layer that provides a highly productive experience for deploying and managing sophisticated data pipelines consisting of standalone microservices. Streams and tasks are defined using a DSL abstraction and can be managed via shell and a web UI. Furthermore, a pluggable runtime SPI allows Spring Cloud Data Flow to coordinate these applications across a variety of distributed runtime platforms such as Apache YARN, Cloud Foundry, or Apache Mesos. This session will provide an overview of these projects, including how they evolved out of Spring XD. Both streaming and batch-oriented applications will be deployed in live demos on different platforms ranging from local cluster to a remote Cloud to show the simplicity of the developer experience.

Track:
Data, Integration & IoT
Skill Level:
Beginner
Slot:
2/17, 1:00 PM | Room A312
Ground-up Introduction To In-Memory Data (Grids)

You’re an architect or a developer with years of experience creating amazing applications. You’ve just been assigned to a low latency project! Because you’re an expert, you’re expected to master a new In-Memory caching/data technology and be productive from Day 1. You feel completely lost as you open the JAR files. Not only that, but you have to contend with new topologies and data stores like NoSQL or Hadoop. Trust me, it’s not as bad as it appears and setting up in-memory data is NOT as hard as you think. This session will cover the things you need to know to be successful on your first low latency in-memory based project.
This presentation will be highly useful for developers and architects of the high performance applications. The attendees will learn about modern in-memory technology landscape, distributed data topologies that work well, how to make in-memory reliable, scalable and durable, the techniques for really Big In-Memory Data will be revealed! And most important, no prior knowledge of In-memory data grids required!

Track:
Data, Integration & IoT
Skill Level:
Beginner
Slot:
2/16, 10:30 AM | Room A312
Task Madness - Modern on demand processing (batch processing, ETL, data science tasks)

It’s March Madness! Be the office pool champion by using machine learning to predict your bracket for the NCAA tournament. Using a new Spring project, Spring Cloud Tasks, we will demonstrate how on demand processing can be used to handle various tasks including batch processing, ETL, data science tasks, and other non-descript functions that need to be executed on demand. A general understanding of the Spring Framework is assumed.

Track:
Data, Integration & IoT
Skill Level:
Intermediate
Slot:
2/17, 2:30 PM | Room A312
IoT with Apache ActiveMQ, Camel & Spark

In this session, we will describe, discuss and demonstrate an industrial/enterprise-oriented architecture associated with large scale sensor rollout, covering critical areas such as ingestion, integration and analytics. You will learn how to connect the physical world to your traditional enterprise IT infrastructure (Apache Camel), supporting high-speed sensor data acquisition (Apache ActiveMQ) with real-time (Apache SparkStreaming) analytics. In addition, we will show-off various IoT developer prototyping platforms like Raspberry Pi, Intel Edison, Arduino, NXP 1768 with mbed, Particle.io Photon and more.

Track:
Data, Integration & IoT
Skill Level:
Intermediate
Slot:
2/17, 4:00 PM | Room A312
Tags:
iot
Couchbase: NoSQL & The Bridge Between

The document NoSQL model can seem scary coming from a RDBMS that had a language and a well defined structure for querying data. Instead of running SQL queries to get data you typically find yourself modeling your data to match the query capabilities of the system or doing lots of work in the application based on key-value access. In Couchbase it doesn’t have to be that way.

Learn some best practices around modeling your NoSQL data and see various ways to query that data using Couchbase’s new N1QL query language. Then you will get a sense of what application development is like in the context of a sample web application and Couchbase’s SDKs for Java, Node.js, C# and others.

Track:
Data, Integration & IoT
Skill Level:
Beginner
Slot:
2/16, 4:00 PM | Room A312
Tags:
Forget Email, My Watch Can Control A Drone!

"You might be able to read email on your watch, but mine can remotely control a drone!” Got your attention? Good! Whether you’re working with drones or humidity sensors, accessing connected devices at a moments notice is a requirement of every Internet of Things solution. Taking advantage of wearables like an Apple Watch to provide that access is the ultimate convenience. In this session you will see how you can securely connect remote devices such as drones to the IBM IoT Foundation and capture real time information from them within an application deployed to Bluemix and a Apple Watch. This session will sure to be fun, but also be jammed packed live code samples and demonstrations!

Track:
Data, Integration & IoT
Skill Level:
Beginner
Slot:
2/16, 5:30 PM | Room A312
Tags:
Live Music

Please join us for live music by Delphinium Blues & Bird Dog Jubilee during the DevNexus 2016 Happy Hour!

Track:
Misc
Skill Level:
Beginner
Slot:
2/16, 6:45 PM | Exhibit Area
Ladies Who Java & Women Who Code Reception

This is a informal reception for “Women Who Code” Scholarship recipients and women attending DevNexus. The facilitator for this session, Heather VanCura, will answer any questions you have and will lead a short discussion on how to make the most of the conference. Please come along to have breakfast with us and do some pre-conference networking with other ladies at DevNexus 2016!

Track:
Misc
Skill Level:
Beginner
Slot:
2/16, 8:00 AM | Room A314
Tags:
Traveling with a NoSQL Database, a Full Stack Java Adventure

In this workshop we will talk about what is different about this generation of web applications and how a solid development approach must consider the latency, throughput and interactivity demand by users across both mobile devices, web browsers, and IoT. We will demonstrate how to include Couchbase in such applications to support a flexible data model and easy scalability required for modern development.

In this workshop we’ll see how to build a full stack web application that uses Java, AngularJS, and Couchbase. We’ll see how to make use of Couchbase’s new SQL-like query language, N1QL, using the latest Java SDK, to speed up our development process, eliminating lengthy and unmanageable code that might typically be seen in a NoSQL application.

Track:
NoSQL
Skill Level:
Beginner
Slot:
2/16, 10:30 AM | Room A401
Tags:
Traveling with a NoSQL Database, a Full Stack Java Adventure, Part II

In this workshop we will talk about what is different about this generation of web applications and how a solid development approach must consider the latency, throughput and interactivity demand by users across both mobile devices, web browsers, and IoT. We will demonstrate how to include Couchbase in such applications to support a flexible data model and easy scalability required for modern development.

In this workshop we’ll see how to build a full stack web application that uses Java, AngularJS, and Couchbase. We’ll see how to make use of Couchbase’s new SQL-like query language, N1QL, using the latest Java SDK, to speed up our development process, eliminating lengthy and unmanageable code that might typically be seen in a NoSQL application.

Track:
NoSQL
Skill Level:
Beginner
Slot:
2/16, 1:00 PM | Room A401
Tags:
Java Off Heap Podcast - Live

Live recording of the Java Pub House Off Heap Podcast

Track:
Misc
Skill Level:
Beginner
Slot:
2/16, 7:30 PM | Room A314
Tags:
Reactive Web Applications

A one stop shop intro to reactive programming including a definition of what “reactive” means, why it matters. A discussion of the building blocks including Reactive Streams and composition libraries such as ReactiveX. We’ll also focus on where we are today with building reactive web applications and preview upcoming support for Spring Framework 5.

Track:
Web
Skill Level:
Intermediate
Slot:
2/17, 4:00 PM | Room A402-403
Tags:
Playing with the Play Framework using Scala

This presentation will cover an introduction to the framework by creating a basic web application in Scala to get you started.

The Play Framework is a lightweight and stateless web framework that is part of the Typesafe stack, a stack which includes Akka, a reactive message driven toolkit, and the Scala programming language. The presentation will cover an introduction to the framework by creating a basic web application in Scala to get you started. The presentation will also cover the philosophy behind the framework and give an honest analysis on the advantages and disadvantages of the framework.

Track:
Web
Skill Level:
Intermediate
Slot:
2/17, 10:30 AM | Room A402-403
Tags:
The Quest for the Holy Grails

Learn Grails from basic principles to advanced concepts by building a small, but interesting, application.

We’ll start with basic domain classes, controllers, and views, and add in SiteMesh layouts, internationalization, transactional services, REST capabilities, and as many plugins as time allows.

Track:
Web
Skill Level:
Beginner
Slot:
2/17, 1:00 PM | Room A402-403
Tags:
The Bootiful Application

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! Spring Boot 1.3 aims to make address the common functional and non-functional requirements that gate quickly moving to production.

Join Spring developer advocate Josh Long for a look at what Spring Boot is, why it’s turning heads, why you should consider it for your next application (REST, micro services, web, batch, big data, integration, whatever!) and how to get started.

Track:
Web
Skill Level:
Beginner
Slot:
2/16, 10:30 AM | Room A402-403
The State of Authenticating RESTful APIs

The many benefits of a RESTful architecture has made it the standard way in which to design web based APIs. For example, the principles of REST state that we should leverage standard HTTP verbs in order to help keep our APIs simple. Server components that are considered RESTFul should be stateless which help to ensure that they can easily scale.

However, the best practices of REST and security often seem to clash. How should sensitive information be transmitted in RESTful APIs? How should a user be authenticated in a stateless application? How is it possible to design an API so it is both secure and RESTful? Securing RESTful endpoints is further complicated by the the fact that security best practices evolve so rapidly.

In this talk Rob will explore various ways to perform authentication in RESTful APIs. Along the way we will clear up misconceptions, explore common pitfalls, and discover new insights into authentication.

Track:
Web
Skill Level:
Beginner
Slot:
2/16, 5:30 PM | Room A402-403
Tags:
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts

Sure it is easy to use a web interface to build, manage, and monitor your Cloud PaaS instances. But it can be much easier to reuse several Java libraries, do REST calls, and leverage your PaaS SDKs with the Nashorn Javascript engine. In this session you will learn how to code useful Nashorn Javascripts to automate all the boring tasks you used to do in your browser. You will see examples for creating instances, diagnosting their health, scaling up and down your infrastructure, and a bonus for building a JavaFX interface without compiling a single line of code, just using Nashorn. Say no more to bash scripts. It’s time to code Javascript in your Unix box! Extra-extra bonus: build and deploy server-side Nashorn applications in the Cloud!

Track:
Web
Skill Level:
Intermediate
Slot:
2/17, 2:30 PM | Room A402-403
Spring 4 Web Applications

This talk covers the new features over the past year in Spring Framework 4.2 including the addition of HTTP streaming, Server-Sent Events, WebSocket-style messaging, a fine-grained model for cross-origin requests, comprehensive HTTP caching updates, and more. We’ll also review the upcoming 4.3 release (the last in the 4.x line) and preview some of the bigger changes for Spring Framework 5.

Track:
Web
Skill Level:
Intermediate
Slot:
2/16, 1:00 PM | Room A402-403
Designing a Beautiful REST+JSON API

Designing a really clean and intuitive REST + JSON API is no small feat. You have to worry about resources, collections of resources, pagination, query parameters, references to other resources, which HTTP Methods to use, HTTP Caching, security, and more! And you have to make sure it lasts and doesn’t break clients as you add features over time. Further, while there are many references on creating REST APIs with XML, there are much fewer references for REST + JSON.

In this presentation, Les Hazlewood - Stormpath CTO and Apache Shiro PMC Chair - will share all of the golden nuggets learned while designing, implementing and supporting JSON-based REST APIs, using examples from a clean real-world REST+JSON API built with Java technologies. He will cover:

  • JSON-based data formats in a RESTful API
  • References to other JSON-based resources (aka ‘linking’).
  • Resource collections and pagination
  • How to map (and how not to map) HTTP methods to Resource CRUD
  • Resource partial updates
  • Supporting HTTP Method Overloading for clients that don’t support HTTP PUT and DELETE
  • API versioning strategies
  • Meaningful Error responses
  • Many-to-many resource relationships
  • HTTP Caching and Optimistic concurrency control.
  • Authentication and Security
Track:
Web
Skill Level:
Intermediate
Slot:
2/16, 4:00 PM | Room A402-403
Http/2

HTTP 1.1, which is the backbone of pretty much everything we’ve been using on the Internet, has been around for over 15 years. Recently the HTTP/2 specification has been completed and gradually application servers will start supporting it. It does make one wonder though, why change if something has been working for so long. In this talk we’ll examine the shortcomings of HTTP 1.1 and how 2 intends to address these. We’ll see what we need to know and how it’s going to effect our existing applications, and future ones.

Track:
Web
Skill Level:
Beginner
Slot:
2/16, 2:30 PM | Room A402-403
Tags:
Destination: Cloud. Deploying Applications To The Cloud With Docker

Our news feeds are full of stories talking about the failures and successes of companies that have moved applications to the cloud. Ultimately the consensus seems to be that moving applications to the cloud is a good thing, the next question is “how”? One solution that has taken the world by storm is Docker. While initially Docker seems promising, development and operations teams are often left with the problem of coming up with some type of Docker orchestration and management solution for deploying their applications. In this session we will get our hands dirty.

We are going to use IBM Bluemix to get your application to the cloud and leverage the power and portability of Docker containers. We’ll talk about everything from build pipelines, to private registries, to container monitoring. And we’ll assess Bluemix as an end-to-end cloud solution for deploying Docker.

Track:
Cloud + DevOps
Skill Level:
Beginner
Slot:
2/17, 1:00 PM | Room A315-316
Tags:
Exploring Open Data in the Cloud with BigQuery

Big data is powerful. It helps you make informed decisions about your business, but putting it to use can be time consuming. There’s nothing worse than taking the time to build out a dashboard only to realize that it isn’t useful.

In this session Jenny Tong, a Developer Advocate on Google Cloud Platform, will show you how cloud computing makes it easier to explore big data. She’ll use Google BigQuery to poke around some really big data sets including the GDELT news database, Wikipedia logs, and weather data going back to 1929.

You’ll leave knowing how to use the cloud to effectively explore all that valuable data you’ve been logging.

Track:
Cloud + DevOps
Skill Level:
Intermediate
Slot:
2/16, 2:30 PM | Room A315-316
Tags:
API Management on Kubernetes' managed clouds using Fabric8

The Fabric8 project delivers PaaS infrastructure that runs on Kubernetes (provided by Red Hat OpenShift 3) and Docker container technology. It helps you to create, deploy and manage a Micro Service Architecture. To manage all these micro services Fabric8 ships with a fully integrated API Manager called ‘Apiman’. Apiman is a central management system that can manage all your APIs and publish them on one or more standalone gateways. Once a microservices endpoint is published to the gateway, requests are routed over the gateway where policies are applied on the way to and from of the service. We will demo these capabilities and show you how to configure and apply policies like Basic Authentication, Rate Limiting, IP White/Black Listing, etc as well as how to set up plans and contracts between service developers and service consumers.

Track:
Cloud + DevOps
Skill Level:
Advanced
Slot:
2/17, 2:30 PM | Room A315-316
Microservices deployment with Docker, Ansible and Kubernetes

In this session, you will see how Red Hat is investing to make elastic scale application hosting infrastructure easy. You will see the use of Docker for the containerization of Microservices and then drill-down into how to provision and manage Docker at scale with Ansible and Kubernetes. With Ansible, you have a powerful solution for provisioning dozens of servers into a new cluster, where Kubernetes then allows you to scale out to hundreds or thousands of Docker containers across that backplane.
Even if you do not need substantial production scaling requirements, Ansible is a fantastic solution for helping you maintain development environments that closely match your production environment.

Track:
Cloud + DevOps
Skill Level:
Intermediate
Slot:
2/17, 10:30 AM | Room A315-316
Running Java on Azure

Microsoft Azure is the cloud platform for everyone and that means Java too. This session will bring you up to speed on what Azure is and how you can use your Java skills to build applications on it. We’ll talk about Platform-as-a-Service options like Web Apps and Cloud Services and how you can get a Java web app running in minutes with features like auto-scaling, traffic routing, disaster recovery, and more. We’ll also see how you can deploy application servers including WebLogic, WebSphere, JBoss, Tomcat, and much more! All of this powered by the largest cloud provider in the world!

Track:
Cloud + DevOps
Skill Level:
Beginner
Slot:
2/16, 5:30 PM | Room A315-316
Tags:
Evolving the Netflix API

At Netflix, we provide a Java-based API that supports the content discovery, sign-up, and playback experience on thousands of device types that millions use around the world every day. As our user base and traffic have grown by leaps and bounds, we are continuously evolving this API to enable the best user experience. In this talk, I will give an overview of how and why the Netflix API has evolved to where it is today and where we plan to take it in the future. I will discuss how we make our system resilient against failures using tools such as Hystrix and FIT, while keeping it flexible and nimble enough to support continuous A/B testing.

Track:
Cloud + DevOps
Skill Level:
Intermediate
Slot:
2/16, 1:00 PM | Room A315-316
Docker Tutorial for Java Developers

Docker is the developer-friendly Linux container technology that enables the creation of your stack: OS, JVM, app server, your app/.war, and all your custom configuration. Are you hearing developers say, But it works on my machine! when code breaks in on a different server? 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?
In this session, we will provide you with an introductory tutorial on Docker on your Windows or Mac OSX laptop, where you will see how to bundle your Java-based web service or microservice as a Docker image. Once we cover the introductory topics, we will dive deeper into how to build a Java-based microservice architecture, bundled as Docker images, deployable to a scalable cloud environment.

Track:
Cloud + DevOps
Skill Level:
Beginner
Slot:
2/16, 10:30 AM | Room A315-316
Java-based microservices, containers, Kubernetes - how to

Join this session to learn how to create a Java-based microservice using Spring Boot, containerize it using Maven plugins, and subsequently deploy a fleet of microservices and dependent components such as Redis using Kubernetes.

Spring Boot makes creating microservices fast and easy when it comes to running a single instance. Like most Java applications, the harder part is usually the clustering and fail-over configurations.

First, we’ll go over how to get started with Spring Boot, and, subsequently, using Maven plugins to generate and create Docker images during the build process.

Next, we’ll go over some basic architecture and configurations, such as:
- Configuring Spring Session
- Using Redis as the session store
- Testing the configuration locally with container linking
- Tips and tricks for faster startup (/dev/./urandom is your friend)

Finally, with the images, we’ll deploy the microservice into Kubernetes:
- Defining pods and services
- Linking microservices to Redis using Kubernetes
- Perform rolling upgrades of the application
- Canary new versions of the microservices into the fleet

The best part is we can visualize all these activities happening in Kubernetes.

Track:
Cloud + DevOps
Skill Level:
Beginner
Slot:
2/16, 4:00 PM | Room A315-316
Zero downtime deployments with World Class PaaS

We will see how both Developers and Operations are in a win-win situation with zero downtime deployment models that can be implemented with a World Class PaaS (OpenShift). This will be a demo that introduces a couple of deployment strategies where Operations doesn’t have to bring down their systems during downtime anymore, and no more night outs or weekends.

Track:
Cloud + DevOps
Skill Level:
Intermediate
Slot:
2/17, 4:00 PM | Room A315-316
Tags:
Talk To Your Microservice Via a Chat Bot, not UI

In most cases, it is convenient to have some human interaction with a web (micro-)service, no matter how small it is. A traditional approach would be to create an HTTP interface, where user requests will be dispatched and HTML/CSS pages must be served. This approach is indeed very traditional for a web site, but not really convenient for a web service, which is not intended to be good looking, 24x7 up and running and UX-optimized. Instead, talking to a web service in a chat-bot mode would be much more convenient, both for a user and web service developer. In this session I will try to explain why chat-bot design is more preferable, what are the pros and cons.

Track:
Microservices
Skill Level:
Intermediate
Slot:
2/16, 5:30 PM | Room A301
Events on the outside, on the inside and at the core

This presentation looks at the importance of events and the role that they play in software applications. We describe how events are a key application integration mechanism and how they are used by applications to communicate with the outside world. You will learn how the microservices inside a system can use events to maintain data consistency. We discuss how easy it is to implement both these mechanisms by developing your core business logic using an event-centric approach.

Track:
Microservices
Skill Level:
Intermediate
Slot:
2/16, 1:00 PM | Room A301
Down-to-Earth Microservices with Java EE

Microservices seems to have become the new kid of the buzzword block in our ever colorful industry. In this session we will explore what microservices really mean within the relatively well established context of distributed computing/SOA, when they make sense and how to develop them using the lightweight, simple, productive Java EE programming model.

We’ll explore microservices using a simple but representative example using Java EE. You’ll see how the Java EE programming model and APIs like JAX-RS, WebSocket, JSON-P, Bean Validation, CDI, JPA, EJB 3, JMS 2 and JTA aligns with the concept of microservices.

It may or may not surprise you to learn in the end that you already know more about microservices than you realize and that it is an architectural style that does not really require you to learn an entirely new tool set beyond the ones you already have. You might even see that Java EE is a particularly powerful and elegant tool set for developing microservices.

Track:
Microservices
Skill Level:
Intermediate
Slot:
2/16, 2:30 PM | Room A301
Using Hystrix to Build Resilient Distributed Systems

Hystrix is an open-source library developed by Netflix to help us build resilient distributed systems. It provides boundaries that prevent failures in one service from cascading to other services. It is also designed with the knowledge that failures in a distributed system are inevitable, and have to be handled as a first-class citizen through the use of fallbacks. Used properly, Hystrix will greatly improve the availability of a system that may encounter errors or increased latency in a distributed environment.

In my talk, I will describe the principles of Hystrix and what role it plays in operating the Netflix API. I will describe a variety of cases where proper Hystrix usage has protected our API, and lessons we learned about how improper usage can lead to customer-affecting outages.

Track:
Microservices
Skill Level:
Intermediate
Slot:
2/17, 10:30 AM | Room A301
You've got Microservices...Let's Secure Them

You went ahead a built a whole new set of shiny microservices. While doing this you realize you can no longer rely on you Application Server to handle all the authentication. Oh, and of course one of your teams used Node.JS How are you going to secure all these endpoints so that the end user doesn’t have to authenticate against each one. This talk will be a demonstration of using a centralized authentication service to secure many different microservice architecture. The demos will Project Keycloak but would apply just as well with Stormpath, Ping.Indenty, or similar services.

Track:
Microservices
Skill Level:
Beginner
Slot:
2/17, 4:00 PM | Room A301
Java EE Microservices Architecture: Migrating Monolithic Systems for Sustainable Enterprise Development

With the ascent of DevOps, microservices, containers, and cloud-based development platforms, the gap between state-of-the-art solutions and the technology that enterprises typically support has greatly increased. But some enterprises are now looking to bridge that gap by building microservice-based architectures on top of Java EE. Can it be done? Is it even a good idea? We thoroughly explores the possibility and provides savvy advice for enterprises that want to move ahead. The issue is complex: Java EE wasn’t built with the distributed application approach in mind, but rather as one monolithic server runtime or cluster hosting many different applications. If you’re part of an enterprise development team investigating the use of microservices with Java EE, there are several items to consider.

Track:
Microservices
Skill Level:
Intermediate
Slot:
2/16, 10:30 AM | Room A301
Spring Cloud *: Exploring Alternative Spring Cloud Implementations

In this session we will discuss the Spring Cloud abstractions and interfaces that an implementation might choose to implement: DiscoveryClient, LoadBalancerClient, Configuration and Bus. We will compare and contrast some target technologies and discus the tradeoffs and nuances of each, such as: netflix, consul, etcd, zookeeper and lattice. We will then show and demonstrate Spring Cloud implementations of those technologies

Track:
Microservices
Skill Level:
Intermediate
Slot:
2/17, 2:30 PM | Room A301
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Developers?

The third platform, characterized by a fluid infrastructure where virtualized servers come into and out of existence, and workloads are constantly being moved about and scaled up and down to meet variable demand, calls for new design patterns, processes and even culture. One of the most well known descriptions of these new paradigms is the Twelve Factor App (12factor.net), which describes elements of cloud native applications. Many of these needs are squarely met through the Spring Framework, others require support from other systems. In this session we will examine each of the twelve factors and present how Spring, and platforms such as Cloud Foundry satisfy them, and in some cases we’ll even suggest that responsibility should shift from Spring to platforms. At the conclusion you will understand what is needed for cloud‐native applications, why and how to deliver on those requirements.

Track:
Microservices
Skill Level:
Intermediate
Slot:
2/16, 4:00 PM | Room A301
Cloud Native Java with Spring Cloud Services

Developing cloud native applications presents several challenges. How do microservices discover each other? How do you configure them? How can you make them resilient to failure? How can you monitor the health of each microservice?

Spring Cloud addresses all of these concerns. Even so, you still must explicitly develop your own discovery server, configuration server, and circuit breaker dashboard for monitoring the circuit breakers in each microservice.

Spring Cloud Services for Pivotal Cloud Foundry picks up where Spring Cloud leaves off, offering a discovery server, configuration server, and Hystrix dashboard as services that can be bound to applications deployed in Pivotal Cloud Foundry, leaving you to focus on developing the services that drive your application. In this talk, we will introduce the capabilities provided by Spring Cloud Services and demonstrate how it makes simple work of deploying cloud native applications to Cloud Foundry.

Track:
Microservices
Skill Level:
Beginner
Slot:
2/17, 1:00 PM | Room A301
Securing Your Java EE Microservices with HMAC Authentication

This presentation covers benefits and drawbacks of various popular Java EE microservices security approaches (Diffie-Hellman, RSA, HMAC) and looks at how to implement them in real-world examples. It explains why hash-based message authentication is best for microservice communication and has remained uncrackable. The presentation also shows that HMAC is fast, efficient, stateless, scalable, and DOS-resistant and can securely use any protocol and framework that supports messaging with headers, with no risk to the transport layer.

Track:
Security
Skill Level:
Advanced
Slot:
2/16, 1:00 PM | Room A314
AppSensor: Real-Time Event Detection and Response

AppSensor is an OWASP project that allow you to build attacker detection and automated response directly into your applications. The most recent label for this concept is “application self-protection”.

There are many security protections available to applications today. AppSensor builds on these by providing a mechanism that allows architects and developers to build into their applications a way to detect events and attacks, then automatically respond to them. Not only can this stop and/or reduce the impact of an attack, it gives you incredibly valuable visibility and security intelligence about the operational state of your applications.

The self-protection model benefits all types of applications. In particular, it has gained traction with developers operating in the cloud and on DevOps teams. The increased visibility and speed of response become critical at scale.

In this presentation, we’ll discuss what AppSensor is and what it can offer you. The current feature set will be covered along with upcoming features from the roadmap. In addition, you will learn how to cover different use cases with AppSensor by a walk-through of some sample applications. Lastly, you will receive information about the different components and integrations that make AppSensor enterprise-friendly.

Take-aways you will have from this presentation are:

  • Knowledge about the benefits of proactive application self-protection
  • Information of the features in the open-source reference implementation
  • Guidance on implementing AppSensor in the real world
  • Pointers to supporting materials specifically created for developers, architects, and senior management.
Track:
Security
Skill Level:
Beginner
Slot:
2/16, 5:30 PM | Room A314
"Wait wait... don't pwn me!" - The Technology News Game Show

“Wait Wait… Don’t Pwn Me!” is patterned after the NPR news quiz show where we challenge the panel and the audience with “Bluff the Listener”, “This Week’s Technology News”, “The Developer Limerick Challenge” and “Lightning Fill In the Blank”.

Test your wits and current technology news knowledge against our panel of distinguished guests. In the past, panelists have included Joshua Corman (Sonatype), Chris Eng (Veracode), Space Rogue (The Universe), Matt Tesauro (RackSpace), Ed Burns (Oracle), Justin Woo (PayPal), Jacob West (NetSuite), Jez Humble, Shannon Lietz (Intuit) and Matthew McCullough (GitHub).

Think you know your stuff? Get selected as an audience participant and prove it! Join us for a rollicking hour as we test the panel and the audience on recent technology stories in the news. Who knows? Maybe you can pwn the panel.

Track:
Security
Skill Level:
Beginner
Slot:
2/17, 10:30 AM | Room A314
Formal Verification of Secure Software Systems

Designing secure systems is a very difficult task. Even the smallest issues can have devastating consequences. As designers of these systems we have to do everything in our power to ensure that these systems function as intended. Join Aaron as he demonstrates techniques for formally verifying security systems. These tools demonstrate the power of functional languages as verification systems against both functional and imperative software systems. You will learn how to create functional models and use them to prove the correctness of your security systems.

Track:
Security
Skill Level:
Advanced
Slot:
2/17, 2:30 PM | Room A314
A Behavior Based Approach to Web Application Security

It’s 2015, and it’s about time we started expecting more from our security systems. We often have static security controls that punish good users and only mildly annoy malicious ones. Good security looks for ways to increase security while decreasing friction and controls for legitimate users. Our security environments should be able to respond to the moment and adapt as things change. We need to stop showing a captchas just because we’re too lazy to figure out if someone is a bot. We need to rely more on the data that we have to make informed decisions about the intentions of users and respond in kind. Join Aaron as he walks through the ideas behind building a dynamic security response system and how to integrate it into your software. You will be introduced to easy ways to catch bad behavior as well as some tools that will help you get started.

Track:
Security
Skill Level:
Intermediate
Slot:
2/16, 4:00 PM | Room A314
The Illusion of Control: The Intersection of Java and Application Security

Every organization has a software supply chain…they just don’t manage it like one (yet).

There is a massive volume of open source and proprietary components being consumed within your software supply chain at a very high velocity. Within it, a lot of inefficiencies are hidden to you and are silently sabotaging your efforts to accelerate development, improve efficiency and maintain quality. I will openly share insight about your use of Java that will change the way you think about everything, and put you leagues ahead of organizations who are still in the dark.

In June 2015, I authored the State of the Software Supply Chain Report - a quantitative analysis of 106,000 Java-centric development organizations that consumed 17 billion open source and proprietary software components from over 105,000 projects – all hosted on Maven Central. While the average organization consumed 240,000 components in 2014, the study revealed evidence of inefficient software sourcing practices, building in outdated components, and using software with known security vulnerabilities or potentially risky license types by mistake.

Attendees will also learn how technology, banking, and government organizations are applying proven supply chain principles from the manufacturing industry toward improving their Java-centric DevOps and Continuous Delivery practices. I will shed light on pending legislation in the U.S. Congress that may change the way all of us develop software in the future.

Track:
Security
Skill Level:
Beginner
Slot:
2/16, 2:30 PM | Room A314
Tags:
Rapelcgvba: Jul Vg Znggref

Encryption is a powerful tool for privacy. At least that is what we’re meant to think.

If you consider encryption to be a black box of magic, you should probably attend this talk.
If you think encryption will protect your secrets, you should probably attend this talk.
If you have (or haven’t) been following the news, you should probably attend this talk.

The truth is, encryption can be an effective way of making it harder for people to steal your secrets. But it isn’t magical, it isn’t fool proof and, depending on how you are using it, may be completely useless. It is a hard topic that we’ll only touch the surface on, but there are very few topics that are more crucial for our industry and profession to understand better than encryption. You don’t have to understand the math (although that will help), but you do have to understand what it will and won’t do for you*.

*and how implementations of it may have been intentionally compromised

Track:
Security
Skill Level:
Beginner
Slot:
2/17, 4:00 PM | Room A314
Web Security

If you’re not terrified, you’re not paying attention.

Publishing information as webs of data does not require us to just give it away. We have a series of tools and techniques for managing identity, authentication, authorization and encryption so we only share content with those we trust.

Before we tackle Web Security, however, we need to figure out what we mean by Security. We will pull from the worlds of Security Engineering and Software Security to lay the foundation for technical approaches to protecting our web resources.

Track:
Security
Skill Level:
Beginner
Slot:
2/16, 10:30 AM | Room A314
Tags:
Secure payments over mixed communication media

Web enabled systems are now an integral part of everything we interact with, from microelectronics to voice enabled hardware, from text messages and phone calls to email, and really we’re just limited by our imaginations as to what we can connect. As we explore vast new realms of communication over mixed digital media, we have to ask ourselves how we protect our critical data within potential unsecure environments. Going beyond that, how do we protect some of our more critical data, payment information, in this same realm.

As we look at a multitude of different environments, we’ll be exploring how to secure user identity and payment information through the communication channels, covering topics like:
* Securing identity and payment data through voice commands or text.
* Tokenization and encryption security.
* Techniques for triggering secure transactions from communications media.

At the end of the session, we’ll have a stronger understanding of proper techniques for working with new communication media sources, and see how we can apply fundamental security precepts in potentially insecure environments.

Track:
Security
Skill Level:
Intermediate
Slot:
2/17, 1:00 PM | Room A314
Using Software Modules - Welcome to Hell!

Using software modules today is the default way of working for most systems and frameworks. With the advent of many software languages and OSS frameworks, new module systems are constantly created and new module ecosystems start to prevail. This trend is horizontal and covers operating system packages, language libraries and application modules (plugins).
But while some module systems are nicer to use, others are repeating past mistakes and are a daily source for developer agony and pain.
In this keynote I will present the “lessons learned” at JFrog, where we make software for managing software libraries and deal with many types of module systems. This talk will show what works and what doesn’t work in a module system; what features can make a module ecosystem thrive or fail; and why, despite all downsides, modules are here to stay and conquer more space as the Cloud continues to grow.

Track:
Architecture
Skill Level:
Beginner
Slot:
2/16, 5:30 PM | Room A412
Towards an Evolutionary Architecture

Big up front design is discouraged in agile development. However, we know that architecture plays a significant part in software systems. Evolving architecture during the development of an application seems to be a risky business.

In this presentation we will discuss the reasons to evolve the architecture, some of the core principles that can help us develop in such a manner, and the ways to minimize the risk and succeed in creating a practical and useful architecture.

Track:
Architecture
Skill Level:
Beginner
Slot:
2/16, 4:00 PM | Room A412
Tags:
How did I get here? The successional dynamics of hardware and software

The last few decades have brought about a dramatic transformation in both hardware and software development. Changes to one drive changes to the other, all with the aim of moving away from monolithic applications deployed on huge custom machines to agile, infinitely scalable services deployed on high-performance, cost-effective, software-defined networks and infrastructure. This talk will share some of the history that has led to this point, and offer insights on how these new systems can help you shape your own ops and developer evolution from traditional data center virtualization to hybrid cloud models, microservices architectures and beyond. I will also be talking about a new way for us to think about what “best architecture” or “best solution” means.

Track:
Architecture
Skill Level:
Beginner
Slot:
2/17, 1:00 PM | Room A412
Continuous Delivery for Architects

This multi-disciplinary session takes a deep dive into
the confluence of topics required to fully understand the intersection
of Continuous Delivery and architecture, including evolutionary
architecture and emergent design, with an emphasis on how
architectural decisions affect the ease in changing and evolving your
code, the role of metrics to understand code, how Domain Driven
Design’s Bounded Context reifies in architecture, how to reduce
intra-component/service coupling, and other techniques.

Continuous Delivery is a process for automating the production
readiness of your application every time a change occurs – to code,
infrastructure, or configuration. In the Continuous Delivery world,
rather than hone skills at predicting the future via Big Design Up
Front, Continuous Delivery emphasizes techniques for understanding
and changing code with less cost during the process. Some architectures
and engineering practices yield better designs for this
environment. This multi-disciplinary session takes a deep dive into
the confluence of topics required to fully understand the intersection
of Continuous Delivery and architecture, including evolutionary
architecture and emergent design, with an emphasis on how
architectural decisions affect the ease in changing and evolving your
code, the role of metrics to understand code, how Domain Driven
Design’s Bounded Context reifies in architecture, how to reduce
intra-component/service coupling, and other techniques.

Track:
Architecture
Skill Level:
Intermediate
Slot:
2/17, 2:30 PM | Room A412
Core Software Design Principles

Creating code is easy, creating good code takes a lot of time, effort, discipline, and commitment. The code we create are truly the manifestations of our designs. Creating a lightweight design can help make the code more extensible and reusable.

In this presentation we will take an example oriented approach to look at some core design principles that can help us create better design and more maintainable code.

Track:
Architecture
Skill Level:
Beginner
Slot:
2/16, 1:00 PM | Room A412
Tags:
Comparing Service Based Architectures

Microservice architectures are quite popular, described as “SOA done correctly”. But what are the real differences between Service Oriented, Service Based, and *Micro*service architectural styles? And what about middle ground between the shared everything of SOA versus shared nothing of microservices? This talk explores the similarities and differences between various service-oriented architectural styles. I describe the characteristics of SOA, microservices, and hybrid service-based architectures, along with decision criteria to choose between them. I also discuss specific engineering practices, orchestration styles, reuse strategies, and migrating between architectural styles (e.g., from monolithic applications to service-based or microservice). No one architecture can solve every problem, and many projects take on more complexity than necessary by choosing the wrong paradigm. This talk equips attendees with the knowledge and context to choose the architecture that best fits their needs.

Track:
Architecture
Skill Level:
Intermediate
Slot:
2/16, 10:30 AM | Room A412
Evolutionary Software Architectures

For many years, software architecture was described as the “parts that are hard to change later”. But software architecture is the balancing of capabilities versus constraints. If build changeability one of your prime capabilites, evolutionary change becomes easier. The microservice architectural style is quite popular, but it is only one in a family of evolutionary architectures. This session defines the characteristics this family of architectural styles, along with engineering and DevOps practices necessary for implementation. I cover the principles behind evolutionary architectures, the practices needed for success, how organization and team structure affects these architectures, and specific engineer practices that facilitate evolutionary architectures. I also discuss migration strategies from common existing architectural types towards move evolutionary architectures.

Track:
Architecture
Skill Level:
Intermediate
Slot:
2/17, 10:30 AM | Room A412
Tags:
Software architecture vs code

Software architecture and coding are often seen as mutually exclusive disciplines, despite us referring to higher level abstractions when we talk about our software. You’ve probably heard others on your team talking about components, services and layers rather than objects when they’re having discussions. Take a look at the codebase though. Can you clearly see these abstractions or does the code reflect some other structure? If so, why is there no clear mapping between the architecture and the code? Why do those architecture diagrams that you have on the wall say one thing whereas your code says another? In fact, why is it so hard to automatically generate a decent architecture diagram from an existing codebase? Join us to explore this topic further.

Track:
Architecture
Skill Level:
Intermediate
Slot:
2/17, 4:00 PM | Room A412
Designing Reactive Systems: Creating Highly Responsive and Resilient Applications

Organizations have moved from making their employees available to having their applications available directly to the users. This changes the magnitude of scale
of interactions the applications have to support. Furthermore, with devices and bots accessing the systems, we’re looking at a complete different rate of response than we once had to aim for.

In this presentation we will discuss the fundamentals of reactive systems, the key design goals, and the technologies that facilitate building such systems.

Track:
Architecture
Skill Level:
Beginner
Slot:
2/16, 2:30 PM | Room A412
Full stack Polymer apps for mobile and web

In this presentation we’ll take a look at building a full stack web application using Polymer and Web Components. After a quick introduction to Polymer, we’ll see how we can handle things like authentication, pagination of large data sets, and adapting our UI to different viewports. We’ll also review what’s needed for moving our app to production and optimizing our User Experience with quick load times and transition animations.

Track:
HTML5
Skill Level:
Intermediate
Slot:
2/16, 5:30 PM | Room A311
Chrome DevTools Jedi Tricks

Chrome DevTools offers a comprehensive set of tools to analyze and inspect your web pages. What is lesser known is a whole gamut of shortcuts and tricks that can make you far more productive. It’s time this knowledge becomes more commonplace. Join me as we cover a wide variety of tips and tricks for the most popular Web Debugging Tool.

Track:
HTML5
Skill Level:
Intermediate
Slot:
2/17, 4:00 PM | Room A311
Bootstrap - From Zero to Hero

So you’re building the web, right? And you’re having fun, right? Inventing the wheel each and every time when you create this float-right class, right? Feeling the warmth of a thousand suns when you design yet another form, right? That’s not so fun anymore, eh? Feel sad no more! Bootstrap is a comprehensive CSS framework that makes all of the usual web design stuff much easier. It’s so good you might enjoy CSS once again!
In this 1 day workshop you will learn what Bootstrap is, why it is so awesome, and get your hands dirty creating smooth looking web sites using its powers!

Track:
HTML5
Skill Level:
Beginner
Slot:
2/16, 1:00 PM | Room A311
Tags:
Building Web Sites that Work Everywhere

How to build web sites that work well across various browsers versions and devices is always challenging for web developers. In the session, you’ll learn the best practices and strategy to develop cross-browser web sites that will work with the existing and future browsers. Tools for interoperability tests, cross-browser fundamentals, and tips and tricks on HTML5, CSS, JavaScript development will be illustrated. Feature detection, CSS prefix, and fallbacks will all be examined in the session. A real life example will be used to demonstrate step by step how to build cross-browser and plug-in-Free experiences. With a couple of simple changes to your sites, you can take advantage of web standards and HTML5 features today without breaking your sites in the future. Expect a lot of demos and code in the session.

Track:
HTML5
Skill Level:
Intermediate
Slot:
2/16, 10:30 AM | Room A311
Tags:
Back to the future with web components

Despite the range of options across HTML, CSS, and any number of JavaScript frameworks, many design and development teams are struggling to implement style guides and leverage reusable UI component libraries. While many web template frameworks have UI components, there hasn’t been a stable, long-term standard until now with W3C Web Components. Atlassian already uses the open-source skate.js framework to implement the Atlassian Design Guidelines (ADG) as Web Components in the Atlassian User Interface (AUI) framework. That means the future of Web Components is now: thousands of users are seeing the result in production across the family of Atlassian products.

Track:
HTML5
Skill Level:
Beginner
Slot:
2/16, 4:00 PM | Room A311
Architecting a Modern Web App

At the beginning, web applications were nothing more than static web sites. As the web quickly evolved, we watched web applications become smarter and more robust, taking advantage of dynamically served content and programming languages on the server.

During this time, a web application would be the only interface into your infrastructure. Your customers would interact with the application and it would make full page requests at every turn. We eventually started sprinkling in ajax calls, but at the core, the architecture of a web app hadn’t changed much. When mobile devices became commonplace, the interface landscape changed a bit. We created the need for supporting a new client that had to interface with our primary web application.

Now that we have client frameworks like Ember, we can start separating our concerns and treating our web applications as interfaces independent of their backend. On the flip side, we have started evolving the backend of our web apps into agnostic APIs and services that serve any type of interface, be it web, mobile, or the next big platform.

In this talk, I’ll show you how we do just that at Heroku. From our completely static web front end talking to multiple back-end services over CORS, to the centralized identity server that ties it all together. It works great for us, and it just might be the thing that revolutionizes your product too.

Track:
HTML5
Skill Level:
Intermediate
Slot:
2/16, 2:30 PM | Room A311
Tags:
Material Design for the Web

You might be forgiven for thinking that Google’s Material Design is limited to Android mobile apps. Material Design, however, is a versatile, comprehensive design language that applies broadly to many types of user experiences. This talk explores Material Design as a foundation for pure web applications, both mobile and desktop. It considers when the language is appropriate and when it is not. It thens introduces the frameworks, libraries, and other tools that are helpful for crafting a Material Design on the web. The talk concludes with a case study that examines a a successful web application based on Material Design.

Track:
HTML5
Skill Level:
Beginner
Slot:
2/17, 2:30 PM | Room A311
Using Bootstrap to create a common UI across products

Get to know the research, development and implementation process of Red Hats UX solution.

The presentation will demonstrate how the framework PatternFly was created and applied to the Open Source projects Aerogear and FeedHenry. It’ll also show the importance of design consistency across different products within a compony.

This session will show:

  • The design process to build PatternFly
  • How to adapt Bootstrap to the reality of one company.
  • Why design consistency is so important.
  • And a live coding demo showing Bootstrap basics and PatternFly structure.

At the end of the talk people will get to know the importance of a common UI to achieve a good user experience, and get to know the challenges of building an enterprise UX framework. The goal of this presentation is not to show Bootstrap or PatternFly, but to take them as an example of how to build a design guideline for any company.

Track:
HTML5
Skill Level:
Beginner
Slot:
2/17, 1:00 PM | Room A311
Using WebDriver for in-browser testing with Edge, Chrome and Firefox

WebDriver is the W3C spec that brings Selenium-style browser testing and control to HTML5 compliant browswers. Internet Explorer released an early peek at WebDriver support with IE 11 in 2014, and a more mature support became available with Edge in 2015. We’ll look at how to set up a Windows 10 based WebDriver testing environment that allows us to address Edge, Chrome, and Firefox, and run some basic automated tests across the three.

Track:
HTML5
Skill Level:
Intermediate
Slot:
2/17, 10:30 AM | Room A311
Debugging JS like a Boss

The days of Javascript being restricted to a few lines of inline code to drive a UI state change are over. Modern web apps now include reams of JavaScript (or TypeScript, CoffeeScript, etc.) to create robust, responsive UIs. But sophisticated code means more surface area to test and debug.

This talk will focus on the dev tools at our disposal to quickly triage issues and find their root causes.

Track:
JavaScript
Skill Level:
Beginner
Slot:
2/16, 1:00 PM | Room A411
Tags:
Navigating the Wild Seas of ES6 Modules

ES6 modules are an essential part of ES6. Unfortunately, they have lots of problems associated with them.

This talk will discuss the problems, and give ways of dealing with those problems. Along the way, the whole subject of ES6 modules will be dissected, so you can have a good understanding of them (and their associated problems), and how they are used in browsers and in node.

Track:
JavaScript
Skill Level:
Intermediate
Slot:
2/17, 2:30 PM | Room A411
Tags:
Introduction to React

React is a view library for modern Javascript applications. Join us as we explain how declarative programming, functional principles, the virtual DOM, and modern tooling can help you create elegant UIs and manage complex state with ease. We’ll introduce React’s core concepts as well as expose you to an ecosystem rich in modern tooling, innovative data storage architectures, and simple-but-powerful abstractions.

Track:
JavaScript
Skill Level:
Beginner
Slot:
2/16, 10:30 AM | Room A411
Introduction to JavaScript.next(ES6)

In this session, we’ll get aquatinted with ES6, or ES2015, the new version of JavaScript. We’ll talk about how to utilize ES6 in your projects NOW, using hte Babel transpiler. We’ll cover these language features:
version of the language:
arrows
classes
enhanced object literals
template strings
destructuring
default + rest + spread
let + const
iterators + for..of
generators
unicode
modules
module loaders

Track:
JavaScript
Skill Level:
Beginner
Slot:
2/16, 5:30 PM | Room A411
Pwning Web Performance with PhantomJS

Navigation Timing APIs, available in most web browsers, give developers a way to measure and visualize web performance at a very fine grained level. This data can be used to drive business level decisions on user experience and overall web best practices. This talk will equip attendees with the knowledge and tools to measure web performance and automate the process with a single PhantomJS 2 JavaScript file.

Track:
JavaScript
Skill Level:
Intermediate
Slot:
2/16, 4:00 PM | Room A411
Beyond Frameworks: A Deep Dive into Functional Javascript and the Browser

Plenty of new web developers start learning with a framework. Few take the time to understand what is happening behind the scenes.

It’s time to demystify what’s happening in the browser to execute your code. It’s time to understand what makes your tools work and how to make them sharper.

This talk will teach you how understand the browser on a deeper level and how to use functional javascript to write your own tools.

Track:
JavaScript
Skill Level:
Intermediate
Slot:
2/17, 4:00 PM | Room A411
Angular 2 Development with TypeScript

Angular 2 is a complete re-write of the popular framework AngularJS. Programming in Angular 2 is greatly simplified. Now it’s a component-based well-performing framework. This presentation is an overview of the framework. All code samples are provided in TypeScript, which is a recommended language for developing Angular 2 applications. We’ll also go over the tools required to develop and deploy Angular 2 applications.

Track:
JavaScript
Skill Level:
Intermediate
Slot:
2/17, 1:00 PM | Room A411
Build Secure User Interfaces Using JSON Web Tokens (JWTs)

With new tools like Angularjs and Nodejs, it is easier than ever to build User Interfaces for the systems that you manage. But how to do it securely? Web browsers are woefully insecure, and hand-rolled APIs are risky.

JSON Web Tokens (JWTs) are being prescribed as a panacea for webapp security, but you need to know your security basics before you can implement them with peace of mind. JWTs are a great mechanism for persisting authentication information in a verifiable and stateless way, but that token still needs to be stored somewhere.

In this talk, Robert Damphousse, lead front-end developer at Stormpath, will explain the security loopholes in web browsers, and what you can do about them keeping your JWTs safe and secure. Topics covered include:

  • Web browser security issues like XSS, user credential security, managing access control information, Man in the Middle attacks (MitM), and Cross-Site Request Forgery (CSRF).
  • How you can mitigate potential security risks.
  • Security issues and implementation tips across the entire stack.
  • What you need to know about cookies.
  • Infrastructure issues with session identifiers.
  • How to issue JSON Web Tokens (JWTs) to secure the browser application.

Robert will demonstrate these points with a simple single-page-application, built with Angular.js, and backed by a REST API.

Track:
JavaScript
Skill Level:
Intermediate
Slot:
2/16, 2:30 PM | Room A411
JavaScript Framework Face off

Developers are flocking to client side frameworks and, as a result, there are more and more JavaScript libraries attempting to solve the rich internet application problem. In a space where new libraries seem to spring up weekly, what framework should you choose for your next project? While there is consensus around basic ideas like Model View Whatever, there are some strong philosophical differences amongst the various libraries. In this talk, we’ll look at the similarities and the differences of some emerging JavaScript libraries discussing why you need to be aware of this rapidly evolving aspect of software development.

Developers are flocking to client side frameworks and, as a result, there are more and more JavaScript libraries attempting to solve the rich internet application problem. In a space where new libraries seem to spring up weekly, what framework should you choose for your next project? While there is consensus around basic ideas like Model View Whatever, there are some strong philosophical differences amongst the various libraries. In this talk, we’ll look at the similarities and the differences of some emerging JavaScript libraries discussing why you need to be aware of this rapidly evolving aspect of software development.

Track:
JavaScript
Skill Level:
Beginner
Slot:
2/17, 10:30 AM | Room A411
Tags:
Gradle Recipes for Android

Android applications no longer use Ant or IDE builds. The new build mechanism is based on Gradle, the popular build tool from the Groovy ecosystem. This talk will introduce Gradle to Android developers and show how easy it is to integrate into Android projects.

Topics will include using the Android plugin for Gradle, adding dependencies and alternate repositories, creating custom tasks, implementing both unit and integration tests, using alternative build types, product flavors and variants, and more.

Track:
Mobile
Skill Level:
Intermediate
Slot:
2/16, 2:30 PM | Room A404-405
Tags:
Exploring React.Native

React Native enables you to build world-class application experiences on native platforms using a consistent developer experience based on JavaScript and React. The focus of React Native is on developer efficiency across all the platforms you care about – learn once, write anywhere.

Track:
Mobile
Skill Level:
Beginner
Slot:
2/17, 4:00 PM | Room A404-405
Tags:
Building Native Mobile Apps with Javascript

Titanium, Native Script, React Native, and others promise cross platform mobile applications from a common code base. Let’s take a closer look at each platform’s advantages and disadvantages to find out what is the best option for you and your project.

As we compare the various platforms, bring your rotten veggies and week old popcorn to throw because this is a session sure to upset just about everyone. With Facebook jumping on the native Javascript bandwagon, everyone is getting excited about the new hotness.

Let’s take a deeper look at some of the more popular options for building native mobile applications with Javascript. We will definitely go over, in depth, the big 3 players, Appcelerator’s Titanium, Telrik’s Native Script, and of course Facebook’s React Native. We will also go over some of the smaller players in the space and what they have to offer. Don’t miss this session if you have a new project coming up or an established project that you want to keep current.

When you leave this session you should have a good feel for the strengths and weaknesses of each platform and a solid grasp on how to create a “hello world” app in each of the 3 big players.

Track:
Mobile
Skill Level:
Beginner
Slot:
2/16, 10:30 AM | Room A404-405
Tags:
Create Scalable and Secure Mobile Apps that Work Offline

With the advent of the digital transformation in today’s always-connected world, users expect to have a mobile experience that is immediate, pervasive, and aware. In this way, it is crucial to build apps that meet these expectations. Specifically, it’s building mobile apps that are always available, regardless of network connectivity and speed.

Users expect a great experience when using their mobile apps. If an app doesn’t provide this, then users won’t use it – it’s that simple. In the past, this has mostly meant a beautiful and intuitive interface, which is important but not the whole story.

In this session, you’ll learn how to build a mobile app that has a consistent user experience, both online and offline. This includes:

• Syncing the data
• Storing the data
• Securing the data
• Cross platform data modeling

You’ll walk away with an understanding of the design patterns required to build an app that works online and offline – all this, using open source technologies.

Track:
Mobile
Skill Level:
Intermediate
Slot:
2/17, 1:00 PM | Room A404-405
Cognitive Computing & Mobile Apps

Cognitive computing services are redefining what it means to have intelligence within your applications. Need to derive insight from text, generate or recognize speech, translate between different languages, employ computer vision to automatically recognize objects in an image, or apply predictive analytics for data within your application? In this session we will explore cognitive computing, and how it can be leveraged inside of your mobile applications.

Track:
Mobile
Skill Level:
Intermediate
Slot:
2/17, 10:30 AM | Room A404-405
Tags:
The Passion of Lazy - Mobile App Design Patterns

Working on a new mobile app project is both exciting and fun. Creating things from scratch is the ultimate developer dream!
But as a project ages, and more new and exciting features are added, they don’t really have that luster of the earlier features. Why not?
Mobile projects often forego good software design for speed-to-market, and are left with an extremely difficult codebase to extend and maintain.
This talk will discuss some design patterns I’ve harvested from creating multiple large mobile apps, and which allow me to be so lazy I can’t freaking believe it. Extensibility and maintainability are totally within my control, it’s so awesome! Be lazy like me!

Track:
Mobile
Skill Level:
Intermediate
Slot:
2/17, 2:30 PM | Room A404-405
Working with Ionic Services

In this session I’ll talk about using the various services of the Ionic platform. I’ll cover Push, Analytics, Deployment, Users, and the new Package service. I’ll share plenty of demos and examples of each service in action.

Track:
Mobile
Skill Level:
Intermediate
Slot:
2/16, 5:30 PM | Room A404-405
Ionic 2: Large Scale Mobile Apps

Ionic 1.0 has enabled many web developers to become mobile app developers. With the arrival of Angular 2 and its changes, and with ES6 being finalized, development has been improved yet again. How will that impact Ionic? In this session, we’ll compare Ionic 1 and Ionic 2 and go over what we’ve learned, what improvements we’re making to Ionic, and how easy it will be to develop large scale apps with Ionic 2

Track:
Mobile
Skill Level:
Intermediate
Slot:
2/16, 1:00 PM | Room A404-405
10 Tips for Kickass Enterprise Mobile Apps

The current speed of Mobile app development is fast and furious. Development shops are happy to crank out apps at this pace, but in the Enterprise world, the unfortunate carnage is an embarrassing product and a mess of crappy unmaintainable code. This talk will guide you towards quality and usability, and ultimately show you the steps to produce your most excellent kickass apps! Awesomeness will prevail!

Track:
Mobile
Skill Level:
Beginner
Slot:
2/16, 4:00 PM | Room A404-405
Top 5 Reasons Why Improvement Efforts Fail

This is my story of lessons learned on why improvement efforts fail… I had a great team. We were disciplined about best practices and spent tons of time on improvements. Then I watched my team slam into a brick wall. We brought down production three times in a row, then couldn’t ship again for a year.

Despite our best efforts with CI, unit testing, design reviews, and code reviews, we lost our ability to understand the system. We thought our problems were caused by technical debt building up in the code base, but we were wrong. We failed to improve, because we didn’t solve the right problems. Eventually, we turned our project around, but with a lot of tough lessons along the way.

To learn, we need a feedback loop. To improve, we need a feedback loop with a goal. There’s five different ways our project feedback loop can break:

  • Broken Target - Our definition of “better” is broken.
  • Broken Visibility - We don’t see the pain, so we take no action.
  • Broken Clarity - We don’t understand what’s causing the pain.
  • Broken Awareness - We don’t know how to avoid the pain.
  • Broken Focus - We see the pain, but our attention is focused on something else.

Find out how to repair the broken feedback loops on your software project by learning from my mistakes.

Track:
Agile
Skill Level:
Intermediate
Slot:
2/16, 1:00 PM | Room A406-407
Becoming a Polyglot - Create a Simple API Server in Python, Perl, Ruby and Node

Many people understand the very basics of several languages, all the way to Hello World. However, this isn’t a full fledged application and it’s challenging to make the translations in your head between all the different dialects (interpreted languages aren’t really different from each other like different languages - they work very much the same and the only difference is in the structure of the language). Out in our community are many people who firmly believe that moving from Ruby to Perl is not possible, that it’s very difficult to learn a new language, that it makes no sense to try to understand what “foreign” code might be doing.

In this session, I will demonstrate the same thing - a simple backend API with a javascript front end. I will use appropriate languages and idioms in each of the languages, with the goal of teaching attendees how to parse what’s happening in code they

Track:
Agile
Skill Level:
Intermediate
Slot:
2/16, 2:30 PM | Room A406-407
GROWS: A Modern Software Development Methodology

GROWS is an empirical, anti-fragile, pragmatic and evolutionary approach for the 21st century. Andy Hunt and Jared Richardson have created a new approach to software development that’s built around the Dreyfus Model of Skills Acquisition and deliberate experimentation to guide project decisions. This session will present the basics of GROWS and help you get started using this new approach.

Track:
Agile
Skill Level:
Beginner
Slot:
2/16, 10:30 AM | Room A406-407
Tags:
Shall I Compare Thee To A Line Of Code?

Ever wish that your peers called your code a “work of art”? What is it that artful programmers know that makes their work transcend functionality and become something that has value in its essence? There’s a lot that we can learn from the arts, particularly from those that share our linguistic building blocks. Because as all programmers and poets know, writing is easy—it’s writing the good stuff that’s hard.

So what can we take from the study of poetry that would illuminate our own paths as developers? In this talk, I’ll go through some poetic principles that clarify ideas about software development, both in the way we write our code and the way we grow as creators and teammates. We’ll explore the way poets learn to shape their craft and see what we can steal to help our code level up from functioning to poetic.

Track:
Agile
Skill Level:
Beginner
Slot:
2/16, 5:30 PM | Room A406-407
Tags:
You're an Architect...Now What?

Many software developers point their career towards ascending to the gilded rank of Architect…but what does it mean to actually be one? While many of us labor under false pretense of abject technical decision making, the reality is often very different. You’ll code less, spending more time on activities that lack an objective green/red bar. But you’ll also an opportunity to impact far more than one project.

In this talk, I’ll speak to my own journey. We’ll touch on influencing coworkers, the importance of communication and the importance of cup of coffee.

Many software developers point their career towards ascending to the gilded rank of Architect…but what does it mean to actually be one? While many of us labor under false pretense of abject technical decision making, the reality is often very different. You’ll code less, spending more time on activities that lack an objective green/red bar. But you’ll also an opportunity to impact far more than one project.

In this talk, I’ll speak to my own journey. We’ll touch on influencing coworkers, the importance of communication and the importance of cup of coffee.

Track:
Agile
Skill Level:
Beginner
Slot:
2/17, 4:00 PM | Room A406-407
Tags:
Training the Team

You’ve selected a new technology and identified just the right set of workflows. What’s next? How do you make sure your team is really comfortable with the technology, understands the importance of your workflows and has the skills to get themselves out of trouble? In this session we’ll look at a range of strategies for knowledge sharing, support and practice to ensure your team builds and practices the skills required to succeed.

Track:
Agile
Skill Level:
Intermediate
Slot:
2/17, 1:00 PM | Room A406-407
Tags:
Coding Culture

Imagine a culture where the input of the whole organization turns an individual idea into a user story in just a couple of hours, where everybody’s goal is to make the customer’s job easier and more effective, and where you work on projects you love instead of projects you loathe. A great coding culture concentrates on making developers productive and happy by removing unnecessary overhead, bringing autonomous teams together, helping the individual programmer to innovate, and raising awareness among developers about how to create better code.
I will talk about how to establish and foster a strong engineering-focused culture that scales from a small team to a huge organization with hundreds of developers. I’ll give lots of examples from our experience at Atlassian to show that once you’re working in a great coding culture, you won’t want to work anywhere else.

Track:
Agile
Skill Level:
Intermediate
Slot:
2/17, 10:30 AM | Room A406-407
Tags:
Stop Getting Crushed By Business Pressure

This is my story of lessons learned on how to stop the crushing effects of business pressure… I was team lead with full control of our green-field project. After a year, we had continuous delivery, a beautiful clean code base, and worked directly with our customers to design the features. Then our company split in two, we were moved under different management, and I watched my project get crushed.

As a consultant, I saw the same pattern of relentless business pressure everywhere, driving one project after another into the ground. I made it my mission to help the development teams solve this problem. This is my story of lessons learned on how to transform an organization from the bottom up. I’ll show you how to lead the way.

Warning: This strategy won’t work in all organizations. In some cases, management doesn’t want to know the truth. However, in most organizations I’ve worked with, management wants to improve, but doesn’t know how to fix the system.

The crushing business pressure is caused by a broken feedback loop that’s baked into the organization’s design. In this presentation, I’ll show you how to fix the broken feedback loop. Learn how to:

  • Gather evidence of developer productivity loss
  • Identify the key organizational changes required for success
  • Make the case to management for improvement
  • Partner with your manager for long-term success

If the system is broken, we need to fix the system. You can change the system by making the decision to lead.

Note: This talk is not strictly dependent on attending, “Top 5 Reasons Why Improvement Efforts Fail”, but you’ll get way more out of the session, if you attend both.

Track:
Agile
Skill Level:
Intermediate
Slot:
2/17, 2:30 PM | Room A406-407
Kids & Devs: Teaching Tech to Both

When you teach technical topics, each audience poses its own set of challenges. What challenges do children share with professional developers? What challenges are unique to each group? How can teaching kids make you better at teaching professionals?

After running nearly 100 programming education events for kids and being on both sides of developer education and documentation for years, Greg Bulmash is sharing his insights on teaching tech. What should you know about working with kids? What should you know about working with devs? What are the advantages and common gotchas of both groups and how do you leverage those to do better when delivering technical content/training?

Track:
Agile
Skill Level:
Beginner
Slot:
2/16, 4:00 PM | Room A406-407
Spinnaker - Land of 1000 Builds

How do big shops like Netflix make it possible to deploy hundreds if not thousands of releases every single day? FInd out with a tour through the microservice, Spring Boot-based system known as Spinnaker. Spinnaker is the open source continuous integration/continuous deployment tool that supports multiple clouds, multiple languages, and multiple providers. Learn about its sophisticated usage of microservices including: Retrofit-based interfaces, gateway API, decoupled state, and other key patterns.

Track:
User Experience + Tools
Skill Level:
Intermediate
Slot:
2/16, 2:30 PM | Room A313
How to Design A Git Workflow for Any Organization

It’s often hard to figure out the best Git workflow for a given team. The one size fits all advice you often find online is wrong, but few people have hands on experience with enough different workflows to provide balanced advice. Over the last few years I’ve worked with hundreds of companies to figure out the right workflows for their needs.

In this session we’ll start from a simple, clean “GitHub Flow” workflow, showing how, where and when you might need to add release tags, release branches, integration branches and/or fork based workflows. We’ll also look at best practices for cleaning up history (when it makes sense to rebase or rebase -i) and pragmatic approaches to decomposing Git repos using subtrees and submodules.

Track:
User Experience + Tools
Skill Level:
Intermediate
Slot:
2/16, 4:00 PM | Room A313
Tags:
git
Advanced GitHub in Practice

Learn from the experts. GitHub will be presenting advanced Git and GitHub techniques for more complex workflows to enable CI/CD transformations. We will discuss different branching strategies, advanced Git command line usage, Webhook extensions, Extending GitHub through the APIs, using the Deployment APIs, and defining releases.

Track:
User Experience + Tools
Skill Level:
Advanced
Slot:
2/16, 5:30 PM | Room A313
When the Developer Must Design

Any of these happen to you?

  • Tasked to develop a user interface with an incomplete design spec, so had to make guesses such as where to position on-screen elements?

  • Worked on a small team without a full-time designer, and requested to “just put a screen together for a demo”?

  • Been asked to consult with a user interface designer, but don’t know what types of questions to pose?

Nowadays, everyone wants attractive, easy-to-use interfaces, so if you’re more comfortable sifting through Java or C# code than OmniGraffle or Visio mockups, learn about topics that can assist in creating more usable desktop applications, mobile apps, and websites. This talk provides easy-to-implement hints that can improve even a bad or “so-so” user interface. Areas of focus include the need for consistency; “negative space”; location, location, location (it’s crucial in screen real-estate, too!); contrasting colors; and the importance of action verbs.

Track:
User Experience + Tools
Skill Level:
Beginner
Slot:
2/17, 10:30 AM | Room A313
Rise of the Machines - Automate Your Development

When we talk about automation in software development, we immediately think of automated builds and deployments. We may also be using scripts to help make our daily work easier. But this is really just the beginning of the rise of the machines.
I show you how leading developers in our industry are using open source and commercial tools for automating much more. They’ve got “robots” for monitoring production servers, updating issues, supporting customers, reviewing code, setting up laptops, doing development reporting, conducting customer feedback – even automating daily standups. In what instances is it useful to automate? In what cases does it not make sense? Automation prevents us from having to do the same thing twice, helps us to work better together, reduces workflow errors and frees up time to write production code. Plus, as it turns out, spending time on automation is fun! Don’t be afraid of robots in software development, embrace them! Even if I save you just half an hour a week, this talk will be a beneficial investment of your time.

Track:
User Experience + Tools
Skill Level:
Intermediate
Slot:
2/16, 10:30 AM | Room A313
Tags:
Finding your style

Have you ever felt like your designs look just like everything else out there?

Design = technique + art. We apply our own style and our personal visual languages within the context of cultural and industry signifiers. Each product, each project, has a unique identity that can be communicated through design to delight viewers. We’ll talk about style, visual language, and signals; the rules and how to break them; exercises to find your style through sketching and code; and how to work with product teams and clients to discover a project’s unique visual identity.
Suitable for designers and front-end developers of all levels of experience; bring a sketchbook to follow along.

Track:
User Experience + Tools
Skill Level:
Beginner
Slot:
2/17, 4:00 PM | Room A313
Tags:
Jenkins hits 2.0 - what's new?

Over 10 years after version 1.0, Jenkins is finally releasing 2.0! What’s changed? What’s improved? How can Jenkins help you in ways you haven’t previously considered? We’ll go into that and more as we look at the upcoming Jenkins 2.0 release in detail, showing you its major UI improvements, easy construction of code pipelines and where the Jenkins project will be going tomorrow.

Track:
User Experience + Tools
Skill Level:
Beginner
Slot:
2/16, 1:00 PM | Room A313
Mind the Gap: Architecting UIs in the Era of Diverse Devices

Architecting and developing user interfaces used to be relatively easy, pick a server side framework, define a standard monitor resolution and spend your days dealing with browser quirks. But today, the landscape presents us with a plethora of screen sizes and resolutions covering everything from a phone to a tablet to a TV. How does a team embrace this brave new world knowing that the future will introduce even more volatility to the client space?

This talk will walk you through this brave new world. We’ll discuss the deluge of devices the typical application must deal with today as well as looking at the plethora of client side rendering technologies. This isn’t strictly a front end problem though, we need to reconsider how we’ve built our server side solutions as well; modern applications rely on RESTful web services delivering data to a diverse set of clients. The development landscape has changed, this talk will prepare you to face these challenges.

Track:
User Experience + Tools
Skill Level:
Beginner
Slot:
2/17, 2:30 PM | Room A313
Thinking in UI

UI Development is a great confluence of Computer Science and Art. At the core, it is a matter of applying sound Software Engineering principles. However, in the daze of current UI trends, frameworks and libraries, we sometimes get distracted from the core principles.

This talk is about re-orienting ourselves with the core ideas and practices that surround effective UI Development. Not surprisingly, many of these ideas have been embraced by current frameworks and libraries. We will take a step back, peel some of the layers and look at the building blocks of effective UI Engineering. Few things we will touch upon include:

  • Decomposing a Wireframe
  • Thinking in layers
  • Component-Oriented development
  • Optimizing the Single Threaded UI
Track:
User Experience + Tools
Skill Level:
Intermediate
Slot:
2/17, 1:00 PM | Room A313

Questions?

Contact us at [email protected]