Courses

Are your developers at the top of their game? Could they use some new skills? I can bring some top notch training to your company to help your developers. All classes feature some lectures and lots of exercises.

I have been doing web development for over 20 years and in that time have made every mistake under the sun. I want to take what I have learned along the way and share it with your team so they can skip those errors.

I have also spent countless hours researching the best of web development and want to share it with your team.

Testing JavaScript with Mocha & JSVerify

Length 3 days

As more and more of the development for the applications, we depend on moves to JavaScript we need to get better at testing our Code. This class is a 3-day boot camp designed to help developers learn how to test web code effectively. Students will learn how to test driven development and use tests to find and isolate bugs in their code.

The course will cover writing tests with Mocha and JSVerify for both frontend JavaScript and Node.js applications. The goal of the course is that at the end of three days that students should feel ready to do Test Driven development and write exploratory tests to find defects that may exist in a code base.

It will also teach students to use JSVerify to do property-based tests which can find the corner cases that they may not have thought of and further check for correctness of an application.

Students will be expected to know JavaScript before the course starts and should plan to bring a laptop with npm or docker installed. 

Learning Goals include

  • Introduction to testing
  • Unit tests with Mocha
  • Test Driving Development
  • Generating tests with JSVerify
  • Generating data for tests
  • Generated Testing patterns
  • Testing Front End Code
  • Testing NodeJS applications
  • Testing AngularJS with property based tests

For more information email zkessin@gmail.com

Testing systems with Python and Hypothesis

Length 3 Days

This course will show you how to use Python and Hypothesis to generate tests for complex systems. It will start with an introduction to using Hypothesis to do unit testing of Python code.

On day 2 it will dive into using Hypothesis to generate sequences of events and using them to test apis and systems with state. We will explore how to model systems and find sequences of events that can break that model.

Finally the course will look at how to test applications in web browsers with Selenium, and how to generate sequences of events for a browser and how to validate those vs a model.

Students will be expected to have a knowledge of Python.

You will need a laptop with Docker installed for this class.

Learning goals include

  • Introduction to Testing with Hypothesis
  • Data Generation Strategies
  • Testing Assertions
  • Mapping and Filtering generated data
  • API Sanity Testing
  • Hypothesis Patterns
  • Shrinking
  • Testing Sequences of Events
  • In browser testing with Selenium
  • Testing Network faults with Docker

For more information email zkessin@gmail.com

Introduction to Elm

Length 3 Days

A class on using the Elm language for web development. Elm is a new language that brings a type safe programing language to the web. Elm was created with programmer experience as a key feature.

This course will teach students how to build a single page web application with Elm. It assumes some knowledge of JavaScript. Students will be given ample time to try building programs in Elm and working with existing JavaScript code bases.

  • The Elm ecosystem
  • Elm syntax
  • Elm types
  • Designing data types
  • Using Elm Packages
  • The Elm Architecture
  • User Interaction
  • Elm Packages
  • Testing Elm
  • Interacting with JavaScript
  • Interacting with servers (Ajax)
  • Refactoring Elm code

For more information email zkessin@gmail.com

Introduction to Erlang

Length 4 Days

This course will show developers how to build concurrent software in Erlang. I will introduce students to Erlang and walks them threw the complexities of the language.

This course will start with the basics of sequential Erlang, and will go on to show how to build up complex reliable systems. It assumes that students have little or no Erlang experience. It does assume prior programming experience in another language like Java, JavaScript, C#, Ruby etc.

Students will get PDF copies of the slides, access to a git repository with all the exercises and plenty of experience actually coding Erlang.

Topics will include

  • Using the Erlang Command line
  • Use of Rebar3
  • Overview of the Erlang eco system
  • Building Erlang functions
  • Basic Erlang syntax
  • Pattern Matching and Guards
  • List Comprehensions
  • Recursion
  • Erlang data types: Integer, Float, Atom, tuple, list, record, map etc
  • Sequential Erlang
  • Concurrent Erlang
  • OTP
  • ETS/Dets/Mnesia
  • Deploying and operating Erlang Systems

For more information email zkessin@gmail.com

Testing Erlang

QuickCheck (including PropEr and Triq) is a way of having your system generate test cases and find those strange corner cases for you. This class will introduce QuickCheck in Erlang. It will feature extensive workshops to get students used to creating QuickCheck properties.

It can be taught with either Quiviq EQC, PropER or Triq as required.

A 3 day class on how to test Erlang code, Assumes some knowledge of Erlang. This class would make an excellent follow up to the Intro to Erlang Class.

Topics will include

  • Unit testing with EUnit
  • Using dialyzer to test code
  • a deep dive into writing tests with QuickCheck
  • testing stateful systems with QuickCheck.
  • QuickCheck Patterns

For more information email zkessin@gmail.com

Introduction to Elixir

Length 3 Days

If your Rails stack is no longer keeping up, or you are pulling your hair out over Node.JS consider moving to a stack that has seen huge scale in places like WhatsApp, Bet365 and more. Elixir is the best way onto the stability and scale of Erlang.

Elixir draws on the heritage of Erlang to make concurrency actually reasonably easy to build and leverage unrivaled fault tolerance.

This course will show developers how to build concurrent software in Elixir. I will introduce students to Elixir and walks them threw the complexities of the language.

This course will start with the basics of sequential Elixir, then add concurrency and finally will go on to show how to build up complex reliable systems. At the end of the course students will be able to start building applications with Elixir and the Phoenix web toolkit.

It assumes that students have little or no Erlang experience. It does assume prior programming experience in another language like Java, JavaScript, C#, Ruby etc.

Students will get PDF copies of the slides, access to a git repository with all the exercises and plenty of experience actually coding Erlang.

Topics will include

  • Using the Elixir Command line
  • Use of Mix
  • Overview of the Erlang eco-system
  • Building Elixir functions
  • Basic Elixir syntax
  • Pattern Matching and Guards
  • List Comprehensions
  • Recursion
  • Elixir data types: Integer, Float, Atom, tuple, list, record, map etc
  • Sequential Elixir
  • Concurrent Elixir
  • OTP - GenServers, Supervisors and more
  • Building Web applications with Phoenix
  • Deploying and operating Elixir Systems

For more information email zkessin@gmail.com

Coming soon

  • Intro to Elixir/Phoenix
  • Testing Elixir
  • Deploying Erlang and Elixir

All classes are for up to 16 people. You are responsible for providing a room, projector and student workstations.

Classes can be taught on site in the USA, Europe or in Israel. (Other locations are possible too, please email) zkessin@gmail.com

Language of Instruction is English