November 26-29, 2017 | The New Conference Center, Kfar Maccabia, Ramat Gan, Israel

SELA|DEVELOPER|PRACTICE

Professional developers conference

63 sessions

50 speakers

Sessions

  • Sunday, November 26: Breakout Sessions

    KEYNOTE: These Aren't The Requirements You're Looking For 09:00 - 09:50 Udi Dahan

    Even in organizations that have adopted Agile, most projects head in the wrong direction almost from day one. The pain that inevitably follows is blamed on the technology, the methodology, not enough time -- but the truth is that there's a darker force at work.

    Level: 200
    Prerequisites: None

    Ansible: A Quick Tour 10:10 - 11:00 Moshe Shami

    Business applications may include many servers, a lot of configuration, and complex deployments. If you want to keep your application as agile as possible and to spin up your system in a few minutes (or seconds), you need a configuration management tool that automates your provisioning, configuration, and deployment. Ansible can do all of this in a very simple and intuitive way, allowing you to script your configuration and deployment and use the infrastructure as code pattern. In this talk we will get to know Ansible and understand how to script up your infrastructure with Ansible and Python.

    Level: 300
    Prerequisites: None

    Spatial Data in ElasticSearch 11:20 - 12:10 Aviv Berko

    This talk will cover everything you need to know about geospatial data in ElasticSearch! We will learn how to store and index geographic data in ElasticSearch, the ways to search it and how to use geo aggregations and visualizations.

    Level: 300
    Prerequisites: Basic familiarity with ElasticSearch

    From SQL to Kinesis, EMR, and Elastic 13:10 - 14:00 Itamar Syn-Hershko

    That thing that happens when your company is scaling so fast you have to replace your infrastructure within weeks or the whole thing crashes. This is what happened to our customer, and this is the story of how we replaced good-ol' SQL with streams and batch processing technologies on AWS. Using Terraform, Packer, Elasticsearch, AWS Kinesis, Lambda and EMR we were able to provide a truly scalable solution in a matter of weeks, without hurting production and while dealing with a huge scale. In this talk we will quickly go through the design phase, the various stake holders and how we improved their usage of the system, and introduce the tools that helped us make this happen.

    Level: 300
    Prerequisites: None

    Set Yourself Free With CosmosDB 14:20 - 15:10 Roland Guijt

    Normalize, normalize, normalize! If you close your eyes at night you’re still normalizing your relational database while having nightmares about how to create all these complex joins without loosing too much performance. Set yourself free! Use a document DB. If you’ve never seen one before, don’t worry, I’ll quickly explain the basics at the beginning of this session. There’s smart, fast, highly scalable and ready-to-go document DB product in the Azure cloud for you named CosmosDB. Using an example application I will show you how easy and familiar it is to use it with the .NET API that is available for it. At the end of the session you will be much more relaxed when the database topic comes up and I guarantee a better night-time sleep!

    Level: 200
    Prerequisites: None

    Docker For a .NET Web Developer 15:30 - 16:30 Maurice de Beijer

    You have probably heard about Docker, these days it is a popular topic with cloud computing. But what does it take for a .NET developer to start with Docker? And where can you use it? Of course, you can deploy an application to the cloud using Docker. But you can also use Docker very effectively as a support tool when developing or testing. In this session, Maurice de Beijer will show you some of the many opportunities to use Docker.

    Level: 200
    Prerequisites: None

    Microsoft And Open Source Integration 10:10 - 11:00 Shmulik Segal

    Microsoft is quickly moving to support open source development, open source operating systems, and open source IT. You can see it with their purchase of Xamarin to support cross-platform development, the partnership with Red Hat, integration of Java support in TFS and VSTS, Git support in Visual Studio, cross-platform builds from VSTS, Azure support for open source technologies, and a lot more. In this talk we will learn more about this change and how this integration can make your development process more flexible and more robust.

    Level: 200
    Prerequisites: None

    Test Automation Architecture 11:20 - 12:10 Arnon Axelrod

    Like any software project, test automation has an architecture (whether solidly planned, or an “accidental” architecture). In addition, the architecture of a test automation project is tightly related to the architecture of the application under test. In this talk, we’ll discuss various important aspects of the architecture of test automation, with many real-world examples. In particular we’ll discuss architectural patterns that affect the reliability of the tests, including the development and use of simulators for things that are beyond the reach of the end user.

    Level: 300
    Prerequisites: None

    Data-Driven Testing 13:10 - 14:00 Natalia Meergus

    Data-driven testing is a powerful yet overlooked technique to take your tests to the next level. We will learn how to implement data-driven tests in Visual Studio with C#, from where you can easily take the ideas to implement them in other frameworks. I will then share with you some less obvious benefits of data-driven testing, which come with team collaboration. We will also discuss some real-life examples of more advanced ways to employ data-driven tests.

    Level: 300
    Prerequisites: C# development experience

    Google Cloud Source Repositories And Container Registry 14:20 - 15:10 Leon Jalfon

    In this session we will see how to use the tools provided by Google Cloud to increase productivity and automate the process of software development, making it faster and more efficient. For this purpose, we will store our application's code in the cloud using Cloud Source Repositories (Git repositories hosted on GCP), followed by using the Container Builder to automatically build a container from after each commit, and Container Registry to store the container images. Finally, we will see how to configure continuous deployment for test and production branches using Container Engine and use Kubernetes to allow Google Clodu to take care of automatic scale and reliability based on resource utilization.

    Level: 200
    Prerequisites: None

    Continuous Delivery of Microservices on AWS 15:30 - 16:30 Itshak Eli

    Docker, microservices, continuous delivery are some of the most popular topics in the world of programming today. In an environment consisting of dozens of interacting microservices, automating testing, building, and deployment is particularly important. Docker is an excellent solution for microservices because it helps create and run isolated containers hosting each service. In this session, we will see how to create a continuous delivery pipeline for sample microservices. We will use GitHub, Jenkins Pipeline, Docker, Docker Hub, AWS Spot Fleet, and AWS ECS to create a deployment pipeline for a web application that is updated automatically every time you change your code.

    Level: 300
    Prerequisites: None

    Angular 1 vs. Modern Angular 10:10 - 11:00 Dmitri Abramchaev

    In this heavily opinionated talk I'll try to convince you to embrace the glory of the new Angular (2 and up) as opposed to the old Angular (1.x). We will be comparing and contrasting some of the core mechanics and principles behind Angular, like the differences in how change detection, dependency injection, and template compilation are implemented. We will also look at Angular's unidirectional data flow model and heavy use of observables and immutability compared to the scope-based model.

    Level: 300
    Prerequisites: Angular development experience

    Understanding Service Workers 11:20 - 12:10 Dovi Perla

    A key problem that web users have suffered from for years is loss of connectivity. The best web app in the world will provide a terrible user experience if you can't download it. There have been various attempts to create technologies to solve this problem, and some of the issues have been solved. But the key problem remains that there still is no good control mechanism for asset caching and custom network requests. Service workers should finally fix these issues. Using a service worker, you can use easily set up an app to use cached assets first, thus providing a default experience even when offline, before getting more data from the network (commonly known as offline-first). This is already available with natie apps, which is one of the main reasons native apps are often chosen over web apps. In this talk, we will see how service workers can be used in modern web applications.

    Level: 300
    Prerequisites: Web development experience

    Top 10 Browser Threats 13:10 - 14:00 Roland Guijt

    Cross site scripting attacks, cross site request forgery and redirection attacks are just a few of the many threats that applications in a browser face. These threats are easily mitigated using features that come with every standard browser nowadays. The problem is you need to know that they’re there and how to turn them on. In this session we’ll take a look at the top 10 most common vulnerabilities in the browser and I’ll give you a fitting solution for each problem right away!

    Level: 300
    Prerequisites: Web development experience

    ASP.NET Core Web API 14:20 - 15:10 Amir Adler

    Millions of developers have used ASP.NET, and continue to use it. ASP.NET Core is a redesign of ASP.NET for the modern world, with architectural changes that result in a leaner and more modular framework. ASP.NET Core provides features that help you build web APIs, and ASP.NET Web API is an ideal platform for RESTful applications on the .NET Framework. In this session we will first introduce ASP.NET Core, and then show how to build Web APIs on top of ASP.NET Core.

    Level: 200
    Prerequisites: Web development experience

    Node.js Security 15:30 - 16:30 Liran Tal

    Security is often an overlooked topic for JavaScript developers whether on the frontend or backend stack. In this session we will review essential security topics such as NoSQL injections, ReDOS attacks, insecure dependencies, and employing the use of HTTP headers for enhanced security.

    Level: 300
    Prerequisites: Node.js development experience

    What Does The Manager Have to Know? 10:10 - 11:00 Galit Dayan

    The new era is different: it brings along new and challenging management experiences. Traditional management tools hardly help anymore with complex situations. In this talk we will learn about the changes in the management world, and acquire 12 guiding tools and tips for coping, leading, recruiting, creating an impact, collaborating, and more.

    Level: 200
    Prerequisites: None

    Positive Thinking: The Way of Effective Management 11:20 - 12:10 Galit Dayan

    What is positive thinking? Why do leaders and the management world see it as the key to find balance between work and personal life? 80% of all startups work using positive thinking and reach success, innovations, and breakthrough. So, how do they do it? In this session we will understand the concept of positive thinking, the positive management platform, and learn about tools for balancing and developing the personal positive center of each attendee.

    Level: 200
    Prerequisites: None

    The Zombies: Your Organization's Transparent Employees 13:10 - 14:00 Yael Greenberg

    How do we wake them up from their coma and turn them into involved and contributing employees? In this fascinating session, we will learn how to identify zombie employees and take care of the problem; how to make employees work for the dream and not the salary; how to reduce their absence days and sick days, improve employee retention and gain higher productivity.

    Level: 200
    Prerequisites: None

    Management in The Integrated World 14:20 - 15:10 Gil Baruch

    The products we develop become more complex and integrated each year. As the industry invests many resources and technological efforts in developing complex products, too few resources and attention are dedicated to management in the integrated world of the 21st century. In this talk we will discover what exacty is the change that will bring your ogranization to the next level of efficient management, and why old-fashioned management approaches are not enough.

    Level: 200
    Prerequisites: None

    Effective and Efficient Project Management 15:30 - 16:30 Rostislav Aronov

    Running a software project is not a trivial task. The definition of success is clear: on time, on quality, and on budget. How can we increase our chances to succeed? What tools can help us?

    Level: 200
    Prerequisites: None

  • Sunday, November 26: Full-Day Workshops

    Introduction to F# 10:00 - 16:30 Avi Avni

    In this workshop you will learn how to explore and visualize data with an F# unique feature called Type Providers, which help work with the data without leaving the IDE. We will begin with some necessary practice to start working with F#, show how F# components can be consumed from C# in an existing application, and end up with a fully functional application that combines C# and F# code. F# is a mature, open source, cross-platform language that can run on the .NET Framework, CoreCLR, Xamarin, and even in the browser and on mobile devices with React and React Native. F# is a great functional-first language with a great community. Bring a laptop with any operating system and Visual Studio Code.

    Level: 300
    Prerequisites: .NET development experience

    Event-Based Applications: A Practical Guide 10:00 - 16:30 Dino Esposito

    Event Sourcing and CQRS are known patterns that nearly every developer understands and loves. However, turning those principles into practice is sometimes source of lingering confusion. The problem is in the different levels at which frameworks and applications operate. There are plenty of concrete solutions to do event-sourcing but no clear guidance for the design of the surrounding application and no frameworks that help on both sides. MementoFX is a new framework that sits on top of any sort of bus and NoSQL store and provides an API for writing CRUD-style applications with the full power of events. We explore events and commands, we design sagas and handlers, we deal with exceptions and processes, we focus on scalability issues and Azure tradeoffs. We finally come to the conclusion that the best place for events is the backend, invisible to us, but ready to provide business information on demand.

    Level: 300
    Prerequisites: .NET development experience

    Microservices Architecture And Development (1/2) 10:00 - 16:30 Udi Dahan

    Go beyond the hype and build a solid foundation of theory and practice with this workshop on SOA development. Join Udi Dahan for a two-day deep-dive covering architectural topics like UI decomposition, data ownership across the enterprise, and how to choose a NoSQL database for your services. You will also learn the nitty-gritty detailed of building production-ready services, including fault-tolerance with HTTP and queues, reliable integration with 3rd party systems, monitoring, high availability, and versioning. You will also get some hands-on experience in service development using NServiceBus for building scalable command-processing endpoints, publish/subscribe event-processing interactions, and long-running multi-stage business processes and policies.

    Level: 300
    Prerequisites: .NET development experience

    Machine Learning With TensorFlow 10:00 - 16:30 Barak Chamo

    Machine learning, the automation of analytical models and insights, is at the forefront of modern data science. In this deep dive into Machine Learning with TensorFlow we will cover the basic principles and algorithms in ML, discuss the different approaches (wide vs. deep) and how they can be applied to solve a variety of problems. Working with example datasets, workshop participants will gain hands-on practical ML experience that they will be able to apply to data science problems in their particular domains. Bring a laptop with any operating system and a working installation of Python.

    Level: 300
    Prerequisites: Working knowledge of Python

    Putting Windows Workloads Into The Cloud 10:00 - 16:30 David O’Brien

    Cloud Mode 0, 1 and 2. We hear about this all the time and it is great that people talk about serverless and containers, but mainly this is done in the context of non-Windows workloads. We will spend the day deploying and developing Mode 0, 1 and 2 Windows workloads into both Azure and AWS. Be prepared to see a lot of code, but also UIs and mouse clicks in those UIs. Be prepared for tooling overload, from Docker to packer, to chocolatey, via PowerShell to bash and python and then some VSTS, Jenkins and CodePipeline. At the end of this day attendees will have a bucket full of tools, lots of ideas for Windows in the cloud and an understanding that cloud at scale does not automatically mean Linux. Bring a laptop.

    Level: 300
    Prerequisites: None

  • Monday, November 27: Breakout Sessions

    Self-Aware Applications 09:00 - 09:50 Dina Goldshtein

    The road to zen winds through self-monitoring applications, which can reduce the time and effort in diagnosing and correcting production issues. In this talk, we will see how modern Windows applications can self-monitor, self-diagnose, and potentially self-recover without needing an external monitoring agent or a brute-force restarting watchdog. By harnessing the power of ETW for low-level accurate monitoring, Windows performance counters for zero-overhead statistics, and the CLRMD library for inspecting your own threads, heap objects, and locks, you can take your applications one step closer to self-awareness. This will be illustrated through a series of demos: automatic CPU profiling and pinpointing the busy threads and stacks; automatic GC monitoring, including object allocations; automatic heap analysis to reveal unraveling memory leaks; and more. At the end of the talk, you will be equipped with tools and techniques for implementing self-monitoring in your own applications.

    Level: 300
    Prerequisites: .NET development experience

    Virtual Actors With Microsoft Orleans 10:10 - 11:00 Uri Goldstein

    The Actor Programming Model is an innovative coding abstraction that simplifies the development of high-performance distributed systems. In this talk we'll get introduced to Orleans - a free, open source implementation of "virtual" actors, from Microsoft. We'll learn the basic concepts through a live code demo on stage and understand how the technology is leveraged at high scale in Microsoft's own Halo 5 multi-player game servers.

    Level: 200
    Prerequisites: .NET development experience

    HoloLens For .NET Developers 11:20 - 12:10 Liron Ratzabi

    Level: 200
    Prerequisites:

    PowerShell Core 13:10 - 14:00 Dor Amit

    PowerShell Core is a cross-platform (Windows, Linux, and macOS) automation and configuration framework that works well with your existing tools and is optimized for dealing with structured data (JSON, CSV, XML), REST APIs, and object models. It includes a command-line shell, an associated scripting language, and a framework for processing cmdlets. PowerShell Core runs on top of .NET Core, a cross-platform, open-source version of the framework powering most of the Windows world. In this talk, we will cover the key differences between Windows PowerShell and PowerShell Core, the PowerShell Core roadmap, how to use it on Linux, business usecases, and a live demo with PowerShell Core 6.0 Beta 5 (the latest release).

    Level: 200
    Prerequisites: Familiarity with PowerShell

    What's New For High-Performance .NET 14:20 - 15:10 Sasha Goldshtein

    With the advance of .NET Core, open source contributions, a Linux port, and a general reinvigoration of interest in the .NET platform, there are considerable performance benefits available for reaping. In this talk, we will discuss some of the new features that help build high-performance .NET applications: vectorization with System.Numerics.Vectors, ahead-of-time compilation with .NET Native and CoreRT, the Span<T> API, modern benchmarking and performance testing frameworks, and other topics.

    Level: 300
    Prerequisites: .NET development experience

    Xamarin Forms From The Trenches 15:30 - 16:30 Maxim Rikel

    With Xamarin.Forms, it is now possible to build an application once and run it on all mobile platforms. In this talk, we will see how to build native apps for iOS, Android, and Windows from a single C# codebase, and discuss code-sharing best practices.

    Level: 300
    Prerequisites: C# development experience

    Cloud Monitoring Solutions 09:00 - 09:50 Idan Yona

    In this talk, we will discuss online monitoring services for cloud infrastructure and applications running on top of them. We will look at the why and how of setting up integrated monitoring for your application with examples on leading clout platforms (Google Cloud Platform, Amazon Web Services, Microsoft Azure).

    Level: 200
    Prerequisites: None

    Serverless Compute on Azure 10:10 - 11:00 David O’Brien

    Serverless compute is the new hype with a strange name. We will focus on Azure Functions, Logic Apps and Cognitive Service and the experience developers will get working with these rather new Functions as a Service offering on Microsoft Azure. In this session we will take a step beyond the “Hello World” example and follow a line of code from idea to production through the whole CI/CD life cycle using other Microsoft Cloud services and open source tools. Don’t worry if you haven’t worked with Azure Functions yet, we will start at the basics and then dive deep into the concepts.

    Level: 300
    Prerequisites: None

    Google BigQuery Tips And Tricks 11:20 - 12:10 Aviv Berko

    Google BigQuery is an enterprise, fully managed, analytics data warehouse that you can use to run super-fast standard SQL queries over massive amounts of records. In this session, we will discuss how BigQuery works, how to use it from modeling your data to querying it with many cool tips and tricks available on BigQuery.

    Level: 200
    Prerequisites: Basic familiarity with SQL

    Python on AWS 13:10 - 14:00 Kobi Eldar

    Level: 200
    Prerequisites:

    Deploying Microservices on AWS 14:20 - 15:10 Michael Haberman

    Microservices is a great architecture that allows flexibility, but with great flexibility comes a big challenge: building microservices correctly, deploying them, and monitoring them. We will review how AWS helps with this challenge without going the serverless route, but by managing our own servers. We will look at AWS native solutions as well as some 3rd party ones.

    Level: 300
    Prerequisites: Familiarity with AWS

    Azure Container Instances 15:30 - 16:30 Rob Richardson

    Hot off the presses, Azure Container Instances are the newest in the Azure Docker tools. From the CLI or the Portal, spin up Windows or Linux Docker containers. We’ll look at each of the Azure Docker offerings, and dig deep into Azure Container Instances. You can use Docker on Azure today.

    Level: 300
    Prerequisites: Familarity with Docker

    KEYNOTE: Looking For Trouble 09:00 - 09:50 James Lyndsay

    I see testing as systems analysis. How I interact with working systems to find dangers, frustrations and disappointments. How I work with colleagues to support them as they build and configure the software parts before their clients start to rely on these systems.

    Level: 200
    Prerequisites: None

    System Level Automation: The Missing Layer 10:10 - 11:00 Amit Wertheimer

    “Copy... paste... modify one line... done!” Writing system-level automation can be quite complex - and for some odd reason, many testers have their first work related coding in this area. Luckily for us, the internet is here to help. There are many good advice on everything we might need - there are (open source) tools that cover the upper layers: frameworks that support BDD or KDT, enable easy maintenance of multiple test suites and re-running failed tests. There are awesome tools that cover the lower layers that enable driving browsers or mobile devices, send REST or SOAP requests and generally do whatever we might want to do. So how come our test-code is so difficult to maintain? Why doesn’t it look as pretty as the examples we find online? The reason for that is that the advice we find are missing one part - the part where no generic tool can really help you: organizing the business actions in a way that is easy to both maintain and use. In this talk we’ll go over three ways of organizing your automation middle layer - from a quick gain for the short term that you probably already use, to something a bit more elaborate that your future selves may not hate.

    Level: 200
    Prerequisites: None

    Just Enough Testing 11:20 - 12:10 Kobi Halperin

    Test design from theory to real-life considerations: "Just enough" testing and test documentation. Are we using our testing efforts right? Where should we focus? How can we reduce the test documentation effort while keeping it "just enough" to be able to track, manage, and direct the tests, and at the same adapt our test approach to be aligned with the designed tests and enable a quick feedback loop.

    Level: 200
    Prerequisites: None

    Performance And Load Testing Workshop (1/2) 13:10 - 14:00 Alon Linetzki

    Delegates will discuss all the main issues of performance testing concerning business compelling needs, constructing a load simulation model, where in the SDLC performance and load testing should be introduced, and the skillset required to do it. The workshop will supply well-established techniques and principles to be applied for performance and load testing.

    Level: 300
    Prerequisites: Intermediate or advanced testing experience

    Performance And Load Testing Workshop (2/2) 14:20 - 15:10 Alon Linetzki

    Delegates will discuss all the main issues of performance testing concerning business compelling needs, constructing a load simulation model, where in the SDLC performance and load testing should be introduced, and the skillset required to do it. The workshop will supply well-established techniques and principles to be applied for performance and load testing.

    Level: 300
    Prerequisites: Intermediate or advanced testing experience

    The Agile Tester as a Quality Leader 15:30 - 16:30 Mor Shaul

    Testing always begins with a plan. Documented or not, this plan can be leveraged to the benefit of the entire Scrum team. The QA tester of the Scrum team should be thoroughly familiar with the business requirements and also be able to pursue the full story/epic coverage. When combining the QA role with the Scrum methodology, one can reach new levels of quality assurance for the product. The QA plan for a specific story can be used from the first development phase and can be translated to TDD, unit tests, integration tests and automated E2E tests. Implementing this process, the QA tester becomes a focal point of the team, while other team members gain a new perspective of the feature being developed. In my presentation I will explain how we do it in Sapience DECISION.

    Level: 200
    Prerequisites: None

    Cyber Security Testing Aspects 10:10 - 11:00 Roni Deutsch

    In this talk, we will discuss the key elements on a web application from the attacker's point of view. We will show examples of exploiting weaknesses in various environments: the client, media, server, and database. We will look at sub-components for security testing, and discuss cyber solutions for dealing with these weaknesses. Finally, we will also talk about our cyber security legal responsibility -- from the testers to the test manager, project manager, and general manager in our organization.

    Level: 200
    Prerequisites: None

    The True Power of The Tester Is Information 11:20 - 12:10 Igor Goldhsmidt

    One of the main goals of a QA engineer is to collect as much information as possible about the state of the product and the process of its development. Owning this information gives an incredible power to the tester. In this talk, we will discuss how to get and master this power: the sources of information, including "secret" documentation and active analysis; information storage; support and maintenance; and the use of force.

    Level: 200
    Prerequisites: Agile QA experience

    Web Accessibility Testing 101 13:10 - 14:00 Alon Fridman Waisbard

    With growing awareness about the need for an accessible web, as well as the progress in legislation around the world (including Israel), it's crucial for any web company to test the accessibility of their products. In this talk participants will get the all they need for getting started in this field. This talk focuses on common accessibility issues, using a variety of testing techniques and tools for finding them, as well as understanding how to fix / prevent them. Although created for software testers, this talk is also for web developers, product managers, web designers, and basically anyone who is part of a team creating stuff for the web and who is not familiar with web accessibility concepts, standards and tools. No previous knowledge is required. Basic HTML terms will be used and explained.

    Level: 200
    Prerequisites: Testing or development experience for the web

    Transition to Agile From a Personal Point of View 14:20 - 15:10 Doron Bar

    In this talk, Doron will share his experience of successful transit from waterfall to agile focused on QA aspects. He will discuss the transition process, what went well and what could be improved. The audience will gain practical advices about: successful transition from waterfall to agile from testers and test managers point of view; the main differences for testers between waterfall and agile; how to succeed as an agile tester. The talk will fit most testers and test managers that are going to transit to agile or that transited lately. It will also give waterfal testers a high level view on what is agile testing.

    Level: 200
    Prerequisites: None

    SAFE Agile Transformation 15:30 - 16:30 Igal Levy

    Level: 200
    Prerequisites:

  • Monday, November 27: Full-Day Workshops

    Angular Master Class (1/2) 09:00 - 16:30 Nir Noy

    In this two-day workshop, you will learn all the necessary fundamentals to build your own Angular applications. Angular is an advanced client-side framework based on the MVC pattern that allows developers to extend the HTML vocabulary and make the written code much more expressive and readable. With Angular, developers can create custom HTML elements with complex behaviors, two-way data binding, and much more. In the workshop we will discuss Angular services, dependency injection, validation, directives, routing, unit testing, animations, and many other topics.

    Level: 200
    Prerequisites: Web development experience with JavaScript

    ASP.NET Core Programming Practices 09:00 - 16:30 Dino Esposito

    In this workshop, you will build a realistic template of an ASP.NET Core application. In doing so, you will explore the structure of the runtime environment, configuration, error handling, authentication, and HTML rendering. You will see what's different with the current ASP.NET, and how to approach the issue of migration. Anybody with interest in the new ASP.NET platform is potentially interested to this workshop. Past experience with ASP.NET MVC would help significantly but just because ASP.NET Core is a new platform all attendees are essentially on the same level and in condition of getting the most out of it. The workshop emphasizes the parts of ASP.NET Core that have been redesigned (runtime, middleware, configuration) and the new peaks of potential performance it enables to reach. Given time constraints it can’t provide a full coverage of all topics but it focuses on having some common practices (error handling, actions, configuration, authentication, authorization) implemented in the expected way. Migration and adoption of the new framework are also points being discussed across the entire workshop. Bring a laptop with Visual Studio 2015/2017.

    Level: 300
    Prerequisites: Familarity with ASP.NET

    Microservices Architecture And Development (2/2) 09:00 - 16:30 Udi Dahan

    Go beyond the hype and build a solid foundation of theory and practice with this workshop on SOA development. Join Udi Dahan for a two-day deep-dive covering architectural topics like UI decomposition, data ownership across the enterprise, and how to choose a NoSQL database for your services. You will also learn the nitty-gritty detailed of building production-ready services, including fault-tolerance with HTTP and queues, reliable integration with 3rd party systems, monitoring, high availability, and versioning. You will also get some hands-on experience in service development using NServiceBus for building scalable command-processing endpoints, publish/subscribe event-processing interactions, and long-running multi-stage business processes and policies.

    Level: 300
    Prerequisites: .NET development experience

    Designing .NET Solutions in a Docker Ecosystem 09:00 - 16:30 Alex Thissen

    This workshop covers the end-to-end design of a .NET solution intended to run in a Docker environment. From infrastructure to architecture and technology selection, build and release pipelines, we will cover everything to get you up to speed with Docker and .NET in modern web applications. The focus will be on the aspects that are different when compared to a traditional .NET application. We will discuss APIs to run in a Docker cluster, working with different environments, networking and security, Visual Studio 2017 and Docker Compose, Docker registries, provisioning Docker clusters in Azure, building container images in VSTS, and releasing images to a Docker cluster. Bring a laptop with Visual Studio 2017 and Docker installed.

    Level: 300
    Prerequisites: .NET development experience

    Git From Scratch 09:00 - 16:30 Leon Jalfon

    Git is the de-facto standard for distributed source control and management. Unfortunately, it's not trivial to get started with, especially if you're used to centralized source control systems like TFVC, CVS, or SVN. Mastering Git takes a series of paradigm shifts, which we will go through in this workshop aided by a set of simple hands-on labs. From the basic fork-clone steps we will proceed to staging and committing changes, undoing work, pushing and pulling, branching and merging, and advanced topics if time permits. Bring a laptop with any operating system and a recent installation of Git.

    Level: 200
    Prerequisites: None

  • Tuesday, November 28: Full-Day Workshops

    Angular Master Class (2/2) 09:00 - 17:00 Nir Noy

    In this two-day workshop, you will learn all the necessary fundamentals to build your own Angular applications. Angular is an advanced client-side framework based on the MVC pattern that allows developers to extend the HTML vocabulary and make the written code much more expressive and readable. With Angular, developers can create custom HTML elements with complex behaviors, two-way data binding, and much more. In the workshop we will discuss Angular services, dependency injection, validation, directives, routing, unit testing, animations, and many other topics.

    Level: 200
    Prerequisites: Web development experience with JavaScript

    Mastering Linux Performance Tools 09:00 - 17:00 Sasha Goldshtein

    All kinds of applications run on Linux, from web servers to distributed database engines and embedded applications. Troubleshooting performance in the field, especially when invasive profilers can't be used, is a delicate art that requires a solid understanding of the system and low-overhead tools. In this workshop, we will visit a spectrum of Linux performance monitoring tools. We will start with a simple performance checklist based on the USE method, including tools like top, iostat, vmstat, mpstat, sar, and others. Then, once we identify the overloaded resource, we will dig in deeper using perf: tracepoints, hardware events, dynamic probes, and USDT. We will also collect stack traces of heavy events (CPU usage, disk accesses, network) and visualize them using flame graphs. Finally, we will discuss the emerging superpower for Linux performance monitoring: BPF and BCC. This is a new kernel technology that enables low-overhead, super-efficient monitoring and tracing tools, which perform aggregation closer to the source where the events occur and provide useful information at a fraction of the cost. We will review a performance checklist based on BCC tools, and explore one-liners from the general-purpose trace and argdist tools. Bring a laptop with any operating system and a Chromium-based browser.

    Level: 300
    Prerequisites: Linux development or operations experience

    Beyond Async And Await 09:00 - 17:00 Bnaya Eshet

    This is a full-day workshop focusing on async and await theory and practice. You will gain deep understanding of async methods, how to use them right, best practices, and useful patterns. Although they seem easy on the surface, async methods and the await keyword are full of tricks and pitfalls that you need to remember in order to write efficient asynchronous code. This day is designed for developers currently using async and await for their systems, and also for developers who have experience with asynchronous programming using the TPL or other threading libraries. Bring a laptop with Visual Studio 2015/2017.

    Level: 300
    Prerequisites: Experience with asynchronous programming in .NET

    Mastering Spark 2.x 09:00 - 17:00 Moshe Shami

    Spark is the leading distributed data processing ecosystem and has a key role in the Big Data initiative. Spark includes many frameworks built on top of the Spark core: Spark Streaming, Spark SQL, GraphX, and MLLib. If you feel that the Spark train is about to miss you, this is the time to get onboard. In this full-day workshop, we will cover the basics and roll up our sleeves to use Spark in some real-world scenarios so you can start taking advantage of this framework that has taken over the Big Data world. Bring a laptop with any operating system and some distribution of Spark (just the barebones archive works).

    Level: 300
    Prerequisites: Familiarity with Scala, Java, or Python

    Understanding ASP.NET Security 09:00 - 17:00 Roland Guijt

    In ASP.NET Core, Microsoft changed and overhauled many security features. This workshop will bring you up to speed to not only the security news in ASP.NET Core, but also what's going on in the industry regarding web security. In this workshop by the author of the popular Pluralsight course "Understanding ASP.NET Security", you will learn how to mitigate common attacks on your ASP.NET website, how encryption works and how it can be used in your app, what kind of authentication options are available, how to implement ASP.NET Core Identity, what are OAuth2 and OpenIdConnection, how to use the IdentityServer framework, and how to perform authorization from your controllers. Bring a laptop with Visual Studio 2015/2017.

    Level: 300
    Prerequisites: Familiarity with ASP.NET

    High-Performance Web Applications With Preact 09:00 - 17:00 Maurice de Beijer

    In this full day workshop, you will learn why and how to create a Preact application from scratch. You will learn when choosing Preact over React makes sense and when it doesn’t. Next you will learn how to create a new Preact application using the Preact CLI. You will expand this basic application to a full-blown application while using Lighthouse and other performance tooling to keep the application as fast as possible. Finally, you will learn how to use the Preact-Compat NPM package to either post existing React applications or use standard React components in an existing Preact application. Bring a laptop with a modern web browser and editor, e.g. Visual Studio Code.

    Level: 300
    Prerequisites: Web development experience

    Docker Hands-On 09:00 - 17:00 Rob Richardson

    Docker is carefully tucked between virtualization, continuous deployment, and pure awesome. We’ll dig deep into installing prerequisites and Docker for Mac or Docker for Windows, talk about Dockerfiles and Docker volumes, use Docker Compose and Docker Swarm, discuss best practices for building at cloud scale, tips and tricks for leveraging Docker, and administering Docker hosts. We will look at the commands and ecosystem around building infrastructure as code, deploying a swarm, and sharing images on Docker Hub. Come see why devs and ops love Docker. Bring a laptop with any operating system, and Docker installed (if necessary, we will help you install Docker during the workshop).

    Level: 300
    Prerequisites: None

    Exploratory Testing: Modeling Unexpected System Behavior (1/2) 09:00 - 17:00 James Lyndsay

    Exploring will help us build models of the systems under test. We will use those models to dig into unexpected behaviors and to judge the problems we find. We will use systematic exploration to parse and map the delivered system, to model meaning surmise intent, and to diagnose field reports. We will contrast the ways that we check expectations with how we chase surprises, and we'll explore possible exploitations for the flaws that we find. Attacks and exploitations will help us uncover surprises, and we will talk about potential risks in technologies familiar to the group. We will design collections of tests that together show a range of triggered behaviors, and visualize their output to allow swift judgement and adjustment. Many hands-on exercises use custom-built software to allow a positive exploration experience in a relatively abstract, game-like context. Other exercises use real-world software with live bugs. Some exercises will let us replay and scrutinize our interactions with the system under test. The workshop gives us an opportunity to share and contrast testing approaches, and to illustrate our processes with the actions we took and the data we used. We will develop our insights by following each exercise with a conversation structured to help us recognize useful frameworks and to put those disciplines to use in the real world.

    Level: 200
    Prerequisites: Experience with test analysis and design

  • Wednesday, November 29: Full-Day Workshops

    Exploratory Testing: Modeling Unexpected System Behavior (2/2) 09:00 - 17:00 James Lyndsay

    Exploring will help us build models of the systems under test. We will use those models to dig into unexpected behaviors and to judge the problems we find. We will use systematic exploration to parse and map the delivered system, to model meaning surmise intent, and to diagnose field reports. We will contrast the ways that we check expectations with how we chase surprises, and we'll explore possible exploitations for the flaws that we find. Attacks and exploitations will help us uncover surprises, and we will talk about potential risks in technologies familiar to the group. We will design collections of tests that together show a range of triggered behaviors, and visualize their output to allow swift judgement and adjustment. Many hands-on exercises use custom-built software to allow a positive exploration experience in a relatively abstract, game-like context. Other exercises use real-world software with live bugs. Some exercises will let us replay and scrutinize our interactions with the system under test. The workshop gives us an opportunity to share and contrast testing approaches, and to illustrate our processes with the actions we took and the data we used. We will develop our insights by following each exercise with a conversation structured to help us recognize useful frameworks and to put those disciplines to use in the real world.

    Level: 200
    Prerequisites: Experience with test analysis and design