├── CONTRIBUTION.md
├── EDUCATION.md
├── EXPERIENCE.md
├── LICENSE
├── PROJECTS.md
├── RATES.md
├── README.md
├── SKILLS.md
└── TALKS.md
/CONTRIBUTION.md:
--------------------------------------------------------------------------------
1 | # List of open-source contribution
2 |
--------------------------------------------------------------------------------
/EDUCATION.md:
--------------------------------------------------------------------------------
1 | # Education
2 |
3 | - Kiev Polytechnic Institute
4 | - Metarhia free educational program
5 |
--------------------------------------------------------------------------------
/EXPERIENCE.md:
--------------------------------------------------------------------------------
1 | # Experience
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 HowProgrammingWorks
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/PROJECTS.md:
--------------------------------------------------------------------------------
1 | # List of projects
2 |
--------------------------------------------------------------------------------
/RATES.md:
--------------------------------------------------------------------------------
1 | # Rates
2 |
3 | - Development
4 | - Consulting
5 | - Code review
6 | - Talks
7 | - Educational programs
8 | - etc.
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 🎓 Student: KPI / IM-11
2 | ⚪ Community: Metarhia
3 | 👷 Speciality: Software engineer / Backend
4 | 💡 [Skills](SKILLS.md)
5 | 🧻 [Projects](PROJECTS.md)
6 | 📢 [Public talks: 0](TALKS.md)
7 | 👀 [Open-source contribution](CONTRIBUTION.md)
8 | 🧑💻 Languages: JavaScript, C++
9 | 📦 Tech stack: node.js
10 | 🪙 [Rates](RATES.md)
11 | 💬 telegram: [@your-nikname](https://telegram.me/your-nikname)
12 | 📫 [your-email](mailto:your-email)
13 |
--------------------------------------------------------------------------------
/SKILLS.md:
--------------------------------------------------------------------------------
1 | # Personal profile of software engineering skills
2 |
3 | ⬜ Optional, 🟦 Required for all, 🟨 Required for js, 🟩 Learned, 🟥 Declined
4 |
5 | ## Fundamental concepts
6 |
7 | | Syntax | Statements | Functions | Data structures | Process & style |
8 | |----------------------|-----------------------|-----------------------|---------------------|----------------------|
9 | | 🟦 value | 🟦 if | 🟦 recursion | 🟦 array | 🟦 refactoring |
10 | | 🟦 identifier | 🟦 loops | 🟦 function | 🟦 instance | 🟦 code review |
11 | | 🟦 variable | 🟦 assignment | 🟦 return | 🟦 object | 🟦 antipatterns |
12 | | 🟦 constant | 🟨 prototype | 🟦 signature | 🟦 collection | 🟦 paradigm |
13 | | 🟦 scalar | 🟦 class | 🟦 argument | 🟦 hash table | 🟦 algorithm |
14 | | 🟦 literal | 🟦 while | 🟦 parameter | 🟦 linked list | 🟦 magic numbers |
15 | | 🟦 expression | 🟦 do..while | 🟦 pure function | 🟦 queue | 🟦 hardcode |
16 | | 🟦 heap | 🟦 for | 🟦 lambda | 🟦 stack | 🟦 complexity |
17 | | 🟦 type | 🟨 for..in | 🟦 side effects | 🟦 deque | 🟦 decomposition |
18 | | 🟦 primitive types | 🟨 for..of | 🟦 closure | 🟦 serialization | ⬜️ spaghetti |
19 | | 🟦 reference | 🟨 for await | 🟦 partial | 🟦 mixin, extend | ⬜️ silver bullet |
20 | | 🟦 flag | 🟦 throw | ⬜️ curry | 🟨 iterator | ⬜️ not invented here |
21 | | 🟦 lexical scope | 🟦 try..catch | 🟦 chaining | 🟨 typed arrays | 🟦 dead code |
22 | | 🟦 code block | 🟦 equality operators | 🟦 higher order | 🟨 Map | 🟦 unreachable code |
23 | | 🟨 Object | 🟦 logical operators | 🟦 callback | 🟨 Set | 🟦 duplicate code |
24 | | 🟨 this | 🟦 bitwise operators | 🟦 listener | ⬜️ weak collections | 🟦 exception |
25 | | 🟨 arrow function | 🟦 break, continue | ⬜️ pipe | ⬜️ Proxy | 🟦 return early |
26 | | 🟨 generator | 🟦 switch | ⬜ compose | ⬜️ Symbol | 🟦 linter |
27 | | 🟨 async function | 🟨 new Error | ⬜️ memoize | 🟨 string parsing | ⬜️ prettier |
28 | | 🟨 call, bind, apply | | 🟦 factory | 🟨 timers | 🟦 unittest |
29 | | 🟨 Array | | 🟦 pool | 🟨 EventEmitter | 🟦 git |
30 | | 🟨 instanceof | | 🟦 wrapper | 🟨 RegExp | 🟦 github |
31 | | 🟨 ...spread | | 🟨 default parameters | 🟨 global | 🟨 node.js |
32 | | 🟨 ...rest | | | 🟨 undefined | 🟨 npm |
33 | | 🟨 typeof | | | 🟦 null | |
34 |
35 | ## Multi-paradigm programming
36 |
37 | | Theory | OOP basics | Abstractions | Patterns |
38 | |--------------------------------|-----------------------|----------------------|--------------------------|
39 | | 🟦 Procedural programming | 🟦 constructor | ⬜ struct, record | 🟦 Singleton |
40 | | 🟦 Imperative programming | 🟦 new | ⬜ Mutable state | |
41 | | 🟦 Structured programming | 🟦 Static method | ⬜ Immutable state | |
42 | | 🟦 Non-structured programming | 🟦 Method | ⬜ Enum | |
43 | | 🟦 Functional programming | 🟦 Async method | 🟦 Linked list | |
44 | | 🟦 Prototype-based programming | 🟦 Getters, Setters | 🟦 Doubly list | |
45 | | 🟦 Object-oriented programming | 🟦 Public fields | 🟦 Unrolled list | |
46 | | ⬜ Object-based programming | 🟦 Private fields | 🟦 Circular list | |
47 | | 🟦 Generic programming | 🟦 Field declarations | 🟦 Trees | |
48 | | 🟦 Concurrent computing | 🟦 Inheritance | 🟦 Graphs | |
49 | | 🟦 Asyncronous programming | 🟦 Parent class | 🟦 Functor | |
50 | | 🟦 Parallel programming | 🟦 Polymorphism | 🟦 Functional object | |
51 | | 🟦 Reactive programming | 🟦 Abstract class | ⬜ Monad | |
52 | | ⬜ FRP (Functional-reactive) | 🟦 Interface | 🟦 Generator | |
53 | | 🟦 Automata-based programming | 🟦 Encapsulation | 🟦 Iterator | |
54 | | 🟦 Domain-specific languages | ⬜ Hidden class | 🟦 Async Iterator | |
55 | | 🟦 Multi-paradigm programming | ⬜ Object form | | |
56 | | ⬜ Metaprogramming | 🟦 instance | | |
57 | | ⬜ Actor model | ⬜ Introspection | | |
58 | | | ⬜ Reflection | | |
59 |
60 | ## Asynchronous programming
61 |
62 | | Async contracts | JavaScript & Node.js specific | Theory | Techniques |
63 | |------------------------|--------------------------------|---------------------|--------------------------|
64 | | 🟦 Callback-last | 🟦 Timers | 🟦 Event Loop | ⬜ async.js library |
65 | | 🟦 Error-first | 🟦 setImmediate | 🟦 Async error | ⬜ Async composition |
66 | | 🟦 Promise | 🟦 nextTick | 🟦 try..catch | ⬜ Rx.js |
67 | | 🟦 Async function | 🟦 AbortController | 🟦 Non-blocking | 🟦 Sequential async |
68 | | 🟦 await | 🟦 Promise unhandled rejection | 🟦 Async I/O | 🟦 Parallel async |
69 | | 🟦 Generator | 🟦 Promise double resolve | 🟦 Pattern Reactor | 🟦 Promise.all |
70 | | 🟦 Async Generator | 🟦 child_process | ⬜ CAS operations | 🟦 Promise.allSettled |
71 | | 🟦 Async Iterator | 🟦 worker_threads | ⬜ epoll | 🟦 Promise.race |
72 | | 🟦 Thenable | 🟦 Atomics | ⬜ kqueue | 🟦 Promise.any |
73 | | 🟦 EventEmitter | 🟦 Blockeing operations | ⬜ Completion ports | ⬜ Web Locks API |
74 | | ⬜ Cancelable callback | 🟦 Non-blocking loop for Array | ⬜ Event ports | ⬜ Async Pool |
75 | | ⬜ Cancelable Promise | ⬜ High resolution clock | 🟦 libuv | ⬜ Thread Pool |
76 | | 🟦 Asynchronous Queue | 🟦 Callback hell | 🟦 Race conditions | 🟦 callbackify |
77 | | ⬜ Future | 🟦 Promise hell | 🟦 Dead locks | 🟦 promisify |
78 | | ⬜ Deferred | | 🟦 Live locks | ⬜ IPC |
79 | | 🟦 Observer | | ⬜ Actor Model | ⬜ Channel API |
80 | | ⬜ Async Collector | | | ⬜ Revealing Constructor |
81 | | ⬜ Coroutine | | | |
82 | | ⬜ Goroutine | | | |
83 |
84 | ## Node.js and backend
85 |
86 | | Internals | Theory | Network | Technique | Problems |
87 | |----------------------|------------------------------|-------------------|------------------|----------------------|
88 | | 🟦 Nonblocking I/O | 🟦 I/O bound tasks | 🟦 HTTP(S) | 🟦 Logging | 🟦 Memory leaks |
89 | | 🟦 Event Loop | 🟦 CPU bound tasks | 🟦 TCP/SSL | 🟦 Testing | 🟦 Resource leaks |
90 | | 🟦 commonjs | 🟦 Memory bound tasks | 🟦 UDP | ⬜ CI/CD | 🟦 Blocking code |
91 | | 🟦 ECMA modules | 🟦 Multilayer approach | 🟦 TLS | 🟦 Readable | 🟦 Data race |
92 | | 🟦 Network API | 🟦 Separation of concerns | 🟦 Websocket | 🟦 Writable | 🟦 Graceful Shutdown |
93 | | ⬜ Addons | 🟦 Inversion of control | ⬜ SSE | 🟦 Transform | 🟦 Dependencies |
94 | | ⬜ N-API | 🟦 Dependency injection | ⬜ HTTP/3 (QUIC) | ⬜ back pressure | |
95 | | ⬜ Webassembly | 🟦 GRASP for JS and Node.js | ⬜ Long polling | 🟦 Buffer | |
96 | | 🟦 npm | 🟦 SOLID for JS and Node.js | 🟦 REST | 🟦 Console | |
97 | | 🟦 node_modules | 🟦 GoF for JS and Node.js | 🟦 RPC | 🟦 Inspector | |
98 | | 🟦 package.json | ⬜ Distributed systems | 🟦 Routing | 🟦 Reliability | |
99 | | 🟦 vm isolation | ⬜ Highload applications | 🟦 IP sticky | 🟦 Quality | |
100 | | 🟦 command line args | 🟦 DDD | 🟦 DoS | 🟦 Availability | |
101 | | ⬜ Node.js CLI | 🟦 Clean architecture | 🟦 DDoS | 🟦 Flexibility | |
102 | | 🟦 Streams | 🟦 Domain in the middle | 🟦 XSS | | |
103 | | 🟦 Clustering | 🟦 Message Queue | 🟦 Path traversal | | |
104 | | ⬜ Load balancing | 🟦 Transport-agnostic server | 🟦 CSRF | | |
105 | | ⬜ Serverless clouds | 🟦 Framework-agnostic app | 🟦 DNS | | |
106 | | ⬜ FaaS clouds | ⬜ Interactive applications | 🟦 Fetch | | |
107 | | 🟦 Debugging node.js | ⬜ Real-time applications | 🟦 zlib | | |
108 | | 🟦 crypto | 🟦 CQS and CQRS | | | |
109 | | ⬜ SharedArrayBuffer | 🟦 Event Sourcing | | | |
110 | | 🟦 child_process | 🟦 Shared memory | | | |
111 | | 🟦 worker_threads | | | | |
112 |
113 | ## Other skills
114 |
115 | - ⬜ Cybersecurity
116 | - ⬜ TDD
117 | - ⬜ Quality
118 | - ⬜ Mobile applications
119 | - ⬜ High-performance computing
120 | - ⬜ Edge computing
121 | - ⬜ Data warehouse
122 | - ⬜ Low-code and no-code platforms
123 |
--------------------------------------------------------------------------------
/TALKS.md:
--------------------------------------------------------------------------------
1 | # List of public talks
2 |
--------------------------------------------------------------------------------