June 19-23, 2016 | Israel

SELA|DEVELOPER|PRACTICE

Professional developers conference

56 sessions

33 speakers

Sessions

  • Sunday, June 19: Full-Day Workshops

    Angular 2.0 09:00 - 17:00 Noam Kfir

    The Angular team made the wise but difficult choice of starting over with Angular 2 instead of just patching the mature but increasingly fragile framework. The new version is based on a modern approach that prefers a more composable component model, reactivity, predictable data flows, type safety, embracing the wider ecosystem, and other current conventions and best practices. These changes represent a significant paradigm shift that is overtaking the whole ecosystem. This workshop introduces the new paradigm that underlies Angular 2, helps you set up a productive development environment, teaches you how to build a well-structured app, and shows how to manage application state effectively and consistently. Besides Angular 2 basics, you will also learn about composition with components and directives, reactivity and the Reactive Extensions for JavaScript (RxJS), type safety and TypeScript, ES6 modules and module loaders, and state management with redux.

    Level: 300
    Prerequisites: Familiarity with JavaScript is required

    Build Your Own Distributed System 09:00 - 17:00 Oren Eini

    In this full-day workshop, creator of RavenDB Oren Eini will guide your through the steps of building a consensus-driven distributed system from scratch. Topics covered include persistence to disk, ACID transactions, log structure merge,sorted string tables, write-ahead logs, communication between nodes, the Raft consensus algorithm and gossip protocols, and finallybBuilding client code to talk to the distributed system. Throughout this workshop, we'll build a distributed banking system, learning how to manage issues such as reliable distributed transactions, efficient queries across multiple nodes and scaling out the system -- all in a day, from scratch.

    Level: 300
    Prerequisites: C# development experience

    Zen of Architecture 09:00 - 17:00 Juval Lowy

    For the beginner architect, there are many options for doing pretty much anything. But for the Master architect, there are only a few. In this dense workshop Juval Lowy will explain his approach to large system analysis and design, using volatility to decompose a system into its comprising services. Juval will contrast it with the most common mistake done in architecture, using functionality to identify services. These are universal design principles, and Juval will use examples from software and non-software systems alike. You will also see how to overcome the real hurdles architects face pursuing volatility-based decomposing, simple and practical techniques for identifying areas of volatility, common telltale signs or "smells" when your design is still functional when using the Method, IDesign's approach for system architecture. You will learn how to literally mechanize software system design, how to do it quickly and effectively. Juval will also discuss logical tiers, security, interoperability, scalability, transactions, and other aspects of a modern application. The workshop concludes with discussion of how modern architecture fits into development processes such as Agile, common pitfalls of design in an Agile environment, and how to design the development process for maximum productivity.

    Level: 300
    Prerequisites: None

  • Monday, June 20: Breakout Sessions

    KEYNOTE: The Architect 09:30 - 10:20 Juval Lowy

    The software industry is in a deep crisis. Projects suffer from low quality; schedule slips and cost overrun are common. But this is hardly ordained, since there are plenty of examples of projects done on schedule, on budget, on quality in a repeatable manner. The key for solving the crisis is to practice software development as an engineering discipline, just like it is done in mechanical or electrical engineering. That is exactly the responsibility of the modern software architect, which must address software systems from an engineering standpoint, applying age-old engineering practices to software development. Armed with that crucial observation Juval will share his perspective on what is the key set of skills required of the architect, the role architects have to plan in order for the project to succeed, what it implies both to companies and to individual architects, and how architects should navigate and manage their own career path and personal growth.

    Level: 100
    Prerequisites: None

    Developing Windows 10 Cross-Device Applications 10:40 - 11:30 Liron Ratzabi

    Windows 10 introduces the new Universal Windows Platform (UWP), a platform that allows us to develop applications that can run across all platforms and devices. In this practical session we'll build small app, with a focus on the major capabilities, that will run on all Windows 10 platforms and devices -- from IoT devices to large screens.

    Level: 200
    Prerequisites: C# and XAML development experience

    ASP.NET Core 1.0 and MVC 6 11:40 - 12:30 Amir Adler

    Since ASP.NET came out 16 years ago, many developers used it to write their web applications. ASP.NET Core 1.0, 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 1.0 and MVC 6.

    Level: 200
    Prerequisites: Web development experience

    C# 7 and C++17, A First Peek 13:30 - 14:30 Sasha Goldshtein

    My two favorite languages are evolving faster than ever, and I'd like to tell you about some of the coolest features that can change the way you build your apps. There is also quite a bit of cross-pollination across languages -- did you know C++17 is getting async/await support, while Microsoft is contemplating metaprogramming-like features to be added to C#? Join me for an informal tour of language features such as C# 7 record types and pattern matching, C++17 concepts and co-routines, and a bunch of ways to make your code more modern and concise.

    Level: 300
    Prerequisites: An interest in programming language design

    ECMAScript 2015, Today 14:40 - 15:30 Sebastian Pederiva

    ECMAScript 6 is the newest version of the ECMAScript standard. This standard was ratified in June 2015. ES2015 is a significant update to the language, and the first major update to the language since ES5 was standardized in 2009. During the presentation I'll show the main new cool features of this great language!

    Level: 200
    Prerequisites: JavaScript development experience

    Bringing JavaScript to the Desktop with Electron 15:40 - 16:30 Nir Noy

    After Node.js brought JavaScript to the server, it was only inevitable that someone would take it to the next level and bring it to our desktop. And indeed this day has come. With the help of GitHub's Electron, front-end developers can now create fully featured desktop applications using JavaScript, HTML and CSS. In this talk, we'll go over the basics of developing an Electron app, talk about how Electron works under the hood and show how to build it and package it.

    Level: 300
    Prerequisites: JavaScript development experience

    SIMD in .NET 10:40 - 11:30 Sasha Goldshtein

    For more than ten years modern processors have been equipped with vector registers and instructions that can make certain algorithms four to eight times faster. In the past, it took special language intrinsics or intimate knowledge of assembly language to use them. In this talk you will learn how to take advantage of vector instructions in .NET applications using the newly released System.Numerics.Vectors library and the RyuJIT compiler that's part of .NET 4.6. We will explore a variety of algorithms that can benefit from vectorization, ranging from simple 4-8x-wins like matrix multiplication and dot product, all the way to algorithms that must be refactored to benefit from vectorization because they contain inter-iteration dependencies or complex control flow.

    Level: 300
    Prerequisites: .NET development experience

    Tips for Memory-Efficient .NET Applications 11:40 - 12:30 Igal Tabachnik

    Every day we write code, using all the great things .NET has to offer: from LINQ and Lambdas to boxing and automatic memory management by the runtime, but how often do we think about what do these things cost? How well the compiler and runtime handle your code? How well it performs? In this talk we will examine various .NET constructs under the microscope (well, the decompiler), and learn about what the compiler is doing when using those higher-level abstractions. We will learn how writing your code slightly differently can help eliminate high memory allocations, and how to use the tools in Visual Studio to find memory leaks.

    Level: 300
    Prerequisites: .NET development experience

    Building Roslyn Analyzers and Code Fixes 13:30 - 14:30 Avi Avni

    This session will show how to analyze code and offer automatic fixes with Roslyn, the new .NET Compiler Platform. When working on a big project with many developers or when publishing NuGet packages that are used by other developers around the world, it's important to be able to make sure other people use your code correctly.

    Level: 300
    Prerequisites: C# development experience

    Troubleshooting Performance Issues with ETW 14:40 - 15:30 Israel Burman

    Come learn about the technology and the tools that Microsoft uses to troubleshoot performance issues internally. You can do it too! ETW -- Event Tracing for Windows -- is a very powerful technology that enables developers, testers and others to collect detailed information on what's happening on the machine and in a specific process at any time. It's like the Microscope of Windows. The technology is built-in in Windows and used to instrument almost any code developed by Microsoft. In addition Microsoft makes available the Microsoft Performance Toolkit that includes the tools required to enable, view and analyze the data generated by ETW. You will learn the fundamentals of ETW, the power of the tools included in the Microsoft Performance Toolkit, and how you can use it for your benefit.

    Level: 300
    Prerequisites: None

    Threat Analysis and Secure Code 15:40 - 16:30 Gad Meir

    Today's world is full of security threats and incidents. Every security venerability is an open door for a potential hacker to break into your (or your customer's) systems. In today's environment every software project must consider security from the design phase and in all the other stages of the development process, including testing, deploying and day to day operations. Failing to do so might result direct and indirect financial damages and expose you to legal liabilities. In this talk we will introduce the modern world of cybercrime, its risks and its influence on the modern software usage and development process life cycle. Then we will discuss basic security practices and the methodology and guidelines of the Security Development Lifecycle (SDL) and how to implement it in different stages of the software development life cycle. Analysis and thread modeling tools will be introduced and demoed. Security starts with awareness and with a minimal effort you can make it much harder for an hacker to break your software system.

    Level: 200
    Prerequisites: None

    Apache Flink 10:40 - 11:30 Eyal Ben Ivri

    Since 2013 Apache Spark came into the Big Data world and took it by storm (no pun intended). Spark seemed to be the answer to whatever question you might have had. Today, there's already a competitor in the making. Come and learn about the new and exciting computational framework, that started as a stream processing framework, and was extended to do just about anything.

    Level: 200
    Prerequisites: Familiarity with Big Data concepts

    Dumping Time Series Data Using Spark 11:40 - 12:30 Demi Ben-Ari

    A large part of the data we process in our systems is time series data. Once you start working with distributed systems, you start tackling many scale and performance problems, many questions arise: How to handle missing data? Should my system handle both frontend and backend processes or should I separate them? Which solution is going to be cheaper and offer the best ROI? In the talk we will tell the tale of all of the transformations we've made to our data model at Windward, show some of the problems we've handled, and review the multiple data persistency layers including S3, MongoDB, Apache Cassandra, and MySQL.

    Level: 200
    Prerequisites: Familiarity with distributed computing and Big Data technologies

    Zapping Even Faster 13:30 - 14:30 Hagay Albo

    Join a real uplift experience with Hagay Albo, the CTO of the Zap/Yellow Page Group in Israel, in which he explains how his team was able to take a legacy (slow and hard to modify) group of sites and make them easier to work with, much faster and greatly simplified the operational environment. By prioritizing high availability, flexible data modeling and focusing on raw speed Zap was able to reduce its load times by two orders of magnitude. Using RavenDB as the core engine behind Zap's new sites had improved site traffic, reduced time to market, and made it possible to implement the next-gen features that were previously beyond reach.

    Level: 200
    Prerequisites: None

    Development and Testing Lab in the Cloud 14:40 - 15:30 Gad Meir

    The cloud can change the whole concept of developing software. Building a development and testing environment in the cloud is an option worth considering. This demo based session will guide a developer with no experience in Azure to a level they can create a full development and test environment in the cloud with a direct connection to their desktop computer. We will cover storage, networking, services and VPN considerations and build together in less than an hour, a full development and testing lab in the cloud, an environment that we can spin on and off on demand without losing data between sessions.

    Level: 200
    Prerequisites: None

    TBD 15:40 - 16:30 TBD

    TBD

    Level: 300
    Prerequisites: None

  • Tuesday, June 21: Breakout Sessions

    KEYNOTE: State of the Union 09:30 - 10:20 TBD

    TBD

    Level: 200
    Prerequisites: None

    Azure Mobile Engagement 10:40 - 11:30 Liron Ratzabi

    Azure Mobile Engagement is a new cloud-based service from Microsoft to perform real-time analytics on cross-platform mobile applications. We'll discover the key features with some special demos.

    Level: 300
    Prerequisites: None

    Azure Service Management vs. Azure Resource Manager 11:40 - 12:30 Ido Katz

    One of the biggest pain points today when using Azure is deciding on what kind of deployments method we are going to use. In this talk you will learn about the transition from Azure Service Management (also known as "Classic" and V1) to Azure Resource Manager (also known as ARM). We will discuss both IaaS deployment methods and will give you a better understanding about the differences, pros and cons. We are also going to cover the migration options that Azure offers today and what will be the right way to migrate.

    Level: 300
    Prerequisites: Azure development or operations experience

    Service-Oriented Architecture with Docker Containers 13:30 - 14:30 Barak Chamo

    SOA is all the rage, no one wants to build and maintain large monolithic applications anymore. The advantages of a distributed, (mirco-)service oriented system are clear: each part of the system is decoupled from the others and can be maintained, updated, replaced and scaled up down individually. Things get tricky when our swarm of servers and services grows and maintenance and tracking becomes an issue. Development environments are harder to set up, deployment and operations become lengthy and complicated tasks. With Docker, a popular containerization technology, you'll be able to easily define, develop, test and deploy systems consisting of many small parts with ease. Think of is like a light-weight VM that provides separation from your specific environment or server. And with multi-container and cluster management you are able to easily manage the swarm of services in your system. We'll cover how to approach container- and multi-container-based development, how to develop and deploy Docker to cloud services like Heroku and AWS and cover issues of scalability, performance and management.

    Level: 300
    Prerequisites: Experience with deploying and managing production servers

    Azure IoT Hub 14:40 - 15:30 Ido Flatow

    Azure IoT Hub is a scalable, multi-tenant cloud platform (IoT PaaS) that can scale to millions of connected devices. In addition to the common device-to-cloud messaging scenario, offered by Azure Event Hubs, IoT Hub also supports cloud-to-device messaging for sending commands and notifications to devices. In this session, we will learn how to use the Azure IoT Hub to securely connect our devices to the cloud. We will create a complete flow and demonstrate how to register a device, send messages from it to the cloud, process the messages in a cloud back-end, and send commands back to the connected device.

    Level: 300
    Prerequisites: Experience with cloud development or architecture

    REST, MongoDB, Node.js, Visual Studio, and Azure! 15:40 - 16:30 Tamar Twena-Stern

    Node.js is a very popular open-source, cross-platform runtime environment for developing Web and Mobile application backends. In this talk you will see why Node.js can be a good choice for your server-side platform. We will discuss the fundamentals of developing a Node.js REST server for your mobile application using Visual Studio, and demonstrate the creation of a Node.js server using MVC, various authentication methods, and routing. Among other things, we will also demonstrate how your backend can connect to a MongoDB database, and best practices for building a MongoDB schema. At the end of the talk you will also acquire the skills to deploy your backend to the Microsoft Azure cloud using GitHub.

    Level: 200
    Prerequisites: JavaScript development experience and familiarity with Node.js

    JavaScript Internals 10:40 - 11:30 Nir Noy

    In this talk we will take a deep dive into the inner workings of JavaScript. Scopes, functions, closures, and prototypes are just some of the most misunderstood terms in the JavaScript world. We will take a tour "behind the scenes" of JavaScript to learn how to write better code.

    Level: 300
    Prerequisites: JavaScript development experience

    Server-Side Rendering (SSR) Approaches 11:40 - 12:30 Noam Kfir

    As web apps get larger and and our attention span shorter, web apps that don't optimize properly stand to lose potential customers, conversions and engagement. One of the more interesting solutions for optimizing modern single-page apps is to pre-render parts of the app before it even reaches the browser. But this is not an easy task and it often has unexpected ramifications on client app architecture, on the choice of JavaScript libraries and frameworks and on the development workflow. In this session, we'll look at a number of different approaches to SSR for different client frameworks and web servers, including Angular, React, Meteor, ASP.NET and others.

    Level: 300
    Prerequisites: JavaScript development experience

    Automate and Enhance Your Workflow with Gulp 13:30 - 14:30 Dovi Perla

    In this session you will learn how to use Gulp to run tests, compile JavaScript, and compress your files before publishing. We will discuss the installation process and provide overview of tasks that we can use to create streaming build systems with Gulp.

    Level: 300
    Prerequisites: JavaScript development experience

    Meteor: A Rising Star 14:40 - 15:30 Noam Kfir

    The Meteor framework is a rising star. Other frameworks focus on separation of concerns or data binding or look and feel, but rarely put all the pieces together like Meteor does. Meteor is a full-stack universal ("isomorphic") JavaScript framework for writing web and mobile apps that share code with the server and use MongoDB. It supports live updates and hot deploys, optionally integrates with Cordova, AngularJS and other frameworks and tools, and has a unified package system for server and client packages. It also has a single tool that does everything and simplifies the everyday workflow: builds, cloud deployments, minification, managing target platforms and Meteor packages, and all the rest. In this session, Noam will demonstrate how to build a reactive full-stack Meteor app from scratch.

    Level: 300
    Prerequisites: JavaScript development experience

    The Goodness of Web Components, Now 15:40 - 16:30 Roland Guijt

    A web component is like a custom control or widget that can be reused and is encapsulated in the browser using its own isolated CSS and javascript. Sometime in the future web components will be supported by every browser. Until then, we can already use them in every browser! Polyfills and Polymer are build on top of the web components standard. I will introduce you to web components by showing you with demos what web components are made of natively after which you'll learn the ins and outs of Polymer. Join me to change your perspective on how web development should be done. You'll leave with enough options to not recreate all parts of your next web project from scratch but reuse existing building blocks as much as possible using the most powerful invention since the HTTP request: web components.

    Level: 200
    Prerequisites: JavaScript development experience

    Meditations on Software Development Philosophy 10:40 - 11:30 Sathyaish Chakravarthy

    Level: 100
    Prerequisites: There is a worrying amount of imbalance between the demand for software programmers and the supply. Why is it so, and what do we do about it?

    Cloud Design Patterns 1/2 11:40 - 12:30 Israel Olcha

    TBD

    Level: 300
    Prerequisites: None

    Cloud Design Patterns 2/2 13:30 - 14:30 Israel Olcha

    TBD

    Level: 200
    Prerequisites: None

    ReSharper's Best Kept Secrets 14:40 - 15:30 Arnon Axelrod

    JetBrain's ReSharper​ is the most widely used productivity add-on to Visual Studio. If you just install it and don't take the time to learn what it has to offer, it won't give you much, but if you learn how to use it properly, you can be significantly more productive and you won't understand how you did without it before! (Caution: it's addictive!) This is exactly the goal of this session: to teach you how to take advantage of ReSharper's many great features and how to use them to boost your productivity!

    Level: 200
    Prerequisites: C# development experience

    Best Practices for Load and Performance Testing 15:40 - 16:30 Noam Amrani

    Test Automation is not only functional tests. While functional tests give us confidence that the code does what it is supposed to do in sterile conditions, it does not guarantee that the user experience is appropriate in terms of functionality and performance, especially when the traffic is high. In this session I'll give an overview and some best practices for Llad and performance testing, and some advice on how to get started with load testing, allowing you to increase your confidence in your project.

    Level: 200
    Prerequisites: None

    Adopting the MSP and CSP Models 10:40 - 11:30 Ido Katz

    In this talk you will learn about the MSP and CSP models and how they can assist the IT Pro to drive changes in the organization and to transform a department that used to be a spending unit to a department that can become an income unit. We will also talk about the cloud buzzwords such as IaaS and PaaS, and I'll show you how these features will help you take your business to the next level.

    Level: 200
    Prerequisites: None

    Automating Infrastructure in the Cloud 11:40 - 12:30 Yaniv Rozenblat

    In this talk, you will learn how to to make Microsoft Azure work for you, by automating your deployments using tools you already know and love. Azure uses the same Microsoft stack that IT Pros have been using on their on-premise environments for years, adapted and made more efficient to suit the needs we face in a cloud-first world. We will be using tools such as PowerShell and JSON to learn just how rewarding it can be to automate your cloud infrastructure. We will also learn what we can look forward to in the Azure roadmap when it comes to automation, and stay as up to date and relevant as we can.

    Level: 300
    Prerequisites: Experience managing Azure cloud deployments

    PowerShell DSC: Introduction 13:30 - 14:30 Siarhei Shchahrykovich

    In this talk, you will learn how to use PowerShell DSC (Desired State Configuration). We will cover the principles and ideas behind this technology. In addition, you will see how to write configurations for servers and test them. Moreover, I will share our experience of using DSC in production.

    Level: 200
    Prerequisites: Basic understanding of DevOps processes

    Protecting and Distributing PowerShell Tools 14:40 - 15:30 Dor Amit

    One of the challenges in PowerShell ALM, is creating usable tools that can be distribute to others, while keeping the source code protected as much as possible. There are many approaches for dealing with this challenge, each with its advantages and disadvantages. We are going to discuss some of the most common approaches out there, and demonstrate a custom solution in order to solve a particular use-case. Among other things, we will talk about encryption, compiling PowerShell scripts to executables, binary modules, and other approaches.

    Level: 300
    Prerequisites: Basic understanding of PowerShell scripting and DevOps

    Hyper-V Replica and Cloud Orchestration 15:40 - 16:30 Erik Rozman

    Our world is becoming increasingly more hostile. Terror, natural disasters and plain human error loom over us all... and more importantly, they loom over our favorite social network sites! But fortunately, not all is lost. To feed our appetite for being able to access everything, everywhere and always - the people that operate our critical infrastructures (yes, social networking is critical... kind of...) will employ high availability (HA) and disaster recovery (DR) solutions. These topics are hot, but relatively complicated. Implementation is far from simple, and at times it might require special equipment and huge investments. Luckily, by joining this session you will obtain insight on Hyper-V Replica, and Cloud Orchestration, a relatively simple solution that may be the answer for your HA and DR needs.

    Level: 300
    Prerequisites: Basic understanding of Hyper-V, HA and DR concepts

  • Wednesday, June 22: Half-Day Workshops

    Debugging the Web with Fiddler 09:00 - 12:30 Ido Flatow

    Every web developer needs to see what goes on "on the wire," whether it is a jQuery call from JavaScript, a SOAP or a REST service call from a client app, or a simple GET request for a web page. With Fiddler, the most popular HTTP sniffer, this is simple enough to do. Fiddler is more than just a sniffer. With Fiddler you can intercept, alter, record messages, and even write your own message visualizer. In this session, you will learn how to use Fiddler from bottom to top to monitor, debug, test, and improve web applications. We will also check some of Fiddler's newest features, such as the WebSocket viewer, single-session timeline, and direct session filters.

    Level: 300
    Prerequisites: Web development experience

    Mastering Linux Tracing Tools 09:00 - 12:30 Sasha Goldshtein

    In this half-day workshop we will explore the exciting world of modern Linux tracing tools. This is not another workshop that shows you examples of running `top` followed by `vmstat`. We will drill down and discuss various tracing features built into the system: the venerable ftrace, which provides access to kernel tracepoints, kprobes, and uprobes; perf_events and the perf front-end, which also offers support for low-level CPU events; a glimpse at the (declining) SystemTap framework; and finally, the icing on the cake, BPF and the BPF Compiler Collection (BCC), which has support for kprobes, uprobes, tracepoints, and USDT probes (such as those in Node and the JVM). We will explore a series of demos covering a variety of tracing scenarios -- from block I/O and the network stack to kernel memory leaks and high CPU utilization in user-space processes. We will also see how to build our own tracing tools from scratch, and how to run them in production continuously. During the workshop you will perform numerous short labs: if you come from a development background, you will use some existing tools and also write your own; if you come from an operations background, you will use a variety of tools and extend them as applicable for your own scenarios.

    Level: 300
    Prerequisites: Linux development or operations experience

    Docker from Scratch 09:00 - 12:30 Nati Cohen

    Docker is very popular these days, how many of us are really familiar with the basic building blocks of Linux containers and their implications? What's missing in the good ol' chroot jails? What are the available Copy-on-Write options and what are their pros and cons? Which syscalls allow us to manipulate Linux namespaces and what are their limitations? How do resource limits actually work? What different behaviors do containers and VMs have? In this hands-on workshop, we will build a small Docker-like tool from OS-level primitives in order to learn how Docker and containers actually work. Starting from a regular process, we will gradually isolate and constrain it until we have a (nearly) full container solution, pausing after each step to learn how our new constraints behave.

    Level: 300
    Prerequisites: The workshop will be conducted using Python, so basic Python knowledge is required. We recommend that you become get familiar with Python's os module. Basic understanding of Linux constructs (processes, mounts, etc.) is also recommended.

    ECMAScript Next 09:00 - 12:30 Barak Chamo

    With ES6, and more recently ES7, JavaScript has undergone the most significant update in years. With many new features and functionality developers can now write cleaner, more structured code and utilize built-in features in both functional and object-oriented paradigms. We'll start by looking at the biggest additions to the language and understanding how they can be used to improve our JavaScript code. These include: arrow functions and improved functions, classes and class extensions, module import, export and advanced usage, enhanced object literals, destructuring and spreading, array comprehension, string templating, promises, generators, WeakMap and WeakSet. We'll also look at some new ES7 goodies, including class and function decorators, async functions and generators. We'll follow with reviewing how to use ES6/7 JavaScript in current projects and how to get them to work across browsers with compilers like Babel and Webpack.

    Level: 300
    Prerequisites: JavaScript development experience

    Introduction to Rx (Reactive Extensions) 09:00 - 12:30 Sathyaish Chakravarthy

    In an ever-growing, fast changing technology landscape, consumer expectations have increased at a rapid pace. Customers want data in real time. Buyers want tracking information delivered to their mobile phones in the instant, investors want to watch stock information like hawks, and line of business applications rely on mission critical data to be delivered to them instantaneously to facilitate strategic decision-making. Reactive Extensions for .NET, Rx in short, is a powerful development framework that enables .NET applications to query events in real time. Rx can also be used to make asynchronous calls in declarative style. Rx builds on top of Microsoft's existing LINQ infrastructure thus empowering developers to apply complex query operators and transformations to event data in real time. This allows for developers to concentrate on composability and business logic while leaving the plumbing in the safe hands of the framework developers. In this session, we are introduced to the capabilities of this powerful development tool.

    Level: 300
    Prerequisites: C# and LINQ development experience

    Introduction to Unity 09:00 - 12:30 Liron Ratzabi

    Unity is a universal framework for cross-platform game development in C#, which is used by top games on iOS, Android, and Windows Mobile. In this workshop we will explore the scenarios where Unity really shines, use the Unity Editor to build games and scenes, understand Unity's design patterns such as the Game Controller and Game Manager, and review some advanced techniques for game logic and UI development. During the workshop you will build a simple first-person shooter game and experiment first-hand with the Unity API. This session is delivered jointly with Tom Neta.

    Level: 300
    Prerequisites: C# development experience

    Troubleshooting IIS Web Applications 13:30 - 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. When it comes to troubleshooting your IIS-hosted applications, most people heard of IIS Logs, and some may even have checked them out. But not many of us are familiar with all the other "less documented" troubleshooting techniques IIS has to offer. In this workshop, we will host a malfunctioned web application on IIS (you'll be amazed at how easy it is to write malfunctioning code), and use various IIS tools and tricks to troubleshoot the cause for latency, hangs, exceptions, and crashes. We will learn how to use IIS Logs (of course), Failed Request Tracing, real-time request monitoring, ETW events, Application Pool orphaning, and some other cool features and tricks IIS has up its sleeve. Some of the features we will see are only available with the latest IIS 10.

    Level: 300
    Prerequisites: Experience with IIS web applications

    Practical Git 13:30 - 17:00 Noam Kfir

    Git is powerful, fast, flexible... and confusing as heck. It is fast becoming the most popular version control system (VCS) in the world and has replaced TFVC, SVN and a host of others as the de facto VCS for open source and proprietary projects alike. But Git's robustness can seem overwhelming and raises many questions. Is a distributed VCS really better? Should you use feature branches? What's the deal with pull requests? What's the difference between merge and rebase? Isn't rewriting history A Bad Thing? This workshop is designed to get you up and running quickly with Git while avoiding common pitfalls. It introduces basic Git concepts, commands, tools and workflows. You'll learn how to work with Git using the command line and visual tools, easily create and join Git repositories, work in colocated or distributed teams, use branches and tags effectively, merge (and rebase) without fear, understand and navigate history, stash temporary work for later use, and we'll offer as many answers, tips and tricks as time will allow.

    Level: 300
    Prerequisites: None

    Advanced Debugging Techniques 13:30 - 17:00 Siarhei Shchahrykovich

    In this half-day workshop you will learn how to use WinDbg, PerfView, Windows Performance Toolkit and standard Windows tools for debugging in the production environment. We will use the tools for investigating memory leaks, high CPU consumption and high GC pressure. Exercises are based on real production bugs.

    Level: 300
    Prerequisites: .NET development experience

    Automated Web Development 13:30 - 17:00 Barak Chamo

    The days of manually refreshing the browser, re-running preprocessor commands in bash after every tiny change and going through long and error-prone re-deployments to update your code are, thankfully, behind us! We all want to use the latest and greatest tools and languages: ES6 JavaScript, TypeScript, CoffeeScript, LESS, SASS, Jade... The list goes on and on. Many modern web projects will rely on pre-processing in every aspect of their code: from JS to HTML templating and CSS compilation. These tools make easier to design in build large-scale projects but require us to re-compile our code on every tiny change. Luckily, tools exist for automating compilation and processing (such as Grunt, Gulp and Webpack), updating your code base and cutting down on repetitive tasks for manually compiled on every change to your files. It's now simple and easy to set up an automated development environment that enables you to develop faster and more efficiently. We'll cover five different aspects of automation: Auto-updated asset compilation: ES6 to ES5, React JSX to JS, LESS/SASS to CSS; Module bundling -- so your code base doesn't end up as one big bloated 5MB JS file; Karma Testing - so your tests are re-run automatically; Docker -- so you can share the fun with your team and not waste time defining env variables; NPM hooks -- so you can build automatically on the server and not forget to compile your source and have to re-deploy.

    Level: 300
    Prerequisites: JavaScript development experience and familiarity with deployment challenges

  • Thursday, June 23: Full-Day Workshops

    Getting The Most Out of IIS 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 session, we will learn of the new features released in the latest versions of IIS (7.x-10), how to configure IIS for better performance, and how to use its logging and debugging features.

    Level: 300
    Prerequisites: Experience with IIS web applications

    Building Your First Android App 09:00 - 17:00 Liron Ratzabi

    Android is the world's most popular mobile platform. Android powers billions of mobile devices. You'll build a real application from scratch and learn all the needed APIs to accomplish this task.

    Level: 300
    Prerequisites: Java development experience

    ASP.NET Core in a Day 09:00 - 17:00 Roland Guijt

    This workshop will bring you up to speed with all the goodness of ASP.NET Core, formerly known as ASP.NET 5, using a practical approach with guidance from the Pluralsight author of "Understanding ASP.NET Core". This release has the best new features seen in a long time. It not only supports development for a lightweight version of .NET called .NET Core, but for the first time you can also target non-Windows platforms. You'll also learn about how the programming experience has become much better in Visual Studio and the upgraded MVC programming model. ASP.NET Core is a different cup of tea. There's not much left of the good old System.Web model you're probably used to. No worries. This workshop will upgrade your skills with an investment of just one day.

    Level: 200
    Prerequisites: Experience with ASP.NET and MVC

    Spark From The Ground Up 09:00 - 17:00 Eyal Ben Ivri

    If you feel like 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 our sleeves to use Spark in some real-world scenarios so that you can start taking advantage of this framework that has taken over the Big Data world.

    Level: 300
    Prerequisites: None

    Introduction to the Task Parallel Library (TPL) 09:00 - 17:00 Bnaya Eshet

    Leave System.Threading.Thread, Join, and Abort to the previous decade. Modern applications don't create, manage, and destroy threads anymore, and don't manually synchronize data access. Since 2010, the .NET Framework has a first-class API for multi-threaded, asynchronous, and concurrent application development -- the Task Parallel Library (TPL). In this one-day workshop, we will discuss the move from tasks to threads, how to coordinate a large number of tasks with cancellation and exception propagation, and how to specify and interact with asynchronous workloads using the C# 5.0 async and await keywords. We will also review concurrent containers and best practices for synchronizing access to data without manually working with locks. If you haven't migrated away from the horrors of creating and managing threads yet, this workshop will give you all the tools you need to begin your journey.

    Level: 300
    Prerequisites: .NET development experience and familiarity with multi-threading

    Xamarin Unleashed 09:00 - 17:00 Ofir Makmal

    Xamarin is a framework for building iOS, Android, and OS X applications in C#, from Visual Studio. Let's start with the elephant in the room: Xamarin was just recently acquired by Microsoft. This is a great vote of confidence in the Xamarin product, but it also makes Xamarin available to every .NET developer for free, as part of the Visual Studio Community Edition. In this workshop, you will learn how Xamarin can target all the native iOS and Android APIs from C#, without compromising on performance or look-and-feel. We will discuss best practices for project structuring to get as much code sharing as possible, and techniques for hiding platform differences behind well-factored interfaces. Towards the end of the day, we will also review Xamarin Forms, a lightweight XAML-based UI framework that has a native look-and-feel but doesn't require separate UI specifications for iOS and Android. After completing this workshop, you will have a practical path for building your next mobile application with Xamarin's tools.

    Level: 300
    Prerequisites: .NET development experience