Compare commits

..

48 Commits

Author SHA1 Message Date
Arik Chakma
2683ed5076 fix: bcrypt open source link 2024-10-05 10:53:14 +06:00
github-actions[bot]
f876ba8df5 chore: update roadmap content json (#7339)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-05 09:52:41 +06:00
Jean-François Greffier
c26fb97bc7 Use react.dev for links (#7332)
* Update useCallback with new React website

* Update links with new React website
2024-10-04 18:41:47 +01:00
Koki Kazaore
3b1cc91405 update index.md of 101-ec2 dir (#7329) 2024-10-04 14:31:53 +01:00
Kamran Ahmed
5a49ad45be Remove best practices 2024-10-04 11:59:48 +01:00
Kamran Ahmed
be221a2b14 Remove content from AI engineer roadmap 2024-10-04 11:31:36 +01:00
Satyam Vyas
6461ccaf59 Fix: Added content for Prompt Engineering: Prompt Hacking (#7318)
* fix: added content for Prompt Hacking

* fix: formatted the roadmap content according to the guidelines
2024-10-04 09:25:28 +01:00
Robiul Hossain
aa76db78da Devops roadmap: add resources links (#7317)
* feat: add a article for nginx as reverse proxy in devops roadmap

* feat: add nginx as load balancer article in devops roadmap

* feat: add a ufw filewall blog for fiirewall resources in devops roadmap
2024-10-04 09:18:37 +01:00
github-actions[bot]
c40cda13d8 chore: update roadmap content json (#7322)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-04 07:55:48 +06:00
Kamran Ahmed
487145b9a4 UI redesign for invite page 2024-10-03 23:33:27 +01:00
Arik Chakma
cc817b060c feat: add referral user count (#7233)
* feat: add referral user count

* feat: add referrals leaderboard

* fix: update UI

* Update referral design

* Update invite friends UI

* Add leaderboard page

* Update leaderboard page

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-03 23:07:21 +01:00
Kamran Ahmed
06c242cf32 Add AI engineer roadmap content 2024-10-03 15:28:33 +01:00
Kamran Ahmed
5b09e61b86 Add content to AI Engineer roadmap 2024-10-03 15:28:33 +01:00
Kamran Ahmed
a3fedad816 Add content to AI Engineer roadmap 2024-10-03 15:28:33 +01:00
Kamran Ahmed
338f6c5d4a Add AI Engineer roadmap content 2024-10-03 15:28:33 +01:00
Robiul Hossain
9d6d77f93e feat: remove the packag-lock.json file from commit (#7301) 2024-10-03 15:27:42 +01:00
mitch edwards // valhalla_dev
f4c717b958 Addition of the poem library to web-development as well as the file-parsing topic (#7291)
Copy and links added to a few Rust topics.

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-03 15:25:37 +01:00
Berkcan Gümüşışık
65fe7aeb71 Python resources added. (#7293) 2024-10-03 15:23:45 +01:00
Aryan Chaurasia
1d0e65c2c8 Added content for KV database (#7295)
* Update key-value-database@l2aXyO3STnhbFjvUXPpm2.md

Added content for KV database

* Update src/data/roadmaps/redis/content/key-value-database@l2aXyO3STnhbFjvUXPpm2.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-03 15:20:48 +01:00
Vedansh
421133ecc2 Improved Frontend Roadmap (#7298)
* Phase - 1

* Phase - 2

* Phase - 3

* Phase - 4

* Phase - 5

* Phase - 6

* Phase - 7

* Apply suggestions from code review

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-03 15:16:07 +01:00
joel1st
346c630019 Update hashing--encryption--encoding@7r7o8pYhFHVAJIv0wNT6X.md (#7315)
Collisions are possible with hashes & lossless (which would be the case with text) encoding/decoding does not have issues with collisions.
2024-10-03 14:54:44 +01:00
Kamran Ahmed
3b929e45d2 Add AI Engineer roadmap PDF 2024-10-03 12:27:31 +01:00
Satyam Vyas
2bef597ced Improved Content in Prompt Hacking (#7308)
* Update index.md

* Update src/data/roadmaps/prompt-engineering/content/107-prompt-hacking/index.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-03 08:48:08 +01:00
Vedansh
1219b9e905 fix: devops os broken link (#7306) 2024-10-03 08:35:01 +06:00
Hashir V
87ef708da3 Add content for axum (#7299)
* Update 104-axum.md

* Update src/data/roadmaps/rust/content/108-web-development/104-axum.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-02 15:17:22 +01:00
github-actions[bot]
0643e86514 chore: update roadmap content json (#7292)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-02 09:41:10 +06:00
Kamran Ahmed
814b819195 Leaderboard page UI 2024-10-01 21:37:32 +01:00
Kamran Ahmed
9f2efc5872 UI for leaderboard 2024-10-01 19:31:04 +01:00
Arik Chakma
55f0eff569 feat: add github contributors leaderboard (#7277)
* feat: add github contributors leaderboard

* Improve UI for leaderboard

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-01 18:55:13 +01:00
Vedansh
47936801fd Improve backend roadmap resources (#7257)
* Phase - A to F

* Phase - G to M

* Phase - N to S

* Phase - S to Z

* Update src/data/roadmaps/backend/content/bcrypt@dlG1bVkDmjI3PEGpkm1xH.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update src/data/roadmaps/backend/content/caddy@Op-PSPNoyj6Ss9CS09AXh.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update src/data/roadmaps/backend/content/loadshifting@HoQdX7a4SnkFRU4RPQ-D5.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update src/data/roadmaps/backend/content/ms-sql@dEsTje8kfHwWjCI3zcgLC.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update src/data/roadmaps/backend/content/open-api-specs@9cD5ag1L0GqHx4_zxc5JX.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update twelve-factor-apps@8DmabQJXlrT__COZrDVTV.md


Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-01 15:54:15 +01:00
Kamran Ahmed
6b118d14d3 Add project status 2024-10-01 15:53:22 +01:00
Kamran Ahmed
efbd1d7f04 Project card loading status 2024-10-01 14:45:05 +01:00
psaradhi
f036a11784 Update the satisfies content to be minimal (#7211)
* changed example to use toUpperCase() instead of .at(0) because .at(0) does not cause any errors since it is available in string and array

* Update satisfies-keyword@HD1UGOidp7JGKdW6CEdQ_.md

---------

Co-authored-by: pardha <pardha@Vs-MacBook-Pro.local>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-01 14:36:33 +01:00
Vedansh
3d7bdc55bd Improve android roadmap content (#7236)
* Phase - 1.

* Phase - 2 (B)

* Phase - 3 (C)

* Phase - 4 (D)

* Phase - 5 (E,F)

* Phase - 6 (G)

* Phase - 7 (I)

* Phase - 8 (J&K)

* Phase - 9 (L)

* Phase - 10 (M,N)

* Phase - 11 (O,P,R,S)

* Phase - 12 (T,U,V,W)

* Update animations@Xn1VQ-xOT67ZfJJTM4r1p.md

* Update src/data/roadmaps/android/content/apollo-android@ww0fTbdXwVr-QIOClU7ng.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update basics-of-kotlin@jl1FsQ5-WGKeFyaILNt_p.md

* Update src/data/roadmaps/android/content/chucker@7RKN1FNtRE_BE6QeAQrKb.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

* Update buttons@WhfzFOUpm0DFEj7Oeq21R.md

* Update src/data/roadmaps/android/content/rxkotlin@4h37WBpYxRRyw9oH8ge7o.md

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-01 14:31:51 +01:00
github-actions[bot]
b658591c45 chore: update roadmap content json (#7283)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-10-01 14:28:43 +01:00
Arik Chakma
52c1b20f56 feat: add project status (#7252)
* feat: add project status

* Update project card and fix warnings

* Add loading indicator to project card

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2024-10-01 14:27:39 +01:00
Kamran Ahmed
e3ca03e531 Opening topic should not hide sponsor 2024-10-01 11:48:52 +01:00
Francesco Mannino
2378cd4bb9 [typo]: Update 102-insertion-sort.md (#7281) 2024-10-01 09:54:22 +01:00
Eduard Brahas
d673a06472 Update what-is-software-architecture@EGG99VA-PEdWdVxNDLtG_.md (#7280) 2024-10-01 09:48:50 +01:00
Sandeep Sahani
122bbe6b27 Update ios-architecture@IduGSdUa2Fi7VFMLKgmsS.md (#7279)
* Update ios-architecture@IduGSdUa2Fi7VFMLKgmsS.md

Added description for iOS Architecture, ensuring contribution rules.

* Update src/data/roadmaps/ios/content/ios-architecture@IduGSdUa2Fi7VFMLKgmsS.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-10-01 09:46:36 +01:00
Danrley Senegalha Pires
d2a36a9d4c fix: change tag from article to video (#7285) 2024-10-01 09:44:59 +01:00
Danrley Senegalha Pires
04151f9693 fix: change tag from article to video (#7284) 2024-10-01 09:44:43 +01:00
Ahmad Asaad
264afe4e03 Add a link to "Learn Git Branching" tutorial to "Branching Basics" topic in "Git & Github" roadmap & rename file in "Backend" roadmap content. (#7250)
Added "Learn Git Branching" tutorial link.
2024-09-30 11:44:42 +01:00
github-actions[bot]
678388d401 chore: update roadmap content json (#7271)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-30 16:42:54 +06:00
cromulent0101
8ce7aa7bcb Update SSL/TLS pages with correct topic content (#7272)
* Update SSL TLS pages with correct topic

* Update TLS pages with correct non-SSO content

* Update SSL and TLS pages withcorrect content
2024-09-30 11:42:29 +01:00
Aryan Chaurasia
447437bfc9 Update in-memory-data-structure-store@M-EXrTDeAEMz_IkEi-ab4.md (#7270)
* Update in-memory-data-structure-store@M-EXrTDeAEMz_IkEi-ab4.md

added content

* Update src/data/roadmaps/redis/content/in-memory-data-structure-store@M-EXrTDeAEMz_IkEi-ab4.md

---------

Co-authored-by: dsh <daniel.s.holdsworth@gmail.com>
2024-09-30 11:41:30 +01:00
Brian Rodriguez
72a04b9b9f fix: update android roadmap content 2024-09-30 02:22:40 +06:00
github-actions[bot]
15d19eeb6c chore: update roadmap content json (#7253)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2024-09-28 17:55:18 +06:00
415 changed files with 3768 additions and 1632 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

View File

Before

Width:  |  Height:  |  Size: 256 KiB

After

Width:  |  Height:  |  Size: 256 KiB

BIN
public/images/gifs/star.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1013 KiB

Binary file not shown.

View File

@@ -0,0 +1,582 @@
{
"_hYN0gEi9BL24nptEtXWU": {
"title": "Introduction",
"description": "",
"links": []
},
"GN6SnI7RXIeW8JeD-qORW": {
"title": "What is an AI Engineer?",
"description": "",
"links": []
},
"jSZ1LhPdhlkW-9QJhIvFs": {
"title": "AI Engineer vs ML Engineer",
"description": "",
"links": []
},
"wf2BSyUekr1S1q6l8kyq6": {
"title": "LLMs",
"description": "",
"links": []
},
"KWjD4xEPhOOYS51dvRLd2": {
"title": "Inference",
"description": "",
"links": []
},
"xostGgoaYkqMO28iN2gx8": {
"title": "Training",
"description": "",
"links": []
},
"XyEp6jnBSpCxMGwALnYfT": {
"title": "Embeddings",
"description": "",
"links": []
},
"LnQ2AatMWpExUHcZhDIPd": {
"title": "Vector Databases",
"description": "",
"links": []
},
"9JwWIK0Z2MK8-6EQQJsCO": {
"title": "RAG",
"description": "",
"links": []
},
"Dc15ayFlzqMF24RqIF_-X": {
"title": "Prompt Engineering",
"description": "",
"links": []
},
"9XCxilAQ7FRet7lHQr1gE": {
"title": "AI Agents",
"description": "",
"links": []
},
"5QdihE1lLpMc3DFrGy46M": {
"title": "AI vs AGI",
"description": "",
"links": []
},
"qJVgKe9uBvXc-YPfvX_Y7": {
"title": "Impact on Product Development",
"description": "",
"links": []
},
"K9EiuFgPBFgeRxY4wxAmb": {
"title": "Roles and Responsiblities",
"description": "",
"links": []
},
"d7fzv_ft12EopsQdmEsel": {
"title": "Pre-trained Models",
"description": "",
"links": []
},
"1Ga6DbOPc6Crz7ilsZMYy": {
"title": "Benefits of Pre-trained Models",
"description": "",
"links": []
},
"MXqbQGhNM3xpXlMC2ib_6": {
"title": "Limitations and Considerations",
"description": "",
"links": []
},
"2WbVpRLqwi3Oeqk1JPui4": {
"title": "Open AI Models",
"description": "",
"links": []
},
"vvpYkmycH0_W030E-L12f": {
"title": "Capabilities / Context Length",
"description": "",
"links": []
},
"LbB2PeytxRSuU07Bk0KlJ": {
"title": "Cut-off Dates / Knowledge",
"description": "",
"links": []
},
"hy6EyKiNxk1x84J63dhez": {
"title": "Anthropic's Claude",
"description": "",
"links": []
},
"oe8E6ZIQWuYvHVbYJHUc1": {
"title": "Google's Gemini",
"description": "",
"links": []
},
"3PQVZbcr4neNMRr6CuNzS": {
"title": "Azure AI",
"description": "",
"links": []
},
"OkYO-aSPiuVYuLXHswBCn": {
"title": "AWS Sagemaker",
"description": "",
"links": []
},
"8XjkRqHOdyH-DbXHYiBEt": {
"title": "Hugging Face Models",
"description": "",
"links": []
},
"n-Ud2dXkqIzK37jlKItN4": {
"title": "Mistral AI",
"description": "",
"links": []
},
"a7qsvoauFe5u953I699ps": {
"title": "Cohere",
"description": "",
"links": []
},
"5ShWZl1QUqPwO-NRGN85V": {
"title": "OpenAI Models",
"description": "",
"links": []
},
"zdeuA4GbdBl2DwKgiOA4G": {
"title": "OpenAI API",
"description": "",
"links": []
},
"_bPTciEA1GT1JwfXim19z": {
"title": "Chat Completions API",
"description": "",
"links": []
},
"9-5DYeOnKJq9XvEMWP45A": {
"title": "Writing Prompts",
"description": "",
"links": []
},
"nyBgEHvUhwF-NANMwkRJW": {
"title": "Open AI Playground",
"description": "",
"links": []
},
"15XOFdVp0IC-kLYPXUJWh": {
"title": "Fine-tuning",
"description": "",
"links": []
},
"qzvp6YxWDiGakA2mtspfh": {
"title": "Maximum Tokens",
"description": "",
"links": []
},
"FjV3oD7G2Ocq5HhUC17iH": {
"title": "Token Counting",
"description": "",
"links": []
},
"DZPM9zjCbYYWBPLmQImxQ": {
"title": "Pricing Considerations",
"description": "",
"links": []
},
"8ndKHDJgL_gYwaXC7XMer": {
"title": "AI Safety and Ethics",
"description": "",
"links": []
},
"cUyLT6ctYQ1pgmodCKREq": {
"title": "Prompt Injection Attacks",
"description": "",
"links": []
},
"lhIU0ulpvDAn1Xc3ooYz_": {
"title": "Bias and Fareness",
"description": "",
"links": []
},
"sWBT-j2cRuFqRFYtV_5TK": {
"title": "Security and Privacy Concerns",
"description": "",
"links": []
},
"Pt-AJmSJrOxKvolb5_HEv": {
"title": "Conducting adversarial testing",
"description": "",
"links": []
},
"ljZLa3yjQpegiZWwtnn_q": {
"title": "OpenAI Moderation API",
"description": "",
"links": []
},
"4Q5x2VCXedAWISBXUIyin": {
"title": "Adding end-user IDs in prompts",
"description": "",
"links": []
},
"qmx6OHqx4_0JXVIv8dASp": {
"title": "Robust prompt engineering",
"description": "",
"links": []
},
"t1SObMWkDZ1cKqNNlcd9L": {
"title": "Know your Customers / Usecases",
"description": "",
"links": []
},
"ONLDyczNacGVZGojYyJrU": {
"title": "Constraining outputs and inputs",
"description": "",
"links": []
},
"a_3SabylVqzzOyw3tZN5f": {
"title": "OpenSource AI",
"description": "",
"links": []
},
"RBwGsq9DngUsl8PrrCbqx": {
"title": "Open vs Closed Source Models",
"description": "",
"links": []
},
"97eu-XxYUH9pYbD_KjAtA": {
"title": "Popular Open Source Models",
"description": "",
"links": []
},
"v99C5Bml2a6148LCJ9gy9": {
"title": "Hugging Face",
"description": "",
"links": []
},
"YLOdOvLXa5Fa7_mmuvKEi": {
"title": "Hugging Face Hub",
"description": "",
"links": []
},
"YKIPOiSj_FNtg0h8uaSMq": {
"title": "Hugging Face Tasks",
"description": "",
"links": []
},
"3kRTzlLNBnXdTsAEXVu_M": {
"title": "Inference SDK",
"description": "",
"links": []
},
"bGLrbpxKgENe2xS1eQtdh": {
"title": "Transformers.js",
"description": "",
"links": []
},
"rTT2UnvqFO3GH6ThPLEjO": {
"title": "Ollama",
"description": "",
"links": []
},
"ro3vY_sp6xMQ-hfzO-rc1": {
"title": "Ollama Models",
"description": "",
"links": []
},
"TsG_I7FL-cOCSw8gvZH3r": {
"title": "Ollama SDK",
"description": "",
"links": []
},
"--ig0Ume_BnXb9K2U7HJN": {
"title": "What are Embeddings",
"description": "",
"links": []
},
"eMfcyBxnMY_l_5-8eg6sD": {
"title": "Semantic Search",
"description": "",
"links": []
},
"HQe9GKy3p0kTUPxojIfSF": {
"title": "Recommendation Systems",
"description": "",
"links": []
},
"AglWJ7gb9rTT2rMkstxtk": {
"title": "Anomaly Detection",
"description": "",
"links": []
},
"06Xta-OqSci05nV2QMFdF": {
"title": "Data Classification",
"description": "",
"links": []
},
"l6priWeJhbdUD5tJ7uHyG": {
"title": "Open AI Embeddings API",
"description": "",
"links": []
},
"y0qD5Kb4Pf-ymIwW-tvhX": {
"title": "Open AI Embedding Models",
"description": "",
"links": []
},
"4GArjDYipit4SLqKZAWDf": {
"title": "Pricing Considerations",
"description": "",
"links": []
},
"apVYIV4EyejPft25oAvdI": {
"title": "Open-Source Embeddings",
"description": "",
"links": []
},
"ZV_V6sqOnRodgaw4mzokC": {
"title": "Sentence Transformers",
"description": "",
"links": []
},
"dLEg4IA3F5jgc44Bst9if": {
"title": "Models on Hugging Face",
"description": "",
"links": []
},
"tt9u3oFlsjEMfPyojuqpc": {
"title": "Vector Databases",
"description": "",
"links": []
},
"WcjX6p-V-Rdd77EL8Ega9": {
"title": "Purpose and Functionality",
"description": "",
"links": []
},
"dSd2C9lNl-ymmCRT9_ZC3": {
"title": "Chroma",
"description": "",
"links": []
},
"_Cf7S1DCvX7p1_3-tP3C3": {
"title": "Pinecone",
"description": "",
"links": []
},
"VgUnrZGKVjAAO4n_llq5-": {
"title": "Weaviate",
"description": "",
"links": []
},
"JurLbOO1Z8r6C3yUqRNwf": {
"title": "FAISS",
"description": "",
"links": []
},
"rjaCNT3Li45kwu2gXckke": {
"title": "LanceDB",
"description": "",
"links": []
},
"DwOAL5mOBgBiw-EQpAzQl": {
"title": "Qdrant",
"description": "",
"links": []
},
"9kT7EEQsbeD2WDdN9ADx7": {
"title": "Supabase",
"description": "",
"links": []
},
"j6bkm0VUgLkHdMDDJFiMC": {
"title": "MongoDB Atlas",
"description": "",
"links": []
},
"5TQnO9B4_LTHwqjI7iHB1": {
"title": "Indexing Embeddings",
"description": "",
"links": []
},
"ZcbRPtgaptqKqWBgRrEBU": {
"title": "Performing Similarity Search",
"description": "",
"links": []
},
"lVhWhZGR558O-ljHobxIi": {
"title": "RAG & Implementation",
"description": "",
"links": []
},
"GCn4LGNEtPI0NWYAZCRE-": {
"title": "RAG Usecases",
"description": "",
"links": []
},
"qlBEXrbV88e_wAGRwO9hW": {
"title": "RAG vs Fine-tuning",
"description": "",
"links": []
},
"mX987wiZF7p3V_gExrPeX": {
"title": "Chunking",
"description": "",
"links": []
},
"grTcbzT7jKk_sIUwOTZTD": {
"title": "Embedding",
"description": "",
"links": []
},
"zZA1FBhf1y4kCoUZ-hM4H": {
"title": "Vector Database",
"description": "",
"links": []
},
"OCGCzHQM2LQyUWmiqe6E0": {
"title": "Retrieval Process",
"description": "",
"links": []
},
"2jJnS9vRYhaS69d6OxrMh": {
"title": "Generation",
"description": "",
"links": []
},
"WZVW8FQu6LyspSKm1C_sl": {
"title": "Using SDKs Directly",
"description": "",
"links": []
},
"ebXXEhNRROjbbof-Gym4p": {
"title": "Langchain",
"description": "",
"links": []
},
"d0ontCII8KI8wfP-8Y45R": {
"title": "Llama Index",
"description": "",
"links": []
},
"eOqCBgBTKM8CmY3nsWjre": {
"title": "Open AI Assistant API",
"description": "",
"links": []
},
"c0RPhpD00VIUgF4HJgN2T": {
"title": "Replicate",
"description": "",
"links": []
},
"AeHkNU-uJ_gBdo5-xdpEu": {
"title": "AI Agents",
"description": "",
"links": []
},
"778HsQzTuJ_3c9OSn5DmH": {
"title": "Agents Usecases",
"description": "",
"links": []
},
"voDKcKvXtyLzeZdx2g3Qn": {
"title": "ReAct Prompting",
"description": "",
"links": []
},
"6xaRB34_g0HGt-y1dGYXR": {
"title": "Manual Implementation",
"description": "",
"links": []
},
"Sm0Ne5Nx72hcZCdAcC0C2": {
"title": "OpenAI Functions / Tools",
"description": "",
"links": []
},
"mbp2NoL-VZ5hZIIblNBXt": {
"title": "OpenAI Assistant API",
"description": "",
"links": []
},
"W7cKPt_UxcUgwp8J6hS4p": {
"title": "Multimodal AI",
"description": "",
"links": []
},
"sGR9qcro68KrzM8qWxcH8": {
"title": "Multimodal AI Usecases",
"description": "",
"links": []
},
"fzVq4hGoa2gdbIzoyY1Zp": {
"title": "Image Understanding",
"description": "",
"links": []
},
"49BWxYVFpIgZCCqsikH7l": {
"title": "Image Generation",
"description": "",
"links": []
},
"TxaZCtTCTUfwCxAJ2pmND": {
"title": "Video Understanding",
"description": "",
"links": []
},
"mxQYB820447DC6kogyZIL": {
"title": "Audio Processing",
"description": "",
"links": []
},
"GCERpLz5BcRtWPpv-asUz": {
"title": "Text-to-Speech",
"description": "",
"links": []
},
"jQX10XKd_QM5wdQweEkVJ": {
"title": "Speech-to-Text",
"description": "",
"links": []
},
"CRrqa-dBw1LlOwVbrZhjK": {
"title": "OpenAI Vision API",
"description": "",
"links": []
},
"LKFwwjtcawJ4Z12X102Cb": {
"title": "DALL-E API",
"description": "",
"links": []
},
"OTBd6cPUayKaAM-fLWdSt": {
"title": "Whisper API",
"description": "",
"links": []
},
"EIDbwbdolR_qsNKVDla6V": {
"title": "Hugging Face Models",
"description": "",
"links": []
},
"j9zD3pHysB1CBhLfLjhpD": {
"title": "LangChain for Multimodal Apps",
"description": "",
"links": []
},
"akQTCKuPRRelj2GORqvsh": {
"title": "LlamaIndex for Multimodal Apps",
"description": "",
"links": []
},
"NYge7PNtfI-y6QWefXJ4d": {
"title": "Development Tools",
"description": "",
"links": []
},
"XcKeQfpTA5ITgdX51I4y-": {
"title": "AI Code Editors",
"description": "",
"links": []
},
"TifVhqFm1zXNssA8QR3SM": {
"title": "Code Completion Tools",
"description": "",
"links": []
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,30 @@
{
"gKTSe9yQFVbPVlLzWB0hC": {
"title": "Search Engines",
"description": "Search engines like Elasticsearch are specialized tools designed for fast, scalable, and flexible searching and analyzing of large volumes of data. Elasticsearch is an open-source, distributed search and analytics engine built on Apache Lucene, offering full-text search capabilities, real-time indexing, and advanced querying features. Key characteristics of search engines like Elasticsearch include:\n\n1. **Full-Text Search**: Support for complex search queries, including relevance scoring and text analysis.\n2. **Distributed Architecture**: Scalability through horizontal distribution across multiple nodes or servers.\n3. **Real-Time Indexing**: Ability to index and search data almost instantaneously.\n4. **Powerful Query DSL**: A domain-specific language for constructing and executing sophisticated queries.\n5. **Analytics**: Capabilities for aggregating and analyzing data, often used for log and event data analysis.\n\nElasticsearch is commonly used in applications requiring advanced search functionality, such as search engines, data analytics platforms, and real-time monitoring systems.",
"links": []
"description": "Search engines like Elasticsearch are specialized tools designed for fast, scalable, and flexible searching and analyzing of large volumes of data. Elasticsearch is an open-source, distributed search and analytics engine built on Apache Lucene, offering full-text search capabilities, real-time indexing, and advanced querying features. Key characteristics of search engines like Elasticsearch include:\n\n1. **Full-Text Search**: Support for complex search queries, including relevance scoring and text analysis.\n2. **Distributed Architecture**: Scalability through horizontal distribution across multiple nodes or servers.\n3. **Real-Time Indexing**: Ability to index and search data almost instantaneously.\n4. **Powerful Query DSL**: A domain-specific language for constructing and executing sophisticated queries.\n5. **Analytics**: Capabilities for aggregating and analyzing data, often used for log and event data analysis.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Elasticsearch",
"url": "https://www.elastic.co/elasticsearch/",
"type": "article"
}
]
},
"9Fpoor-Os_9lvrwu5Zjh-": {
"title": "Design and Development Principles",
"description": "Design and Development Principles are fundamental guidelines that inform the creation of software systems. Key principles include:\n\n1. SOLID (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion)\n2. DRY (Don't Repeat Yourself)\n3. KISS (Keep It Simple, Stupid)\n4. YAGNI (You Aren't Gonna Need It)\n5. Separation of Concerns\n6. Modularity\n7. Encapsulation\n8. Composition over Inheritance\n9. Loose Coupling and High Cohesion\n10. Principle of Least Astonishment\n\nThese principles aim to create more maintainable, scalable, and robust software. They encourage clean code, promote reusability, reduce complexity, and enhance flexibility. While not rigid rules, these principles guide developers in making design decisions that lead to better software architecture and easier long-term maintenance. Applying these principles helps in creating systems that are easier to understand, modify, and extend over time.",
"links": []
"description": "Design and Development Principles are fundamental guidelines that inform the creation of software systems. Key principles include:\n\n* SOLID (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion)\n* DRY (Don't Repeat Yourself)\n* KISS (Keep It Simple, Stupid)\n* YAGNI (You Aren't Gonna Need It)\n* Separation of Concerns\n* Modularity\n* Encapsulation\n* Composition over Inheritance\n* Loose Coupling and High Cohesion\n* Principle of Least Astonishment\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Design Principles - Wikipedia",
"url": "https://en.wikipedia.org/wiki/Design_principles",
"type": "article"
},
{
"title": "Design Principles - Microsoft",
"url": "https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/index",
"type": "article"
}
]
},
"EwvLPSI6AlZ4TnNIJTZA4": {
"title": "Learn about APIs",
@@ -71,7 +88,7 @@
"description": "Rust is a systems programming language known for its focus on safety, performance, and concurrency. It provides fine-grained control over system resources while ensuring memory safety without needing a garbage collector. Rust's ownership model enforces strict rules on how data is accessed and managed, preventing common issues like null pointer dereferences and data races. Its strong type system and modern features, such as pattern matching and concurrency support, make it suitable for a wide range of applications, from low-level systems programming to high-performance web servers and tools. Rust is gaining traction in both industry and open source for its reliability and efficiency.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "The Rust Programming Language - online book",
"title": "The Rust Programming Language - Book",
"url": "https://doc.rust-lang.org/book/",
"type": "article"
},
@@ -334,8 +351,8 @@
"type": "article"
},
{
"title": "Learn Git with Tutorials, News and Tips - Atlassian",
"url": "https://www.atlassian.com/git",
"title": "Git Documentation",
"url": "https://git-scm.com/doc",
"type": "article"
},
{
@@ -370,8 +387,8 @@
"type": "article"
},
{
"title": "Git",
"url": "https://git-scm.com/",
"title": "Git Documentation",
"url": "https://git-scm.com/doc",
"type": "article"
},
{
@@ -396,7 +413,7 @@
"type": "article"
},
{
"title": "GitHub Website",
"title": "GitHub",
"url": "https://github.com",
"type": "article"
},
@@ -424,7 +441,7 @@
},
"Ry_5Y-BK7HrkIc6X0JG1m": {
"title": "Bitbucket",
"description": "Bitbucket is a web-based version control repository hosting service owned by Atlassian. It primarily uses Git version control systems, offering both cloud-hosted and self-hosted options. Bitbucket provides features such as pull requests for code review, branch permissions, and inline commenting on code. It integrates seamlessly with other Atlassian products like Jira and Trello, making it popular among teams already using Atlassian tools. Bitbucket supports continuous integration and deployment through Bitbucket Pipelines. It offers unlimited private repositories for small teams, making it cost-effective for smaller organizations. While similar to GitHub in many aspects, Bitbucket's integration with Atlassian's ecosystem and its pricing model for private repositories are key differentiators. It's widely used for collaborative software development, particularly in enterprise environments already invested in Atlassian's suite of products.\n\nVisit the following resources to learn more:",
"description": "Bitbucket is a web-based version control repository hosting service owned by Atlassian. It primarily uses Git version control systems, offering both cloud-hosted and self-hosted options. Bitbucket provides features such as pull requests for code review, branch permissions, and inline commenting on code. It integrates seamlessly with other Atlassian products like Jira and Trello, making it popular among teams already using Atlassian tools. Bitbucket supports continuous integration and deployment through Bitbucket Pipelines. It offers unlimited private repositories for small teams, making it cost-effective for smaller organizations.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Bitbucket Website",
@@ -453,9 +470,9 @@
"description": "GitLab is a web-based DevOps platform that provides a complete solution for the software development lifecycle. It offers source code management, continuous integration/continuous deployment (CI/CD), issue tracking, and more, all integrated into a single application. GitLab supports Git repositories and includes features like merge requests (similar to GitHub's pull requests), wiki pages, and issue boards. It emphasizes DevOps practices, providing built-in CI/CD pipelines, container registry, and Kubernetes integration. GitLab offers both cloud-hosted and self-hosted options, giving organizations flexibility in deployment. Its all-in-one approach differentiates it from competitors, as it includes features that might require multiple tools in other ecosystems. GitLab's focus on the entire DevOps lifecycle, from planning to monitoring, makes it popular among enterprises and teams seeking a unified platform for their development workflows.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "GitLab Website",
"title": "GitLab",
"url": "https://gitlab.com/",
"type": "opensource"
"type": "article"
},
{
"title": "GitLab Documentation",
@@ -546,7 +563,7 @@
"type": "article"
},
{
"title": "MS SQL website",
"title": "MS SQL",
"url": "https://www.microsoft.com/en-ca/sql-server/",
"type": "article"
},
@@ -567,12 +584,12 @@
"description": "MySQL is an open-source relational database management system (RDBMS) known for its speed, reliability, and ease of use. It uses SQL (Structured Query Language) for database interactions and supports a range of features for data management, including transactions, indexing, and stored procedures. MySQL is widely used for web applications, data warehousing, and various other applications due to its scalability and flexibility. It integrates well with many programming languages and platforms, and is often employed in conjunction with web servers and frameworks in popular software stacks like LAMP (Linux, Apache, MySQL, PHP/Python/Perl). MySQL is maintained by Oracle Corporation and has a large community and ecosystem supporting its development and use.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "MySQL website",
"title": "MySQL",
"url": "https://www.mysql.com/",
"type": "article"
},
{
"title": "W3Schools - MySQL tutorial ",
"title": "W3Schools - MySQL Tutorial",
"url": "https://www.w3schools.com/mySQl/default.asp",
"type": "article"
},
@@ -603,12 +620,12 @@
"description": "Oracle Database is a highly robust, enterprise-grade relational database management system (RDBMS) developed by Oracle Corporation. Known for its scalability, reliability, and comprehensive features, Oracle Database supports complex data management tasks and mission-critical applications. It provides advanced functionalities like SQL querying, transaction management, high availability through clustering, and data warehousing. Oracle's database solutions include support for various data models, such as relational, spatial, and graph, and offer tools for security, performance optimization, and data integration. It is widely used in industries requiring large-scale, secure, and high-performance data processing.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Official Website",
"title": "Oracle Website",
"url": "https://www.oracle.com/database/",
"type": "article"
},
{
"title": "Official Docs",
"title": "Oracle Docs",
"url": "https://docs.oracle.com/en/database/index.html",
"type": "article"
},
@@ -626,10 +643,10 @@
},
"tD3i-8gBpMKCHB-ITyDiU": {
"title": "MariaDB",
"description": "MariaDB server is a community developed fork of MySQL server. Started by core members of the original MySQL team, MariaDB actively works with outside developers to deliver the most featureful, stable, and sanely licensed open SQL server in the industry. MariaDB was created with the intention of being a more versatile, drop-in replacement version of MySQL\n\nVisit the following resources to learn more:",
"description": "MariaDB server is a community developed fork of MySQL server. Started by core members of the original MySQL team, MariaDB actively works with outside developers to deliver the most feature rich, stable, and sanely licensed open SQL server in the industry. MariaDB was created with the intention of being a more versatile, drop-in replacement version of MySQL\n\nVisit the following resources to learn more:",
"links": [
{
"title": "MariaDB website",
"title": "MariaDB",
"url": "https://mariadb.org/",
"type": "article"
},
@@ -782,8 +799,14 @@
},
"GwApfL4Yx-b5Y8dB9Vy__": {
"title": "Failure Modes",
"description": "Database failure modes refer to the various ways in which a database system can malfunction or cease to operate correctly. These include hardware failures (like disk crashes or network outages), software bugs, data corruption, performance degradation due to overload, and inconsistencies in distributed systems. Common failure modes involve data loss, system unavailability, replication lag in distributed databases, and deadlocks. To mitigate these, databases employ strategies such as redundancy, regular backups, transaction logging, and failover mechanisms. Understanding potential failure modes is crucial for designing robust database systems with high availability and data integrity. It informs the implementation of fault tolerance measures, recovery procedures, and monitoring systems to ensure database reliability and minimize downtime in critical applications.",
"links": []
"description": "Database failure modes refer to the various ways in which a database system can malfunction or cease to operate correctly. These include hardware failures (like disk crashes or network outages), software bugs, data corruption, performance degradation due to overload, and inconsistencies in distributed systems. Common failure modes involve data loss, system unavailability, replication lag in distributed databases, and deadlocks. To mitigate these, databases employ strategies such as redundancy, regular backups, transaction logging, and failover mechanisms. Understanding potential failure modes is crucial for designing robust database systems with high availability and data integrity. It informs the implementation of fault tolerance measures, recovery procedures, and monitoring systems to ensure database reliability and minimize downtime in critical applications.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Database Failure Modes",
"url": "https://ieeexplore.ieee.org/document/7107294/",
"type": "article"
}
]
},
"rq_y_OBMD9AH_4aoecvAi": {
"title": "Transactions",
@@ -921,7 +944,7 @@
"description": "Data replication is the process of creating and maintaining multiple copies of the same data across different locations or nodes in a distributed system. It enhances data availability, reliability, and performance by ensuring that data remains accessible even if one or more nodes fail. Replication can be synchronous (changes are applied to all copies simultaneously) or asynchronous (changes are propagated after being applied to the primary copy). It's widely used in database systems, content delivery networks, and distributed file systems. Replication strategies include master-slave, multi-master, and peer-to-peer models. While improving fault tolerance and read performance, replication introduces challenges in maintaining data consistency across copies and managing potential conflicts. Effective replication strategies must balance consistency, availability, and partition tolerance, often in line with the principles of the CAP theorem.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "What is data replication?",
"title": "Data Replication? - IBM",
"url": "https://www.ibm.com/topics/data-replication",
"type": "article"
},
@@ -984,7 +1007,7 @@
"description": "JSON or JavaScript Object Notation is an encoding scheme that is designed to eliminate the need for an ad-hoc code for each application to communicate with servers that communicate in a defined way. JSON API module exposes an implementation for data stores and data structures, such as entity types, bundles, and fields.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Official Website",
"title": "JSON API",
"url": "https://jsonapi.org/",
"type": "article"
},
@@ -1014,15 +1037,15 @@
"url": "https://swagger.io/tools/swagger-editor/",
"type": "article"
},
{
"title": " REST API and OpenAPI: Its Not an Either/Or Question ",
"url": "https://www.youtube.com/watch?v=pRS9LRBgjYg",
"type": "article"
},
{
"title": "OpenAPI 3.0: How to Design and Document APIs with the Latest OpenAPI Specification 3.0",
"url": "https://www.youtube.com/watch?v=6kwmW_p_Tig",
"type": "video"
},
{
"title": " REST API and OpenAPI: Its Not an Either/Or Question",
"url": "https://www.youtube.com/watch?v=pRS9LRBgjYg",
"type": "video"
}
]
},
@@ -1109,7 +1132,7 @@
"type": "article"
},
{
"title": "GraphQL Official Website",
"title": "GraphQL",
"url": "https://graphql.org/",
"type": "article"
},
@@ -1130,7 +1153,7 @@
"description": "Client-side caching is a technique where web browsers or applications store data locally on the user's device to improve performance and reduce server load. It involves saving copies of web pages, images, scripts, and other resources on the client's system for faster access on subsequent visits. Modern browsers implement various caching mechanisms, including HTTP caching (using headers like Cache-Control and ETag), service workers for offline functionality, and local storage APIs. Client-side caching significantly reduces network traffic and load times, enhancing user experience, especially on slower connections. However, it requires careful management to balance improved performance with the need for up-to-date content. Developers must implement appropriate cache invalidation strategies and consider cache-busting techniques for critical updates. Effective client-side caching is crucial for creating responsive, efficient web applications while minimizing server resource usage.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Client-side Caching",
"title": "Client Side Caching",
"url": "https://redis.io/docs/latest/develop/use/client-side-caching/",
"type": "article"
},
@@ -1143,13 +1166,18 @@
},
"Nq2BO53bHJdFT1rGZPjYx": {
"title": "CDN",
"description": "A Content Delivery Network (CDN) service aims to provide high availability and performance improvements of websites. This is achieved with fast delivery of website assets and content typically via geographically closer endpoints to the client requests. Traditional commercial CDNs (Amazon CloudFront, Akamai, CloudFlare and Fastly) provide servers across the globe which can be used for this purpose. Serving assets and contents via a CDN reduces bandwidth on website hosting, provides an extra layer of caching to reduce potential outages and can improve website security as well\n\nVisit the following resources to learn more:",
"description": "A Content Delivery Network (CDN) service aims to provide high availability and performance improvements of websites. This is achieved with fast delivery of website assets and content typically via geographically closer endpoints to the client requests.\n\nTraditional commercial CDNs (Amazon CloudFront, Akamai, CloudFlare and Fastly) provide servers across the globe which can be used for this purpose. Serving assets and contents via a CDN reduces bandwidth on website hosting, provides an extra layer of caching to reduce potential outages and can improve website security as well\n\nVisit the following resources to learn more:",
"links": [
{
"title": "CloudFlare - What is a CDN? | How do CDNs work?",
"url": "https://www.cloudflare.com/en-ca/learning/cdn/what-is-a-cdn/",
"type": "article"
},
{
"title": "AWS - CDN",
"url": "https://aws.amazon.com/what-is/cdn/",
"type": "article"
},
{
"title": "What is Cloud CDN?",
"url": "https://www.youtube.com/watch?v=841kyd_mfH0",
@@ -1190,8 +1218,19 @@
},
"ELj8af7Mi38kUbaPJfCUR": {
"title": "Caching",
"description": "Caching is a technique used in computing to store and retrieve frequently accessed data quickly, reducing the need to fetch it from the original, slower source repeatedly. It involves keeping a copy of data in a location that's faster to access than its primary storage. Caching can occur at various levels, including browser caching, application-level caching, and database caching. It significantly improves performance by reducing latency, decreasing network traffic, and lowering the load on servers or databases. Common caching strategies include time-based expiration, least recently used (LRU) algorithms, and write-through or write-back policies. While caching enhances speed and efficiency, it also introduces challenges in maintaining data consistency and freshness. Effective cache management is crucial in balancing performance gains with the need for up-to-date information in dynamic systems.",
"links": []
"description": "Caching is a technique used in computing to store and retrieve frequently accessed data quickly, reducing the need to fetch it from the original, slower source repeatedly. It involves keeping a copy of data in a location that's faster to access than its primary storage. Caching can occur at various levels, including browser caching, application-level caching, and database caching. It significantly improves performance by reducing latency, decreasing network traffic, and lowering the load on servers or databases. Common caching strategies include time-based expiration, least recently used (LRU) algorithms, and write-through or write-back policies. While caching enhances speed and efficiency, it also introduces challenges in maintaining data consistency and freshness. Effective cache management is crucial in balancing performance gains with the need for up-to-date information in dynamic systems.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "What is Caching - AWS",
"url": "https://aws.amazon.com/caching/",
"type": "article"
},
{
"title": "Caching - Cloudflare",
"url": "https://www.cloudflare.com/learning/cdn/what-is-caching/",
"type": "article"
}
]
},
"RBrIP5KbVQ2F0ly7kMfTo": {
"title": "Web Security",
@@ -1333,7 +1372,7 @@
"type": "article"
},
{
"title": "DevOps CI/CD Explained in 100 Seconds by Fireship",
"title": "DevOps CI/CD Explained in 100 Seconds",
"url": "https://www.youtube.com/watch?v=scEDHsr3APg",
"type": "video"
},
@@ -1581,7 +1620,7 @@
},
"8DmabQJXlrT__COZrDVTV": {
"title": "Twelve Factor Apps",
"description": "The Twelve-Factor App methodology is a set of principles for building modern, scalable, and maintainable web applications, particularly suited for cloud environments. It emphasizes best practices for developing applications in a way that facilitates portability, scalability, and ease of deployment. Key principles include:\n\n1. **Codebase**: One codebase tracked in version control, with many deploys.\n2. **Dependencies**: Explicitly declare and isolate dependencies.\n3. **Config**: Store configuration in the environment.\n4. **Backing Services**: Treat backing services as attached resources.\n5. **Build, Release, Run**: Separate build and run stages.\n6. **Processes**: Execute the app as one or more stateless processes.\n7. **Port Binding**: Export services via port binding.\n8. **Concurrency**: Scale out via the process model.\n9. **Disposability**: Maximize robustness with fast startup and graceful shutdown.\n10. **Dev/Prod Parity**: Keep development, staging, and production environments as similar as possible.\n11. **Logs**: Treat logs as streams of events.\n12. **Admin Processes**: Run administrative or management tasks as one-off processes.\n\nThese principles help create applications that are easy to deploy, manage, and scale in cloud environments, promoting operational simplicity and consistency.\n\nVisit the following resources to learn more:",
"description": "The Twelve-Factor App methodology is a set of principles for building modern, scalable, and maintainable web applications, particularly suited for cloud environments. It emphasizes best practices for developing applications in a way that facilitates portability, scalability, and ease of deployment. Key principles include:\n\n1. **Codebase**: One codebase tracked in version control, with many deploys.\n2. **Dependencies**: Explicitly declare and isolate dependencies.\n3. **Config**: Store configuration in the environment.\n4. **Backing Services**: Treat backing services as attached resources.\n5. **Build, Release, Run**: Separate build and run stages.\n6. **Processes**: Execute the app as one or more stateless processes.\n7. **Port Binding**: Export services via port binding.\n8. **Concurrency**: Scale out via the process model.\n9. **Disposability**: Maximize robustness with fast startup and graceful shutdown.\n10. **Dev/Prod Parity**: Keep development, staging, and production environments as similar as possible.\n11. **Logs**: Treat logs as streams of events.\n12. **Admin Processes**: Run administrative or management tasks as one-off processes.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "The Twelve-Factor App",
@@ -1647,7 +1686,7 @@
"description": "Apache Kafka is a distributed event streaming platform designed for high-throughput, fault-tolerant data processing. It acts as a message broker, allowing systems to publish and subscribe to streams of records, similar to a distributed commit log. Kafka is highly scalable and can handle large volumes of data with low latency, making it ideal for real-time analytics, log aggregation, and data integration. It features topics for organizing data streams, partitions for parallel processing, and replication for fault tolerance, enabling reliable and efficient handling of large-scale data flows across distributed systems.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Apache Kafka quickstart",
"title": "Apache Kafka",
"url": "https://kafka.apache.org/quickstart",
"type": "article"
},
@@ -1704,12 +1743,12 @@
"type": "article"
},
{
"title": "Getting started with LXD Containerization",
"title": "Getting Started with LXD Containerization",
"url": "https://www.youtube.com/watch?v=aIwgPKkVj8s",
"type": "video"
},
{
"title": "Getting started with LXC containers",
"title": "Getting Started with LXC containers",
"url": "https://youtu.be/CWmkSj_B-wo",
"type": "video"
}
@@ -1767,7 +1806,7 @@
"description": "Server-Sent Events (SSE) is a technology for sending real-time updates from a server to a web client over a single, persistent HTTP connection. It enables servers to push updates to clients efficiently and automatically reconnects if the connection is lost. SSE is ideal for applications needing one-way communication, such as live notifications or real-time data feeds, and uses a simple text-based format for transmitting event data, which can be easily handled by clients using the `EventSource` API in JavaScript.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Server-Sent Events - MDN",
"title": "Server Sent Events - MDN",
"url": "https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events",
"type": "article"
},
@@ -1783,7 +1822,7 @@
"description": "Nginx is a high-performance, open-source web server and reverse proxy server known for its efficiency, scalability, and low resource consumption. Originally developed as a web server, Nginx is also commonly used as a load balancer, HTTP cache, and mail proxy. It excels at handling a large number of concurrent connections due to its asynchronous, event-driven architecture. Nginx's features include support for serving static content, handling dynamic content through proxying to application servers, and providing SSL/TLS termination. Its modular design allows for extensive customization and integration with various applications and services, making it a popular choice for modern web infrastructures.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Official Website",
"title": "Nginx Website",
"url": "https://nginx.org/",
"type": "article"
},
@@ -1809,7 +1848,7 @@
"description": "Caddy is a modern, open-source web server written in Go. It's known for its simplicity, automatic HTTPS encryption, and HTTP/2 support out of the box. Caddy stands out for its ease of use, with a simple configuration syntax and the ability to serve static files with zero configuration. It automatically obtains and renews SSL/TLS certificates from Let's Encrypt, making secure deployments straightforward. Caddy supports various plugins and modules for extended functionality, including reverse proxying, load balancing, and dynamic virtual hosting. It's designed with security in mind, implementing modern web standards by default. While it may not match the raw performance of servers like Nginx in extremely high-load scenarios, Caddy's simplicity, built-in security features, and low resource usage make it an attractive choice for many web hosting needs, particularly for smaller to medium-sized projects or developers seeking a hassle-free server setup.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "caddyserver/caddy",
"title": "caddyserver/caddy - Caddy on GitHub",
"url": "https://github.com/caddyserver/caddy",
"type": "opensource"
},
@@ -1856,7 +1895,7 @@
"description": "Microsoft Internet Information Services (IIS) is a flexible, secure, and high-performance web server developed by Microsoft for hosting and managing web applications and services on Windows Server. IIS supports a variety of web technologies, including [ASP.NET](http://ASP.NET), PHP, and static content. It provides features such as request handling, authentication, SSL/TLS encryption, and URL rewriting. IIS also offers robust management tools, including a graphical user interface and command-line options, for configuring and monitoring web sites and applications. It is commonly used for deploying enterprise web applications and services in a Windows-based environment, offering integration with other Microsoft technologies and services.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Official Website",
"title": "Microsoft -IIS",
"url": "https://www.iis.net/",
"type": "article"
},
@@ -1942,7 +1981,7 @@
},
"xPvVwGQw28uMeLYIWn8yn": {
"title": "Memcached",
"description": "Memcached (pronounced variously mem-cash-dee or mem-cashed) is a general-purpose distributed memory-caching system. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source (such as a database or API) must be read. Memcached is free and open-source software, licensed under the Revised BSD license. Memcached runs on Unix-like operating systems (Linux and macOS) and on Microsoft Windows. It depends on the `libevent` library. Memcached's APIs provide a very large hash table distributed across multiple machines. When the table is full, subsequent inserts cause older data to be purged in the least recently used (LRU) order. Applications using Memcached typically layer requests and additions into RAM before falling back on a slower backing store, such as a database.\n\nMemcached has no internal mechanism to track misses which may happen. However, some third-party utilities provide this functionality.\n\nVisit the following resources to learn more:",
"description": "Memcached (pronounced variously mem-cash-dee or mem-cashed) is a general-purpose distributed memory-caching system. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source (such as a database or API) must be read. Memcached is free and open-source software, licensed under the Revised BSD license. Memcached runs on Unix-like operating systems (Linux and macOS) and on Microsoft Windows. It depends on the `libevent` library. Memcached's APIs provide a very large hash table distributed across multiple machines. When the table is full, subsequent inserts cause older data to be purged in the least recently used (LRU) order. Applications using Memcached typically layer requests and additions into RAM before falling back on a slower backing store, such as a database.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "memcached/memcached",
@@ -2091,7 +2130,7 @@
"type": "article"
},
{
"title": "Backpressure explained — the resisted flow of data through software",
"title": "Backpressure explained — The Resisted Flow of Data through Software",
"url": "https://medium.com/@jayphelps/backpressure-explained-the-flow-of-data-through-software-2350b3e77ce7",
"type": "article"
},
@@ -2136,7 +2175,7 @@
},
"f7iWBkC0X7yyCoP_YubVd": {
"title": "Migration Strategies",
"description": "Migration strategies involve planning and executing the transition of applications, data, or infrastructure from one environment to another, such as from on-premises systems to the cloud or between different cloud providers. Key strategies include:\n\n1. **Rehost (Lift and Shift)**: Moving applications as-is to the new environment with minimal changes, which is often the quickest but may not fully leverage new platform benefits.\n2. **Replatform**: Making some optimizations or changes to adapt applications for the new environment, enhancing performance or scalability while retaining most of the existing architecture.\n3. **Refactor**: Redesigning and modifying applications to optimize for the new environment, often taking advantage of new features and improving functionality or performance.\n4. **Repurchase**: Replacing existing applications with new, often cloud-based, solutions that better meet current needs.\n5. **Retain**: Keeping certain applications or systems in their current environment due to specific constraints or requirements.\n6. **Retire**: Decommissioning applications that are no longer needed or are redundant.\n\nEach strategy has its own trade-offs in terms of cost, complexity, and benefits, and the choice depends on factors like the applications architecture, business needs, and resource availability.\n\nVisit the following resources to learn more:",
"description": "Migration strategies involve planning and executing the transition of applications, data, or infrastructure from one environment to another, such as from on-premises systems to the cloud or between different cloud providers. Key strategies include:\n\n1. **Rehost (Lift and Shift)**: Moving applications as-is to the new environment with minimal changes, which is often the quickest but may not fully leverage new platform benefits.\n2. **Replatform**: Making some optimizations or changes to adapt applications for the new environment, enhancing performance or scalability while retaining most of the existing architecture.\n3. **Refactor**: Redesigning and modifying applications to optimize for the new environment, often taking advantage of new features and improving functionality or performance.\n4. **Repurchase**: Replacing existing applications with new, often cloud-based, solutions that better meet current needs.\n5. **Retain**: Keeping certain applications or systems in their current environment due to specific constraints or requirements.\n6. **Retire**: Decommissioning applications that are no longer needed or are redundant.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Databases as a Challenge for Continuous Delivery",
@@ -2152,7 +2191,7 @@
},
"osQlGGy38xMcKLtgZtWaZ": {
"title": "Types of Scaling",
"description": "Horizontal scaling (scaling out/in) involves adding or removing instances of resources, such as servers or containers, to handle increased or decreased loads. It distributes the workload across multiple instances to improve performance and redundancy. This method enhances the system's capacity by expanding the number of nodes in a distributed system.\n\nVertical scaling (scaling up/down) involves increasing or decreasing the resources (CPU, memory, storage) of a single instance or server to handle more load or reduce capacity. This method improves performance by upgrading the existing hardware or virtual machine but has limits based on the maximum capacity of the individual resource.\n\nBoth approaches have their advantages: horizontal scaling offers better fault tolerance and flexibility, while vertical scaling is often simpler to implement but can be limited by the hardware constraints of a single machine.\n\nVisit the following resources to learn more:",
"description": "Horizontal scaling (scaling out/in) involves adding or removing instances of resources, such as servers or containers, to handle increased or decreased loads. It distributes the workload across multiple instances to improve performance and redundancy. This method enhances the system's capacity by expanding the number of nodes in a distributed system.\n\nVertical scaling (scaling up/down) involves increasing or decreasing the resources (CPU, memory, storage) of a single instance or server to handle more load or reduce capacity. This method improves performance by upgrading the existing hardware or virtual machine but has limits based on the maximum capacity of the individual resource.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Horizontal vs Vertical Scaling",
@@ -2207,7 +2246,7 @@
"description": "Monitoring involves continuously observing and tracking the performance, availability, and health of systems, applications, and infrastructure. It typically includes collecting and analyzing metrics, logs, and events to ensure systems are operating within desired parameters. Monitoring helps detect anomalies, identify potential issues before they escalate, and provides insights into system behavior. It often involves tools and platforms that offer dashboards, alerts, and reporting features to facilitate real-time visibility and proactive management. Effective monitoring is crucial for maintaining system reliability, performance, and for supporting incident response and troubleshooting.\n\nA few popular tools are Grafana, Sentry, Mixpanel, NewRelic.",
"links": [
{
"title": "Top monitoring tools 2024",
"title": "Top Monitoring Tools",
"url": "https://thectoclub.com/tools/best-application-monitoring-software/",
"type": "article"
},
@@ -2307,9 +2346,9 @@
"description": "Bcrypt is a password-hashing function designed to securely hash passwords for storage in databases. Created by Niels Provos and David Mazières, it's based on the Blowfish cipher and incorporates a salt to protect against rainbow table attacks. Bcrypt's key feature is its adaptive nature, allowing for the adjustment of its cost factor to make it slower as computational power increases, thus maintaining resistance against brute-force attacks over time. It produces a fixed-size hash output, typically 60 characters long, which includes the salt and cost factor. Bcrypt is widely used in many programming languages and frameworks due to its security strength and relative ease of implementation. Its deliberate slowness in processing makes it particularly effective for password storage, where speed is not a priority but security is paramount.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "bcrypts npm package",
"title": "bcrypt",
"url": "https://www.npmjs.com/package/bcrypt",
"type": "article"
"type": "opensource"
},
{
"title": "Understanding bcrypt",
@@ -2429,7 +2468,7 @@
},
"TZ0BWOENPv6pQm8qYB8Ow": {
"title": "Server Security",
"description": "Server security involves protecting servers from threats and vulnerabilities to ensure the confidentiality, integrity, and availability of the data and services they manage. Key practices include:\n\n1. **Patch Management**: Regularly updating software and operating systems to fix vulnerabilities.\n2. **Access Control**: Implementing strong authentication mechanisms and restricting access to authorized users only.\n3. **Firewalls and Intrusion Detection**: Using firewalls to block unauthorized access and intrusion detection systems to monitor and respond to suspicious activities.\n4. **Encryption**: Encrypting data both in transit and at rest to protect sensitive information from unauthorized access.\n5. **Security Hardening**: Configuring servers with minimal services and features, applying security best practices to reduce the attack surface.\n6. **Regular Backups**: Performing regular backups to ensure data can be restored in case of loss or corruption.\n7. **Monitoring and Logging**: Continuously monitoring server activity and maintaining logs for auditing and detecting potential security incidents.\n\nEffective server security is crucial for safeguarding against attacks, maintaining system stability, and protecting sensitive data.\n\nLearn more from the following resources:",
"description": "Server security involves protecting servers from threats and vulnerabilities to ensure the confidentiality, integrity, and availability of the data and services they manage. Key practices include:\n\n1. **Patch Management**: Regularly updating software and operating systems to fix vulnerabilities.\n2. **Access Control**: Implementing strong authentication mechanisms and restricting access to authorized users only.\n3. **Firewalls and Intrusion Detection**: Using firewalls to block unauthorized access and intrusion detection systems to monitor and respond to suspicious activities.\n4. **Encryption**: Encrypting data both in transit and at rest to protect sensitive information from unauthorized access.\n5. **Security Hardening**: Configuring servers with minimal services and features, applying security best practices to reduce the attack surface.\n6. **Regular Backups**: Performing regular backups to ensure data can be restored in case of loss or corruption.\n7. **Monitoring and Logging**: Continuously monitoring server activity and maintaining logs for auditing and detecting potential security incidents.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is a hardened server?",
@@ -2600,7 +2639,7 @@
},
"hkxw9jPGYphmjhTjw8766": {
"title": "DNS and how it works?",
"description": "DNS (Domain Name System) is a hierarchical, decentralized naming system for computers, services, or other resources connected to the Internet or a private network. It translates human-readable domain names (like [www.example.com](http://www.example.com)) into IP addresses (like 192.0.2.1) that computers use to identify each other. DNS servers distributed worldwide work together to resolve these queries, forming a global directory service. The system uses a tree-like structure with root servers at the top, followed by top-level domain servers (.com, .org, etc.), authoritative name servers for specific domains, and local DNS servers. DNS is crucial for the functioning of the Internet, enabling users to access websites and services using memorable names instead of numerical IP addresses. It also supports email routing, service discovery, and other network protocols.\n\nVisit the following resources to learn more:",
"description": "DNS (Domain Name System) is a hierarchical, decentralized naming system for computers, services, or other resources connected to the Internet or a private network. It translates human-readable domain names (like `www.example.com`) into IP addresses (like 192.0.2.1) that computers use to identify each other. DNS servers distributed worldwide work together to resolve these queries, forming a global directory service. The system uses a tree-like structure with root servers at the top, followed by top-level domain servers (.com, .org, etc.), authoritative name servers for specific domains, and local DNS servers. DNS is crucial for the functioning of the Internet, enabling users to access websites and services using memorable names instead of numerical IP addresses. It also supports email routing, service discovery, and other network protocols.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "What is DNS?",
@@ -2811,7 +2850,7 @@
"description": "OpenID is an open standard for decentralized authentication that allows users to log in to multiple websites and applications using a single set of credentials, managed by an identity provider (IdP). It enables users to authenticate their identity through an external service, simplifying the login process and reducing the need for multiple usernames and passwords. OpenID typically works in conjunction with OAuth 2.0 for authorization, allowing users to grant access to their data while maintaining security. This approach enhances user convenience and streamlines identity management across various platforms.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Official Website",
"title": "OpenID Website",
"url": "https://openid.net/",
"type": "article"
},
@@ -2839,7 +2878,7 @@
},
"UCHtaePVxS-0kpqlYxbfC": {
"title": "SAML",
"description": "Security Assertion Markup Language (SAML)\n-----------------------------------------\n\nSecurity Assertion Markup Language (SAML) is an XML-based framework used for single sign-on (SSO) and identity federation, enabling users to authenticate once and gain access to multiple applications or services. It allows for the exchange of authentication and authorization data between an identity provider (IdP) and a service provider (SP). SAML assertions are XML documents that contain user identity information and attributes, and are used to convey authentication credentials and permissions. By implementing SAML, organizations can streamline user management, enhance security through centralized authentication, and simplify the user experience by reducing the need for multiple logins across different systems.\n\nLearn more from the following resources:",
"description": "Security Assertion Markup Language (SAML) is an XML-based framework used for single sign-on (SSO) and identity federation, enabling users to authenticate once and gain access to multiple applications or services. It allows for the exchange of authentication and authorization data between an identity provider (IdP) and a service provider (SP). SAML assertions are XML documents that contain user identity information and attributes, and are used to convey authentication credentials and permissions. By implementing SAML, organizations can streamline user management, enhance security through centralized authentication, and simplify the user experience by reducing the need for multiple logins across different systems.\n\nLearn more from the following resources:",
"links": [
{
"title": "SAML Explained in Plain English",
@@ -2884,17 +2923,17 @@
"description": "Solr is an open-source, highly scalable search platform built on Apache Lucene, designed for full-text search, faceted search, and real-time indexing. It provides powerful features for indexing and querying large volumes of data with high performance and relevance. Solr supports complex queries, distributed searching, and advanced text analysis, including tokenization and stemming. It offers features such as faceted search, highlighting, and geographic search, and is commonly used for building search engines and data retrieval systems in various applications, from e-commerce to content management.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "apache/solr",
"title": "Solr on Github",
"url": "https://github.com/apache/solr",
"type": "opensource"
},
{
"title": "Official Website",
"title": "Solr Website",
"url": "https://solr.apache.org/",
"type": "article"
},
{
"title": "Official Documentation",
"title": "Solr Documentation",
"url": "https://solr.apache.org/resources.html#documentation",
"type": "article"
},
@@ -2910,7 +2949,7 @@
"description": "Real-time data refers to information that is processed and made available immediately or with minimal delay, allowing users or systems to react promptly to current conditions. This type of data is essential in applications requiring immediate updates and responses, such as financial trading platforms, online gaming, real-time analytics, and monitoring systems. Real-time data processing involves capturing, analyzing, and delivering information as it is generated, often using technologies like stream processing frameworks (e.g., Apache Kafka, Apache Flink) and low-latency databases. Effective real-time data systems can handle high-speed data flows, ensuring timely and accurate decision-making.\n\nLearn more from the following resources:",
"links": [
{
"title": "Real-time data - Wiki",
"title": "Real-time Data - Wiki",
"url": "https://en.wikipedia.org/wiki/Real-time_data",
"type": "article"
},
@@ -2942,7 +2981,7 @@
"description": "Short polling is a technique where a client periodically sends requests to a server at regular intervals to check for updates or new data. The server responds with the current state or any changes since the last request. While simple to implement and compatible with most HTTP infrastructures, short polling can be inefficient due to the frequent network requests and potential for increased latency in delivering updates. It contrasts with long polling and WebSockets, which offer more efficient mechanisms for real-time communication. Short polling is often used when real-time requirements are less stringent and ease of implementation is a priority.\n\nLearn more from the following resources:",
"links": [
{
"title": "Amazon SQS short and long polling",
"title": "Amazon SQS Short and Long Polling",
"url": "https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html",
"type": "article"
},
@@ -2984,7 +3023,7 @@
"description": "Amazon DynamoDB is a fully managed, serverless NoSQL database service provided by Amazon Web Services (AWS). It offers high-performance, scalable, and flexible data storage for applications of any scale. DynamoDB supports both key-value and document data models, providing fast and predictable performance with seamless scalability. It features automatic scaling, built-in security, backup and restore options, and global tables for multi-region deployment. DynamoDB excels in handling high-traffic web applications, gaming backends, mobile apps, and IoT solutions. It offers consistent single-digit millisecond latency at any scale and supports both strongly consistent and eventually consistent read models. With its integration into the AWS ecosystem, on-demand capacity mode, and support for transactions, DynamoDB is widely used for building highly responsive and scalable applications, particularly those with unpredictable workloads or requiring low-latency data access.\n\nLearn more from the following resources:",
"links": [
{
"title": "AWS DynamoDB Website",
"title": "AWS DynamoDB",
"url": "https://aws.amazon.com/dynamodb/",
"type": "article"
},
@@ -3002,10 +3041,10 @@
},
"RyJFLLGieJ8Xjt-DlIayM": {
"title": "Firebase",
"description": "Firebase is a comprehensive mobile and web application development platform owned by Google. It provides a suite of cloud-based services that simplify app development, hosting, and scaling. Key features include real-time database, cloud storage, authentication, hosting, cloud functions, and analytics. Firebase offers real-time synchronization, allowing data to be updated across clients instantly. Its authentication service supports multiple providers, including email/password, social media logins, and phone authentication. The platform's serverless architecture enables developers to focus on front-end development without managing backend infrastructure. Firebase also provides tools for app testing, crash reporting, and performance monitoring. While it excels in rapid prototyping and building real-time applications, its proprietary nature and potential for vendor lock-in are considerations for large-scale or complex applications. Firebase's ease of use and integration with Google Cloud Platform make it popular for startups and projects requiring quick deployment.\n\nLearn more from the following resources:",
"description": "Firebase is a comprehensive mobile and web application development platform owned by Google. It provides a suite of cloud-based services that simplify app development, hosting, and scaling. Key features include real-time database, cloud storage, authentication, hosting, cloud functions, and analytics. Firebase offers real-time synchronization, allowing data to be updated across clients instantly. Its authentication service supports multiple providers, including email/password, social media logins, and phone authentication. The platform's serverless architecture enables developers to focus on front-end development without managing backend infrastructure. Firebase also provides tools for app testing, crash reporting, and performance monitoring.\n\nLearn more from the following resources:",
"links": [
{
"title": "The ultimate guide to Firebase",
"title": "The Ultimate Guide to Firebase",
"url": "https://fireship.io/lessons/the-ultimate-beginners-guide-to-firebase/",
"type": "course"
},
@@ -3042,7 +3081,7 @@
"description": "SQLite is a lightweight, serverless, self-contained SQL database engine that is designed for simplicity and efficiency. It is widely used in embedded systems and applications where a full-featured database server is not required, such as mobile apps, desktop applications, and small to medium-sized websites. SQLite stores data in a single file, which makes it easy to deploy and manage. It supports standard SQL queries and provides ACID (Atomicity, Consistency, Isolation, Durability) compliance to ensure data integrity. SQLites small footprint, minimal configuration, and ease of use make it a popular choice for applications needing a compact, high-performance database solution.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "SQLite website",
"title": "SQLite",
"url": "https://www.sqlite.org/index.html",
"type": "article"
},
@@ -3104,7 +3143,7 @@
"type": "video"
},
{
"title": "What is time series data?",
"title": "What is Time Series Data?",
"url": "https://www.youtube.com/watch?v=Se5ipte9DMY",
"type": "video"
}
@@ -3203,5 +3242,21 @@
"type": "video"
}
]
},
"ZsZvStCvKwFhlBYe9HGhl": {
"title": "Migrations",
"description": "Database migrations are a version-controlled way to manage and apply incremental changes to a database schema over time, allowing developers to modify the database structure (e.g., adding tables, altering columns) without affecting existing data. They ensure that the database evolves alongside application code in a consistent, repeatable manner across environments (e.g., development, testing, production), while maintaining compatibility with older versions of the schema. Migrations are typically written in SQL or a database-agnostic language, and are executed using migration tools like Liquibase, Flyway, or built-in ORM features such as Django or Rails migrations.\n\nLearn more from the following resources:",
"links": [
{
"title": "What are Database Migrations?",
"url": "https://www.prisma.io/dataguide/types/relational/what-are-database-migrations",
"type": "article"
},
{
"title": "Database Migrations for Beginners",
"url": "https://www.youtube.com/watch?v=dJDBP7pPA-o",
"type": "video"
}
]
}
}

View File

@@ -372,16 +372,6 @@
"url": "https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD",
"type": "course"
},
{
"title": "CS 61B Lecture 7: Linked Lists I",
"url": "https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0",
"type": "article"
},
{
"title": "CS 61B Lecture 7: Linked Lists II",
"url": "https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w",
"type": "article"
},
{
"title": "Linked List Data Structure | Illustrated Data Structures",
"url": "https://www.youtube.com/watch?v=odW9FU8jPRQ",
@@ -392,6 +382,16 @@
"url": "https://www.youtube.com/watch?v=F8AbOfQwl1c",
"type": "video"
},
{
"title": "CS 61B Lecture 7: Linked Lists I",
"url": "https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0",
"type": "video"
},
{
"title": "CS 61B Lecture 7: Linked Lists II",
"url": "https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w",
"type": "video"
},
{
"title": "Why you should avoid Linked Lists?",
"url": "https://www.youtube.com/watch?v=YQs6IC-vgmo",
@@ -511,16 +511,16 @@
"url": "https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV",
"type": "course"
},
{
"title": "UC Berkeley CS61B - Linear and Multi-Dim Arrays (Start watching from 15m 32s)",
"url": "https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE",
"type": "article"
},
{
"title": "Array Data Structure | Illustrated Data Structures",
"url": "https://www.youtube.com/watch?v=QJNwK2uJyGs",
"type": "video"
},
{
"title": "UC Berkeley CS61B - Linear and Multi-Dim Arrays (Start watching from 15m 32s)",
"url": "https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE",
"type": "video"
},
{
"title": "Dynamic and Static Arrays",
"url": "https://www.youtube.com/watch?v=PEnFFiQe1pM&list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu&index=6",
@@ -3786,7 +3786,7 @@
},
"7r7o8pYhFHVAJIv0wNT6X": {
"title": "Hashing / Encryption / Encoding",
"description": "Hashing is a one-way function that takes an input and produces a fixed-length output. The output is called a hash. The hash is a unique representation of the input. The hash is deterministic, meaning that the same input will always produce the same hash. The hash is irreversible, meaning that it is impossible to go from the hash back to the original input. The hash is collision-resistant, meaning that it is impossible to find two different inputs that produce the same hash.\n\nEncryption is a two-way function that takes an input and produces an output. The output is called ciphertext. The ciphertext is a unique representation of the input. The ciphertext is deterministic, meaning that the same input will always produce the same ciphertext. The ciphertext is reversible, meaning that it is possible to go from the ciphertext back to the original input. The ciphertext is collision-resistant, meaning that it is impossible to find two different inputs that produce the same ciphertext.\n\nEncoding is a two-way function that takes an input and produces an output. The output is called encoded text. The encoded text is a unique representation of the input. The encoded text is deterministic, meaning that the same input will always produce the same encoded text. The encoded text is reversible, meaning that it is possible to go from the encoded text back to the original input. The encoded text is not collision-resistant, meaning that it is possible to find two different inputs that produce the same encoded text.\n\nVisit the following resources to learn more:",
"description": "Hashing is a one-way function that takes an input and produces a fixed-length output. The output is called a hash. The hash is a unique representation of the input. The hash is deterministic, meaning that the same input will always produce the same hash. The hash is irreversible, meaning that it is impossible to go from the hash back to the original input. The hash is not collision-resistant, meaning that it is possible to find two different inputs that produce the same hash.\n\nEncryption is a two-way function that takes an input and produces an output. The output is called ciphertext. The ciphertext is a unique representation of the input. The ciphertext is deterministic, meaning that the same input will always produce the same ciphertext. The ciphertext is reversible, meaning that it is possible to go from the ciphertext back to the original input. The ciphertext is collision-resistant, meaning that it is impossible to find two different inputs that produce the same ciphertext.\n\nEncoding is a two-way function that takes an input and produces an output. The output is called encoded text. The encoded text is a unique representation of the input. The encoded text is deterministic, meaning that the same input will always produce the same encoded text. The encoded text is reversible, meaning that it is possible to go from the encoded text back to the original input. The encoded text is collision-resistant, meaning that it is impossible to find two different inputs that produce the same encoded text.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Explore top posts about Encryption",

View File

@@ -766,7 +766,7 @@
},
"dJ0NUsODFhk52W2zZxoPh": {
"title": "SSL and TLS Basics",
"description": "Single Sign-On (SSO) is an authentication method that allows users to access multiple applications or systems with one set of login credentials. It enables users to log in once and gain access to various connected systems without re-entering credentials. SSO enhances user experience by reducing password fatigue, streamlines access management for IT departments, and can improve security by centralizing authentication controls. It typically uses protocols like SAML, OAuth, or OpenID Connect to securely share authentication information across different domains. While SSO offers convenience and can strengthen security when implemented correctly, it also presents a single point of failure if compromised, making robust security measures for the SSO system critical.\n\nLearn more from the following resources:",
"description": "Secure Sockets Layer (SSL) and Transport Layer Security (TLS) are cryptographic protocols used to provide security in internet communications. These protocols encrypt the data that is transmitted over the web, so anyone who tries to intercept packets will not be able to interpret the data. One difference that is important to know is that SSL is now deprecated due to security flaws, and most modern web browsers no longer support it. But TLS is still secure and widely supported, so preferably use TLS.\n\nLearn more from the following resources:",
"links": [
{
"title": "Whats the Difference Between SSL and TLS?",
@@ -3223,7 +3223,7 @@
},
"6ILPXeUDDmmYRiA_gNTSr": {
"title": "SSL vs TLS",
"description": "Single Sign-On (SSO) is an authentication method that allows users to access multiple applications or systems with one set of login credentials. It enables users to log in once and gain access to various connected systems without re-entering credentials. SSO enhances user experience by reducing password fatigue, streamlines access management for IT departments, and can improve security by centralizing authentication controls. It typically uses protocols like SAML, OAuth, or OpenID Connect to securely share authentication information across different domains. While SSO offers convenience and can strengthen security when implemented correctly, it also presents a single point of failure if compromised, making robust security measures for the SSO system critical.\n\nLearn more from the following resources:",
"description": "**SSL (Secure Sockets Layer)** is a cryptographic protocol used to secure communications by encrypting data transmitted between clients and servers. SSL establishes a secure connection through a process known as the handshake, during which the client and server agree on cryptographic algorithms, exchange keys, and authenticate the server with a digital certificate. SSLs security is considered weaker compared to its successor, TLS, due to vulnerabilities in its older encryption methods and lack of modern cryptographic techniques.\n\n**TLS (Transport Layer Security)** improves upon SSL by using stronger encryption algorithms, more secure key exchange mechanisms, and enhanced certificate validation. Like SSL, TLS begins with a handshake where the client and server agree on a protocol version and cipher suite, exchange keys, and verify certificates. However, TLS incorporates additional features like Perfect Forward Secrecy (PFS) and more secure hashing algorithms, making it significantly more secure than SSL for modern communications.\n\nLearn more from the following resources:",
"links": [
{
"title": "Whats the Difference Between SSL and TLS?",

View File

@@ -117,6 +117,11 @@
"title": "Rust",
"description": "Rust is a systems programming language that focuses on safety, concurrency, and performance. Developed by Mozilla Research, Rust combines low-level control over system resources with high-level abstractions, preventing common programming errors like null or dangling pointer references at compile-time. It features a borrow checker for managing memory and preventing data races, making it ideal for building reliable and efficient software. Rust's zero-cost abstractions, pattern matching, and trait-based generics offer powerful tools for expressing complex ideas clearly. While primarily used for systems programming, web assembly, and game development, Rust's growing ecosystem supports various domains. Its emphasis on memory safety without sacrificing performance makes it increasingly popular for developing secure, high-performance applications in fields ranging from operating systems to web services.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Rust by Practice - Interactive Rust Course",
"url": "https://practice.course.rs/",
"type": "course"
},
{
"title": "The Rust Programming Language - online book",
"url": "https://doc.rust-lang.org/book/",
@@ -189,9 +194,14 @@
"title": "Operating System",
"description": "Operating systems (OS) are fundamental software that manage computer hardware and software resources, providing common services for computer programs. They act as an intermediary between applications and hardware, handling tasks like memory management, process scheduling, file system management, and device control. Common desktop operating systems include Microsoft Windows, macOS, and various Linux distributions. Mobile devices typically run iOS or Android. Server environments often use Linux distributions like Ubuntu Server, Red Hat Enterprise Linux, or Windows Server. Each OS type offers distinct features, user interfaces, and compatibility with different software and hardware. Operating systems play a crucial role in system security, performance optimization, and providing a consistent user experience across diverse computing devices and environments.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Operating Systems - Wiki",
"url": "https://en.wikipedia.org/wiki/Operating_system",
"type": "article"
},
{
"title": "All you need to know about OS.",
"url": "https://www.javatpoint.com/os-tutorial",
"url": "https://www.javatpoint.com/operating-system",
"type": "article"
},
{
@@ -205,7 +215,7 @@
"type": "video"
},
{
"title": "Operating Systems!",
"title": "Operating Systems",
"url": "https://www.youtube.com/watch?v=vBURTt97EkA&list=PLBlnK6fEyqRiVhbXDGLXDk_OQAeuVcp2O",
"type": "video"
}
@@ -636,6 +646,11 @@
"title": "Git",
"description": "Git is a distributed version control system designed to track changes in source code during software development. It allows multiple developers to work on the same project simultaneously, maintaining a complete history of modifications. Git features local repositories on each developer's machine, enabling offline work and fast operations. It supports non-linear development through branching and merging, facilitating parallel work streams. Git's distributed nature enhances collaboration, backup, and experimentation. Key concepts include commits, branches, merges, and remote repositories. With its speed, flexibility, and robust branching and merging capabilities, Git has become the standard for version control in modern software development, powering platforms like GitHub and GitLab.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Git by Example - Learn Version Control with Bite-sized Lessons",
"url": "https://antonz.org/git-by-example/",
"type": "course"
},
{
"title": "Learn Git & GitHub",
"url": "https://roadmap.sh/git-github",
@@ -812,6 +827,11 @@
"url": "https://www.cisco.com/c/en_in/products/security/firewalls/what-is-a-firewall.html",
"type": "article"
},
{
"title": "Uncomplicated Firewall (UFW)",
"url": "https://dev.to/coder7475/uncomplicated-firewall-ufw-1638",
"type": "article"
},
{
"title": "Why do we need Firewalls?",
"url": "https://www.tutorialspoint.com/what-is-a-firewall-and-why-do-you-need-one",
@@ -979,6 +999,11 @@
"url": "https://www.cloudflare.com/en-gb/learning/performance/what-is-load-balancing/",
"type": "article"
},
{
"title": "NGINX Reverse Proxy and Load Balancing",
"url": "https://dzone.com/articles/nginx-reverse-proxy-and-load-balancing",
"type": "article"
},
{
"title": "What is a Load Balancer?",
"url": "https://www.youtube.com/watch?v=sCR3SAVdyCc",
@@ -1000,6 +1025,11 @@
"url": "https://www.nginx.com/resources/glossary/reverse-proxy-server/",
"type": "article"
},
{
"title": "Understanding NGINX as a Reverse Proxy",
"url": "https://medium.com/globant/understanding-nginx-as-a-reverse-proxy-564f76e856b2",
"type": "article"
},
{
"title": "Proxy vs Reverse Proxy (Real-world Examples)",
"url": "https://www.youtube.com/watch?v=4NB0NDtOwIQ",
@@ -1827,21 +1857,21 @@
},
"1oYvpFG8LKT1JD6a_9J0m": {
"title": "Provisioning",
"description": "Prometheus is an open-source systems monitoring and alerting toolkit designed for reliability and scalability. It features a multi-dimensional data model, a flexible query language (PromQL), and an efficient time series database. Prometheus collects metrics from configured targets at given intervals, evaluates rule expressions, displays results, and can trigger alerts when specified conditions are observed. It operates on a pull model, scraping metrics from HTTP endpoints, and supports service discovery for dynamic environments. Prometheus is particularly well-suited for monitoring microservices and containerized environments, integrating seamlessly with systems like Kubernetes. Its ecosystem includes various exporters for third-party systems and a built-in alert manager. Widely adopted in cloud-native architectures, Prometheus is a core component of modern observability stacks, often used alongside tools like Grafana for visualization.\n\nVisit the following resources to learn more:",
"description": "Provisioning refers to the process of setting up and configuring the necessary IT infrastructure to support an application or service. This includes allocating and preparing resources such as servers, storage, networking, and software environments. Provisioning can be done manually, but in modern DevOps practices, it's typically automated using tools like Terraform, Pulumi, or CloudFormation. These tools allow for infrastructure-as-code, where the entire provisioning process is defined in version-controlled scripts or templates. This approach enables consistent, repeatable deployments across different environments, reduces human error, and facilitates rapid scaling and disaster recovery.\n\nLearn more from the following resources:",
"links": [
{
"title": "Prometheus Website",
"url": "https://prometheus.io/",
"title": "What is provisioning? - RedHat",
"url": "https://www.redhat.com/en/topics/automation/what-is-provisioning",
"type": "article"
},
{
"title": "Explore top posts about Prometheus",
"url": "https://app.daily.dev/tags/prometheus?ref=roadmapsh",
"title": "What is provisioning? - IBM",
"url": "https://www.ibm.com/topics/provisioning",
"type": "article"
},
{
"title": "Introduction to the Prometheus Monitoring System | Key Concepts and Features",
"url": "https://www.youtube.com/watch?v=STVMGrYIlfg",
"title": "Open Answers: What is provisioning?",
"url": "https://www.youtube.com/watch?v=hWvDlmhASpk",
"type": "video"
}
]

File diff suppressed because it is too large Load Diff

View File

@@ -262,12 +262,12 @@
},
{
"title": "React Website",
"url": "https://reactjs.org/",
"url": "https://react.dev/",
"type": "article"
},
{
"title": "Official Getting Started",
"url": "https://reactjs.org/tutorial/tutorial.html",
"url": "https://react.dev/learn/tutorial-tic-tac-toe",
"type": "article"
},
{

View File

@@ -267,6 +267,11 @@
"url": "https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging",
"type": "article"
},
{
"title": "Learn Git Branching",
"url": "https://learngitbranching.js.org/",
"type": "article"
},
{
"title": "Git Branches Tutorial",
"url": "https://www.youtube.com/watch?v=e2IbNHi4uCI",

View File

@@ -112,8 +112,29 @@
},
"IduGSdUa2Fi7VFMLKgmsS": {
"title": "iOS Architecture",
"description": "",
"links": []
"description": "iOS architecture refers to the design principles and patterns used to build iOS applications. It focuses on how to structure code, manage data, and ensure a smooth user experience. These architectural patterns help developers create maintainable, scalable, and testable applications while following best practices specific to iOS development. Use cases of these architectures may vary according to the requirements of the application. For example, MVC is used for simple apps, while MVVM is considered when the app is large and complex.\n\nLearn more from the following resources:",
"links": [
{
"title": "Model-View-Controller Pattern in swift (MVC) for Beginners",
"url": "https://ahmedaminhassanismail.medium.com/model-view-controller-pattern-in-swift-mvc-for-beginners-35db8d479832",
"type": "article"
},
{
"title": "MVVM in iOS Swift",
"url": "https://medium.com/@zebayasmeen76/mvvm-in-ios-swift-6afb150458fd",
"type": "article"
},
{
"title": "MVC Design Pattern Explained with Example",
"url": "https://youtu.be/sbYaWJEAYIY?t=2",
"type": "video"
},
{
"title": "MVVM Design Pattern Explained with Example",
"url": "https://www.youtube.com/watch?v=sLHVxnRS75w",
"type": "video"
}
]
},
"IdGdLNgJI3WmONEFsMq-d": {
"title": "Core OS",

View File

@@ -1,13 +1,18 @@
{
"_7uvOebQUI4xaSwtMjpEd": {
"title": "Programming Fundamentals",
"description": "Programming is the key requirement for MLOps. You need to be proficient in atleast one programming language. Python is the most popular language for MLOps.",
"description": "ML programming fundamentals encompass the essential skills and concepts needed to develop machine learning models effectively. Key aspects include understanding data structures and algorithms, as well as proficiency in programming languages commonly used in ML, such as Python and R. Familiarity with libraries and frameworks like TensorFlow, PyTorch, and scikit-learn is crucial for implementing machine learning algorithms and building models. Additionally, concepts such as data preprocessing, feature engineering, model evaluation, and hyperparameter tuning are vital for optimizing performance. A solid grasp of statistics and linear algebra is also important, as these mathematical foundations underpin many ML techniques, enabling practitioners to analyze data and interpret model results accurately.",
"links": []
},
"Vh81GnOUOZvDOlOyI5PwT": {
"title": "Python",
"description": "Python is an interpreted high-level general-purpose programming language. Its design philosophy emphasizes code readability with its significant use of indentation. Its language constructs as well as its object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects. Python is dynamically-typed and garbage-collected. It supports multiple programming paradigms, including structured (particularly, procedural), object-oriented and functional programming. Python is often described as a \"batteries included\" language due to its comprehensive standard library.\n\nTo start learning Python, here are some useful resources:\n\nRemember, practice is key, and the more you work with Python, the more you'll appreciate its utility in the world of cyber security.",
"description": "Python is an interpreted high-level general-purpose programming language. Its design philosophy emphasizes code readability with its significant use of indentation. Its language constructs as well as its object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects. Python is dynamically-typed and garbage-collected. It supports multiple programming paradigms, including structured (particularly, procedural), object-oriented and functional programming. Python is often described as a \"batteries included\" language due to its comprehensive standard library.\n\nLearn more from the following resources:",
"links": [
{
"title": "Python Roadmap",
"url": "https://roadmap.sh/python",
"type": "article"
},
{
"title": "Python.org",
"url": "https://www.python.org/",
@@ -32,7 +37,7 @@
},
"vdVq3RQvQF3mF8PQc6DMg": {
"title": "Go",
"description": "Go is an open source programming language supported by Google. Go can be used to write cloud services, CLI tools, used for API development, and much more.\n\nVisit the following resources to learn more:",
"description": "Go, also known as Golang, is an open-source programming language developed by Google that emphasizes simplicity, efficiency, and strong concurrency support. Designed for modern software development, Go features a clean syntax, garbage collection, and built-in support for concurrent programming through goroutines and channels, making it well-suited for building scalable, high-performance applications, especially in cloud computing and microservices architectures. Go's robust standard library and tooling ecosystem, including a powerful package manager and testing framework, further streamline development processes, promoting rapid application development and deployment. Visit the following resources to learn more:",
"links": [
{
"title": "Visit Dedicated Go Roadmap",
@@ -49,16 +54,6 @@
"url": "https://go.dev/doc/",
"type": "article"
},
{
"title": "Go by Example - annotated example programs",
"url": "https://gobyexample.com/",
"type": "article"
},
{
"title": "W3Schools Go Tutorial ",
"url": "https://www.w3schools.com/go/",
"type": "article"
},
{
"title": "Making a RESTful JSON API in Go",
"url": "https://thenewstack.io/make-a-restful-json-api-go/",
@@ -75,16 +70,27 @@
"type": "article"
},
{
"title": "Go Class by Matt",
"url": "https://www.youtube.com/playlist?list=PLoILbKo9rG3skRCj37Kn5Zj803hhiuRK6",
"title": "Go Programming Course",
"url": "https://www.youtube.com/watch?v=un6ZyFkqFKo",
"type": "video"
}
]
},
"mMzqJF2KQ49TDEk5F3VAI": {
"title": "Bash",
"description": "Understanding bash is essential for MLOps tasks.\n\n* **Book Suggestion:** _The Linux Command Line, 2nd Edition_ by William E. Shotts",
"links": []
"description": "Bash (Bourne Again Shell) is a Unix shell and command language used for interacting with the operating system through a terminal. It allows users to execute commands, automate tasks via scripting, and manage system operations. As the default shell for many Linux distributions, it supports command-line utilities, file manipulation, process control, and text processing. Bash scripts can include loops, conditionals, and functions, making it a powerful tool for system administration, automation, and task scheduling.\n\nLearn more from the following resources:",
"links": [
{
"title": "bash-guide",
"url": "https://github.com/Idnan/bash-guide",
"type": "opensource"
},
{
"title": "Bash Scripting Course",
"url": "https://www.youtube.com/watch?v=tK9Oc6AEnR4",
"type": "video"
}
]
},
"oUhlUoWQQ1txx_sepD5ev": {
"title": "Version Control Systems",
@@ -104,8 +110,13 @@
},
"06T5CbZAGJU6fJhCmqCC8": {
"title": "Git",
"description": "[Git](https://git-scm.com/) is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.\n\nVisit the following resources to learn more:",
"description": "Git is a distributed version control system used to track changes in source code during software development. It enables multiple developers to collaborate on a project by managing versions of code, allowing for branching, merging, and tracking of revisions. Git ensures that changes are recorded with a complete history, enabling rollback to previous versions if necessary. It supports distributed workflows, meaning each developer has a complete local copy of the projects history, facilitating seamless collaboration, conflict resolution, and efficient management of code across different teams or environments.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Learn Git & GitHub",
"url": "https://roadmap.sh/git-github",
"type": "article"
},
{
"title": "Learn Git with Tutorials, News and Tips - Atlassian",
"url": "https://www.atlassian.com/git",
@@ -130,28 +141,23 @@
},
"7t7jSb3YgyWlhgCe8Se1I": {
"title": "GitHub",
"description": "GitHub is a provider of Internet hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features.\n\nVisit the following resources to learn more:",
"description": "GitHub is a web-based platform built on top of Git that provides version control, collaboration tools, and project management features for software development. It enables developers to host Git repositories, collaborate on code through pull requests, and review and track changes. GitHub also offers additional features like issue tracking, continuous integration, automated workflows, and documentation hosting. With its social coding environment, GitHub fosters open-source contributions and team collaboration, making it a central hub for many software development projects.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Learn Git & GitHub",
"url": "https://roadmap.sh/git-github",
"type": "article"
},
{
"title": "GitHub Website",
"url": "https://github.com",
"type": "opensource"
"type": "article"
},
{
"title": "GitHub Documentation",
"url": "https://docs.github.com/en/get-started/quickstart",
"type": "article"
},
{
"title": "How to Use Git in a Professional Dev Team",
"url": "https://ooloo.io/project/github-flow",
"type": "article"
},
{
"title": "Learn Git Branching",
"url": "https://learngitbranching.js.org/?locale=en_us",
"type": "article"
},
{
"title": "Explore top posts about GitHub",
"url": "https://app.daily.dev/tags/github?ref=roadmapsh",
@@ -161,28 +167,24 @@
"title": "What is GitHub?",
"url": "https://www.youtube.com/watch?v=w3jLJU7DT5E",
"type": "video"
},
{
"title": "Git vs. GitHub: Whats the difference?",
"url": "https://www.youtube.com/watch?v=wpISo9TNjfU",
"type": "video"
},
{
"title": "Git and GitHub for Beginners",
"url": "https://www.youtube.com/watch?v=RGOj5yH7evk",
"type": "video"
},
{
"title": "Git and GitHub - CS50 Beyond 2019",
"url": "https://www.youtube.com/watch?v=eulnSXkhE7I",
"type": "video"
}
]
},
"00GZcwe25QYi7rDzaOoMt": {
"title": "Cloud Computing",
"description": "**Cloud Computing** refers to the delivery of computing services over the internet rather than using local servers or personal devices. These services include servers, storage, databases, networking, software, analytics, and intelligence. Cloud Computing enables faster innovation, flexible resources, and economies of scale. There are various types of cloud computing such as public clouds, private clouds, and hybrids clouds. Furthermore, it's divided into different services like Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). These services differ mainly in the level of control an organization has over their data and infrastructures.",
"links": []
"description": "**Cloud Computing** refers to the delivery of computing services over the internet rather than using local servers or personal devices. These services include servers, storage, databases, networking, software, analytics, and intelligence. Cloud Computing enables faster innovation, flexible resources, and economies of scale. There are various types of cloud computing such as public clouds, private clouds, and hybrids clouds. Furthermore, it's divided into different services like Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). These services differ mainly in the level of control an organization has over their data and infrastructures.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is cloud computing?",
"url": "https://azure.microsoft.com/en-gb/resources/cloud-computing-dictionary/what-is-cloud-computing",
"type": "article"
},
{
"title": "What is Cloud Computing? | Amazon Web Services",
"url": "https://www.youtube.com/watch?v=mxT233EdY5c",
"type": "video"
}
]
},
"u3E7FGW4Iwdsu61KYFxCX": {
"title": "AWS / Azure / GCP",
@@ -212,12 +214,28 @@
},
"kbfucfIO5KCsuv3jKbHTa": {
"title": "Cloud-native ML Services",
"description": "Most of the cloud providers offer managed services for machine learning. These services are designed to help data scientists and machine learning engineers to build, train, and deploy machine learning models at scale. These services are designed to be cloud-native, meaning they are designed to work with other cloud services and are optimized for the cloud environment.\n\nHere are the services offered by the major cloud providers:\n\n* **Amazon Web Services (AWS)**: SageMaker\n* **Google Cloud Platform (GCP)**: AI Platform\n* **Microsoft Azure**: Azure Machine Learning",
"links": []
"description": "Most of the cloud providers offer managed services for machine learning. These services are designed to help data scientists and machine learning engineers to build, train, and deploy machine learning models at scale. These services are designed to be cloud-native, meaning they are designed to work with other cloud services and are optimized for the cloud environment.\n\nLearn more from the following resources:",
"links": [
{
"title": "AWS Sage Maker",
"url": "https://aws.amazon.com/sagemaker/",
"type": "article"
},
{
"title": "Azure ML",
"url": "https://azure.microsoft.com/en-gb/products/machine-learning",
"type": "article"
},
{
"title": "What is Cloud Native?",
"url": "https://www.youtube.com/watch?v=fp9_ubiKqFU",
"type": "video"
}
]
},
"tKeejLv8Q7QX40UtOjpav": {
"title": "Containerization",
"description": "Containers are a construct in which [cgroups](https://en.wikipedia.org/wiki/Cgroups), [namespaces](https://en.wikipedia.org/wiki/Linux_namespaces), and [chroot](https://en.wikipedia.org/wiki/Chroot) are used to fully encapsulate and isolate a process. This encapsulated process, called a container image, shares the kernel of the host with other containers, allowing containers to be significantly smaller and faster than virtual machines.\n\nThese images are designed for portability, allowing for full local testing of a static image, and easy deployment to a container management platform.\n\nVisit the following resources to learn more:",
"description": "Containers are a construct in which cgroups, namespaces, and chroot are used to fully encapsulate and isolate a process. This encapsulated process, called a container image, shares the kernel of the host with other containers, allowing containers to be significantly smaller and faster than virtual machines.\n\nThese images are designed for portability, allowing for full local testing of a static image, and easy deployment to a container management platform.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "What are Containers?",
@@ -274,8 +292,13 @@
},
"XQoK9l-xtN2J8ZV8dw53X": {
"title": "Kubernetes",
"description": "Kubernetes is an [open source](https://github.com/kubernetes/kubernetes) container management platform, and the dominant product in this space. Using Kubernetes, teams can deploy images across multiple underlying hosts, defining their desired availability, deployment logic, and scaling logic in YAML. Kubernetes evolved from Borg, an internal Google platform used to provision and allocate compute resources (similar to the Autopilot and Aquaman systems of Microsoft Azure).\n\nThe popularity of Kubernetes has made it an increasingly important skill for the DevOps Engineer and has triggered the creation of Platform teams across the industry. These Platform engineering teams often exist with the sole purpose of making Kubernetes approachable and usable for their product development colleagues.\n\nVisit the following resources to learn more:",
"description": "Kubernetes is an open source container management platform, and the dominant product in this space. Using Kubernetes, teams can deploy images across multiple underlying hosts, defining their desired availability, deployment logic, and scaling logic in YAML. Kubernetes evolved from Borg, an internal Google platform used to provision and allocate compute resources (similar to the Autopilot and Aquaman systems of Microsoft Azure). The popularity of Kubernetes has made it an increasingly important skill for the DevOps Engineer and has triggered the creation of Platform teams across the industry. These Platform engineering teams often exist with the sole purpose of making Kubernetes approachable and usable for their product development colleagues.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Kubernetes Roadmap",
"url": "https://roadmap.sh/kubernetes",
"type": "article"
},
{
"title": "Kubernetes Website",
"url": "https://kubernetes.io/",
@@ -286,11 +309,6 @@
"url": "https://kubernetes.io/docs/home/",
"type": "article"
},
{
"title": "Primer: How Kubernetes Came to Be, What It Is, and Why You Should Care",
"url": "https://thenewstack.io/primer-how-kubernetes-came-to-be-what-it-is-and-why-you-should-care/",
"type": "article"
},
{
"title": "Kubernetes: An Overview",
"url": "https://thenewstack.io/kubernetes-an-overview/",
@@ -310,28 +328,93 @@
},
"ulka7VEVjz6ls5SnI6a6z": {
"title": "Machine Learning Fundamentals",
"description": "An MLOps engineer should have a basic understanding of machine learning models.\n\n* **Courses:** [MLCourse.ai](https://mlcourse.ai/), [Fast.ai](https://course.fast.ai)\n* **Book Suggestion:** _Applied Machine Learning and AI for Engineers_ by Jeff Prosise",
"links": []
"description": "Machine learning fundamentals encompass the key concepts and techniques that enable systems to learn from data and make predictions or decisions without being explicitly programmed. At its core, machine learning involves algorithms that can identify patterns in data and improve over time with experience. Key areas include supervised learning (where models are trained on labeled data), unsupervised learning (where models identify patterns in unlabeled data), and reinforcement learning (where agents learn to make decisions based on feedback from their actions). Essential components also include data preprocessing, feature selection, model training, evaluation metrics, and the importance of avoiding overfitting. Understanding these fundamentals is crucial for developing effective machine learning applications across various domains. Learn more from the following resources:",
"links": [
{
"title": "Fundamentals of Machine Learning - Microsoft",
"url": "https://learn.microsoft.com/en-us/training/modules/fundamentals-machine-learning/",
"type": "course"
},
{
"title": "MLCourse.ai",
"url": "https://mlcourse.ai/",
"type": "course"
},
{
"title": "Fast.ai",
"url": "https://course.fast.ai",
"type": "course"
}
]
},
"VykbCu7LWIx8fQpqKzoA7": {
"title": "Data Engineering Fundamentals",
"description": "Data Engineering is essentially dealing with the collection, validation, storage, transformation, and processing of data. The objective is to provide reliable, efficient, and scalable data pipelines and infrastructure that allow data scientists to convert data into actionable insights. It involves steps like data ingestion, data storage, data processing, and data provisioning. Important concepts include designing, building, and maintaining data architecture, databases, processing systems, and large-scale processing systems. It is crucial to have extensive technical knowledge in various tools and programming languages like SQL, Python, Hadoop, and more.",
"links": []
"description": "Data Engineering is essentially dealing with the collection, validation, storage, transformation, and processing of data. The objective is to provide reliable, efficient, and scalable data pipelines and infrastructure that allow data scientists to convert data into actionable insights. It involves steps like data ingestion, data storage, data processing, and data provisioning. Important concepts include designing, building, and maintaining data architecture, databases, processing systems, and large-scale processing systems. It is crucial to have extensive technical knowledge in various tools and programming languages like SQL, Python, Hadoop, and more.\n\nLearn more from the following resources:",
"links": [
{
"title": "Data Engineering 101",
"url": "https://www.redpanda.com/guides/fundamentals-of-data-engineering",
"type": "article"
},
{
"title": "Fundamentals of Data Engineering",
"url": "https://www.youtube.com/watch?v=mPSzL8Lurs0",
"type": "video"
}
]
},
"cOg3ejZRYE-u-M0c89IjM": {
"title": "Data Pipelines",
"description": "Data pipelines refer to a set of processes that involve moving data from one system to another, for purposes such as data integration, data migration, data transformation, or data synchronization. These processes can involve a variety of data sources and destinations, and may often require data to be cleaned, enriched, or otherwise transformed along the way. It's a key concept in data engineering to ensure that data is appropriately processed from its source to the location where it will be used, typically a data warehouse, data mart, or a data lake. As such, data pipelines play a crucial part in building an effective and efficient data analytics setup, enabling the flow of data to be processed for insights.\n\nIt is important to understand the difference between ELT and ETL pipelines. ELT stands for Extract, Load, Transform, and refers to a process where data is first extracted from source systems, then loaded into a target system, and finally transformed within the target system. ETL, on the other hand, stands for Extract, Transform, Load, and refers to a process where data is first extracted from source systems, then transformed, and finally loaded into a target system. The choice between ELT and ETL pipelines depends on the specific requirements of the data processing tasks at hand, and the capabilities of the systems involved.",
"links": []
"description": "Data pipelines are a series of automated processes that transport and transform data from various sources to a destination for analysis or storage. They typically involve steps like data extraction, cleaning, transformation, and loading (ETL) into databases, data lakes, or warehouses. Pipelines can handle batch or real-time data, ensuring that large-scale datasets are processed efficiently and consistently. They play a crucial role in ensuring data integrity and enabling businesses to derive insights from raw data for reporting, analytics, or machine learning.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is a data pipeline?",
"url": "https://www.ibm.com/topics/data-pipeline",
"type": "article"
},
{
"title": "What are data pipelines?",
"url": "https://www.youtube.com/watch?v=oKixNpz6jNo",
"type": "video"
}
]
},
"wOogVDV4FIDLXVPwFqJ8C": {
"title": "Data Lakes & Warehouses",
"description": "\"**Data Lakes** are large-scale data repository systems that store raw, untransformed data, in various formats, from multiple sources. They're often used for big data and real-time analytics requirements. Data lakes preserve the original data format and schema which can be modified as necessary. On the other hand, **Data Warehouses** are data storage systems which are designed for analyzing, reporting and integrating with transactional systems. The data in a warehouse is clean, consistent, and often transformed to meet wide-range of business requirements. Hence, data warehouses provide structured data but require more processing and management compared to data lakes.\"",
"links": []
"description": "\"**Data Lakes** are large-scale data repository systems that store raw, untransformed data, in various formats, from multiple sources. They're often used for big data and real-time analytics requirements. Data lakes preserve the original data format and schema which can be modified as necessary. On the other hand, **Data Warehouses** are data storage systems which are designed for analyzing, reporting and integrating with transactional systems. The data in a warehouse is clean, consistent, and often transformed to meet wide-range of business requirements. Hence, data warehouses provide structured data but require more processing and management compared to data lakes.\"\n\nLearn more from the following resources:",
"links": [
{
"title": "Data lake definition",
"url": "https://azure.microsoft.com/en-gb/resources/cloud-computing-dictionary/what-is-a-data-lake",
"type": "article"
},
{
"title": "What is a data lake?",
"url": "https://www.youtube.com/watch?v=LxcH6z8TFpI",
"type": "video"
},
{
"title": "@hat is a data warehouse?",
"url": "https://www.youtube.com/watch?v=k4tK2ttdSDg",
"type": "video"
}
]
},
"Berd78HvnulNEGOsHCf8n": {
"title": "Data Ingestion Architecture",
"description": "Data ingestion is the process of collecting, transferring, and loading data from various sources to a destination where it can be stored and analyzed. There are several data ingestion architectures that can be used to collect data from different sources and load it into a data warehouse, data lake, or other storage systems. These architectures can be broadly classified into two categories: batch processing and real-time processing. How you choose to ingest data will depend on the volume, velocity, and variety of data you are working with, as well as the latency requirements of your use case.\n\nLambda and Kappa architectures are two popular data ingestion architectures that combine batch and real-time processing to handle large volumes of data efficiently.",
"links": []
"description": "Data ingestion is the process of collecting, transferring, and loading data from various sources to a destination where it can be stored and analyzed. There are several data ingestion architectures that can be used to collect data from different sources and load it into a data warehouse, data lake, or other storage systems. These architectures can be broadly classified into two categories: batch processing and real-time processing. How you choose to ingest data will depend on the volume, velocity, and variety of data you are working with, as well as the latency requirements of your use case.\n\nLambda and Kappa architectures are two popular data ingestion architectures that combine batch and real-time processing to handle large volumes of data efficiently.\n\nLearn more from the following resources:",
"links": [
{
"title": "Data Ingestion Patterns",
"url": "https://docs.aws.amazon.com/whitepapers/latest/aws-cloud-data-ingestion-patterns-practices/data-ingestion-patterns.html",
"type": "article"
},
{
"title": "What is a data pipeline?",
"url": "https://www.youtube.com/watch?v=kGT4PcTEPP8",
"type": "video"
}
]
},
"pVSlVHXIap0unFxLGM-lQ": {
"title": "Airflow",
@@ -414,7 +497,7 @@
},
"iTsEHVCo6KGq7H2HMgy5S": {
"title": "MLOps Principles",
"description": "Awareness of MLOps principles and maturity factors is required.\n\n* **Books:**\n * _Designing Machine Learning Systems_ by Chip Huyen\n * _Introducing MLOps_ by Mark Treveil and Dataiku\n* **Assessment:** [MLOps maturity assessment](https://marvelousmlops.substack.com/p/mlops-maturity-assessment)\n* **Great resource on MLOps:** [ml-ops.org](https://ml-ops.org)",
"description": "MLOps (Machine Learning Operations) principles focus on streamlining the deployment, monitoring, and management of machine learning models in production environments. Key principles include:\n\n1. **Collaboration**: Foster collaboration between data scientists, developers, and operations teams to ensure alignment on model goals, performance, and lifecycle management.\n \n2. **Automation**: Automate workflows for model training, testing, deployment, and monitoring to enhance efficiency, reduce errors, and speed up the development lifecycle.\n \n3. **Version Control**: Implement version control for both code and data to track changes, reproduce experiments, and maintain model lineage.\n \n4. **Continuous Integration and Deployment (CI/CD)**: Establish CI/CD pipelines tailored for machine learning to facilitate rapid model iteration and deployment.\n \n5. **Monitoring and Governance**: Continuously monitor model performance and data drift in production to ensure models remain effective and compliant with regulatory requirements.\n \n6. **Scalability**: Design systems that can scale to handle varying workloads and accommodate changes in data volume and complexity.\n \n7. **Reproducibility**: Ensure that experiments can be reliably reproduced by standardizing environments and workflows, making it easier to validate and iterate on models.\n \n\nThese principles help organizations efficiently manage the lifecycle of machine learning models, from development to deployment and beyond.",
"links": []
},
"l1xasxQy2vAY34NWaqKEe": {
@@ -445,23 +528,62 @@
},
"a6vawajw7BpL6plH_nuAz": {
"title": "CI/CD",
"description": "Critical for traceable and reproducible ML model deployments.\n\n* **Books:**\n * _Learning GitHub Actions_ by Brent Laster\n * _Learning Git_ by Anna Skoulikari\n* **Tutorials & Courses:** [Git & GitHub for beginners](https://www.youtube.com/watch?v=RGOj5yH7evk), [Python to Production guide](https://www.udemy.com/course/setting-up-the-linux-terminal-for-software-development/), [Version Control Missing Semester](https://missing.csail.mit.edu/2020/version-control/), [https://learngitbranching.js.org/](https://learngitbranching.js.org/)\n* **Tool:** [Pre-commit hooks](https://marvelousmlops.substack.com/p/welcome-to-pre-commit-heaven)",
"links": []
"description": "CI/CD (Continuous Integration and Continuous Deployment/Delivery) is a software development practice that automates the process of integrating code changes, running tests, and deploying updates. Continuous Integration focuses on regularly merging code changes into a shared repository, followed by automated testing to ensure code quality. Continuous Deployment extends this by automatically releasing every validated change to production, while Continuous Delivery ensures code is always in a deployable state, but requires manual approval for production releases. CI/CD pipelines improve code reliability, reduce integration risks, and speed up the development lifecycle.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is CI/CD?",
"url": "https://www.redhat.com/en/topics/devops/what-is-ci-cd",
"type": "article"
},
{
"title": "CI/CD In 5 Minutes",
"url": "https://www.youtube.com/watch?v=42UP1fxi2SY",
"type": "video"
}
]
},
"fes7M--Y8i08_zeP98tVV": {
"title": "Orchestration",
"description": "Systems like Airflow and Mage are important in ML engineering.\n\n* **Course:** [Introduction to Airflow in Python](https://app.datacamp.com/learn/courses/introduction-to-airflow-in-python)\n* **Note:** Airflow is also featured in the _ML Engineering with Python_ book and [_The Full Stack 7-Steps MLOps Framework_](https://www.pauliusztin.me/courses/the-full-stack-7-steps-mlops-framework).",
"links": []
"description": "ML orchestration refers to the process of managing and coordinating the various tasks and workflows involved in the machine learning lifecycle, from data preparation and model training to deployment and monitoring. It involves integrating multiple tools and platforms to streamline operations, automate repetitive tasks, and ensure seamless collaboration among data scientists, engineers, and operations teams. By using orchestration frameworks, organizations can enhance reproducibility, scalability, and efficiency, enabling them to manage complex machine learning pipelines and improve the overall quality of models in production. This ensures that models are consistently updated and maintained, facilitating rapid iteration and adaptation to changing data and business needs.\n\nLearn more from the following resources:",
"links": [
{
"title": "ML Observability: what, why, how",
"url": "https://ubuntu.com/blog/ml-observability",
"type": "article"
}
]
},
"fGGWKmAJ50Ke6wWJBEgby": {
"title": "Experiment Tracking & Model Registry",
"description": "**Experiment Tracking** is an essential part of MLOps, providing a system to monitor and record the different experiments conducted during the machine learning model development process. This involves capturing, organizing and visualizing the metadata associated with each experiment, such as hyperparameters used, models produced, metrics like accuracy or loss, and other information about the computational environment. This tracking allows for reproducibility of experiments, comparison across different experiment runs, and helps in identifying the best models.\n\nLogging metadata, parameters, and artifacts of training runs.\n\n* **Tool:** MLflow\n* **Courses:** [MLflow Udemy course](https://www.udemy.com/course/mlflow-course/), [End-to-end machine learning (MLflow piece)](https://www.udemy.com/course/sustainable-and-scalable-machine-learning-project-development/)",
"links": []
"description": "**Experiment Tracking** is an essential part of MLOps, providing a system to monitor and record the different experiments conducted during the machine learning model development process. This involves capturing, organizing and visualizing the metadata associated with each experiment, such as hyperparameters used, models produced, metrics like accuracy or loss, and other information about the computational environment. This tracking allows for reproducibility of experiments, comparison across different experiment runs, and helps in identifying the best models.\n\nLearn more from the following resources:",
"links": [
{
"title": "Experiment Tracking",
"url": "https://madewithml.com/courses/mlops/experiment-tracking/#dashboard",
"type": "article"
},
{
"title": "ML Flow Model Registry",
"url": "https://mlflow.org/docs/latest/model-registry.html",
"type": "article"
}
]
},
"6XgP_2NLuiw654zvTyueT": {
"title": "Data Lineage & Feature Stores",
"description": "**Data Lineage** refers to the life-cycle of data, including its origins, movements, characteristics and quality. It's a critical component in MLOps for tracking the journey of data through every process in a pipeline, from raw input to model output. Data lineage helps in maintaining transparency, ensuring compliance, and facilitating data debugging or tracing data related bugs. It provides a clear representation of data sources, transformations, and dependencies thereby aiding in audits, governance, or reproduction of machine learning models.\n\nFeature stores are a crucial component of MLOps infrastructure.\n\n* **Tutorial:** Creating a feature store with Feast [Part 1](https://kedion.medium.com/creating-a-feature-store-with-feast-part-1-37c380223e2f) [Part 2](https://kedion.medium.com/feature-storage-for-ml-with-feast-part-2-34df1971a8d3) [Part 3](https://kedion.medium.com/feature-storage-for-ml-with-feast-a061899fc4a2)\n* **Tool:** DVC for data tracking\n* **Course:** [End-to-end machine learning (DVC piece)](https://www.udemy.com/course/sustainable-and-scalable-machine-learning-project-development/)",
"links": []
"description": "**Data Lineage** refers to the life-cycle of data, including its origins, movements, characteristics and quality. It's a critical component in MLOps for tracking the journey of data through every process in a pipeline, from raw input to model output. Data lineage helps in maintaining transparency, ensuring compliance, and facilitating data debugging or tracing data related bugs. It provides a clear representation of data sources, transformations, and dependencies thereby aiding in audits, governance, or reproduction of machine learning models.\n\nLearn more from the following resources:",
"links": [
{
"title": "What is Data Lineage?",
"url": "https://www.ibm.com/topics/data-lineage",
"type": "article"
},
{
"title": "What is a feature store",
"url": "https://www.snowflake.com/guides/what-feature-store-machine-learning/",
"type": "article"
}
]
},
"zsW1NRb0dMgS-KzWsI0QU": {
"title": "Model Training & Serving",
@@ -470,33 +592,39 @@
},
"r4fbUwD83uYumEO1X8f09": {
"title": "Monitoring & Observability",
"description": "**Monitoring** in MLOps primarily involves tracking the performance of machine learning (ML) models in production to ensure that they continually deliver accurate and reliable results. Such monitoring is necessary because the real-world data that these models handle may change over time, a scenario known as data drift. These changes can adversely affect model performance. Monitoring helps to detect any anomalies in the models behaviour or performance and such alerts can trigger the retraining of models with new data. From a broader perspective, monitoring also involves tracking resources and workflows to detect and rectify any operational issues in the MLOps pipeline.",
"description": "**Monitoring** in MLOps primarily involves tracking the performance of machine learning (ML) models in production to ensure that they continually deliver accurate and reliable results. Such monitoring is necessary because the real-world data that these models handle may change over time, a scenario known as data drift. These changes can adversely affect model performance. Monitoring helps to detect any anomalies in the models behaviour or performance and such alerts can trigger the retraining of models with new data. From a broader perspective, monitoring also involves tracking resources and workflows to detect and rectify any operational issues in the MLOps pipeline.\n\nLearn more from the following resources:",
"links": [
{
"title": "ML Monitoring vs Observability article",
"url": "https://marvelousmlops.substack.com/p/ml-monitoring-vs-ml-observability",
"title": "ML Monitoring vs ML Observability",
"url": "https://medium.com/marvelous-mlops/ml-monitoring-vs-ml-observability-understanding-the-differences-fff574a8974f",
"type": "article"
},
{
"title": "Machine learning monitoring concepts",
"url": "https://app.datacamp.com/learn/courses/machine-learning-monitoring-concepts",
"type": "article"
},
{
"title": "Monitoring ML in Python",
"url": "https://app.datacamp.com/learn/courses/monitoring-machine-learning-in-python",
"type": "article"
},
{
"title": "Prometheus, Grafana",
"url": "https://www.udemy.com/course/mastering-prometheus-and-grafana/",
"type": "article"
"title": "ML Observability vs ML Monitoring: What's the difference?",
"url": "https://www.youtube.com/watch?v=k1Reed3QIYE",
"type": "video"
}
]
},
"sf67bSL7HAx6iN7S6MYKs": {
"title": "Infrastructure as Code",
"description": "Essential for a reproducible MLOps framework.\n\n* **Course:** [Terraform course for beginners](https://www.youtube.com/watch?v=SLB_c_ayRMo)\n* **Video:** [8 Terraform best practices by Techworld by Nana](https://www.youtube.com/watch?v=gxPykhPxRW0)\n* **Book Suggestion:** _Terraform: Up and Running, 3rd Edition_ by Yevgeniy Brikman",
"links": []
"description": "Infrastructure as Code (IaC) is a modern approach to managing and provisioning IT infrastructure through machine-readable configuration files, rather than manual processes. It enables developers and operations teams to define and manage infrastructure resources—such as servers, networks, and databases—using code, which can be versioned, tested, and deployed like application code. IaC tools, like Terraform and AWS CloudFormation, allow for automated, repeatable deployments, reducing human error and increasing consistency across environments. This practice facilitates agile development, enhances collaboration between teams, and supports scalable and efficient infrastructure management.",
"links": [
{
"title": "What is Infrastructure as Code?",
"url": "https://www.redhat.com/en/topics/automation/what-is-infrastructure-as-code-iac",
"type": "article"
},
{
"title": "Terraform course for beginners",
"url": "https://www.youtube.com/watch?v=SLB_c_ayRMo",
"type": "video"
},
{
"title": "8 Terraform best practices",
"url": "https://www.youtube.com/watch?v=gxPykhPxRW0",
"type": "video"
}
]
}
}

View File

@@ -58,6 +58,11 @@
"title": "Python for Beginners: Data Types",
"url": "https://thenewstack.io/python-for-beginners-data-types/",
"type": "article"
},
{
"title": "Python Variables and Data Types",
"url": "https://www.youtube.com/playlist?list=PLBlnK6fEyqRhN-sfWgCU1z_Qhakc1AGOn",
"type": "video"
}
]
},
@@ -237,6 +242,11 @@
"title": "Python \"for\" Loops (Definite Iteration)",
"url": "https://realpython.com/python-for-loop/#the-guts-of-the-python-for-loop",
"type": "article"
},
{
"title": "Python For Loops",
"url": "https://www.youtube.com/watch?v=KWgYha0clzw",
"type": "video"
}
]
},
@@ -618,6 +628,11 @@
"title": "OOP in Python One Shot",
"url": "https://www.youtube.com/watch?v=Ej_02ICOIgs",
"type": "video"
},
{
"title": "Python OOP Tutorial",
"url": "https://www.youtube.com/watch?v=IbMDCwVm63M",
"type": "video"
}
]
},

View File

@@ -658,7 +658,7 @@
"links": [
{
"title": "React Documentation on useCallback",
"url": "https://reactjs.org/docs/hooks-reference.html#usecallback",
"url": "https://react.dev/reference/react/useCallback",
"type": "article"
},
{

View File

@@ -12,13 +12,30 @@
},
"M-EXrTDeAEMz_IkEi-ab4": {
"title": "In-memory Data Structure Store",
"description": "",
"links": []
"description": "An in-memory database is a purpose-built database that relies primarily on internal memory for data storage. It enables minimal response times by eliminating the need to access standard disk drives (SSDs). In-memory databases are ideal for applications that require microsecond response times or have large spikes in traffic, such as gaming leaderboards, session stores, and real-time data analytics. The terms main memory database (MMDB), in-memory database system (IMDS), and real-time database system (RTDB) also refer to in-memory databases.\n\nLearn more from the following resources:",
"links": [
{
"title": "Amazon MemoryDB",
"url": "https://aws.amazon.com/memorydb/",
"type": "article"
}
]
},
"l2aXyO3STnhbFjvUXPpm2": {
"title": "Key-value Database",
"description": "",
"links": []
"description": "Key-value Database is a non-relational (NoSQL) database that stores data as a collection of key-value pairs. In this model, each piece of data is associated with a unique identifier (key) that is used to retrieve the corresponding value. This simple structure allows for high performance and scalability, making key-value databases ideal for certain use cases.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "What is a Key-Value Database?",
"url": "https://redis.io/nosql/key-value-databases/",
"type": "article"
},
{
"title": "Key Value Store - System Design Interview Basics",
"url": "https://www.youtube.com/watch?v=ozJHmm05EXM",
"type": "video"
}
]
},
"eHuBz_zSZK3rubn7nkd7g": {
"title": "Cache",

View File

@@ -10,7 +10,7 @@
"links": [
{
"title": "What is Software Architecture in Software Engineering?",
"url": "https://webcache.googleusercontent.com/search?q=cache:ya4xvYaEckQJ:https://www.future-processing.com/blog/what-is-software-architecture-in-software-engineering/&cd=1&hl=es-419&ct=clnk&gl=ar",
"url": "https://www.future-processing.com/blog/what-is-software-architecture-in-software-engineering/",
"type": "article"
},
{
@@ -1182,17 +1182,12 @@
},
{
"title": "React Website",
"url": "https://reactjs.org/",
"url": "https://react.dev/",
"type": "article"
},
{
"title": "Official Getting Started",
"url": "https://reactjs.org/tutorial/tutorial.html",
"type": "article"
},
{
"title": "Beta React Docs",
"url": "https://reactjs.org/",
"url": "https://react.dev/learn/tutorial-tic-tac-toe",
"type": "article"
},
{

View File

@@ -401,7 +401,7 @@
},
"HD1UGOidp7JGKdW6CEdQ_": {
"title": "satisfies keyword",
"description": "TypeScript developers are often faced with a dilemma: we want to ensure that some expression matches some type, but also want to keep the most specific type of that expression for inference purposes.\n\nFor example:\n\n // Each property can be a string or an RGB tuple.\n const palette = {\n red: [255, 0, 0],\n green: '#00ff00',\n bleu: [0, 0, 255],\n // ^^^^ sacrebleu - we've made a typo!\n };\n \n // We want to be able to use array methods on 'red'...\n const redComponent = palette.red.at(0);\n \n // or string methods on 'green'...\n const greenNormalized = palette.green.toUpperCase();\n \n\nNotice that weve written `bleu`, whereas we probably should have written `blue`. We could try to catch that `bleu` typo by using a type annotation on palette, but wed lose the information about each property.\n\n type Colors = 'red' | 'green' | 'blue';\n type RGB = [red: number, green: number, blue: number];\n \n const palette: Record<Colors, string | RGB> = {\n red: [255, 0, 0],\n green: '#00ff00',\n bleu: [0, 0, 255],\n // ~~~~ The typo is now correctly detected\n };\n // But we now have an undesirable error here - 'palette.red' \"could\" be a string.\n const redComponent = palette.red.at(0);\n \n\nThe `satisfies` operator lets us validate that the type of an expression matches some type, without changing the resulting type of that expression. As an example, we could use `satisfies` to validate that all the properties of palette are compatible with `string | number[]`:\n\n type Colors = 'red' | 'green' | 'blue';\n type RGB = [red: number, green: number, blue: number];\n \n const palette = {\n red: [255, 0, 0],\n green: '#00ff00',\n bleu: [0, 0, 255],\n // ~~~~ The typo is now caught!\n } satisfies Record<Colors, string | RGB>;\n \n // Both of these methods are still accessible!\n const redComponent = palette.red.at(0);\n const greenNormalized = palette.green.toUpperCase();\n \n\nLearn more from the following resources:",
"description": "The `satisfies` operator lets us validate that the type of an expression matches some type, without changing the resulting type of that expression.\n\nLearn more from the following resources:",
"links": [
{
"title": "satisfies Keyword",

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 KiB

View File

@@ -1,7 +1,7 @@
import { type APIContext } from 'astro';
import { api } from './api.ts';
export type LeadeboardUserDetails = {
export type LeaderboardUserDetails = {
id: string;
name: string;
avatar?: string;
@@ -10,12 +10,19 @@ export type LeadeboardUserDetails = {
export type ListLeaderboardStatsResponse = {
streaks: {
active: LeadeboardUserDetails[];
lifetime: LeadeboardUserDetails[];
active: LeaderboardUserDetails[];
lifetime: LeaderboardUserDetails[];
};
projectSubmissions: {
currentMonth: LeadeboardUserDetails[];
lifetime: LeadeboardUserDetails[];
currentMonth: LeaderboardUserDetails[];
lifetime: LeaderboardUserDetails[];
};
githubContributors: {
currentMonth: LeaderboardUserDetails[];
};
referrals: {
currentMonth: LeaderboardUserDetails[];
lifetime: LeaderboardUserDetails[];
};
};

View File

@@ -2,7 +2,7 @@ import { useEffect, useRef, useState } from 'react';
import { isLoggedIn } from '../../lib/jwt';
import { httpGet } from '../../lib/http';
import { useToast } from '../../hooks/use-toast';
import { Flame, X, Zap, ZapOff } from 'lucide-react';
import { Zap, ZapOff } from 'lucide-react';
import { useOutsideClick } from '../../hooks/use-outside-click';
import { StreakDay } from './StreakDay';
import {
@@ -11,15 +11,8 @@ import {
} from '../../stores/page.ts';
import { useStore } from '@nanostores/react';
import { cn } from '../../lib/classname.ts';
import { $accountStreak } from '../../stores/streak.ts';
type StreakResponse = {
count: number;
longestCount: number;
previousCount?: number | null;
firstVisitAt: Date;
lastVisitAt: Date;
};
import { $accountStreak, type StreakResponse } from '../../stores/streak.ts';
import { InviteFriends } from './InviteFriends.tsx';
type AccountStreakProps = {};
@@ -184,11 +177,10 @@ export function AccountStreak(props: AccountStreakProps) {
<p className="-mt-[0px] mb-[1.5px] text-center text-xs tracking-wide text-slate-500">
Visit every day to keep your streak going!
</p>
<p className='text-xs mt-1.5 text-center'>
<a href="/leaderboard" className="text-purple-400 hover:underline underline-offset-2">
See how you compare to others
</a>
</p>
<InviteFriends
refByUserCount={accountStreak?.refByUserCount || 0}
/>
</div>
</div>
)}

View File

@@ -0,0 +1,88 @@
import { Copy, Heart } from 'lucide-react';
import { useAuth } from '../../hooks/use-auth';
import { useCopyText } from '../../hooks/use-copy-text';
import { cn } from '../../lib/classname';
import { CheckIcon } from '../ReactIcons/CheckIcon';
import { TrophyEmoji } from '../ReactIcons/TrophyEmoji.tsx';
type InviteFriendsProps = {
refByUserCount: number;
};
export function InviteFriends(props: InviteFriendsProps) {
const { refByUserCount } = props;
const user = useAuth();
const { copyText, isCopied } = useCopyText();
const referralLink = new URL(
`/signup?rc=${user?.id}`,
import.meta.env.DEV ? 'http://localhost:3000' : 'https://roadmap.sh',
).toString();
return (
<div className="-mx-4 mt-6 flex flex-col border-t border-dashed border-t-slate-600 px-4 pt-5 text-center text-sm">
<p className="text-slate-500">Invite people to join roadmap.sh</p>
<div className="flex flex-col items-center rounded-lg bg-slate-900/40 pb-4 pt-5 my-4">
<p className="text-xs text-slate-500">
{refByUserCount === 0 && <>You haven't invited anyone yet.</>}
{refByUserCount > 0 && refByUserCount < 10 && (
<>{refByUserCount} of 10 users joined</>
)}
</p>
{refByUserCount >= 10 && <>🎉 You've invited {refByUserCount} users</>}
<div className="my-3 flex flex-row items-center justify-center gap-1">
{Array.from({ length: 10 }).map((_, index) => (
<Heart
key={index}
className={cn(
'size-[23px] fill-current',
index < refByUserCount ? 'text-yellow-300' : 'text-slate-700',
)}
/>
))}
</div>
<p className={'mb-3 text-xs text-slate-500'}>
Share the link below with anyone you think would benefit from using
roadmap.sh
</p>
<p className="text-slate-500">
<button
onClick={() => {
copyText(referralLink);
}}
className={cn(
'rounded-md hover:bg-slate-500/80 hover:text-slate-100 px-3 py-1 text-xs text-slate-300 bg-slate-600',
{
'bg-green-500 text-black hover:text-black hover:bg-green-500': isCopied,
},
)}
>
{!isCopied ? 'Copy Invite Link' : 'Invite Link Copied'}{' '}
{!isCopied && (
<Copy
className="relative -top-[1.25px] ml-1.5 inline-block size-3"
strokeWidth={3}
/>
)}
{isCopied && (
<CheckIcon additionalClasses="relative ml-1.5 -top-[1.25px] inline-block size-3" />
)}
</button>
</p>
</div>
<p className="text-center text-xs">
<a
href="/leaderboard"
className="text-purple-400 underline-offset-2 hover:underline"
>
See how you rank on the leaderboard
</a>
</p>
</div>
);
}

View File

@@ -1,5 +1,7 @@
import { type FormEvent, useState } from 'react';
import { type FormEvent, useEffect, useState } from 'react';
import { httpPost } from '../../lib/http';
import { deleteUrlParam, getUrlParams } from '../../lib/browser';
import { isLoggedIn, setAIReferralCode } from '../../lib/jwt';
type EmailSignupFormProps = {
isDisabled?: boolean;
@@ -9,6 +11,9 @@ type EmailSignupFormProps = {
export function EmailSignupForm(props: EmailSignupFormProps) {
const { isDisabled, setIsDisabled } = props;
const { rc: referralCode } = getUrlParams() as {
rc?: string;
};
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [name, setName] = useState('');
@@ -47,6 +52,16 @@ export function EmailSignupForm(props: EmailSignupFormProps) {
)}`;
};
useEffect(() => {
if (!referralCode || isLoggedIn()) {
deleteUrlParam('rc');
return;
}
setAIReferralCode(referralCode);
deleteUrlParam('rc');
}, []);
return (
<form className="flex w-full flex-col gap-2" onSubmit={onSubmit}>
<label htmlFor="name" className="sr-only">
@@ -72,7 +87,7 @@ export function EmailSignupForm(props: EmailSignupFormProps) {
type="email"
autoComplete="email"
required
className="block w-full rounded-lg border border-gray-300 px-3 py-2 outline-none placeholder:text-gray-400 focus:ring-2 focus:ring-black focus:ring-offset-1"
className="block w-full rounded-lg border border-gray-300 px-3 py-2 outline-none placeholder:text-gray-400 focus:ring-2 focus:ring-black focus:ring-offset-1"
placeholder="Email Address"
value={email}
onInput={(e) => setEmail(String((e.target as any).value))}

View File

@@ -23,7 +23,7 @@ const formattedDate = DateTime.fromISO('2024-09-13').toFormat('dd LLL, yyyy');
<div
class='flex flex-col items-center justify-center gap-2 sm:gap-2 rounded-xl border bg-white px-8 py-12 text-center'
>
<img src='/images/rocket.gif' class='w-[70px] mb-4' />
<img src='/images/gifs/rocket.gif' class='w-[70px] mb-4' />
<h2 class='text-balance text-xl font-medium'>Changelog page is launched</h2>
<p class='font-normal text-balance text-gray-400 text-sm sm:text-base'>
We will be sharing a selected list of updates, improvements, and fixes made to

View File

@@ -10,7 +10,7 @@ const top10Changelogs = allChangelogs.slice(0, 10);
<div class='container !max-w-[650px]'>
<p class='text-2xl font-bold sm:text-5xl'>
<img
src='/images/rocket.gif'
src='/images/gifs/rocket.gif'
alt='Rocket'
class='mr-2 hidden sm:inline h-12 w-12'
/>

View File

@@ -1,11 +1,10 @@
import { useState, type ReactNode } from 'react';
import { type ReactNode, useState } from 'react';
import type {
LeadeboardUserDetails,
LeaderboardUserDetails,
ListLeaderboardStatsResponse,
} from '../../api/leaderboard';
import { cn } from '../../lib/classname';
import { FolderKanban, Zap, Trophy } from 'lucide-react';
import { RankBadgeIcon } from '../ReactIcons/RankBadgeIcon';
import { FolderKanban, GitPullRequest, Users, Users2, Zap } from 'lucide-react';
import { TrophyEmoji } from '../ReactIcons/TrophyEmoji';
import { SecondPlaceMedalEmoji } from '../ReactIcons/SecondPlaceMedalEmoji';
import { ThirdPlaceMedalEmoji } from '../ReactIcons/ThirdPlaceMedalEmoji';
@@ -18,53 +17,77 @@ export function LeaderboardPage(props: LeaderboardPageProps) {
const { stats } = props;
return (
<div className="min-h-screen bg-gray-50">
<div className="container py-10">
<div className="mb-8 text-center">
<div className="mb-2 flex items-center justify-center gap-3">
<Trophy className="size-8 text-yellow-500" />
<h2 className="text-2xl font-bold sm:text-3xl">Leaderboard</h2>
</div>
<p className="mx-auto max-w-2xl text-balance text-sm text-gray-500 sm:text-base">
Top users based on their activity on roadmap.sh
</p>
<div className="min-h-screen bg-gray-100">
<div className="container pb-5 sm:pb-8">
<h1 className="my-5 flex items-center text-lg font-medium text-black sm:mb-4 sm:mt-8">
<Users2 className="mr-2 size-5 text-black" />
Leaderboard
</h1>
<div className="mt-8 grid gap-2 md:grid-cols-2">
<LeaderboardLane
title="Longest Visit Streak"
tabs={[
{
title: 'Active',
users: stats.streaks?.active || [],
emptyIcon: <Zap className="size-16 text-gray-300" />,
emptyText: 'No users with streaks yet',
},
{
title: 'Lifetime',
users: stats.streaks?.lifetime || [],
emptyIcon: <Zap className="size-16 text-gray-300" />,
emptyText: 'No users with streaks yet',
},
]}
/>
<LeaderboardLane
title="Projects Completed"
tabs={[
{
title: 'This Month',
users: stats.projectSubmissions.currentMonth,
emptyIcon: <FolderKanban className="size-16 text-gray-300" />,
emptyText: 'No projects submitted this month',
},
{
title: 'Lifetime',
users: stats.projectSubmissions.lifetime,
emptyIcon: <FolderKanban className="size-16 text-gray-300" />,
emptyText: 'No projects submitted yet',
},
]}
/>
</div>
<div className="grid gap-2 sm:gap-3 md:grid-cols-2">
<LeaderboardLane
title="Longest Visit Streak"
tabs={[
{
title: 'Active',
users: stats.streaks?.active || [],
emptyIcon: <Zap className="size-16 text-gray-300" />,
emptyText: 'No users with streaks yet',
},
{
title: 'Lifetime',
users: stats.streaks?.lifetime || [],
emptyIcon: <Zap className="size-16 text-gray-300" />,
emptyText: 'No users with streaks yet',
},
]}
/>
<LeaderboardLane
title="Projects Completed"
tabs={[
{
title: 'This Month',
users: stats.projectSubmissions.currentMonth,
emptyIcon: <FolderKanban className="size-16 text-gray-300" />,
emptyText: 'No projects submitted this month',
},
{
title: 'Lifetime',
users: stats.projectSubmissions.lifetime,
emptyIcon: <FolderKanban className="size-16 text-gray-300" />,
emptyText: 'No projects submitted yet',
},
]}
/>
<LeaderboardLane
title="Most Referrals"
tabs={[
{
title: 'This Month',
users: stats.referrals.currentMonth,
emptyIcon: <Users className="size-16 text-gray-300" />,
emptyText: 'No referrals this month',
},
{
title: 'Lifetime',
users: stats.referrals.lifetime,
emptyIcon: <Users className="size-16 text-gray-300" />,
emptyText: 'No referrals yet',
},
]}
/>
<LeaderboardLane
title="Top Contributors"
subtitle="Past 2 weeks"
tabs={[
{
title: 'This Month',
users: stats.githubContributors.currentMonth,
emptyIcon: <GitPullRequest className="size-16 text-gray-300" />,
emptyText: 'No contributors this month',
},
]}
/>
</div>
</div>
</div>
@@ -73,27 +96,35 @@ export function LeaderboardPage(props: LeaderboardPageProps) {
type LeaderboardLaneProps = {
title: string;
subtitle?: string;
tabs: {
title: string;
users: LeadeboardUserDetails[];
users: LeaderboardUserDetails[];
emptyIcon?: ReactNode;
emptyText?: string;
}[];
};
function LeaderboardLane(props: LeaderboardLaneProps) {
const { title, tabs } = props;
const { title, subtitle, tabs } = props;
const [activeTab, setActiveTab] = useState(tabs[0]);
const { users: usersToShow, emptyIcon, emptyText } = activeTab;
return (
<div className="overflow-hidden rounded-md border bg-white shadow-sm">
<div className="flex items-center justify-between gap-2 bg-gray-100 px-3 py-3 mb-3">
<h3 className="text-base font-medium">{title}</h3>
<div className="flex min-h-[450px] flex-col overflow-hidden rounded-xl border bg-white shadow-sm">
<div className="mb-3 flex items-center justify-between gap-2 px-3 py-3">
<h3 className="text-sm font-medium">
{title}{' '}
{subtitle && (
<span className="ml-1 text-sm font-normal text-gray-400">
{subtitle}
</span>
)}
</h3>
{tabs.length > 1 && (
<div className="flex items-center gap-2">
<div className="flex items-center gap-1">
{tabs.map((tab) => {
const isActive = tab === activeTab;
@@ -102,10 +133,10 @@ function LeaderboardLane(props: LeaderboardLaneProps) {
key={tab.title}
onClick={() => setActiveTab(tab)}
className={cn(
'text-sm font-medium underline-offset-2 transition-colors',
'text-xs transition-colors py-0.5 px-2 rounded-full',
{
'text-black underline': isActive,
'text-gray-400 hover:text-gray-600': !isActive,
'text-white bg-black': isActive,
'hover:bg-gray-200': !isActive,
},
)}
>
@@ -118,7 +149,7 @@ function LeaderboardLane(props: LeaderboardLaneProps) {
</div>
{usersToShow.length === 0 && emptyText && (
<div className="flex flex-col items-center justify-center p-8">
<div className="flex flex-grow flex-col items-center justify-center p-8">
{emptyIcon}
<p className="mt-4 text-sm text-gray-500">{emptyText}</p>
</div>
@@ -128,19 +159,23 @@ function LeaderboardLane(props: LeaderboardLaneProps) {
<ul className="divide-y divide-gray-100 pb-4">
{usersToShow.map((user, counter) => {
const avatar = user?.avatar
? `${import.meta.env.PUBLIC_AVATAR_BASE_URL}/${user.avatar}`
? user?.avatar?.startsWith('http')
? user?.avatar
: `${import.meta.env.PUBLIC_AVATAR_BASE_URL}/${user.avatar}`
: '/images/default-avatar.png';
const rank = counter + 1;
const isGitHubUser = avatar?.indexOf('github') > -1;
return (
<li
key={user.id}
className="flex items-center justify-between gap-1 pl-2 pr-5 py-2.5 hover:bg-gray-50"
className="flex items-center justify-between gap-1 py-2.5 pl-2 pr-5"
>
<div className="flex min-w-0 items-center gap-2">
<span
className={cn(
'relative text-xs mr-1 flex size-6 shrink-0 items-center justify-center rounded-full tabular-nums',
'relative mr-1 flex size-6 shrink-0 items-center justify-center rounded-full text-xs tabular-nums',
{
'text-black': rank <= 3,
'text-gray-400': rank > 3,
@@ -153,9 +188,19 @@ function LeaderboardLane(props: LeaderboardLaneProps) {
<img
src={avatar}
alt={user.name}
className="size-7 shrink-0 rounded-full"
className="mr-1 size-7 shrink-0 rounded-full"
/>
<span className="truncate">{user.name}</span>
{isGitHubUser ? (
<a
href={`https://github.com/kamranahmedse/developer-roadmap/pulls?q=is%3Apr+is%3Aclosed+author%3A${user.name}`}
target="_blank"
className="truncate font-medium underline underline-offset-2"
>
{user.name}
</a>
) : (
<span className="truncate">{user.name}</span>
)}
{rank === 1 ? (
<TrophyEmoji className="size-5" />
) : rank === 2 ? (

View File

@@ -6,6 +6,7 @@ import type {
import { Users } from 'lucide-react';
import { formatCommaNumber } from '../../lib/number.ts';
import { cn } from '../../lib/classname.ts';
import { isLoggedIn } from '../../lib/jwt.ts';
type ProjectCardProps = {
project: ProjectFileType;
@@ -24,8 +25,7 @@ export function ProjectCard(props: ProjectCardProps) {
const { frontmatter, id } = project;
const isLoadingStatus = status === undefined;
const userStartedCount =
status && status !== 'none' ? userCount + 1 : userCount;
const userStartedCount = status !== 'none' && userCount === 0 ? userCount + 1 : userCount;
return (
<a
@@ -53,8 +53,8 @@ export function ProjectCard(props: ProjectCardProps) {
<>
<span className="flex items-center gap-1.5">
<Users className="size-3.5" />
{userCount > 0 ? (
<>{formatCommaNumber(userCount)} Started</>
{userStartedCount > 0 ? (
<>{formatCommaNumber(userStartedCount)} Started</>
) : (
<>Be the first to solve!</>
)}

View File

@@ -61,6 +61,11 @@ export function ProjectsList(props: ProjectsListProps) {
useState<ListProjectStatusesResponse>();
const loadProjectStatuses = async () => {
if (!isLoggedIn()) {
setProjectStatuses({});
return;
}
const projectIds = projects.map((project) => project.id);
const { response, error } = await httpPost(
`${import.meta.env.PUBLIC_API_URL}/v1-list-project-statuses`,
@@ -99,10 +104,6 @@ export function ProjectsList(props: ProjectsListProps) {
: projects;
useEffect(() => {
if (!isLoggedIn()) {
return;
}
loadProjectStatuses().finally();
}, []);
@@ -172,7 +173,7 @@ export function ProjectsList(props: ProjectsListProps) {
userCount={count}
status={
projectStatuses
? (projectStatuses?.[matchingProject.id] ?? 'none')
? (projectStatuses?.[matchingProject.id] || 'none')
: undefined
}
/>

View File

@@ -190,6 +190,7 @@ export function ProjectsPage(props: ProjectsPageProps) {
key={project.id}
project={project}
userCount={userCounts[project.id] || 0}
status={'none'}
/>
))}
</div>

View File

@@ -357,6 +357,11 @@ const groups: GroupType[] = [
link: '/ai-data-scientist',
type: 'role',
},
{
title: 'AI Engineer',
link: '/ai-engineer',
type: 'role',
},
{
title: 'Data Analyst',
link: '/data-analyst',

View File

@@ -175,7 +175,6 @@ export function TopicDetail(props: TopicDetailProps) {
setError('');
setIsLoading(true);
setIsActive(true);
sponsorHidden.set(true);
setTopicId(topicId);
setResourceType(resourceType);

View File

@@ -0,0 +1,25 @@
---
title: 'AI Engineer Roadmap, Leaderboards, Editor AI, and more'
description: 'New AI Engineer Roadmap, New Leaderboards, AI Integration in Editor, and more'
images:
"AI Engineer Roadmap": "https://assets.roadmap.sh/guest/ai-engineer-roadmap.png"
"Refer Others": "https://assets.roadmap.sh/guest/invite-users.png"
"Editor AI Integration": "https://assets.roadmap.sh/guest/editor-ai-integration.png"
"Project Status": "https://assets.roadmap.sh/guest/project-status.png"
"Leaderboards": "https://assets.roadmap.sh/guest/new-leaderboards.png"
seo:
title: 'AI Engineer Roadmap, Leaderboards, Editor AI, and more'
description: ''
date: 2024-10-04
---
We have a new AI Engineer roadmap, Contributor leaderboards, AI integration in the editor, and more.
- [AI Engineer Roadmap](https://roadmap.sh/ai-engineer) is now live
- You can now refer others to join roadmap.sh
- AI integration [in the editor](https://draw.roadmap.sh) to help you create and edit roadmaps faster
- New [Leaderboards](/leaderboard) for contributors and people who refer others
- [Projects pages](/frontend/projects) now show the status of each project
- Bug fixes and performance improvements
ML Engineer roadmap and team dashboards are coming up next. Stay tuned!

View File

@@ -22,4 +22,4 @@ We have a new roadmap, some improvements to dashboard, bookmarks and more.
- [Cyber Security roadmap](/cyber-security) is now filled with new content and resources.
- Buf fixes and improvements to some team features.
Next up, we are working on a new Data Engineering roadmap and teams dashboards.
Next up, we are working on a new AI Engineer roadmap and teams dashboards.

View File

@@ -1,7 +1,7 @@
---
jsonUrl: '/jsons/roadmaps/ai-data-scientist.json'
pdfUrl: '/pdfs/roadmaps/ai-data-scientist.pdf'
order: 4
order: 5
renderer: 'editor'
briefTitle: 'AI and Data Scientist'
briefDescription: 'Step by step guide to becoming an AI and Data Scientist in 2024'

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,50 @@
---
jsonUrl: '/jsons/roadmaps/ai-engineer.json'
pdfUrl: '/pdfs/roadmaps/ai-engineer.pdf'
order: 4
renderer: 'editor'
briefTitle: 'AI Engineer'
briefDescription: 'Step by step guide to becoming an AI Engineer in 2024'
title: 'AI Engineer Roadmap'
description: 'Step by step guide to becoming an AI Engineer in 2024'
hasTopics: true
isNew: true
dimensions:
width: 968
height: 3200
question:
title: 'What is an AI Engineer?'
description: |
An AI Engineer uses pre-trained models and existing AI tools to improve user experiences. They focus on applying AI in practical ways, without building models from scratch. This is different from AI Researchers and ML Engineers, who focus more on creating new models or developing AI theory.
schema:
headline: 'AI Engineer Roadmap'
description: 'Learn how to become an AI Engineer with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.'
imageUrl: 'https://roadmap.sh/roadmaps/ai-engineer.png'
datePublished: '2024-10-03'
dateModified: '2024-10-03'
seo:
title: 'AI Engineer Roadmap'
description: 'Learn to become an AI Engineer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern backend development.'
keywords:
- 'ai engineer roadmap 2024'
- 'guide to becoming an ai engineer'
- 'ai engineer roadmap'
- 'ai engineer skills'
- 'become an ai engineer'
- 'ai engineer career path'
- 'skills for ai engineer'
- 'ai engineer quiz'
- 'ai engineer interview questions'
relatedRoadmaps:
- 'ai-data-scientist'
- 'prompt-engineering'
- 'data-analyst'
- 'python'
sitemap:
priority: 1
changefreq: 'monthly'
tags:
- 'roadmap'
- 'main-sitemap'
- 'role-roadmap'
---

View File

@@ -0,0 +1 @@
# Adding end-user IDs in prompts

View File

@@ -0,0 +1 @@
# Agents Usecases

View File

@@ -0,0 +1 @@
# AI Agents

View File

@@ -0,0 +1 @@
# AI Agents

View File

@@ -0,0 +1 @@
# AI Code Editors

View File

@@ -0,0 +1 @@
# AI Engineer vs ML Engineer

View File

@@ -0,0 +1 @@
# AI Safety and Ethics

View File

@@ -0,0 +1 @@
# AI vs AGI

View File

@@ -0,0 +1 @@
# Anomaly Detection

View File

@@ -0,0 +1 @@
# Anthropic's Claude

View File

@@ -0,0 +1 @@
# Audio Processing

View File

@@ -0,0 +1 @@
# AWS Sagemaker

View File

@@ -0,0 +1 @@
# Azure AI

View File

@@ -0,0 +1 @@
# Benefits of Pre-trained Models

View File

@@ -0,0 +1 @@
# Bias and Fareness

View File

@@ -0,0 +1 @@
# Capabilities / Context Length

View File

@@ -0,0 +1 @@
# Chat Completions API

View File

@@ -0,0 +1 @@
# Chroma

View File

@@ -0,0 +1 @@
# Chunking

View File

@@ -0,0 +1 @@
# Code Completion Tools

View File

@@ -0,0 +1 @@
# Cohere

View File

@@ -0,0 +1 @@
# Conducting adversarial testing

View File

@@ -0,0 +1 @@
# Constraining outputs and inputs

View File

@@ -0,0 +1 @@
# Cut-off Dates / Knowledge

View File

@@ -0,0 +1 @@
# DALL-E API

View File

@@ -0,0 +1 @@
# Data Classification

View File

@@ -0,0 +1 @@
# Development Tools

View File

@@ -0,0 +1 @@
# Embedding

View File

@@ -0,0 +1 @@
# Embeddings

View File

@@ -0,0 +1 @@
# FAISS

View File

@@ -0,0 +1 @@
# Fine-tuning

View File

@@ -0,0 +1 @@
# Generation

View File

@@ -0,0 +1 @@
# Google's Gemini

View File

@@ -0,0 +1 @@
# Hugging Face Hub

View File

@@ -0,0 +1 @@
# Hugging Face Models

View File

@@ -0,0 +1 @@
# Hugging Face Models

View File

@@ -0,0 +1 @@
# Hugging Face Tasks

View File

@@ -0,0 +1 @@
# Hugging Face

View File

@@ -0,0 +1 @@
# Image Generation

View File

@@ -0,0 +1 @@
# Image Understanding

View File

@@ -0,0 +1 @@
# Impact on Product Development

View File

@@ -0,0 +1 @@
# Indexing Embeddings

View File

@@ -0,0 +1 @@
# Inference SDK

View File

@@ -0,0 +1 @@
# Inference

View File

@@ -0,0 +1 @@
# Introduction

View File

@@ -0,0 +1 @@
# Know your Customers / Usecases

View File

@@ -0,0 +1 @@
# LanceDB

View File

@@ -0,0 +1 @@
# LangChain for Multimodal Apps

View File

@@ -0,0 +1 @@
# Langchain

View File

@@ -0,0 +1 @@
# Limitations and Considerations

View File

@@ -0,0 +1 @@
# Llama Index

View File

@@ -0,0 +1 @@
# LlamaIndex for Multimodal Apps

View File

@@ -0,0 +1 @@
# LLMs

View File

@@ -0,0 +1 @@
# Manual Implementation

View File

@@ -0,0 +1 @@
# Maximum Tokens

View File

@@ -0,0 +1 @@
# Mistral AI

View File

@@ -0,0 +1 @@
# Models on Hugging Face

View File

@@ -0,0 +1 @@
# MongoDB Atlas

View File

@@ -0,0 +1 @@
# Multimodal AI Usecases

View File

@@ -0,0 +1 @@
# Multimodal AI

Some files were not shown because too many files have changed in this diff Show More