December 20-24, 2015 | Rishon Le-Ziyon, Israel

SELA|DEVELOPER|PRACTICE

Professional developers conference

49 sessions

31 speakers

Sessions

  • Sunday, December 20: Pre-Conference Workshops

    Securing ASP.NET Applications 09:00 - 17:00 Ido Flatow

    When you think of ASP.NET security, the first things that come to mind are Windows authentication and forms authentication using ASP.NET Membership. For years, those were the common authentication techniques for ASP.NET applications and services. But with the new releases to the ASP.NET Identity system, those days are long gone. For the enterprise, ASP.NET broadened its support from the on-premises Active Directory to include Microsoft Azure Active Directory. By supporting external identity providers, such as Facebook, Microsoft Account and Twitter, the new ASP.NET Identity system makes the process of securing an application less scary than ever. In this workshop, Ido will start from the basics of getting to know concepts such as SSL, OAuth, OpenID and claim-based authorisation. From there we will continue to explore the various scenarios of using self-managed identities, Active Directory and ADFS, external identity providers (Facebook, Google, Microsoft) and Microsoft Azure Active Directory.

    Level: 300
    Prerequisites: ASP.NET development experience

    Windows 10 UWP (1/2) 09:00 - 17:00 Alex Golesh

    The Universal Windows Platform (UWP) is available across all Windows device families. From PCs to tablets, phones, and more, you can reach all these devices and look great on them all using one store and one codebase. In this two-days instructor-led workshop we will cover the prerequisites and basics of UWP development, common APIs, Extension SDKs and Adaptive Controls. We will cover techniques used for development targeting multiple device families device such as capabilities considerations, screens/resolutions, different input methods, etc.

    Level: 300
    Prerequisites: XAML and C# experience

    Java 8 Deep Dive 09:00 - 17:00 Moshe Shemi

    This workshop introduces Java 8, the biggest release of Java yet. With a variety of features ranging from the language to the JDK, Java 8 can boost productivity, improve readability, and offer better performance. This fast-paced workshop will dive deep into the new Java 8 features, including lambdas, streams, and functional programming tenets.

    Level: 300
    Prerequisites: Java development experience

    Next-Gen UI, API, and Server Side: Beginner to Advanced 09:00 - 17:00 Chander Dhall

    Are you building next-generation web apps? Do you want these apps to scale and be easily maintainable? Do you want to learn the best of all 3 worlds -- UI, API and Server Side? This full-day workshop is for you. It's a mix of code and concepts. Microsoft MVP, ASP.NET Insider, and Web API Advisor Chander Dhall will cover the 3 tiers needed for multi-client, scalable, next-gen apps. He will be covering all levels from beginner to advanced and will provide a lot of code and slides to take away with you. Chander Dhall owns a consulting company with 100% success rate, on-budget, on-time. He is known to have scaled enterprise apps with more than a billion hits/days and has led successful projects for Fortune 500 clients. Covered topics include: Basic JavaScript, functional programming, Angular.js, Web API principles and guidelines, REST, ASP.NET and Node.js Web API, SOLID principles, Entity Framework, NoSQL vs. SQL, comparing NoSQL databases, Azure Storage and Document DB, ElasticSearch, Azure Search.

    Level: 300
    Prerequisites: Web development experience is recommended but not a must

  • Monday, December 21: Breakout Sessions

    KEYNOTE 09:30 - 10:20 Shimon Schocken

    Consider the following challenge: you have 18 months to develop 500 interactive games that cover mathematics education from kindergarten to grade 6. The software that you develop must run as-is in 10 different languages on web platforms in browsers, as well as on Android and IOS devices, outside a browser, using the very same code base. HTML5, Flash, and the garden variety of multi-platform engines like Unity are off limits. How would you go about it? This, in a nutshell, was the starting point of www.matific.com. Today, Matific is a cross-platform math teaching and learning system that runs on laptops and tablets in more than 15 countries and 10 languages, including Hebrew and Arabic. In this talk we'll discuss the software frameworks and engineering principles that we've developed to make it happen. In particular, we'll talk about our thin-objects framework, our cross-platform MVC model, our authoring system, and our problem description and generation languages. Most of this infrastructure was built by our chief software architect, Shmulik London.

    Level: 100
    Prerequisites: None

    Developing for Multiple Devices with Windows 10 UWP 10:40 - 11:30 Alex Golesh

    The Universal Windows Platform (UWP) is available across all Windows device families. From PCs to tablets, phones, and more, you can reach all these devices and look great on them all using one store and one codebase. During this session we will cover the prerequisites and basics of UWP development, common APIs, Extension SDKs, Adaptive Controls and device capabilities considerations.

    Level: 200
    Prerequisites: XAML and C# experience

    How To Write a Windows Device Driver in 10 Minutes 11:40 - 12:30 Gad Meir

    In the modern world of IoT devices, which are often headless and speechless, Windows device driver development is becoming more and more relevant. Device drivers can access the internals of the operating system and give your application access to internal system structures and data, special hardware features and enable you to execute privileged operations not available via the standard API. In addition, device drivers are today a basic building block in the huge marketplace for cheap and strong hardware microcontrollers which are the base of an industry of modern appliances and gadgets that you would like to build, access or control. In this talk we will build and demo the use of a device driver to access internal OS data and hardware and relate that knowledge to IoT, Windows 10 modern appliances and to the cloud.

    Level: 200
    Prerequisites: None

    The New Windows Editions: Windows 10 for IoT and Nano Server 13:30 - 14:30 Gad Meir

    Nano Server is soon going to be the most common server operating system in the world. Technically speaking it is an installation option in Windows Server 2016. But what makes it special is its very small and compact image, very fast boot time and its ability to run heavy server workloads like Hyper-V, IIS, failover clustering, scale-out file server, and more. The Nano server can also run as isolated containers that borrow from Docker technology. Alongside Nano Server, Microsoft is strongly focusing on the IoT space, where Windows 10 is going to shine. Windows 10 for IoT (also known as Windows 10 for Makers) is a special edition of Windows that runs on headless devices ranging from Raspberry Pi to embedded sensors. In this talk we will introduce and demo Nano Server and Windows 10 for IoT and explain what are the requirements from software to run on these exciting new Windows editions.

    Level: 200
    Prerequisites: None

    Windows Game Development with MonoGame 14:40 - 15:30 Alex Golesh

    MonoGame is an open source implementation of the Microsoft XNA 4 Framework. The project goal is to allow XNA developers on Xbox 360, Windows & Windows Phone to port their games to iOS, Android, Mac OS X, Linux and Windows UWP. During this session we will cover the basics of MonoGame project and porting techniques of XNA games to the Windows UWP for use on PCs and tablets, with the goal of gaining familiarity with issues in porting games, including code sharing, multiple input forms, and different screen resolutions.

    Level: 200
    Prerequisites: Experience with XNA, Windows Phone, or Windows 8.x development

    The C++ and CLR Memory Models 15:40 - 16:30 Sasha Goldshtein

    The words "memory model" are known to induce fear, sleep, or even coma among the best of developers. Truly understanding the intricate relationship between the compiler, the processor, and the memory system is necessary if you plan to design low-level synchronization, write lock-free code, or even debug race conditions that are already present in your code. In this deep session we will climb down into the abyss of the CLR and C++ memory models, affectionately known as SC-DRF. We will talk about volatile and atomic variables, see multiple examples of compiler- and processor-induced reorderings, and see how a lot of code we assume to be correct in fact happens to be totally broken on non-Intel processors.

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

    Scaling Apps to a Billion Hits a Day 10:40 - 11:30 Chander Dhall

    In this session, hear about real-world consulting experiences in scaling web apps including insights and best practices. Learn how to architect and develop applications on the ASP.NET stack so that they are easy to scale. This presentation includes but is not limited to queuing systems, SQL Server, REST APIs, Microsoft Azure, polyglot persistence, TCP, HTTP, vertical and horizontal scaling, partitioning, NoSQL, etc.

    Level: 300
    Prerequisites: Web development experience

    Programming with Millions of Examples 11:40 - 12:30 Hila Peleg

    The vast amount of code available on the web is increasing on a daily basis. Open-source hosting sites such as GitHub contain billions of lines of code. Community question-answering sites provide millions of code snippets with corresponding text and metadata. Programmers use all of those, but very few at a time, at best. Fortunately, recent research leverages such "big code" to provide programmers with easier, better, more correct ways to learn by example. Allergen warning: may contain traces of automata, abstractions, tracelets, and other academic terms.

    Level: 200
    Prerequisites: None

    What's Next for ECMAScript? 13:30 - 14:30 Noam Kfir

    JavaScript is evolving faster than ever: ES6 is already out, ES7 is on the fast track and ES8 is set to follow short on its heels. In this talk, we'll take a quick look at some of the more useful improvements, such as arrow functions, template strings, modules and classes, Map, Set and other important new types, and show some of the tools that help us use them in today's projects. We're also going to examine the significant paradigm shift these changes represent. The "old" JavaScript has always been a smorgasbord of haphazard features from different types of languages -- object-oriented but prototypal, functional but mutative, interpreted but compiled -- whereas the new versions of the language standard have set out to normalize the language and prepare it for the scale, complexity and diversity of modern JavaScript apps. The changes are useful, but there are many and they come at a cost.

    Level: 200
    Prerequisites: JavaScript development experience

    Introduction to ReactJS 14:40 - 15:30 Sebastian Pederiva

    In 2013 Facebook released a front-end framework called React that they were using internally. React is known as the "V" of MVC. Its main function is to bind HTML elements to data and once this data changes, React takes care of updating the interface so that you don't have to bind this data manually. The interesting thing is that ReactJS brings a different approach than we see in other tools like AngularJs, EmberJs or ExtJs of which provide a full solution implementing the MVC pattern. React manages a "Virtual DOM" in order to improve performance. Because the virtual DOM is just data rather than rendered content, React is able to efficiently determine what pieces have changed. Once changes are made, the updated DOM can be re-rendered efficiently using features like requestAnimationFrame to ensure optimal performance. React is used today in huge applications like Facebook and Instragram, which was developed entirely using React.

    Level: 200
    Prerequisites: Web development experience with JavaScript

    Automatic Generation of Test Code 15:40 - 16:30 Natalia Meergus

    Model-Based Testing (MBT) is an advanced test approach using models for test design. There are existing tools that can automatically generate the test cases from the MBT model, saving a formidable amount of testing and development efforts.

    Level: 200
    Prerequisites: None

    The Microservices (R)evolution 10:40 - 11:30 Moshe Shemi

    Recently the micro-services architecture became very popular, especially in cloud-based applications. But what does it even mean to design software as micro-services, and how is it different from SOA, ESB, and other architectural approaches from the last few years? We will discuss the micro-services architecture, motivation, ideas, tools, and benefits. In addition we will also explore the disadvantages of micro-services.

    Level: 200
    Prerequisites: None

    REST and Web API Best Practices 11:40 - 12:30 Chander Dhall

    In this talk, Microsoft MVP, ASP.NET Insider and Web API advisor Chander Dhall, discusses what to do and what NOT to do when it comes to REST best practices. At the same time he also highlights the new features in Web API. The talk is a good mixture of code and concepts. You will not only learn the new features and best practices of REST and Web API but also some secret techniques not that widely used yet.

    Level: 200
    Prerequisites: None

    MVP Panel 13:30 - 14:30 Sasha Goldshtein

    Join present and former Microsoft MVPs Sasha Goldshtein, Ido Flatow, Alex Golesh, and Ido Katz for an open discussion on Microsoft and non-Microsoft technologies. Ask us anything and hear our thoughts and rants on the technology landscape and roadmap for 2016.

    Level: 200
    Prerequisites: None

    Agile as a Culture and Mindset 14:40 - 15:30 Dan Morgenstern

    Usually, when talking about Agile development we are referring to "Agile" as a process. In this session we will see why for a successful Agile implementation in your organization you should first and foremost treat it as a culture and a mindset -- only then and based on these comes the process. Unfortunately, the cultural aspect of Agile is usually neglected while companies tend to give their entire attention to the process and the tools. There is a good reason for this -- adopting a culture is the most difficult aspect when transitioning to Agile. Following this, we will see what are the cultural ideas which Agile promotes, what are the challenges and pitfalls when promoting such changes and what practices can be useful for overcoming these challenges. We'll use real-world examples coming from our experience and yours.

    Level: 200
    Prerequisites: None

    The Art of Decomposing Monoliths 15:40 - 16:30 Kfir Bloch

    Microservices are the new black. You've heard about them, you've read about them, you may have even implemented a few, but sooner or later you'll run into the age-old conundrum: How do I break my monolith apart? Where do I draw service boundaries? In this talk you will learn several widely-applicable strategies for decomposing your monolithic application, along with their respective risks and the appropriate mitigation strategies. These techniques are widely used at Wix, took us a long time to develop and have proven consistently effective; hopefully they will help you avoid the same battle scars.

    Level: 300
    Prerequisites: None

  • Tuesday, December 22: Breakout Sessions

    Developing Positive Thinking Patterns 09:30 - 10:20 Galit Dayan

    In this session we will discuss models that provide strategic and applicative tools for generating changes in the way people think and make decisions. We will learn to identify patterns that influence the day-to-day activities and understand the implications of positive and negative patterns. We will introduce an AI model for strategic leadership, which empowers positive thinking, as well as other models.

    Level: 100
    Prerequisites: None

    ASP.NET 5 and MVC 6 10:40 - 11:30 Amir Adler

    Since ASP.NET came out 15 years ago, many developers used it to write their web applications. 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 application. In this session you will see what is new in ASP.NET 5 and MVC 6.

    Level: 300
    Prerequisites: ASP.NET MVC development experience

    Web Application Vulnerabilities 11:40 - 12:30 Dovi Perla

    To secure web applications, you must adopt the mindset of the attacker. Attackers usually look for easy intrusion vectors in web applications, but if they decide to focus on your application, they will find esoteric issues as well. In this session we'll review common attacks on web applications: SQL injection, cross-site scripting (XSS), broken authentication, cross-site request forgery, information disclosure, and insecure password storage. Finally, we will see how to secure web applications against these attacks.

    Level: 300
    Prerequisites: None

    Entity Framework 7.0 13:30 - 14:30 Liron Ratzabi

    TBD

    Level: 300
    Prerequisites: None

    Introducing HTTP/2 14:40 - 15:30 Ido Flatow

    HTTP/2 is the future of the web, and promises to bring performance improvements, simplified markup, and lower resource utilization on the server. On top of that, browser support is already quite high and is growing rapidly. In this talk we'll go over the genesis of the protocol, how HTTP/2 works under the hood, and how you can already leverage it to speed up your site.

    Level: 200
    Prerequisites: None

    Bringing Together ElasticSearch and Hadoop 15:40 - 16:30 Aviv Berko

    ElasticSearch is a highly scalable open source search engine based on Lucene. It mostly used for searching, analyzing and virtualizing JSON documents stored in ElasticSearch. In the Big Data world our data in many cases needs to be processed before ready to load to a search engine. Apache Hadoop is the most popular Big Data platform for data processing. Therefore, it was inevitable to combine those two technologies with ES-Hadoop.

    Level: 300
    Prerequisites: None

    Building Big Data Solutions on Azure 09:30 - 10:20 Eyal Ben Ivri

    The world of big data is going forward. The requirements from data driven systems are more and more complex, while the amounts of data, its verity and velocity keeps rising. The process of building such a complex data system that needs to ingest data, process, analyze, and show the results can seem like a daunting task. The cloud, as it usually does, makes our job a lot easier. Whether you're just beginning to explore the cloud option, or already have a wide infrastructure laid out in Azure, it’s always a good idea to learn more about the solutions Azure offers today to help you make more out of your data. In this session we will talk about PaaS offerings like Event Hubs, Stream Analytics, Data Factory, DocumentDB and HDInsight that can save time and money, implementing your data driven system.

    Level: 300
    Prerequisites: None

    The Docker Revolution 10:40 - 11:30 Rotem Or

    TBD

    Level: 200
    Prerequisites: None

    How We Analyzed Thousands of Dumps in Minutes 11:40 - 12:30 Dina Goldshtein

    BrightSource's production environment is disconnected from the main network, and there's no easy way to perform remote debugging or get live monitoring data from the field. By configuring Windows to automatically generate crash dumps, the BrightSource operations team obtained hundreds of dump files from multiple servers while working on the latest release. There was no way they could analyze these dumps by hand, triage the bugs, and assign them to the relevant developers. That's when Dina discovered ClrMD – a Microsoft NuGet package that provides a dump debugging API. In this talk Dina will explain how we built a tool with ClrMD to automatically analyze dumps and obtain exception information, thread call stacks, and memory usage. Dina also integrated this tool with Redmine, a popular project and work item management tool, to file bugs automatically to the relevant developer based on the tool’s initial analysis.

    Level: 300
    Prerequisites: None

    Running Services at Scale with Azure Service Fabric "Micro Services" 13:30 - 14:30 Bnaya Eshet

    Use the upcoming Azure Service Fabric model for building better cloud application and services. The new model offers a more convenient and expressive architecture and dynamic high-density deployment with better responsiveness and higher utilization of the cloud's resources. This session is delivered jointly with Avi Avni, Senior Software Developer at SELA Group.

    Level: 300
    Prerequisites: None

    Azure Traffic Manager 14:40 - 15:30 Ido Katz

    The Microsoft Azure Traffic Manager provides global DNS load balancing methods of distributing internet traffic among two or more endpoints (for example: Virtual Machines or WebApps) on different cloud services that could be located on a different regions, all accessible with the same URL, in one or more Microsoft Azure datacenters around the world. In this session Ido will explain the different methods, show how to configure the Traffic Manager, and will present a little demo. At the end of this session you'll be able to provide better performance, redundancy and high availability to your services and applications by using the Microsoft Azure Traffic Manager.

    Level: 300
    Prerequisites: None

    Using Neo4j to Build OneDrop 15:40 - 16:30 Eyal Ben Ivri

    OneDrop, a file management system for enterprises on the cloud, was designed as a SaaS solution from the ground up. Trying to build a multi-tenant system, while dealing with complex entities and connections to offer highly customizable file permissions schemas can be very complex. To design such a system, required us to come up with a virtual file system, that needs to be fast, reliable and flexible. The database that helped us to come up with such a feature needed to be just that, Fast, Reliable and Flexible. Enter Neo4j, a leading Graph Database engine known for its expressiveness, while enabling to tap into the power of graphs, a multi-dimensional data structure, that can represent any data schema. In this talk we will walk through the requirements for such a system and design the DB structures needed using Neo4j and its innovative query language, Cypher.

    Level: 300
    Prerequisites: None

    Migrating to Angular 2.0 09:30 - 10:20 Ran Wahle

    Angular 2.0 is a complete rewrite, it embraces new standards, removes the old Angular 1.x dependency injection, scopes and more. Therefore, you might think that migrating your Angular 1.x application requires a complete rewrite. In this session we will go through what we can do to perform a migration easier than a complete rewrite and learn some new tools and tricks to do so.

    Level: 300
    Prerequisites: Angular development experience

    Working with Git 10:40 - 11:30 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. And yet, Git's robustness raises many questions. Is a distributed VCS really better? Should you use feature branches? What about pull requests? What’s the difference between merge and rebase? Isn't rewriting history a Bad Thing(TM)? This talk will re-introduce Git as a powerful tool for managing different workflows and try to answer these and other questions. You'll learn about these workflows, how to implement them and what to watch out for. Whether you're a lone wolf working on the next big thing as a side project, or a team member in a large enterprise working on complex projects with tens or hundreds of developers, Git gives you the solid foundation you need to work effectively, provided you use it correctly.

    Level: 300
    Prerequisites: Basic familiarity with Git commands

    The Frontend Developers' Toolkit 11:40 - 12:30 Nir Noy

    The last few years have seen the introduction of an entirely new generation of web applications, usually based on robust frameworks such as Angular, React and Backbone. To help deal with the increasingly complex front-ends and the rapid evolution of front-end technologies such as JavaScript, HTML and CSS, developers have created many useful tools designed to streamline the overall development process. Mature tooling is essential to the successful development of modern web apps, but choosing the right tools for the job is not an easy task. Package managers, bundlers, transpilers and preprocessors abound, each with its own goals, conventions and ecosystem. In this talk, we'll introduce and compare some of the most popular and recommended tools to help you decide which set of tools is best suited for your projects.

    Level: 300
    Prerequisites: None

    Integrating 250 Apps for 68 Million Users 13:30 - 14:30 Karen Cohen

    Service integration is a common problem for every business of sufficient size, regardless of industry. Whether you run a hotel chain, restaurant, or an airline, you always want to consume services (such as mass email, CRM, and campaign management) based on your specific business domain. Because Wix is a general-purpose web hosting platform, we host a very diverse set of businesses, and we partner with third-party providers to offer services that aren't part of our core platform. Over time, we’ve evolved a service integration model to tackle these requirements. Join me for a guided tour through the evolution of our architecture, from our initial ideas and goals, to our various design and technology challenges, which ultimately resulted in our inter-app communication API.

    Level: 200
    Prerequisites: None

    Building Cross-Platform Mobile Apps with Visual Studio 14:40 - 15:30 Liron Ratzabi

    TBD

    Level: 200
    Prerequisites: None

    Introduction to ATDD and SpecFlow 15:40 - 16:30 Arnon Axelrod

    ATDD, which stands for "Acceptance Test Driven Development" (also known as BDD -- "Behavior Driven Development" or SbE -- "Specification by Example"), is a pretty simple development methodology that utilizes automated acceptance tests for improving the collaboration between developers, testers and the domain experts. In addition to the immediate benefit of enhancing the customer satisfaction, it also ensures that the software is in delivery quality at any moment, provides an always-up-to-date product documentation (in the form of executable examples), and shortens the delivery cycle! In this talk Arnon will explain the basic concepts of this method and its benefits, and provide some general guidelines on how to start adopting it. In addition, Arnon will demonstrate how SpecFlow, which is a free, open-source, and the most popular tool for this purpose, can be used to facilitate the implementation of ATDD when working in .NET.

    Level: 200
    Prerequisites: None

  • Wednesday, December 23: Post-Conference Workshops

    Modern C++ 09:00 - 17:00 Ady Shimony

    This one-day workshop will bring you up to speed with modern C++ concepts: lambda functions, move semantics, type inference, and many others. C++ developers today can't ignore the reality of modern C++: it is prevalent on websites, software manuals, open-source libraries, books, articles, and probably your codebase as well. Understanding the fundamentals of modern C++ features and libraries is important for writing correct, maintainable, and highly-performant code.

    Level: 300
    Prerequisites: C++ development experience

    Windows 10 UWP (2/2) 09:00 - 17:00 Alex Golesh

    The Universal Windows Platform (UWP) is available across all Windows device families. From PCs to tablets, phones, and more, you can reach all these devices and look great on them all using one store and one codebase. In this two-days instructor-led workshop we will cover the prerequisites and basics of UWP development, common APIs, Extension SDKs and Adaptive Controls. We will cover techniques used for development targeting multiple device families device such as capabilities considerations, screens/resolutions, different input methods, etc.

    Level: 300
    Prerequisites: XAML and C# experience

    Angular Master Class (1/2) 09:00 - 17:00 Ran Wahle

    AngularJs has become a very popular framework for building single page applications and it has a large and growing developer community behind it. In this two-day course we will first introduce you to the framework, its building blocks and well known pitfalls you might encounter when building your own applications. Next, we will deep dive into best practices and performance issues involved in building large Angular applications. Finally, we will also discuss Angular 2.0, which is a major rewrite of the entire Angular framework, and highlight the key differences between Angular 2.0 and Angular 1.x, including migration best practices.

    Level: 200
    Prerequisites: JavaScript development experience; Angular experience not required

    Introduction to Puppet 09:00 - 17:00 Alon Becker

    Puppet is one of the leading tools in the devops ecosystem today and it helps automatically build the infrastructure that runs your applications. In the cloud and on-premises, in this workshop we will learn how to effectively build infrastructure with Puppet. Through a series of examples and exercises using Vagrant and Puppet we will explore Puppet's inner workings discussing Resource Types and Providers.

    Level: 200
    Prerequisites: None

    The Swift Programming Language 09:00 - 17:00 Liron Ratzabi

    No one expected that Apple would invent their own programming language, but in retrospect it probably should not be so surprising. At WWDC 2014, Apple unveiled Swift -- a modern, functional, generic, productive programming language suitable for building iOS and OS X apps in the 21st century. Swift has taken the world by storm, because it bears no resemblance to Objective-C: it is clean, modern, elegant, and concise. In this one-day workshop you will learn the fundamentals of the language and use them to build a simple iOS app. Prior experience with iOS development is not required, but you should bring your own Mac for the hands-on labs.

    Level: 300
    Prerequisites: None

    ASP.NET MVC 6 From The Ground Up 09:00 - 17:00 Amir Adler

    Are you a front-end web developer who wants to learn how to write server-side web applications? Are you a server-side web developer who wants to learn ASP.NET MVC? This one-day workshop is an introduction to ASP.NET MVC 6. It will show you how to start building web applications with ASP.NET MVC 6. You'll see how to work with controllers, models and views in ASP.NET MVC 6.

    Level: 300
    Prerequisites: HTML and C# development experience

  • Thursday, December 24: Post-Conference Workshops

    Building Reactive Websites with Meteor 09:00 - 17:00 Noam Kfir

    The Meteor framework is a rising star. Other frameworks focus on separation of concerns or data binding or look and feel, but only Meteor really puts all the pieces together. Meteor is a full-stack universal ("isomorphic") JavaScript framework for writing reactive web and mobile apps that share code with the server and the database. It supports live updates and hot deploys, optionally integrates with Cordova, AngularJS and other frameworks and tools, significantly simplifies most common workflow tasks and deployment, and has a unified package system for server and client packages. In this workshop, you will build a reactive universal JavaScript app from scratch. The workshop will introduce Meteor and MongoDB and cover latency compensation, reactive principles, working with data, Meteor’s modern yet simple UI framework Blaze, security and deployment. If time permits, we will also talk about testing, mobile, using TypeScript, integrating with AngularJS, and working with SQL databases.

    Level: 300
    Prerequisites: Experience with JavaScript, HTML, and CSS

    Angular Master Class (2/2) 09:00 - 17:00 Sebastian Pederiva

    AngularJs has become a very popular framework for building single page applications and it has a large and growing developer community behind it. In this two-day course we will first introduce you to the framework, its building blocks and well known pitfalls you might encounter when building your own applications. Next, we will deep dive into best practices and performance issues involved in building large Angular applications. Finally, we will also discuss Angular 2.0, which is a major rewrite of the entire Angular framework, and highlight the key differences between Angular 2.0 and Angular 1.x, including migration best practices.

    Level: 300
    Prerequisites: JavaScript development experience; Angular experience not required

    Building Hybrid Apps with Ionic 09:00 - 17:00 Dovi Perla

    Ionic is a framework and toolset for building mobile applications using Cordova (PhoneGap) and Angular. Integrated into Visual Studio 2015, Ionic uses Cordova to offer easy-to-use JavaScipt bindings for native iOS and Android frameworks, but is also extensible through plugins in case you need access to the underlying functionality. By using HTML, CSS, and JavaScript--the familiar web developers' toolbox--you can build stunning web applications without having to duplicate code or design assets across platforms. This workshop will introduce you to the fundamentals of Ionic through a series of demos and hands-on labs designed to get you up to speed with modern mobile app development in JavaScript.

    Level: 200
    Prerequisites: JavaScript development experience

    Xamarin Unleashed 09:00 - 17:00 Ofir Makmal

    Are you a C# developer? Do you need to develop an iOS, Android, Windows Phone app? You can write your app in C# and share up to 100% of the code using Xamarin's tools. In this full-day workshop we will develop a cross-platform C# app that uses Xamarin to run on iOS, Android, and Windows Phone. We will spend some time discussing the view layer on each platform - iOS storyboards and view controllers, Android views and activities, and Windows Phone controls and pages. We will look at Xamarin.Forms, which is Xamarin's attempt to create one UI layer to rule them all, with the power of XAML. We will explore the universal concepts as well as where the platforms differ and will require a set of carefully-crated abstractions. Then, we'll talk about sharing business logic and view models across the platforms using Portable Class Libraries. Finally, we will discuss native platform capabilities such as location and maps, accessing HTTP services, and working with a local SQL database, and how they can be hidden behind a layer of abstraction as well.

    Level: 300
    Prerequisites: None

    The Magic of C++ Template Metaprogramming 09:00 - 17:00 Sasha Goldshtein

    For many developers, C++ template metaprogramming is a dark art, a craft reserved for language lawyers, or something that only library authors should even understand. In this workshop, designed for experienced C++ developers, we will demonstrate many modern use-cases for template metaprogramming. It's true that TMP is often useful for dark corners of template libraries; but it can also be extremely useful for application developers. Among the topics, we will discuss policy-based design, template traits, decision-making at compile-time, and computation optimization with constexpr. The code we produce will include an optimized implementation of std::copy for trivially copyable classes, a simple serialization framework that recognizes and serializes containers at compile-time, a set of extensions for std::tuple that makes tuples stream-friendly, a compile-time-safe version of printf, and a bunch of other tools. We will use modern TMP tools, such as void_t, constexpr, and decltype -- instead of what you may have read about in C++ books from the previous millenium. The workshop includes detailed hands-on labs so you can practice the craft of modern template metaprogramming.

    Level: 400
    Prerequisites: Significant C++ development experience and thorough understanding of C++ templates