May 23-25, 2017 | Israel

SELA|DEVELOPER|PRACTICE

Professional developers conference

63 sessions

37 speakers

Sessions

  • Tuesday, May 23: Breakout Sessions

    Serverless Architecture in Azure 09:00 - 09:50 Rob Richardson

    AWS has Lambda, Azure has Azure Functions, Web Jobs, and App Service. Whether you want to script pay-by-the-drink web endpoints or build more traditional micro services. Come join us for this code-focused look at architecting, coding, and deploying serverless resources in C# and .NET Core.

    Level: 200
    Prerequisites: C# development experience

    Intelligent Bots as Service Proxies 10:10 - 11:00 Florian Rappl

    With the Microsoft Bot Framework an elegant solution exists to drive natural human-machine interaction. Furthermore, the Microsoft Cognitive Services such as the Language Understanding Intelligence Service (LUIS) give us a comfortable way of taking the input from a user and transforming it to actions. In the end the framework allows us to connect a large number of channels (such as Skype, Telegram, Email, Text, …) to our own backend for further processing. In this talk we start with the basics of the Microsoft Bot Framework and walk through the most important steps and decisions of creating an intelligent chat bot. Our ultimate goal is to begin with an idea and end with a rudimentary solution that exposes an existing service in a new way - completely accessible from popular messaging applications. In our journey we tackle questions such as persistence, authentication, and scalability.

    Level: 200
    Prerequisites: None

    AWS Serverless Solutions 11:10 - 12:00 Michael Haberman

    When was the last time you ran a security / operation system update on your production server? Yep, me too, far too long. This is one of the reasons why serverless solutions are awesome, we will go through why should you use serverless solutions. More importantly we will discuss the challenges the serverless architecture style raises and how to solve them.

    Level: 200
    Prerequisites: None

    Azure Cognitive Services 13:00 - 13:50 Dor Amit

    Azure Cognitive Services are SaaS AI services offered by Microsoft, which provide rich API sets to analyze text, video, photos, and more. In this session we will explore APIs for speech recognition, natural language analysis, face detection, and other services designed to save you valuable time and effort integrating cognitive solutions.

    Level: 200
    Prerequisites: None

    Using The Actor Model on Azure Service Fabric 14:10 - 15:00 Bnaya Eshet

    This talk introduces the Service Fabric Actor model and the framework in general, while surveying the Service Fabric cluster environment and how the Actor programming model fits into it. We will also talk about best practices in the Actor model, what kind of services it can replace, and its general pros and cons. Learn how to apply the next generation of Azure cloud services, today.

    Level: 300
    Prerequisites: None

    Introduction to The Google Cloud Platform 15:10 - 16:00 Moshe Shami

    Google is one fo the first companies that developed a cloud platform to run their applications at massive scale. The Google Cloud Platform runs Google Search, Gmail, YouTube, Maps, and many other services and applications. In this talk, we will explore the architectures and services that enable Google and other companies that run on GCP to run their applications at scale, perform data analysis, and machine learning, without downtime and with very high performance.

    Level: 200
    Prerequisites: None

    My Journey in Contributing to The F# Compiler 09:00 - 09:50 Avi Avni

    Today many projects are becoming open source, and even the C# compiler and F# compiler are! My dream was always to work on a real compiler project, and after a few years of learning F# and compilers I had an opportunity to participate in a mentorship program, where my mentor was a developer on the F# compiler team. Together we worked on cool features and since then I have been actively contributing to the F# compiler.

    Level: 300
    Prerequisites: .NET development experience

    Look Mommy, No GC! 10:10 - 11:00 Dina Goldshtein

    The .NET garbage collector can be your best friend or your worst enemy; and it’s not friendly with a lot of people. The GC left more than a few production systems burning in smoke after developers failed to anticipate the effects of real production loads on the memory subsystem. In this talk, we will methodically measure and improve the .NET garbage collector’s performance. We will begin with a quick refresher on dynamic performance tools that can identify GC issues: CLR performance counters, ETW GC events, and ETW object allocation events; as well as static analysis tools, such as the Roslyn-based heap allocations analyzer. Then, we will inspect multiple issues at the source code level: excessive boxing, unintended effects of lambdas closing over local variables, await-generated state machines, intermediate objects in LINQ queries, and many others. We will also discuss higher-level memory problems: how to get rid of large object allocations, how to avoid finalization, and how to convert heap-based designs to local objects. Some of these ideas are now being applied at the language and framework level in C# 7 and .NET Core. At the end of the talk, you will be equipped to reduce memory traffic and GC overhead in your own applications, often by a factor of 10 or more!

    Level: 300
    Prerequisites: .NET development experience

    Production Debugging War Stories 11:10 - 12:00 Ido Flatow

    Your .NET 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 tool belt filled with debugging tools, from the smallest tracing wrench to the memory dump crowbars. During this session, we will hear real world customer debugging stories, the tools we’ve used for troubleshooting, and the stuff we discovered (bugs/features/ “who put that code there?”).

    Level: 300
    Prerequisites: .NET development experience

    Understanding The New .NET Standard 2.0 13:00 - 13:50 Mark Michaelis

    Are you confused by all the options for compilation of .NET code? Are you wondering how to write assemblies that are cross platform? Are you confused with how to create assemblies that can be referenced from UWP, .NET Core, Xamarin and .NET 4.6? Join this session to explore the .NET platform offerings available in 2017 and the impact of .NET Standard 2.0.

    Level: 200
    Prerequisites: .NET development experience

    Essential C# 7.0 14:10 - 15:00 Mark Michaelis

    In this session, we will delve into all that makes up C# 7.0. As we introduce new features such as pattern matching, out-variable updates, anonymous yet strongly typed tuple returns, deconstructor support, local functions, variable declaration improvements, and more. Don’t miss out on this session to update your C# programming skillset to the latest C# language capabilities.

    Level: 300
    Prerequisites: C# development experience

    Introducing ASP.NET Core MVC 15:10 - 16:00 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 Core 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: .NET and Web development experience

    System Architecture With NoSQL (DocDB) 09:00 - 09:50 Oren Eini

    System Architecture with NoSQL, will explore how to build and architect enterprise systems using NoSQL, in particular, using the RavenDB Document Database. Oren Eini, founder of RavenDB, will talk about modeling concerns, high availability, and scale-out, how to manage a system with polyglot persistence, complex domain and a high rate of change while maintaining speedy development rate and keeping the ops team happy.

    Level: 300
    Prerequisites: None

    Spatial Data in ElasticSearch 10:10 - 11:00 Aviv Berko

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

    Level: 300
    Prerequisites: Basic familiarity with ElasticSearch

    Apache Beam with Google Cloud DataFlow 11:10 - 12:00 Moshe Shami

    TBD

    Level: 200
    Prerequisites: TBD

    Getting Hot And Cold With Data on Azure 13:00 - 13:50 Zoiner Tejada

    Are you working on IoT or web scale clickstream processing solutions? Got megabytes, tens of megabytes or even hundreds of megabytes of small data coming at you? Per second? If you answered yes to any of these, awesome, this session is for you. We will introduce the Lambda Architecture for Big Data, and walk thru an Azure reference architecture that answers the questions of: How best should you ingest all that data? What can you do with the data now in near real-time now that you have it (the hot path), and how you should go about keeping it for future analysis (the cold path)? While you are on your way to building the next twitter or solving the world’s energy crisis with a massively successful IoT platform, understanding how and when to leverage Data Lake, IoT Hub, Event Hubs, Blob Storage, Stream Analytics, HD Insight (Spark and Storm), Azure Machine Learning and how to position those pipelines next to your operational SQL Server in a VM or SQL Azure Data Warehouse is a mission critical decision. Choose poorly and your solution will cost too much, be a burden on your developers or will ultimately collapse underneath the volume of data. Choose wisely, and you are well on your way to stream processing nirvana. Choose wisely and attend this session.

    Level: 200
    Prerequisites: None

    On Azure, IoT Means Fast Data 14:10 - 15:00 Zoiner Tejada

    Big Data has three forms- volume, variety and velocity. IoT is unique in that tends towards time-series data that is small individually, but comes predominantly as high speed streams. Time-series data brings with it a special set of challenges: How can you build a solution that can ingest data arriving at this speed? How do you manage the devices that are allowed to send data to your solution? Once you have received the data, how do you process it so you can support detailed analytics and yet not miss out on important events that need to generate real-time alerts? Beyond supporting analytics, how you can you apply intelligence to the stream of data flowing thru your solution? How do you make this solution scale? Come to this fast paced session to understand how you can implement a scalable IoT analytics solutions using tuple-at-a-time and micro-batch processing approaches atop IoT Hub, Event Hubs, Kafka, Stream Analytics, Web Jobs with Event Processor Host, HDInsight Storm, HDInsight Spark, Machine Learning and SQL Database.

    Level: 200
    Prerequisites: None

    Introduction to Real-Time Stream Processing 15:10 - 16:00 Itamar Syn-Hershko

    In the Big Data era, stream processing is essential to performing many tasks - responding to sensor data to optimize operation, deriving insights from data in real-time, executing machine-learning algorithms on the fly, and much more. Stream Processing Frameworks are everywhere - Apache Storm, Flink, Samza and Spark Streaming are just a few of many battle-tested technologies helping us deal with streams of data or events in scale. But that's just the tip of the iceberg, as the real work in this area has just begun. This talk covers the main technologies in the field, as well as patterns of use and complementing technologies. We will also discuss how stream processing fits in a larger system, and how it can be complemented (or can complement) batch processing methodologies.

    Level: 200
    Prerequisites: None

  • Tuesday, May 23: Full-Day Workshops

    NodeJS Workshop 09:00 - 16:15 Gil Tayar

    Are you unfamiliar with NodeJS, and are curious to learn about this fascinating environment? Do you have the NodeJS basics, but would like to tighten your understanding and learn a little more? If so, then this workshop is for you. During the workshop you will learn the basics of Node. You will learn about the unique asynchronous nature of Node, learn how to use callbacks, how to use APIs like the filesystem API, how to create node modules, and how to build web applications using express. Since we are in 2017, you will also learn how to leverage ES2015 to make your code nicer and more concise, and to leverage Promises to make asynchronous programming bearable. Given that I am a firm believer in testing your code, you will also learn about how to write tests in Node using Mocha - unit tests, integration tests, and end to end tests.

    Level: 200
    Prerequisites: JavaScript development experience

    Docker 09:00 - 16:15 Rotem Or

    TBD

    Level: 300
    Prerequisites: TBD

    Building RESTful APIs With ASP.NET 09:00 - 16:15 Dylan Beattie

    So you’ve built your HTTP API, and now that it’s live, you’re suddenly dealing with a whole new set of problems. Do you really need to PUT the entire Customer just to change someone’s email address? Why does it take you 25 API calls just to render a shopping cart? How do you find the bottlenecks when just drawing a web page requires fifty HTTP requests? What happens when one of your API consumers accidentally tries to GET your entire customer database? The architectural style known as REST can answer all these questions - and more - but even experienced developers often find it difficult to apply RESTful principles when building real-world applications. In this workshop, we’ll explore the elements of REST related to hypermedia and the principle of “hypermedia as the engine of application state” (HATEOAS) - we’ll talk about why they matter, what problems they solve, and when you might want to implement them in your own systems. During the workshop, we’ll implement a RESTful HTTP API using C# and ASP.NET. Starting with the most basic “hello world” service, we’ll cover patterns like content negotiation and resource expansion. We’ll compare several popular formats for representing hypermedia in modern web APIs, we’ll cover the semantics of PUT, POST and DELETE (and implement support for HTTP PATCH), and we’ll look at some of the tools and frameworks that are available to help you design, build and monitor your HTTP APIs. Finally, we’ll cover topics like monitoring and security, and we’ll discuss the strategic value of building HTTP APIs in modern organisations - so you’ll go home not just knowing how to build a great RESTful APIs, but also how to persuade your boss that it’s a good idea.

    Level: 300
    Prerequisites: .NET and Web development experience

    Introduction to Web Accessibility 09:00 - 16:15 Gerard Cohen

    This full day course will serve as crash course into web accessibility, either for empathetic / responsible developers, or developers that require accessibility for government / education projects. We will go over the official web accessibility guidelines, the different disabilities we need to cater to on the web, and practical examples of how to develop for accessibility. Topics would include proper web semantics, document structure, forms, tables, images / multimedia, and a little bit of advanced accessibility with JavaScript and ARIA. Finally, we will go over a few testing tools to work into a developers workflow. A participant will leave with an understanding of what / why of accessibility, and real-world techniques to improve access of their projects for everyone.

    Level: 200
    Prerequisites: Web development experience

    Linux Performance Tools 09:00 - 16:15 Sasha Goldshtein

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

    Level: 300
    Prerequisites: Linux development or operations experience

    Modern DevOps Solutions With Visual Studio 2017 09:00 - 16:15 Shmulik Segal

    TBD

    Level: 300
    Prerequisites: TBD

  • Wednesday, May 24: Breakout Sessions

    Real-World React-Native 09:00 - 09:50 Barak Chamo

    React Native, the React-inspired mobile SDK developed by Facebook, empowers JavaScript developers to build cross-platform apps for Android, iOS and UWP. Unlike other mobile-JavaScript platforms, React Native renders native apps, not web views, and harnesses the full power of the native mobile experience without having to trade performance or native "look-and-feel". Now that React-Native has been around for a good while, let’s explore it in-depth: the React-based API, extensible interfaces for platform-specific development and native integration and advanced use-cases where its "-Native" shines, from layouts to transitions, animations and native modules that will let you build powerful mobile apps.

    Level: 300
    Prerequisites: Previous experience with mobile development, cross-platform applications, or React

    CI, CD, Testing, And Analytics For Mobile Apps 10:10 - 11:00 Liron Ratzabi

    TBD

    Level: 300
    Prerequisites: TBD

    From WPF to UWP 11:10 - 12:00 Uriel Jacobson

    WPF was, and for some still is, the best solution for building desktop application on Windows. Unfortunately, it is becoming less popular and is not actively maintained -- although still far from being deprecated. Microsoft has now shifted to recommending UWP (Universal Windows Platform) as the framework for building Windows applications going forward, specifically for Windows 10. In this session, we will compare the features and abilities of WPF and UWP, from performance to developer productivity, concepts, patterns, target devices, and more. We will also address the big question: is it possible to migrate from WPF to UWP? For experienced WPF developres, this is the talk that will help you face the challenges when joining the community of UWP developers.

    Level: 300
    Prerequisites: Familiarity with WPF and XAML

    Build Your First Native Mobile App With Angular 13:00 - 13:50 Ran Itzhaki

    The struggle of choosing between building a web application and a native mobile application is finally over: meet NativeScript. Using plain JavaScript you can now build a real, native, mobile application. NativeScript is not about using a WebView delegate like Cordova -- it is about converting your JavaScript code to a real native application. In this talk we will focus on Angular 2 as the base framework, and using NativeScript we will create a native mobile app from plain JavaScript.

    Level: 200
    Prerequisites: Familiarity with JavaScript development

    Xamarin Forms 14:10 - 15:00 Liron Ratzabi

    TBD

    Level: 300
    Prerequisites: TBD

    Progressive Web Applications 15:10 - 16:00 Moran Fine

    Progressive Web Applications (PWA) are web applications that have the look and feel of mobile apps -- taking the best of the two worlds (mobile and web) to create the next generation of applications. We will talk about PWA, the problems of mobile apps and web apps today, how to create a small PWA with Ionic 2, service workers and manifest files, and using Lighthouse to check if your app is indeed progressive to use PWAs today.

    Level: 300
    Prerequisites: JavaScript development experience

    Real-World REST And Hands-on Hypermedia 09:00 - 09:50 Dylan Beattie

    So you’ve built your HTTP API, and now that it’s live, you’re suddenly dealing with a whole new set of problems. Do you really need to PUT the entire Customer just to change someone’s email address? Why does it take you 25 API calls just to render a shopping cart? How do you find the bottlenecks when just drawing a web page requires fifty HTTP requests? What happens when one of your API consumers accidentally tries to GET your entire customer database? The architectural style known as REST can answer all these questions - and more - but even experienced developers often find it difficult to apply RESTful principles when building real-world applications. In this workshop, we’ll explore the elements of REST related to hypermedia and the principle of “hypermedia as the engine of application state” (HATEOAS) - we’ll talk about why they matter, what problems they solve, and when you might want to implement them in your own systems. We’ll look at architectural patterns like resource expansion, OAuth2, HTTP PATCH and API versioning. Finally, we’ll discuss the strategic value of building HTTP APIs in modern organisations - so you’ll go home not just knowing how to build a great RESTful APIs, but also how to persuade your boss that it’s a good idea.

    Level: 300
    Prerequisites: Web development experience

    Migrating From React to Inferno 10:10 - 11:00 Florian Rappl

    In recent times React has attracted quite a lot of attention despite its poor performance on mobile. The cure for this problem did not come from a big corporation, but instead originated within the open-source community. The personal project Inferno flourished into a whole community, which created a serious competitor to React. This library promises an improved performance, nearly fully-compatible API, and a more focused solution than React. Why do we want to migrate away from React? What obstacles have to be faced in the migration? Is the migration worth the efforts? In this talk we will hear the story of a large cross-platform mobile application that was migrated from React to Inferno.

    Level: 300
    Prerequisites: Familiarity with React

    Token-Based Authentication in Web Applications 11:10 - 12:00 Dovi Perla

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

    Level: 300
    Prerequisites: Web development experience

    Getting Started With Angular 2 13:00 - 13:50 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: 200
    Prerequisites: Web development experience

    Accessibility Testing Tools For Developers 14:10 - 15:00 Gerard Cohen

    You don’t have to be an accessibility expert to make your projects accessible, but you do have to make your projects accessible. Identifying accessibility issues as early as possible can save an organization or project a substantial amount of money, time, and headaches over trying to augment a web site or application after initial development. Using testing tools during development for accessibility will definitely help with this process. For developers that are novices to web accessibility this presentation is a great introduction into key aspects to consider while developing. For developers that are more familiar, this presentation exposes tools that will make accessibility easier. All users will gain from learning how to build accessibility into their development workflow using a variety of testing tools, from simple to intricate.

    Level: 200
    Prerequisites: Web development experience

    TBD 15:10 - 16:00 TBD

    TBD

    Level: 300
    Prerequisites: TBD

    Continuous Delivery With Containers 09:00 - 09:50 Shmulik Segal

    TBD

    Level: 300
    Prerequisites: TBD

    Cloud Monitoring Solutions 10:10 - 11:00 Idan Yona

    All right, you have your services all up and running in the cloud. Now what? In this session, we will review the services available for monitoring your cloud infrastructure and the applications running on top of them. Review the why and how of setting up integrated monitoring for your cloud application, with examples on leading cloud platforms: Google Cloud Platform, Amazon Web Services, and Microsoft Azure.

    Level: 200
    Prerequisites: Familiarity with at least one major cloud provider

    Azure Resource Manager For The Win 11:10 - 12:00 Magnus Martensson

    With the new model Azure Resource Manger Microsoft are gaining the repeatability they always wanted for deployment to the Cloud and removing the dreary, repetitive, error prone manual deployment tasks which has always held us back! With ARM you can create a Template for your environment and use that for deploying identical environments every time without fail! There is some news in the world of “infrastructure as code” that we need to take into account while setting up our Cloud environments. The Win we get from being able to deploy our development environment or our temporary load test environment automatically and identically to our production environment cannot be understated. This is ARM from a project efficiency, development and also DevOps perspective. This is what you need to know in order to make you much more efficient every day of development.

    Level: 200
    Prerequisites: Cloud development or infrastructure experience

    Docker Orchestration Solutions 13:00 - 13:50 Rotem Or

    TBD

    Level: 300
    Prerequisites: Familiarity with containers and/or Docker

    Modern Linux Performance Tools 14:10 - 15:00 Sasha Goldshtein

    Modern Linux systems come with a wealth of built-in instrumentation that can be used for safe, easy, low-overhead production-time monitoring. In this session we will review the available Linux tracing and monitoring tools: a simple checklist for system performance with tools like vmstat, pidstat, iostat, and sar; the venerable perf multi-tool for CPU sampling and capturing kernel tracepoints; and the upcoming BPF kernel runtime for developing tracing programs that run in the kernel and perform aggregations close to the source. At the end of this session you will be equipped with a variety of tools for monitoring all kinds of Linux systems and applications, including web servers, Java applications, PHP/Node.js/Python, and more.

    Level: 300
    Prerequisites: Linux development or operations experience

    Git For Experts 15:10 - 16:00 Leon Jalfon

    Git is undoubtedly one of the most important version control systems, and learning how to use it is practically indispensible. After learning and getting acquainted with Git the first thing you can notice is that it's a powerful but terrifying tool. Due to its great flexibility if used properly it becomes a very useful tool, but if used in the wrong way it turns into a painful nightmare. In this session we will talk about how to use Git properly by analyzing the distribution models, the branching models and the common constraints, and explaining most popular Git workflows and how to create a custom workflow that suits your needs.

    Level: 300
    Prerequisites: Experience working with Git

    "Me" in The New Global World 09:00 - 09:50 Yael Greenberg

    In a constantly changing and evolving world, we are constantly required to adapt ourselves to the changes in the organization. In this session, we will learn how to lead our employees through the changes and how to empower ourselves and influence our employees. We will understand the true value of the employee and the manager in a complex business reality, and how to lead the employees to improve their performance by using positive influence. In addition, we will emphasize how to become an influential employee in an organization by doing the job at the most meaningful way.

    Level: 100
    Prerequisites: None

    Dealing With Stress And Pressure 10:10 - 11:00 Galit Dayan

    In recent years, brain study and understanding its impact on human behavior is accelerating. This session will expose you to the way science is mapping the employees' capabilities, patterns and behaviors. Participants will receive tools to help them create new ideas, explore their potential and their strengths to resolve issues and conflicts within the organization.

    Level: 100
    Prerequisites: None

    What Do Ramesses II And Steve Jobs Have in Common? 11:10 - 12:00 Galit Dayan

    In this session we will about the use of icons through the ancient Egyptian writing (hieroglyphics), and discuss the importance of communicating visually using icons (logo, slogan, emoji) and how these symbols affect thought processes, decision making and emotions.

    Level: 100
    Prerequisites: None

    Developing Creativity And Cognitive Flexibility 13:00 - 13:50 Gili Adler and Mirit Har-Lev

    The "Advanced employee" is an employee with the ability to look through a variety of perspectives on a situation / organizational dilemma. Through the appropriate choice of perspective, he could solve it in a creative way, while improving performance. In this session, we will acquire tools for defining the perspective, the advantages and disadvantages of that perspective and learning new and innovative perspectives.

    Level: 100
    Prerequisites: None

    Amdahl to Zipf: Fundamental Laws of The Physics of People 14:10 - 15:00 Dylan Beattie

    It's all too easy to think software is magic - but it's not. Most of the time, it's not even sufficiently advanced. Like everything else in our world, the people you work with and the products they build are subject to the fundamental laws of nature. Based on an original idea by Pieter Hintjens, this talk explores the laws of our universe - from the fundamental laws of physics to the eponymous laws found in the IT industry. Dylan Beattie shows you how Newton's Laws of Motion can explain why big organizations struggle with agile development; how the Equivalency Principle explains why so many startups fail, and why Heisenberg's Uncertainty Principle makes it so hard to estimate and report on your software projects. Finally, we'll look at three of the oldest laws of software engineering - Moore's Law, Amdahl's Law and Conway's Law - and how they can prove that if you don't stop having meetings, the internet will stop working.

    Level: 100
    Prerequisites: None

    TBD 15:10 - 16:00 TBD

    TBD

    Level: 100
    Prerequisites: None

  • Wednesday, May 24: Full-Day Workshops

    Build a CI/CD Pipeline on The Microsoft Stack 09:00 - 16:15 Rob Richardson

    Right-click Publish is easy, but it’s evil. FTP it up is fragile and error prone. You know you need to run tests and deploy in a consistent way. Bring an empty Windows VM, and we’ll install and configure TeamCity, Octopus Deploy, Microsoft build tools, and Red Gate database management tools. Set a sample project or your solution into place, and watch it build and deploy on your system. You’ll leave with a fully working CI/CD pipeline you can extend for your organization and the skills to set this up where it counts.

    Level: 300
    Prerequisites: .NET development experience

    Essential Web Development With ASP.NET Core 09:00 - 16:15 Mark Michaelis

    What’s Up with the new ASP.NET Core? (Who Moved My Cheese?) The latest release of Visual Studio is no minor upgrade from Visual Studio 2017. This is the culmination many changes, even to areas that have remained the same since the first days of Visual Studio .NET. This session will delve into the details of those changes as they relate to ASP.NET Core. This includes things like the solution structure, the addition of the wwwroot folder, unit test tool updates, config file changes, project schema changes (with or without JSON) and much more. Attend this session to jumpstart your ASP.NET Core development, and catapult you to immediate productivity instead of wallowing in the surprise of change.

    Level: 200
    Prerequisites: .NET and Web development experience

    Intelligence And Machine Learning in Azure 09:00 - 16:15 Zoiner Tejada

    Most materials about machine learning focus on the details around model building. While that is important, as a developer what is really important to you is that you understand both model creation and model operationalization. Succinctly, this workshop is really about the end game of delivering a successful solution in Azure - how you operationalize the model and integrate intelligence into your solution architecture. For those unfamiliar with machine learning concepts, we will provide a backgrounder so you that you understand the key tools in the toolbox (data transformation, supervised learning modules, unsupervised learning modules) and the value that Azure ML and R Server bring to the larger solution (such as classification, clustering and predictive analytics). As a developer, you will leave with a good sense of how models are programmed across multiple languages including R, Scala and Python, as well as how they can be composed visually using the designer provided by Azure Machine Learning. We will cover the pipeline of how you need to prepare your data, how you perform model training, and how to architect your solution so that the model training can be done with data at scale (e.g., exceeding 10 GB and reaching Terabyte scale) in the situations that require it. We cover the gamut of model creation from local training on your dev box to remote training with Azure ML, HDInsight and SQL R Services. You will learn how models are trained in Azure Machine Learning via training experiments, as well as via programs that leverage the parallel algorithms in HDInsight with Spark and the RxSpark context, and how you train a model without ever leaving your SQL database by using T-SQL to execute embedded R scripts against tabular data managed by SQL Server. With your model in hand, we’ll tackle an issue that surprises developers new to machine learning - how to leverage the trained model from their programs. Operationalizing your model is the critical last mile in getting value out of your effort. Here we’ll cover the gamut of operationalization options from local prediction to remote prediction with Web Services and Stored Procedures. Not knowing your options for how to operationalize, or not having a plan for operationalizing and integrating into your application can mean significant delays in bringing the value of your model to your application because you will see wasted time in transcoding models to different productions languages (like converting from R to C#), questions about the parity of that converted model to the original, finding your solution for operationalization does not scale well or wasting money on approaches that are simply inefficient for hosting operationalized models. After integrating our model into our solution, our journey continues. Here we will pause to reflect on and appreciate the build versus buy decision - in some cases we may not have to go through the trouble of building and operationalizing our own model at all because Microsoft Cognitive Services already provides what our solution needs, in a convenient REST API form. With an end-to-end, intelligent solution in place we turn our attention to the subtle follow-on problems we need address, such as how we ensure our model is continuing to perform and how we re-train the model with new information over time to keep it current and accurate. Come to this workshop and leave equipped to develop intelligent solutions end-to-end using Microsoft Azure.

    Level: 200
    Prerequisites: Development experience in any language; non-developers are also welcome

    Beyond Async And Await 09:00 - 16:15 Bnaya Eshet

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

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

    Introduction to Data Science With Python 09:00 - 16:15 Moshe Shami

    Getting value from yor data has become a major source of income for software companies. Data science is the art of producing business value from data, and includes getting data from a vast number of sources, analyzing it, and presenting it in a way that provides business value. Python is a great language to do it. In this one-day workshop we will explore the basic tools in Python that help you store, analyze, and present data to reflect business value. We will learn IPython, Jupyter, numpy, pandas, matplotlib, and scipy.

    Level: 200
    Prerequisites: None

    Getting Started With Angular 2 And Beyond 09:00 - 16:15 Nir Noy

    The Angular team made the wise but difficult choice of starting over with Angular 2, rather than just patching the mature but increasingly fragile framework. From now on, it's Angular -- not Angular 1, 2, or 4. The new version is based on a modern approach, which 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 taking over the whole ecosystem. This workshop introduces this new paradigm that underlies Angular, helps you set up a productive development environment, and teaches you how to build a well-structured app with Angular modules, components, services, and routing.

    Level: 300
    Prerequisites: JavaScript development experience

  • Thursday, May 25: Half-Day Workshops

    Production-Grade React 09:00 - 12:15 Barak Chamo

    React has long become one of the most popular front-end frameworks, and powers many web applications including Facebook itself, but what tools and features does it provide us to write robust and performant apps? From React’s advanced propTypes, to FlowType and the Jest testing platform, let’s dive deep into the React ecosystem’s set of production-grade tools. These make development easier, our code safer and more dependable! Working through a React project, we’ll put these tools to use and see how to incrementally improve our code, including many small tips you could apply to your work or personal projects right away!

    Level: 300
    Prerequisites: Previous experience with React

    Introduction to The ECMAScript 6 Workflow 09:00 - 12:15 Rob Richardson

    Curious about EcmaScript 6 / 2015? Want to use it today? JavaScript has come of age, and this latest version adds lots of syntactical sugar to make our code clearer. You can use these tools in ES5 browsers today by leveraging a code bundler and transpiler. We’ll talk and code together through: ES6 language features such as =>, let, import, and class; ES6 -> 5 transpilers like Babel; Code bundlers like Webpack; A tour through ES6 and JSX usage in React; A tour through ES6 and TypeScript in Angular 2. You can use these open-source technologies in production today to quickly build very powerful web apps.

    Level: 200
    Prerequisites: Web development experience

    Serverless Architecture With Google Cloud Platform 09:00 - 12:15 Moshe Shami

    Building cloud based applications is a challenging task. One of the most painful tasks is deploying, configuring and maintaining your hosts that run your applications. You need to take care of upgrading your infrastructure, securing your applications and take care of failures of your servers due to large number of reasons. Google Cloud Platform offers to do this job for you and save money for you by reducing the TCO of your applications, by using Google app engine and by using all kinds of servless services like BigQuery, DataFlow, DataStore and many more. In this workshop we will learn how you can run your applications and use many types of services without any servers at all! Just write your code and load it to the cloud, no need for DevOps! In addition, we will learn about the powerful tools that Google App Engine provides us for serverless applications.

    Level: 200
    Prerequisites: TBD

    Mobile Development With React-Native 13:15 - 16:15 Barak Chamo

    React Native is quickly becoming most web developers’ technology of choice when building mobile apps. Unlike Phonegap or Cordova, React Native doesn’t package web pages, but provides a robust cross-platform API to build native applications! In this workshop we’ll build, step-by-step, a fully functional React Native application for iOS and Android, we’ll see React-Native’s power in building slick, powerful apps and the different details and pitfalls in trying to build a one-size-fits-all app, as well as how to avoid them. If you’re familiar with React, React Native will open a world of mobile possibilities!

    Level: 300
    Prerequisites: Previous experience with React

    Ionic 2 With Angular 2 And TypeScript 13:15 - 16:15 Ilia German

    Ionic is a modern open source SDK for building native and progressive web applications in JavaScript. Ionic is fully cvross-platform and features excellent performance and a variety of native plugins for device-specific features. In this workshop, we will explore the fundamentals of Ionic, see why it is a great alternative for mobile app development, install Ionic and run an app in a browser and on a mobile device, and discuss some framework concepts such as navigation, components, and HTTP communication.

    Level: 300
    Prerequisites: JavaScript development experience

    Git Master Class 13:15 - 16:15 Leon Jalfon

    Git is undoubtedly one of the most important version control systems in the few years, and in this workshop you will learn how to use this tool that has become practically indispensable. In this session we will talk about what Git really is, we will know "the four areas" and we will see how the different commands affect each one of them. Unlike what many people think, learning Git is not learning how to run the commands, but rather understanding how each command affects each area. In general the objective of the session is to change the way of seeing and understanding Git. Don't learn to use Git, learn to think in Git. NOTE: This talk is suitable for both new users and intermediate users. New users will be able to understand the basics of Git and gain the ability to continue learning on their own, while downstream users will be able to forge their knowledge and advance to a new level. Topics covered: configuring a Git repository, the Git four areas, working locally, working with remotes, working with branches, advanced topics.

    Level: 300
    Prerequisites: None

  • Thursday, May 25: Full-Day Workshops

    Modern Web Apps With React 09:00 - 16:15 Florian Rappl

    React is the most popular JavaScript library to create single page applications. With features like virtual DOM, predictable data flow, and high modularity it has helped many companies to deliver large modern web applications that are well performing and easy to develop. In this workshop we learn React from the ground up (incl. components, JavaScript with XML (JSX), state, events, server-side rendering). The workshop also covers more advanced topic like the React router, component testing, the Flux architecture with Redux, as well as the fundamentals of React native.

    Level: 300
    Prerequisites: JavaScript development experience and understanding of MVC concepts

    Azure Resource Management Wizardry 09:00 - 16:15 Magnus Martensson

    The infrastructure of your application is typically made up of many components. Maybe you need a virtual machine, storage account, and virtual network? Or perhaps a web app, database, and some additional 3rd party services? The main Cloud argument is that you no longer need to maintain any resources since all the services you need are hosted in the Platform for you to simply reach out and utilize. Your new challenge instead becomes how to handle your environments of services in the Cloud! How do you manage your production, development and test environments? With Azure Resource Management, you can deploy, monitor and manage your assets in the Cloud in a powerful, secure and easily repetitive manner. There is some new skill to be acquired if you want to do this really well and be in full control of ‘Your Azure’; your applications in the Cloud and your users data! Don’t go the naïve and amazingly common path which is shrugging and hoping for the best! Correct, easy and powerful Azure management is probably the most useful, cost saving and elegant skill you will learn in a while! All those who will be deploying, running, maintaining and developing vital applications on the Azure Platform should attend. You will learn to automate and remove repetitive and error prone work! After this course you will be confident in managing your assets in Azure and you will feel secure in knowing that you control access to your resources in the Cloud!

    Level: 300
    Prerequisites: TBD

    Troubleshooting ASP.NET Web Applications 09:00 - 16:15 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 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: ASP.NET development experience