December 11-15, 2016 | Rishon Le-Ziyon, Israel

SELA|DEVELOPER|PRACTICE

Professional developers conference

44 sessions

24 speakers

Sessions

  • Sunday, December 11: Full-Day Workshops

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

    TBD

    Level: 300
    Prerequisites: TBD

    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. The workshop consists of the following modules: A (very) brief intro to distributed systems; It’s containers all the way down; Creating a Mesos cluster; Scheduler API; Executors and tasks; Running and monitoring a Mesos framework in production.

    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

    TBD

    Level: 300
    Prerequisites: TBD

    Test Automation 09:00 - 17:00 Arnon Axelrod

    TBD

    Level: 300
    Prerequisites: TBD

  • Monday, December 12: Breakout Sessions

    KEYNOTE 09:30 - 10:30 TBD

    TBD

    Level: 200
    Prerequisites: None

    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

    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

    Electron 15:15 - 16:15 Nir Noy

    TBD

    Level: 300
    Prerequisites: TBD

    ECMAScript 6 and 7 10:50 - 11:50 TBD

    TBD

    Level: 300
    Prerequisites: TBD

    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

    Comparing JavaScript Frameworks 14:00 - 15:00 Chander Dhall

    Take a noun, add .JS to it and you probably have a framework that exists. There are a lot of frameworks available in the market today and it's a great time to be a web developer. It can also be a confusing time if you are not sure which one to use. Each framework has its pros and cons. So come check out this talk where Chander Dhall compares the TOP 6 JavaScript Frameworks: AngularJS, AngularJS 2.0, Ember, Polymer, React and Aurelia. While providing an honest review of each of these frameworks, he also explains the strengths and the major differences of these JavaScript Frameworks. He compares these frameworks on several factors, including Library/Framework Size, Performance, Features provided by framework/library, Standard Compliance, Separation of Concerns, Obtrusiveness, Interoperability, Community Status/Points, Corporate Support and Licensing.

    Level: 200
    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

    Lambda Architecture 14:00 - 15:00 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

    ETW: Monitor Everything 15:15 - 16:15 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

  • Tuesday, December 13: Breakout Sessions

    KEYNOTE 09:30 - 10:30 TBD

    TBD

    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

    TBD

    Level: 300
    Prerequisites: TBD

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

    TBD

    Level: 300
    Prerequisites: TBD

    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

    How I Built an Open Source Debugger 12:00 - 13:00 Sasha Goldshtein

    About a year ago, I set out to build an open-source command line debugger for .NET applications. Why would I do such a thing? Well, first it turns out that in some scenarios, you really can't use Visual Studio -- when you're on a production box, for example. What about WinDbg, then? Even if you're OK with WinDbg, which few people are, it has a fairly arcane syntax even for simple things, and it can't be easily extended with .NET code. And finally, there are some really cool things that a debugger can do with the Microsoft CLRMD library, which provides a .NET API to the internals of the CLR heap, execution engine, threads, and call stacks. Thus, msos was born -- a purely managed, command-line debugger that has a bunch of innovative commands. Innovative commands? Yes, like heap queries that filter and print heap objects based on their contents; like automatic deadlock analysis (with support for unmanaged synchronization mechanisms coming soon); like a simple to use system for analyzing a bunch of dump files and getting a quick triage result. In this talk, I will share how I built msos, and show how some of its cool features can be used to solve complex bugs easier than ever before.

    Level: 300
    Prerequisites: C# 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

    TBD

    Level: 300
    Prerequisites: TBD

    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

    TBD 14:00 - 15:00 TBD

    TBD

    Level: 200
    Prerequisites: TBD

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

    With the rise of mobile applications and the expectation to rapid delivery cycles and continuous delivery, mobile test automation is no longer a nice-to-have option. It's an essential part of the development! Whether you're developing web, native or hybrid applications for mobile, and whatever technology stack you're using (e.g. Xamarin, Cordova, etc.), Appium is probably the tool you need. Appium, which is an open source tool, allows you to write automated tests that interact with any mobile UI. As it is based on Selenium, you can use it from virtually any programming language and use it together with other means to create end to end automatic test. Eventually, you can integrate these tests as part of your CI/CD processes and even use the same tests with anyone of the many mobile test cloud providers out there, to ensure that your application behaves correctly on all popular devices.

    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.

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

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

    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 6 is now merged with Web API? Do you know the best practices while building RESTful APIs? Do you know that Entity Framework 7 is not just a complete re-write, a stripped down version of it could be used to create a much higher performing ORM? 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 from a world-renowned expert who also happens to be an ASP.NET Insider, Web API Advisor and an awarded Microsoft MVP for six consecutive years. Chander Dhall will share his knowledge and experience of how he's worked with Fortune 500 Companies to scale their systems to more than a billion hits a day with examples in ASP.NET Core. He will also dig deep into Angularjs 2, ASP.NET MVC 6, Web API and Entity Framework 7 and other related frameworks like System.js, Gulp, etc.

    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

    TBD

    Level: 300
    Prerequisites: TBD

    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

    TBD

    Level: 300
    Prerequisites: TBD

    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

    TBD

    Level: 300
    Prerequisites: TBD

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

    TBD

    Level: 300
    Prerequisites: TBD

    Git: First Steps 13:30 - 17:00 TBD

    TBD

    Level: 200
    Prerequisites: TBD