יום שני, 8 ביוני 2020

390 Bumpers 67

פרק מספר 67 של באמפרס (390 למניין רברס עם פלטפורמה) - רן, אלון ודותן נפגשים שוב ב-27 במאי 2020 אחרי מלא זמן ללא באמפרס - 
תקציר העונה הקודמת (Previously on Bumpers) - ארני חזר למולדת? תודה (שוב) לזהר זקס, הבאמפרס הקודם היה לרגל 1 באפריל למי שלא שם לב (המציאות הייתה אפילו יותר מוזרה מהרגיל מאז אז יש מצב שפיספסתם), וקצת אחרי הקלטת הפרק הקורונה תפסה גם בישראל, אז לקח זמן עד שהילדים חזרו לבתי הספר (בינתיים?) ואפשר לקבל כמה שעות שקטות ולהקליט.

אז - באמפרס: רן, אלון ודותן עם סקירה של קצרצרים על טכנולוגיות ודברים מעניינים מהזמן האחרון (ולרגל הפער - אולי גם קצת יותר ותיקים יותר הפעם) - ספרים, פרוייקטים, Repos ב-GitHub וכו’ (פרס למתמידים עד הסוף - יש גם מצחיקים!)

רן - 
  • נתחיל עם דו”ח ש GitLab פרסמו בשם The Future of Work is Remote
    • אולי היה פחות מעניין בשנה שעברה, אבל מאוד מעניין עכשיו בגלל התקופה, כי כולנו והתעשייה מסביב עובדים מהבית
    • מה האינטרס מאחוריי היוזמה? GitLab היא חברה מבוזרת לחלוטין, למיטב ידעתי (רן) אין להם משרדים בכלל (או משהו ממש משני), ומבחינתם הם רוצים לבנות את עצמם כ”החברה המבוזרת”
      • נכון שהם לא הראשונים, אבל הם ממתגים את עצמם כ”חברת ה-Remote” ורוצים להיתפס כ-Thought Leaders בתחום - אז יצרו את הסקר הזה, כשבגדול - התגליות אינן סופר מפתיעות אבל שווה לקרוא:
      1. המוטיבציה לעבודה מהבית - אם אולי בעבר המוטיבציה העיקרית לעבודה מרחוק הייתה היכולת להיות Digital Nomad - ללא בית, יכולת לעבוד מכל העולם, גם אם זה אומר לטוס לתאילנד, לשכב על החוף ולהמשיך לעבוד - היום המצב הוא לא כזה (לא בטוח שזה היה המצב גם בעבר, אל זו הייתה התדמית).
        • באופן מפורש - רוב האנשים שעובדים מהבית עושים זאת בשביל הנוחות שלהם - יותר זמן עם המשפחה, פחות זמן על הכבישים, יותר זמן לספורט וכו’.
        • לא מפתיע בטירוף - אנחנו שלושתינו (רן, דותן, אלון) בסיטואציה הזו (אולי פחות שוכבים על החוף בתאילנד, וגם אם היינו עושים את זה לא היינו אומרים . . .), אבל זה נחמד לראות את זה במספרים.
      2. הדבר השני שתפס את תשומת ליבי (רן) הוא מה שהם מכנים “Remote work levels the playing field”, ובעברית - שיוויון הזדמנויות.
        • בהתחלה חשבתי שזה בסגנון “מי שגר בקריית שמונה ורוצה לעבוד בחברה שממוקמת בתל אביב, אז עכשיו הוא יכול וקודם לא ממש”, אבל הם מדברים על משהו אחר (אולי גם זה, אבל לא רק) - 
        • הם בעיקר מדברים על אנשים עם מוגבלויות מסוגים שונים - נכות פיסית, מוגבלות נפשית כלשהי, מחלה וכו’ - שעכשיו מרגישים שהרבה יותר קל להם להשתלב בחברה שהיא מבוזרת.
        • לא נדרש ה-Commute, בבית הרבה יותר לתפקד, אולי יותר קשה במצבים חברתיים מסויימים שכאשר עובדים מרחוק יותר קל בהם - הם ממש ציינו מספר של 12% שמבחינתם זהו היתרון.
      • דו”ח מעניין, יש עוד מלא סעיפים.
  • ספרייה בשם Diagrams (או Diagram as Code) - ספריית Python 3 (רק 3) שמאפשרת לכם לכתוב קוד ב - Python, להריץ אותו - וזה מג’נרט (Generates) דיארגמה - ודיאגרמות די יפות.
    • אפשר לבחור את ה-Theme (למשל AWS, או ארכיטקטורה) ואז יש כל מיני ספריות שיודעות לייצג את האלמנטים האלה בצורה יפה, ואתם למעשה כותבים קוד Python-י, שדי קל להבין אותו (ה-API עצמו הוא מאוד ב-High-level - אתם יוצרים Lists ו-Instances של Classes, אבל בסוף  זה הכל מאוד קריא) . . . מריצים - ונוצרת דיאגרמה.
    • נחמד  וניתן להרחבה: אתם יכולים לכתוב ספריות משלכם עם אלמנטים משלכם, אם למשל חסר לכם אלמנט לדוגמא של GPU או Hard disc שלא קיים, אתם יכולים פשוט לצייר אותו בעצמכם (בהנחה שיש לכם את הכשרון) ולהוסיף את זה כמחלקה בתוך הכלי.
בזמן האחרון יוצא לי הרבה מאוד להתעסק בנושאי Data Science ו-Machine Learning בשביל פרויקט שאני עובד עליו, והאייטמים הבאים הם מהאיזור הזה - 
  • סדרה של סרטונים די-קצרצרים ומאוד נחמדים, שמסבירים כל מיני אלמנטים ב - Data Science בצורה אינטואיטיבית ונחמדה
    • דברים כמו K Nearest Neighbors או Confusion Matrix ו-K means clustering, וכו’
    • זו סדרת סרטונים באורך של לא יותר מחש דקות כל אחד, כשכל וידאו מסביר את אחד ממושגי הייסוד בצורה ויזאולית, וזה נחמד אם אתם רוצים להיזכר או להכיר מושגים חדשים ברמה יחסית שטחית אבל מספיק טובה בשביל שיחה.
      • זה לא שאתם עכשיו הולכים לממש K Nearest Neighbors לפי הוידאו, אבל זה מספיק טוב בשביל להכיר, והייתי ממליץ.
    • החסרון היחיד - לדובר יש מבטא סיני כבד, ואעפ”י שזה באנגלית קצת קשה להבין; מצד שני יש כתוביות  אז אפשר גם לקרוא, ואחרי שמתרגלים לאנגלית שלו אז אפשר לגמרי להבין.
  • שני מאמרים שמהווים Intro עבור Framework בשם Keras - אחד ה-Frameworks הבולטים בעולם הזה, יש לו כמה מימושים (ואחד הבולטים בהם הוא של TensorFlow) - זה API שאומר “ככה אתם בונים מודלים של רשת נוירונים”, למיטב ידיעתי (רן) הוא עוסק רק ברשתות נוירונים אבל יכול להיות שיש עוד איזורים.
  • ואחרון בעניין הזה - המלצה על Weekly חדש שרן הצטרף אליו (וממנו הגיעו רוב הלינקים הקודמים) - אם אתם מתחום ה-Data Science ו-Machine Learning אתם אולי כבר מכירים ואם אתם רוצים להיכנס לתחום אז אני ממליץ על Data Science Weekly Newsletter, שזה ובכן - Weekly שמגיע כל שבוע עם קישורים, כמו הרבה אחרים - וערוך ברמה גבוהה.
    • (אלון) משהו בקורונה הזה גרם לך לעבור להיות Data Scientist ולהתעסק הרבה ה-Python . . .
    • (רן) זה התחיל קצת לפני הקורונה ולא קשור - אבל התחלתי לעסוק בעבודה בפרויקט שקשור לזה, ולעזור לצוות של Data Scientists להרים איזשהו פרוייקט - אז נכנסתי “לגוב האריות” והתחלתי ללמוד
      • קראתי גם ספר, שאני לא ממליץ עליו… אקרא עוד כמה ואז אדע על מה אני ממליץ
      • (אלון) תכל’ס, באמפרס יותר מתאים לדברים שאתה לא רוצה להמליץ עליהם . . “זהירות! מהמורה! דלג!” (Bumpers Anti-Patterns Edition?)
    • (רן) מה שקרה זה שהוצאת ספרים בשם Springer פרסמו בתחילת תקופת הקורונה הרבה מאוד מהספרים שלהם (שבדרך כלל מאוד יקרים) להורדה בחינם (לעותקים אלקטרוניים) - הורדתי משהו כמו 20 והתחלתי לקרוא (בינתיים אחד, אז יש עוד הרבה עבודה . . .), וחלק באמת בתחום של Data Science, לא כולם - וזה ספציפית ספר קצת “חלבי” ולא ממש מומלץ, כבר מסיים ועובד לספר הבא, אם תיהיה המלצה כמובן שנוסיף בחום.
    • אז מכאן זה מגיע - בזמן האחרון יצא לי להתעסק הרבה בתחום של Data Science, עם Python ככלי, בעיקר כדי לעזור לאחד הפרויקטים שקורים אצלנו בעבודה.

דותן - 
  • לפני שבוע או שבועיים יצא Deno . . . מישהו שמע?
    • (רן) כן, כבר די הרבה זמן באוויר, Benjamin כתב על זה כמה פוסטים
    • אז 1.0 יצא לפני שבוע או שבועיים (13 במאי 2020)
      • (אלון) רק שבועיים? מדברים על זה כבר שנתיים.
    • (דותן) כן, אז עכשיו זה זה באמת 1.0, וכל הרשת התמלאה בכל מיני Hype מטורף של “לזרוק את Node ולעבור ל-Deno”, כמו הרבה פעמים שדברים כאלה קורים.
      • (אלון) אז זה מה שצריך לעשות?
      • (דותן) כן, המלצה חמה - זרוק ועבור. עכשיו תתחיל לתקן . . .
    • אז Deno זה “Runtime ל-JavaScript”, זה ה-Tagline הפורמלי (ב-TypeScript), מהיוצר של Node.js שיצא משם, ישב בבית שנתיים ובנה לאט ובשקט (או ברעש) - וזה הגיע לגרסא 1.0.
    • מה יצא? Runtime שבנוי ב-Rust, שיותר קל לעשות לו Maintenance, יותר Secure וכו’ - נראה שהוא לא עשה המון מהטעויות שהוא עשה בפעם הראשונה, לפחות ככה הוא מעיד . . .
    • חזק לכיוון של TypeScript ומרגיש קצת כמו Go מבחינת ה-Dependency Management. 
    • עוד משהו (ואולי זה רק האלמנט של השעה . . .) - אני מרגיש שמבחינת Ecosystem ומודולים זה בכיוון של “ספרייה אחת טובה במקום עשר ספריות בינוניות”, שזה גם שינוי מרענן מ Node.js
      • (אלון) חכה חכה . . . זה JavaScript
      • (דותן) כן, אולי זה באמת עניין של השעה . . .
      • (אלון) ברגע שזה הופך פופלארי מיד יש לך ארבע ספריות לכל דקה . . .
    • (דותן) זה מאוד תלוי בקהילה שנוצרת - אם נוצרת קהילה בצורה מסויימת, אם לוקחים את Rust למשל, שם פחות מקובל שאם אתה רואה ספרייה קיימת אז מיד לשכפל אותה או לעשות משהו טיפה שונה שעושה בדיוק את אותו הדבר, פחות מסתכלים על זה בעין יפה.
    • מה שקורה זה שאתה נכנס לעולם של Rust (כמו אח של ארני), שקיים כבר לא מעט שנים, ומחפש ספרייה שעושה Web Framework כלשהו ואתה מוצא 1-2 כאלה, שביניהן יש הבדל מאוד משמעותי גם ככה.
      • זה מאוד נחמד, והאיכות בדרך כלל מאוד גבוהה
    • (רן) היוצר הוא אגב Ryan Dahl . . . ולגבי ה-Ecosystem של החבילות - זה Pain-point שקיים כמעט בכל Ecosystem, בין אם זה Java או Python או Ruby וכו’
      • מקום שבו זה יחסית יותר קל הוא מקום שבו יש “אבא חזק” כמו למשל ב - #C שאני מניח שאתם מכירים, אז שם יש קצת יותר בהירות כי אעפ”י שיש המון דברים בקוד פתוח, יש איזשהו Vendor אחד מרכזי שדוחף קדימה.
      • מה שעושים ב-Go זה מעניין (הזכרת את הדמיון קודם) - אני לא זוכר אם יצא לנו לדבר על זה בפודקאסט, אבל יש אתר יחסית חדש (מהשנה האחרונה) שנקרא pkg.go.dev, שבא ורוצה “לעזור לך לבחור את החבילה הנכונה”.
      • יש מלא חבילות ואתה תמיד יכול לגגל ולמצוא את ה HTTP Router שהכי מתאים לך, אבל איך תשווה ביניהם?  להרבה מהם יש פיצ’רים דומים ו-Performance דומה, והרבה מהם ברמת תחזוקה די קרובה . . . ואתה לא תמיד יודע בכלל מה להשוות (אילו פרמטרים).
      • הם באים ונותנים איזשהו דירוג או Curation סוג-של-חצי-אוטומטי (לא יודע עד כמה) לכל החבילות, ואומרים “אתה מחפש Logger? אלו ה-Loggers שיש בדירוג הזה”, ועוזרים בכל הנושא של Discoverability של החבילות.
      • אני חושב שתמיד יש את הדילמה כאשר אתה יוצר איזשהו Ecosystem - האם אתה רוצה  להיות ב”מודל Microsoft” שבו אתה מכתיב אילו חבילות קיימות ויש נגיד אחת טובה, או כמו שציינת (דותן) ב-Rust (למרות ששם לא יודע אם הייתה יד מכוונת, אבל זה מה שקרה), או שאתה רוצה יותר מעיין “שוק חופשי” שבו בסופו של דבר “הטובים ייבעטו למעלה”.
    • (דותן) אני מסכים . . . Microsoft זה מקרה אחד, אבל מה שאני מכוון אליו זה שיש גרעין חזק:
      • למשל - כשעשיתי את הטעות של להתחיל כמה צעדים לתוך Scala, לא זוכר מתי זה היה, סביב 2012, והתחלתי לבנות ספריות, חשבתי להוציא חלק כ-Open Source
      • רגע לפני שעשיתי את זה הלכתי ל-IRC Channel והיה אז Slack של חבר’ה של Scala - והם בעטו אותי מכל המדרגות . . . הרגשתי שזו קהילה שלא ממש מקבלת Innovation או מחשבה שהיא לא בדרך שלהם - “זה לא פונקציונלי מדי”, “זה לא Scala מדי” וכו’ - חותכים את השיקולים שלך להמון חתיכות והרבה מזה זה איזושהי “תורה” של אותו קהילה - אז יצאתי מזה . . .
      • אם ניקח את Rust, אז יש בה איזשהו גרעין - והגרעין הזה כן חוזר על אותה מנטרה של Performance-Quality-Safety, ואז יש את כל ה-Working Groups שקמו ב-Rust, כשכל אחת לקחה על עצמה איזשהו נושא לקדם, כמו Security ו-Encryption ו-Concurrency - והם אלו שבעצם מכתיבים את הטון - ואז אם אתה מחליט לבנות ספרייה שעושה Concurrency בצורה חדשה ונועזת, אז אתה כנראה צריך לעבור תחת “ועדת הקבלה” של ה-Community, כדי שבכלל יהיה לך איזשהן “פנים”, כי זה בסוף יכולה להיות סתם ספרייה שאתה שם בצד ואף אחד לא משתמש בה.
      • ב-Deno זה קצת מרגיש ככה, כי יש את אותה דמות שאתה (רן) מדבר עליה, שזה Ryan Dahl והוא מאוד דומיננטי (מן הסתם, כי זו הפעם השנייה שלו), אבל בוא נראה, אני מקווה שזה ימשיך ככה.
      • וכמובן שבהתייחס לבדיחה מקודם - לא להעביר הכל ל-Deno . . . צריך לתת לזה זמן, כמו כל דבר - תמיד יש את היחס של ה-Hype אל מול המציאות, וככל שה-Hype יותר גדול ככה זה יותר מסוכן . . .
    • (רן) הזכרת דרך אגב שני פיצ’רים - אחד זו העובדה שזה כתוב ב-Rust מה שהופך אותו כביכול ליותר קל לתחזוקה ולתוספות, והשני זה ה”יותר Secure”. האם יש פיצ’רים נוספים שיש ב-Deno שלא קיימים ב-Node.js?
      • (דותן) אז יש דברים בארכיטקטורה ש-Ryan Dahl החליט לעשות אחרת, שיותר קשורים ל-Safety ול-Sandboxing של v8, אבל אני מעריך שזה סביב הקווים האלה.
      • בסופו של דבר, זה קוד JavaScript שאתה מריץ וזה Evented ,אז “כמה זה כבר יכול להיות שונה?”
      • כנראה שמה שהוא רצה לעשות זה לגעת בדברים התשתיתיים של Node.js ולעשות את זה מחדש.
    • (אלון) אני דווקא לא מהמר על זה יותר מדי, בגלל שהוא יצא מ v8 - עם כל היתרונות של זה יש כאן גם את החסרון הגדול, ואתה רואה אפילו שיש לך שבירה של Syntax, כביכול… שזה משהו שאין לך ב-Chrome למשל
      • ההצלחה המסיבית של Node.js זה שמפתחי JavaScript שכותבים בצד Client כותבים בצד השרת גם כן, וזה יתרון.
      • ברגע שאתה מקבל פה Syntax קצת שונה, אני חושב שאיבדת את היתרון העצום שהיה לך
      • מבחינת Performance, אז “להרים שרת”? בשביל מה אנחנו צריכים עוד סביבה? “יש לנו Go, יש לנו Kotlin, מה אתה עכשיו בא לנו? איפה החידוש?”
    • (דותן) אני חושב בקול . . . יש כאן חסם (Barrier) יותר גבוה לכניסה, שמשאיר בחוץ כל מיני קהלים של אנשים וכל מיני Use-cases; אני לפחות מקווה שזה יצור גרעין חזק של קהילה שהיא opinionated, ואולי זה “יגנוב” קצת מהתכונות של Rust במובן הזה.
      • אם ניקח את זה שנה-שנתיים קדימה, תיהיה לך קהילה שלוקחת את הדברים הטובים מ-Node.js אבל משאירה את הדברים הרעים בחוץ, כמו את זה שיש לך כל הרבה Noise ומלא Dependencies וכל ה Signal/Noise ratio שהוא די פסיכי - וזה יכול להיות מעניין.
    • (אלון) עדיין קשה לי לראות את זה . . . אם זה לא יתפוס, זה באמת יהיה מעיין “בוטיק” כזה עם מעט מאוד ספריות
      • אם זה יתפוס, זה אומר שכל קהילת ה-JavaScript תעבור ואז יהיה לך “Shit-storm” שלא תצליח לעצור . . . 
      • זו דעתי בנושא, וכמובן שכולם יודעים שאני חוזה עתידות וקורא מחשבות וזה בטוח נכון, אבל בכל זאת אני לא אעשה פה ספויילרים.
    • (רן) בדיוק רציתי שנעשה עוד התערבות . . . 
    • (דותן) ואז צריך לחכות עוד חמש שנים (עד ש-Werner Vogels יכריז שהוא עובר ל-Deno?) . .  יש לנו זמן, נחכה.
  • נשאר בקו של Rust - עוד דבר שקרה ואני שמח עליו: תשתית שנקראית Rust.Analyzer
    • למי שעובד עם Rust, בשנה-שנתיים האחרונות, על מנת לקבל תמיכה ב-IDE (כמו Completion, זיהוי של Types, משהו צנוע) בעצם השתמש בתשתית לא טובה של Rust, והם אמרו שהם יודעים שזו לא תשתית מספיק טובה ועובדים על משהו חדש בשם Rust.Analyzer.
    • הרבה זמן זה היה תחת “Experimental”, ובתקופת הקורונה זה הפך ל”Final” - במובן שאתה יכול להתקין את זה דרך ה-Extension Store של VSCode.
    • עדיין VSCode זה ה-”Best supported” והדרך הממומלצת - אני התקנתי את זה תקופה ארוכה מ-Source וזה היה פחות נוח, עכשיו אפשר פשוט להוסיף את זה ל VSCode וזה הופך את כל החווייה ליותר קלה.
    • בלי קשר - Code Completion של כמה שניות כשאתה לוחץ “נקודה!” הפך עכשיו לסדר גודל של מילי-שניות - תמיד היה לי את הפער כשעברתי מ-Rust ל-Go - ב-Go זה שבריר שנייה וב-Rust זה היה “ללחוץ, לחכות, לקחת קפה, לשתות” וכו’.
    • (אלון) אני הייתי כותב קוד תוך כדי קומפילציה, כדי לחסוך את הזמן . . .
    • (דותן) כן . . . אז הכל השתפר מבחינת Performance באופן כללי
      • מחשב (מעבד) חזק זה משהו שיש שפות שבהן זה לא ממש משנה כי גם ככה זה מקמפל (Compile) רק על Core אחד או שניים, אבל ב-Rust אתה רואה מיד את ההבדל אם אתה לוקח מחשב יותר חזק ו/או יותר Cores ואתה רואה מיד את ההבדל, הקומפילציה (Compilation time) משתפרת פלאים.
      • זה לא הפתרון שצריך, אבל כן צריך לדעת את זה כי הקומפיילר עושה שימוש מאוד טוב בכל ה-Resources של המחשב.
  • אייטם נוסף באותו קו - אז npm נרכשה ע”י Github שנרכשה ע”י Microsoft (ביותר מתרי זוזיי) לא ממש מזמן, ו- Isaac Z. Schlueter חזר לתמונה ויצא בהכרזה על העתיד של npm
    • מדבר על ההיסטוריה, אני (דותן) מרגיש המון כאב בפוסט שלו . . . נראה שהוא סבל המון, לא יודע אם הוא תכנן להקרין את זה ככה.
    • עכשיו הכל יותר טוב, הוא קורא לזה npm ממשיך עם הרבה יותר Resources והרבה פחות סטרס”.
    • אחרי הפוסט הזה הוא גם התחיל לפרסם עוד על העתיד של npm ו-Roadmap וכו’, וזה נחמד למי שזה מעניין אותו.
    • אני (דותן) עובד עם Yarn כבר מזמן, אבל שווה לעקוב ולראות מה יקרה ל-npm ומה יקרה ל-Isaac תוך כדי העבודה ב-Microsoft, ואיך זה יראה.
    • (אלון) יש לי הרגשה ש-Microsoft איכשהו יעשו חיים קשים ל-Yarn  . . . יש שם את Facebook, יש לי הרגשה כזו . . .
      • (דותן) אז במקרה יש לי כדור בדולח, בוא לאייטם הבא . . .
  • זה נקרא Azure Static Web Apps, וכתבתי לעצמי (דותן) בחצי-צחוק שזה “ה-Gatsby של Microsoft” . . .
    • כשנכנסים לאתר רואים משהו מאוד “מיקרוסופטי” - קצת (בעדינות) פחות מגניב מ-Gatsby - איך Microsoft תופסת את “איך מפתחים צריכים לעשות Static website generation”.
    • תזכורת - Gatsby זה Framework מאוד פופולארי ו”מגניב” לייצור אתרים, שהם בעצם Statically generated.
      • זה התחיל 7-8 שנים אחורה עם Jekyll, שאני חושב שהיה הראשון שהתחיל את התנועה הזו של Static websites, שבהם אתה נותן תוכן ב- YAML או מ-Data source אחר, לוחץ על כפתור ובעצם נוצר לך כל האתר ב-HTML פשוטים ו-CSS, בלי שום שרת באמצע - נוצר לך איזשהו אתר שהוא סטטי.
      • אתה יכול לשים אותו על S3 או תחת איזשהו CDN - ויש לך אתר שנראה כמו משהו שמשרתים אותו Servers, אבל בעצם אין שם שרתים.
    • עם הזמן נולדו עוד כל מיני תנועות - Jamstack, שזה כמו שילוב: לא ניקח קובץ YAML אלא WordPress, וה-WordPress יהיה מקור המידע, כמו מעיין CSS - או למה דווקא WordPress? אפשר לקחת גם כל מיני שילובים אחרים של Backends רק לצורך שליפה של ה-Data ובסוף אתה יכול לייצר Static Website.
    • אז Gatsby הוא ה-Framework הכי פופלארי אני חושב, שעשה את זה ממש מגניב.
    • (רן) יש גם את HUGO בעולם של Go
    • (דותן) כן, אני חושב ש-Gatsby עשה את זה סופר-מגניב , עם איזשהו “שיק” כזה, ו-Microsoft עושים את ה-Follow-up שלהם, קראו לזה Static Web Apps
    • (רן) למה מעניין את Microsoft לעשות Static Web Apps? כמו שאני רואה את זה, זה דווקא מה שכבר מאחור . . . זו הגישה ב-Serverless: מי שעושה Static Web Apps, אז יש סיכוי טוב שגם יצטרך פונקציות Lambda או Serverless אחר
    • (דותן) נכון, לגמרי יכול להיות . . . ככה הם רואים את זה, ככה Microsoft לוקחים משהו וזה נראה בסוף כמו, ובכן - מוצר של Microsoft
  • משהו מעניין - The Unreasonable Effectiveness Of Declarative Programming
    • מישהו שכותב פוסט, ספציפית על אנימציה, והוא בעצם מראה איך באופן דקלרטיבי (Declarative) הוא מגדיר את כל האנימציות
    • ספציפית יש פה איזשהו Fluent interface והוא עובר על הקוד, שואל שאלות ועונה עליהן תוך כדי - סוג של דיאלוג מעניין: “אז בניתי משהו דקלרטיבי, מאוד נוח לעשות לזה Maintenance”  וכו’, והוא גולש משם ל-Purity, שזה קצת Functional Programming.
    • הוא מראה שיש קשר ברור בין תכנות דקלרטיבי ל-Pureness וקצת ל-Functional Programming - טיול מעניין שנראה לי (דותן) כיף לעשות
    • משהו שאפשר לקחת מזה כ-Take-away זה שאני יכול לקחת קוד שלי, שיכול היה להיות דקלרטיבי, ולהנות מה-Properties שהוא מציע שם.
    • (רן) רק כדי קצת “לצבוע” את המושגים שאלה של “דקלרטיבי” ו”פונקציונלי” וכל זה - יש שפות פונקציונליות (כמו Lisp או Clojure) ויש שפות אחרות שיש להן אספקט פוקציונלי (כמו JavaScript או Scala ו-Go וגם Java היום) - תכנות פונציונלי זה משהו מאוד נפוץ, אבל לא הכל זה “Pure”, במובן של “No side effects”. מה זה תכנות דקלרטיבי? 
    • (דותן) תכנות דקלרטיבי דומה מאוד לקונפיגורציה (Configuration) - את כל הקוד שהפוסט מראה אפשר היה לכתוב בקובץ json: “אני רוצה לזוז עם האובייקט הזה מפה לשם”, “אני רוצה רוצה לעשות Manipulation” וכו’ - כשתכנות דקלרטיבי זה יותר להצהיר על מה שאתה רוצה לעשות.
      • אם היית רוצה לחשוב איך לממש כזה Interface או API, אתה  מניח שכל הדברים האלה מייצרים איזושהי קונפיגורציה, שאותה (את סדר הפעולות הזה) אתה מוציא כ-Data (קובץ json) - ואותו מריץ.
      • אחד קשור לשני . . .
    • (רן) דוגמא יותר מוכרת - HTML, למשל, זה תכנות דקלרטיבי - אתה מצהיר אילו אלמנטים אתה רוצה שיהיו בדף, ואז הדפדפן (Browser) מרנדר (Rendering) אותם איך שהוא יכול- לפעמים זה יהיה אחד לצד השני ברוחב מסויים, לפעמים אחד מתחת לשני בהתאם לרוחב הדף - אבל אתה בגדול בא ומצהיר מה אתה רוצה שיהיה.
      • משהו קצת דומה ובתחום של זה הוא תכנות לוגי - שהוא גם סוג של תכנות הצהרתי (Declarative) אבל יותר לוגי - אתה מצהיר על שרשרת של “עובדות” או אוסף של אילוצים, ואז אתה נותן ל-Compiler לפתור את האילוצים הללו, לעשות מעיין איחוד של כולם וזו בעצם התוכנית שלך.
      • זה איזשהו ערבוב בין Declarative לבין לוגי, שפה בולטת כזו היא Prolog למשל.
  • אייטם שלא קשור לזה אבל כן קצת בעולם השפות - Dropbox חלקו את המעבר שלהם מ-Coffeescript ל-Typescript שהם עשו ב-2017
    • (אלון) עכשיו?! אף אחד כבר לא יודע מה זה Coffeescript . . .
    • (דותן) כן, זה נגמר עכשיו, אחרי שלוש שנים . . . זה ה-Takeaway הראשון.
    • (אלון) כבר ב-2017 אף אחד לא ידע מה זה Coffeescript
    • (רן) יש את הבוט הזה, youtbot של GitHub . . . זה כתוב ב-Coffeescript - מי שכתב לזה Plug-in, יודע מה זה Coffeescript . . .
    • (דותן) פוסט די ארוך, יש מצב שנסיים אותו ב-2023
    • (אלון) וגם כל כך מיותר - אין עוד קוד ב-Coffeescript, אתם היחידים שנשארתם בעולם . . .
    • (רן) הם פשוט פרסמו את זה ב-2017, אבל בגלל שזה Dropbox ולקח לזה מלא זמן להסתנכרן ל-Servers, רק עכשיו אנחנו רואים את זה.
      • למען ההגינות - הטקסט הזה נכתב על Paper ועובד סבבה
    • (דותן) הכל יכול להיות, אני לא אנסה לתמצת את הדבר הזה - אבל מה שכן לקחתי מכאן (אחרי שהתחלתי וראיתי שאני מתעייף אז התחלתי לעשות Skimming), זה שאם אתה רוצה לעבור מאיזושהי שפה לאיזושהי שפה אחרת, מאיזושהי סיבה, יש כאן אחלה Framework לאיך לחשוב על זה.
      • הם הציגו את השיקולים שלהם, ואלו שיקולים שכל חברה יכולה לקחת, למשל - מה קורה במקרה האופטימי ומה קורה במקרה הפסימי (אם זה מצליח ואם זה לא מצליח); אם כבר עוברים אז רוצים שיהיה Support יותר טוב לשפה (והם מציינים ש-TypeScript נתמכת יותר טוב מ-Coffeescript וכו’.
      • עבור מי שעושה פרויקט של re-write ורוצה קצת לסדר את הראש - זו קריאה ארוכה אבל יכול להיות שיש כאן דברים ששווה לקחת באופן כללי.
    • (אלון) אני לא יודע, זה נשמע לי כזה בזבוז זמן, מכמה סיבות, כשקודם כל: בחייאת ראבאק - זה אחד עם השני באופן שקוף . . תשנה קובץ, ואם לא טוב לך אז תפסיק.
    • (דותן) אנחנו גיבורים בדיעבד ובטח יש להם עוד שיקולים, אבל אני הייתי לוקח Web-pack ועושה Loader של Coffeescript ו-Loader של TypeScript וזהו - כשבא לי אני כותב TypeScript ואז אומר לכולם “מספיק לכתוב Coffeescript
      • לאט לאט, כשאתה נוגע בקובץ Coffeescript וחושב ששווה להעביר אותו - אז אתה מעביר.
      • אולי בגלל זה לקח להם שלוש שנים . . .
    • (אלון) לא כתבתי Coffeescript כבר מלא שנים, אבל למיטב זכרוני בסוף יש לו את ה-Watch שניהיה אוטומטית JavaScript, אז מה הבעיה? לא מצליח להבין, קשה לי לראות את הפרויקט הזה.
      • קודם כל - למי אכפת היום מה קרה לפני שלוש שנים?
      • כבר לפני שלוש שנים זה היה out-dated . . .
      • ואני עדיין לא מצליח להבין - פשוט תשנה קובץ: אתה נוגע בו - תשנה, לא נוגע - אל תשנה. למי אכפת - זו אותה שפה.
    • (דותן) אני אגיד לך למי אכפת - זה שהיה אחראי על הפרויקט הזה, ועכשיו רואה שהם עברו והכל אותו הדבר ושום דבר לא השתפר כי הם רק עברו שפה . . . 
    • (אלון) הם רק עברו Syntax . . .
    • (דותן) אז כנראה צריך לכתוב מאמר שמראה שזה הרבה יותר טוב ממה שזה.
  • עוד נושא שקצת נוגע בעצבים חשופים - מישהו (Nikola Đuza) שערך פוסט-מצחיקול-בקטנה בשם JavaScript Growing Pains: From 0 to 13,000 Dependencies
    • הוא לוקח פרויקט HTML ונילה, בלי שום ספרייה, ובודק כמה Dependencies יש? אפס!
    • מוסיף ספרייה - כמה יש עכשיו? 3,620 . . . “בוא נוסיף עוד משהו” . . וכן הלאה, עד 13,000
    • אני חושב שגם כאן זה בלתי נמנע ואין באמת מה לעשות עם זה
    • מה שכן אפשר לקחת מהמאמר הזה זה שיש משמעות ל-Dependencies שאתה לוקח - אם אתה לוקח React, אני אוהב לראות את ה-Bundles size וכמה Dependencies נוצרים לי - וזה לא דבר שאתה מודע אליו בדר”כ.
    • (אלון) היה גם את ה-npm ששלח לכולם את ה-Secrets שלך
    • (דותן) וענייני Crypto-mining וכל מיני דברים מעניינים
    • (אלון) כיף בעולם הזה, בטוח תמצא משהו - כל אחד יכול למצוא איזושהי ספרייה עלומה, לתת למי שכתב $1000 ואז להשתלט עליה ולשבור את האינטרנט.
    • (דותן) זה המחיר היום, $1000? 
  • (רן) שימו לב למעבר הבא - אחרי שהטמעת את אחת הספריות האלה, שעשתה לך Crypto-mining על השרתים של החברה (ואז פוטרת . . .), עכשיו אתה צריך להתחיל להתראיין, ולהתאמן לראיונות עבודה - ובשביל זה אלון הכין לנו את האייטם הבא!
    • (אלון) השתפרנו בקורונה עם המעברים . . . עורך יקר: תן לנו מעבר - עכשיו! 
      • בטקסט עובר פחות טוב - דמיינו, או פשוט הקשיבו לאודיו.

אלון - 
  • מאמר של הגר שילה, מתוך בלוג של השמה לנשים בהיי-טק על הכנה לראיונות טכניים
    • אני חושב שבתקופת הקורונה, כשרבים איבדו את עבודתם - מקווה שלא, אבל חלקים לפחות - זה יכול להיות מעניין, במיוחד עכשיו כשהשוק עושה רושם של התאוששות, לפחות עד הזבנג הבא.
    •  למי מחפש וכו’ - זה מאמר בעברית, קצת מרענן כי בדר”כ אנחנו רואים כאלה רק באנגלית, אז כשיש משהו בעברית שקשור לדברים האלה אני תמיד שמח לראות.
    • למי שמעוניין להתכונן זה מעניין וגם למי שמראיין זה תמיד טוב לראות את הדברים האלה - רוצו על זה.
    • תוכן בעברית תמיד טוב - במיוחד פודקאסטים בעברית! הקשיבו . . .
  • הדבר הבא - TabNine, שזה מעיין Extension ל-IDE שתומך בכל ה-IDEs הפופולאריים, החל מ-VSCode ו-Sublime ו-vim ו-emacs, אפילו Atom
    • זה פשוט יחליף אותם יום אחד . . . זה Machine Learning ש”מנחש” מה אתה הולך לכתוב, ולפעמים הוא כל כך טוב שזה מפחיד, לרמה שאתה אומר “אולי תמשיך לכתוב במקומי, מה אני עושה פה?” - “למה אתה מציע? פשוט תכתוב ואני מדי פעם אתקן אותך”.
    • יש שפות שבהן זה עובד יותר טוב ויש כאלה שפחות טוב - למשל לפעמים זורק את כל ה If-error ופשוט כותב לך את הכל אוטומטי.
    • בקיצור - באמת מומלץ אך מפחיד: זה באמת מסביר שמקומנו זמני ביותר, הרובוטים משתלטים.
    • מי שרוצה לתרום למהפכת הרובוטים - שווה לו להתקין, ולעבוד עליו! 
      • מי שפאראנואיד יכול פשוט בכל פעם להגיד לו שהוא טועה ולדפוק את ה-AI.
      • מאוד פרודוקטיבי לעשות, כן.
      • וד”ש ל-Gilfoyle
    • ברצינות - מדהים, אחד המגניבים ובאמת מומלץ.
    • ו - דותן הוסיף שהם נקנו ע”י Codota - חברה ישראלית שגם בתחום: עוד אייטם ישראלי! (מתאזרח לפחות).
      • נרכשו לפני חצי שנה בערך
    • (רן) Codota בכל אופן זו חברה שאני מכיר באופן אישי - חברה שקיימת כבר כמה שנים וממש באותו תחום: עושים אנליזה של קוד ונותנים לך הצעות ל-Completions ו-Best Practices ודברים כאלה.
      • אפשר לחשוב על זה כעל “לוקחים אינטגרציה לכל החוכמה שקיימת ב-Repos הפתוחים וב-Stack overflow וכו’, ונותנים לך את זה כ-Auto-Complete.
      • האפקט דומה למה ש TabNine עושים, ואני רואה יותר את TabNine כ-Interface, כש”החוכמה מאחור” היא החוכמה של Codota. אני לא יודע אם זה המצב.
    • (דותן) באתר שלהם זה פשוט מתחרה - אם אתה כותב ב-Java אז יש לך את Codota for IntelliJ ואם אתה כותב ב-JavaScript אז זה TabNine.
    • (אלון) הם רושמים באמת ש-WebStorm ו-Android Studio ו-Eclipse זה Codota for IntelliJ וכל השאר - TabNine - השלימו להם את ה-Stack כנראה.
    • אין לי ניסיון עם Codota, יש לי ניסיון עם TabNine, בהיקף גדול.
      • אם לא המלצתי על זה עדיין, אז כן - נא להתקין.
      • ולא לשכוח לשנות את ה-IntelliJ שם! שלא ישתלטו עלינו הרובוטים!
  • יש איזה וידאו, לא חדש (לא הקלטנו מלא זמן…), זה מ-2019 בשם The art of code
    • זה של Dylan Beattie, זה שכתב את ה-Rockstar language שהזכרנו לטובה
    • מדובר בהרצאה פשוט כיפית, באמת שווה - אחת ההרצאות היותר כיפיות שראיתי, באמת.
    • מומלץ בחום - קחו 40 דקות, עשו אתנחתא - אבל תראו, אל תשימו סתם ברקע. שווה, לא לפספס.
      • תחשבו על זה כעל פרק ב-Netflix . . . תראו בערב.
      • יצא למישהו? לא Netflix, ההרצאה . . . אני כבר בעונה השנייה בגלל הקורונה, מחכה שיצא Netflix 3, בינתיים עוד בסוף Netflix 2.
  • הדבר הבא -Real-Time-Person-Removal  - הפוך ממה שאנחנו בדר”כ מצפים . . .
    • בדר”כ יש בנאדם ואתה רוצה להוציא את הרקע - כאן זה בדיוק הפוך: נכנס בנאדם לחדר, והמצלמה מסננת רק את הבנאדם . . .
    • זה ממש נחמד - אפשר לעשות עם זה מלא דברים נחמדים, יש כל מיני רעיונות לקרימינלים ואנשים שסתם רוצים לעשות Trolling, אבל בעיקרון ב-Demo שלהם, שמאוד קל לראות אותו, פשוט מצלמים חדר ואז אדם נכנס לחדר, וכשמפעילים את זה פשוט לא רואים שהוא בחדר, כאילו לא קרה כלום - החדר נשאר ריק כמו שהיה עד עכשיו, כשבתמונה השנייה רואים אותו עושה פרצופים למצלמה ומסתובב בחדר ועושה שטויות.
    • (רן) אגב - זה גם היה ב-Netflix . . הכל היה ב-Netflix . . . בית הנייר עשו תרגיל כזה, הכל היה שם
      • ה-AI של Netflix גם לא פראייר . . .
    • (אלון) בבית הנייר גם קיפלו אוריגמי, שזה גם משהו שהתחלתי לעשות בקורונה אבל זה לא קשור
      • אלון מציג Exhibit A, דמיינו (אלון מקרב למיקרופון, אבל זה כמו לקרב כאן למסך, פחות יעזור לכם בשלב זה)
      • בפעם הבאה אני אעשה שיעור אוריגמי בפודקאסט, מעניין אם זה יעבוד (כבר קרו דברים מוזרים יותר).
      • יכול לעבוד, במיוחד בנהיגה . . .
  • משהו שאני כל כך שמח שיצא - סוף כל סוף ב-AWS שמעו אותי והוציאו Framework שנקרא cdk8s 
    • מה שהם אומרים זה ש-Kubernetes זה סבבה, אבל ה-YAML זה F#@king Sh@t - לא להאמין כמה זה זבל, אז בואו נכתוב את זה, כמו שאלון אומר כבר שנים - בשפת תכנות!
    • זה פיתוח ישראלי, אז יש מצב שהרעיון אשכרה בא מכאן . . . וגם אם לא, אני אגיד בכל זאת: הרעיון הגיע מפה, מהפודקאסט! בוודאות! והקרדיט כולו שלי!
    • מה עשו? שפת תכנות כדי לקנפג (Configure) את ה-Kubernetes YAML - סוף כל סוף, תודה רבה.
    • (דותן) אבל זה לא נגמר - אולי YAML, שמתמצת את מה שהשפת תכנות עושה, שמייצר את ה-YAML הסופי בסוף?
    • (אלון) כן, בטוח - בקיצור, קצת רקע: כולנו יודעים שה-YAML-ים של Kubernetes, יש לפחות מישהו אחד בפודקאסט הזה שמתלונן עליהם באופן קבוע, וזה פשוט סיוט לנהל את זה.
    • (רן) דרך אגב - ההגינות מחייבת לומר שזו לא השפה הראשונה שמג’נרטת (Generates) את YAML, היו גם לפני כן, גם במקרה של Kubernetes יש את jsonnet ואחרים, והיו גם דוגמאות לפני כן
      • לא ראיתי את זו, אולי זה אימפלמנטציה יותר טובה, אבל כבר היו כאלה שאמרו “נמאס לי מ-YAML, אני אוהב את אלון, בואו נכתוב לו שפה”, ועשו את זה.
    • (אלון) אתה גם ציינת את זה בנצח שלפני הקורונה - דיברנו על שפה שמג’נרטת YAML - כאן זה מוכוון Kubernetes, ממש מודל עם Services ודברים כאלה של Kubernetes, אז זה קצת שונה.
    • עוד דבר מעניין בשפה הזו - היא נכתבה ע”י Framework שנקרא jsii - שזה בעצם “קח את כל העולם וקמפל אותו ל-JavaScript, ואז אפשר לכתוב Python או Java או #C או Go - והכל עובר לJavaScript
      • מה שהם עשו זה שהם כתבו את המנוע רק ב-JavaScript.
      • עכשיו הם רק צריכים להעביר את זה ל-Deno כדי שיהיה מגניב וזה בכלל יהיה אחלה.
      • אז תודה לחבר’ה הישראלים ב-אמאזון - Nathan Taber ו-Elad Ben-Israel
      • (דותן) הם צריכים להגיד תודה לך . . .
      • (אלון) תודה, לא צריך, זה בסדר. הגזמתם.
      • (רן) אתה עושה הופעות?
      • (אלון) בגלל הקורונה לא הקלטנו מלא זמן, לא היה עם מי לדבר, היה בידוד - אז עכשיו אני זורק הכל על המאזינים, בעיה שלכם - קהל שבוי.
  • אייטם אחרון - How Thanos Would Program in Go
    • בלוג-פוסט על Coding style ואיך לארגן את הקוד - הצעה מאוד מפורטת, Best Practice, מה לעשות, מה לא לעשות, איך לכתוב, איך לארגן, תלויות - המון דברים.
    • מי שכותב ב-Go - אני באמת ממליץ לעבור על זה, אפשר לקחת מפה לא מעט דברים
    • מסודר יפה ועם מלא דוגמאות - לא כזה מעצבן, בעיקר דוגמאות קוד אז זה נחמד וכיפי.

ולחלק האומנותי - 
  • פרויקט בשם avatarify - נחמד בעיקר בימי קורונה, שבהם אנחנו נפגשים אחד עם השני בעיקר דרך Zoom . . . 
    • הפרויקט הזה לוקח איזושהי ספריית AI ומודלים מיוחדים שהוא בנה - ומחליף את התמונה שלך בתמונה אחרת.
    • למשל - אתה יכול להתחפש למונה ליזה, או ל-Elon Musk - ולמעשה כל התנועות שאתה עושה, בין אם זה מצמוץ או פתיחת פה או כל דבר כזה, משתקפים בתמונה החדשה: המצלמה מצלמת אותך ומשנה את הAvatar עצמו, שהופך להיות וידאו עם הפנים שלך.
    • לא רק זה - גם הקול שלך הופך להית הקול הרלוונטי
      • במקרה של המונה ליזה זה פחות רלוונטי, אבל במקרה של Elon Musk אתה יכול פשוט להתחיל לדבר, והקול שיוצא הוא הקול שלו . . . אשכרה Deep Fake ל-Zoom.
      • מי שמכיר - Deep Fake מדבר על יצירת קטעי וידאו אוטומטיים מפוברקים - ב-Real time.
    • זה מגניב - אתה יכול פשוט להתחבר לשיחה, לשנות את השם שלך ל-Elon Musk ולהתחיל לדבר בתור Elon Musk, ולהגיד “אוי, סליחה שבטעות נכנסתי לשיחה שלכם” או מה שזה לא יהיה, ללכלך על טסלה או על מה שבא לכם.
    • (דותן) אחרי השיגור של היום (זז בסוף ל-31 במאי, אבל עדיין - אמריקאים משגרים לתחנת החלל שוב . . .), בוא נראה מה יקרה - אולי עדיף לא להתחבר
    • (רן) זה מגניב, והטכנולוגיה יפה
    • דרך אגב - אני חייב להגיד שזה לא פשוט להפעיל את זה
      • גם בגלל כל מיני מגבלות Security, גם של מערכות ההפעלה וגם של Zoom - אבל אפשרי.
      • צריך GPU . . . זה פשוט יעבוד לאט מדי בלי GPU - בהרבה מהלפטופיפם המודרניים זה אפשרי, אבל צריך משהו מספיק מודרני וחזק כדי שזה יעבוד חלק, אחרת זה נורא מג’עג’ע ולא נראה טוב.
    • מגניב  - אני מאוד אהבתי, גם את האתגר הטכנולוגי וגם את הספין ההומוריסטי של הסיפור הזה.
    • (אלון) הוא גם רוצה Conda, קצת קשוח להריץ על ה-Mac.
    • (רן) כן, אבל זה עובד, אצלי זה רץ פשוט לאט כי אין לי תמיכה טובה ב-GPU, לפטופ ישן יחסית - אבל אנחנו Data Scientists! אחרי שקראנו ספר שלם Data Science אנחנו כבר יודעים להריץ Conda… בקטנה.
    • (אלון) אתם גם רגילים לפרויקטים תיאורתיים, שאף אחד לא יודע אם הם עובדים, אבל קשה להתווכח איתם - תתקין ונראה.
    • (רן) בכל מקרה - צעצוע נחמד.
  • ואחרון - ‘Work From Home’ Jammies: זו פיג’מה לכל דבר, שהחלק העליון שלה מעונב . . .
    • יש צווארון יפה, וזה נראה כמו חולצת משרד, ככה שאתה יכול להיות כל היום בפיג’מה, רואים רק את החלק העליון שלך - אז רואים רק את החלק המעונב אבל אתה בעצם לבוש בנוחות כל היום ולא צריך להחליף בגדים גם כשאתה מתחבר ב-Zoom.
    • זהו - זו חברה יפנית שנקראית WFH Jammies, באתר שלהם יש מלא דיארגמות עם זויות ראיה, ואיך רואים רק את החלק היפה של הפיג’מה וכל זה . . .
    • אני עדיין לא בטוח שזה אמיתי (הקורונה?! לא , זה היה אמיתי לגמרי . . .), עדיין נראה לי קצת כמו חצי בדיחה, אז שלחתי את זה לאיזור הבדיחות - ועדיין זה שם, מאותות התקופה - פיג’מה עם חלק עליון מכופתר.
      • אז מתי AWS מוציאים כזה?

זהו. הרבה זמן לא הקלטנו - היה מגניב וניפגש בפעם הבאה (בתקווה שהפעם העולם לא יתהפך בין לבין).





הקובץ נמצא כאן, האזנה נעימה ותודה רבה לעופר פורר על התמלול

אין תגובות:

הוסף רשומת תגובה