December 11-15, 2016 | Israel

SELA|DEVELOPER|PRACTICE

Professional developers conference

46 sessions

25 speakers

Sessions

  • Sunday, December 11: Full-Day Workshops

    Spark from the Ground Up 09:00 - 17:00 Eyal Ben Ivri

    Spark is a rising star in the big data world, usually surpassing Hadoop performance by at least an order of magnitude -- and recently also surpassing Hadoop in terms of adoption! It is also more intuitive to use because you don't have to force every problem into the confines of map and reduce operations. At the same time, Spark is compatible with the Hadoop distributed filesystem (HDFS), execution engine, and deployment tools. In this workshop you will learn how to use Spark for one-off data analysis and investigations, how to build and submit Spark jobs, and how to use some higher-level libraries such as Spark SQL. We will also cover the basics of the Scala programming language required for working with Spark. Spark is one of these things you can't learn without a lot of hands-on work: it involves some new concepts, probably a new language (Scala or Python), and a slightly different mindset where you have to carefully deconstruct operations so that they can be efficiently performed in a distributed manner. This is why this workshop is accompanied by multiple hands-on labs: using basic Spark transformations and actions, parsing logs and data files, compiling and submitting Spark programs, and many others. Overall, expect to spend 50% of the time building Spark programs and discussing your work with the group.

    Level: 300
    Prerequisites: Development experience in a high-level language; familiarity with Scala or Python is not required

    Developing Distributed Systems with Apache Mesos 09:00 - 17:00 Yaniv Rodenski

    Apache Mesos allows developers to build distributed systems with ease, run them and have fine-grained control over resource consumption in large scale commodity hardware clusters. In this full day workshop, we will build real-world distributed systems with Mesos, run them and monitor them. Building distributed systems with Apache Mesos requires some understanding of distributed systems theory and Linux containers, and we will learn everything we need to know to get the most of Mesos.

    Level: 300
    Prerequisites: Basic understanding of distributed systems concepts

    Introduction to Machine Learning with Functional Programming 09:00 - 17:00 Mathias Brandewinder

    Machine Learning and Functional Programming are both very hot topics these days; they are also both rather intimidating for the beginner. In this workshop, we’ll take a 100% hands-on approach, and learn practical ideas from Machine Learning, by tackling real-world problems and implementing solutions in F#, in a functional style. In the process, you will see that once you get beyond the jargon, F# and Machine Learning are actually not all that complicated -- and fit beautifully together. So if you are curious about what Machine Learning is about, and want to sharpen your developer skills, come with your laptop and... let's hack together!

    Level: 300
    Prerequisites: Development experience; no prior F# knowledge required

    Xamarin Forms 09:00 - 17:00 Liron Ratzabi

    Xamarin, recently acquired by Microsoft, is a framework and toolkit for building C# mobile applications that run on iOS, Android, and Windows. Xamarin provides a perfect, natural interop layer for accessing iOS and Android APIs from C#, and allows great code reuse thanks to a rich platform library and a slew of third-party community NuGet packages. What's even better, Xamarin Forms provides a cross-platform XAML UI design experience that will be immediately familiar to WPF, Silverlight, Windows Phone, and UWP developers. By using XAML to build your Xamarin Forms application you can achieve up to 100% code sharing, but in this workshop you will also learn what happens when you need to build platform-specific services and inject them into the app's core. Prepare for a day packed with labs and demonstrations that will have you building C# mobile apps in no time.

    Level: 300
    Prerequisites: C# development experience

    Test Automation 09:00 - 17:00 Arnon Axelrod

    Starting to write test automation is pretty easy. But in order for test automation to provide real value for the entire lifespan of the product's development, it must also be robust and easy to maintain. These important attributes of test automation can be difficult to achieve. In this workshop we'll learn some useful and practical techniques that will help you achieve this goal. In particular we'll talk about how to plan test cases in a manner that corresponds to scientific experiments; How to write test code which is readable like a story; How to write test code which is easy to maintain up; And how to build and maintain the infrastructure of the tests in a way that every change or fix can be done exactly in one place. In addition, we'll talk briefly about the symbiosis between test automation, architecture, working processes, and business structure.

    Level: 300
    Prerequisites: Some programming experience in C# or Java, and understanding Object Oriented programming concepts. Experience in test automation and Selenium in particular is recommended but not required.

    Introduction to Parallel Programming with the TPL 09:00 - 17:00 Bnaya Eshet

    Task Parallel Library is Microsoft's platform for building concurrent and parallel applications, introduced in .NET 4.0 and significantly extended since. In this workshop, we will introduce the concepts of tasks, concurrency, asynchrony, and parallelism, accompanied by practical examples. We will discuss best practices for distributing work across multiple threads without having to create and manage them manually, and revisit architectural guidance for building applications that scale on a large number of cores. This is not a theoretical workshop on concurrent programming -- expect to leave with a solid understanding of the TPL APIs that make it possible to build concurrency and parallelism into your applications.

    Level: 300
    Prerequisites: C# development experience, familiarity with threads

    IIS for Developers 09:00 - 17:00 Ido Flatow

    For years we have been using IIS to host our Web applications, but many of us haven’t used more than its basic features and configuration. You knew there is a compression feature, but did you know you can change the compression ratio? Are you using the advanced logging module or the default simple logging? Have you ever wondered when to use the application pool’s process orphaning option? In this 1-day workshop, we will learn how IIS works, the new features released in the latest versions of IIS (7-8.5), how to configure IIS for better performance, how to use its logging and debugging features, and how to automate the deployment of our Web applications to IIS.

    Level: 300
    Prerequisites: Experience with web application development on IIS

  • Monday, December 12: Breakout Sessions

    KEYNOTE: Lambda Architecture 09:30 - 10:30 Barak Chamo

    Web server development has come a long way in recent years, from having to manage your own room full of servers, to trusting your metal to the "cloud" and later trusting your app itself to PaaS services such as Heroku and AppEngine. The next step in that evolution is upon us in the form of serverless apps. Tech solutions such as AWS Lambda and API Gateway, Google's Cloud Functions or Azure's Functions allow us to develop our applications as a set of "functions" or "lambdas", essentially handlers that are assigned to events. These events could be anything from network requests (like with API gateway), uploaded file changes, queue messages, timed jobs and more.

    Level: 300
    Prerequisites: Understanding of SOA, microservices, and API development

    Introducing ASP.NET Core MVC 10:50 - 11:50 Amir Adler

    Since ASP.NET came out 16 years ago, many developers used it to write their web applications. ASP.NET Core, formerly known as ASP.NET 5, is significantly different from previous versions of ASP.NET. ASP.NET has been completely rewritten to provide an optimized development framework to write web applications. In this session we will introduce ASP.NET Core MVC.

    Level: 300
    Prerequisites: Web development experience

    TypeScript for C# Developers 12:00 - 13:00 Jesse Liberty

    With no prior TypeScript or JavaScript experience, learn TypeScript from the perspective of a C# Developer. TypeScript is typically taught for JavaScript developers, but C# developers bring an entirely different set of knowledge (e.g., objects, type safety, etc) but need to learn the details of this language that is based on JavaScript.

    Level: 200
    Prerequisites: C# development experience

    Introduction to React 14:00 - 15:00 Tamar Twena-Stern

    React is a UI library developed at Facebook to facilitate the creation of interactive, stateful, and reusable UI components, used by Facebook and Instagram.com. We will start with an introduction to React: what it is good for and how to bootstrap your application development. We will talk about React fundamentals such as Virtual DOM and DOM abstraction, JSX, working with React components, components API, and component life cycle. We will also talk about React forms and events, the Flux concept and how to use it. At the end we will discuss some best practices for developing your React application. The session will be accompanied by a sample application that we will build together during the talk.

    Level: 200
    Prerequisites: Web development experience

    Electron 15:15 - 16:15 Nir Noy

    Electron is a framework for building native, cross-platform applications that run on Windows, Linux, and macOS by using HTML, CSS, and JavaScript. Powered by Chromium, Electron apps are extremely slick and provide native performance, while extremely easy to build with the same web development tools you're using for websites and mobile web apps. Some apps built using Electron include Slack, Visual Studio Code, and the Atom editor, among hundreds of others. In this talk we will introduce the tools that go into building and packaging Electron applications, as well as customizing them for the individual platforms if necessary.

    Level: 300
    Prerequisites: Web development experience

    Logging Makes Perfect: Real-World Monitoring and Visualizations 10:50 - 11:50 Itamar Syn-Hershko

    How to keep a real-time, low-latency and high-stakes system up and running and well-monitored? How to investigate failure cases as they happen? And how to know that something is wrong before it's too late? With logs of course. Lots of them. And then some cool stack to do stuff with all those logs. Forter is a company with a Decision-as-a-Service product that deals with many e-commerce transactions in real time and answers a simple but hard question: "is this a fraud attempt or not?". And if we were wrong, we pay. In this talk I will show how we are using various technologies to power our service and keep it highly-available and well under control. Among the technologies that I will discuss are Apache Storm, Node.js, Riemann (state machines in Clojure, yay!), collectd, D3.js and of course the ELK stack (and beats!). Some integrations which will be mentioned include PagerDuty, Slack, Jenkings and GitHub.

    Level: 300
    Prerequisites: None

    Angular Token Authentication Using ASP.NET Web API 2 12:00 - 13:00 Dovi Perla

    With the evolution of front-end frameworks and the huge change on how we build web applications nowadays the preferred approach to authenticate users is to use signed token as this token sent to the server with each request. In this session we will learn how to use OWIN and Web API to create an authentication pipeline against Angular client.

    Level: 300
    Prerequisites: Web development experience

    Getting Started with Angular 2.0 14:00 - 15:00 Amir Adler

    Angular 2 is a framework that helps us build client applications in HTML and either JavaScript or a language (like Dart or TypeScript) that compiles to JavaScript. The new version of Angular, Angular 2, is based on a modern approach that prefers a more composable component model. In this session we will introduce Angular 2.

    Level: 300
    Prerequisites: Web development experience

    The Productive Developer Guide to React 15:15 - 16:15 Maurice de Beijer

    React is a popular library for creating user interfaces and rightly so. React is an open source library developed by Facebook to build their own website. But React has been adopted by many other well-known companies like Airbnb and Netflix. When you get started with React is will feel somewhat strange. After all we have been told that we should remove the JavaScript from our markup. Yet React moves the markup back into the JavaScript with JSX. But there are some great benefits to this as you will learn. In this session Maurice de Beijer will show you how to get started with React. You will learn some of the good and bad practices when developing React based applications.

    Level: 200
    Prerequisites: JavaScript development experience

    Manage Your Linuxen with Python and Fabric 10:50 - 11:50 Moshe Shami

    TBD

    Level: 300
    Prerequisites: TBD

    Finding the Bottleneck with USE Methodology 12:00 - 13:00 Elazar Leibovich

    In this talk we will present the USE methodology for finding what makes a system slow. We will understand how a system profiler works, and see a few examples for tools that work today on a typical Linux machine. Slowness can be caused from other processes competing with your server on the CPU, from saturated I/O devices, from the memory subsystem, and a lot of other system components. We will show how the simple USE methodology can be applied to a live production server, without interfering with ongoing activity. While the tools presented are Linux tools, the principles can be applied to any other OS.

    Level: 300
    Prerequisites: Basic understanding of OS architecture

    ETW: Monitor Everything 14:00 - 15:00 Dina Goldshtein

    Event Tracing for Windows (ETW) is the most important diagnostic tool Windows developers have at their disposal. In this talk, we will explore the rich and wonderful world of ETW events, which span numerous components including the kernel scheduler, the CLR garbage collector, the Windows UI subsystem (including XAML-specific events), request-processing frameworks such as ASP.NET and WCF, and many others. You'll learn how to diagnose incredibly complex issues in production systems such as excessive garbage collection pauses, slow startup due to JIT and disk accesses, and even sluggishness during the Windows boot process. We will also explore some ways to automate ETW collection and analysis to build self-diagnosing applications that identify high CPU issues, resource leaks, and concurrency problems and produce alerts and reports. In the course of the talk we will use innovative performance tools that haven’t been applied to ETW before -- flame graphs for visualising call stacks and a command-line interface for dynamic, scriptable ETW tracing. ETW is truly a window into everything happening on your system, and it doesn't require expensive licenses, invasive tools, or modifying your code in any way. It is a critical, first-stop skill on your way to mastering application performance and diagnostics.

    Level: 300
    Prerequisites: None

    Squeezing The Hardware To Make Performance Juice 15:15 - 16:15 Sasha Goldshtein

    Obvious ways to get performance wins are obvious. By the end of 2016, every .NET developer should know about concurrency and parallelism, ORMs and web response caching, efficient collections and garbage collection internals. But there are so many performance wins ripe for the picking that most .NET developers don't know about. This talk is all about squeezing the best performance out of modern hardware. And modern hardware is about vectorization in addition to parallelization; modern hardware is about optimizing your instruction flow and data layout for last-generation instruction sets and cache structures; modern hardware is understanding that using 4 cores is not the same thing as using 44 cores; modern hardware is about using tools to determine where bottlenecks lie and not about guessing. This talk dives deep under the covers of your processor and memory system to deliver top-notch performance, all while using C# and .NET. We will see multiple examples of optimizing CPU- and memory-bound algorithms that are used in real-world applications, such as finance, image and signal processing, and many others.

    Level: 400
    Prerequisites: Solid development experience with C# and/or C++

  • Tuesday, December 13: Breakout Sessions

    KEYNOTE: The Future of Technology with Cloud and Open Source 09:30 - 10:30 Adir Ron

    The Microsoft cloud supports a wide range of industry leading operating systems, languages, tools, and frameworks -- from Windows to Linux, Cassandra to MySQL and PHP to Java. In this session we will cover the unique offerings Microsoft has with various Open Source communities and vendors in the Linux ecosystem such as RedHat and HortonWorks that can light up new scenarios like Internet of Things (IoT) integration, Apache Hadoop or Docker containers.

    Level: 200
    Prerequisites: None

    Big Data with Azure, MBrace, and F# 10:50 - 11:50 Mathias Brandewinder

    For data exploration and rapid prototyping, the productivity of an interactive scripting environment is hard to beat: simply grab data, run code, and iterate based on immediate feedback. However, that story starts to break down when the data you have to process is big, or the computations expensive. Your local machine becomes the bottleneck, and you are left with a slow and unresponsive environment. In this talk, we will introduce MBrace.io, an open-source and free engine for scalable cloud programming. Using the MBrace programming model, you can keep working in your beloved familiar scripting environment, and easily execute C# or F# code on a cluster of machines on Azure. We will focus primarily on live demos, from provisioning an Azure cluster, to analyzing large datasets in a distributed fashion; in particular, we will discuss how this setup is relevant to data science and machine learning.

    Level: 200
    Prerequisites: None

    Building Distributed Systems with Apache Mesos 12:00 - 13:00 Yaniv Rodenski

    Apache Mesos allows developers to build distributed systems with ease, run them and have fine-grained control over resource consumption in large scale commodity hardware clusters. Such systems are known as Mesos frameworks and can be written using a variety of languages, such as Java, Scala, Go, Haskell and more. In this talk we will learn how to build a real-world Mesos framework from the ground up and how to deploy it on a Mesos cluster. We will also learn how we can leverage existing frameworks such as Marathon and Chronos to take full advantage of the Mesos ecosystem.

    Level: 300
    Prerequisites: None

    What's New in Spark 2.0 14:00 - 15:00 Eyal Ben Ivri

    Familiarity with Spark

    Level: 300
    Prerequisites: Spark 2.0 is a major release that builds on Spark's very solid foundation as a leader in the world of distributed data processing. We will discuss some of the new concepts, including more reliance on DataFrames (instead of the lower-level RDD API), optimizations made possible by the Catalyst query optimizer, simpler accumulations and aggregations, significant extensions to supported Spark SQL syntax, and massive performance improvements. We will also take a look at Spark Structured Streaming and improvements to SparkR.

    Docker and Azure Container Service 15:15 - 16:15 Rotem Or

    Docker has taken over the deployment world by making it trivial, fast, and secure to deploy containerized applications on virtualized or physical hardware. Even though Docker was born in the Linux world of resource groups and namespaces, Windows Server 2016 is shipping with light-weight container support as well as heavy-weight Hyper-V containers with more isolation. In short, containers are here to stay. Unfortunately, managing a fleet of containers is not a trivial task -- and plenty of third party solutions exist for managing your images, deploying them and scaling them in the cloud. We will demonstrate Azure Container Service, which is a cloud-scale offering for orchestrating containers on Azure using Docker Swarm or Mesos.

    Level: 300
    Prerequisites: Experience deploying and maintaining production applications

    What's New in C# 7.0 10:50 - 11:50 Sasha Goldshtein

    C# 6 was the first version of the language to be released as open-source, and work is now in the open on the upcoming C# 7 implementation. Even though some things aren't set in stone yet, there are some really cool language features that can make your C# development safer, more productive, more readable, and more expressive. In this talk we'll review the key upcoming features and how they can be effectively used in C# programs. Among other things, these new features bring C# even closer to a functional programming language. We'll talk about local functions, pattern matching (switch, when, and match expressions), algebraic data types, tuples, and more.

    Level: 300
    Prerequisites: C# development experience

    Production Debugging Web Applications 12:00 - 13:00 Ido Flatow

    Your web application is up and running? Great. Now count the minutes before your first problem. What do you do now? Check logs? Debug? Stare at the screen and hope for the best? In my line-of-work, this is when I get the call. And just like your plumber, I too come equipped, carrying my toolbelt filled with debugging tools. In this session we go over the list of tools every web developer should have in their toolset, from the smallest tracing wrench to the memory dump crowbars. Based on real world customer stories from a veteran debugger, we will learn which tools to use to test slow web sites, random exceptions, memory consuming apps, and hung W3WP processes.

    Level: 300
    Prerequisites: .NET development experience

    Agile Experiments in Machine Learning with F# 14:00 - 15:00 Mathias Brandewinder

    Just like traditional applications development, machine learning involves writing code. One aspect where the two differ is the workflow. While software development follows a fairly linear process (design, develop, and deploy a feature), machine learning is a different beast. You work on a single feature, which is never 100% complete. You constantly run experiments, and re-design your model in depth at a rapid pace. Traditional tests are entirely useless. Validating whether you are on the right track takes minutes, if not hours. In this talk, we will take the example of a Machine Learning competition we recently participated in, the Kaggle Home Depot competition, to illustrate what "doing Machine Learning" looks like. We will explain the challenges we faced, and how we tackled them, setting up a harness to easily create and run experiments, while keeping our sanity. We will also draw comparisons with traditional software development, and highlight how some ideas translate from one context to the other, adapted to different constraints.

    Level: 200
    Prerequisites: None

    Rx Blitz 15:15 - 16:15 Bnaya Eshet

    Reactive Extensions is a push-based programming model for .NET that is often referred to as the yin to LINQ's yang. In this session you will learn how to use the Rx API for building event-driven, reactive, push-oriented applications in a variety of contexts, and how to map familiar query operators to the Rx world.

    Level: 300
    Prerequisites: C# development experience, familiarity with LINQ is recommended

    Xamarin Forms 10:50 - 11:50 Jesse Liberty

    With no prior Xamarin.Forms experience, learn the fundamentals of programming Xamarin.Forms: the cross-platform mobile development platform with 99% code re-use.

    Level: 200
    Prerequisites: Experience with XAML is recommended by not required

    Meet The Bots 12:00 - 13:00 Liron Ratzabi

    Make your apps and organization smarter with Bots. In this talk we will demonstrate how to build intelligent bots with the Microsoft Bot Framework.

    Level: 200
    Prerequisites: None

    Holographic Apps with Visual Studio & Unity 3D for Microsoft HoloLens 14:00 - 15:00 Adir Ron

    Windows 10 includes Windows Holographic, the platform that powers the amazing mixed reality experiences available on Microsoft HoloLens today. Microsoft and Unity have been working closely to provide Unity developers the tools to create Mixed Reality (MR) applications for Windows Holographic devices such as HoloLens. In this session, we will cover the basics of the holographic shell in Windows and share some of the upcoming innovations in the next Windows 10 Creators Update.

    Level: 200
    Prerequisites: C# development experience

    Mobile Test Automation with Appium 15:15 - 16:15 Arnon Axelrod

    Whether you're a developer targeting mobile devices and want to write tests for your code, or an automation developer that needs to write tests for mobile applications built by other developers, Appium is probably the tool you need. Based on Selenium, which is the most popular and robust technology for testing Web based applications, Appium tests can be written in any programming language (C#, Java, Ruby, Python, JavaScript, PHP), support any device (iOS and Android, physical or simulated), any application (native, Web or hybrid), and run on any OS (Windows, Mac, Linux), locally or remotely. In addition, most mobile cloud providers allow you to run your tests on their physical devices in the "cloud". In this session we'll explain how Appium supports these versatile configurations and how to write tests using Appium in order to take advantage of these versatile capabilities.

    Level: 200
    Prerequisites: None

  • Wednesday, December 14: Full-Day Workshops

    TypeScript and Angular 2.0 08:45 - 16:00 Jesse Liberty

    With no prior Angular experience, learn the fundamentals of programming in the hottest new web front-end framework, Angular 2, programming in its native language: TypeScript. This workshop will start at the beginning and proceed through architectural and practical programming questions. There will be an introduction to TypeScript, but much of the language will be picked up as we go. Topics covered include system setup, architecture, modules, manipulating data, creating forms, using dependency injection, and Angular templates. This workshop is targeted at developers with no prior TypeScript or Angular experience.

    Level: 200
    Prerequisites: Familiarity with JavaScript or C# is recommended; prior experience with Angular is not required

    Mastering ASP.NET Core (with Angular 2.0) 08:45 - 16:00 Amir Adler

    Are you building next-generation web apps? Do you want a framework that is faster than Node.js on I/O and computation both? Do you know that MVC Core is now merged with Web API? Everything you need to know about ASP.NET Core from a beginner to an advanced level will be covered in this workshop. In this workshop, you'll have the unique opportunity to learn ASP.NET Core (previously called ASP.NET 5) fundamentals. We will also dig into Angularjs 2, ASP.NET MVC Core, Web API, Entity Framework Core and other related frameworks.

    Level: 200
    Prerequisites: Basic knowledge of JavaScript and C#

    From Zero to Hero with ReactJS 08:45 - 16:00 Maurice de Beijer

    In this full day workshop you will learn how to create a React application from scratch. We will start assuming no React experience at all. Once done you will have created a Netflix website clone. This makes for a great exercise as the real Netflix website is actually built with React. During this workshop you will learn how to get started with the Create-React-App utility. You will learn how to break down the user interface into a series of distinct components. Each component having its own responsibility. You will learn how to capture user input to filter the movies shown as well as do AJAX requests. At the end you will be confident in starting your own React applications.

    Level: 200
    Prerequisites: JavaScript development experience

  • Thursday, December 15: Half-Day Workshops

    Mastering Reactive Extensions 09:00 - 12:30 Bnaya Eshet

    This intensive workshop summarizes the concepts, API, and best practices of using Reactive Extensions for .NET (Rx). Some of the tips at this workshop may are unique and will boost your productivity with Rx technology. Rx is a unique technology which started with .NET and spread rapidly to most major languages. It enables intelligent pipelines between producers and consumers, and saves a lot of developer work. The insight in this workshop comes from experience in real-life projects, where Rx was able to save the day.

    Level: 300
    Prerequisites: Solid #C development background and experience with LINQ

    Going Serverless with Lambda 09:00 - 12:30 Barak Chamo

    Web server development has come a long way in recent years, from having to manage your own room full of servers, to trusting your metal to the "cloud" and later trusting your app itself to PaaS services such as Heroku and AppEngine. The next step in that evolution is upon us in the form of serverless apps. Tech solutions such as AWS Lambda and API Gateway, Google's Cloud Functions or Azure's Functions allow us to develop our applications as a set of "functions" or "lambdas", essentially handlers that are assigned to events. These events could be anything from network requests (like with API gateway), uploaded file changes, queue messages, timed jobs and more. With serverless apps, all issues of infrastructure management are completely abstracted from the development process, each function is called when it's needed by the service provider and can be called as many times as necessary. You don't have to spin up more servers, worry about provisioning and the theoretical limit of your app is all of your PaaS provider's capacity!

    Level: 300
    Prerequisites: Understanding of SOA, microservices, API development, and modern ops practices

    Kafka, Streaming, and Friends (1/2) 09:00 - 12:30 Yaniv Rodenski

    It's official, streams are the new batch! In the last couple of years, the Big Data landscape is changing. Slowly but surely we see a movement away from the batch ways of old. One of the pivotal moments in this shift was an article called "Questioning the Lambda Architecture" by Jay Krep, one of the creators of Kafka at Linkedin and the CEO of Confluent. In this article he proposes a new architectural approach to take Lambda's place. In this one day tutorial we will explore this proposed Kappa architecture, and how to implement it based on Apache Kafka, the Confluent Platform and some of the standard stream processing tools, such as Apache Flink, Spark Streaming and Apache Beam.

    Level: 300
    Prerequisites: Experience building distributed systems

    Modern .NET Performance Tools 09:00 - 12:30 Sasha Goldshtein

    If you've been doing .NET development for a while, you are surely familiar with commercial profilers, such as the one integrated into Visual Studio. Theres really no lack of options for development-time profiling; the problem lies with modern, free performance tools that you can use on production systems. This workshop introduces the world of ETW-based tools, including PerfView, WPA, and etrace, that you can use to troubleshoot performance problems in the field. Armed with these tools, there will be no mysterious one-in-a-million issue that will be able to evade your prying eyes!

    Level: 300
    Prerequisites: .NET development experience

    Google Container Engine 09:00 - 12:30 Moshe Shami

    Containers have become a key factor in the success of cloud-based application deployment. Google's Kubernetes, a leading open source project, was designed to help you manage your Docker containers. Google provides Kubernetes as part of their cloud offering, called Google Container Engine. In this workshop we will learn how to work with Docker and Google Container Engine step-by-step using code examples on Google Cloud.

    Level: 200
    Prerequisites: None

    Mastering SIMD.NET 13:30 - 17:00 Sasha Goldshtein

    SIMD (Single Instruction Multiple Data) allows a single processor instruction to manipulate multiple data elements such as floats or integers. Intel and ARM processors have SIMD support for more than 15 years, but C# developers weren't able to tap into that power until recently. With the release of .NET 4.6 and RyuJIT, the new just-in-time compiler for .NET applications, you can use special Vector<T> types to generate vector instructions without writing any assembly code or low-level intrinsics. In this short workshop you will experiment with vectorizing existing algorithms, starting from very simple vector operations and matrix multiplication and culminating with complex conditionals such as the Mandelbrot fractal. Learn how to speed up critical sections of your code by a factor of 4 or 8, while still enjoying your favorite language.

    Level: 400
    Prerequisites: C# development experience

    GraphQL for the REST Crowd 13:30 - 17:00 Barak Chamo

    GraphQL is a query language and framework that changes the way we approach APIs and connect that front and back ends of applications. Trading the REST model for a graph-based approach, GraphQL provides a powerful declarative interface for defining data dependencies, making complex nested queries and empowering front-end developers to take control of the application's data. Working through an example REST API, we'll see the benefits and exciting new features of GraphQL, how to transition to it and connect it to new and existing backends. Finally, we'll discuss performance consideration and other advanced topics of implementing GraphQL today.

    Level: 300
    Prerequisites: Experience building RESTful APIs

    Kafka, Streaming, and Friends (2/2) 13:30 - 17:00 Yaniv Rodenski

    It's official, streams are the new batch! In the last couple of years, the Big Data landscape is changing. Slowly but surely we see a movement away from the batch ways of old. One of the pivotal moments in this shift was an article called "Questioning the Lambda Architecture" by Jay Krep, one of the creators of Kafka at Linkedin and the CEO of Confluent. In this article he proposes a new architectural approach to take Lambda's place. In this one day tutorial we will explore this proposed Kappa architecture, and how to implement it based on Apache Kafka, the Confluent Platform and some of the standard stream processing tools, such as Apache Flink, Spark Streaming and Apache Beam.

    Level: 300
    Prerequisites: Experience building distributed systems

    Troubleshooting Web Applications 13:30 - 17:00 Ido Flatow

    Your web application is up and running? Great. Now count the minutes before your first problem. What do you do now? Check logs? Debug? Stare at the screen and hope for the best? In this 1-day workshop we will go over the list of tools every web developer should have in their toolset, from the smallest tracing wrench to the memory dump crowbars. We will learn which tools to use to test slow web sites, random exceptions, memory consuming apps, and hung w3wp processes.

    Level: 300
    Prerequisites: Web development experience (on the server side)

  • Sunday, December 18: Full-Day Workshops

    Java 8 09:00 - 17:00 Moshe Shami

    Java 8 is the biggest change to Java, yet. It changes fundamental concepts about Java programming and has the potential to affect every line of Java code we write. One key language change is the introduction of lambda expressions, which completely change the nature of the language when interacting with collections and working with one-off, small pieces of code. Another major change is the ability to introduce default methods for implementing interfaces. Collections have also been completely revamped with the introduction of Streams. In this full-day workshop we will examine these significant changes and how they apply to your Java code, today.

    Level: 300
    Prerequisites: Java development experience