Masterclass: React component patterns

Date: 9-10 May 2018, Iasi
Days: 2 (16 hours)

Target audience: Intermediate developers (basic React and Redux knowledge
required)

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

 

AGENDA
1. Stateless functions
a. What are stateless functions?
b. When to use
c. Drawbacks
2. JSX spread attributes
3. Destructuring arguments
4. Conditional rendering
a. If
b. Unless
c. If / Else block
5. Arrays as children
a. Usage with functional methods (mapfilter, etc.)
b. Explanation of React keys
6. Controlled vs. uncontrolled components
a. What are controlled components?
b. What are uncontrolled components?
c. Dealing with controlled vs. uncontrolled
d. When to use controlled vs. uncontrolled
e. Drawbacks
7. Container vs. presentational components
a. What are container components?
b. What are presentational components?
c. Reasons behind the split
d. Practice with container vs. presentational in simple React
e. Practice with container vs. presentational in React + Redux
8. State hoisting
a. Advantages of hoisting state
b. Drawbacks and possible gotchas
9. Provider / Consumer pattern
a. New context API in React 16
b. When to use Provider / Consumer pattern
c. Drawbacks
10. Higher Order Components
a. What are HOCs?
b. Practice with HOCs
c. Example of HOCs in the wild (withRouter, connect, etc.)
d. When to use HOCs
e. Drawbacks
11. Functions as child components
a. What are functions as child components?
b. Practice with functions as child components
c. Differences between functions as child components and HOCs
d. When to use functions as child components
e. Drawbacks
12. Short recap

Mentions
This agenda represents the contents for a 2 days (16 hours) based training, covering a great number of React related concepts, knowledge and practical applications. Although the training content can be tweaked on a per case by case basis, for maximum results we recommend sticking with the complete agenda.

Prerequisites
1. Every student will have his/her own laptop. For best results, it is not advisable to multiple people working on the same machine
2. Node v8.9.4 or greater installed (https://nodejs.org/en/download/)
3. Git v2.16.0 installed (https://git-scm.com/downloads)
4. An IDE/code editor of choice (Sublime Text, Atom, Visual Studio Code,
WebStorm, etc.)

Expectations
This training assumes the participants are already familiar with ES6 concepts
(classes, destructuring, default parameters, arrow functions, let/const, etc.), basic JavaScript knowledge and syntax, npm (interacting with the npm ecosystem, package.json), Git (basic commands) and that they have basic React and Redux knowledge (JSX, VDOM, state, props, event management, component lifecycle hooks, actions, reducers, store, mapStateToProps, mapDispatchToProps etc.). Thus, the aforementioned concepts will not be discussed or detailed during the training.

This training targets intermediate developers who would like to upgrade their
React knowledge by finding out more about React component patterns, when
and how to apply them and gain architectural knowledge useful in scaling
applications based on this technical stack.

The trainer
Vlad is a pragmatic software engineer, Google Developer Expert and an avid caffeine consumer. He loves surrounding himself with ever smiling people and he’s constantly pushing his limits in order to become a better professional. He always keeps an eye opened to the ever-changing landscape of technologies he’s interested in. A true believer in the power of sharing your knowledge and becoming a better individual through collaboration and feedback, Vlad regularly speaks at conferences and meetups where he shares his passion for everything tech related.

Vlad is co-organizer of CluJSers, being actively involved in the development of several tech communities and acting as an advisor for a couple of well known
Romanian conferences such as Codecamp and JSHeroes. In October 2016 he
joined the Google Developer Experts group as the second professional in the world with knowledge revolving around the React ecosystem. Shortly after, he founded KRAK3N, his own consultancy company and has been, since then, helping clients and individuals build amazing products, deliver business value, solve complex JavaScript challenges, learn and apply React and embrace Agile methodologies in their work environments.

His teaching experience is vast, Vlad being responsible for mentoring over 100 people while working for companies such as Yonder, 3PillarGlobal or acting as a Fullstack JavaScript Instructor for Viking Code School. For more information about him, feel free to follow him on Twitter, read his personal website, consult his company website or explore a short list of talks he has given so far.

 

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

 

Browse more masterclasses here.

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.

Join the Lukas Eder Masterclass | Codecamp Iasi October 26-27

How Modern SQL Databases Come up with Algorithms that You Would Have Never Dreamed Of

We want to welcome Lukas Eder, founder and CEO of Data Geekery GmbH. He will be joining us at Codecamp Iasi on October 26-27. Lukas is the designer behind the popular ‘jOOQ’ database access library. Recently awarded the title of Oracle ACE, Lukas is fascinated by everything related to Java and SQL.

His inspiration for jOOQ started in 2003, when he was first introduced to Java. Lukas is used to plain JDBC, JDO, EJB 2.0, Hibernate, and EJB 3.2. He argues that 30% of the Java market doesn’t want complete SQL abstraction.

JEE as a language, has separated from SQL; adding even more abstraction. Over the years, Lukas mentions that SQL has evolved into a potent language. As a consequence, jOOQ is the only Java software that attempts to embrace embedded SQL.

How Modern SQL Databases Come up with Algorithms that You Would Have Never Dreamed Of – An Overview

SQL is the only general-purpose, mainstream, and successful fourth-generation programming (4GL) language. And we have to take Lukas Eder’s word when he says “It’s awesome!”. With relational databases such as PostgreSQL, Oracle, and SQL Server that promise a powerful declarative programming language by adjusting to dynamic data without any performance penalties.

His masterclass topic at Codecamp Iasi will cover hands-on guidances on how the SQL database constantly outperforms handwritten data retrieval algorithms. In layman’s terms, how SQL – which is a logic language – is the best language for business logic.

Takeaway

Lukas created a company out of pure passion. “Ever since, I’ve met so many interesting people doing interesting things, inspiring me, letting me inspire them. I hope this intro about me will convince at least one or two other developers out there to pursue their dreams.”

In SQL, value prevails. There’s no identity because an identity is not required. SQL is considered a multiset-based language, where operations don’t occur individually, but as a whole. iOOQ encourages a collective way of thinking where value is the centerpiece of the programming model.

Register for the Lukas Eder Masterclass HERE.