├── .gitignore
├── .travis.yml
├── .vscode
└── settings.json
├── README.md
├── db
└── talks.json
├── scripts
├── cli.py
├── collectalk.py
├── helpers.py
└── validate.py
└── talks
├── Bendaia
├── 9-tricks-for-kickass-javascript-developers-in-2019.md
├── Bringing-back-dial-up.md
├── Embedding-V8-in-the-real-world.md
├── Performance-Empathy.md
├── Web-APIs-in-Node.js-Core.md
├── em-vs-rem-vs-px.md
└── react-scripts.md
├── ElAmraoui
├── AI_Debate.md
└── Fail to Scale.md
├── bondif
└── git-intermediate-techniques.md
├── iduoad
├── 10-tips-to-host-your-web-apps-for-free.md
├── 7-tips-to-pimp-your-git-history.md
├── 700+-web-developers-asked-me-to-give-them-linkedin.md
├── benmakhlouf-tedxui.md
├── bill-gates-on-investment-and.md
├── building-a-cross-platform-native-app-with-beeware.md
├── cap-theorem-analogy.md
├── cap-theorem-examples.md
├── entrepreneur-ne-fait-surtout-pas-ces-erreurs-oussama-ammar.md
├── how-netflix-thinks-of-devops.md
├── how-to-improve-your-productivity-as-a-working-programmer.md
├── kubernetes-storage-lingo-101.md
├── kustomize-deploy-your-app-with-template-free-yaml.md
├── oops!-oop-is-not-what-i-thought.md
├── predicting-the-future-of-the-web-(2020_2025).md
├── surviving-the-framework-hype-cycle.md
├── the-javascript-starter-kit-manifesto.md
├── the-single-biggest-reason-why-startups-succeed.md
└── using-containers-to-create-the-world-s-fastest-openstack.md
└── nfaihi
├── 10-excellent-ways-to-secure-spring-boot-applications.md
├── 6-months-of-using-graphql.md
├── 7-security-measures-to-protect-your-servers.md
├── apache-airflow-for-beginners.md
├── i-had-to-build-my-own-markdown-editor-because-no-tool-was-fast-enough-for-me.md
├── programming-habits-you-should-adopt.md
├── software-developer-trends-of-2020-and-beyond.md
└── three-ways-to-do-good-with-a-side-project.md
/.gitignore:
--------------------------------------------------------------------------------
1 | # Backup files
2 | *.bak
3 |
4 |
5 | # Python
6 | __pycache__/
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: python
2 | script:
3 | - CHANGED_FILES=($(git diff --name-only $TRAVIS_COMMIT_RANGE | grep -E ".+\/.+\.md")) || true;
4 | - echo $CHANGED_FILES
5 | - python scripts/collectalk.py validate --file $CHANGED_FILES
6 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "python.linting.flake8Enabled": true,
3 | "python.linting.enabled": true,
4 | "editor.rulers": [ 79 ]
5 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # talk-collection
2 | If you are a tech maniac, or obsessed with technologies and you love reading and hacking new things and want to share what you have learned with others and make their lives easier without reading a whole article or watching a long talk. This repo is where you can summarize the ideas and topics mentionned in the article/talk. All you need is to follow the steps below.
3 |
4 |
5 | ## Want to contribute :wink:
6 | If you want to contribute, read carefully the steps and the conditions below to stick to one standard format to make it easy to load the files and feed them to a website.
7 |
8 | > NB : Suggestions and improvements are welcomed
9 | ### Specifications
10 | - One folder per contributor
11 | - One markdown file per article/talk/workshop ...
12 | - Filename should be the title of the talk/article and the words must be separated with a dash '-'
13 | - The markdown file should at least contains (all headers should be lowercase)
14 | - **title**
15 | - **description**
16 | - **type** (Article, Talk, Workshop ...)
17 | - **author/speaker/instructor**
18 | - **source** (URL)
19 | - **tags** : at least one ['tag1','tag2']
20 | - **Body** : relevant informations and ideas you got from your reading/watching
21 |
22 | ### Example of a md file :point_down:
23 |
24 |
25 | ---
26 | title: 700+ Web Developers Asked Me To Give Them LinkedIn Profile Feedback And These Are My 🖐️ 5 Top Tips.
27 | description: Tips to improve linkedin account visibility
28 | type: article
29 | author: Andrew Brown
30 | source: https://dev.to/exampro/700-web-developers-asked-me-to-give-them-linkedin-profile-feedback-and-these-are-my-5-top-tips-5382
31 | tags: ['Web','Career']
32 | ---
33 | - Profile picture colored instead of black and white
34 | - Add a banner (https://goingsocial.ca/the-linkedin-cheat-sheet-for-image-sizing-dimensions)
35 | - Heading is important
36 |
37 |
38 | ### To do
39 | If you already pushed some articles or talks, that do not respect the previous conditions, please try to refactor and push them again :pray:.
40 |
41 | ## Contributors :raised_hands:
42 |
43 | [
](https://github.com/Iduoad) |[
](https://github.com/nfaihi) |[
](https://github.com/SihamBen) |[
](https://github.com/bondif) |[
](https://github.com/Aymane11) | [
](https://github.com/Elamraoui-Sohayb) | [
](https://github.com/elkamondo)
44 | :---:|:---:|:---:|:---:|:---:|:---:|:---:|
45 | [Iduoad](https://github.com/Iduoad)|[nfaihi](https://github.com/nfaihi)|[SihamBen](https://github.com/SihamBen)|[bondif](https://github.com/bondif)|[Aymane11](https://github.com/aymane11)|[Elamraoui](https://github.com/Elamraoui-Sohayb)|[elkamondo](https://github.com/elkamondo)
46 |
--------------------------------------------------------------------------------
/db/talks.json:
--------------------------------------------------------------------------------
1 | {
2 | "talks": {
3 | "Bendaia": [
4 | {
5 | "title": "Web APIs in Node.js Core:Past, Present, and Future",
6 | "description": "Adding Browser APIs to Node.js as Buildings",
7 | "type": "Talk",
8 | "tags": [
9 | "Javascript",
10 | "node.js"
11 | ],
12 | "filePath": "talks/Bendaia/Web-APIs-in-Node.js-Core.md",
13 | "talkOwner": "Joyee Cheung",
14 | "linkSource": "https://www.youtube.com/watch?v=ceiUozUFF3Y"
15 | },
16 | {
17 | "title": "9 Tricks for Kickass JavaScript Developers in 2019",
18 | "description": "Some tips and tricks to write a better JavaScript code",
19 | "type": "Article",
20 | "tags": [
21 | "Javascript"
22 | ],
23 | "filePath": "talks/Bendaia/9-tricks-for-kickass-javascript-developers-in-2019.md",
24 | "talkOwner": "Lukas Gisder-Dub\u00e9",
25 | "linkSource": "https://levelup.gitconnected.com/9-tricks-for-kickass-javascript-developers-in-2019-eb01dd3def2a"
26 | },
27 | {
28 | "title": "Performance Empathy",
29 | "description": "performance issues and some real and practical solutions",
30 | "type": "Talk",
31 | "tags": [
32 | "web",
33 | "performance"
34 | ],
35 | "filePath": "talks/Bendaia/Performance-Empathy.md",
36 | "talkOwner": "Houssein Djirdeh",
37 | "linkSource": "https://www.youtube.com/watch?v=uIBYN6w9cBc&t=239s"
38 | },
39 | {
40 | "title": "Bringing back dial-up:the internet over SMS",
41 | "description": "building a browser that makes all requests over SMS",
42 | "type": "Talk",
43 | "tags": [
44 | "Javascript",
45 | "node.js"
46 | ],
47 | "filePath": "talks/Bendaia/Bringing-back-dial-up.md",
48 | "talkOwner": "Alexandra Sunderland",
49 | "linkSource": "https://www.youtube.com/watch?v=ZsBAkSxwU5c"
50 | },
51 | {
52 | "title": "Everything you need to know about react-scripts",
53 | "description": "overview of react-scripts,different types and how create-react-app works",
54 | "type": "Article",
55 | "tags": [
56 | "Javascript",
57 | "React"
58 | ],
59 | "filePath": "talks/Bendaia/react-scripts.md",
60 | "talkOwner": "Ibrahima Ndaw",
61 | "linkSource": "https://blog.logrocket.com/everything-you-need-to-know-about-react-scripts"
62 | },
63 | {
64 | "title": "EM vs REM vs PX \u2013 Why you shouldn't \u201cjust use pixels\u201d",
65 | "description": "comparison between px ,em,rem and best use cases for each unit",
66 | "type": "Article",
67 | "tags": [
68 | "css"
69 | ],
70 | "filePath": "talks/Bendaia/em-vs-rem-vs-px.md",
71 | "talkOwner": "simon-willans",
72 | "linkSource": "https://engageinteractive.co.uk/blog/em-vs-rem-vs-px"
73 | },
74 | {
75 | "title": "Embedding V8 in the real world",
76 | "description": "challenges the NativeScript team met embedding V8 in a mobile framework",
77 | "type": "Talk",
78 | "tags": [
79 | "V8",
80 | "NativeScript",
81 | "JavaScript"
82 | ],
83 | "filePath": "talks/Bendaia/Embedding-V8-in-the-real-world.md",
84 | "talkOwner": "Stanimira Vlaeva",
85 | "linkSource": "https://www.youtube.com/watch?v=wz7Znu6tqFw"
86 | }
87 | ],
88 | "bondif": [
89 | {
90 | "title": "Git Intermediate Techniques",
91 | "description": "Kevin shows us concepts that can help us work more efficiently with the popular open-source version control software.",
92 | "NB": "This is not a full course summary, but just what I found most useful in day to day work with Git.",
93 | "type": "Course",
94 | "tags": [
95 | "Git",
96 | "VCS"
97 | ],
98 | "filePath": "talks/bondif/git-intermediate-techniques.md",
99 | "talkOwner": "Kevin Skoglund",
100 | "linkSource": "https://www.linkedin.com/learning/git-intermediate-techniques"
101 | }
102 | ],
103 | "ElAmraoui": [
104 | {
105 | "title": "Montreal AI Debate",
106 | "description": "A historic debate between two of AI pioneers, discussing the big questions about creating hybrid systems of AI, finding the right \"priors\" for knowledge, perspectives on where AI could go next?.",
107 | "type": "Debate",
108 | "tags": [
109 | "AI",
110 | "Deep Learning"
111 | ],
112 | "filePath": "talks/ElAmraoui/AI_Debate.md",
113 | "talkOwner": "Gary Marcus / Yoshua Benjio",
114 | "linkSource": "https://www.youtube.com/watch?v=EeqwFjqFvJA"
115 | }
116 | ],
117 | "iduoad": [
118 | {
119 | "title": "The single biggest reason why startups succeed",
120 | "description": "Why does startups, yet awesome, fails. And how do they succed",
121 | "type": "Talk",
122 | "tags": [
123 | "Startups"
124 | ],
125 | "filePath": "talks/iduoad/the-single-biggest-reason-why-startups-succeed.md",
126 | "talkOwner": "Bill Gross",
127 | "linkSource": "https://www.youtube.com/watch?v=bNpx7gpSqbY"
128 | },
129 | {
130 | "title": "Benmakhlouf TEDxUI",
131 | "description": "talk about Success cycles of people and companies compared to tracks (athletism)",
132 | "type": "Talk",
133 | "tags": [
134 | "Career",
135 | "Startup"
136 | ],
137 | "filePath": "talks/iduoad/benmakhlouf-tedxui.md",
138 | "talkOwner": "Samir Benmakhlouf",
139 | "linkSource": "https://www.youtube.com/watch?v=iItgDhqbX_E"
140 | },
141 | {
142 | "title": "Surviving the Framework Hype Cycle",
143 | "description": "What is the hype cycle, and how to survive it, Rails as a study case.",
144 | "type": "Talk",
145 | "tags": [
146 | "frameworks"
147 | ],
148 | "filePath": "talks/iduoad/surviving-the-framework-hype-cycle.md",
149 | "talkOwner": "Brandon Hayes",
150 | "linkSource": "https://www.youtube.com/watch?v=O6TtfK9gGvA"
151 | },
152 | {
153 | "title": "CAP theorem - part 2",
154 | "description": "Examples of the CAP theorem",
155 | "type": "Talk",
156 | "tags": [
157 | "Distributed-Systems",
158 | "CAP-Theorem"
159 | ],
160 | "filePath": "talks/iduoad/cap-theorem-examples.md",
161 | "talkOwner": "Abderrahim Ouakki",
162 | "linkSource": "https://www.facebook.com/groups/DevC.Casablanca/permalink/1016943958707581/"
163 | },
164 | {
165 | "title": "How Netflix Thinks of Devops",
166 | "description": "How Do Netflix approchs Devops",
167 | "type": "Talk",
168 | "tags": [
169 | "DevOps"
170 | ],
171 | "filePath": "talks/iduoad/how-netflix-thinks-of-devops.md",
172 | "talkOwner": "Dave Hahn",
173 | "linkSource": "https://www.youtube.com/watch?v=UTKIT6STSVM"
174 | },
175 | {
176 | "title": "700+ Web Developers Asked Me To Give Them LinkedIn Profile Feedback And These Are My \ud83d\udd90\ufe0f 5 Top Tips.",
177 | "description": "Tips to improve linkedin account visibility",
178 | "type": "Article",
179 | "tags": [
180 | "Web",
181 | "Career"
182 | ],
183 | "filePath": "talks/iduoad/700+-web-developers-asked-me-to-give-them-linkedin.md",
184 | "talkOwner": "Andrew Brown",
185 | "linkSource": "https://dev.to/exampro/700-web-developers-asked-me-to-give-them-linkedin-profile-feedback-and-these-are-my-5-top-tips-5382"
186 | },
187 | {
188 | "title": "The JavaScript Starter Kit Manifesto",
189 | "description": "Solve JS developers fatigue problems (due to the choice paradox created by the huge number of JS code out there) by using starter kits",
190 | "type": "Talk",
191 | "tags": [
192 | "javascript",
193 | "methodology",
194 | "best_practices"
195 | ],
196 | "filePath": "talks/iduoad/the-javascript-starter-kit-manifesto.md",
197 | "talkOwner": "Cory House",
198 | "linkSource": "https://www.youtube.com/watch?v=jubd2opc4Ps"
199 | },
200 | {
201 | "title": "Building a cross-platform native app with BeeWare",
202 | "description": "Introduction of Beeware, a python framework for bulding cross-platform native apps",
203 | "type": "Talk",
204 | "tags": [
205 | "Python",
206 | "Mobile",
207 | "Cross-Platform"
208 | ],
209 | "filePath": "talks/iduoad/building-a-cross-platform-native-app-with-beeware.md",
210 | "talkOwner": "Russell Keith-Magee",
211 | "linkSource": "https://www.youtube.com/watch?v=qaPzlIJ57dk"
212 | },
213 | {
214 | "title": "Predicting the future of the web (2020/2025)",
215 | "description": "Richard makes 5 predictions about the future of JS",
216 | "type": "Talk",
217 | "tags": [
218 | "JavaScript",
219 | "Web"
220 | ],
221 | "filePath": "talks/iduoad/predicting-the-future-of-the-web-(2020_2025).md",
222 | "talkOwner": "Richard feldman",
223 | "linkSource": "https://www.youtube.com/watch?v=prlYwbCHTdE"
224 | },
225 | {
226 | "title": "Entrepreneur? Ne fait SURTOUT PAS ces ERREURS - Oussama Ammar (interview compl\u00e8te)",
227 | "description": "Oussama Ammar (Founder of the Family incubator) talking about entrepreneurship",
228 | "type": "Chat",
229 | "tags": [
230 | "Entrepreneurship",
231 | "Startup"
232 | ],
233 | "filePath": "talks/iduoad/entrepreneur-ne-fait-surtout-pas-ces-erreurs-oussama-ammar.md",
234 | "talkOwner": "Oussama Ammar",
235 | "linkSource": "https://www.youtube.com/watch?v=kbfnRPcrKL0"
236 | },
237 | {
238 | "title": "CAP theorem",
239 | "description": "Analogy with a call center to introduce CAP theorem",
240 | "type": "Talk",
241 | "tags": [
242 | "Distributed-Systems",
243 | "CAP-Theorem"
244 | ],
245 | "filePath": "talks/iduoad/cap-theorem-analogy.md",
246 | "talkOwner": "Abderrahim Ouakki",
247 | "linkSource": "https://www.facebook.com/groups/DevC.Casablanca/permalink/1016943958707581/"
248 | },
249 | {
250 | "title": "10 tips to host your web apps for free",
251 | "description": "Patrick describes different ways one can host his website.",
252 | "type": "Article",
253 | "tags": [
254 | "Web",
255 | "Hosting"
256 | ],
257 | "filePath": "talks/iduoad/10-tips-to-host-your-web-apps-for-free.md",
258 | "talkOwner": "Patrick Triest",
259 | "linkSource": "https://blog.patricktriest.com/host-webapps-free/"
260 | },
261 | {
262 | "title": "Kubernetes Storage Lingo 101 (Kubernetes Storage Lingo 101)",
263 | "description": "Introduction to the storage ecosystem and terminology in kubernetes.",
264 | "type": "Talk",
265 | "tags": [
266 | "Kubernetes",
267 | "Storage"
268 | ],
269 | "filePath": "talks/iduoad/kubernetes-storage-lingo-101.md",
270 | "talkOwner": "Saad Ali",
271 | "linkSource": "https://www.youtube.com/watch?v=uSxlgK1bCuA"
272 | },
273 | {
274 | "title": "Oops! OOP Is Not What I Thought",
275 | "description": "A different point of view on OOP",
276 | "type": "Talk",
277 | "tags": [
278 | "OOP"
279 | ],
280 | "filePath": "talks/iduoad/oops!-oop-is-not-what-i-thought.md",
281 | "talkOwner": "Anjana Vakil",
282 | "linkSource": "https://www.youtube.com/watch?v=uoMHk_nrliQ"
283 | },
284 | {
285 | "title": "7 Tips to Pimp Your Git History",
286 | "description": "Roland talks about ways to make your git history look better.",
287 | "type": "Talk",
288 | "tags": [
289 | "Git"
290 | ],
291 | "filePath": "talks/iduoad/7-tips-to-pimp-your-git-history.md",
292 | "talkOwner": "Roland Weisleder",
293 | "linkSource": "https://www.youtube.com/watch?v=prlYwbCHTdE"
294 | },
295 | {
296 | "title": "'Kustomize: Deploy Your App with Template Free YAML'",
297 | "description": "Introduction to a Kustomize, which make you custumize your k8s deployments without templating the yaml files.",
298 | "type": "Talk",
299 | "tags": [
300 | "Kubernetes",
301 | "DevOps"
302 | ],
303 | "filePath": "talks/iduoad/kustomize-deploy-your-app-with-template-free-yaml.md",
304 | "talkOwner": "Ryan Cox",
305 | "linkSource": "https://www.youtube.com/watch?v=ahMIBxufNR0"
306 | },
307 | {
308 | "title": "Bill Gates on investment and technology",
309 | "description": "Bill gates talks about world problems and technlogy",
310 | "type": "Chat",
311 | "tags": [
312 | "Technology",
313 | "Startup"
314 | ],
315 | "filePath": "talks/iduoad/bill-gates-on-investment-and.md",
316 | "talkOwner": "Bill Gates",
317 | "linkSource": "https://www.youtube.com/watch?v=W5g4sPi1wd4"
318 | },
319 | {
320 | "title": "How to Improve Your Productivity as a Working Programmer",
321 | "description": "Tips about improving programmer's productivity",
322 | "type": "Article",
323 | "tags": [
324 | "Productivity"
325 | ],
326 | "filePath": "talks/iduoad/how-to-improve-your-productivity-as-a-working-programmer.md",
327 | "talkOwner": "malipster",
328 | "linkSource": "https://malisper.me/how-to-improve-your-productivity-as-a-working-programmer/"
329 | },
330 | {
331 | "title": "Canonical - Using containers to create the World s fastest OpenStack",
332 | "description": "Using LXC/LXD to build fast Openstack clouds.",
333 | "type": "Talk",
334 | "tags": [
335 | "Cloud",
336 | "Containers",
337 | "LXC/LXD",
338 | "OpenStack"
339 | ],
340 | "filePath": "talks/iduoad/using-containers-to-create-the-world-s-fastest-openstack.md",
341 | "talkOwner": "[Dustin Kirkland, Tycho Andersen]",
342 | "linkSource": "https://www.youtube.com/watch?v=lM2wwYDLB2M"
343 | }
344 | ],
345 | "nfaihi": [
346 | {
347 | "title": "Programming Habits You Should Adopt",
348 | "description": "Programming Habits You Should Adopt",
349 | "type": "Article",
350 | "tags": [
351 | "Programming",
352 | "Habits",
353 | "Better programmer"
354 | ],
355 | "filePath": "talks/nfaihi/programming-habits-you-should-adopt.md",
356 | "talkOwner": "Daan",
357 | "linkSource": "https://levelup.gitconnected.com/programming-habits-you-should-adopt-8ab75419fb09"
358 | },
359 | {
360 | "title": "Apache Airflow for beginners",
361 | "description": "An introduction to Airflow for beginners",
362 | "type": "Talk",
363 | "tags": [
364 | "Apache",
365 | "Airflow",
366 | "Python",
367 | "Data pipelines"
368 | ],
369 | "filePath": "talks/nfaihi/apache-airflow-for-beginners.md",
370 | "talkOwner": "Varya Karpenko",
371 | "linkSource": "https://www.youtube.com/watch?v=YWtfU0MQZ_4"
372 | },
373 | {
374 | "title": "7 Security Measures to Protect Your Servers",
375 | "description": "Going through some fundamental security practices to protect your infrastructures and how it enhances security",
376 | "type": "Article",
377 | "tags": [
378 | "Security",
379 | "Servers",
380 | "Networks"
381 | ],
382 | "filePath": "talks/nfaihi/7-security-measures-to-protect-your-servers.md",
383 | "talkOwner": "Justin Ellingwood & dbrian",
384 | "linkSource": "https://www.digitalocean.com/community/tutorials/7-security-measures-to-protect-your-servers"
385 | },
386 | {
387 | "title": "10 Excellent Ways to Secure Spring Boot Applications",
388 | "description": "10 Excellent Ways to Secure Spring Boot Applications",
389 | "type": "Talk",
390 | "tags": [
391 | "Spring Boot",
392 | "Security"
393 | ],
394 | "filePath": "talks/nfaihi/10-excellent-ways-to-secure-spring-boot-applications.md",
395 | "talkOwner": "Matt Raible - Brian Demers",
396 | "linkSource": "https://www.youtube.com/watch?v=H1gCqyo5gIo"
397 | },
398 | {
399 | "title": "6 Months Of Using GraphQL",
400 | "description": "Going through some fundamental security practices to protect your infrastructures and how it enhances security",
401 | "type": "Article",
402 | "tags": [
403 | "GraphQL",
404 | "API",
405 | "Programming"
406 | ],
407 | "filePath": "talks/nfaihi/6-months-of-using-graphql.md",
408 | "talkOwner": "Manish Jain",
409 | "linkSource": "https://levelup.gitconnected.com/6-months-of-using-graphql-faa0fb68b4af"
410 | },
411 | {
412 | "title": "Three ways to do good with a side project",
413 | "description": "Importance of side projects and how they can craft your skills and ideas",
414 | "type": "Article",
415 | "tags": [
416 | "Side projects",
417 | "Developers",
418 | "Career"
419 | ],
420 | "filePath": "talks/nfaihi/three-ways-to-do-good-with-a-side-project.md",
421 | "talkOwner": "Matthew Revell",
422 | "linkSource": "https://dev.to/heroku/three-ways-to-do-good-with-a-side-project-59j9"
423 | },
424 | {
425 | "title": "I had to build my own Markdown Editor because no tool was fast enough for me",
426 | "description": "building a Markdown editor with electron",
427 | "type": "Article",
428 | "tags": [
429 | "Markdown",
430 | "Productivity",
431 | "Editors"
432 | ],
433 | "filePath": "talks/nfaihi/i-had-to-build-my-own-markdown-editor-because-no-tool-was-fast-enough-for-me.md",
434 | "talkOwner": "Andrew Brown",
435 | "linkSource": "https://dev.to/exampro/i-had-to-build-my-own-markdown-editor-because-no-tool-was-fast-enough-for-me-3b3o"
436 | },
437 | {
438 | "title": "Software Developer Trends of 2020 and Beyond",
439 | "description": "Software Developer Trends of 2020 and Beyond",
440 | "type": "Article",
441 | "tags": [
442 | "Programming",
443 | "Developers"
444 | ],
445 | "filePath": "talks/nfaihi/software-developer-trends-of-2020-and-beyond.md",
446 | "talkOwner": "The Educative Team",
447 | "linkSource": "https://medium.com/better-programming/software-developer-trends-of-2020-and-beyond-d1b955bc46b8"
448 | }
449 | ]
450 | },
451 | "tags": [
452 | "OOP",
453 | "Containers",
454 | "DevOps",
455 | "Cross-Platform",
456 | "VCS",
457 | "Career",
458 | "Cloud",
459 | "Startup",
460 | "OpenStack",
461 | "Better programmer",
462 | "Security",
463 | "Git",
464 | "Deep Learning",
465 | "Networks",
466 | "Javascript",
467 | "frameworks",
468 | "Startups",
469 | "node.js",
470 | "Kubernetes",
471 | "performance",
472 | "Programming",
473 | "Python",
474 | "CAP-Theorem",
475 | "Storage",
476 | "css",
477 | "Productivity",
478 | "Mobile",
479 | "web",
480 | "Servers",
481 | "Distributed-Systems",
482 | "LXC/LXD",
483 | "Habits",
484 | "AI"
485 | ]
486 | }
--------------------------------------------------------------------------------
/scripts/cli.py:
--------------------------------------------------------------------------------
1 | from argparse import Namespace
2 | from typing import Dict, List
3 | from helpers import split_list, has_common_tags
4 | from validate import validate, extract
5 | import re as regex
6 | import sys
7 |
8 | # Define aliases for readability
9 | Talk = Dict[str, str]
10 | Talks = List[Talk]
11 | User = str
12 |
13 |
14 | def print_talk(talk: Talk) -> None:
15 | """Display information about the talk."""
16 |
17 | print(f" {talk['title'].center(50)}\n")
18 | print(f" {talk['type']} by {talk['talkOwner']}")
19 | print(f" -> {talk['description']}")
20 | print(f"\n Tags: {talk['tags']}")
21 | print(f" Source: {talk['linkSource']}")
22 | print(f"\n File path: {talk['filePath']}")
23 | print(f"\n{'-' * 60}")
24 |
25 |
26 | def fetch_tags(db: Dict[str, Dict[User, Talks]], args: Namespace) -> None:
27 | """Display available tags in database."""
28 |
29 | if args.list:
30 | # find tags / find tags -ls / find tags --list
31 | print('Available tags are:')
32 |
33 | # Print tags in columns
34 | for chunk in split_list(db['tags'], 3):
35 | for tag in chunk:
36 | print(f" # {tag:20}", end="")
37 | print()
38 |
39 |
40 | def fetch_talks(db: Dict[str, Dict[User, Talks]], args: Namespace) -> None:
41 | """Fetch talks from database and display them."""
42 |
43 | for user, talks in db['talks'].items():
44 | for talk in talks:
45 | # find talks --title .. --user .. --tags ..
46 | if args.tags and args.user:
47 | if regex.search(args.title, talk['title'])\
48 | and has_common_tags(talk['tags'], args.tags)\
49 | and args.user == user:
50 | print_talk(talk)
51 | # find talks --title .. --user ..
52 | elif args.user and args.tags is None:
53 | if regex.search(args.title, talk['title'])\
54 | and args.user == user:
55 | print_talk(talk)
56 | # find talks --title .. --tags ..
57 | elif args.tags and args.user is None:
58 | if regex.search(args.title, talk['title'])\
59 | and has_common_tags(talk['tags'], args.tags):
60 | print_talk(talk)
61 | else:
62 | # find talks --title ..
63 | if regex.search(args.title, talk['title']):
64 | print_talk(talk)
65 |
66 |
67 | def fetch_users(db: Dict[str, Dict[User, Talks]], args: Namespace) -> None:
68 | """Fetch users from database and display their usernames."""
69 |
70 | if args.list:
71 | # find users / find users -ls / find users --list
72 | print('Available users are:')
73 |
74 | # Print usernames in columns
75 | for chunk in split_list(list(db['talks'].keys()), 3):
76 | for user in chunk:
77 | print(f" # {user:20}", end="")
78 | print()
79 |
80 |
81 | def validate_note(db: Dict[str, Dict[User, Talks]], args: Namespace) -> None:
82 | """Verify if the note contains required metadata."""
83 |
84 | # validate --file .. .. ..
85 | for filename in args.file:
86 | with filename as file:
87 | if not validate(extract(file)):
88 | sys.exit(1)
89 | sys.exit(0)
90 |
91 |
92 | def submit_note(db: Dict[str, Dict[User, Talks]], args: Namespace) -> None:
93 | print('Work in progress ...')
94 |
--------------------------------------------------------------------------------
/scripts/collectalk.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | from argparse import ArgumentParser, FileType
4 | from helpers import read_json
5 | import cli
6 |
7 | # Helper messages for CLI
8 | txt = {
9 | 'prog.desc':
10 | 'Add notes about talks and look for ones you are interested about.',
11 | 'find': 'find talks/users/tags',
12 | 'talks': 'find talks with custom filters',
13 | 'talks.title': "filter by title (eg: '.* expr[ess]?', 'A title')",
14 | 'talks.user': 'filter by user who created the notes about the talk',
15 | 'talks.tags': 'filter by tags (eg. JavaScript, ML, ...)',
16 | 'users': 'find users with custom filters',
17 | 'users.list': 'list available users',
18 | 'tags': 'find tags with custom filters',
19 | 'tags.list': 'list available tags',
20 | 'validate': 'validate structure of notes',
21 | 'validate.file': 'check if the file contains required metadata',
22 | 'submit': 'add notes about a talk'
23 | }
24 |
25 |
26 | parser = ArgumentParser(description=txt['prog.desc'])
27 | parser.add_argument(
28 | '-v', '--version', action='version', version='%(prog)s version 1.0.0')
29 | subparsers = parser.add_subparsers()
30 |
31 | # Create the command 'find'
32 | find_parser = subparsers.add_parser('find', help=txt['find'])
33 | find_subparsers = find_parser.add_subparsers()
34 |
35 | # Create the subcommand 'find talks'
36 | talks_parser = find_subparsers.add_parser('talks', help=txt['talks'])
37 | talks_parser.add_argument(
38 | '-t', '--title', default='.*', help=txt['talks.title'], type=str)
39 | talks_parser.add_argument('-u', '--user', help=txt['talks.user'], type=str)
40 | talks_parser.add_argument(
41 | '--tags', nargs='+', help=txt['talks.tags'], type=str)
42 | talks_parser.set_defaults(func=cli.fetch_talks)
43 |
44 | # Create the subcommand 'find users'
45 | users_parser = find_subparsers.add_parser('users', help=txt['users'])
46 | users_parser.add_argument(
47 | '-ls', '--list', default=True, action='store_true', help=txt['users.list'])
48 | users_parser.set_defaults(func=cli.fetch_users)
49 |
50 | # Create the subcommand 'find tags'
51 | tags_parser = find_subparsers.add_parser('tags', help=txt['tags'])
52 | tags_parser.add_argument(
53 | '-ls', '--list', default=True, action='store_true', help=txt['tags.list'])
54 | tags_parser.set_defaults(func=cli.fetch_tags)
55 |
56 | # Create the command 'validate'
57 | validate_parser = subparsers.add_parser('validate', help=txt['validate'])
58 | validate_parser.add_argument(
59 | '--file', nargs='+', help=txt['validate.file'], type=FileType('r'))
60 | validate_parser.set_defaults(func=cli.validate_note)
61 |
62 | # Create the command 'submit'
63 | submit_parser = subparsers.add_parser('submit', help=txt['submit'])
64 | submit_parser.set_defaults(func=cli.submit_note)
65 |
66 | if __name__ == '__main__':
67 | db = read_json('db/talks.json')
68 |
69 | args = parser.parse_args()
70 |
71 | if 'func' in args:
72 | args.func(db, args)
73 | else:
74 | # if the user calls the script without any command
75 | parser.print_help()
76 |
--------------------------------------------------------------------------------
/scripts/helpers.py:
--------------------------------------------------------------------------------
1 | from typing import List, Dict, Iterator
2 | from os import path
3 | import json
4 |
5 |
6 | def read_json(file_path: str) -> str:
7 | """Read a JSON file."""
8 |
9 | try:
10 | with open(path.abspath(file_path), mode='r', encoding='UTF-8') as file:
11 | return json.loads(file.read())
12 | except FileNotFoundError:
13 | return {}
14 |
15 |
16 | def write_json(dic: Dict[any, any], file_path: str) -> str:
17 | """Convert a dictionary to a JSON file."""
18 |
19 | with open(path.abspath(file_path), mode='w', encoding='UTF-8') as file:
20 | json.dump(dic, file, indent=4)
21 |
22 |
23 | def split_list(alist: List[any], chunkSize: int) -> Iterator[any]:
24 | """Split a list into chunks.
25 | Example: ([3, 4, 5, 6], 2) == [[3, 4], [5, 6]]
26 | """
27 | n = max(1, chunkSize)
28 | return (alist[i:i+n] for i in range(0, len(alist), n))
29 |
30 |
31 | def has_common_tags(talk_tags: List[str],
32 | args_tags: List[str],
33 | ignore_case: bool = True) -> bool:
34 | """Checks if two lists has elements in common.
35 | Example: ([1, 2], [2]) == True / ([3, 4], [5, 6]) == False
36 | """
37 | talk_tags = set(map(str.lower, talk_tags)) if ignore_case else talk_tags
38 | args_tags = set(map(str.lower, args_tags)) if ignore_case else args_tags
39 | return len(talk_tags.intersection(args_tags)) > 0
40 |
--------------------------------------------------------------------------------
/scripts/validate.py:
--------------------------------------------------------------------------------
1 | from sys import argv, exit
2 |
3 | def extract(file):
4 | counter=0
5 | d={}
6 | for line in file:
7 | if counter == 2 :
8 | break
9 | if "---\n" in line:
10 | counter+=1
11 | continue
12 | #print(line.split(':',1))
13 | if ':' in line:
14 | key=line.split(':',1)[0].strip()
15 | value=line.split(':',1)[1].strip()
16 | d[key]=value
17 | return d
18 |
19 | def key_exists(d,key):
20 | value = d.get(key)
21 | if value is None or value == '' or value.isspace():
22 | return False
23 | return True
24 |
25 | def validate(d):
26 | keys = ['title', 'type', 'description', 'source', 'tags']
27 | for key in keys:
28 | if key_exists(d,key) == False:
29 | return False
30 | if not (key_exists(d,'author') or key_exists(d,'speaker') or key_exists(d,'instructor')):
31 | return False
32 | return True
33 |
34 | if __name__ == "__main__":
35 | if len(argv) > 1:
36 | for filename in argv[1:]:
37 | if not validate(extract(filename)):
38 | exit(1)
39 | exit(0)
40 |
--------------------------------------------------------------------------------
/talks/Bendaia/9-tricks-for-kickass-javascript-developers-in-2019.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 9 Tricks for Kickass JavaScript Developers in 2019
3 | description: Some tips and tricks to write a better JavaScript code
4 | type: article
5 | author: Lukas Gisder-Dubé
6 | source: https://levelup.gitconnected.com/9-tricks-for-kickass-javascript-developers-in-2019-eb01dd3def2a
7 | tags : ['Javascript']
8 | ---
9 | - Use async / await
10 | - We can use for...of to loop through an array and execute async code inside the block, the execution will be halted until each call has succeeded.
11 | - promise.all :fetch all in parallel
12 | - Destructuring
13 | - Truthy like:empty arrays,empty objects,Everything else & falsy values like:strings with the length of 0, the number 0,false,undefined,null,NaN
14 | - Logical and ternary operators
15 | - Optional chaining: check if an object has a property before accessing
16 | - binding
17 | - Use parcel
18 | - Write more code yourself
19 |
--------------------------------------------------------------------------------
/talks/Bendaia/Bringing-back-dial-up.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Bringing back dial-up:the internet over SMS
3 | description: building a browser that makes all requests over SMS
4 | type: talk
5 | speaker: Alexandra Sunderland
6 | source: https://www.youtube.com/watch?v=ZsBAkSxwU5c
7 | tags: ['Javascript','node.js']
8 | ---
9 | - Problem: Internet access is so expensive in some countries
10 | - 1st approach: setting up a python server that would grab the data from internet and send it back via SMS
11 | - 2nd approach: Build a browser(an android app,Twilio as a endpoint to send SMS to , Node.Js server)
12 | - challenges:SMS only handle 160 characters at a time
13 | - We get rid of all the unnecessary data(css ,header data,comments..)
14 | - replace long links with short links
15 |
--------------------------------------------------------------------------------
/talks/Bendaia/Embedding-V8-in-the-real-world.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Embedding V8 in the real world
3 | description: challenges the NativeScript team met embedding V8 in a mobile framework
4 | type: talk
5 | speaker: Stanimira Vlaeva
6 | source: https://www.youtube.com/watch?v=wz7Znu6tqFw
7 | tags : ['V8','NativeScript','JavaScript']
8 | ---
9 | - NativeScript is a framework for building native iOS and android apps using web technologies
10 | - NativeScript supports angular and Vue.Js
11 | - NativeScript has metadata generator:it gets informations from native library so we can use them in Js
12 | - Java native interface is a bridge between V8 and android runtime
13 | - Marshalling handles the conversion between JavaScript and Java datatypes
14 | - We do not convert object , we create a java object and a Js proxy
15 | - Challenges : We should synchronize garpage collector in Java and V8
16 |
17 |
--------------------------------------------------------------------------------
/talks/Bendaia/Performance-Empathy.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Performance Empathy
3 | description: performance issues and some real and practical solutions
4 | type: talk
5 | speaker: Houssein Djirdeh
6 | source: https://www.youtube.com/watch?v=uIBYN6w9cBc&t=239s
7 | tags: ['web','performance']
8 | ---
9 | - Performance is a big problem:50% of sites shifts over 1MB of Javascript
10 | - performance shouldn't be related to only some users conditions
11 | - Performance is an after thought:we all start thinking about it after we start having issues.
12 | - Solutions:better defaults(make tools and frameworks better)
13 | - better guard rails
14 | - make the best of a tool
15 |
--------------------------------------------------------------------------------
/talks/Bendaia/Web-APIs-in-Node.js-Core.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Web APIs in Node.js Core:Past, Present, and Future
3 | description: Adding Browser APIs to Node.js as Buildings
4 | type: talk
5 | speaker: Joyee Cheung
6 | source: https://www.youtube.com/watch?v=ceiUozUFF3Y
7 | tags : ['Javascript','node.js']
8 | ---
9 | - Node.js and Browsers had a lot of APIs that are equivelent but with different design.
10 | - Exemples of gaps between the two platforms
11 | - Effort to bring the two worlds closer together, in particular by introducing more Web APIs into Node.js core
12 | - Some web APIs are still in discussion because not every Web API, designed for the browsers, makes sense for Node.js
13 | - Node.js team adopt a small core philosophy
14 | - workflow of adding web APIs to node.js core
15 |
--------------------------------------------------------------------------------
/talks/Bendaia/em-vs-rem-vs-px.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: EM vs REM vs PX – Why you shouldn't “just use pixels”
3 | description: comparison between px ,em,rem and best use cases for each unit
4 | type: article
5 | author: simon-willans
6 | source: https://engageinteractive.co.uk/blog/em-vs-rem-vs-px
7 | tags : ['css']
8 | ---
9 | - Using px don't guarantee accessibilty
10 | - REMs are a way of setting font-sizes based on the font-size of the root HTML element
11 | - Use REMs for sizes and spacing.
12 | - Use EMs for media queries.
13 |
--------------------------------------------------------------------------------
/talks/Bendaia/react-scripts.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Everything you need to know about react-scripts
3 | description: overview of react-scripts,different types and how create-react-app works
4 | type: article
5 | author: Ibrahima Ndaw
6 | source: https://blog.logrocket.com/everything-you-need-to-know-about-react-scripts
7 | tags: ['Javascript','React']
8 | ---
9 | - scripts are located in the package.json
10 | - create-react-app uses Jest as a test runner
11 | - eject script removes the single build dependency from your project
12 |
--------------------------------------------------------------------------------
/talks/ElAmraoui/AI_Debate.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Montreal AI Debate
3 | description: A historic debate between two of AI pioneers, discussing the big questions about creating hybrid systems of AI, finding the right "priors" for knowledge, perspectives on where AI could go next?.
4 | type: Debate
5 | speaker: Gary Marcus / Yoshua Benjio
6 | source: https://www.youtube.com/watch?v=EeqwFjqFvJA
7 | tags: ['AI','Deep Learning']
8 | ---
9 | - Gary Marcus opening position: Neural nets's "classic connectionism couldn't learn universals outside training space". Nontheless, deep learning should be abandoned, but that that it should be "re-contextualized as a tool among many".
10 | - Yoshua Benjio opening statment: the main challenge is how to generalize beyond training data. Deep learning, is "not a particular architecture or a particular training procedure...It's something that's moving, it's more a philosophy as we add more principles to our toolbox".
11 | - Both Agree that AI systems need a hybrid approach; that some kinds of priors knowledge are needed.
12 | - On hybrid systems, Bengio stated he's not interested if hybrids are "about GOFAI [good old fashioned AI] algorithms, like rules and logic, which have a lot of value as inspiration, but trying to take them and glue them to neural nets doesn't work."
13 | - AI is very far from obtaining consciousness; "Philosophers ask should we eventually give person-hood to machines ...I don't think we are anywhere close to understanding this question enough to give answers." -B
14 | - Ethical considirations are just as importnat, "at least as important […] is the question of how we deploy these things, which is the responsibility of everyone in the chain." -B, one way to answer that is through common sense "my own version is that common sense could be a way to build a framework that would allow machines to represent values; we want robots to not do harm to people." -M.
15 |
--------------------------------------------------------------------------------
/talks/ElAmraoui/Fail to Scale.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Fail to Scale
3 | description: An overview of the challenges facing production-level AI, with real cases from the financial sector.
4 | type: Talk
5 | speaker: Ian Scott (Deloitte-Canada)
6 | source: https://www.youtube.com/watch?v=Cod4v_enYb4
7 | tags: ['AI', 'Machine Learning']
8 | ---
9 | - AI & ML have been used and applied long before the hype and buzzwords were coined.
10 | - Doing AI on the ground faces challenges that are different form doing AI for research proposes:
11 | - Setting the wrong metric for AI project value: what is the real ROI for AI teams?
12 | - Miscommunications around the actual problem to solve: Business VS Data Science points of view, affecting the problem to solve and the parameters to start with.
13 | - Business validation: (especially critical in financial services) This is different form AI validation, questioning the model assumptions, the explainability, the data privacy, the risks of deployment, ...
14 | - Most of these obstacles aren't technical, they are organizational. And so are the possible solutions:
15 | - Cultivating AI awareness on the executive side of the project (recognizing a ML problem, recognizing what a Data scientist cannot do, ...)
16 | - Using Multidisciplinary teams: blending pure ML engineers with others types of profiles
17 | - Incorporate Design Thinking into the Delivery Model: minimizing the roadblocks of delivery via Forward Design.
18 |
19 | > " As a community ... ML is cool, let's do all the things around it well before the AI-winter ends up longer than it needs to be!"
20 |
--------------------------------------------------------------------------------
/talks/bondif/git-intermediate-techniques.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Git Intermediate Techniques
3 | description: Kevin shows us concepts that can help us work more efficiently with the popular open-source version control software.
4 | NB: This is not a full course summary, but just what I found most useful in day to day work with Git.
5 | type: Course
6 | instructor: Kevin Skoglund
7 | source: https://www.linkedin.com/learning/git-intermediate-techniques
8 | tags: ['Git', 'VCS']
9 | ---
10 | - Delete branch : `git branch -d new_feature` or `git branch -D new_feature` to force deletion.
11 | - Delete remote branch : `git push --delete origin new_feature`
12 | - List remote branches : `git branch -r`
13 | - Rebase the current branch to the tail of the master branch : `git rebase master`
14 | - Rebase the new_feature to the tail of the master branch : `git rebase master new_feature`
15 | - Interactive rebase (new feature onto master) : `git rebase -i master new_feature`
16 | - Rebase last 3 commits onto the same branch but with the opportunity to modify them : `git rebase -i HEAD~3`
17 | - Pull with rebase : `git pull --rebase`
18 | - List commits with diffs : `git log -p` or `git log --patch`
19 | - List edits between lines 100 and 150 in filename : `git log -L 100,150:filename`
20 | - Annotate file with commit details and ignore whitespaces : `git blame -w filename`
21 |
--------------------------------------------------------------------------------
/talks/iduoad/10-tips-to-host-your-web-apps-for-free.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 10 tips to host your web apps for free
3 | description: Patrick describes different ways one can host his website.
4 | type: article
5 | author: Patrick Triest
6 | source: https://blog.patricktriest.com/host-webapps-free/
7 | tags: ['Web','Hosting']
8 | ---
9 | - Hosting websites(traditional hosting) are not a good deal.
10 | - Cloud services are cheap for hosting static web pages, storage instance.
11 | - Some cloud services offer cheap compute instances to host Dynamic web sites.
12 | - Heroku, and Firebase offer free hosting plan for dynamic websites.
13 | - Serverless is one way, using functions as servers one can host a lightweight dynamic website.
14 | - Docker + VPS.
15 | - Cloudflare for DNS management and SSL.
16 |
--------------------------------------------------------------------------------
/talks/iduoad/7-tips-to-pimp-your-git-history.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 7 Tips to Pimp Your Git History
3 | description: Roland talks about ways to make your git history look better.
4 | type: talk
5 | speaker: Roland Weisleder
6 | source: https://www.youtube.com/watch?v=prlYwbCHTdE
7 | tags: ['Git']
8 | ---
9 | - Initial commits should be as small as possible. you should avoid putting to much into it. (blackhole)
10 | - Write commit messages for your reader. Commit messages should express what changes were made, in a way readers can follow easily.
11 | - Write concise commit summaries, commit messages should be around 50 characters.
12 | - Commits should be atomic, if a commit changed more stuff it should be put into separate commits.
13 | - Add the context of the commit into the commit message e.g add links to issues and stackoverflow answers.
14 | - Use `git add -p` to add changes separately to the next commit.
15 | - Separate changes from refactoring, by adding a hint to the commit message. e.g. `git commit -m "refactoring: my commit message`
16 | - Use `git commit --amend` to edit last commit
17 | - Interactive rebasing is cool `git rebase -i`.
18 |
--------------------------------------------------------------------------------
/talks/iduoad/700+-web-developers-asked-me-to-give-them-linkedin.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 700+ Web Developers Asked Me To Give Them LinkedIn Profile Feedback And These Are My 🖐️ 5 Top Tips.
3 | description: Tips to improve linkedin account visibility
4 | type: article
5 | author: Andrew Brown
6 | source: https://dev.to/exampro/700-web-developers-asked-me-to-give-them-linkedin-profile-feedback-and-these-are-my-5-top-tips-5382
7 | tags: ['Web','Career']
8 | ---
9 | - Profile picture colored instead of black and white
10 | - Add a banner (https://goingsocial.ca/the-linkedin-cheat-sheet-for-image-sizing-dimensions)
11 | - Heading is important
12 |
--------------------------------------------------------------------------------
/talks/iduoad/benmakhlouf-tedxui.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Benmakhlouf TEDxUI
3 | description: talk about Success cycles of people and companies compared to tracks (athletism)
4 | type: talk
5 | speaker: Samir Benmakhlouf
6 | source: https://www.youtube.com/watch?v=iItgDhqbX_E
7 | tags: ['Career','Startup']
8 | ---
9 | - It is okey to start and run with the crowd.
10 | - Always look forward and backward to keep track of the competition
11 | - Stay close to the front runner.
12 | - Save the energy (resources) for the right time.
13 | - Know how to accelerate and when to start growing.
14 | - Break the record i.e. aim for something never done before !
15 | - Success cycle: Innovators -> Early Adopters -> early majority -> late majority -> laggers
16 |
--------------------------------------------------------------------------------
/talks/iduoad/bill-gates-on-investment-and.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Bill Gates on investment and technology
3 | description: Bill gates talks about world problems and technlogy
4 | type: chat
5 | speaker: Bill Gates
6 | source: https://www.youtube.com/watch?v=W5g4sPi1wd4
7 | tags: ['Technology','Startup']
8 | ---
9 | - Solving US education problems came to be way harder than solving world famine and global health.
10 | - Moore Law limits are over by crowd computing and cloud + Quatum computing which is the future.
11 |
--------------------------------------------------------------------------------
/talks/iduoad/building-a-cross-platform-native-app-with-beeware.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Building a cross-platform native app with BeeWare
3 | description: Introduction of Beeware, a python framework for bulding cross-platform native apps
4 | type: talk
5 | speaker: Russell Keith-Magee
6 | source: https://www.youtube.com/watch?v=qaPzlIJ57dk
7 | tags: ['Python','Mobile','Cross-Platform']
8 | ---
9 | - Introduction of Beeware's different components and their roles in the ecosystem.
10 | - Beeware is not just a widget toolkit.
11 | - Beeware is modular, and contain a big toolchain
12 | - Beeware uses libraries and transpilers to use Objective-C, java, C#, and JS apis (cross platform)
13 | - Toga provide a single common api for UI operaions, it renders the operations to native operations using the the libraries.
14 | - Briefcase is the one responsible for packaging.
15 | - There are other tools in the ecosystem.
16 |
--------------------------------------------------------------------------------
/talks/iduoad/cap-theorem-analogy.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CAP theorem
3 | description: Analogy with a call center to introduce CAP theorem
4 | type: talk
5 | speaker: Abderrahim Ouakki
6 | source: https://www.facebook.com/groups/DevC.Casablanca/permalink/1016943958707581/
7 | tags: ['Distributed-Systems','CAP-Theorem']
8 | ---
9 |
10 |
11 | من شحال هاذي و أنا تانسمع بCAP theorem و عمرني فهمتوا حتى شرحوا عبد الرحيم عاد بديت كانفهموا.
12 | https://www.facebook.com/groups/DevC.Casablanca/permalink/1016943958707581/
13 | المهم قلبت شوية أكثر و قررت نحاول نشرحوا، باش تا أنا نزيد نفهموا شوية.
14 | تخيل معايا عندك سونطر دابيل (call center) تايبيعوا معقم للناس للناس فيه بزاف ديال الموظفين مقسمين على 2 أنواع:
15 |
16 | الناس لي كايجاوبوا على التيليوفون: كاينين بزاف متوزعين على السونطر، و الوظيفة ديالهم هي يجابوا على التيليفون و يقولوا الثمن ديال المعقم شحال ..
17 | كل واحد تايقدر يهضر مع لي قريب ليه. وهاكا كيفاش تايتواصلوا في حالة ايلا تبدل الثمن ديال المعقم.
18 | الشاف: هاذا هو لي تايقرر ثمن المعقم و تايجي تايقولوا للموظفين (و من تما تايتواصلوا بيناتهم باش كلشي يعرف الثمن الجديد)
19 |
20 |
21 | دابا نعرفوا 3 ديال المبادئ
22 | 1. الAvailability
23 | هذا باين، منين غاي نتصل بشي واحد في السنطر دابيل، ايلا كان في البوسط ديالوا خاصو يجاوبني ضروري مايمكنش يقطع عليا و لا يتعطل.
24 | 2. الConsistency
25 | حتا هاذا باين،ايلا اتصلت بشي واحد في سونطر دابيل و قالي المعقم ب 10 الدراهم، و منين قطعت عاودت اتصلت بواحد آخر مختلف خاص يقولي تاهو 10 الدراهم
26 | 3. الPartition Tolerance
27 | هاذي بكل بساطة، تاتكون محققة منين إيلا حيدنا أي موظف من الموظفين خاص كولشي يبقى خدام و بنفس الطريقة لي كان عليها.
28 |
29 | ----
30 |
31 | دابا نرجعوا للCAP Theorem لي تايقول أن هاذ المبادئ مستحيل يتجمعوا بثلاثة في السونطر دابيل ديالنا .. هنا عندنا 3 الحالات آجي نشوفوهم كاملين:
32 | 1. الPA
33 | دابا نفترضوا بغينا أي واحد تاصلنا بيه يجاوب في الوقت، و في نفس الوقت بغينا ايلا حيدنا أي واحد كلشي يبقى كيفما كان.
34 | نفترض أن أحمد كان جالس حدا خديجة و هي لي كانت تاتوصل ليه الخبار بأن الثمن تبدل كل مرة.
35 | واحد الوقيتة حيدنا خديجة و زدنا الثمن في نفس الوقت، و اتصلنا بأحمد: غادي يخاصوا يجاوب بالزز حيت A و ماخاسوش يبدل طريقة الخدمة ولا ينوض قبل مايوصلوا الجواب حيت P، هاذشي غادي يخليه عندو الثمن القديم. وهاذشي لي غادي يخلي السونطر دابيل ديالنا ماشي Consistent
36 | 2. الPC
37 | باش الكليان ماياخدش الثمن غالط، و مانوقعوش في مشكل الحل الأول هو أحمد يقطع على الكليان (يعني مايجاوبوش) و يخليه يمشي يتاصل بشي حد آخر لي عندو المعلومة صحيحة أو يعاود يتاصل من بعد منين تجي خديجة. يعني هنا غادي نضحيو بAvailability مقابل Consistency
38 | 3. الAC
39 | حل آخر، هو نردوا السونطر ديالنا ماشي Partition Tolerant يعني كلشي يخدم في دقة من 8 ل 12 و من 2 ل 6 و إيلا شي حد ناض من بلاصتو، يحبس كولشي ..
40 | و هاكا غادي نضمنوا للكليان ايلا اتصل بالسونطر ديالنا في أي وقت كنا خدامين فيه (يعني كلشي كان خدام) راغادي ياخد الثمن الحقيقي C و غادي يجاوبو شي حد في ساع A
41 | هاذشي لي كاين، سمحوا لي هاذشي خرج طويل
42 | https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/
43 | https://en.wikipedia.org/wiki/CAP_theorem
44 |
45 |
46 |
--------------------------------------------------------------------------------
/talks/iduoad/cap-theorem-examples.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: CAP theorem - part 2
3 | description: Examples of the CAP theorem
4 | type: talk
5 | speaker: Abderrahim Ouakki
6 | source: https://www.facebook.com/groups/DevC.Casablanca/permalink/1016943958707581/
7 | tags: ['Distributed-Systems','CAP-Theorem']
8 | ---
9 |
10 | ككمالة على ذاكشي ديال CAP Theorem حاولت نقلب على أمثلة باش داكشي يكون باين.
11 | و لكن قبل هاذو شي استنتاجات مهمين:
12 |
13 | 1. الCAP theorem ماعندوش معنى في حالة الأنظمة لي ماشي موزعة Non Distributed Systems .. حيت في هاذ الحالة ماغاديش تكون عندنا P. و النظام ديالنا غادي يكون ديما CA على الأكثر.
14 | 2. ماشي بالضرورة، شي نظام يكون تايوفر غير زوج واحد ديال خاصيات، مستحيل يوفرهم بثلاثة في دقة، و لكن يقدر يكون في Modes و كل واحد تايوفر شي زوج. بحال MongoDB لي يقدر يكون CA و CP و AP على حساب كيفاش خدمناه:
15 | https://stackoverflow.com/a/44440201/7554715
16 | 3. من الحوايج لي جاوني صعاب في الفهم هي Partition Tolerance .. حتى قريت هاذ المقال لي تايقول أننا مايمكنش نتفاداوها و الا غادي يخاص network ديالنا تكون خدامة دائما (بحال سونطر دابيل) أو ماتكونش، وهاذو بجوج ماشي واقعيين.
17 | https://codahale.com/you-cant-sacrifice-partition-tolerance/
18 | 4. الCAP theorem ماتايعطيش تعاريف و معايير نقروا نحسبوا دقيقة لA و C و P .. و هاذشي تايبقى على متعلق بالنظام ديالنا و كيفاش حنا تانشوفوا الأمور.
19 | هذا نقد واعد و مفصل للCAP theorem
20 | https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html
21 |
22 | نبداو بالأمثلة:
23 |
24 | - الRDBS أو SQL databases بحال Mysql و Postgres : هاذو تايكونوا غالبا CA by default .. و هاذشي جاي من أنهم Transactional و مبنيين على ACID principles لي في التصويرة.
25 | منين تينشدوا شي SQL Database و تافرقوها (distribute)، منين تاينديروا شي عملية ديال القراية أو الكتابة في البيانات ديالنا، تاتدار Transaction يعني بزاف ديال العمليات متسلسلين و ايلا فشلات غير واحد تانديروا ماكاتدوزش (بحال البلان ديال كّيشي ديال البنكة).
26 | \ المثال ديال البنكة مهم، حيت شحال من مرة تانمشيو نجبدوا الفلوس تانلقاو الكّيشي ماخدامش و السبب هو في شي بلاصة كاين شي node ماخدامش. يعني تايضحيوا ب P قدام AC
27 | يعني على قد فهمي، ايلا بغينا نصايبو سيستام ديال بنكة أو شي حاجة لي Transactional من الأفضل نختاروا شي حاجة AC بحال RDBS
28 | منين تايكونوا عندنا معلومات بزااااف، و غالبا ايلا بدلنا فيهم ماغاديش يلاحظوها بزاف ديال الناس، أو أن دوك المعلومات ماتانبدوهاش بزااف. هنا ممكن نتخلاو على C مقابل أن AP يبقاو. حيت المعلومات خاص يما يكونوا عندنا و خاص ايلا طاحت شيnode داكشي لاخر يكمل.
29 | - هنا كاينين شي NoSQL DBS بحال Cassandra و حتا Mongo لي تايوفروا الإمكانية ديال أنهم يكونوا Highly Available and Partition Tolerant مقابل Consistency (ممكن يخدموا في modes آخرين شوف 3 و 4 الفوق)
30 | https://www.datastax.com/blog/2019/05/how-apache-cassandratm-balances-consistency-availability-and-performance
31 | المثال لي بانلي هنا هو scraping data و SE لي ماشي بالضرورة تكون C و لكن ضروري A و C
32 | يعني ايلا بغينا نصايبو شي نظام لي غادي يجمع بزاف ديال المعلومات و بغيناه يكون موجو ديما و متوزع مزيان ممكن نفرطوا في C
33 | - و أخيرا، CP .. في الحالات لي الدقة ديال المعلومات C مهمة عندنا أكبر من التوفر ديالها A ..
34 | غالبا ال NoSQL Datastore بحال HBase و Redis و Etcd تايكونوا تايوفروا هاذ الmode (هاذشي ماتايمنعهمش يخدموا في modes آخرين) ..
35 | من اﻷمثلة لي طاحوا لي في بالي، هو configuration لي إلا كانت موزعة على بزاف يال datastores مستقلين بعني P غادي يخصنا ضروري نفس المعلومات لي كاينين في أي node يكون في جميع nodes لاخرين باش ماتتخربقش لينا الconfig مابين services ديالنا. في حين ممكن نتحملوا A .. بأننا نمشيو نقلبوا في Node آخر فينما مايجاوبش شي node .
36 |
--------------------------------------------------------------------------------
/talks/iduoad/entrepreneur-ne-fait-surtout-pas-ces-erreurs-oussama-ammar.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Entrepreneur? Ne fait SURTOUT PAS ces ERREURS - Oussama Ammar (interview complète)
3 | description: Oussama Ammar (Founder of the Family incubator) talking about entrepreneurship
4 | type: chat
5 | speaker: Oussama Ammar
6 | source: https://www.youtube.com/watch?v=kbfnRPcrKL0
7 | tags: ['Entrepreneurship','Startup']
8 | ---
9 | - Mariage entrepreneur/boite(secteur) est un facteur cle pour la reussite des startups
10 | - Les bons entrepreneurs arrivent a creer leur propre caricature = incarnation de projet par l'entrepreneur.
11 | - No one can succeed in many sectors. to succeed in an industry you have to be compatible with it, you either need to change the industry or change your personality.
12 | - Serial entrepreneurs are a myth, entrepreneurs that are successful in many industries are just replicating what they are good at in many industries (they are always succeeding in what they are good at) e.g. is Elon Musk who is succeeding in selling the dream in the industries he's in.
13 | - You need to know yourself, before building your own startup.
14 | - 8:50, Startuper looking for a developer to develop his idea. Developers work for who will provide them value(corporate) they don't to work on other's ideas. They will work with you if you provide something they won't find elsewhere (personality, competence, experience ...).
15 | - You need to live (learn, and accumulate experience) before starting your startup, or you'll be forced to learn starting your startup. Entrepreneurship is not theoretical.
16 | - Never delegate a task you don't know how to do. Learn how to do it first then look for someone to delegate it to. This will help you judge your recruitees abilities.
17 | - You should consider entrepreneurship as a career, and thrive to get better from one experience to another. Consider every startup as a line of a CV.(Strategy)
18 | - The odds to be the next Mark Zuckerberg are very low. You shouldn't be biased by such experiences, and try to focus on a project.
19 | - Having an great Idea for your first startup is not mandatory. First experiences are meant to be lessons.
20 | - Product-Market-Fit is evident. It is where you are overwhelmed by the clients reaction to your product. In this phase you are never up to the market expectations, and you are disappointing the most people (clients).
21 | - When you don't have the PMF, you need to change what you are doing.
22 | - 22:00 Example Pressing: Pricing and scale, and fitting the Market.
23 | - Intensity is key in product validation (it reveals the truth), e.g if you reduce the price of your product by 90% and no one is willing to buy it, then it is not a pricing problem.
24 | - Targeting and Segmentation is important in validation. (The message)
25 | - Deleting features can help too in market validation.
26 | - Key entrepreneur :
27 | - Surroundings: being surrounded by positive people is so important.
28 | - Don't lie to yourself and to people (intern) about your weaknesses. Speak up !!!
29 | - Find people smarter than you and ask for help.
30 | - Sharing your problems with the employees, will make them as responsible. Because if you end up by not solving your problem later, you have another problem: not sharing the problem.
31 | - Extern: Clients, Partners, suppliers ...
32 | - Intern: Employees, investors ...
33 | - Having fun should be the thermometer of entrepreneurs.
34 | - You should prepare to the entrepreurial experience:
35 | - No debts
36 | - No complicated personal relationships ...
37 | - Enjoy the Experience !! Have fun !!
38 |
--------------------------------------------------------------------------------
/talks/iduoad/how-netflix-thinks-of-devops.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: How Netflix Thinks of Devops
3 | description: How Do Netflix approchs Devops
4 | type: talk
5 | speaker: Dave Hahn
6 | source: https://www.youtube.com/watch?v=UTKIT6STSVM
7 | tags: ['DevOps']
8 | ---
9 | - Netflix Culture values Freedom and Responsability
10 | - Netflix does not have a single datacenter, they use Amazon Web services
11 | - I need to think of the big issues, and try to solve them. take the local market as a POC
12 | - Focus on what is important for your client, Cloud is a business solution to avoid what is not crutial for your client
13 |
--------------------------------------------------------------------------------
/talks/iduoad/how-to-improve-your-productivity-as-a-working-programmer.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: How to Improve Your Productivity as a Working Programmer
3 | description: Tips about improving programmer's productivity
4 | type: article
5 | author: malipster
6 | source: https://malisper.me/how-to-improve-your-productivity-as-a-working-programmer/
7 | tags: ['Productivity']
8 | ---
9 | - Don't check social media first thing in the morning, or when getting into the office. Check them before meetings, lunch so that you'll be time constrainted.
10 | - Setup the environnement which will help you get into the flow fast.
11 | - Align less productive activities next to each other, therefor you'll have large blocks of time where you can be productive
12 | - Schedule those block around when you are most productive.
13 | - Watch yourself code: this made me want to create a shell script that will record my screen all day long and back the result up every day.
14 | - Tracking progress and implementing changes accordingly
15 | - Finally, be patient, and conduct change gradually.
16 |
--------------------------------------------------------------------------------
/talks/iduoad/kubernetes-storage-lingo-101.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Kubernetes Storage Lingo 101 (Kubernetes Storage Lingo 101)
3 | description: Introduction to the storage ecosystem and terminology in kubernetes.
4 | type: talk
5 | speaker: Saad Ali
6 | source: https://www.youtube.com/watch?v=uSxlgK1bCuA
7 | tags: ['Kubernetes','Storage']
8 | ---
9 |
10 | ## The Goal: Workload Portability
11 | - **Workload portability **: write your app once and deploy it anyware. This is achieved by abstracting away cluster details and decoupling the infra from the apps.
12 | - Pods and replicaSets abstract compute and memory very well, but what about state ?
13 | - P1: Containers are ephemeral (data is lost if the container crashes).
14 | - P2: Containers can't share data between them.
15 |
16 | ## Challenges with abstracting storage:
17 | - So many different types of storage:
18 | - Object storage
19 | - SQL databases
20 | - NoSQL databases
21 | - Pub/Sub systems
22 | - Time series databases
23 | - File Storage
24 | - Block Storage
25 | - File on Block
26 | - ...
27 | ## Solution
28 | - K8s dev focus on the following types because the data path is standardized (Posix, ISCSI)
29 | - File Storage
30 | - Block Storage
31 | - File on Block
32 | ## Volume and Volume Plugins
33 | - The way K8s abstracts away the storage part is by using Volume plugins. They specify:
34 | - How the volume is setup in the pod
35 | - Medium that backs it.
36 | - Volume have a lifetime same as the pod's or longer.
37 | - There are 5 categories or volume plugins that k8s supports:
38 | 1. Remote storage:
39 | - AWS ebs
40 | - GCE PD
41 | - ...
42 | 2. Ephemeral Storage:
43 | - EmptyDir
44 | - Expose k8s API
45 | - Secret
46 | - ConfigMap
47 | - Downward API
48 | 3. Local Persistent Volumes (Beta)
49 | 4. Out-of-Tree
50 | - Flex (exec a Binary)
51 | - CSI (Beta)
52 | 5. Other
53 | - Host Path
54 | ### Ephemeral Storage
55 | - Referenced in-line, not via PV/PVC.
56 | - Volumes that expose k8s API objects are based on emptyDirs
57 | ### Remote Storage
58 | - Can be referenced using PV/PVC.
59 | - PV/PVC decouples volumes implementation (PV) from their consumption (PVC)
60 | - PVs can be provisioned statically or dynamically using Storage Classes.
61 | ### Host Paths
62 | - Host paths are to use with caution. Never use them unless you know what you are doing.
63 | - One use case is to use them along with Node Affinity to keep some stateful apps in some nodes.
64 | ### Local Persistent Volume
65 | - They expose a local block or file as PV.
66 | - 2 use cases:
67 | - Building distributed storage systems on top of k8s
68 | - Building high performance caching.
69 | ### Out-of-Tree
70 | - The volume plugins are in tree i.e. they live inside k8s codebase.
71 | - Powerful abstraction for block and file storage.
72 | - Automate Provisioning.
73 | - Storage portability (PV/PVC)
74 | - There are two iniative of bringing storage out of k8s code tree:
75 | - CSI (Container Storage Interface): Plugins may be containerized.
76 | - Flex Volumes: exec based i.e. binaries that need to be installed on the nodes (slave and master). It needs Master access.
77 |
--------------------------------------------------------------------------------
/talks/iduoad/kustomize-deploy-your-app-with-template-free-yaml.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 'Kustomize: Deploy Your App with Template Free YAML'
3 | description: Introduction to a Kustomize, which make you custumize your k8s deployments without templating the yaml files.
4 | type: talk
5 | speaker: Ryan Cox
6 | source: https://www.youtube.com/watch?v=ahMIBxufNR0
7 | tags: ['Kubernetes','DevOps']
8 | ---
9 | - Deployment landscape in k8s is quite rich: Weave flux, ksonnet, pulumi, Octupus, DeployHub and Helm ...
10 | - Those tools have a lot of system capabilities
11 | - Package/Dependency Management
12 | - Application Descriptors: Metadata, urls to upstreams
13 | - Application Discovery: places where to search for applications
14 | - Dashboards
15 | - Lifecycle Management
16 | - Customization
17 | - Kustomize's target is customization i.e. it let's you customize your yaml files to your specific env.
18 | - Kustomize read the `kustomization.yaml` file
19 | - [The work behind Kustomize:](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/declarative-application-management.md)
20 | - Kustomize provides many features:
21 | - Can add specific annotations, labels, and prefixes in names, namespaces, to secific resources.
22 | - *Overlays*: create separate kustomization files for each environnement, pulling from a base.
23 | - *Mix-in configs*: pulls configurations from different bases.
24 | - *Patches*: operate on existing yaml files, replace or add segments and outputs it.
25 | - *ConfigMaps/Secret Generators*: generate configmaps push them into the resources.
26 |
--------------------------------------------------------------------------------
/talks/iduoad/oops!-oop-is-not-what-i-thought.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Oops! OOP Is Not What I Thought
3 | description: A different point of view on OOP
4 | type: talk
5 | speaker: Anjana Vakil
6 | source: https://www.youtube.com/watch?v=uoMHk_nrliQ
7 | tags: ['OOP']
8 | ---
9 | - Book: Learn you some Erlang/Haskell for great good
10 | - Closure concept is very close to the class concept
11 | - OOP is about behaviour not data
12 | - OOP is all about late binding
13 |
--------------------------------------------------------------------------------
/talks/iduoad/predicting-the-future-of-the-web-(2020_2025).md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Predicting the future of the web (2020/2025)
3 | description: Richard makes 5 predictions about the future of JS
4 | type: talk
5 | speaker: Richard feldman
6 | source: https://www.youtube.com/watch?v=prlYwbCHTdE
7 | tags: ['JavaScript','Web']
8 | ---
9 | - Typescript is like entreprise JS, and it will take over the JS market
10 | - WASM is making browser competing against app stores and installers
11 | - WASM will extand web app pie, not kill JS
12 | - Should disable post-install scripts
13 | - Compile to JS is the next thing
14 |
--------------------------------------------------------------------------------
/talks/iduoad/surviving-the-framework-hype-cycle.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Surviving the Framework Hype Cycle
3 | description: What is the hype cycle, and how to survive it, Rails as a study case.
4 | type: talk
5 | speaker: Brandon Hayes
6 | source: https://www.youtube.com/watch?v=O6TtfK9gGvA
7 | tags: ['frameworks']
8 | ---
9 | - Technology trigger - early adopters,
10 | - Peak of inflated expectations - Smasria(100s of tutorials and article about the technology none of will help you)
11 | - Through of disillusiionment - Critics and trolls, The death claims, people running form the technology
12 | - Slope of enlightenment - Articles become books, entousiasts become a real community the tech is getting into entreprise state
13 | - Plateau of productivity - tech is not cool anymore, no one talks about it, it's finally mature and productive
14 | - Pionners : the first commers, the early adopters - the first to adopt the tech and believe in it.
15 | - Vision/Experiment
16 | - Settlers : The come to build the infrastructure, and help the excisting community
17 | - Strategy/Synthesis
18 | - town planners: The big actors here, they take the technology to the large scale
19 | - Tactics/Execution
20 | - It's all about reaching the plateau, when you reach it you can then fire your boss
21 |
--------------------------------------------------------------------------------
/talks/iduoad/the-javascript-starter-kit-manifesto.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The JavaScript Starter Kit Manifesto
3 | description: Solve JS developers fatigue problems (due to the choice paradox created by the huge number of JS code out there) by using starter kits
4 | type: talk
5 | speaker: Cory House
6 | source: https://www.youtube.com/watch?v=jubd2opc4Ps
7 | tags: ['javascript', 'methodology', 'best_practices']
8 | ---
9 | - So many decisions to make
10 | - Starter kit synonyms : Dev Env, Boilerplate, seed, starter project, scaffold, generator
11 | - The checklist Manifesto (book)
12 | - What belongs in a starter kit
13 | - EditorConfig tool
14 | - Opinions of the speaker
15 |
--------------------------------------------------------------------------------
/talks/iduoad/the-single-biggest-reason-why-startups-succeed.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The single biggest reason why startups succeed
3 | description: Why does startups, yet awesome, fails. And how do they succed
4 | type: talk
5 | speaker: Bill Gross
6 | source: https://www.youtube.com/watch?v=bNpx7gpSqbY
7 | tags: ['Startups']
8 | ---
9 | - The 5 aspects that matter are : timing, team/execution, idea, BM, Funding
10 | - Everybody has a plan until he gets punched in the face (by the client which represents reality)
11 | - Timing is the most important, then comes the team that is willing to adapt and react
12 | - Is it early: Do I have to educate the market, Is the infrastructure active? // Is it Late: So much competitors in the Market?
13 |
--------------------------------------------------------------------------------
/talks/iduoad/using-containers-to-create-the-world-s-fastest-openstack.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Canonical - Using containers to create the World s fastest OpenStack
3 | description: Using LXC/LXD to build fast Openstack clouds.
4 | type: talk
5 | speaker: [Dustin Kirkland, Tycho Andersen]
6 | source: https://www.youtube.com/watch?v=lM2wwYDLB2M
7 | tags:['Cloud','Containers','LXC/LXD', 'OpenStack']
8 | ---
9 | ## LXC/LXD
10 | - History of compute in the cloud, type hyvervisor -> type2 -> system containers.
11 | - Machine(system) containers boot a full OS in contrast with process containers which boot processes.
12 | - Machine containers look like *VM* but use *Linux containers* technology and run on *Bare Metal*.
13 | - LXD can function in a rootless mode, and provide a Rest api in addition to the CLI interface.
14 | - LXD is a deamon on top of LXC, that works as a abstract layer responsible od the communication with LXC.
15 | - LXD CLI uses the Rest api to communicate with LXD.
16 | - LXD uses ZFS-Linux, which make the containers faster, due to the snapshoting and COW cloning.
17 | - On create, ZFS make a COW clone of the image. which offer deduplication and efficiency.
18 | - ZFS also uses integrity checks to catch problems and efficient compression.
19 | - LXD is fast because: Compute (sharing the kernel), Storage (ZFS)
20 | - LXD is secure because: it runs as non-root, has DAC and MAC (AppArmor)
21 |
22 | ## Why is this the fastest Openstack
23 | 1. The cloud in the demo deploys in minutes.
24 | 2. Instances launch in seconds.
25 | 3. The entire environnement can be snapshot in seconds. (backup)
26 | 4. Instances run in nearly bare metal speeds.
27 | 5. Services migrate in real-time.
28 |
29 | ## Demo
30 | - To upgrade Openstack, the the stack is move completely to somewhere else, then Ubuntu and Openstack are getted upgraded
31 | - The speaker could run 636 container on a 16Gi Server. (20 mins for machines to join, and te same amount of time for nodes to draw its ip address)
32 | - The demo uses conjure-up to setup the cluster
33 | - We can run containers inside container without losing performance.
34 |
--------------------------------------------------------------------------------
/talks/nfaihi/10-excellent-ways-to-secure-spring-boot-applications.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 10 Excellent Ways to Secure Spring Boot Applications
3 | description: 10 Excellent Ways to Secure Spring Boot Applications
4 | type: talk
5 | author: Matt Raible - Brian Demers
6 | source: https://www.youtube.com/watch?v=H1gCqyo5gIo
7 | tags: ['Spring Boot', 'Security']
8 | ---
9 | - Use HTTP everywhere
10 | - Scan dependecies
11 | - Upgrade and update your libraries
12 | - Enable CSRF (Cross-site request forgery) protection
13 | - Use a CSP (Content Security Policy)
14 | - Use OIDC for Authorization
15 | - Hash your passwords
16 | - Use and store secrets securely
17 | - Test with ZAP (Zed Attack Proxy)
18 | - Review your code with experts + Code review topics
--------------------------------------------------------------------------------
/talks/nfaihi/6-months-of-using-graphql.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 6 Months Of Using GraphQL
3 | description: Going through some fundamental security practices to protect your infrastructures and how it enhances security
4 | type: article
5 | author: Manish Jain
6 | source: https://levelup.gitconnected.com/6-months-of-using-graphql-faa0fb68b4af
7 | tags: ['GraphQL', 'API', 'Programming']
8 | ---
9 | - First, GraphQL is a query language for APIs gives clients the power to ask for exactly what they need and nothing more created by Facebook as an internal solution and was later open-sourced to the community
10 | - The good :
11 | - **Pragmatic Data Exchange** : send exactly the asked fields, nothing more and nothing less
12 | - **Using Dataloaders to Reduce Network Calls** : library (not part of GraphQL itself) that can be used to decouple unrelated parts of your application without sacrificing the performance of batch data-loading
13 | - **Decoupling between exposed data and database models** : decouple the database modeling data with how the data is exposed to consumers. While designing the persistence layer, we could focus on the needs of that layer and then separately think about what's the best way to expose the data to the outside world
14 | - **Forget about versioning of APIs** : common problem in API is versioning, in GraphQL it is not the case so adding more fields to the an existing endpoint will not break the API
15 | - **Independent Teams** : the front-end and back-end teams can work independently and the teams can work in parallel
16 | - The bad :
17 | - **Not all APIs can be evolved** : Sometimes there would be changes tricklingwhich would require a complete change in the implementation of an API (versioning problem)
18 | - **Unreadable code** : code can become scattered into multiple places while using Dataloaders to fetch the data and that could be difficult to maintain
19 | - **Longer response times** : queries can evolve and become huge, it can sometimes take a toll on the response time
20 | - **Caching** : caching is built into in the HTTP specification which RESTful APIs are able to leverage. And as mentioned earlier a GraphQL query can ask for any field of a resource, caching is inherently difficult.
21 |
--------------------------------------------------------------------------------
/talks/nfaihi/7-security-measures-to-protect-your-servers.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 7 Security Measures to Protect Your Servers
3 | description: Going through some fundamental security practices to protect your infrastructures and how it enhances security
4 | type: article
5 | author: Justin Ellingwood & dbrian
6 | source: https://www.digitalocean.com/community/tutorials/7-security-measures-to-protect-your-servers
7 | tags: ['Security', 'Servers', 'Networks']
8 | ---
9 | - **SSH Keys** : a more secure alternative to password-based logins, used to administer and communicate with servers
10 | - **Firewalls** : controls what services are exposed to the network, blocking or allowing them. Those services categorized into public, private and internal services
11 | - **VPC Networks** : abbreviation of Virtual Private Cloud, those are private networks for your infrastructure’s resources ensuring more secure connection among resources
12 | - **Service Auditing** : process of discovering and analyzing what services are running on the servers and lock down the components to avoid attacks
13 | - **Unattended Updates** : maintaining updates on a server is a must and they can prevent vulnerabilities. Unattended updates allow the system to update a majority of packages automatically.
14 | - **Disable Directory Indexes** : most web servers are configured by default to display directory indexes when a user accesses a directory that lacks an index file. So disabling them can prevent you from malicious attacks
15 | - **Back Up Frequently** : you should back up your systems and data regularly
16 |
--------------------------------------------------------------------------------
/talks/nfaihi/apache-airflow-for-beginners.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Apache Airflow for beginners
3 | description: An introduction to Airflow for beginners
4 | type: talk
5 | author: Varya Karpenko
6 | source: https://www.youtube.com/watch?v=YWtfU0MQZ_4
7 | tags: ['Apache', 'Airflow', 'Python', 'Data pipelines']
8 | ---
9 | - Apache Airflow is a tool to build, schedule and monitor your data pipelines (Set of data processing elements connected in series)
10 | - Building a data pipeline that search for questions for a specific topic on stackoverflow and mail them to your email inbox
11 | - Trying to automate the previous workflow using Airflow
12 | - The 7 building blocks of Airflow
13 | - **Operator** : (Worker) knows how to perform a task and has the tools to do it (Python operator, Email operator ...)
14 | - **DAG** : Directed Acyclic Graph, describes the order of the tasks and what to do if one of them fails
15 | - **Task** : job that is done by an operator (Load data, store data ...)
16 | - **Connection** : credentials to the external systems that can be securely stored in Airflow
17 | - **Hooks** : interfaces to the external platforms and databases
18 | - **Variables** : like environment variables. Can store arbitrary information and be used in the tasks (URLs, tokens, IDs ...)
19 | - **XComs** : stands for cross communications between tasks and let them exchange small messages
20 | - Demo of the built pipeline
21 | - You can create your own operator if there is no one that can do the job you wanted
--------------------------------------------------------------------------------
/talks/nfaihi/i-had-to-build-my-own-markdown-editor-because-no-tool-was-fast-enough-for-me.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: I had to build my own Markdown Editor because no tool was fast enough for me
3 | description: building a Markdown editor with electron
4 | type: article
5 | author: Andrew Brown
6 | source: https://dev.to/exampro/i-had-to-build-my-own-markdown-editor-because-no-tool-was-fast-enough-for-me-3b3o
7 | tags: ['Markdown', 'Productivity', 'Editors']
8 | ---
9 | - The editor tooks 3 days to build, and it helps to increase productivity
10 | - Technologies used : Electron, Coffeescript, MithrilJS, SharpJS
11 | - The editor has side by side preview and some hotkeys for custom tags
12 | - The ability to drag images into the editor and store them for future modifications
13 | - The ability to load custom CSS for publisher preview
--------------------------------------------------------------------------------
/talks/nfaihi/programming-habits-you-should-adopt.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Programming Habits You Should Adopt
3 | description: Programming Habits You Should Adopt
4 | type: article
5 | author: Daan
6 | source: https://levelup.gitconnected.com/programming-habits-you-should-adopt-8ab75419fb09
7 | tags: ['Programming', 'Habits', 'Better programmer']
8 | ---
9 | - DRY principle (Don’t repeat yourself) : divide your code into **small reusable units** and then use them whenever you want.
10 | - Your job **isn't** done once your code works as intended, you must **refactor** it. Refactoring will improve readability of your code and make it easier to maintain. (Most of the time, a clean version of your code is available).
11 | - **Business first**, then tech comes after. _Some developers don’t care about the business or the economic factors that justify their job’s existence_.
12 | - Get use to exercise **small commits** on your code and **writing a descriptive commits messages**, to find quickly what caused a bug when it occures and make the life easy for the reviewer.
13 | - **Be consistent** when writing your code, pick your style guide and apply it.
14 | - Work on a piece of code from zero till it’s completely finished. **Finished** means : your code is refactored, tested and documented.
15 | - **Never stop learning**, new technologies emerge daily. _Once you stop learning, you will stop growing_.
--------------------------------------------------------------------------------
/talks/nfaihi/software-developer-trends-of-2020-and-beyond.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Software Developer Trends of 2020 and Beyond
3 | description: Software Developer Trends of 2020 and Beyond
4 | type: article
5 | author: The Educative Team
6 | source: https://medium.com/better-programming/software-developer-trends-of-2020-and-beyond-d1b955bc46b8
7 | tags: ['Programming', 'Developers']
8 | ---
9 | - Continuity of Artificial Intelligence domination in many fields, and being the new competitive edge for industries. Tensorflow 2.0 is predicted to be the most used deep learning framework.
10 | - The rise of using Python (well-loved language) alongside Artificial Intelligence and its subfields.
11 | - The revolution of 5G that will brings some new problems and challenges for developers. It worth investment and it's the thing to open doors for developers.
12 | - Edge/fog and cloud computing is the future of companies and all industries.
13 | - Rust, TypeScript, Kotlin, and Swift are the top 4 modern programming languages to rise in 2020.
14 | - The growth of Kubernetes as a container's orchestration tool in the last years. Rise in best practices and standardization are the next steps in 2020.
15 | - React continues to shine in web development, flexibility and robustness are its strengths.
16 | - Self-taught is the new way of learning by developers instead of going to universities, this shift is due to the gap between supply-demand in software development. For honing their craft, developers search for a stress-free and low cost methods.
--------------------------------------------------------------------------------
/talks/nfaihi/three-ways-to-do-good-with-a-side-project.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Three ways to do good with a side project
3 | description: Importance of side projects and how they can craft your skills and ideas
4 | type: article
5 | author: Matthew Revell
6 | source: https://dev.to/heroku/three-ways-to-do-good-with-a-side-project-59j9
7 | tags: ['Side projects', 'Developers', 'Career']
8 | ---
9 | - Possibility of applying what worked in your side projects in your daily job, and maybe it will become your day job
10 | - By side projects you can achieve a splendid success (Slack, Twitter and Docker were essentially side projects)
11 | - The use of side projects to donate code and mentorship to good causes. To do so, here are some ways and paths where you can find projects in need of your skills :
12 | - **The United Nations** provides a volunteers program called [UN Volunteers program](https://www.onlinevolunteering.org/en) that match online volunteers with projects around the globe for good purposes
13 | - [**Social Coder**](https://socialcoder.org) works on connecting developers with charities who have specific projects. It plays the role of an intermediary between charities and developers
14 | - **COVID-19** : [Code Against COVID-19](https://www.codementor.io/covid19/projects) is a way to help specifically with the current COVID-19 situation. Aims to connect developers with programs combating the virus.
15 | - Use some of your spare time for good. Volunteering your skills can make a difference to people in need.
16 |
--------------------------------------------------------------------------------