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.
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.
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.
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.
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.