You are viewing details from a past event. Please check our upcoming event schedule if you are looking for current content.

Full-Day Workshops

Attending full-day workshops is optional and requires a workshop ticket ( $425 ). Half-day workshops are open to all conference attendees.

Christopher Judd

Christopher Judd

CTO of Manifest Solutions

Docker for Devs Workshop

Docker and containers are getting a lot of attention these days but what do they mean for devs? How do they fit into DevOps and continuous delivery movements? Where do these tools fit into cloud computing? During this hands-on session we will learn how to install and configure Docker, build images and run containers in a local development environment. But we will also explore using them in a continuous deployment environment by deploying them to on premise as well as cloud services such as AWS.

  • Setting Up Docker
  • Creating Docker Machines
  • Docker Lifecycle
  • Finding & Running Containers
  • Creating Images
  • Linking Containers
  • Sharing Images
  • Composing
  • Using the Docker API
  • Private Repositories
  • Swarm
  • Kubernetes
  • Cloud (Digital Ocean, AWS)
  • Summary
  • Resources
View Workshop Requirements »
Mark Richards

Mark Richards

Independent Software Architect, Author of Fundamentals of Software Architecture

Microservices Architecture and Design

Microservices is one of the latest software architecture styles that promises to deliver benefits such as ease of testing, fast and easy deployments, fine-grained scalability, architectural modularity, and high overall agility. Unfortunately, coupled with these benefits comes a lot of complexity. This product-agnostic architecture class provides you with a full understanding of the Microservices architecture style and what hybrids and alternatives exist, which will help guide you in making the right architecture and design decisions for your organization. In this workshop I will start by discussing the core concepts of the Microservices architecture style, the primary benefits and drawbacks of Microservices, how Microservices differs from SOA, and also how to create hybrid architectures. Taking a deeper dive, I will then talk about the hard stuff in microservices, including how to identify services, various service template design strategies, event-driven services, service communication patterns, and distributed transactions. Finally, I'll talk about the hardest part of microservices, which is how to distribute your monolithic data.

Workshop Outline:

Microservices Core Concepts

  • Topology overview
  • Distributed architecture considerations
  • Service components and granularity
  • Bounded context concepts and challenges
  • Microservices drivers and advantages
  • API layer design


    Hybrid Architectures and Migration Techniques

  • Service-based architecture
  • Microservices migration patterns
  • Architectural modularity


    Microservices Design Techniques

  • Service identification
  • Service design
  • Event-driven services
  • Service communication patterns
  • Distributed Logging
  • Error handling techniques


    Microservices Data Considerations

  • Distributed Data Challenges
  • Creating Data Domains
  • Dealing with Common Data
  • Deferred Data Migration
  • Distributed Transactions
  • Eventual Consistency Patterns
Brian Sletten

Brian Sletten

Forward Leaning Software Engineer @ Bosatsu Consulting

Machine Learning Workshop

Machine Learning is all the rage, but many developers have no idea what it is, what they can expect from it or how to start to get into this huge and rapidly-changing field. The ideas draw from the fields of Artificial Intelligence, Numerical Analysis, Statistics and more. These days, you'll generally have to be a CUDA-wielding Python developer to boot. This workshop will gently introduce you to the ideas and tools, show you several working examples and help you build a plan to for diving deeper into this exciting new field.

We will cover:

  • The differences between data science, AI and machine learning
  • The Five Tribes of Machine Learning (as defined by Pedro Domingos)
  • Walkthroughs of some of the main algorithms
  • Examples in Java, R and Python
  • Tools such as Tensorflow and Pytorch
  • The impact of GPUs on machine learning
  • Stories about how companies are being successful with machine learning
  • A discussion about the likely impacts of machine learning on the job market and society
View Workshop Requirements »
Matt Stine

Matt Stine

I Enable Early-Career Enterprise Software Engineers to Continuously Improve

Cloud Native Architecture Patterns & Katas Workshop

As a software architect, confronting the cloud can feel quite daunting. We are confronted with an onslaught of public cloud providers; which one should we choose? Are we ready for public cloud? Or do we need to focus on private cloud? And what does that even mean? Or are we looking for a hybrid solution? And these questions are only the beginning. Soon we’ll be looking at IaaS vs. PaaS. Containers vs. Unikernels. Servers vs. Serverless! Is there any way to make sense of all of the choices and cut through all of the hype?

Fortunately there is a way forward. There are clear architectural concepts and patterns that we can use as guideposts on our journey to the cloud. In this full-day workshop, we’ll gain an understanding of the unique characteristics of cloud infrastructure and how we can design and develop application architectures that fully exploit those unique characteristics. These “cloud native” architectures compose simple patterns with predictable performance, scaling, security and failure characteristics to create solutions to complex problems that can be quickly, flexibly, and continuously evolved to take advantage of new information. In many ways these architectures have more in common with organic systems than anything we’ve previously called software.

These characteristics of cloud native architectures allow us to practice an extreme flavor of continuous delivery that allows us to survive a new marketplace where speed is our primary competitive advantage and access to consumer services must be ubiquitous.

The newly trained cloud architect will leave this workshop equipped with an understanding of:

  • unique characteristics of cloud infrastructure
  • architecture concepts unique to cloud native
  • significant tradeoffs involved in cloud architecture
  • the concept of continuous partial failure and how it affects architecture
  • the importance of composability to cloud architectures
  • how continuous delivery, devops, and microservices relate to cloud

You’ll also leave with a rich catalog of cloud native architecture patterns that you should be able to apply regardless of your choice of cloud provider or technology stack. We'll enhance our understanding of these topics by alternating between a traditional lecture setting and breaking up into groups to do kata exercises.

Raju Gandhi

Raju Gandhi

Founder, DefMacro Software

Angular (with TypeScript) Workshop

Angular brings together some of the most promising new technologies in the web space like Components, Observables, Window.fetch all the while bundling together a set of “best” practices like dependency injection in one development stack. If you are looking to build powerful single page applications then Angular is your friend. In this workshop we will start from the ground up, and build our way through a simple application that will let us explore the various constructs, and the familiarize ourselves with some of the new terminology in Angular.

This session will focus on Angular 12

In this workshop we will get down and dirty with Angular. In this workshop we will start with the very basics of how to bootstrap our Angular application, and work slowly towards making REST-ful AJAX requests to a backend. List of topics include

  • Creating Angular components
  • The nuts and bolts of NgModule
  • Creating component hierarchies
  • Using the Angular style guide for naming and project layout
  • Directives like *ngFor
  • @Inputs and @Outputs
  • Services
  • Dependency Injection
  • The component lifecycle
  • Ajax using Http and Observables
  • Smart vs. Dumb components
  • Routes, routing, and the router-outlet

Along the way we we prescribe to some established practices like directory structure, naming, and some tricks to make our development life easier.

View Workshop Requirements »
Peter Pavlovich

Peter Pavlovich

CTO, Censinet

Reactive Architectures: Implementation Strategies for Enterprise Applications Workshop

The end has come. REST is finally dead. The world of reactive data sources has killed it, and your users will be forever grateful. Gone from your applications are 'Refresh' buttons. Gone from your sever code are the polling routines, pinging remote services for changes. Customers dashboards update seamlessly and in real time. Your users have never been happier.

If this sounds like a world that you want to live in, join us for this awesome workshop exploring the various options available to the enterprise architect when designing and implementing the reactive software layers and constructs necessary to make this dream a reality today!

Users are demanding applications which keep them informed of new events as soon as they happen. They are no longer willing to accept “Just hit the refresh button” or “It will update in a few minutes by itself” when demanding satisfaction of this new basic requirement. They are collaborating in real time, co-editing, co-authoring, 'co-laborating' with colleagues across the country and around the world, chatting over the phone or VOIP while working together via your app. They want their updates to travel from their laptop to their co-workers screens as fast as their voice reaches them through the phone. This is a tough requirement to meet, especially when trying to put a modern face on a legacy app or integrating a shiny, new, reactive app with a legacy, REST-based datasource.

And it is not just your end-users that are clamoring for reactive data sources. No, the requirements for server-to-server communication of changes to data or state have forever changed. REST no longer is King in the world of web services. REST just doesn't cut the mustard any longer. Corporate users of your data services are demanding more flexible, reactive options when consuming your endpoints.

Join us for this thought provoking and exploratory workshop and learn the what, why and how of dealing with these new architectural challenges as we explore how you can architect your new or existing stack to satisfy the ever-increasing demand for 'real-time' applications and data services fed by reactive data sources regardless of your current technology choices.

View Workshop Requirements »
Pratik Patel

Pratik Patel

Developer Advocate @ Azul Systems

React.js Workshop

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

This is a HAND-ON WORKSHOP, INTRODUCTORY LEVEL. Please come with a laptop, and if possible, with the software needed pre-installed (Instructions below). We'll cover these topics - both in code and in discussion format, and do as many as we can in the time alloted:

  • React components
  • Lifecycle
  • Properties
  • State
  • Using React-Bootstrap components
  • Signaling & Messaging between Component
  • Handling Events
  • All coding done in ES6 style
  • Modern React application structure, setup, and build
  • Writing tests
  • React Router
  • Discussion of Flux architecture
  • REST/Network ops within React
  • React architecture
  • Component composition
  • Discussion of Redux and Functional Web Architecture (time permitting!)
View Workshop Requirements »
Tim Berglund

Tim Berglund

VP Developer Relations at Confluent

Streaming Data with Apache Kafka

The toolset for building scalable data systems is maturing, having adapted well to our decades-old paradigm of update-in-place databases. We ingest events, we store them in high-volume OLTP databases, and we have new OLAP systems to analyze them at scale—even if the size of our operation requires us to grow to dozens or hundreds of servers in the distributed system. But something feels a little dated about the store-and-analyze paradigm, as if we are missing a new architectural insight that might more efficiently distribute the work of storing and computing the events that happen to our software. That new paradigm is stream processing.

In this workshop, we’ll learn the basics of Kafka as a messaging system, learning the core concepts of topic, producer, consumer, and broker. We’ll look at how topics are partitioned among brokers and see the simple Java APIs for getting data in and out. But more than that, we’ll look at how we can extend this scalable messaging system into a streaming data processing system—one that offers significant advantages in scalability and deployment agility, while locating computation in your data pipeline in precisely the places it belongs: in your microservices and applications, and out of costly, high-density systems.

Come to this workshop to learn how to do streaming data computation with Apache Kafka!

View Workshop Requirements »
Kenneth Kousen

Kenneth Kousen

President, Kousen IT, Inc.

Gradle Workshop

The Gradle build tool has been adopted by the vast majority of open source projects and is growing rapidly in industry as well. Gradle provides a powerful DSL for customizing and managing your build, with flexible configuration features and sophisticated dependency management. Gradle is also actively supported by a commercial entity, and in partnership with companies like Netflix and LinkedIn is currently being optimized for performance.

This workshop is designed to get you started on Gradle, from its basic capabilities up through advanced techniques like build scans, the build cache, and resolutions strategies.

Topics will include:

  • Projects and tasks
  • Initialization, configuration, and execution times
  • File system capabilities
  • Incremental builds
  • Script and binary plugins
  • Dependency management
  • Multi-project builds
  • Build scans
  • The build cache
  • Creating your own plugin
View Workshop Requirements »
Daniel Hinojosa

Daniel Hinojosa

Independent Consultant

Building Reactive: Operation Trivia Game

Build a reactive trivia game with Akka, Play Framework and Scala. This full day seminar we will engineer the various components to create an interactive trivia game that we will play in the final hour of this exciting and fun workshop.

Build a reactive trivia game with Akka, Play Framework and Scala. This full day seminar we will engineer the various components to create an interactive trivia game that we will play in the final hour of this exciting and fun workshop.

View Workshop Requirements »
Venkat Subramaniam

Venkat Subramaniam

Founder @ Agile Developer, Inc.

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.

View Workshop Requirements »
Rohit Bhardwaj

Rohit Bhardwaj

Director of Architecture, Expert in cloud-native solutions

Apache Cassandra, Spark and Spark Streaming for Real Time Big Data Analytics

Apache Cassandra is one of the best solutions for storing and
retrieving data. We will explore data analytics cluster computing
framework with real-world examples. It is 100x faster than Hadoop!
We will start with an introduction to Apache Cassandra. We will explore challenges encountered when attempting to scale
with relational databases, and how NoSQL databases like Cassandra address those problems. It reviews the Cassandra architecture, benefits, and how to use the Cassandra read and write paths.

Later, you will learn how to effectively and efficiently solve analytical problems using Apache Spark, Apache Cassandra, and DataStax. You will learn about Spark API, Spark-Cassandra Connector, Spark SQL, Spark Streaming, and fundamental performance optimization techniques.
Big Data applications nowadays require a faster speed of data
processing and analysis.

Apache Cassandra is one of the best solutions for storing and
retrieving data. We will explore data analytics cluster computing
framework with real-world examples. It is 100x faster than Hadoop!
We will start with an introduction to Apache Cassandra. We will explore challenges encountered when attempting to scale
with relational databases, and how NoSQL databases like Cassandra address those problems. It reviews the Cassandra architecture, benefits, and how to use the Cassandra read and write paths.

Later, you will learn how to effectively and efficiently solve analytical problems using Apache Spark, Apache Cassandra, and DataStax. You will learn about Spark API, Spark-Cassandra Connector, Spark SQL, Spark Streaming, and fundamental performance optimization techniques.
Big Data applications nowadays require a faster speed of data
processing and analysis.

View Workshop Requirements »

Half-Day Workshops

Jeremy Deane

Jeremy Deane

Chief Architect at Foundation Medicine

AMQP Messaging Fundamentals

This two session workshop covers AMQP messaging concepts and technologies including hands-on exercises with RabbitMQ, Spring and Docker

Topics

Fundamentals: AMQP

Technologies and Architectures: RabbitMQ & Spring

Demos and Hands-on Exercises

View Workshop Requirements »
Neal Ford

Neal Ford

Director / Software Architect / Meme Wrangler

Building Evolutionary Architectures Workshop

This workshop highlights the ideas from the forthcoming Building Evolutionary Architectures, showing how to build architectures that evolve gracefully over time.

An evolutionary architecture supports incremental, guided change across multiple dimensions.

For many years, software architecture was described as the “parts that are hard to change later”. But then microservices showed that if architects build evolvability into the architecture, change becomes easier. This workshop, based on my upcoming book, investigates the family of software architectures that support evolutionary change, along with how to build evolvable systems. Understanding how to evolve architecture requires understanding how different parts of architecture interact; I describe how to achieve appropriate coupling between components and services. Incremental change is critical for the mechanics of evolution; I cover how to build engineering and DevOps practices to support continuous change. Uncontrolled evolution leads to undesirable side effects; I cover how fitness functions build protective, testable scaffolding around critical parts to guide the architecture as it evolves.

The software development ecosystem exists in a state of dynamic equilibrium, where any new tool, framework, or technique leads to disruption and the establishment of a new equilibrium. Predictability is impossible when the foundation architects plan against changes constantly in unexpected ways. Instead, prefer evolvability over predictability. This hands-on workshop provides a high-level overview of a different way to think about software architecture.

Outline:

  • Architecture Dimensions
  • Engineering Incremental change
  • Architectural Characteristics
  • Exercise: determine appropriate characteristics
  • Identifying Architectural Patterns
  • Exercise: components and patterns
  • Identifying Fitness Functions
  • Exercise: determining fitness functions
  • Retrofitting Existing Architectures
  • Building Evolvable Architectures
View Workshop Requirements »
Venkat Subramaniam

Venkat Subramaniam

Founder @ Agile Developer, Inc.

Building Reactive Applications

Reactive Programming is receiving quite a bit of attention and for good reasons. It’s a nice logic next step from functional programming. It takes the concept of function composition and lazy evaluations to the next level. It streamlines handling of many critical issues that are architectural in nature: resilience, scale, responsiveness, and messaging.

In this workshop, we will start with a quick introduction to reactive programming. We will then dive into code examples and learn how to create reactive applications. We’ll learn to implement observables, to deal with errors in a graceful manner, learn both synchronous and asynchronous solutions, hot vs. cold observables, and dealing with backpressures.

View Workshop Requirements »
Christopher Judd

Christopher Judd

CTO of Manifest Solutions

Building Serverless Applications in AWS Workshop

Tired of trying to manage and maintain servers? Never have a large enough operations team? Don’t have a budget for running lots of server? Don’t want to pay for servers siting idle? Afraid you might become so popular that you won’t be able to scale fast enough? Don’t worry, it is possible to alleviate these issues by moving to a serverless architecture that utilizes microservices hosted in the cloud. This type of architecture can support all different types of clients including web, mobile and IoT.

During this hands-on workshop, you will build a serverless application utilizing AWS services such as Lambda, API Gateway, S3 and a datastore.

During this session you will build a simple web application utilizing AWS services and Angular.

View Workshop Requirements »
Howard Lewis Ship

Howard Lewis Ship

Creator of Apache Tapestry

Clojure Workshop

In an increasingly crowded field of languages, Clojure stands alone. It is a dynamic, functional, high performance dialect of Lisp that runs on both the JVM and CLR. The creator cast aside assumptions from both the Lisp and Java communities to create a remarkable language implementation.

This workshop introduces Clojure to Java developers who might not have seen a Lisp and don’t yet understand why that’s such an advantage. I introduce the language syntax (what little there is of it), cover interoperability with Java, macros, mutlti-methods, and more. I also cover the functional aspects of Clojure, showing its powerful immutable data structures, working with threads and concurrency, and sequences. Beyond just showing syntax, I also show how to build real applications in Clojure, and give you a chance to do the same. Attending this workshop shows enough to pique your interest and show why many of the people who were interested in Java in 1996 are interested in Clojure now.

View Workshop Requirements »
Neal Ford

Neal Ford

Director / Software Architect / Meme Wrangler

Continuous Delivery Workshop, part 1 of 3: Deployment Pipelines

The first part of the Continuous Delivery workshop covers the differences between continuous integration, continuous deployment, and continuous delivery). It also introduces the deployment pipeline_, along with usage, patterns, and anti-patterns. This part concludes with some applied engineering principles.

Releasing software to actual users is often a painful, risky, and time-consuming process. This workshop sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers and operations, delivery teams can get changes released in a matter of hours—sometimes even minutes—no matter what the size of a project or the complexity of its code base. The workshop materials are derived from the best selling book Continuous Delivery and creating in collaboration with the authors and other of my ThoughtWorks colleagues. Continuous Delivery details how to get fast feedback on the production readiness of your application every time there is a change—to code, infrastructure, or configuration.

The first part of the workshop describes the technical differences between related topics such as continuous integration, continuous deployment, and continuous delivery. At the heart of the workshop is a pattern called the deployment pipeline, which involves the creation of a living system that models your organization's value stream for delivering software. I discuss the various stages, how triggering works, patterns and anti-patterns, and how to pragmatically determine what “production ready” means. This session also covers some agile principles espoused by the Continuous Delivery book, including new perspectives on things like developer workstations and configuration management.

Neal Ford

Neal Ford

Director / Software Architect / Meme Wrangler

Continuous Delivery Workshop, part 2 of 3: Testing, Synergistic Practices, and Deployment

Continuous Delivery relies on a variety of interlocking engineering practices to work efficiently; this session covers three related topics. First, I cover the role of testing and the testing quadrant. Second, I specifically cover version control usage and offer alternatives to feature branching like toggle and branch by abstraction. Third, I describe some incremental release strategies, along with their impact on other stages of project lifecycle.

Releasing software to actual users is often a painful, risky, and time-consuming process. This workshop sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers and operations, delivery teams can get changes released in a matter of hours—sometimes even minutes—no matter what the size of a project or the complexity of its code base. The workshop materials are derived from the best selling book Continuous Delivery and creating in collaboration with the authors and other of my ThoughtWorks colleagues. Continuous Delivery details how to get fast feedback on the production readiness of your application every time there is a change—to code, infrastructure, or configuration.

Continuous Delivery relies on a variety of interlocking engineering practices to work efficiently; this session covers three related topics. First, I cover the role of testing and the testing quadrant, including the audience and engineering practices around different types of tests. I also cover some best practices around testing, including testing ratios, code coverage, and other topics. Second, I specifically cover version control usage and offer alternatives to feature branching like toggle and branch by abstraction. Generally, I talk about building synergistic engineering practices that complement rather than conflict one another. In particular, I discuss why feature branching harms three other engineering practices and describe alternatives. Third, I describe some incremental release strategies, along with their impact on other stages of project lifecycle.

Neal Ford

Neal Ford

Director / Software Architect / Meme Wrangler

Continuous Delivery Workshop, part 3 of 3: Infrastructure and Data

Two big stumbling blocks for Continuous Delivery adaptation are interactions with operations and the keepers of data. First in this session, I cover operations, DevOps, and programmatic control of infrastructure. Second, I discuss how to incorporate databases and DBA's into the Continuous Integration and Continuous Delivery process.

Releasing software to actual users is often a painful, risky, and time-consuming process. This workshop sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers and operations, delivery teams can get changes released in a matter of hours—sometimes even minutes—no matter what the size of a project or the complexity of its code base. The workshop materials are derived from the best selling book Continuous Delivery and creating in collaboration with the authors and other of my ThoughtWorks colleagues. Continuous Delivery details how to get fast feedback on the production readiness of your application every time there is a change—to code, infrastructure, or configuration.

Two big stumbling blocks for Continuous Delivery adaptation are interactions with operations and the keepers of data. First in this session, I cover operations, DevOps, and programmatic control of infrastructure using tools like Puppet and Chef. I also discuss the explosion of tool alternatives in this space, and cover some current-day best practices. Second, I discuss how to incorporate databases and DBA's into the Continuous Integration and Continuous Delivery process. This includes database migrations, strategies for enhancing collaboration between application development and data, and database refactoring techniques.

Arty Starr

Arty Starr

Author of Idea Flow, Founder, FlowInsight

Discussion: Generalized AI and the Impact on our Future

Flow AI is an emotional intelligence AI platform based on I.flow() theoretical brain models, and is in the very early stages of being developed as a co-operative community effort. Given the inevitable evolution toward generalized AI, what does this mean for our future?

In this group discussion, we'll talk about the implications of the next major scientific revolution in AI, the similarities and differences from scifi movies, the challenges, the risks, and how advancements in AI will change our world.

What type of future do we want? What will it take to build that future? Is there a path to get us from where we are to where we want to be?

Arty Starr

Arty Starr

Author of Idea Flow, Founder, FlowInsight

Discussion: Managing Dependencies Across Teams

Software development is hard enough with one team, but coordinating work across multiple teams can be especially challenging. The more brains involved, the more complex the dependencies, the easier it is to make mistakes.

What are the biggest pains you see out in the wild? What types of strategies have you found to work? Come share your stories and lessons learned.

In this group discussion, we'll dig into one story at a time, explore the nuts & bolts, then distill lessons learned and improvement ideas.

If you love a good war story, or have your own story to share, you won't want to miss this session!

Arty Starr

Arty Starr

Author of Idea Flow, Founder, FlowInsight

Discussion: Test Automation Disasters and Lessons Learned

How much time have you spent automating tests, then discovered the tests were mostly useless, brittle, time-consuming, and hard to understand? How many times have you deleted everything, started over, and came with a substantially better strategy for next time?

In this group discussion, we'll dig into one disaster story at a time, explore the nuts & bolts, then distill lessons learned and improvement ideas.

One of the best ways to evolve our brain's Anti Pain gut feel system is through sharing disaster experiences, reflecting on alternatives, and distilling patterns and lessons learned. As a bonus, venting your frustrations is cathartic!

Tim Berglund

Tim Berglund

VP Developer Relations at Confluent

Distributed Systems in One Lesson

Normally simple tasks like running a program or storing and retrieving data become much more complicated when we start to do them on collections of computers, rather than single machines. Distributed systems has become a key architectural concern, and affects everything a program would normally do—giving us enormous power, but at the cost of increased complexity as well.

Using a series of examples all set in a coffee shop, we’ll explore topics like distributed storage, computation, timing, messaging, and consensus. You'll leave with a good grasp of each of these problems, and a solid understanding of the ecosystem of open-source tools in the space.

Raju Gandhi

Raju Gandhi

Founder, DefMacro Software

Docker Workshop - Part I

Docker! Docker! Docker! Whether its running a piece of software on your local machine, to hermetic deployments of your software in production - docker has a place in your workflow. In this 2 part workshop we will get our hands dirty with Docker. We will create, tear down and modify containers, create our own images, see how to set up networking and volumes for containers, see the role of Dockerfiles, and if we have time, attempt to “compose” an application using “docker-compose”

In this introductory workshop we will flit between practice and theory. We will spend a lot of time working with the Docker CLI, and cement our new found knowledge with hands-on exercises and theory.

I must highlight that this is ONLY a 3 hour workshop, but please ensure that you follow the “Set up” instructions and test to see if all is well before attending this workshop

In this workshop we will cover the following -

  • The “Why” and Benefits of Docker
  • Creating our “Hello World” container
  • Creating “interactive” containers
  • Understanding how to know what is running on your machine, what isn't, and how to remove images and containers no longer needed
  • VMs vs. containers
  • Docker lifecycle
  • Setting up networking for containers
  • Setting up volumes for containers
  • The Union File System
  • The role of Dockerfiles
  • (If we have time) docker-compose
View Workshop Requirements »
Raju Gandhi

Raju Gandhi

Founder, DefMacro Software

Docker Workshop - Part II

Docker! Docker! Docker! Whether its running a piece of software on your local machine, to hermetic deployments of your software in production - docker has a place in your workflow. In this 2 part workshop we will get our hands dirty with Docker. We will create, tear down and modify containers, create our own images, see how to set up networking and volumes for containers, see the role of Dockerfiles, and if we have time, attempt to “compose” an application using “docker-compose”

In this introductory workshop we will flit between practice and theory. We will spend a lot of time working with the Docker CLI, and cement our new found knowledge with hands-on exercises and theory.

I must highlight that this is ONLY a 3 hour workshop, but please ensure that you follow the “Set up” instructions and test to see if all is well before attending this workshop

In this workshop we will cover the following -

  • The “Why” and Benefits of Docker
  • Creating our “Hello World” container
  • Creating “interactive” containers
  • Understanding how to know what is running on your machine, what isn't, and how to remove images and containers no longer needed
  • VMs vs. containers
  • Docker lifecycle
  • Setting up networking for containers
  • Setting up volumes for containers
  • The Union File System
  • The role of Dockerfiles
  • (If we have time) docker-compose

https://github.com/looselytyped/nfjs-docker-workshop

View Workshop Requirements »
Jeremy Deane

Jeremy Deane

Chief Architect at Foundation Medicine

Enterprise Messaging Foundations

This two session workshop covers messaging concepts, standards (JMS, EIP), and technologies including hands-on exercises with ActiveMQ, Spring, and Camel.

Topics

  • Fundamentals: JMS, EIP

  • Technologies and Architectures: ActiveMQ

  • Enterprise Integrations: Spring Framework & Apache Camel

  • Demos and Hands-on Exercises

View Workshop Requirements »
Jeremy Deane

Jeremy Deane

Chief Architect at Foundation Medicine

Graph Database Fundamentals

This half-day workshop will cover the fundamentals of Graph Databases with hands-on exercises using Neo4J.

Environment Setup

  • Hello World Graph!
  • Web Console
    Introduction
  • What are Graphs?
  • NoSQL Landscape
  • Relational vs. Graph
    Fundamentals
  • Constructs
  • Modeling
  • Languages
  • Development
  • Testing
    Architecture
  • Graph Database
  • Deployment Topologies
  • High Availability (HA)
  • Operations and Security
    Advanced Concepts
  • Bulk Loads
  • Traversals
  • Indexes
  • Visualization
View Workshop Requirements »
Christopher Judd

Christopher Judd

CTO of Manifest Solutions

Hacking & Hardening Java Web Applications Workshop

It seems like everyday there is a new headline about a security breach in a major company’s web application. These breaches cause companies to lose their credibility, cost them large sums of money, and those accountable undoubtedly lose their jobs. Security requires you to be proactive. Keep your employer out of the headlines by learning some key security best practices.

This hands-on workshop is designed to teach you how to identify and fix vulnerabilities in Java web applications. Using an existing web application, you will learn ways to scan and test for common vulnerabilities such as hijacking, injection, cross-site scripting, cross-site forgery and more. You will learn best practices around logging, error handling, intrusion detection, authentication and authorization. You will also learn how to improve security in your applications using existing libraries, frameworks and techniques to patch and prevent vulnerabilities.

View Workshop Requirements »
Nathaniel Schutta

Nathaniel Schutta

Architect as a Service

HTML5 Revisited Workshop

The technology space is a lot like the ocean - miss one wave and another will come along shortly; most shiny new things begin with a sizable amount of hype as everyone rushes to play with the new toy. This cycle is often met with a level of disappointment as we quickly discover our new bauble isn't all that and a bag of chips so we rush off to the next best thing ever.

A few short years ago, HTML5 was the new hotness but at the time browser support was spotty at best. Despite the spotlight moving on to something else, browser support has improved markedly and we even have new toys to play with! In this workshop, we will walk you through what is possible in today's browser as well as what other new features you might not be aware of. HTML5 may no longer qualify as bleeding edge, but it is still deserving of our attention.

View Workshop Requirements »
Michael Carducci

Michael Carducci

Holistic Software Architect @ Truly Magic

MySQL Optimization and Performance Tuning

This hands on workshop covers both the theory and practice of optimizing and tuning a production MySQL Database.

Basic knowledge of Linux and SQL are expected. You'll be given ssh access to a vm to review diagnostic data and to make both code and database changes.

Venkat Subramaniam

Venkat Subramaniam

Founder @ Agile Developer, Inc.

Programming with JavaScript - Method to Madness

JavaScript is a powerful language with many capabilities. Yet, this is one of the most misused, feared, and often poorly utilized languages. In this hands-on workshop, we will demystify JavaScript. We will start with some of the fundamental dos and don'ts of this language, explore its dynamic capabilities, and learn to make use of its powerful prototypal inheritance.

Come prepared with your laptops to crank out some code and work along exercises.

View Workshop Requirements »
Daniel Hinojosa

Daniel Hinojosa

Independent Consultant

Scala for Java Developers (1/2) (Laptops Optional)

Scala for Java Developers is a full live code and fast paced presentation and workshop (laptops optional), and this is all about the Scala language.

Scala is a wonderful functional/hybrid language. It will become one of the 5 languages that you will need to know to be a highly successful JVM developer in the very near future (others being Groovy, Clojure, Java 8, and JRuby). Scala, as opposed to some of the other languages, has quite a learning curve. This presentation was built for questions. We will start with some basics, how this presentation will flow and end will be up to you, the audience. Bring your intellect, curiosity, and your questions, and get ready for some Scala. Laptops optional so you can try stuff out on your machine and create questions of your own!

View Workshop Requirements »
Daniel Hinojosa

Daniel Hinojosa

Independent Consultant

Scala for Java Developers (2/2) (Laptops Optional)

Scala for Java Developers is a full live code and fast-paced presentation and workshop (laptops optional), and this is all about the Scala language. This is Part 2, continuing where we left off from Part 1.

Scala is a wonderful functional/hybrid language. It will become one of the 5 languages that you will need to know to be a highly successful JVM developer in the very near future (others being Groovy, Clojure, Java 8, and JRuby). Scala, as opposed to some of the other languages, has quite a learning curve. This presentation was built for questions. We will start with some basics, how this presentation will flow and end will be up to you, the audience. Bring your intellect, curiosity, and your questions, and get ready for some Scala.

View Workshop Requirements »
Brian Sletten

Brian Sletten

Forward Leaning Software Engineer @ Bosatsu Consulting

Web Security Workshop

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

Publishing information on the Web 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. We will also discuss the assault on encryption, web security features and emerging technologies that will hopefully help strengthen our ability to protect what we hold dear.

Topics include:

  • Security Engineering
  • Software Security
  • Encryption
  • Authentication and Authorization Mechanisms
  • Emerging Web Security Technologies