Masterclass: Functional Programming on the JVM with Scala & Clojure

Most programming languages are gaining functional programming constructs, and the JVM remains a rock-solid base on which to build a wide variety of applications; however, the legacy ties to OOP in the Java programming language itself make many of the more interesting and useful aspects of functional programming difficult to achieve.

Date:

23 March 2018, IASI

Training fee: €250/participant plus VAT, only 25 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

About the training

In this course we’ll dive into two popular FP languages for the JVM: Scala and Clojure. You’ll learn about the critical features designed into these languages that can take your software to the next level. Both languages have great strengths, but we’ll also talk about the most significant problems that you’ll face when adopting either.

The hands-on portion of the course will concentrate on some of the most significant benefits of working with each.

Prerequisites

The content is approachable for all levels of developers. Experience working with Java, Javascript, or C# is recommended.

Course Outline

  • Scala 
    • First-class persistent data structures
    • Improved type system
    • Type inference, call-by-name, extended argument lists, implicits
    • Libraries of interest
    • Weaknesses and Challenges
    • Scala.js (browser-based scala)
    • Lab: Some tractable code examples you can run/modify
  • Clojure 
    • Dramatically simpler syntax
    • Language concerns at a library layer
    • Code as data
    • Ad-hoc polymorphism
    • First-class treatment of time as a programming concern
    • Spec vs Type systems
    • Dynamic development
    • Libraries of interest
    • Weaknesses and Challenges
    • Clojurescript (browser-based Clojure)
    • Lab: Some tractable code examples you can run/modify.
  • Summary
    • A review of pros/cons, naming specific use-cases for each language
    • Objective comparison: How to talk to others about the pros/cons

The trainer

Tony Kay is a seasoned developer with over 30 years of experience. He’s been working with Java since its initial public release, and designed and wrote curriculum for a company in the 90’s that was purchased by Sun Microsystems based on the quality of his Java courses. He spent many years refining his testing skills on the JVM platform, and has taught those techniques professionally for a number of years. He currently runs the consulting company Fulcrologic, LLC in the United States and does a lot of work using the functional programming language Clojure.

Date:

23 March 2018, IASI

Training fee: €250/participant plus VAT, only 25 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Browse more masterclasses here.

 

Masterclass – Effective Testing in Java

We all know that testing is important, but most of us have had little education about the different approaches to testing and are left to teach ourselves. Unfortunately, it takes most people years to learn good habits and techniques, and the mistakes we make when learning are often costly, frustrating, and counter-productive. We end up with slow tests, tests that break for bad reasons, and tests that are impossible to reason about when they fail.  In other words: useless tests.

Date:

22  March 2018, Iasi

Training fee: €250/participant plus VAT, only 25 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

About the training

Many people simply return to the well-known technique of our self-taught days: code it, play with it, move on. In this workshop we’ll concentrate on helping you create tests that are effective: test that run quickly, only fail for good reasons, give you clear information when they break, and are easy to understand when you have to read them (which should be rarely).

This is a hands-on workshop where we’ll actively work through the methods of testing using the Java programming language. If you complete the labs you will have a completely working application that is fully covered, and demonstrates most of the topics covered in the course.

Prerequisites

Participants should already know the Java programming language. At least a year of experience is recommend. The course contains material that even senior develops should find useful. Each participant that wishes to participate in the lab should come with a laptop that has their favorite IDE and git already installed and working. Labs will be done as a git fork of a maven-based Java project that participants will push to in order to share work. IntelliJ will be used by the instructor, but any IDE that can run JUnit tests and load Maven projects is fine.

Course Outline

Lecture 1 – The Basics

  • Demonstration of an effective test suite
  • Criteria of a good test
  • Identifying good tests
  • Why test coverage statistics are nearly useless
  • Test “code smells”: spotting bad tests
  • A summary of helpful rules

Lab 1 – Covering the Basics

  • In this lab you’ll write some simple unit tests that meet the criteria taught in the lesson.
  • Solutions to Lab 1 – Forum for discussion challenges and solutions.

Lecture 2 – The Spectrum of Tests

  • Cost/benefit analysis of manual vs. automated testing
  • Testing in the presence of side-effects
  • Dealing with I/O, Databases, and other “external” systems
  • System Integration Testing

Lab 2 – Dealing with I/O

  • In this lab you’ll write tests that cover the I/O concerns of the lab project.
  • Solutions to Lab 2 – Forum for discussion challenges and solutions.

Lecture 3 – Controlling the Layers

  • Writing Testable Code: Techniques that improve your ability to reason
  • The role of mocking and injection
  • An overview of injection techniques
  • Pros and Cons
  • Mocking code smells
  • Design patterns that can help
  • Language-specific workarounds

Lab 3 – Layered Testing

  • In this lab you’ll see how injection and mocking can make otherwise untestable things easy to test.
  • Solutions to Lab 3 – Forum for discussion challenges and solutions.

Lecture 4 – Managing Complexity

  • Design and Agile practices
  • Separating real complexity from incidental complexity
  • Techniques that leverage testing to enable evolving design over time
  • Some Case Studies as Examples

Lab 4 – Complete the Project

  • In this lab participants will complete the lab project.
  • Final Solution – Forum for discussion about the completed project.

Lecture 5 – Verification, Refactoring, and Code Hygiene

  • Spot-checking the test suite
  • When/why do you refactor?
  • Evolving the specification
  • Continuous Integration

Final Lab – Spot checking and CI

  • Get your tests running in CirclCI
  • Have another participant spot-check review your tests

 

The trainer

Tony Kay is a seasoned developer with over 30 years of experience. He’s been working with Java since its initial public release, and designed and wrote curriculum for a company in the 90’s that was purchased by Sun Microsystems based on the quality of his Java courses. He spent many years refining his testing skills on the JVM platform, and has taught those techniques professionally for a number of years. He currently runs the consulting company Fulcrologic, LLC in the United States and does a lot of work using the functional programming language Clojure.

Date:

22  March 2018, Iasi

Training fee: €250/participant plus VAT, only 25 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Browse more masterclasses here.

Masterclass: Leading, following, or managing? Efficient and effective ways to help your group thrive

We work in teams. Teams that have goals, that work together to solve problems, that sometimes squabble and make up. How people in the group behave depends on the styles of leadership, management and followership adopted in the group, and on each of our individual behaviours.

Date: 23 March 2018, IASI
Training fee: €250/participant plus VAT, only 25 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

About the training

Do we have a mentoring, coaching, managing or leadership role towards others? Are we following or learning from others? Do we influence our colleagues and organisations in public or behind the scenes? Are these interactions built into a formal hierarchy in our group? Have we informally adopted an interaction role? Or have we even been forced into a particular interaction role?

In order that we work together as efficiently and effectively as possible, we need to understand the range of approaches or styles for leadership and management, what styles we feel most comfortable with, and how we react to both being leaders and being led.

It’s not just humans who work in groups. Other animals can tell us about how we interact with individuals, teams, and groups both as leaders and followers. Isabel discusses animal behaviour, predators, animal groups, parasites and epiphytes, and the richness of symbiotic partnership.

We’ll use techniques such as influence diagramming to help us understand behaviour during change, and we’ll look at leadership models to see which ones are appropriate for us.

Regardless of the project model/software life cycle model you use, you’ll need to understand these interactions, and when to adopt a leadership, mentoring, coaching, following, or learning attitude in order to help your group thrive.

Three key points to take away:

  • Gain an understanding of leadership styles and how you react to them;
  • Learn how the team organization and leadership style affects its effectiveness;
  • Understand when to use these approaches most effectively and efficiently.

The trainer

Independent quality and testing consultant Isabel Evans has more than thirty years of IT experience in quality management and testing in the financial, communications, and software sectors. Her quality management work focuses on encouraging IT teams and customers to work together via flexible processes designed and tailored by the teams that use them. Isabel authored Achieving Software Quality Through Teamwork and chapters in Agile Testing: How to Succeed in an eXtreme Testing Environment; The Testing Practitioner; and Foundations of Software Testing. A popular speaker at software conferences worldwide, Isabel is a Chartered IT Professional and Fellow of the British Computer Society, and has been a member of software industry improvement working groups.

Date: 23 March 2018, IASI
Training fee: €250/participant plus VAT, only 25 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Browse more masterclasses here.

Masterclass: Quality in use – the beating heart of the user experience

In today’s business environment, the user experience and the commercial imperatives have become overwhelmingly important. As testers it is vital that we understand quality in use and the user experience, in order that we focus our tests correctly.

Date: 22  March 2018, IASI
Training fee: €250/participant plus VAT, only 25 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

About the training

“Quality in use” measures human, business and societal impacts of products (usability, accessibility, flexibility, commercial, safety). This builds to a User Experience (UX) and are underpinned by technical and engineering qualities. For the people selling, supporting or using the products, this is the beating heart of the customer experience. Without these “big picture” attributes, delivered software will not be acceptable, may result in reduced profits, and may not be legal. In the tutorial, Isabel will use examples from real projects to discuss how to design tests derived from the user personas, contexts of use, and acceptance criteria.

Participants will learn:

  • To distinguish the layers of quality that must be designed and built into products, and tested;
  • How to understand and meet the context of use for each customer persona, from the internal quality through quality in use, to the user experience;
  • How to focus testing on customers, end users and the business;
  • How to select attributes from each layer of the user experience pyramid to track and measure during testing;
  • How to agree acceptance criteria for testing internal quality, quality in use and the user experience.

Three key points:

  • Be able to define who your customers are and what is important to them – personas, contexts and desires
  • Have a method to understand and test how customers experience your product by thinking about the quality layers of user experience, quality in use and internal quality
  • Be able to set acceptance criteria that match to the quality in use for your customers

The trainer

Independent quality and testing consultant Isabel Evans has more than thirty years of IT experience in quality management and testing in the financial, communications, and software sectors. Her quality management work focuses on encouraging IT teams and customers to work together via flexible processes designed and tailored by the teams that use them. Isabel authored Achieving Software Quality Through Teamwork and chapters in Agile Testing: How to Succeed in an eXtreme Testing Environment; The Testing Practitioner; and Foundations of Software Testing. A popular speaker at software conferences worldwide, Isabel is a Chartered IT Professional and Fellow of the British Computer Society, and has been a member of software industry improvement working groups.

Date: 22  March 2018, IASI
Training fee: €250/participant plus VAT, only 25 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Browse more masterclasses here.

Masterclass: Reactive and Asynchronous Java

Date: 15 – 16 March 2018, Cluj-Napoca
Training fee: €600/participant plus VAT, only 25 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

About the training

Reactive and Asynchronous applications are growing in popularity, but what is the best way to build them? This course teaches you how to apply the latest concurrency techniques to develop state of the art Java applications. With the rise of Microservices and Service Oriented Architectures, asynchronous concurrency is now critical to day-to-day Java development.

We start off by reviewing the differences between asynchronous and synchronous programming. You then build upon this theory by refactoring a project using different modern concurrency techniques including promises using Java 8’s CompletableFuture, actors using Akka and reactive streams using RxJava. You’ll learn the good, the bad and the ugly between these approaches in terms of compositionality, testability and simplicity.

Course Outline

Day 1

Asynchronous vs Synchronous Programming

Servlets
Asynchronous Servlets (3.0) and Spring
Why use asynchronous communications?
Solving the C10K Problem and the Microservices Performance problem
Timeouts

Approaches to Concurrency

The Reactive Manifesto and Functional Reactive Programming
Models of Concurrency: Event Based, Promises, The Actor Model, Reactive Streams
The full stack – from application right down to the OS

Promises using CompletableFutures

What is a Promise?
Motivation
ExecutorService
Creation patterns
Composition patterns
Exception handling
Sequence patterns

Day 2

The Actor Model with Akka

What is the Actor model?
Why and when would you use actors?
Using Akka
Testing actors
Recovering from exceptions
Integration patterns

Reactive Streams with RxJava

Introducing Reactive Streams
Connecting Reactive streams to databases and web sockets
Pull vs. Push models
Using RxJava
Java 9 Flow API
Alternative Reactive Stream Implementations
Threading and Back Pressure

The trainer

Richard is an empirical technologist and solver of deep-dive technical problems. Recently he has written a book on Java 8 Lambdas for O’Reilly. He’s worked as a developer in many areas including Statistical Analytics, Static Analysis, Compilers and Networking.

He is a leader in the London Java Community and runs OpenJDK Hackdays. Richard is also a known conference speaker, having talked at JavaOne, Devoxx, JFokus, DevoxxUK, Geecon, JAX London and Codemotion. He has obtained a PhD in Computer Science from The University of Warwick.

Training fee: €600/participant plus VAT, only 25 seats available
To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Browse more masterclasses here.