James Ward's Recent Presentations

Google I/O 2023: What’s new in Kotlin for Android (Video)

Discover exciting updates coming to Kotlin for Android developers this year, including the upcoming K2 compiler, using KTS for Gradle build scripts, improvements in Kotlin Symbol Processing, and some news about Kotlin Multiplatform.

KotlinConf 2023: Spring + Kotlin = Modern + Reactive + Productive (Video)

The combination of Spring and Kotlin is a winning combo for building modern, reactive, and productive servers. This talk will walk through how Spring & Kotlin fit together with coroutines, R2DBC, Testcontainers, and Kotlin/JS for the web UI. Come for Kotlin, stay for the ASCII art!

KotlinConf 2023: Kotlin Multiplatform Conversions at Android Jetpack Scale (Video)

This is a case study of how we converted several Jetpack libraries to Kotlin Multiplatform as part of our ongoing experimentation with the multiplatform technology.

Devoxx BE 2022: Spring + Kotlin = Modern + Reactive + Productive (Video)

The combination of Spring and Kotlin is a winning combo for building modern, reactive, and productive servers. This talk will walk through how Spring & Kotlin fit together with coroutines, R2DBC, Testcontainers, and Kotlin/JS for the web UI. Come for Kotlin, stay for the ASCII art!

Google’s Journey from Java to Kotlin for Server Side Programming (Video)

Kotlin is now a recommended programming language for server-side JVM usage at Google, while still providing access to a large existing Java ecosystem. With over 11 million lines of Kotlin code at Google (across server and Android), we’ve done a number of things to ensure our developers are successful with Kotlin. This talk will explore the challenges we faced, and the reasons we’re adding Kotlin as an available language and how we’ve made it a successful change.

Architectural Patterns for Distributed and Decentralized Data (Slides)

Over the past few years architectural patterns for distributed data have gained more importance and adoption. At the same time similar patterns have emerged for decentralized data. You will learn how CQRS and CRDTs are used in trusted and untrusted environments to overcome the challenges of eventual consistency, data privacy, and global scalability.

A Tour of the Modern Java Platform (Video)

The Java Platform has seen a tremendous amount of evolution and improvements over the past five years in many different areas, including: language features in Java, Kotlin, and Scala; Functional Programming; dev environments; test workflows; Reactive; Stream processing; distributed data; containerization; serverless; and AoT compilation. This talk will give you a tour of the most important improvements, why they matter, and how to take advantage of them.

Fantastic Buildpacks and Where to Find Them (Video)

Adventure awaits you as we journey through the magical container creation process with Cloud Native Buildpacks. Ready your wand to cast Avada Kedavra on Dockerfiles. In this talk, you’ll learn how to run Buildpacks to transform your source into a container. You’ll also learn about Google Cloud’s support for Buildpacks on Cloud Run, Cloud Build, and various other products.

Kotlin Server Framework Smackdown (Video)

There are a number of great options for server-side Kotlin including: Spring Boot, Micronaut, Quarkus, and Ktor. But how do you pick between these? This session will compare each framework and give you helpful tips for deciding which one is right for you.

Running Kotlin on Google Cloud (Video)

Java has brought us a long way. For years it’s been a go-to language for building mission critical enterprise applications, but nothing is set in stone. Newer programming languages have emerged, bringing new features as well as greater productivity and operational efficiency, while also being compatible with Java and the JVM. This talk will help you learn the basics of Kotlin, how to use it with your existing Java codebase, and how to take advantage of modern features like Coroutines which provide an easier and more efficient concurrency model. You will also learn how to deploy your Kotlin apps on Google Cloud.

Comparing containerization methods: Buildpacks, Jib, and Dockerfile (Blog | Video)

Java has brought us a long way. For years it’s been a go-to language for building mission critical enterprise applications, but nothing is set in stone. Newer programming languages have emerged, bringing new features as well as greater productivity and operational efficiency, while also being compatible with Java and the JVM. This talk will help you learn the basics of Kotlin, how to use it with your existing Java codebase, and how to take advantage of modern features like Coroutines which provide an easier and more efficient concurrency model. You will also learn how to deploy your Kotlin apps on Google Cloud.

Principles of Developer Experience (Slides | Video)

Often we hear people talk about “great developer experience” but what does that mean? It seems to be like “beauty” - in the eye of the beholder. Yet, great developer experience (DX) is 100% about developer productivity and can be measured in terms of value and time. There are 4 key principles that help guide us to deliver value and reduce friction to increase productivity and thus deliver experiences which developers will love. These principles address the entire surface area of what developers interact with: the actual product, the documentation, and the tools.

The Evolution of Object-Oriented Programming (Slides | Video)

The foundation of programming which many of us have used for 20 years is evolving into something new. Concepts including immutability, functions, ADTs, and pattern matching are helping us solve problems more reliably, understandably, and quickly.

This session will help you understand the evolutions happening in many OOP languages and how you can begin taking better advantage of these changes.

Kotlin - A Better, More Cloud-Friendly Java (Video)

Java has gotten us a long way for building mission critical, enterprise applications, but it is showing its age as newer programming languages have emerged recently that bring with them higher productivity and operational efficiency, while also being compatible with Java and running on the JVM. This talk will help you learn the basics of Kotlin, how to use it with your existing Java, and how to take advantage of modern features like Coroutines which provide a more efficient and easy concurrency model. You will also learn how to deploy your Kotlin apps on Google Cloud.

Using Kotlin on the server and your Android apps (Video)

Kotlin is much loved amongst Android developers. More developers are using Kotlin today for building Android apps than ever before. Kotlin can also be used on the server, making it easier to apply skills and developers to both Android apps as well as the backends.

In this talk, you’ll learn how to build Kotlin apps as well as see the options on how to deploy on Google Cloud. By leveraging the capabilities of Google Cloud, you can minimise the time spent managing your apps and have more time to focus on the code.

Kubernetes CI/CD Pipelines with Tekton (Slides)

The Tekton open source project is a Continuous Integration / Continuous Delivery pipeline technology built on Kubernetes. It enables you to build a flexible delivery validation and delivery pipeline while taking advantage of a scalable and container-based cluster manager. This talk will introduce you to Tekton and help you learn its different components. Through live demos you will learn how to setup your own Kubernetes-based CI/CD pipeline with Tekton.

Scala 3.0 (Slides | Video)

Learn about all the cool new features of Scala 3 and how they impact your day to day development. This talk will refactor existing Scala code from 2 to 3, as well as outline transition process for projects.

We’ll cover the following:

Enums and Top level definitions Deprecating implicits Type system improvements (union, match, etc.) Metaprogramming (inline, macros and typeclass derivation) Additionally, we’ll give advice/guidance on adopting Scala 3 and evolving an existing project.

Kotlin Mullets – Business in the Front, Party in the Back (Slides | Video)

Ever since we broke apart the front and back-end of our systems, we’ve longed to partially reunite them with a shared language. The benefits of code reuse and shared tooling are compelling but is this nirvana possible? In this session we will explore building both the front (mobile and web) and back-end of an application with a shared Kotlin codebase. You will learn how to setup the build, share code, and deploy the back-end as a serverless app.

Serverless Scala – Functions as SuperDuperMicroServices (Slides | Video | Code)

Serverless is all the rage but what does it mean for Scala developers? Can we take a plain ol’ Scala function and run it on the cloud with infinite scalability? This talk will explore how to build and deploy serverless Scala and how to avoid startup overhead. We will use Google Cloud as a reference serverless implementation but the concepts are applicable with any provider.

Introduction to Functional Programming (Slides | Video)

After decades on the outskirts, Functional Programming is finally breaking into the mainstream due to changing needs and paradigms. For instance, Apache Spark has brought FP to many developers due to its function-oriented, big data transformation API. This session will give you a quick intro to FP. You’ll learn from code examples how to make sense of terminology like Higher-Order Function, Functor, and Monad – and you won’t need a math degree!

Introduction to Apache Kafka - The Next Gen Event Streaming System (Slides | Video)

Apache Kafka has emerged as a next generation event streaming system to connect our distributed systems through fault tolerant and scalable event-driven architectures. Now open source through Apache, Kafka is being used by numerous large enterprises for a variety of use cases. This session will introduce the basics of Kafka and walk through some code examples that will show how to begin using it.

Introduction to Machine Learning (Slides | Video)

Machine Learning is all the rage today with many different options and paradigms. This session will walk through the basics of Machine Learning and show how to get started with the open source Spark ML framework. Through Scala code examples you will learn how to build and deploy learning systems like recommendation engines.

Refactoring Monoliths to Microservices with Functional Programming (Slides)

Functional programming is growing in popularity for a variety of reasons, but for many, the most compelling reason is that it enables refactoring from monoliths to microservices. This session uses code examples and real-world experiences to explain why moving to FP will make it easier for you to embrace microservices. The code examples use Scala and Play Framework.

Managing Open Source Contributions in Large Organizations (Slides | Video)

In contrast to just a few years ago, most large enterprises are now contributors to and maintainers of open source projects. For many, there are aspects to the contributions that slip through the cracks, causing headaches for legal teams and unnecessary risk for the organization. Things like managing code licenses, contributor license agreements, and patent-related issues are often not addressed. This session describes how your organization can tackle these issues and covers some of the tooling Salesforce has built to help ensure legal compliance with incoming and outgoing contributions.

Reinvent your App Dev Lifecycle with Continuous Delivery on Heroku (Video)

Learn how your team can use modern application development and deployment practices on the App Cloud to build apps with Internet scale and sophistication. We will walk through how we used Continuous Delivery with GitHub and Heroku Pipelines to build a consumer-facing real estate app.

Intro to Scala for Java Developers (Slides | Video)

Scala and Functional Programming can be scary at first for those of us coming from the OOP world. With a bunch of new concepts like immutability, first-class functions, implicits, and a ton of language features, it is easy to get overwhelmed when jumping into Scala. This session will provide a gentle introduction to Scala. You will learn the basics and walk away with a solid foundation to build on and be able to apply what you’ve learned to Java 8’s Lambdas.

Comparing Elasticity of Reactive Frameworks (Slides | Video)

The world is going Reactive and there are now a number of different ways get there. The Reactive Manifesto states that Reactive apps must be “Elastic” so this session will use code examples and real apps to compare the different models of elasticity in frameworks like the Typesafe Platform (Play Framework, Akka, and Scala), RxJava, Reactive Streams, and NodeJS. Traits like programming model, back pressure, and horizontal scaling will be considered in the comparison.

Architecting Engagement Apps (Video)

Modern systems are composed from all sorts of pieces, like back-office systems, legacy systems, mobile apps, JavaScript web UIs, third-party services, relational data, NoSQL data, and big data. Effective user engagement requires an architecture that brings all of these pieces together instead of the traditional siloed approach. Join us to learn about the Engagement Architecture and how it can be used to create modern composition-oriented systems.

Building Reactive Apps (Slides | Video)

Non-blocking, asynchronous, and reactive programming models are all the rage today. This session will explore in-depth why these patterns are important in modern apps. We will drill down and see how to apply them to event-driven web, mobile, and RESTful apps. To illustrate the concepts, we will use Java, Scala, Akka, and the Play Framework as examples.

Intro to sbt-web (Slides | Video)

sbt-web is a new web asset pipeline for Play Framework and other sbt-based frameworks. It can pull dependencies from both Node and WebJars. The pipeline covers all of the phases of client-side development, including: linting, compiling (CoffeeScript, LESS, etc), minification, concatenation, fingerprinting, and gzipping. This session will give you an introduction to sbt-web and show you how to get started using it.

Reactive All The Way Down (Slides | Video)

The world is going Reactive but not just for the back-end; UIs are also becoming Reactive. In this session we will walk through how to build an end-to-end Reactive application with Scala, Play Framework, Akka, and AngularJS.

Optimizing Play for Production (Slides | Video)

Play Framework is easy to deploy and scale but like any system some optimizations can help things run more smoothly. This webinar will teach you the basics of deployment, configuring thread pools, managing blocking, and common performance pitfalls.

Intro to Scala (Slides)

This is a very brief introduction to Scala.

Web Fundamentals (Slides | Video)

Many of us have worked with abstractions over Web technologies such as HTTP, but REST, HTML5, and WebSocket are requiring us to understand how the Web really works. What actually happens when a Web browser opens a Web page? What is the connection between session state and cookies? How do HTML, CSS, and JavaScript work together? This session starts at the beginning and walks through the Web’s fundamental building blocks.

Architecting Event-Driven Web, Mobile, and RESTful Apps (Slides)

Non-blocking, asynchronous, and reactive are all the rage today. This session will explore why the patterns are important in modern apps and how to apply them to event-driven web, mobile, and RESTful apps. To illustrate the concepts, Java, Scala, Akka, and Play Framework will be used as examples.

Client/Server Apps with Play Framework, HTML5 and Java (Slides | Video)

The web application landscape is rapidly shifting back to a Client/Server architecture. This time around, the Client is JavaScript, HTML, and CSS in the browser. The tools and deployment techniques for these types of applications are abundant and fragmented.

This session will teach you how to pull together jQuery, LESS, Twitter, Bootstrap, and some CoffeeScript to build the Client. The Server could be anything that talks HTTP, but this session will use the Play Framework.

Client/Server Applications with HTML5 and Java (Video)

The Web application landscape is rapidly shifting back to a client/server architecture. This time around, the client is JavaScript, HTML, and Cascading Style Sheets in the browser. The tools and deployment techniques for these types of applications are abundant and fragmented. This session shows you how to pull together jQuery, LESS, and Twitter Bootstrap to build the client. The server can be anything that talks HTTP, but this session uses JAX-RS. You will also learn how to deploy client/server Web applications in the cloud with a content delivery network (CDN) for the client and a PaaS for the server.

Introduction to the Play Framework – Java Edition (Slides | Video)

The Play Framework is a lightweight, stateless Web framework for Java and Scala applications. It’s built on Java NIO, so it’s highly scalable. This session gives you an introduction to building Web applications with the Play Framework. You will learn how to set up routes and create controllers and views, plus how to deploy Play Framework applications in the cloud.

Introduction to the Play Framework – Scala Edition (Slides)

Play Framework is the High Velocity Web Framework For Java and Scala. It is lightweight, stateless, RESTful, and developer friendly. This is an introduction to building web applications with Play. You will learn about: routing, Scala controllers & templates, database access, asset compilation for LESS & CoffeeScript, and JSON services.

Playing in the Deep End (Slides)

Play Framework is simple to get started with, but it also has some very advanced and powerful features. This session will explore some of these features, including Action Composition, Filters, Reactive Requests, WebSockets, Advanced JSON, and Dependency Injection. Through lots of code, you’ll dive (or be thrown) into the deep end of Play.

Practicing Continuous Delivery (Slides)

This session will teach you best practices and patterns for doing Continuous Delivery / Continuous Deployment in Cloud environments. You will learn how to handle schema migrations, maintain dev/prod parity, manage configuration and scaling. This session will use Heroku as an example platform but the patterns could be implemented anywhere.

Running Java, Play, and Scala Apps on the Cloud (Slides)

Heroku is a Polyglot Cloud Application Platform that makes it easy to deploy Java, Play! and Scala apps on the cloud. Deployment is as simple as doing a “git push”. This session will teach you how to deploy and scale Java, Play! and Scala apps on Heroku. You will also learn about how to get started with Play Framework.