Schedule - Cape Town

workshops
Conference Day 1
Conference Day 2

08:00 – 09:00

Registration
 


09:00 – 11:00

Java EE 8
The keywords of Java EE 8 is Modernization and Simplification. In this workshop, you will get an introduction to the new and updated APIs of the Java EE 8 platform. You will get hands-on experience of the platform with practical exercises of selected Java EE 8 APIs. By the end of the workshop, you will be able to create secure, modern, scalable applications using Java EE 8 technologies.
 
The workshop requires knowledge of the Java programming language and some server-side experience, either with older versions of Java EE or comparable frameworks such as Spring.
 
 
1. Introduction
   – Java EE 8 Overview
   – How to structure a Java EE 8 project
2. Practical use of selected Java EE 8 APIs
   – JAX-RS
   – CDI
   – Bean Validation
   – JSON-B
   – Java EE Security API
3. Summary
   – Sum up main parts
   – How to contribute
   – Resources
Ivar Grimstad / Principal Consultant


11:00 – 12:00

Kubernetes from Basics to Advanced

In this workshop, we’ll take a look at the basics of containers and Kubernetes such as pods, volumes, services, labels/selectors, replica sets. Then, we will get into more advanced details of scaling, namespaces and all the other great features of Kubernetes.

Mete Atamel / Developer Advocate


12:00 – 13:00

Lunch
 


13:00 – 14:00

Kubernetes from Basics to Advanced

In this workshop, we’ll take a look at the basics of containers and Kubernetes such as pods, volumes, services, labels/selectors, replica sets. Then, we will get into more advanced details of scaling, namespaces and all the other great features of Kubernetes.

Mete Atamel / Developer Advocate

08:00 – 08:45

Registration
 


08:45 – 09:00

Welcome Message
 


09:00 – 10:00

Keynote: MicroProfile – New and Noteworthy

When the Microprofile initiative was started in 2016, it only took about three months before version 1.0 was launched. From day one, there were four different implementations from four different vendors available. And the progress does not stop there! Whereas version 1.0 was a subset of Java EE specifications, the following versions bring additional technologies useful for building microservices. Current version contains APIs and implementations for:

  • Externalized Configuration
  • Fault Tolerance
  • Health Checks
  • Application Metrics
  • Security
  • Open API
  • Open Tracing
  • Client API

In this fast-paced, demo-heavy session, MicroProfile will be introduced and demonstrated using the available implementations in live coding demos. All implementations will be explored and compared in a vendor neutral way. We will also take a look at the potential candidates for future versions, Java EE 8 support and the relationship to EE4J.

Ivar Grimstad / Principal Consultant


10:00 – 10:15

Java Break
 


10:15 – 11:00

The Force is strong with Kotlin

Kotlin uses the force of Brevity to do more with less, whilst not sacrificing comprehension in order to achieve it. It packs more ideas and power per line of code than Java ever could. Best of all it is 100% interoperable with Java, is an officially supported Android language and it runs everywhere.

Christoff Smith / Senior Java Developer


11:00 – 11:45

Building a next generation web application

Offline capabilities are not normally associated with web applications, but the latest advancements in web technologies enable the development of a web application that can function regardless of the network state. In this talk I will share my experiences and lessons learned while building a progressive web application that uses these technologies to provide a consistent and smooth user experience, even in the most remote areas of South Africa.

Madene Marais / Intermediate Software Enginee


11:45 – 12:30

Neural Networks: A Primer

Machine learning and deep learning are becoming widely adopted areas in developing innovative solutions. This talk aims to be a primer of neural networks; including the inspiration and intuition behind the concept, and the knowledge and tools one can acquire to start learning and experimenting.

Rishal Hurbans / Solutions Architect


12:30 – 13:30

Lunch
 


13:30 – 14:15

—-

TBA /


14:15 – 15:00

We’re gonna need a bigger database: Scaling to multiple databases with Debezium and Kafka

As our application grows, at some point the database we’ve chosen might no longer be sufficient to do what we want it to do. Perhaps we need to scale more than our database can handle, or maybe new features gradually require things your database isn’t great at. Replacing a database in an existing system is a lot of work and risky, and besides there may not be any single database that does all the things we need. As an alternative, we could leave our original database where it is, use a change capture platform like Debezium. In a nutshell, a change capture platform observes a database and records all inserts, updates and deletes to an event log system, such as Apache Kafka. From this event log we can stream this data to other databases, and use those databases instead of our original database for read traffic. The best part is that these databases can be completely different kinds of databases. We can stream from a relational database to a graph database, or from a document database to an search index like Elasticsearch. We’ll get into the moving parts of this setup, and see what is good, what is bad, and what’s ugly.

Frank Lyaruu / CTO


15:00 – 15:15

Java Break
 


15:15 – 16:00

Introducing HIP, the Human Interaction Protocol

Humans have wonderfully weird interfaces. Ranging from elegantly simple to brutish and infuriating. It is an interface that we use every day. It is so prevalent that, regrettably, we tend to forget it is there. For all our love of tinkering with systems, developers seem to have no interest whatsoever in hacking this particular API. HIP is Open Source, with nearly 7 billion users and almost as many contributors. Over the course of history, the API to humans has been well documented and explored. It is the only API that can be talked about at parties. In Human Interaction Protocol, Kees Jan Koster talks about the API to various implementations of the human class. He introduces a framework that makes it easier to interface with individual objects. The framework is particularly suitable for clustering humans. From personal experience he explains a few useful design patterns to apply in your HIP clusters. You take home a set of recipes to apply when using HIP. Simply using these will improve your own use of HIP, and explain and possibly address some of the performance issues you’ve been seeing in your clusters. They serve as a starting point to tinkering and experimenting with this wonderful API.

Kees Jan Koster / Software Architect & HIP trainer


16:00

Closing
 

08:00 – 08:45

Registration


08:45 – 09:00

Welcome Message


09:00 – 10:00

Keynote: Software engineering ⊇ Software testing

What elevates software development into software engineering? In this talk, we’ll make the case that rigorous testing is one of the fundamental ways in which programmers can improve the predictability of the output we produce. We will examine some relatively unknown, or at least not widely adopted, software testing techniques that go beyond basic unit testing to help us deliver complex systems with confidence.

Pavel Tcholakov / Software Engineer


10:00 – 10:15

Java Break


10:15 – 11:00

Containers, Kubernetes and Cloud

Creating a single microservice is a well understood problem. Creating a cluster of load-balanced microservices that are resilient and self-healing is not so easy. Managing that cluster with rollouts and rollbacks, scaling individual services on demand, securely sharing secrets and configuration among services is even harder. Kubernetes, an open-source container management system, can help with this. In this talk, we will start with a simple microservice, containerize it using Docker, and scale it to a cluster of resilient microservices managed by Kubernetes. Along the way, we will learn what makes Kubernetes a great system for automating deployment, operations, and scaling of containerized applications

Mete Atamel / Developer Advocate


11:00 – 11:45

Distributed services with MicroProfile

Whether your building Microservices or not, we live in a distributed world. In this talk we will go into detail on how MicroProfile can help you build better and more resilient distributed services. We will cover a quick overview of MicroProfile and then deep dive into some code examples and demos:

  • JAX-RS & CDI
  • Fault tolerance API
  • Config API
  • OpenAPI (Swagger)
  • Health Check API
  • Metrics API

All code and slides will be available in github. Demo will cover more than one implementation Wildfly-swarm and OpenLiberty.

Philip Kruger / Systems Architect


11:45 – 12:30

Building your first Smart Contract with Ethereum and Solidity

Imagine being able to write your next employment contract as code! You get to create the conditions (if then, while true) that determine what happens and when. Why stop your employment contract? Rental agreements, insurance, car purchases, every type of agreement can be expressed in code and we’ll show you how to write them and deploy them on the block chain based Ethereum network. In this talk we explore what Smart Contracts are and how they make contract enforcement (lawyers) redundant in the same way that block chain based cryptocurrencies make banks redundant. We’ll also take a tour of the Solidity programming language and show you how to implement the right interfaces (it’s a lot like Java). Finally we’ll get into the details of how to execute your Smart Contract on your own Private Block Chain network and how to navigate Ethereum Nodes, Wallets and the Geth (Go Ethereum) Command Line Interface.

Gerard de Jong / Software Architect


12:30 – 13:30

Lunch


13:30 – 14:15

Oracle Jet in Action – A Look at Modern Front End Toolsets

This presentation will explore the design and decision process around selecting the right front end toolset for your application development project. By looking at a real world application design / requirements scenario, Steltix will compare the Oracle JET toolset on a feature by feature basis to other existing toolkits. We will also cover the initial steps to getting up and running with Oracle JET and share resources to support further development projects using the power of JET. Key Oracle JET advantages

  • – Component Based Design and Development
  • – Attractive and powerful library of existing components
  • – Enterprise concerns addressed out-of-the-box
  • – Supportive open source community
Christian McCabe / Product Development Manager


14:15 – 15:00

The Paradox of Breaking Things

Paradoxically, the best way to ensure that systems won’t break is by deliberately breaking them. Lucky for us, breakage is inevitable. All we have to do is to accept outages for what they are: opportunities to learn.
Paradoxically, the best way to ensure that systems won’t break is by deliberately breaking them. Lucky for us, breakage is inevitable. All we have to do is to accept outages for what they are: opportunities to learn.

In this talk, Kees Jan gently guides you from accepting breakage, to causing your first failure, to where you break production systems with confidence.

The audience leaves the room ways to implement blame-free post-mortems, monitoring and creative ways to break systems.
In this talk, Kees Jan gently guides you from accepting breakage, to causing your first failure, to where you break production systems with confidence.

The audience leaves the room ways to implement blame-free post-mortems, monitoring and creative ways to break systems.

Kees Jan Koster / Software Architect & HIP trainer


15:00 – 15:15

Java Break


15:15 – 16:00

Cluster Consensus: When Aeron Met Raft

Consensus protocols enable distributed systems to agree a common view of shared state. This common view allows a cluster to continue service while a majority of its members are available. Raft was designed to be understandable. Raft succeeded in this goal and became popular. Aeron was designed to be an understandable messaging system, it was also designed to be fast, very fast. If the design principles of Aeron were applied to Raft, could we create a high-performance consensus implementation? Come to this talk if you would like to find out what happened when Aeron met Raft.

Martin Thompson / High-Performance Computing Specialist


16:00

Closing