All Projects → brminnick → csharp-workshop

brminnick / csharp-workshop

Licence: MIT license
NDC London 2019, Workshop: Become a better C# programmer: more Value, more Expressions, no Waiting

Programming Languages

C#
18002 projects
HTML
75241 projects

Projects that are alternatives of or similar to csharp-workshop

redis-key-dashboard
This tool allows you to do a small analysis of the amount of keys and memory you use in Redis. It allows you to see overlooked keys and notice overuse.
Stars: ✭ 42 (+100%)
Mutual labels:  memory, memory-management
Memreduct
Lightweight real-time memory management application to monitor and clean system memory on your computer.
Stars: ✭ 1,101 (+5142.86%)
Mutual labels:  memory, memory-management
rs-process-memory
A rust library that allows you to read/write into the memory of other processes
Stars: ✭ 63 (+200%)
Mutual labels:  memory, memory-management
o1heap
Constant-complexity deterministic memory allocator (heap) for hard real-time high-integrity embedded systems
Stars: ✭ 119 (+466.67%)
Mutual labels:  memory, memory-management
ObviousAwait
🧵 Expressive aliases to ConfigureAwait(true) and ConfigureAwait(false)
Stars: ✭ 55 (+161.9%)
Mutual labels:  task, await
gctoolkit
Tool for parsing GC logs
Stars: ✭ 1,127 (+5266.67%)
Mutual labels:  memory, memory-management
Taskbuilder.fs
F# computation expression builder for System.Threading.Tasks
Stars: ✭ 217 (+933.33%)
Mutual labels:  task, await
total
Ruby Gem to get total memory size in the system
Stars: ✭ 15 (-28.57%)
Mutual labels:  memory, memory-management
ProtoPromise
Robust and efficient library for management of asynchronous operations in C#/.Net.
Stars: ✭ 20 (-4.76%)
Mutual labels:  task, await
best-queue
Queue in runtime based promise
Stars: ✭ 26 (+23.81%)
Mutual labels:  task, await
Mesh
A memory allocator that automatically reduces the memory footprint of C/C++ applications.
Stars: ✭ 1,243 (+5819.05%)
Mutual labels:  memory, memory-management
Swimmer
🏊 Swimmer - An async task pooling and throttling utility for JS
Stars: ✭ 94 (+347.62%)
Mutual labels:  task, await
Asyncawaitbestpractices
Extensions for System.Threading.Tasks.Task and System.Threading.Tasks.ValueTask
Stars: ✭ 693 (+3200%)
Mutual labels:  task, await
Asyncex
A helper library for async/await.
Stars: ✭ 2,794 (+13204.76%)
Mutual labels:  task, await
Dramatiq
A fast and reliable background task processing library for Python 3.
Stars: ✭ 2,844 (+13442.86%)
Mutual labels:  task
cactusref
🌵 Cycle-Aware Reference Counting in Rust
Stars: ✭ 129 (+514.29%)
Mutual labels:  memory-management
Javascript Total
Сборник практических вопросов, задач разного уровня сложности, сниппетов (утилит), паттерны проектирования, а также полезные ссылки по JavaScript
Stars: ✭ 214 (+919.05%)
Mutual labels:  task
Opensa
资产管理、资产采集、灰度发布、反向代理、批量任务、任务编排、计划任务、日志审计、权限管理、角色管理、部门管理、运维自动化
Stars: ✭ 220 (+947.62%)
Mutual labels:  task
react-native-dnd-board
A drag and drop Kanban board for React Native.
Stars: ✭ 41 (+95.24%)
Mutual labels:  task
composer
API-first task runner with three methods: task, run and watch.
Stars: ✭ 35 (+66.67%)
Mutual labels:  task

C# Workshop

NDC London 2019

Hosted by Bill Wagner

Become a better C# programmer: more Value, more Expressions, no Waiting

Over the past few releases, C# has added features that greatly improve productivity.

In this workshop, you’ll learn scenarios where these new features make you more productive, and improve the clarity of your code. You’ll get a guided tour through the async and await wilderness. You'll start with basic uses where async and await work like magic. From there, you'll learn common practices and how async tasks compose. You'll dive into enough of the implementation details to understand how to apply async practices. After working through these different practices, you'll emerge from the wilderness understanding how to write clear, correct and safe async code. From there, you'll work through everyday scenarios where modern C# frees itself from the shackles of history. You'll see new ways to work with text, new expressions for control flow, and new ways to bend the type system to your will. You’ll learn:

  • Getting started with the basics of async and await
  • Distinguish asynchronous programming and parallel programming
  • Compose asynchronous method calls throughout your code
  • Understand the pitfalls of async void
  • Designing async APIs
  • Advanced async and Task based programming
  • How string interpolation makes formatting strings much easier and clearer.
  • How to create compound assignments and comparisons using Tuples and Deconstruction
  • How to simplify iterators and async error handling using local functions
  • How to simplify error reporting using throw expressions in expression bodied members.
  • Write more performant code using value types safe pass-by-reference
  • How to use Pattern Matching to create algorithms that extend existing types

Computer Setup:

Attendees will need to bring a laptop with one of the following setups:

  • Windows: Laptop running Visual Studio 2017, or Visual Studio Code
  • Mac: Laptop running Visual Studio Code
  • Linux: Laptop running Visual Studio Code

Recommendations for Exercises

  1. We're here to learn, not to win arguments. Some exercises will spark debate. Listen and learn. what answer your group finds is much less important than why you chose that answer. A related point is that you will learn from other groups' opinions, and teach by explaining your group's opinions.
  2. Every person should be heard.
  3. Change roles often in pair programming exercises.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].