Mark Richards

Friday, September 28 - 1:15 PM

Room: Commons 1

The path to migrating to Microservices from a monolithic or service-oriented architecture (or even starting a greenfield application) is riddled with challenges, pitfalls, canyons, demons, and even fire-breathing dragons. I like to call it “The Kings Road”. In this session I will show the migration patterns that allow you to easily fly over this challenging road and ease the pain associated with moving to microservices. I will also show you some automation tools you can use to help analyze your applications to determine how challenging this road will be.

Mark Richards

Friday, September 28 - 3:15 PM

Room: Commons 1

Jorge Santayana is famous for saying “Those who cannot remember the past are condemned to repeat it”. When SOA (Service-Oriented Architecture) was all the craze, everyone got all excited about services, but forgot about the data. This ended in disaster. History repeats itself, and here we are with Microservices, where everyone is all excited about services, but once again, forgets all about the data. In this session I will discuss some of the challenges associated with breaking apart monolithic databases, and then show the techniques for effectively creating data domains and how to split apart a database. I consider the data part of Microservices the hardest aspect of this architecture style. In the end, it's all about the data.

Mark Richards

Friday, September 28 - 5:00 PM

Room: Commons 1

Most of us just assume we will be using REST for microservices. However, there are sometimes issues associated with this assumption. There are several protocols that can be effectively used in addition to REST in microservices to significantly increase performance, robustness, and scalability when communicating to and between services. In this session I will discuss some of the patterns of communication to and between services, including REST, messaging, gRPC, and API Gateways. I will then talk about three key patterns of communication - orchestration, aggregation, and service gateways.

Mark Richards

Saturday, September 29 - 9:00 AM

Room: Commons 1

Have you ever wondered how to do data synchronization between cloud-based services and on-prem databases? Have you ever wondered how to share a single database schema between hundreds (or even thousands) of microservices? Have you ever wondered how to significantly increase the performance of microservices? Have you ever wondered how to version relational database changes when sharing data in a microservices environment? If any of these questions intrigue you, then you should come to this session. In this session I will describe and demonstrate various caching strategies and patterns that you can use in Microservices to significantly increase performance, manage common data in a highly distributed architecture, and even manage data synchronization from cloud-based microservices. I'll describe the differences between a distributed and replicated cache, Using live coding and demos using Hazelcast, I'll demonstrate how to do space-based microservices, leveraging caching to its fullest extent.

Mark Richards

Saturday, September 29 - 11:00 AM

Room: Commons 1

Reactive architecture patterns allow you to build self-monitoring, self-scaling, self-growing, and self-healing systems that can react to both internal and external conditions without human intervention. These kind of systems are known as autonomic systems (our human body is one example). In this session I will show you some of the most common and most powerful reactive patterns you can use to automatically scale systems, grow systems, and self-repair systems, all using the basic language API and simple messaging. Through code samples in Java and actual run-time demonstrations, I'll show you how the patterns work and also show you sample implementations. Get ready for the future of software architecture - that you can start implementing on Monday.

Mark Richards

Friday, September 28 - 7:15 PM

It seems like all we talk about these days is making our architectures more modular. However, several questions emerge when moving towards a level of architectural modularity. What are the benefits? Why should you care? How far should you take architectural modularity? Should you use service-based architecture or move all the way to microservices? What is the best approach for moving to microservices? In this keynote I'll address all of these questions so that you'll fully understand the rationale for this important trend and also understand a solid approach for moving to microservices.

It seems like all we talk about these days is making our architectures more modular. However, several questions emerge when moving towards a level of architectural modularity. What are the benefits? Why should you care? How far should you take architectural modularity? Should you use service-based architecture or move all the way to microservices? What is the best approach for moving to microservices? In this keynote I'll address all of these questions so that you'll fully understand the rationale for this important trend and also understand a solid approach for moving to microservices.

Venkat Subramaniam

Founder of Agile Developer, Inc.

Friday, September 28 - 1:15 PM

Room: WAYLAND

Everyone (including your humble speaker) talks about Modularization. For once, let's focus on other interesting and exciting parts of Java 9 that does not involve modularization. In this presentation we will talk about key improvements and additions to the Java language and the JDK introduced in Java 9.

We will focus on first things that can be done better in Java 9 compared to previous versions on Java.
Then we will look at things we simply could not do before but we can benefit from now.
And finally, we will not talk about Modularization, well I lied, will discuss that just a bit.

Venkat Subramaniam

Founder of Agile Developer, Inc.

Friday, September 28 - 3:15 PM

Room: WAYLAND

Reactive Programming is no longer an esoteric idea. Many libraries and tools have started providing excellent support for this idea of programming. So much that Java 9 has embraced this idea by including it into the specification. In this presentation we will take a dive into what reactive programming looks like from the Java specification point of view.

Reactive Programming
What problem does it solve
How to use it from Java point of view?
What can you do to make good use of it.

Venkat Subramaniam

Founder of Agile Developer, Inc.

Friday, September 28 - 5:00 PM

Room: WAYLAND

After years of stagnation, Java is one of the most vibrant languages of current times. Java 8 saw several improvements and Java 9 a few more. Well, that's only the beginning. Come to this talk to learn about where Java is heading, what's brewing in the language and the ecosystem, well beyond Java 9.

We will look ahead into the next versions of Java, what you can expect, and how you can get ready.

Matt Stine

Global CTO - Software Architecture at Pivotal

Friday, September 28 - 1:15 PM

Room: MIDDLESEX

On the 2017 tour, I introduced the notion of “serverless” and Functions as a Service (FaaS) platforms. We understood the motivation for serverless computing, compared serverless to other cloud-native infrastructure approaches, navigated some architectural tradeoffs, and took a whirlwind tour of the Big 3 FaaS providers.

In this 2018 edition of the talk, we’ll still cover a few of the same themes to bring new folks up to speed, but we’ll also look at what’s changed in this ecosystem over the past year, take a look at new or enhanced features, offerings, runtimes, and programming models, and examine what use cases are becoming popular for serverless computing. We’ll also look at how tradeoffs have evolved, and definitely throw in a few demos.

Matt Stine

Global CTO - Software Architecture at Pivotal

Saturday, September 29 - 11:00 AM

Room: MIDDLESEX

Chaos Engineering, pioneered by Netflix, is the discipline of experimenting on a distributed system in order to build confidence in the system's capability to withstand turbulent conditions in production.

In this presentation, we'll take a look at the problem of building resilient software, and discuss how applying Google's SRE principles and patterns for architectural resiliency can help us to solve it. We'll then examine how the practice of Chaos Engineering can help us to prove or disprove the resiliency of our systems.

Matt Stine

Global CTO - Software Architecture at Pivotal

Saturday, September 29 - 9:00 AM

Room: MIDDLESEX

All software architectures have to deal with stress. It’s simply the way the world works! Stressors come from multiple directions, including changes in the marketplace, business models, and customer demand, as well as infrastructure failures, improper or unexpected inputs, and bugs. As software architects, one of our jobs is to create solutions that meet both business and quality requirements while appropriately handling stress.

We typically approach stressors by trying to create solutions that are robust. Robust systems can continue functioning properly in the presence of internal and external challenges, but they also have one or more breaking points. When we pass a robust systems known threshold for a particular type of stress, it will fail. When a system encounters an “unknown unknown” challenge, it will usually not be robust!

Recent years have seen new approaches, including resilient, antifragile, and evolutionary architectures. All of these approaches emphasize the notion of adapting to changing conditions in order to not only survive stress but sometimes to benefit from it. In this class, we’ll examine together the theory and practice behind these architectural approaches.

Matt Stine

Global CTO - Software Architecture at Pivotal

Friday, September 28 - 5:00 PM

Room: MIDDLESEX

As an architectural style, microservices are here to stay. They have crossed the proverbial chasm, and now it’s time to get to work. Microservices provide us with the ability to create truly evolutionary architectures composed of cohesive and autonomous components using well known and characterized distributed systems patterns.
As we create and compose components across the hard boundary of the network, we become deeply interested in establishing the correct boundaries and has resulted in renewed interest in system design and decomposition. Fortunately, the tried and true practices of Domain-Driven Design are available to us.

In this presentation, we will cover a distillation of strategic (bounded contexts, subdomains, context mapping) and tactical (aggregates, domain events) DDD techniques and demonstrate how they enable us to create effective event-driven microservices.

Jonathan Johnson

Software Architect

Saturday, September 29 - 1:30 PM

Room: Commons 1

So you have some code and it is in a bounded context with a REST API. You are on your way to Microservices. Next you wrap it in a container and now it is an image that others can run. Simple. Now what? No service is an island. Your service needs to log information, needs to scale and load balance between its clones. Your service needs environment and metadata way outside its context. What about where the service will run? Who starts it? What monitors its health? What about antifragility? Updates? Networking? Oh my.

Services live in clusters and clusters live in data centers. Many concepts overlap with the features of cloud management. But don't get too flustered since, fundamentally, services are managed by clusters. There are several approaches to cluster management such as Docker Swarm, Mesos with Marathon and Kubernetes.

Minikube with Kubernetes is an approachable technique to set up a local cluster that is easy to understand and get started. Whether you have a simple service or a Web application with a set of services, you can develop much of it on Kubernetes with Minikube. We will run some practical examples. Once you understand the mechanics of the tools, we will explore how it works, sort through the terminology and share ideas about practical uses for this technology.

Afterward, you will understand how to run your personal cluster with your Linux, OS X or Windows laptop to further enjoy unraveling the mysteries of running applications in a cluster.

Jonathan Johnson

Software Architect

Saturday, September 29 - 3:15 PM

Room: Commons 1

Prerequisite: If you are unfamiliar with Kubernetes be sure to attend: Understanding Kubernetes: Fundamentals

Aha moments with apps in containers can be quite liberating. The mobile space is saturated with “there's an app for that”. For us, we now expect “there's a container for that”. “Write once, run anywhere” (WORA) has changed to “Package once, run anywhere” (PORA). As the community of containers and flavors is riding up the hype curve we will look at some of those top aha moments together.

The epiphanies are in the simplicity. Leveraging namespaces and using cgroups, these apps share a common kernel without polluting the host OS. This eliminates installation, conflicts and uninstalls. The barriers to getting something running are decreased and normalized to a container run command. This is subtly powerful and liberating. With this simplicity comes complexity such as shared resources, file systems, mounts, networking and overall cluster management.

As an example we will peruse the heart of this, the Dockerfile. See how containers can be stacked on top of base images. We will explore the syntax, optimization, tips, best practices and some tricky points such as the difference between CMD and Entrypoint.

Your software package delivery and installation is no longer an rpm, deb, dmg, jar, war, native executable or a run script, it is simply an image that has a common run container command. Liberating.

Lastly we will explore how containers can help and hurt your team if you are not careful. What goes into a container is a reflection of a team's skills. Should a team make each tech stack different, or should you standardize? External processes affect your tech stack choices inside your container such as static code analysis, code beautifiers, CI/CD, tracing, logging and monitoring. Exercise caution as standardization and frameworks can lead to coupling. Your tech stack details can change from version to version so get your SemVer and API versioning right. Finally, containers can be a vehicle to introduce new technologies to those that are conservative and risk avoiders.

The end of the presentation will explore containers driven from this source.

Jonathan Johnson

Software Architect

Sunday, September 30 - 9:00 AM

Room: Commons 1

Prerequisite: If you are unfamiliar with Kubernetes be sure to attend: Understanding Kubernetes: Fundamentals.

Highly cohesive and loosely coupled business functions can have a great impact on your agility to deliver new features. Microservices in containers is an effective implementation detail for continuous delivery. However, before you bite into that big sandwich, consider how provisioning a variety of data flavors as containerized endpoints could greatly improve your internal testing.

How many times have you heard a colleague say, “Well that feature does not have integration tests because it requires a database with some specialized data”? Balderdash - put your data flavors in containers!

Let's explore a solution to create a pipeline of data flavors. We use Docker images, Kubernetes Pods, Minikube to provision these endpoints. See how a Gradle project drives integration tests against these Pod endpoints, all ready for your continuous integration pipeline. In the end you can see the power of Consumer Driven Contracts against your dataset flavors.

Watch how your team becomes empowered to create their own dataset flavors in containers for development and testing. See a wall to integration testing come down.

We will explore a GitHub Gradle-based project that includes:

a RESTful Java microservice that accesses a database,

subprojects that produce Docker images of database flavors,

a subproject using TestNG to run Consumer-driven contract tests (Pact) against the database flavored endpoints.

Jonathan Johnson

Software Architect

Sunday, September 30 - 11:00 AM

Room: Commons 1

This is the droid you are looking for. The term “static code analysis” is a seemingly boring term for tools that harden your product and advance your team's engineering prowess. Within this droid are hundreds of rules designed to review your code for defects, hotspots and security weaknesses. Consider the resulting analysis as humble feedback from a personal advisor. The rules come from your community of peers, all designed to save your butt.

We will explore techniques on how to add these checks to your IDE, your build scripts and your build pipelines.

Discover how prerequisite checks made before your commits can help cut down on the chatter in your pull requests. See how the analysis teaches best practices, without ego or criticism, to a spectrum of developers. As a leader see how to develop an effective code quality intern program around this technique. We will see techniques on how Kubernetes is an effective way to obtain reports and dashboards right on your local machine and from your continuous integration pipeline.

Some practical uses of Kubernetes, Helm charts and SonarQube will be discovered in parallel to this topic.

Jonathan Johnson

Software Architect

Sunday, September 30 - 2:15 PM

Room: Commons 1

Prerequisite: If you are unfamiliar with Kubernetes be sure to attend: Understanding Kubernetes: Fundamentals

From operating system on bare metal, to virtual machines on hypervisors, to containers orchestration platforms. How we run our code and bundle our applications continues to evolve. Serverless computing continuous our evolutionary path for our architectures..

See how Kubernetes provides a vendor agnostic solution for serverless computing using the Kubeless project.

Serverless promises to developers that they can worry less about the cluster and focus more on their logic. Based on your Kubernetes knowledge we will discover how two open source serverless frameworks, Kubeless and OpenFaaS, leverage Kubernetes. The recent addition of Knative is shaking things up. We will explore what Knative is bringing to the table and how the serverless landscape is evolving.

Jonathan Johnson

Software Architect

Sunday, September 30 - 4:00 PM

Room: Commons 1

Prerequisite: If you are unfamiliar with Kubernetes be sure to attend: Understanding Kubernetes: Fundamentals

Kubernetes is a powerful platform for running containers and distributing computation workloads across resources. This makes Kubernetes an ideal platform for continuous integration. If you have been wanting to understand the power of container management this presentation can help you get started.

See how Kubernetes provides a cloud agnostic solution for running containers. Follow this with running Jenkins in a container and leveraging the Kubernetes plug-in for Jenkins. Jenkins has the notion of Masters and Agents. Kubernetes defines terms for Masters and Workers. We will discover how Kubernetes is an ideal platform for running Jenkins Agents on Kubernetes Workers.

Venkat Subramaniam

Founder of Agile Developer, Inc.

Design patterns are common place in OO programming. With the introduction of lambda expressions in languages like Java, one has to wonder about their influence on design patterns.

In this presentation we will take up some of the common design patterns and rework them using lambda expressions. We will also explore some other patterns that are not so common, but are quite useful ways to apply lambdas.

Venkat Subramaniam

Founder of Agile Developer, Inc.

Sunday, September 30 - 11:00 AM

Room: CARLISLE

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.

Brian Sletten

Forward Leaning Software Engineer

Sunday, September 30 - 9:00 AM

Room: WAYLAND

Machine Learning is a huge, deep field. Come get a head start on how you can learn about how machines learn.

This talk will be an overview of the Machine Learning field. We’ll cover the various tools and techniques that are available to you to solve complex, data-driven problems. We’ll walk through the algorithms and apply them to some real but accessible problems so you can see them at work.

Brian Sletten

Forward Leaning Software Engineer

Sunday, September 30 - 11:00 AM

Room: WAYLAND

Documents contain a lot of information. We'll introduce you to a variety of techniques to extract them.

Machine Learning techniques are useful for analyzing numeric data, but they can also be useful for classifying text, extracting content and more. We will discuss a variety of open source tools for extracting the content, identifying elements and structure and analyzing the text can be used in distributed, microservice-friendly ways.

Brian Sletten

Forward Leaning Software Engineer

Sunday, September 30 - 2:15 PM

Room: CARLISLE

What happens if web applications got really fast?

We are increasingly able to do more in the browser because of faster networks, optimized JavaScript engines, new standard APIs and more. There is a new initiative to allow a binary format called WebAssembly that will provide a compiled, cross-platform representation that will take us to the next level. Complex business applications and 3D video games will alike will benefit from this new standard. Come hear about what it can do for you.

Craig Walls

Author of Spring in Action

Saturday, September 29 - 1:30 PM

Room: MIDDLESEX

In this example-driven presentation, you'll learn how to leverage Spring Boot to accelerate application development, enabling you to focus coding on logic that drives application requirements with little concern for code that satisfies Spring's needs.

For over a decade, Spring has sought to make enterprise Java development easier. It began by offering a lighter alternative to EJBs, but continued to to address things such as security, working with various sorts of databases, cloud-native applications, and reactive programming. And, along the way, Spring even took steps to make itself easier to use, offering Java-based and automatic component configuration. Even so, there's still a lot of near-boilerplate code required to develop Spring applications.

Enter Spring Boot. Spring Boot's primary purpose is to make Spring easier to work with. It achieves this in three ways:

Automatic configuration : Considering what's on the runtime classpath as well as other factors, Spring Boot can automatically configure components in a Spring application context.

Simplified dependency management : Taking advantage of transitive dependency resolution at build-time, Spring Boot offers several “starter” dependencies, focused on specific characteristics of an application, that transitively bring in libraries to enable development of those characteristics.

Craig Walls

Author of Spring in Action

Saturday, September 29 - 3:15 PM

Room: MIDDLESEX

In this session, you'll learn how to take your Spring Boot skills to the next level, applying the latest features of Spring Boot. Topics may include Spring Boot DevTools, configuration properties and profiles, customizing the Actuator, and crafting your own starters and auto-configuration.

Craig Walls

Author of Spring in Action

Sunday, September 30 - 9:00 AM

Room: MIDDLESEX

In this session, you'll learn how to use Spring Data to rapidly develop repositories for a variety of database types, including relational (JPA and JDBC), document (Mongo), graph (Neo4j), and others (Redis, Cassandra, CouchBase, etc).

For decades, relational databases and SQL have enjoyed their position as the leading choice for data persistence. Even though many alternative database types have emerged in recent years, the relational database is still a top choice for a general purposes data store and will not likely be usurped from its position any time soon. When it comes to working with relational data, Java developers have several options.

But relational databases are not a one-size-fits-all solution. Thankfully, there are many options for data persistence, including relational, document, graph, key-value, and column-store databases, each presenting their unique way of handling data suitable for different problems.

Spring Data makes it easy to work with various databases by offering a programming model that is consistent, regardless of which type of database you're working with. And regardless of the database you're dealing with, you will find that Spring Data eliminates a lot of boilerplate code.

Craig Walls

Author of Spring in Action

Sunday, September 30 - 11:00 AM

Room: MIDDLESEX

In this session, you'll see how to take Spring Data's automatic repository generation to a whole new level. We'll look at ways to model data and manipulate Spring Data to produce repositories and APIs that are more than just CRUD layers on top of a database.

Craig Walls

Author of Spring in Action

Sunday, September 30 - 2:15 PM

Room: MIDDLESEX

In this session, we'll explore the new reactive features in Spring 5 to build reactive, non-blocking applications using Spring's familiar programming model.

Traditionally, applications have been built using a blocking, synchronous model. Although comfortable and intuitive for most programmers, this model doesn't scale well. And although there are several new approaches to reactive programming, they don't necessarily fit into the familiar programming model that Spring developers are accustomed to working with.

Spring 5 has introduced a set of new reactive features, enabling non-blocking, asynchronous code that scales well using minimal threads. Moreover, it builds on the same concepts and programming models that Spring developers have used for years.

Craig Walls

Author of Spring in Action

Sunday, September 30 - 4:00 PM

Room: MIDDLESEX

As a software developer, you've likely come across at least one veteran in our field who has shared tales of the old days when they used punch cards to give instructions to a computer. Thankfully, those days are long gone. Over time, the way we interact with machines has evolved through various stages such as textual, graphical, and touch/gestural user interfaces…up to today where Siri, Alexa, and Google Home are ushering in a new era of voice user interfaces.

In this session, we'll focus on Alexa, the voice assistant present in Amazon's line of Echo devices. We'll explore the Alexa Skills Kit (ASK) and see how to construct voice UIs (known as “skills”) to do our bidding. We'll see how to back those skills using Spring, including Spring MVC and Spring Cloud Function. And maybe, one day, we'll tell future generations about how we once had to actually touch computers.

Daniel Hinojosa

Independent Consultant/Developer

Sunday, September 30 - 2:15 PM

Room: WAYLAND

Kafka has captured mindshare in the data records streaming market, and in this presentation, we knock on its door and see what lies behind. What is the draw? What makes it an attractive addition? How does it compare to Message Queues and other message streaming services?

We will do a thorough introduction into what is Kafka. We will also discuss Consumers, Producers, Streams, and Connectors. Integration with ZooKeeper, and discuss the performance aspect of using Kafka.

Daniel Hinojosa

Independent Consultant/Developer

Sunday, September 30 - 9:00 AM

Room: CONCORD

Apache Spark is the fast data processing of large document stores and databases. Spark is highly distributed, optimized, and redundant for large clustering manipulation and aggregation.

This talk is an introduction to Apache Spark, it's architecture, and it's programming API. We start with an introduction to DataFrames, the Catalyst Optimizer, and Spark SQL. We will then venture onto DataSets, discuss the DataSet API and the functional programming aspects of it. We will touch lightly on RDD and the pros and cons of using the API. We will then finish with how to connect to data sources like HDFS, S3, Cassandra, Elastic Search, and Kafka. This presentation will have samples that you can try out at home or at the office.

Daniel Hinojosa

Independent Consultant/Developer

Sunday, September 30 - 11:00 AM

Room: CONCORD

Spark Streaming is one of the few additions that are available with Spark that uses its internal architecture and creates a Streaming processing framework to process data in real time.

In this presentation, we will start with a small reintroduction to Spark and it's architecture and what it does. Then we delve into streaming, what purpose does it serve, how to set up Spark Streaming and how to use it. We will discuss how to set it with time, how the internals work, and how also to integrate it with Kafka. We then will talk about some of the more high-end features like checkpointing, and windowing.

Michael Carducci

Magician, CTO Mago:Tech

Friday, September 28 - 3:15 PM

Room: CONCORD

In Part 1, you learned the core principles of influence and persuasion. How to we take this back to the office and apply what we've learned?

We dive deep in to specific strategies to get both the team and the business on board with your ideas and solutions. We cover several real-world patterns you can follow to be more effective and more persuasive. Part 1 was conceptual, part 2 is practical.

Michael Carducci

Magician, CTO Mago:Tech

Friday, September 28 - 1:15 PM

Room: CONCORD

By the end of this conference you will have learned many new tools and technologies. The easy part is done, now for the hard part: getting the rest of the team-and management-on board with the new ideas. Easier said than done.

Whether you want to effect culture change in your organization, lead the transition toward a new technology, or are simply asking for better tools; you must first understand that having a “good idea” is just the beginning. How can you dramatically increase your odds of success?

You will learn 12 concrete strategies to build consensus within your team as well as 6 technique to dramatically increase the odds that the other person will say “Yes” to your requests.

As a professional mentalist, Michael has been a student of psychology, human behavior and the principles of influence for nearly two decades. There are universal principles of influence that neccessary to both understand and leverage if you want to be more effective leader of change in your organization.

In this session we discuss strategies for getting your team on board as well as when/how to approach management within the department and also higher-up in the organization.

Daniel Hinojosa

Independent Consultant/Developer

Sunday, September 30 - 4:00 PM

Room: WAYLAND

For those still grappling with Generics? This will be an attempt to clear the air about generics. What are wildcards? What is extends? What is super? What is covariance? What is contravariance? What is invariance? What is erasure? Why and when do I need this?

One of the more pain items in any statically typed language on the JVM is generics or parameterized type. This presentation is set to overcome some of these hurdles and understand some of these terms that often vex us. We will cover:

Kenneth Kousen

President, Kousen IT, Inc.

Friday, September 28 - 1:15 PM

Room: CARLISLE

Gradle is the build tool of choice in the open source world, and rapidly becoming the standard in industry as well. Anyone who works with Gradle on a Java project knows the basics of the Java plugin and how to write simple tasks in Groovy. Gradle can do much more, however. This talk will demonstrate how to write your own custom task classes and how to create Gradle plugins from them. Other Gradle features will be demonstrated as well, including file manipulation, incremental builds, generating the Grade wrapper, and resolving conflicts in dependencies.

Gradle Inc also provides a free build scan capability to analyze build files. This too will be demonstrated, as well as profiling your build, determining dependencies, and more.

Kenneth Kousen

President, Kousen IT, Inc.

Saturday, September 29 - 9:00 AM

Room: CARLISLE

Kotlin is a practical language designed for the JVM. It focuses on pragmatism and safety, with an emphasis on interoperability and tool support. Kotlin is statically typed and includes null checks in the type system itself. The language runs anywhere Java does, from microservices to Android apps. This workshop will show how to use Kotlin to simplify anything you originally planned to do in Java.

Kotlin combines object-oriented programming with functional features like lambda expressions, functional types, and data classes. Since it comes from JetBrains, the company that produces the IntelliJ IDEA development environment, it's tool support is excellent. IntelliJ even provides a Java-to-Kotlin converter to help you get started.

This presentation will cover the basic types, defining and calling functions, programming with lambdas, higher order functions, and DSLs. The goal is to give you enough background to be productive while you continue to learn and grow with the language.

Kenneth Kousen

President, Kousen IT, Inc.

Saturday, September 29 - 1:30 PM

Room: CONCORD

Good discussions are supposed to diverge from their intended path. Free association is a feature, not a bug, and helps you see new connections between ideas. Without structure, however, it can be difficult to add context to new ideas and understand how they relate to more immediate problems. This talk discusses the technique of mental bookmarks – how to remember where you were when a discussion diverged. In addition to giving you a reputation for having an amazing memory, the skill also helps with personal awareness in general.

To give the technique context, we'll look at the fractal nature of success – the way we tend to see our current environment in relative terms, always comparing ourselves to those slightly more successful and slightly less successful.

Brian Sletten

Forward Leaning Software Engineer

Sunday, September 30 - 4:00 PM

Room: CARLISLE

While the Web itself has strong decentralized aspects to how it is used, the backend technologies are largely centralized. The naming systems, the routing systems and the traffic that all points back to the same place for a website are all centralized technologies. This creates both a liability as well as a control point.

In order to break free of some of these limitations, new technologies are emerging to provide a more decentralized approach to the Web.

This talk will walk you through some emerging technology to provide decentralized content storage and distribution, edge computing and more. We will touch upon the Interplanetary Filesystem, WebTorrent, Blockchain spin offs and more.

Johanna Rothman

Speaker, Consultant, Author for managing product development

Saturday, September 29 - 9:00 AM

Room: CONCORD

Many agile teams (and programs) attempt to plan for an entire quarter at a time. Something changes—a better product opportunity, or a product development problem—and the quarter’s plan is not just at risk. That plan is now impossible. Instead of quarterly planning, consider continual planning. Continual planning allows a project or a program to use small deliverables to plan for the near future and replan often to deliver the most value.

About roadmaps and what they are supposed to show us

Problems with Big Planning

Rolling wave planning at any wavelength

When things change and what happens to the roadmap

How Minimum Viable Experiments and Minimum Viable Products help and the difference between them.

Three options for alternate planning, including lean roadmapping

Problems big planning masks and how to use smaller planning to everyone's benefit

Kenneth Kousen

President, Kousen IT, Inc.

Technical people value expertise above all, but the ability to communicate with others in your organization is a big key to success. This talk will present helpful techniques, like reflective listening and the Myers-Briggs Type Indicator, that enable you to quickly decide how to lead your manager where you need him or her to go.

We'll look at both written and oral communication methods, how to talk to supervisors as well as subordinates, and more.

Nathaniel Schutta

Architect as a Service

Back in the day, it used to be so simple. Our projects had a main.js file that contained a few hundred lines and every so often the corporate communication department would ship out some new CSS files. But now things are not quite so easy. With more and more single page apps containing thousands or hundreds of thousands of lines of JavaScript, we're going to need a bigger boat.

In this talk I will explore various options you can deploy on your projects to tame the mass of code that lives on the front end of our applications. From NPM to Gulp to Webpack, this talk will help you establish a front end pipeline.

Nathaniel Schutta

Architect as a Service

By now I bet your company has hundreds, maybe thousands of services, heck you might even consider some of them micro is stature! And while many organizations have plowed headlong down this particular architectural path, your spidey sense might be tingling…how do we keep this ecosystem healthy?

In this talk, I will go beyond the buzzwords into the nitty gritty of actually succeeding with a service based architecture. We will cover the principles and practices that will make sure your systems are stable and resilient while allowing you to get a decent night's sleep!

Nathaniel Schutta

Architect as a Service

Friday, September 28 - 5:00 PM

Room: CONCORD

If you’ve spent any amount of time in the software field, you’ve undoubtably found yourself in a (potentially heated) discussion about the merits of one technology, language or framework versus another. And while you may have enjoyed the technical debate, as software professionals, we owe it to our customers (as well as our future selves) to make good decisions when it comes to picking one technology over another.

In this talk, I will explore what criteria we should consider when comparing technologies, how we can avoid burning platforms as well as what to do when we’ve reached a dead end. We will also apply these techniques to a current technology or two.

Nathaniel Schutta

Architect as a Service

Saturday, September 29 - 1:30 PM

Room: CARLISLE

Let me guess - your company is all in on “the Cloud” but no one can really agree what that means. You’ve got one group Dockering all the things while another group just rearchitected the Wombat system as a set of functions…as a service. It is enough to make a busy developer’s head spin - how do we make sense of all the options we have? I hate to burst your bubble, but there are no silver bullets, just a set of tools that we can leverage to solve problems. And just as a master carpenter knows when to use their favorite framing hammer and when they need to reach for the finish hammer, we need to use the right tool at the right time to solve our problems.

In this talk we will survey the various options today’s application teams have at their disposal looking at the consequences of various approaches. We will clear up the buzzword bingo to give you a solid foundation in various cloud computing approaches. Most importantly, we will discuss why the right answer will almost always be: and not or.

Rafael Benevides

Director of Developer Experience at Red Hat

This workshop prepares web and application developers to build applications using Containers, Kubernetes, and OpenShift. We’ll start with a short introduction to containers and Kubernetes, which are the foundation of OpenShift.

Using hands-on exercises, we will walk you through tasty menu of applications and uses cases for OpenShift. How about showing you how easy it can be to deploy your pre-built containers? Maybe showing how health checks so OpenShift can heal your application. Let’s dig in to build containers by just giving a git repository. Want to see easy application scaling - no problem! Wish you could do A/B deployment - your wish is our command. Finally we will show you a complete microservice application with DB and polyglot backed services. You bring your curiosity and willingness to code and we will teach all you need to go home and start building pure awesomeness on OpenShift.

Kenneth Kousen

President, Kousen IT, Inc.

Friday, September 28 - 3:15 PM

Room: CARLISLE

JUnit 5 is a complete refactoring of the most well-known tool in all of testing, and the developers have done a remarkable job. The new JUnit 5 version is full of new features, updated semantics, and usability improvements. This talk will demonstrate all the new features, as well as some of the experimental ones in the pipeline.

JUnit has been remarkably stable over the years and is one of the most widely adopted frameworks in the Java world. The latest version, JUnit 5, takes JUnit to the next level. Full of new features like conditional test execution, parametric testing, labeling and filtering tests, and more, it brings all the modern thinking on testing into the JUnit world. It also takes advantage of the functional features added to Java since version 8 to create a powerful, new library for testing your code. This talk will show you how to adopt JUnit 5's new features while maintaining backward compatibility.

Michael Carducci

Magician, CTO Mago:Tech

Sunday, September 30 - 2:15 PM

Room: CONCORD

Vue is a new, progressive front end framework. At first glance, Vue might look like Yet Another Javascript Framework, it's time to take a look.

It is designed from the ground up to be incrementally adoptable, and can easily scale between a library and a framework depending on different use cases. It consists of an approachable core library that focuses on the view layer only, and an ecosystem of supporting libraries that helps you tackle complexity in large Single-Page Applications.

In this session we'll start with a look at how VueJS stacks up against the competition. We will explore VueJs from incremental adoption to building a full SPA. We'll the core concepts and capabilities and take a look at the growing ecosystem around it.

Venkat Subramaniam

Founder of Agile Developer, Inc.

Saturday, September 29 - 9:00 AM

Room: WAYLAND

JavaScript is no longer that scary nasty language. There are so many wonderful features in the modern versions of this language that I can't stop praising it. In this presentation we will focus on some of the most exciting features of the language that make programming in JavaScript a pleasant experience.

We will dive into beautiful parts and features from ES 6, ES 7, and ES 8.

Venkat Subramaniam

Founder of Agile Developer, Inc.

Java 10 has local variable type inference, but type inference is not really new in Java. Is type inference good or it is it bad. Are there challenges to use them? When is a good time to use type inference? What are some of the limitations to using it. This presentation includes the details of Java 10 type inference, but certainly will not limit to it. We will step back and discuss type inference from the programmer point of view and work thought the benefits and caveats.

At the end of this presentation you will be able to decide when to use it and where to avoid it.

Venkat Subramaniam

Founder of Agile Developer, Inc.

JavaScript is one of the most powerful and yet perilous languages. It is arguably the most ubiquitous language, the king of the client side programming the web. The dynamic nature of the language offers many benefits, but the weak typing and lack of tooling can make changes unpredictable, that is, if we're not careful. Automated testing can greatly alleviate the pains and lead to more fruitful development.

In this presentation we will take look at the tools, but also the approach to automate the tests for JavaScript code. We will start with simple cases at first, but quickly dive into dealing with dependencies, and measuring code coverage.

Johanna Rothman

Speaker, Consultant, Author for managing product development

Saturday, September 29 - 11:00 AM

Room: CONCORD

Many agile teams collaborate with a Product Owner, or maybe a customer. But how many team members collaborate as a team? Too few. Why? Because the reward system reinforces resource efficiency, not flow efficiency.

Focusing on flow efficiency frees the team to collaborate and deliver—as a team. Flow efficiency helps the organization focus on throughput—the outcome—rather than busyness—the output.

Learn to see the signs of resource efficiency and flow efficiency. Learn what to measure and when to measure it. And, learn how too-common metrics, such as velocity and burndown might actually contribute to resource efficiency thinking instead of flow efficiency thinking and actions.

Learn the difference between resource efficiency and flow efficiency. What the words mean.

How people work (and don't work) in flow efficiency.

How to answer the first important question: will the work take longer?

What does accountability and performance management mean in flow efficiency? (How do you get raises?)

How you might move from experts and resource efficiency to team-based learning and delivery. (And, not freak everyone out.)

Michael Carducci

Magician, CTO Mago:Tech

Saturday, September 29 - 3:15 PM

Room: CONCORD

On the NFJS tour, there are questions that seem to come up again and again. One common example is “How do we determine which new tools and technologies we should focus our energy on learning?” another is “How do we stop management from forcing us to cut corners on every release so we can create better and more maintainable code?” which, after awhile becomes “How can we best convince management we need to rewrite the business application?”

There is a single meta-answer to all these questions and many others.

It begins with the understanding that what we as engineers value, and what the business values are often very different (even if the ultimate goals are the same) By being able to understand these different perspectives it's possible to begin to frame our arguments around the needs and the wants of the business. This alone will make any engineer significantly more effective.

This session picks up from where “Stop writing code and start solving problems” stops discussing what is value, how do we align the values of the business with the needs and values of the engineer.

Michael Carducci

Magician, CTO Mago:Tech

Sunday, September 30 - 4:00 PM

Room: CONCORD

Since vue componets are just javascript, html and css; the core concepts can be picked up very quickly. Once you move beyond simple components things can get a little complicated. This session covers application architecture best practices and building complex, stateful apps leveraging Vuex.

Vue prides itself as not being “opinionated” which gives developers some flexibility, but what are the app architecture best practices? What if component A should update component B? Resist the urge to hack together communication channels, it's time to start manging state with the official state management library, vuex. Vuex is a state management pattern + library for Vue.js applications. It serves as a centralized store for all the components in an application, with rules ensuring that the state can only be mutated in a predictable fashion. It also integrates with Vue's official devtools extension to provide advanced features such as zero-config time-travel debugging and state snapshot export / import.

Venkat Subramaniam

Founder of Agile Developer, Inc.

Saturday, September 29 - 11:00 AM

Room: WAYLAND

JavaScript is a very powerful and ubiquitous language. At the same time, it is also a language that is often misunderstood and misused. Better quality code greatly reduces the effort and time to maintain software. So, there is a good incentive to improve quality of code.

In this presentation we will cover two things. We will discuss dos and don'ts for programming with JavaScript. Then we will look at a set of tools that can help keep an eye on our code and prompt us to improve the quality.

Venkat Subramaniam

Founder of Agile Developer, Inc.

Sunday, September 30 - 9:00 AM

Room: CARLISLE

Reactive programming is no longer a fancy idea. It is not only gaining popularity and acceptance, it is being widely adopted in almost every level of software architecture.

In this presentation we will spend a short time reviewing what reactive programming is, the core characteristics, and then dive into different parts of a typical enterprise application and see how reactive programming is serving to improve the performance and scale.

Michael Carducci

Magician, CTO Mago:Tech

The lean startup is changing the way companies are built and new products are launched. In this session we dive into the concepts and ideas as well as strategies to incorporate into your own organization.

Christina Kayastha

Professional JS Nerd

Saturday, September 29 - 11:00 AM

Room: CARLISLE

I believe that the best way to learn is by doing, so in this talk we will put it all together by building an application in Angular v6 from scratch. We will use the cli, router, material design, firebase, redux and pwa to build a fun realtime multiplayer game while demonstrating the Angular ecosystem.

Christina Kayastha

Professional JS Nerd

Friday, September 28 - 5:00 PM

Room: CARLISLE

Everyday our Web is growing more and more powerful. Progressive Web Apps bring the mobile web to a whole new level making it possible for the mobile web to compete with native applications.

In this talk I will give an introduction Progressive Web Apps. We will talk about Service Workers the webapp manifest etc. I'll also share how you can easily add PWAS to your Angular and React applications.

Nathaniel Schutta

Architect as a Service

Saturday, September 29 - 3:15 PM

Room: CARLISLE

Development teams often focus on getting code to production losing site of what comes after the design and build phase. But we must consider the full life cycle of our systems from inception to deployment through to sunset, a discipline many companies refer to as site reliability engineering.

While your organization may or may not have an SRE team, you have someone playing that role and we can all benefit from looking at the principles and practices that we can bring to bear on our projects. In this talk, I will introduce the concepts of SRE and how you can adopt these ideas on your applications.

Submit Evaluation

{{presentation.title}}

{{presentation.speakerNames}}

We value your feedback! Please rate this session for the following categories.