diff --git a/Profile/REPORT.md b/Profile/REPORT.md index 12cbe427..9a094b04 100644 --- a/Profile/REPORT.md +++ b/Profile/REPORT.md @@ -1,13 +1,13 @@ ## Software engineering self assessment -[![Skills](https://img.shields.io/badge/Self_Assessment-313 / 624 / 731-009933?style=flat-square)](https://github.com/e-andrew/SelfAssessment/blob/main/Profile/REPORT.md) +[![Skills](https://img.shields.io/badge/Self_Assessment-607 / 715 / 731-009933?style=flat-square)](https://github.com/e-andrew/SelfAssessment/blob/main/Profile/REPORT.md) ``` -[![Skills](https://img.shields.io/badge/Self_Assessment-313 / 624 / 731-009933?style=flat-square)](https://github.com/e-andrew/SelfAssessment/blob/main/Profile/REPORT.md) +[![Skills](https://img.shields.io/badge/Self_Assessment-607 / 715 / 731-009933?style=flat-square)](https://github.com/e-andrew/SelfAssessment/blob/main/Profile/REPORT.md) ``` ``` -Skills +Skills ``` ## Assessment totals @@ -15,150 +15,96 @@ | Unit | Marked | Of | | ---- | ------ | -- | | [Programming](/Skills/Programming.md) | | | -|      Concepts | `5` | `30` | -|      Syntax and concepts | `25` | `33` | -|      Types | `2` | `14` | -|      Functions | `19` | `23` | -|      Data structures | `23` | `26` | -|      Networking | `0` | `9` | -|      Process and tools | `11` | `28` | -|      Antipatterns | `9` | `30` | -|      Runtimes and virtual machines | `0` | `5` | -|      Operating systems | `0` | `13` | -|      Standards | `0` | `15` | +|      Concepts | `29` | `30` | +|      Syntax and concepts | `33` | `33` | +|      Types | `10` | `14` | +|      Functions | `23` | `23` | +|      Data structures | `26` | `26` | +|      Networking | `9` | `9` | +|      Process and tools | `26` | `28` | +|      Antipatterns | `29` | `30` | +|      Runtimes and virtual machines | `3` | `5` | +|      Operating systems | `7` | `13` | +|      Standards | `10` | `15` | | [JavaScript](/Skills/JavaScript.md) | | | -|      Language | `28` | `57` | -|      Statements | `15` | `19` | +|      Language | `53` | `57` | +|      Statements | `18` | `19` | |      Functions | `10` | `10` | -|      Data structures | `3` | `8` | -|      Standard classes and namespaces | `3` | `14` | -|      Infrastructure | `2` | `6` | +|      Data structures | `6` | `8` | +|      Standard classes and namespaces | `9` | `14` | +|      Infrastructure | `5` | `6` | | [Async](/Skills/Async.md) | | | -|      Theory | `12` | `20` | -|      Async contracts | `9` | `18` | -|      Async adapters and utils | `4` | `5` | -|      Async abstractions interfaces | `7` | `11` | -|      JavaScript & Node.js specific | `5` | `17` | -|      Techniques | `4` | `10` | +|      Theory | `17` | `20` | +|      Async contracts | `17` | `18` | +|      Async adapters and utils | `5` | `5` | +|      Async abstractions interfaces | `8` | `11` | +|      JavaScript & Node.js specific | `12` | `17` | +|      Techniques | `6` | `10` | | [NodeJS](/Skills/NodeJS.md) | | | -|      Internals and concepts | `1` | `9` | -|      Modularity, layers and dependencies | `4` | `14` | -|      Environment | `2` | `6` | -|      Internal API | `5` | `26` | -|      Network | `18` | `28` | +|      Internals and concepts | `3` | `9` | +|      Modularity, layers and dependencies | `8` | `14` | +|      Environment | `4` | `6` | +|      Internal API | `8` | `26` | +|      Network | `19` | `28` | |      Technique and tools | `8` | `12` | -|      Data access | `4` | `7` | -|      Error handling and debugging | `7` | `14` | +|      Data access | `5` | `7` | +|      Error handling and debugging | `8` | `14` | |      Integrations and bindings | `0` | `16` | | [Paradigms](/Skills/Paradigms.md) | | | -|      Theory | `15` | `25` | -|      OOP basics | `18` | `21` | -|      GRASP | `0` | `8` | -|      SOLID | `0` | `5` | -|      Patterns | `22` | `25` | +|      Theory | `23` | `25` | +|      OOP basics | `21` | `21` | +|      GRASP | `8` | `8` | +|      SOLID | `5` | `5` | +|      Patterns | `25` | `25` | | [Architecture](/Skills/Architecture.md) | | | -|      Application structure | `5` | `22` | -|      Application architecture | `8` | `36` | -|      Solution architecture | `0` | `18` | -|      Enterprise architecture | `0` | `18` | +|      Application structure | `21` | `22` | +|      Application architecture | `34` | `36` | +|      Solution architecture | `18` | `18` | +|      Enterprise architecture | `18` | `18` | ## [JavaScript](/Skills/JavaScript.md) | To start asynchronous programming | actual | ⟢ | required | | --- | --- | --- | --- | -| `Function` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `Boolean` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `Number` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `Symbol` | πŸ‘‚ heard | ⟢ | πŸŽ“ known | | `...spread` | πŸŽ“ known | ⟢ | πŸ–οΈ used | | `...rest` | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Async generator | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Async iterator | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Optional chaining | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| IIFE | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Async IIFE | 🀷 unknown | ⟢ | πŸ‘‚ heard | | `global` | 🀷 unknown | ⟢ | πŸŽ“ known | | `globalThis` | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Strict mode | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `static` | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Private class fields | 🀷 unknown | ⟢ | πŸŽ“ known | -| Private class methods | 🀷 unknown | ⟢ | πŸŽ“ known | -| `for..of` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `for await` | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| `new` | πŸŽ“ known | ⟢ | πŸ–οΈ used | -| Mixins | 🀷 unknown | ⟢ | πŸŽ“ known | -| `Object.assign` | 🀷 unknown | ⟢ | πŸŽ“ known | -| `Proxy` | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| `Error` | 🀷 unknown | ⟢ | πŸ–οΈ used | +| Strict mode | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| Mixins | πŸ‘‚ heard | ⟢ | πŸŽ“ known | | `WeakRef` | 🀷 unknown | ⟢ | πŸ‘‚ heard | | `FinalizationRegistry` | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| `Promise` | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| `console` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Timers | 🀷 unknown | ⟢ | πŸ–οΈ used | -| V8 | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| prettier | 🀷 unknown | ⟢ | πŸŽ“ known | -Total: you have `41` of `72` skills, `31` to be upgraded, and `27` above needed +Total: you have `63` of `72` skills, `9` to be upgraded, and `39` above needed | To start Node.js | actual | ⟢ | required | | --- | --- | --- | --- | -| `Function` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `Boolean` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `Number` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `BigInt` | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| `String` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `Symbol` | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| `BigInt` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `Symbol` | πŸŽ“ known | ⟢ | πŸ–οΈ used | | `Infinity` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `NaN` | 🀷 unknown | ⟢ | πŸ–οΈ used | +| `NaN` | πŸŽ“ known | ⟢ | πŸ–οΈ used | | `...spread` | πŸŽ“ known | ⟢ | πŸ–οΈ used | | `...rest` | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Generators | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Async generator | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Async iterator | 🀷 unknown | ⟢ | πŸ–οΈ used | -| IIFE | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Async IIFE | 🀷 unknown | ⟢ | πŸ–οΈ used | +| Async iterator | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | | `global` | 🀷 unknown | ⟢ | πŸ–οΈ used | | `globalThis` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Strict mode | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `delete` | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| `eval` | 🀷 unknown | ⟢ | πŸŽ“ known | -| `static` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `Number.parseInt` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `Number.parseFloat` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Property descriptors | 🀷 unknown | ⟢ | πŸŽ“ known | -| Sealing properties | 🀷 unknown | ⟢ | πŸŽ“ known | -| Freezing properties | 🀷 unknown | ⟢ | πŸŽ“ known | -| Computed properties | 🀷 unknown | ⟢ | πŸŽ“ known | -| Instance class fields | 🀷 unknown | ⟢ | πŸŽ“ known | -| Static class fields | 🀷 unknown | ⟢ | πŸŽ“ known | -| Private class fields | 🀷 unknown | ⟢ | πŸŽ“ known | -| Private class methods | 🀷 unknown | ⟢ | πŸŽ“ known | -| `for..of` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `for await` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `new` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Strict mode | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| `eval` | πŸ‘‚ heard | ⟢ | πŸŽ“ known | +| `static` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `for await` | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | | `WeakMap` | 🀷 unknown | ⟢ | πŸŽ“ known | | `WeakSet` | 🀷 unknown | ⟢ | πŸŽ“ known | -| Typed arrays | 🀷 unknown | ⟢ | πŸŽ“ known | -| Mixins | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| `Object.assign` | 🀷 unknown | ⟢ | πŸŽ“ known | -| `Proxy` | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| `Date` | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| `Math` | 🀷 unknown | ⟢ | πŸŽ“ known | | `Reflect` | 🀷 unknown | ⟢ | πŸŽ“ known | -| `Error` | 🀷 unknown | ⟢ | πŸ–οΈ used | | `Atomics` | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| `JSON` | 🀷 unknown | ⟢ | πŸ–οΈ used | | `WeakRef` | 🀷 unknown | ⟢ | πŸ‘‚ heard | | `FinalizationRegistry` | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| `Promise` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `console` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Timers | 🀷 unknown | ⟢ | πŸ–οΈ used | -| V8 | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Node.js | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| prettier | 🀷 unknown | ⟢ | πŸŽ“ known | +| V8 | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -Total: you have `44` of `98` skills, `54` to be upgraded, and `19` above needed +Total: you have `76` of `98` skills, `22` to be upgraded, and `37` above needed ## [Async](/Skills/Async.md) @@ -166,156 +112,101 @@ Total: you have `44` of `98` skills, `54` to be upgraded, and `19` above needed | For Node.js applied programming | actual | ⟢ | required | | --- | --- | --- | --- | | `try..catch` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Race conditions | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Promise | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Async/await | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | | Sync generator | πŸ‘‚ heard | ⟢ | πŸŽ“ known | | Async Generator | 🀷 unknown | ⟢ | πŸŽ“ known | -| Async Iterator | 🀷 unknown | ⟢ | πŸŽ“ known | -| Signal | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Stream | πŸŽ“ known | ⟢ | πŸ–οΈ used | -| Locks | 🀷 unknown | ⟢ | πŸŽ“ known | -| callbackify | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| promisify | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| asyncify | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| EventEmitter | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Readable | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Writable | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| Async Iterator | πŸ‘‚ heard | ⟢ | πŸŽ“ known | +| Signal | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| Readable | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Writable | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Transform | 🀷 unknown | ⟢ | πŸ–οΈ used | | Async Pool | 🀷 unknown | ⟢ | πŸŽ“ known | -| Async Queue | 🀷 unknown | ⟢ | πŸŽ“ known | -| Async Collector | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Timers | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `setImmediate` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `nextTick` | 🀷 unknown | ⟢ | πŸ–οΈ used | +| `setImmediate` | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| `nextTick` | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | | AbortController | 🀷 unknown | ⟢ | πŸ–οΈ used | | AbortSignal | 🀷 unknown | ⟢ | πŸŽ“ known | -| Callback hell | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Promise hell | πŸ‘‚ heard | ⟢ | πŸŽ“ known | | ref() and unref() | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Error handling in async code | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Better stack traces with return await | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| JSON streaming serialization | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Promise.all | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| Error handling in async code | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Better stack traces with return await | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Promise.all | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Promise.allSettled | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Promise.race | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Promise.any | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| Promise.race | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Promise.any | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Web Locks API | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Revealing constructor | 🀷 unknown | ⟢ | πŸŽ“ known | +| Revealing constructor | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -Total: you have `13` of `50` skills, `37` to be upgraded, and `7` above needed +Total: you have `28` of `50` skills, `22` to be upgraded, and `15` above needed | To start Node.js | actual | ⟢ | required | | --- | --- | --- | --- | | `try..catch` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Promise | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Async/await | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Async Iterator | 🀷 unknown | ⟢ | πŸŽ“ known | -| Signal | 🀷 unknown | ⟢ | πŸŽ“ known | -| Middleware | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Locks | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| callbackify | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| promisify | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| asyncify | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| EventEmitter | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Readable | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Writable | πŸ‘‚ heard | ⟢ | πŸŽ“ known | +| Async Iterator | πŸ‘‚ heard | ⟢ | πŸŽ“ known | +| Signal | πŸ‘‚ heard | ⟢ | πŸŽ“ known | | Transform | 🀷 unknown | ⟢ | πŸŽ“ known | | Async Pool | 🀷 unknown | ⟢ | πŸŽ“ known | -| Async Queue | 🀷 unknown | ⟢ | πŸŽ“ known | -| Async Collector | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Timers | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `setImmediate` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `nextTick` | 🀷 unknown | ⟢ | πŸ‘‚ heard | +| `setImmediate` | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | | AbortController | 🀷 unknown | ⟢ | πŸ–οΈ used | | AbortSignal | 🀷 unknown | ⟢ | πŸŽ“ known | -| Callback hell | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Promise hell | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Error handling in async code | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Better stack traces with return await | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| JSON streaming serialization | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Promise.all | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| Error handling in async code | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Better stack traces with return await | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Promise.all | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Promise.allSettled | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Promise.race | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Promise.any | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Revealing constructor | 🀷 unknown | ⟢ | πŸ‘‚ heard | +| Promise.race | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Promise.any | πŸŽ“ known | ⟢ | πŸ–οΈ used | -Total: you have `5` of `37` skills, `32` to be upgraded, and `4` above needed +Total: you have `23` of `37` skills, `14` to be upgraded, and `10` above needed | For Node.js platform/system programming | actual | ⟢ | required | | --- | --- | --- | --- | -| Event loop | πŸ‘‚ heard | ⟢ | πŸŽ“ known | | `try..catch` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Non-blocking | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Async I/O | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Thread pool | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Pattern Reactor | 🀷 unknown | ⟢ | πŸŽ“ known | +| Pattern Reactor | πŸ‘‚ heard | ⟢ | πŸŽ“ known | | CAS operations | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| libuv | 🀷 unknown | ⟢ | πŸŽ“ known | -| Race conditions | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Dead locks | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Live locks | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Concurrent programming | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Parallel programming | πŸ‘‚ heard | ⟢ | πŸŽ“ known | -| Actor Model | πŸ‘‚ heard | ⟢ | πŸŽ“ known | +| libuv | πŸ‘‚ heard | ⟢ | πŸŽ“ known | +| Race conditions | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Dead locks | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Live locks | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Thread | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Process | πŸŽ“ known | ⟢ | πŸ–οΈ used | -| Thenable | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Promise | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Async/await | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Future | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Deferred | 🀷 unknown | ⟢ | πŸ‘‚ heard | | Sync generator | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | | Async Generator | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Async Iterator | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Coroutine | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Goroutine | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Signal | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Stream | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Async Iterator | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| Signal | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | | Chain of responsibility | πŸŽ“ known | ⟢ | πŸ–οΈ used | -| Middleware | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Locks | 🀷 unknown | ⟢ | πŸ–οΈ used | -| callbackify | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| promisify | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| asyncify | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| EventEmitter | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Observable/Observer | πŸŽ“ known | ⟢ | πŸ–οΈ used | -| Readable | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Writable | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| Locks | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| callbackify | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| promisify | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| asyncify | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Readable | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Writable | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Transform | 🀷 unknown | ⟢ | πŸ–οΈ used | | Async Pool | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Async Queue | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Async Collector | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Semaphore | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Async Collector | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Spin Lock | 🀷 unknown | ⟢ | πŸŽ“ known | -| Timers | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `setImmediate` | 🀷 unknown | ⟢ | πŸ–οΈ used | -| `nextTick` | 🀷 unknown | ⟢ | πŸ–οΈ used | +| `setImmediate` | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| `nextTick` | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | | AbortController | 🀷 unknown | ⟢ | πŸ–οΈ used | | AbortSignal | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Promise unhandled rejection | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Promise double resolve | 🀷 unknown | ⟢ | πŸ–οΈ used | +| Promise unhandled rejection | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Promise double resolve | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Atomics | 🀷 unknown | ⟢ | πŸŽ“ known | | High resolution clock | 🀷 unknown | ⟢ | πŸŽ“ known | -| Callback hell | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Promise hell | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| Callback hell | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Promise hell | πŸŽ“ known | ⟢ | πŸ–οΈ used | | ref() and unref() | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Error handling in async code | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Better stack traces with return await | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| JSON streaming serialization | 🀷 unknown | ⟢ | πŸ–οΈ used | -| AsyncLocalStorage | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| AsyncResource | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Async.js library | 🀷 unknown | ⟢ | πŸ‘‚ heard | -| Promise.all | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| Error handling in async code | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Better stack traces with return await | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| JSON streaming serialization | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| AsyncLocalStorage | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| AsyncResource | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Promise.all | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Promise.allSettled | 🀷 unknown | ⟢ | πŸ–οΈ used | -| Promise.race | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -| Promise.any | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| Promise.race | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Promise.any | πŸŽ“ known | ⟢ | πŸ–οΈ used | | Web Locks API | 🀷 unknown | ⟢ | πŸŽ“ known | | IPC | 🀷 unknown | ⟢ | πŸŽ“ known | | Channel API | 🀷 unknown | ⟢ | πŸŽ“ known | -| Revealing constructor | 🀷 unknown | ⟢ | πŸ–οΈ used | +| Revealing constructor | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | -Total: you have `5` of `75` skills, `70` to be upgraded, and `3` above needed +Total: you have `27` of `75` skills, `48` to be upgraded, and `11` above needed ## [NodeJS](/Skills/NodeJS.md) @@ -323,29 +214,29 @@ Total: you have `5` of `75` skills, `70` to be upgraded, and `3` above needed | API and domain logic developer | actual | ⟢ | required | | --- | --- | --- | --- | -Total: you have `0` of `0` skills, `0` to be upgraded, and `36` above needed +Total: you have `0` of `0` skills, `0` to be upgraded, and `39` above needed | Enterprise applications | actual | ⟢ | required | | --- | --- | --- | --- | -Total: you have `0` of `0` skills, `0` to be upgraded, and `41` above needed +Total: you have `0` of `0` skills, `0` to be upgraded, and `48` above needed | Real-Time, gamedev, messaging | actual | ⟢ | required | | --- | --- | --- | --- | -Total: you have `0` of `0` skills, `0` to be upgraded, and `35` above needed +Total: you have `0` of `0` skills, `0` to be upgraded, and `41` above needed | Web and Frontend | actual | ⟢ | required | | --- | --- | --- | --- | -Total: you have `0` of `0` skills, `0` to be upgraded, and `18` above needed +Total: you have `0` of `0` skills, `0` to be upgraded, and `20` above needed | Fullstack development | actual | ⟢ | required | | --- | --- | --- | --- | -Total: you have `0` of `0` skills, `0` to be upgraded, and `38` above needed +Total: you have `0` of `0` skills, `0` to be upgraded, and `41` above needed | Platform/system development | actual | ⟢ | required | | --- | --- | --- | --- | -Total: you have `0` of `0` skills, `0` to be upgraded, and `46` above needed +Total: you have `0` of `0` skills, `0` to be upgraded, and `55` above needed diff --git a/Skills/Architecture.md b/Skills/Architecture.md index 5e63d88b..428fd6f1 100644 --- a/Skills/Architecture.md +++ b/Skills/Architecture.md @@ -1,100 +1,100 @@ ## Architecture - Application structure - - Modularity - - Components - - Directories + - Modularity: πŸ™‹ explained + - Components: πŸ–οΈ used + - Directories: πŸ™‹ explained - GRASP: πŸ“’ talked - SOLID: πŸ“’ talked - - GoF patterns: πŸ‘‚ heard + - GoF patterns: πŸ™‹ explained - CQS: πŸ™‹ explained - - Leaking abstractions: πŸ‘‚ heard - - Multiparadigm code - - Contract programming - - Platform-agnostic - - Transport-agnostic - - Framework-agnostic - - Code coverage - - Cohesion - - Coupling + - Leaking abstractions: πŸŽ“ known + - Multiparadigm code: πŸ™‹ explained + - Contract programming: πŸŽ“ known + - Platform-agnostic: πŸ–οΈ used + - Transport-agnostic: πŸŽ“ known + - Framework-agnostic: πŸŽ“ known + - Code coverage: πŸŽ“ known + - Cohesion: πŸ™‹ explained + - Coupling: πŸ™‹ explained - Cyclomatic complexity - - Reliability - - Quality - - Availability - - Flexibility - - Law of Demeter (LoD) + - Reliability: πŸŽ“ known + - Quality: πŸŽ“ known + - Availability: πŸŽ“ known + - Flexibility: πŸŽ“ known + - Law of Demeter (LoD): πŸ™‹ explained - Application architecture - - Isolation between layer - - Domain-specific language (DSL) - - System vs applied code - - Multilayer approach: πŸ‘‚ heard - - Hexagonal architecture - - Separation of concerns (SoC): πŸ‘‚ heard - - Metaprogramming - - Inversion of control (IoC): πŸ‘‚ heard - - Dependency injection (DI): πŸ‘‚ heard - - Clean architecture - - Domain-driven design (DDD): πŸ‘‚ heard - - Pub/sub - - Message brocker + - Isolation between layer: πŸŽ“ known + - Domain-specific language (DSL): πŸŽ“ known + - System vs applied code: πŸ™‹ explained + - Multilayer approach: πŸ–οΈ used + - Hexagonal architecture: πŸ‘‚ heard + - Separation of concerns (SoC): πŸ™‹ explained + - Metaprogramming: πŸ‘‚ heard + - Inversion of control (IoC): πŸŽ“ known + - Dependency injection (DI): πŸŽ“ known + - Clean architecture: πŸŽ“ known + - Domain-driven design (DDD): πŸŽ“ known + - Pub/sub: πŸ–οΈ used + - Message brocker: πŸ–οΈ used - Agent - - Service locator - - Message Queue (MQ): πŸ–οΈ used - - CQRS + - Service locator: πŸ‘‚ heard + - Message Queue (MQ): πŸ™‹ explained + - CQRS: πŸ‘‚ heard - Event sourcing - - E-R data modeling - - Entity-relationship diagram - - IDEF1X - - UML - - Work breakdown structure - - Budget estimation - - Distributed systems: πŸ‘‚ heard - - High-intensive computing + - E-R data modeling: πŸ–οΈ used + - Entity-relationship diagram: πŸ–οΈ used + - IDEF1X: πŸ‘‚ heard + - UML: πŸ–οΈ used + - Work breakdown structure: πŸŽ“ known + - Budget estimation: πŸŽ“ known + - Distributed systems: πŸŽ“ known + - High-intensive computing: πŸŽ“ known - Load balancing: πŸ‘‚ heard - - Gateways - - On-premises - - IaaS - - PaaS - - SaaS - - FaaS clouds - - Serverless - - Vendor lock-in - - Bus factor + - Gateways: πŸŽ“ known + - On-premises: πŸŽ“ known + - IaaS: πŸŽ“ known + - PaaS: πŸŽ“ known + - SaaS: πŸŽ“ known + - FaaS clouds: πŸ‘‚ heard + - Serverless: πŸŽ“ known + - Vendor lock-in: πŸŽ“ known + - Bus factor: πŸŽ“ known - Solution architecture - - A software requirements specification (SRS) - - Solution visions - - Solution capabilities - - System design - - Process modelling - - Data modelling - - Solution components - - Risk assessment - - Non Functional Requirements (NFR) - - Clouds - - BPMN - - Low-code - - No-code - - Metric - - Metric abuse - - ACID - - CAP theorem - - Single source of truth (SSOT) + - A software requirements specification (SRS): πŸ–οΈ used + - Solution visions: πŸŽ“ known + - Solution capabilities: πŸ‘‚ heard + - System design: πŸŽ“ known + - Process modelling: πŸ–οΈ used + - Data modelling: πŸ–οΈ used + - Solution components: πŸ–οΈ used + - Risk assessment: πŸ–οΈ used + - Non Functional Requirements (NFR): πŸŽ“ known + - Clouds: πŸŽ“ known + - BPMN: πŸ‘‚ heard + - Low-code: πŸŽ“ known + - No-code: πŸŽ“ known + - Metric: πŸŽ“ known + - Metric abuse: πŸ‘‚ heard + - ACID: πŸ™‹ explained + - CAP theorem: πŸ™‹ explained + - Single source of truth (SSOT): πŸ™‹ explained - Enterprise architecture - - Understanding business needs - - Enterprise strategy - - Integration with subsystems - - Enterprise vision - - Enterprise capabilities - - Project scope - - Enterprise service bus - - Service-oriented architecture - - Microservices - - Process choreography - - Service orchestration - - Data warehouse - - Business Intelligence - - OLAP - - OLTP - - Conways Law - - Quality assurance - - Engineering Hygiene + - Understanding business needs: πŸ™‹ explained + - Enterprise strategy: πŸŽ“ known + - Integration with subsystems: πŸŽ“ known + - Enterprise vision: πŸŽ“ known + - Enterprise capabilities: πŸŽ“ known + - Project scope: πŸŽ“ known + - Enterprise service bus: πŸŽ“ known + - Service-oriented architecture: πŸŽ“ known + - Microservices: πŸŽ“ known + - Process choreography: πŸŽ“ known + - Service orchestration: πŸ‘‚ heard + - Data warehouse: πŸ‘‚ heard + - Business Intelligence: πŸ‘‚ heard + - OLAP: πŸ‘‚ heard + - OLTP: πŸ‘‚ heard + - Conways Law: πŸ™‹ explained + - Quality assurance: πŸŽ“ known + - Engineering Hygiene: πŸŽ“ known diff --git a/Skills/Async.md b/Skills/Async.md index 953ee515..9bd087a0 100644 --- a/Skills/Async.md +++ b/Skills/Async.md @@ -1,89 +1,89 @@ ## Asynchronous programming - Theory - - Event loop: πŸ‘‚ heard - - `try..catch ` - - Non-blocking: πŸ‘‚ heard - - Async I/O: πŸ‘‚ heard - - Thread pool: πŸ‘‚ heard - - Pattern Reactor + - Event loop: πŸŽ“ known + - `try..catch `: πŸ™‹ explained + - Non-blocking: πŸ™‹ explained + - Async I/O: πŸ™‹ explained + - Thread pool: πŸŽ“ known + - Pattern Reactor: πŸ‘‚ heard - CAS operations - - epoll - - kqueue + - epoll: πŸ‘‚ heard + - kqueue: πŸ‘‚ heard - Completion ports - Event ports - - libuv - - Race conditions: πŸ‘‚ heard - - Dead locks: πŸ‘‚ heard - - Live locks: πŸ‘‚ heard - - Concurrent programming: πŸ‘‚ heard - - Parallel programming: πŸ‘‚ heard - - Actor Model: πŸ‘‚ heard + - libuv: πŸ‘‚ heard + - Race conditions: πŸŽ“ known + - Dead locks: πŸŽ“ known + - Live locks: πŸŽ“ known + - Concurrent programming: πŸ™‹ explained + - Parallel programming: πŸ™‹ explained + - Actor Model: πŸŽ“ known - Thread: πŸŽ“ known - Process: πŸŽ“ known - Async contracts - Callbacks: πŸ™‹ explained - Callback-last-error-first: πŸ™‹ explained - - Thenable: πŸ‘‚ heard - - Promise: πŸ‘‚ heard - - Async/await: πŸ‘‚ heard - - Future - - Deferred + - Thenable: πŸ™‹ explained + - Promise: πŸ™‹ explained + - Async/await: πŸ™‹ explained + - Future: πŸ‘‚ heard + - Deferred: πŸ‘‚ heard - Sync generator: πŸ‘‚ heard - Async Generator - - Async Iterator + - Async Iterator: πŸ‘‚ heard - Event: πŸ™‹ explained - - Coroutine - - Goroutine - - Signal - - Stream: πŸŽ“ known + - Coroutine: πŸ‘‚ heard + - Goroutine: πŸ‘‚ heard + - Signal: πŸ‘‚ heard + - Stream: πŸ–οΈ used - Chain of responsibility: πŸŽ“ known - - Middleware - - Locks + - Middleware: πŸ–οΈ used + - Locks: πŸŽ“ known - Async adapters and utils - - callbackify: πŸ‘‚ heard - - promisify: πŸ‘‚ heard - - asyncify: πŸ‘‚ heard - - Callbacks compose - - Async compose: πŸ‘‚ heard + - callbackify: πŸŽ“ known + - promisify: πŸŽ“ known + - asyncify: πŸŽ“ known + - Callbacks compose: πŸ‘‚ heard + - Async compose: πŸŽ“ known - Async abstractions interfaces - - EventEmitter: πŸ‘‚ heard - - Observable/Observer: πŸŽ“ known - - Readable: πŸ‘‚ heard - - Writable: πŸ‘‚ heard + - EventEmitter: πŸ–οΈ used + - Observable/Observer: πŸ–οΈ used + - Readable: πŸŽ“ known + - Writable: πŸŽ“ known - Transform - Async Pool - - Async Queue - - Async Collector: πŸ‘‚ heard - - Semaphore: πŸŽ“ known - - Mutex: πŸŽ“ known + - Async Queue: πŸ–οΈ used + - Async Collector: πŸŽ“ known + - Semaphore: πŸ–οΈ used + - Mutex: πŸ–οΈ used - Spin Lock - JavaScript & Node.js specific - - Timers - - `setImmediate` - - `nextTick` + - Timers: πŸ–οΈ used + - `setImmediate`: πŸ‘‚ heard + - `nextTick`: πŸ‘‚ heard - AbortController - AbortSignal - - Promise unhandled rejection - - Promise double resolve + - Promise unhandled rejection: πŸŽ“ known + - Promise double resolve: πŸŽ“ known - Atomics - High resolution clock - - Callback hell: πŸ‘‚ heard - - Promise hell: πŸ‘‚ heard + - Callback hell: πŸŽ“ known + - Promise hell: πŸŽ“ known - ref() and unref() - - Error handling in async code - - Better stack traces with return await: πŸ‘‚ heard - - JSON streaming serialization - - AsyncLocalStorage: πŸ‘‚ heard - - AsyncResource: πŸ‘‚ heard + - Error handling in async code: πŸŽ“ known + - Better stack traces with return await: πŸŽ“ known + - JSON streaming serialization: πŸ‘‚ heard + - AsyncLocalStorage: πŸŽ“ known + - AsyncResource: πŸŽ“ known - Techniques - - Async.js library + - Async.js library: πŸ‘‚ heard - RxJS library: πŸ‘‚ heard - - Promise.all: πŸ‘‚ heard + - Promise.all: πŸŽ“ known - Promise.allSettled - - Promise.race: πŸ‘‚ heard - - Promise.any: πŸ‘‚ heard + - Promise.race: πŸŽ“ known + - Promise.any: πŸŽ“ known - Web Locks API - IPC - Channel API - - Revealing constructor + - Revealing constructor: πŸ‘‚ heard diff --git a/Skills/Databases.md b/Skills/Databases.md index c499feb1..c2079a4a 100644 --- a/Skills/Databases.md +++ b/Skills/Databases.md @@ -1,94 +1,94 @@ ## Databases - Theory and concepts - - Data types - - Performance tuning - - Migrations - - Schema versioning - - Backup and recovery - - Database scalability - - Relational databases - - Key-value store - - Tuple store - - Graph databases - - Object databases - - Column databases + - Data types: πŸ™‹ explained + - Performance tuning: πŸ‘‚ heard + - Migrations: πŸŽ“ known + - Schema versioning: πŸ‘‚ heard + - Backup and recovery: πŸ–οΈ used + - Database scalability: πŸ‘‚ heard + - Relational databases: πŸ™‹ explained + - Key-value store: πŸ™‹ explained + - Tuple store: πŸŽ“ known + - Graph databases: πŸ‘‚ heard + - Object databases: πŸ–οΈ used + - Column databases: πŸŽ“ known - Navigational databases - - Hierarchical databases - - In-memory databases + - Hierarchical databases: πŸ‘‚ heard + - In-memory databases: πŸŽ“ known - Inverted index - - Data control language (DCL) - - Data definition language (DDL) - - Data manipulation language (DML) - - Data query language (DQL) + - Data control language (DCL): πŸ™‹ explained + - Data definition language (DDL): πŸ™‹ explained + - Data manipulation language (DML): πŸ™‹ explained + - Data query language (DQL): πŸ™‹ explained - Relational - - Entity-Relationship Diagram - - Normal forms - - Indexing - - Primary keys - - Foreign keys - - Transactions - - Views - - Subqueries - - Stored procedures - - SQL functions + - Entity-Relationship Diagram: πŸ™‹ explained + - Normal forms: πŸŽ“ known + - Indexing: πŸŽ“ known + - Primary keys: πŸ™‹ explained + - Foreign keys: πŸ™‹ explained + - Transactions: πŸ™‹ explained + - Views: πŸ‘‚ heard + - Subqueries: πŸ–οΈ used + - Stored procedures: πŸŽ“ known + - SQL functions: πŸŽ“ known - Materialized views - - Replications + - Replications: πŸŽ“ known - Virtualization - SQL - - `SELECT` - - `INSERT` - - `UPDATE` - - `DELETE` - - `LIMIT` - - `OFFSET` - - `ORDER BY` - - `GROUP BY` + - `SELECT`: πŸ™‹ explained + - `INSERT`: πŸ™‹ explained + - `UPDATE`: πŸ™‹ explained + - `DELETE`: πŸ™‹ explained + - `LIMIT`: πŸ™‹ explained + - `OFFSET`: πŸ™‹ explained + - `ORDER BY`: πŸ™‹ explained + - `GROUP BY`: πŸ™‹ explained - `HAVING` - - `EXISTS` - - `JOIN` - - `INNER JOIN` - - `LEFT JOIN` - - `RIGHT JOIN` - - `UNION` - - `DISTINCT` - - `WHERE` - - `LIKE` - - `IN` - - `BETWEEN` - - `CREATE TABLE` - - `ALTER TABLE` - - `DROP TABLE` - - `PRIMARY KEY` - - `FOREIGN KEY` + - `EXISTS`: πŸ™‹ explained + - `JOIN`: πŸ™‹ explained + - `INNER JOIN`: πŸ™‹ explained + - `LEFT JOIN`: πŸ™‹ explained + - `RIGHT JOIN`: πŸ™‹ explained + - `UNION`: πŸ™‹ explained + - `DISTINCT`: πŸ‘‚ heard + - `WHERE`: πŸ™‹ explained + - `LIKE`: πŸ™‹ explained + - `IN`: πŸ™‹ explained + - `BETWEEN`: πŸ™‹ explained + - `CREATE TABLE`: πŸ™‹ explained + - `ALTER TABLE`: πŸ™‹ explained + - `DROP TABLE`: πŸ™‹ explained + - `PRIMARY KEY`: πŸ™‹ explained + - `FOREIGN KEY`: πŸ™‹ explained - `CHECK` - `DEFAULT` - - `INDEX` - - `UNIQUE` - - `GRANT` - - `REVOKE` - - `DENY` - - `EXPLAIN` + - `INDEX`: πŸ‘‚ heard + - `UNIQUE`: πŸ™‹ explained + - `GRANT`: πŸŽ“ known + - `REVOKE`: πŸŽ“ known + - `DENY`: πŸŽ“ known + - `EXPLAIN`: πŸ‘‚ heard - Engines - - PostgreSQL - - Oracle - - MySQL - - MariaDB - - MS SQL Server - - Redis - - Rabbit - - MongoDB + - PostgreSQL: πŸ–οΈ used + - Oracle: πŸ–οΈ used + - MySQL: πŸ–οΈ used + - MariaDB: πŸ‘‚ heard + - MS SQL Server: πŸ–οΈ used + - Redis: πŸ–οΈ used + - Rabbit: πŸŽ“ known + - MongoDB: πŸ–οΈ used - Memcached - Riak - DB2 - - SQLite + - SQLite: πŸ–οΈ used - DynamoDB - Firebase - Data engineering - Data warehousing - - Business intelligence + - Business intelligence: πŸ‘‚ heard - Big data - Data analysis - AI tools - - Cloud databases + - Cloud databases: πŸŽ“ known - Data Visualization diff --git a/Skills/DotNET.md b/Skills/DotNET.md index cc2b08e2..5a15a75d 100644 --- a/Skills/DotNET.md +++ b/Skills/DotNET.md @@ -1,89 +1,89 @@ ## .NET - Core Concepts and Internals - - Strengths and weaknesses of .NET - - Stateful and stateless services - - Asynchronous and synchronous programming - - Task-based asynchronous pattern + - Strengths and weaknesses of .NET: πŸŽ“ known + - Stateful and stateless services: πŸŽ“ known + - Asynchronous and synchronous programming: πŸ™‹ explained + - Task-based asynchronous pattern: πŸ–οΈ used - Garbage collection in .NET - - .NET runtime versions and support - - I/O-bound, CPU-bound tasks + - .NET runtime versions and support: πŸ–οΈ used + - I/O-bound, CPU-bound tasks: πŸ™‹ explained - Real-time applications with SignalR - Modularity and Dependencies - - .NET assemblies - - NuGet package management - - Dependency management in .NET - - Dependency Injection in .NET - - Inversion of Control (IoC) + - .NET assemblies: πŸŽ“ known + - NuGet package management: πŸ–οΈ used + - Dependency management in .NET: πŸ‘‚ heard + - Dependency Injection in .NET: πŸ‘‚ heard + - Inversion of Control (IoC): πŸŽ“ known - IoC containers in .NET - - Middleware and pipeline configuration - - Modular applications + - Middleware and pipeline configuration: πŸŽ“ known + - Modular applications: πŸŽ“ known - Environment and Tools - - Command line interface (CLI) tools - - .NET CLI - - Windows Services and Linux Daemons + - Command line interface (CLI) tools: πŸ–οΈ used + - .NET CLI: πŸ–οΈ used + - Windows Services and Linux Daemons: πŸŽ“ known - Hosting and Deployment models - IIS and Kestrel web server - - Environment variables and configuration - - File system I/O operations + - Environment variables and configuration: πŸ™‹ explained + - File system I/O operations: πŸ™‹ explained - Multithreading with Task Parallel Library (TPL) - Performance monitoring and diagnostics - APIs and Framework Features - - LINQ + - LINQ: πŸ–οΈ used - SignalR for real-time web functionality - - High-performance RPC with `gRPC` + - High-performance RPC with `gRPC`: πŸ–οΈ used - Security features (authentication, authorization) - - Cryptography and secure data handling + - Cryptography and secure data handling: πŸ‘‚ heard - Memory and resource management - Globalization and localization - Network and Protocols - - HTTP/HTTPS support - - WebSockets for real-time communication - - TCP/UDP networking - - SSL/TLS for secure connections - - Efficient network communication with `gRPC` - - HTTP/2 and HTTP/3 support + - HTTP/HTTPS support: πŸ–οΈ used + - WebSockets for real-time communication: πŸŽ“ known + - TCP/UDP networking: πŸ™‹ explained + - SSL/TLS for secure connections: πŸŽ“ known + - Efficient network communication with `gRPC`: πŸ–οΈ used + - HTTP/2 and HTTP/3 support: πŸ‘‚ heard - Network security (DDoS, XSS, CSRF prevention) - - Serialization and deserialization (JSON, XML) + - Serialization and deserialization (JSON, XML): πŸ–οΈ used - Testing and Debugging - Unit testing with frameworks like xUnit, NUnit - Integration testing - - Logging and tracing + - Logging and tracing: πŸ–οΈ used - Application monitoring and telemetry - - Debugging tools and strategies + - Debugging tools and strategies: πŸ–οΈ used - Performance profiling and analysis - Data Access and ORM - - Entity Framework Core + - Entity Framework Core: πŸ–οΈ used - Dapper - - ADO.NET for database access - - Data modeling and migration - - Repository and Unit of Work patterns - - CRUD operations + - ADO.NET for database access: πŸ‘‚ heard + - Data modeling and migration: πŸŽ“ known + - Repository and Unit of Work patterns: πŸŽ“ known + - CRUD operations: πŸ–οΈ used - Error Handling and Debugging - - Exception handling in .NET - - Custom error classes - - Debugging and diagnostic tools + - Exception handling in .NET: πŸ–οΈ used + - Custom error classes: πŸ–οΈ used + - Debugging and diagnostic tools: πŸ–οΈ used - Profiling and performance analysis - Memory leak detection - Integration and Extensibility - - Interoperability with native libraries - - P/Invoke for calling `C/C++` libraries - - COM interop - - .NET for `WebAssembly` + - Interoperability with native libraries: πŸŽ“ known + - P/Invoke for calling `C/C++` libraries: πŸ–οΈ used + - COM interop: πŸŽ“ known + - .NET for `WebAssembly`: πŸ‘‚ heard - Custom middleware development - Cloud and Microservices - Integration with cloud platforms (Azure, AWS) - Microservices architecture - - Containerization with Docker - - Kubernetes for orchestration - - Serverless computing + - Containerization with Docker: πŸŽ“ known + - Kubernetes for orchestration: πŸŽ“ known + - Serverless computing: πŸ‘‚ heard - C# Development - - C# syntax and language fundamentals - - Advanced C# features (LINQ, async/await, delegates, events) - - Reflection and dynamic programming - - Data types and collections - - Generics and extension methods - - Attributes and annotations + - C# syntax and language fundamentals: πŸ™‹ explained + - Advanced C# features (LINQ, async/await, delegates, events): πŸ™‹ explained + - Reflection and dynamic programming: πŸŽ“ known + - Data types and collections: πŸ™‹ explained + - Generics and extension methods: πŸ–οΈ used + - Attributes and annotations: πŸ–οΈ used - Interoperability with other .NET languages - `F#` Development - `F#` syntax and language fundamentals @@ -117,12 +117,12 @@ - Migration of legacy `C++` code to .NET - Enhancing existing .NET applications with `C++/CLI` - Mobile development - - .NET MAUI / Xamarin + - .NET MAUI / Xamarin: πŸ‘‚ heard - Interoperability between managed code and iOS/Android API - Game development - - Unity + - Unity: πŸ–οΈ used - Web development - - ASP.NET Core + - ASP.NET Core: πŸ–οΈ used - Blazor - Razor Syntax - - RESTful API development + - RESTful API development: πŸ‘‚ heard diff --git a/Skills/JavaScript.md b/Skills/JavaScript.md index 041af7a4..3436fda4 100644 --- a/Skills/JavaScript.md +++ b/Skills/JavaScript.md @@ -2,16 +2,16 @@ - Language - `Object`: πŸ–οΈ used - - `Function` - - `Boolean` - - `Number` - - `BigInt`: πŸ‘‚ heard - - `String` - - `Symbol`: πŸ‘‚ heard + - `Function`: πŸ™‹ explained + - `Boolean`: πŸ™‹ explained + - `Number`: πŸ™‹ explained + - `BigInt`: πŸŽ“ known + - `String`: πŸ™‹ explained + - `Symbol`: πŸŽ“ known - `Infinity` - - `NaN` - - `undefined`: πŸ–οΈ used - - `null`: πŸ–οΈ used + - `NaN`: πŸŽ“ known + - `undefined`: πŸ™‹ explained + - `null`: πŸ™‹ explained - `this`: πŸ–οΈ used - `instanceof`: πŸ–οΈ used - `...spread`: πŸŽ“ known @@ -21,73 +21,73 @@ - Generators: πŸŽ“ known - Iterators: πŸ™‹ explained - Async generator - - Async iterator + - Async iterator: πŸ‘‚ heard - Chaining: πŸ–οΈ used - - Optional chaining - - IIFE - - Async IIFE + - Optional chaining: πŸ‘‚ heard + - IIFE: πŸ–οΈ used + - Async IIFE: πŸ–οΈ used - `global` - `globalThis` - - `window` + - `window`: πŸ–οΈ used - Getters and setters: πŸ–οΈ used - `__proto__`: πŸŽ“ known - `prototype`: πŸŽ“ known - Equality operators: πŸ™‹ explained - Logical operators: πŸ™‹ explained - - Logical Assignment + - Logical Assignment: πŸ–οΈ used - Bitwise operators: πŸ™‹ explained - Ternary operator: πŸ™‹ explained - `void`: πŸ–οΈ used - `yield`: πŸ–οΈ used - `await`: πŸ–οΈ used - Template literal: πŸ™‹ explained - - Strict mode - - Hoisting - - `delete`: πŸ‘‚ heard + - Strict mode: πŸ‘‚ heard + - Hoisting: πŸ‘‚ heard + - `delete`: πŸ–οΈ used - `in`: πŸ–οΈ used - `super`: πŸ–οΈ used - - `eval` - - `static` - - `Number.parseInt` - - `Number.parseFloat` - - Property descriptors - - Sealing properties - - Freezing properties - - Computed properties - - Instance class fields - - Static class fields - - Private class fields - - Private class methods + - `eval`: πŸ‘‚ heard + - `static`: πŸŽ“ known + - `Number.parseInt`: πŸ–οΈ used + - `Number.parseFloat`: πŸ–οΈ used + - Property descriptors: πŸŽ“ known + - Sealing properties: πŸŽ“ known + - Freezing properties: πŸŽ“ known + - Computed properties: πŸŽ“ known + - Instance class fields: πŸŽ“ known + - Static class fields: πŸŽ“ known + - Private class fields: πŸŽ“ known + - Private class methods: πŸŽ“ known - Statements - `if`: πŸ™‹ explained - `while`: πŸ™‹ explained - `do..while`: πŸ™‹ explained - `for`: πŸ™‹ explained - - `for..in`: πŸ™‹ explained - - `for..of` - - `for await` + - `for..in`: πŸ–οΈ used + - `for..of`: πŸ–οΈ used + - `for await`: πŸ‘‚ heard - `throw`: πŸ™‹ explained - `break`: πŸ™‹ explained - `continue`: πŸ™‹ explained - - `import`: πŸ–οΈ used - - `export`: πŸ–οΈ used - - `label` - - `try..catch`: πŸ–οΈ used - - `switch`: πŸ–οΈ used - - `class`: πŸ–οΈ used - - `extends`: πŸ–οΈ used + - `import`: πŸ™‹ explained + - `export`: πŸ™‹ explained + - `label`: πŸ‘‚ heard + - `try..catch`: πŸ™‹ explained + - `switch`: πŸ™‹ explained + - `class`: πŸ™‹ explained + - `extends`: πŸ™‹ explained - `with` - - `new`: πŸŽ“ known + - `new`: πŸ–οΈ used - Functions - - Arrow function: πŸ–οΈ used - - Async function: πŸ–οΈ used + - Arrow function: πŸ™‹ explained + - Async function: πŸ™‹ explained - Function declaration: πŸ™‹ explained - Function expression: πŸ™‹ explained - Default parameters: πŸ™‹ explained - Functional object: πŸ™‹ explained - - `Function.prototype.call`: πŸ‘‚ heard - - `Function.prototype.bind`: πŸ‘‚ heard - - `Function.prototype.apply`: πŸ‘‚ heard + - `Function.prototype.call`: πŸŽ“ known + - `Function.prototype.bind`: πŸ–οΈ used + - `Function.prototype.apply`: πŸŽ“ known - `return`: πŸ™‹ explained - Data structures - `Array`: πŸ–οΈ used @@ -95,28 +95,28 @@ - `Set`: πŸ–οΈ used - `WeakMap` - `WeakSet` - - Typed arrays - - Mixins - - `Object.assign` + - Typed arrays: πŸŽ“ known + - Mixins: πŸ‘‚ heard + - `Object.assign`: πŸŽ“ known - Standard classes and namespaces - - `Proxy`: πŸ‘‚ heard - - `RegExp`: πŸŽ“ known - - `Date`: πŸ‘‚ heard - - `Math` + - `Proxy`: πŸŽ“ known + - `RegExp`: πŸ–οΈ used + - `Date`: πŸ–οΈ used + - `Math`: πŸ™‹ explained - `Reflect` - - `Error` + - `Error`: πŸ–οΈ used - `Atomics` - - `JSON` + - `JSON`: πŸ–οΈ used - `WeakRef` - `FinalizationRegistry` - `Intl` - - `Promise` - - `console` - - Timers + - `Promise`: πŸ–οΈ used + - `console`: πŸ–οΈ used + - Timers: πŸ–οΈ used - Infrastructure - - V8 - - Node.js - - npm: πŸŽ“ known - - prettier - - MDN: πŸŽ“ known + - V8: πŸ‘‚ heard + - Node.js: πŸ–οΈ used + - npm: πŸ–οΈ used + - prettier: πŸŽ“ known + - MDN: πŸ–οΈ used - TC39 diff --git a/Skills/NodeJS.md b/Skills/NodeJS.md index b2b2d25f..8beb0967 100644 --- a/Skills/NodeJS.md +++ b/Skills/NodeJS.md @@ -3,57 +3,57 @@ - Internals and concepts - Strong and weak sides of node.js - Stateful and stateless servers - - Nonblocking I/O and blocking code - - Event loop phases + - Nonblocking I/O and blocking code: πŸ‘‚ heard + - Event loop phases: πŸ‘‚ heard - Event loop microtasks and macrotasks - Garbage collection - Node.js LTS schedule - - I/O-bound, CPU-bound, memory-bound tasks: πŸ‘‚ heard + - I/O-bound, CPU-bound, memory-bound tasks: πŸŽ“ known - Interactive applications (close to real-time) - Modularity, layers and dependencies - CommonJS modules - - ECMAScript modules - - Module `node:module` + - ECMAScript modules: πŸ‘‚ heard + - Module `node:module`: πŸ‘‚ heard - Caching in CJS and ESM - Modules as singletons - Contexts and scripts module `node:vm` - - Dependencies: `npm`, `node_modules` - - Files `package.json`, `package-lock.json` + - Dependencies: `npm`, `node_modules`: πŸ–οΈ used + - Files `package.json`, `package-lock.json`: πŸ–οΈ used - Module-based permissions model - - Isolation with modularity: πŸ‘‚ heard - - Dependency injection: πŸ‘‚ heard + - Isolation with modularity: πŸŽ“ known + - Dependency injection: πŸŽ“ known - DI containers - Coupling and cohesion: πŸ™‹ explained - - Framework agnostic approach: πŸ‘‚ heard + - Framework agnostic approach: πŸŽ“ known - Environment - - Command line arguments - - Node.js CLI + - Command line arguments: πŸ‘‚ heard + - Node.js CLI: πŸ–οΈ used - Process-based permissions - - Graceful shutdown: πŸ‘‚ heard + - Graceful shutdown: πŸŽ“ known - Clustering - Watch filesystem changes with --watch: πŸ‘‚ heard - Internal API - - Streams API: πŸ‘‚ heard + - Streams API: πŸŽ“ known - Web Streams API - Crypto API - Password hashing with crypto.scrypt - Web Crypto API - - File system API (sync and async): πŸ‘‚ heard - - Copy folder recursively + - File system API (sync and async): πŸ–οΈ used + - Copy folder recursively: πŸ‘‚ heard - Worker threads: πŸ‘‚ heard - Performance hooks - Native fetch and nodejs/undici - async_hooks - - AsyncLocalStorage: πŸ‘‚ heard - - AsyncResource: πŸ‘‚ heard + - AsyncLocalStorage: πŸŽ“ known + - AsyncResource: πŸŽ“ known - Deprecated domain API - Node.js single executable - SharedArrayBuffer - Module `node:worker_threads` - - Module `node:child_process` + - Module `node:child_process`: πŸ‘‚ heard - MessageChannel, MessagePort - BroadcastChannel - - Generating crypto random UUID + - Generating crypto random UUID: πŸ‘‚ heard - Module `node:url` vs `new URL` - Module `node:assert` - Internationalization @@ -63,28 +63,28 @@ - Endpoint throttling - ALPN - SNI callback - - SSL certificates: πŸ‘‚ heard - - Protocol agnostic approach: πŸ‘‚ heard - - Fetch API: πŸ–οΈ used + - SSL certificates: πŸŽ“ known + - Protocol agnostic approach: πŸŽ“ known + - Fetch API: πŸ™‹ explained - IncomingMessage - - HTTP(S): πŸŽ“ known + - HTTP(S): πŸ–οΈ used - TCP/SSL: πŸŽ“ known - UDP: πŸŽ“ known - TLS: πŸŽ“ known - - Websocket: πŸ‘‚ heard + - Websocket: πŸ™‹ explained - SSE - HTTP/3 (QUIC) - - Long polling - - REST: πŸ‘‚ heard + - Long polling: πŸ‘‚ heard + - REST: πŸŽ“ known - RPC: πŸŽ“ known - - Routing: πŸ‘‚ heard + - Routing: πŸ–οΈ used - DoS: πŸ‘‚ heard - DDoS: πŸ‘‚ heard - XSS: πŸ‘‚ heard - Path traversal: πŸ‘‚ heard - CSRF - DNS: πŸŽ“ known - - SQL injection: πŸ‘‚ heard + - SQL injection: πŸŽ“ known - noDelay - keep-alive: πŸ‘‚ heard - IP sticky sessions @@ -93,10 +93,10 @@ - Logging: πŸ‘‚ heard - Application configuring: πŸ‘‚ heard - Testing: πŸ‘‚ heard - - CI/CD + - CI/CD: πŸ‘‚ heard - Readable: πŸ‘‚ heard - Writable: πŸ‘‚ heard - - Transform: πŸ‘‚ heard + - Transform - Back pressure: πŸ‘‚ heard - Buffer - Console: πŸ‘‚ heard @@ -107,11 +107,11 @@ - Active record - Query builder: πŸ‘‚ heard - Object-Relational Mapping: πŸŽ“ known - - CRUD + - CRUD: πŸŽ“ known - DTO - Error handling and debugging - - `Error`: πŸŽ“ known - - `error.cause` + - `Error`: πŸ–οΈ used + - `error.cause`: πŸŽ“ known - `error.code` - `error.message`: πŸŽ“ known - `error.stack`: πŸŽ“ known diff --git a/Skills/Paradigms.md b/Skills/Paradigms.md index 1e1503c9..6dbc3031 100644 --- a/Skills/Paradigms.md +++ b/Skills/Paradigms.md @@ -4,27 +4,27 @@ - Procedural programming: πŸ™‹ explained - Imperative programming: πŸ™‹ explained - Structured programming: πŸ™‹ explained - - Non-structured programming + - Non-structured programming: πŸ™‹ explained - Functional programming: πŸ™‹ explained - - Prototype-based programming: πŸŽ“ known + - Prototype-based programming: πŸ™‹ explained - Object-oriented programming: πŸ™‹ explained - Object-based programming: πŸŽ“ known - Generic programming: πŸ–οΈ used - Concurrent computing: πŸŽ“ known - Asynchronous programming: πŸ–οΈ used - - Parallel programming: πŸ–οΈ used + - Parallel programming: πŸ™‹ explained - Reactive programming: πŸ™‹ explained - Functional-reactive (FRP) - - Automata-based programming - - Domain-specific languages: πŸ‘‚ heard - - Multi-paradigm programming: πŸ‘‚ heard - - Metaprogramming - - Actor model: πŸ‘‚ heard - - Lambda calculus - - Black box - - Information hiding - - Aspect-oriented programming - - Anemic domain model + - Automata-based programming: πŸŽ“ known + - Domain-specific languages: πŸŽ“ known + - Multi-paradigm programming: πŸŽ“ known + - Metaprogramming: πŸŽ“ known + - Actor model: πŸŽ“ known + - Lambda calculus: πŸ‘‚ heard + - Black box: πŸŽ“ known + - Information hiding: πŸ™‹ explained + - Aspect-oriented programming: πŸŽ“ known + - Anemic domain model: πŸ‘‚ heard - Class composition - OOP basics - Constructor: πŸ™‹ explained @@ -42,27 +42,27 @@ - Abstract class: πŸ™‹ explained - Interface: πŸ™‹ explained - Encapsulation: πŸ™‹ explained - - Hidden class - - Object form + - Hidden class: πŸŽ“ known + - Object form: πŸ–οΈ used - Instance: πŸ™‹ explained - Introspection: πŸŽ“ known - Reflection: πŸŽ“ known - - The diamond problem + - The diamond problem: πŸŽ“ known - GRASP - - Information expert - - Creator - - Controller - - Indirection - - Low coupling - - High cohesion - - Protected variations - - Pure fabrication + - Information expert: πŸŽ“ known + - Creator: πŸ™‹ explained + - Controller: πŸ™‹ explained + - Indirection: πŸ™‹ explained + - Low coupling: πŸ™‹ explained + - High cohesion: πŸ™‹ explained + - Protected variations: πŸ™‹ explained + - Pure fabrication: πŸ™‹ explained - SOLID - - Single-responsibility principle (SRP) - - Open–closed principle (OCP) - - Liskov substitution principle (LSP) - - Interface segregation principle (ISP) - - Dependency inversion principle (DIP) + - Single-responsibility principle (SRP): πŸ™‹ explained + - Open–closed principle (OCP): πŸ™‹ explained + - Liskov substitution principle (LSP): πŸ™‹ explained + - Interface segregation principle (ISP): πŸ™‹ explained + - Dependency inversion principle (DIP): πŸ™‹ explained - Patterns - Singleton: πŸ™‹ explained - Factory Method: πŸ™‹ explained @@ -76,16 +76,16 @@ - Command: πŸ™‹ explained - Iterator: πŸ™‹ explained - State: πŸ™‹ explained - - Bridge: πŸ‘‚ heard + - Bridge: πŸŽ“ known - Builder: πŸ™‹ explained - Prototype: πŸŽ“ known - Composite: πŸ™‹ explained - Decorator: πŸŽ“ known - - Flyweight: πŸ‘‚ heard + - Flyweight: πŸŽ“ known - Mediator: πŸŽ“ known - - Memento: πŸŽ“ known + - Memento: πŸ–οΈ used - Template Method: πŸ™‹ explained - Visitor: πŸ™‹ explained - - Reactor - - Active object - - Delegation + - Reactor: πŸ‘‚ heard + - Active object: πŸ‘‚ heard + - Delegation: πŸ‘‚ heard diff --git a/Skills/Programming.md b/Skills/Programming.md index 3e355070..36d31a88 100644 --- a/Skills/Programming.md +++ b/Skills/Programming.md @@ -1,36 +1,36 @@ ## Programming fundamental concepts - Concepts - - Model - - Modeling - - Subject domain - - Algorithm: πŸŽ“ known - - Syntax - - Semantics - - Abstraction - - Paradigm: πŸŽ“ known - - Programm - - Programming paradigm - - Programming language + - Model: πŸ™‹ explained + - Modeling: πŸ™‹ explained + - Subject domain: πŸŽ“ known + - Algorithm: πŸ™‹ explained + - Syntax: πŸ™‹ explained + - Semantics: πŸ™‹ explained + - Abstraction: πŸ™‹ explained + - Paradigm: πŸ™‹ explained + - Programm: πŸ™‹ explained + - Programming paradigm: πŸ™‹ explained + - Programming language: πŸ™‹ explained - Contract: πŸ™‹ explained - Module: πŸŽ“ known - - Library - - Package + - Library: πŸŽ“ known + - Package: πŸŽ“ known - Component - - Framework - - Platform - - Source code - - Object code - - Machine code - - Microcode - - Software engineering + - Framework: πŸ™‹ explained + - Platform: πŸ™‹ explained + - Source code: πŸ™‹ explained + - Object code: πŸ™‹ explained + - Machine code: πŸ™‹ explained + - Microcode: πŸŽ“ known + - Software engineering: πŸ™‹ explained - Decomposition: πŸ™‹ explained - - Control flow - - Data flow - - Code reuse - - Defensive programming - - Don't repeat yourself (DRY) - - KISS principle + - Control flow: πŸ™‹ explained + - Data flow: πŸ™‹ explained + - Code reuse: πŸ™‹ explained + - Defensive programming: πŸ™‹ explained + - Don't repeat yourself (DRY): πŸ™‹ explained + - KISS principle: πŸ™‹ explained - Syntax and concepts - Value: πŸ™‹ explained - Identifier: πŸ™‹ explained @@ -55,55 +55,55 @@ - Assignment: πŸ™‹ explained - Regular expression: πŸ™‹ explained - Interface: πŸ™‹ explained - - Namespaces + - Namespaces: πŸ‘‚ heard - Call stack: πŸŽ“ known - - Naming conventions - - Coding conventions - - Camel case - - Snake case - - Kebab case - - Trailing commas - - Return early: πŸŽ“ known - - Fail-fast + - Naming conventions: πŸ™‹ explained + - Coding conventions: πŸ™‹ explained + - Camel case: πŸ™‹ explained + - Snake case: πŸ™‹ explained + - Kebab case: πŸ™‹ explained + - Trailing commas: πŸ™‹ explained + - Return early: πŸ™‹ explained + - Fail-fast: πŸ™‹ explained - Types - Primitive types: πŸ™‹ explained - Reference types: πŸ™‹ explained - - Type systems - - Strong typing - - Weak typing - - Duck typing - - Static typing - - Dynamic typing + - Type systems: πŸŽ“ known + - Strong typing: πŸŽ“ known + - Weak typing: πŸŽ“ known + - Duck typing: πŸŽ“ known + - Static typing: πŸ™‹ explained + - Dynamic typing: πŸ™‹ explained - Nominal typing - Structural typing - Explicit typing - Type inference - - Covariance - - Contravariance + - Covariance: πŸŽ“ known + - Contravariance: πŸŽ“ known - Functions - Signature: πŸ™‹ explained - Argument: πŸ™‹ explained - Parameter: πŸ™‹ explained - Pure function: πŸŽ“ known - - Lambda expression + - Lambda expression: πŸ–οΈ used - Side effects: πŸ™‹ explained - - Closure: πŸŽ“ known - - Partial application: πŸ‘‚ heard - - Currying: πŸŽ“ known - - Higher order: πŸŽ“ known + - Closure: πŸ–οΈ used + - Partial application: πŸ–οΈ used + - Currying: πŸ™‹ explained + - Higher order: πŸ™‹ explained - Recursion: πŸ–οΈ used - - Tail call optimisation - - Callback: πŸŽ“ known - - Listener: πŸŽ“ known - - Composition: πŸ‘‚ heard + - Tail call optimisation: πŸŽ“ known + - Callback: πŸ™‹ explained + - Listener: πŸ–οΈ used + - Composition: πŸ–οΈ used - Pipe: πŸ‘‚ heard - - Memoize: πŸ‘‚ heard - - Wrapper - - Functor: πŸ‘‚ heard + - Memoize: πŸŽ“ known + - Wrapper: πŸ‘‚ heard + - Functor: πŸŽ“ known - Monad: πŸ™‹ explained - Monoid: πŸ™‹ explained - Generator: πŸŽ“ known - - Coroutine + - Coroutine: πŸ‘‚ heard - Data structures - Array: πŸ™‹ explained - Structure: πŸ–οΈ used @@ -111,129 +111,129 @@ - Enum: πŸ–οΈ used - Instance: πŸ–οΈ used - Object: πŸ–οΈ used - - Collection: πŸ–οΈ used + - Collection: πŸ™‹ explained - Set: πŸ–οΈ used - Hash table: πŸ–οΈ used - - Linked list: πŸ–οΈ used - - Doubly list: πŸ–οΈ used - - Unrolled list: πŸ‘‚ heard - - Circular list: πŸ‘‚ heard - - Queue: πŸ–οΈ used - - Stack: πŸ–οΈ used - - Deque: πŸ‘‚ heard - - Tree: πŸ–οΈ used - - Graph: πŸ–οΈ used - - Iterator: πŸ–οΈ used - - Mutable state: πŸ–οΈ used - - Immutable state: πŸ–οΈ used - - Serialization: πŸ–οΈ used - - String parsing: πŸ–οΈ used - - JSON - - JSON5 - - YAML + - Linked list: πŸ™‹ explained + - Doubly list: πŸ™‹ explained + - Unrolled list: πŸŽ“ known + - Circular list: πŸŽ“ known + - Queue: πŸ™‹ explained + - Stack: πŸ™‹ explained + - Deque: πŸŽ“ known + - Tree: πŸ™‹ explained + - Graph: πŸ™‹ explained + - Iterator: πŸ™‹ explained + - Mutable state: πŸ™‹ explained + - Immutable state: πŸ™‹ explained + - Serialization: πŸ™‹ explained + - String parsing: πŸ™‹ explained + - JSON: πŸ™‹ explained + - JSON5: πŸ‘‚ heard + - YAML: πŸŽ“ known - Networking - - DNS - - CDN - - CORS - - IPv4 - - IPv6 - - NAT - - URL - - URN - - URI + - DNS: πŸŽ“ known + - CDN: πŸ‘‚ heard + - CORS: πŸ‘‚ heard + - IPv4: πŸ™‹ explained + - IPv6: πŸ™‹ explained + - NAT: πŸ‘‚ heard + - URL: πŸ–οΈ used + - URN: πŸŽ“ known + - URI: πŸŽ“ known - Process and tools - Compiler: πŸ™‹ explained - - Just-in-time compilation - - Ahead-of-time compilation + - Just-in-time compilation: πŸŽ“ known + - Ahead-of-time compilation: πŸŽ“ known - Transpiler: πŸ‘‚ heard - Linter: πŸ‘‚ heard - Polyfill - - Interpreter - - Linker - - Dynamic linking - - Static linking - - Runtime - - Virtual machine - - Register-based VM - - Stack-based VM - - Containerization + - Interpreter: πŸŽ“ known + - Linker: πŸŽ“ known + - Dynamic linking: πŸ‘‚ heard + - Static linking: πŸ‘‚ heard + - Runtime: πŸŽ“ known + - Virtual machine: πŸ–οΈ used + - Register-based VM: πŸ‘‚ heard + - Stack-based VM: πŸ‘‚ heard + - Containerization: πŸ–οΈ used - Debugger: πŸ–οΈ used - - Tracing + - Tracing: πŸ–οΈ used - Garbage collection: πŸ–οΈ used - - Refactoring: πŸŽ“ known - - Code review: πŸŽ“ known - - Exception: πŸŽ“ known + - Refactoring: πŸ–οΈ used + - Code review: πŸ–οΈ used + - Exception: πŸ–οΈ used - Unittesting: πŸŽ“ known - - git: πŸŽ“ known - - Github: πŸŽ“ known - - Docker - - Kubernetes - - GCC + - git: πŸ–οΈ used + - Github: πŸ–οΈ used + - Docker: πŸ–οΈ used + - Kubernetes: πŸŽ“ known + - GCC: πŸŽ“ known - LLVM - Antipatterns - Magic numbers: πŸ™‹ explained - Hard code: πŸ™‹ explained - - Soft code - - Cryptic code - - Improbability factor - - Accidental complexity: πŸŽ“ known - - Action at a distance + - Soft code: πŸ™‹ explained + - Cryptic code: πŸ™‹ explained + - Improbability factor: πŸ™‹ explained + - Accidental complexity: πŸ™‹ explained + - Action at a distance: πŸ™‹ explained - Spaghetti: πŸ™‹ explained - - Silver bullet: πŸŽ“ known - - Not invented here: πŸŽ“ known - - Dead code: πŸŽ“ known - - Unreachable code: πŸŽ“ known - - Duplicate code: πŸŽ“ known - - Premature optimization - - Micro-optimization - - Nested loops - - Long method/function/procedure - - Long inheritance - - Large class/file - - Too many parameters - - Pass-through parameters + - Silver bullet: πŸ™‹ explained + - Not invented here: πŸ™‹ explained + - Dead code: πŸ™‹ explained + - Unreachable code: πŸ™‹ explained + - Duplicate code: πŸ™‹ explained + - Premature optimization: πŸ™‹ explained + - Micro-optimization: πŸ™‹ explained + - Nested loops: πŸ™‹ explained + - Long method/function/procedure: πŸ™‹ explained + - Long inheritance: πŸ™‹ explained + - Large class/file: πŸ™‹ explained + - Too many parameters: πŸ™‹ explained + - Pass-through parameters: πŸ™‹ explained - Accumulate and fire - - Use switch/case - - Temporary field - - Handle object as instances and hashes at the same time - - Use fields instead of arguments - - Data clump - - Feature envy - - Monkey patch - - Yo-yo problem + - Use switch/case: πŸ™‹ explained + - Temporary field: πŸ™‹ explained + - Handle object as instances and hashes at the same time: πŸŽ“ known + - Use fields instead of arguments: πŸ™‹ explained + - Data clump: πŸ™‹ explained + - Feature envy: πŸ™‹ explained + - Monkey patch: πŸŽ“ known + - Yo-yo problem: πŸŽ“ known - Runtimes and virtual machines - - Bytecode - - V8 + - Bytecode: πŸŽ“ known + - V8: πŸ‘‚ heard - VJM - - CLR + - CLR: πŸ‘‚ heard - Mono - Operating systems - - Interrupts - - Drivers - - Kernel + - Interrupts: πŸŽ“ known + - Drivers: πŸŽ“ known + - Kernel: πŸŽ“ known - Ring - - Virtual memory - - File system - - Linux + - Virtual memory: πŸŽ“ known + - File system: πŸ–οΈ used + - Linux: πŸ–οΈ used - Unix - BSD - MacOS - - Windows + - Windows: πŸ–οΈ used - Real-time OS - Embedded OS - Standards - - ASCII - - Escape sequence - - RFC - - IETF + - ASCII: πŸ™‹ explained + - Escape sequence: πŸ–οΈ used + - RFC: πŸ™‹ explained + - IETF: πŸ‘‚ heard - IANA - - IEEE - - Base64 - - ECMA + - IEEE: πŸ‘‚ heard + - Base64: πŸ‘‚ heard + - ECMA: πŸ‘‚ heard - ICANN - ISO - - MIME + - MIME: πŸ‘‚ heard - OWASP - - UTF-8 - - W3C + - UTF-8: πŸ‘‚ heard + - W3C: πŸ‘‚ heard - ODMG