יום חמישי, 23 בספטמבר 2021

420 Bumpers 76


שלום וברוכים הבאים לפודקאסט מספר 420 של רברס עם פלטפורמה - זהו באמפרס מספר 76. התאריך היום הוא ה-14 בספטמבר 2021, ואנחנו מקליטים באולפן הוירטואלי שלנו - רן, אלון ודותן - שלום!
אז באמפרס זו סדרה של קצרצרים שבה אנחנו מספרים על מה שמצאנו ומעניין בשבוע או בחודש האחרון - לפעמים בחודשים האחרונים אם התעכבנו - ברחבי האינטרנט: Repos מעניינים ב-GitHub, בלוגים מעניינים, פרוייקטים, Utilities ודברים אחרים. אז אני אתחיל, כמיטב המסורת . . .


רן - 
  • אז האייטם הראשון שלי נתרם למעשה בעבר הרחוק ע”י מיקי טבקה - תודה מיקי! - וזה איכשהו נעלם בארכיון, אז הנה אני מציף את זה שוב: זה איזשהו בלוג-פוסט מעניין שנקרא No Meetings, No Deadlines, No Full-Time Employees
    • זה בעצם בלוג-פוסט שמספר על איזושהי חברה, סטארטאפ, שהתחיל כמו כל סטארטאפ אחר . . . התחיל בגיוס של כסף וגיוס עובדים . . .
    • בכל אופן - התחילו, ייצרו את הפלטפורמה - ולאט לאט נגמר להם הכסף . . . באיזשהו שלב כולם פוטרו, אבל הסטארטאפ המשיך לגדול . . .
      • הסטארטאפ בשיאו הגיע למשהו כמו 25 עובדים, אבל הוא פיטר את כולם והוא [המייסד] נשאר העובד היחיד - ומאז הוא למעשה שכר את כולם אחד-אחד - כ-Freelancers, “עובדים שעתיים” - פחות או יותר את אותם העובדים שהיו לו מקודם.
    • פה בבלוג-פוסט הזה הוא מספר את סיפור חייו של הסטארטאפ, ואני חושב שזה מעניין - מעיין אנטי-תזה לתרבות העבודה שקיימת היום - עם כל ה-Disclaimer-ים שיש:
      • זה לא בהכרח יעבוד לכם - הוא בא ואומר “זה הצליח לנו - אבל בטעות, לא כי תכננו”.
      • אבל זה מצליח - הסטארטאפ היום גדל, אני חושב שיש לו מחזור של משהו כמו 11 מיליון דולר, שזה מכובד בשביל צוות של משהו כמו עשרים-ומשהו איש
      • עוברים דרכו משהו כמו 170 מיליון דולר של המשתמשים שלו
    • והמאפיינים של תרבות העבודה הם כמו שאמרנו מההתחלה - אין שם פגישות, אין דד-ליינים ל-Features, כל התקשורת היא א-סינכרונית - הדבר הראשון שהעובדים עושים זה לכבות Notifications . . . 
      • לא להתקין שום דבר על המובייל, לכבות Notifications בכל מקום, לעיתים רחוקות מאוד להשתמש ב-Slack כשצריך - ורוב התקשורת היא דרך GitHub ואני חושב ש-Notion או איזושהי פלטפורמה אחרת.
      • אבל הכל א-סנכרוני וב-Latency של 24 שעות או יותר - וטוב להם, והם מצליחים.
    • אז זהו - אני חושב שזה סיפור מעניין, סיפור יזמי מעניין - בטח לא הסיפור הטיפוסי
      • אולי קצת בא להעלות את הנושא של עבודה מרחוק והאיזון של Work-Life-Balance
      • זהו סיפור מעניין - מזמין אתכם לקרוא, הקישור ב-Show notes [כאן, הכוונה].
    • (אלון) “הפינה הזו הייתה בחסות רן תבורי, תומך נלהב בעבודה מהבית . . .”
      • שמע, כן - זה עובד, כמו שאמרת - זה כנראה עובד במקרה, זה עובד בסוג מאוד ספציפי של חברות
      • וגם, בוא - אני לא מזלזל, אבל זה לא Billion-Dollar-Company כמו שכל אחד מדמיין בראש . . .
    • (רן) ממש לא, והוא לא מנסה ככה לקפוץ גבוה מדי - הוא אומר: “תשמעו, אנחנו לא הולכים להיות Billion-Dollar-Company, אנחנו לא מכוונים לשם ואנחנו לא רוצים את זה - אבל אנחנו כן מחפשים את האיזון שמתאים לנו, וכל אחד עובד מתי שמתאים לו ולא עובד מתי שלא מתאים לו - ובהתאם לזה הוא גם מקבל את הכסף”.
      • דרך אגב, גם המשכורות שלהם מפורסמות - הם יודעים כמה כל אחד מהם מרוויח לשעה, החל מ-$50 עד $250 לשעה, בהתאם לתפקיד - אז יש פה גם את האלמנט של השקיפות, שהוא יחסית חריג.
      • אולי את זוכרים את Buffer, שפעם פרסמו את טבלת המשכורות שלהם
    • אבל זהו, סיפור מעניין, לגמרי לא הסיפור הטיפוסי, ואני לגמרי לא בא ואומר “באחריות זה הולך לעבוד לכם” - כי זה לא, והוא בעצמו אומר ש”זה עבד לנו במקרה”.
      • ועדיין אני חושב שזה סיפור מעניין ללמוד ממנו.
    • (דותן) מה שאני חושב שמיוחד ב-Gumroad, אם אני זוכר, זה שהם התחברו לאיזושהי נישה, ואני לא יודע איפה זה היום, אבל נישה של קהילת האינדי בכלל ובאופן ספציפי כל ה-Indi-Gaming ו-Game Developers שרוצים למכור את המשחק שלהם ולא בא להם ללכת ל-Publishers
      • או שהם לא יכולים או שאין להם את התשתית לזה
    • אז אני זוכר שזה מאוד פשוט - אתה בא ל-Gumroad, יוצר לעצמך חשבון ויכול להתחיל למכור עם לינק של Gumroad - וזהו.
    • (רן) כן - אז הם סוג-של-נותנים-דוגמא: אנחנו לא רק מוכרים לקהילה כזאת, שהיא אינדי - אנחנו גם Independent בעצמנו.
      • אז אני לא יודע אם זה הגיע מתוך האג’נדה הזאת או לא, אבל הם סוג-של חיים את ה-Spell שלהם.
    • זהו - בלוג-פוסט יפה, לא ארוך - מזמין אתכם לקרוא, ושוב תודה למיקי.
  • ולאייטם הבא - זה איזשהו Review קצר של ה-Stack overflow survey שהתפרסם לפני כחודש או חודשיים
    • אנחנו עושים את זה קצת באיחור כי הרבה זמן לא הקלטנו [באמפרס]
    • אז אני אוציא כמה כמה דברים קטנים - ויש שם די הרבה, יש המון אינפורמציה, והוא גם מוצג בצורה גרפית מאוד מאוד נחמדה [כמו בפעמים הקודמות] - אז כמה דברים שלי תפסו את העין, כי כל אחד אולי מתעניין בדברים אחרים . . .
    • אז האייטם הראשון זה שהם באים שאומרים שהם הסתכלו על אוכלוסיית הבני 18 ומטה - הממש צעירים, המפתחים הממש צעירים - על איך הם לומדים לפתח, באילו Resource-ים הם משתמשים.
      • והם אומרים שבניגוד אולי למה שהיה פעם, הם כמעט ולא קוראים ספרים או עושים קורסים כתובים - הכל זה Vidoes או איזה שהם Tutorials קצרים או דברים בסגנון הזה.
      • עד כמה שזה אולי נשמע לנו אינטואיטיבי - לבוא ולראות את זה במספרים זה מאוד נחמד, אני חושב, ואולי קצת מאיר את העניים - עכשיו אני יכול לבוא ולהגיד “איך הצעירים לומדים” . . .
      • אבל אני חייב להגיד שכל אחד מאיתנו גם באיזשהו מקום קצת צעיר וגם קצת לומד ככה, וזה כנראה מחלחל לכל הכיוונים.
      • אבל אני חושב שזה מראה באופן מאוד מאוד מובהק את אופי הלימוד שמשתנה עם הזמן, וזה פאן תרבותי מעניין אחד שנחשף שם.
    • עוד משהו מעניין זה Frontend Framework שנקרא Svelte, שלמעשה הגיע בכמה שנים האחרונות - אני לא זוכר בדיוק כמה זמן זה באוויר, או שנתיים-שלוש, אולי קצת יותר - למעשה זה ניהיה ה-Framework האהוב ביותר ע”י מפתחי Frontend, לפי הסקר הזה.
      • אני חייב להעיר, בפריזמה היסטורית”, שכמעט תמיד ה-New kid on the Block הוא זה שתמיד הכי אוהבים, ואז אחרי כמה זמן מתחילים לשנוא אותו, ככה שבואו אולי לא נפתח יותר מדי תקוות לפני הזמן . . . 
      • אבל כן, יש פה New Kids on the block . . .
      • (אלון) רגע, בוא נשים את זה ממש בפרופורציות - ה-Framework הזה, לפי הסקר שלהם - יש לו רק 2.75% שימוש  . . . אז ה-2.75% האלה אוהבים אותו, באחוז גבוה . . .
      • (רן) כן . . . נכון . . . אני זוכר, דרך אגב, שגם React היה בנקודה הזאת, אולי אחוזי השימוש היו יותר גבוהים אבל הוא היה ה-Framework האהוב ביותר, וככה זה.
      • אבל בכל אופן - הוא [Svelte] תופס תאוצה, אז אני מניח שמי שבעולם ה-Frontend כבר מכיר את זה.
    • (אלון) אגב, אני חושב שהדבר הכי מעניין בעולם ה-Frontend זה שלראשונה עקפו את jQuery . . . ש-React.js עקף את jQuery, וסוף סוף העפנו את הדבר הזה . . .
      • אז אני רוצה להגיד פה תודה אישית לכל מפתחי ה-Frontend אי-שם שלא בחרו ב-jQuery - באמת, תודה, תקבלו תקליט וגלויה [וכובע גרב].
      • (רן) כמו שאלון אמר - לראשונה אי פעם בהיסטוריה - ואתם שומעים את זה פה, בפעם הראשונה! - ה-Framework של React.js עקף את jQuery בפופלאריות שלו, מבחינת כמות התוכן וכמות השאלות ב-Stack Overflow, וכו’ . . .
      • אז כן, הגיע הזמן, חבר’ה . . . אם מישהו ממאזיננו עדיין משתמש ב-jQuery, אתם מוזמנים להפסיק . . . או להאזין, או להשתמש - אבל מוזמנים להפסיק.
    • אני חייב להגיד שאני התחלתי עוד לפני jQuery - למי שזוכר, היה Prototype.js . . . עוד לפני, אפילו יותר נוראי.
      • בזמנו זה היה אולי Life-Saver, אבל כן - עם מה שיש לנו היום זה כבר באמת נראה משהו פרה-היסטורי.
  • זהו, עד כאן . . . יש לי הרבה פריטים קלילים ומצחיקים, נשמור אותם לאחר כך - אז אליך, אלון.

אלון - 
זה הגיע מהר מהצפוי . . . בסדר . . .
  • אז קודם כל - אני רוצה להגיד שוב תודה לכל עובדי GitHub שמאזינים לנו ושמעו את האייטם האגדי שלי - עורך! אם אפשר לשים פה את הקטע שוב מהאייטם? נעשה הפסקה . . . 
    • [הקהל מתבקש לדמיין את הפתיח של מנהרת הזמן ולחזור ל - 410 Bumpers 73]
    • “ . . .  וזה האייטם האחרון שלי בהחלט, כי אחריו אי אפשר לעלות יותר גבוה: אני עושה פהDrop-Mic וזהו - זה הפרק האחרון, לא תראו אותי יותר, זה פרק אחרון - GitHub to VS Code:
      • כל מה שצריך לעשות, זה מטורף - 
        • קחו Repo
        • תוסיפו, בסוף הקוד של ה-GitHub, תוסיפו “1s”  -שמתי פה לינק לאייטם של דותן - ותלחצו 
        • וזה פשוט פסיכי . . . פשוט עובדים על הקוד ב-VS Code וזה מאוד נוח לדפדף, לכתוב קוד, כל מה שאתם רוצים - זה VS Code online לכל Repo, אם Private או Public, של GitHub . . .
  • ובוא נמשיך הלאה - אז בהמשך ל-vscode, אז לאור ההצלחה, GitHub הוציאו Cloud IDE [בשם codespaces]
    • שזה כמו vscode - הרעיון הוא שלא צריך כלום, רק לשים על VM כמו . . . איך זה נקרא של AWS, ה-Editor שלהם? ברח לי השם . . .
      • (רן) nine, משהו עם Nine . . .
      • (אלון) A9 אני חושב . . .
      • (דותן) לא, Cloud9 או משהו כזה . . . 
      • (אלון) Cloud9, נכון!
    • זה גם חדשות  . . . Brackets של Adobe נדמה לי שבוטל, בגלל שהם החליטו ללכת על vscode
    • (אלון) בקיצור, אז עכשיו יש לנו New Kid in the Block, וזה בעצם -vscode in the Cloud, אז אפשר בלי מכונה . . . 
    • מה שמגניב זה שאפשר לקחת מחשב ממש חלש - ולקבל שם מחשב-מפלצת, עם איזה 32 ליבות, גזיליון Gb   . . . להתקין שם מלא דברים ולהריץ סביבה, אז האמת שזה מעניין . . .
    • (רן) אני רואה שיש שם אופציה או לעבוד על Desktop או ב-Browser . . . ב-Desktop הכוונה היא לחבר את ה-vscode שלך ל-Remote Container?
    • (אלון) אתה אמור לעשות שם את ה-Run . . . לא ניסיתי את זה . . . כמו כל Cloud, אתה משלם פר-שימוש, אז כן - אתה אמור להריץ שם, אבל אתה יכול גם “בלי כלום”, לפתוח Chrome ולכתוב שם הכל עם כל ה-Plug-ins, שזה גם מעניין.
    • (רן) מגניב לאללה
    • (אלון) כן - אז אפשר לקנות עכשיו iPad-ים ולהתחיל לפתח מעל מערכות מורכבות . . . 
  • ונמשיך - זה היה על גבול המצחיקולים, אבל שמתי אותו פה: מישהו עשה, בתוך ה-Web, כי היינו עד עכשיו גם בתוך ה-Web - פשוט עשה MacOS בתוך ה-Web  . . .
    • זה נראה ממש MacOS, עם כל האפליקציות, ואפשר לפתוח שם, כביכול, vscode בפנים 
    • וזה מצחיק, כי זה פותח את ה vscode Web בתוך אפליקציית Web, ואנחנו קצת חיים בלופ עם עצמנו
    • עכשיו - זה פרוייקט ממש חמוד, אז כל מי שאוהב את הפרויקטים שמנסים לעשות מערכת אחרת - אז זה ממש נראה כמו Mac, עשוי ממש טוב, וזה “חי בתוך ה-Web”.
    • (דותן) קודם כל - זה עובד ממש מדהים . . . אנימציות סופר-טבעיות, ויש פה מלא Attention to Details, מלא . . . מדהים.
    • (אלון) אני עדיין בשוק מזה שאני אשכרה משם פותח vscode, ואני אשכרה יכול להריץ  . . . זה די הזוי.
    • (רן) כן, אז חלק מהאפליקציות כבר פועלות וחלק עדיין לא, חלק הן Coming Soon - אבל מה שבאמת פועל זה באמת ממש יפה.
    • (אלון) כן, אז זה פרויקט שעשו - מי שרוצה Calculator יכול להיכנס לזה, ללחוץ על Calculator ויש לו Calculator שם, על Mac . . . או כל מיני דברים אחרים.
    • (רן) אז אתה יכול להתחבר מה-vscode של זה ל-Spaces ממקודם, ולפתח?
    • (אלון) זה יכול להיות ניסיון מעניין . . . “ונפתח את זה!”, תוך כדי שאתה עובד בתוך זה . . .
    • (רן) ולעשות Deploy . . . זה כמו לעשות Reboot ל-Server שאתה עושה אליו SSH . . . 
    • (דותן) אה, כל פעם שפותחים את זה, את ה-vscode, אז ה-ReadMe הוא של הפרויקט הזה . . . מה שכתוב פה זה שה-Framework זה Svelte, וכתוב earlier Preact, אז זה מסביר למה Svelte כזה פופלארי - כי זה React, בעצם . . . 
    • (רן) האקדח מהמערכה הראשונה . . .
    • (דותן) כן, פיספסתי את השינוי הזה . . .סך הכל שינוי שם . . . 
    • (אלון) Preact בא אחרי React?  או  . . . .
    • (דותן) לא - React . . .  זה בא כדי לייצר React יותר Light-weight כזה . . . 
    • (אלון) כן - אבל הוא Pre-React . . . לא משנה . . .
    • (רן) אם אומרים לך בפגישה “אלון, אתה צריך להיות יותר פרי-אקטיבי” . . . . מה זה אומר?
    • (אלון) שאני עובר ל - Svelte . . . מה זאת אומרת?! אמרתי “אוקיי, קיבלתי את הפידבק, עוברים ל-Svelte . . . “
    • (דותן) אבל לא - זה לא שינה שם . . . אוי, איזה מבלבל זה . . . 
    • (אלון) הפרויקט פעם היה . . .
    • (דותן) קודם היה Preact, ואז הוא אומר שהחליפו ל-S  . . .
    • (רן) Svelte!
    • (דותן) מוזר . . . .
    • (רן) אז זוהו שני האחוזים ב-GitHub, בסקר ממקודם . . . 
    • (דותן) יכול להיות . . . 
    • (אלון) הוא - וכל הקהילה שסביבו שם . . . זה ה-2% . . . והוא אוהב את זה, הוא הצביע שהוא אוהב את זה, אנחנו כבר יודעים.
  • נמשיך - פשוט חזרתי מדי פעם למשרדים, קצת, ויש אנשים שהטרמינל שלהם עדיין מצפצף מסתבר, ה-Bell . . . אז אמרתי שאולי יש אנשים שעדיין לא יודעים שאפשר לעשות לזה Mute . . . 
    • אז שמתי את זה - איך לעשות Mute ל-Bell ב-Terminal bell with slash - למי שמכיר, לפעמים עושים את זה עם חץ למעלה או חץ למטה, אני כבר לא זוכר מתי הוא מצפצף
    • (דותן) אני חושב שאנשים שיכולים לחיות עם ה-Bell הזה, יש להם מעלות . . . הם יכולים לסבול הכל.
      • מי שלא שם לב לזה ופשוט חי עם זה, יכול לסבול הכל, לדעתי.
    • (אלון) אני חושב שזה אותם אנשים שה-Slack שלהם עדיין עושה טיק-טיק . . . כאילו, הרי הדבר הראשון שאתה עושה ב-Slack זה Mute, נכון? . . .
      • (דותן) אני מתחרפן מזה . . .
      • (אלון) . . . נראה לי שיש חפיפה מלאה בין האנשים האלה . . .
    • (רן) זה כמו התנייה פבלובלית - ברגע שאתה שומע את הפעמון אז אתה יודע שאתה הולך לקבל עונש . . . 
    • (אלון) כן . . . אז זה על Mac - מי שעדיין הפעמון שלו שם, אז בשקט בשקט, אל תגלו לאף אחד, ותעשו Mute לפעמון
      • לא שנגלה שהוא דלק לכם, ונמשיך הלאה בחיינו . . . 
  • הדבר הבא - מצאתי אוצר! יש את הספרים של Google על Site Reliability Engineering - המפורסם שבהם זה The Site Reliability Workbook - ויש גם ספר של O'reilly על Building Secure & Reliable Systems
    • אה, הראשון זה של O'reilly, אבל יש גם את השניים האחרים שהם מוכרים
    • אז יש אותם Online - מלאים . . . 
    • אז מי שרוצה מוזמן לקרוא - אלו אחלה ספרים, מומלצים בחום, חינמיים, On-line-י, מלאים
    • (רן) אני, דרך אגב, קראתי - או נראה לי ששמעתי אותם, בעצם - אמנם אין גרסא מוקלטת שלהם, אבל לקחתי תוכנה שממירה את ה-PDF  . . .
    • (אלון) יש Audible!   . . .
    • (רן) אה, יש כבר? אוקיי, אז כשאני האזנתי עוד לא היה [Audible? הם קיימים כבר לא מעט זמן, אחלה דבר . . . ]
    • (אלון) אני זכיתי איתך באיזה כנס של Google פעם בספר, ומאז הוא אצלי על השולחן שוכב, מעלה אבק . . . סתם, לא קראתי אותו מאז - ושמעתי את ה[גרסת] Audible, בגלל זה אני יודע שיש Audible.
    • אחלה ספרים - מומלץ בחום.
  • האייטם הבא זה פרויקט שנקרא Airbyte - הוא נראה ממש חמוד, מאוד מתוחזק ויחסית צעיר, עושה רושם שהוא Data integration made simple, secure and extensible
    • זה Open Source שנותן לעשות Dashboard שרואים לפחות מה קורה עם האפליקציות - 
      • מתי הן עשו Sync, ו-API ו-Data Warehouse, דברים כאלה
    • זה נראה כזה Aggregator של מלא דברים, עם UI ממש חמוד . . .
    • לא הבנתי לגמרי עדיין את מה הוא בא להחליף . . . אבל הוא נראה נוח, מבחינת הויזיביליות (Visibility) שלו.
      • מבחינת שימוש וזה - לא ניסיתי . . .
    • (דותן) ממה שאני קורא, זה נראה כמו Redash עם יכולות טרנספורמציה לדאטה . . .
    • (אלון) זה יותר מזה, כי אתה מקבל סטטוסים של הדאטה שלך . . . זה קצת מזכיר את ה-Airflow, את המערכת וזיאליזציה שלהם . . .
    • (דותן) אה . . . אוקיי, זה מסביר את השם אולי? Airbyte  . . .
    • (אלון) יכול להיות . . . אני חושב שזה . . . 
    • (דותן) אתה יכול להעביר Byte אחד, כאילו?
    • (אלון) כן . . . אחד - זה לא סקלאבילי (Saleable). . . זה Byte-Byte, למה אתה ממהר?
    • (דותן) כשאתה עושה New Project, אתה בעצם מקבל Byte אחד - ואת ה-Byte הזה אתה מעביר? אינטרגרציה של Byte . . . 
    • (אלון) Old-School, כן, Byte-Byte נעבוד . . . 
    • (דותן) כתוב כמה Bit-ים זה, ה-Byte הזה? . . . 
    • (אלון) אה . . . הם לא מפרסמים . . . 
    • (רן) גם לא אומרים אם זה אינדיאני גדול או קטן [Endianness] . . . אבל זה נראה כמו משהו שהוא, לפחות לפי הדוגמא שלהם, משהו שמפוקס על עולם הפרסום,
      • זאת אומרת - אפשר לעשות סנכרון, נגיד בדוגמא שלהם, ל-Facebook Ad, ל-Salesforce או Hubspot ו-Linked Ads וכו’ - אז זה נשמע כאילו הוא מביא דאטה, שם את הכל באותו המקום - ואתה בעצם יכול לשלוט . . . יכול לעשות פה Monitoring ל-Workflow שלו.
      • מה זה בא להחליף? האמת שאני לא מכיר שום כלי אחר שזה בא להחליף . . . כנראה איזושהי “סקריפטולוגיה” פנימית, לא ראיתי לפני כן כלי שעושה משהו כזה.
    • (אלון) בקיצור - נראה לי חביב: נסו, ספרו איך היה. נהניתם? ספרו לחבריכם . . . 
    • (דותן) נראה לי שצריך לעשות פה איזושהי הסברה . . . רן, אמרת “אינדאני גדול או קטן” - אז סתם, כדי לא לפגוע באוכלוסיות מסויימות [שלא קראו את הטקסט וראו את ההפנייה . . . ] - זה Endianness, זאת אומרת “סופתי” . . . 
      • (רן) כן, זו הייתה הלצה . . . “סופתי”, כן . . . Endian
    • (אלון) תודה, על ההבהרה, דותן - אני בטוח שאף אחד לא הבין, פשוט, וזה היה ממש חשוב.
  •  טוב, אז הדבר הבא זה פרויקט שנקרא ה-Joker Language- זה בעצם interpreted dialect של Clojure שנכתב ב-Go . . . .
    • אפשר להריץ פה ClojureScript בתוכו . . .
    • אז לחובבי ז’אנר ה-Clojure - כן, כל אותם . . . מי זה? AppsFlyer? אז כל אותם אלה ב-AppsFlyer שמאזינים - נראה לי שזה בשבילכם . . .
    • (רן) גם Nanit, בישראל, דרך אגב, יש עוד כמה . . .
    • (אלון) יש עוד כמה? . . . 
    • (רן) כן - NET@ [?] מכירים? יש לנו בטח כמה מאזינים שם . . . . ויש בטח עוד כמה בפינלנד ובעוד כמה מקומות בעולם . . . 
      • אבל כן - אם תמיד חלמתם לכתוב Clojure ולתת ל-interpreter ב-Go להריץ את זה - אז זו ההזדמנות שלכם . . . לכו ל-Joker.
      • [לא זה]
    • (אלון) כן, זה מגניב.
  • ולנושא שהחלטתי להוסיף פה לפני  . . . בקרדיטים, Undocumented מה שנקרא - יש משהו שנקרא Reflect.app, לכל מי שאוהב Nodes או עדיין תקוע עם איזה Evernote או איזשהו משהו ארכאי כזה.
    • אז אפשר לנסות לעבוד עם Reflect.app - זה עושה גם mile-map ל-Note-ים, למי שאוהב לשמור Note-ים - אתם יכולים לנסות.
    • (רן) בוא, אני אתן קצת רקע - לפני שהתחלנו את ההקלטה, כל אחד שאל “רגע, אז איך כל אחד שומר את ה-Notes לקראת הפרק הזה?”
      • זאת אומרת - אנחנו אוספים את זה במשך משהו כמו חודש, לפעמים קצת יותר - אז איפה כל אחד שומר?
      • אז דותן ב-Evernote, אני שם את זה ב-Paper ואלון, במה אתה?
      • (אלון) ב-Keep . . .
      • (רן) ב-Keep  . . .  ואז התחלנו להעלות כל מיני אופציות אחרות, ו-Reflect.app הייתה אחת מהאופציות באמת, שעלו.
      • אז זה הקונטקסט של כל זה . . . .
    • אז תודה אלון - ואליך דותן . . .
    • (אלון) דותן בפינתנו Rust-Rust וירקות אחרים” . . . .
    • (דותן) לגמרי . . .

דותן - 
אז היום רק Rust - החלטתי לעשות לכם לגמרי כיפה אדומה, אז נתחיל:
  • האייטם הראשון נקרא rust-tui-template - כש-TUI זה Textual UI
    • מה שנקרא - אי אפשר להוציא את ה-BBS-ים ממני . . . 
    • זה UI שנמצא בתוך ה-Terminal, בדרך כלל הוא עם מסגרות כאלה נחמדות ולא טקסטואלי לגמרי, אבל מכיל כל מיני אלמנטים של ASCII ו-ANSI, מה שנקרא “של פעם”.
    • והפרויקט הזה - לכל מי שרוצה לבנות App כזה מגניב, אז הוא פשוט איזשהו Boilerplate מדהים, שסוגר את כל הפינות.
    • זאת אומרת שכשמתחילים פרויקט עם זה, מקבלים . . . בעצם כל קובץ והמטרה שלו
      • למשל - קובץ שאחראי על ה-Widget-ים של ה-UI, קובץ שאחראי על ה-Data וה-Handler של ה-Keyboard
    • בעצם, כשבונים אפליקציה כזאת - אפליקציה ל-Terminal - יש הרבה “צנרת” שצריכה לקרות . . . יותר מה-Browser ויותר מכל דבר אחר, וה-Template הזה די סוגר את זה.
    • אז למי שרוצה ללמוד Rust - לדעתי זו הדרך הכי טובה: לחשוב על איזשהו רעיון, איזושהי אפליקציה של Productivity, לסגור איזושהי פינה
      • נגיד “לקחת Notes” ,שדיברנו על זה מקודם
      • וזה ממש נחיתה רכה לתוך זה.
  • האייטם הבא, למי שרוצה לראות לאן אפשר להגיע - יש פה מישהו שבנה פרויקט שנקרא gobang
    • זה לא כתוב ב-Go  . . . זה כתוב ב-Rust
    • (אלון) כמעט הפלת אותי . . . 
    • (דותן) זה בעצם Database Management Browser כזה . . . כמו כל כלי שמתמשים בו כדי לעשות Queries לתוך Database-ים כדי לראות מה קורה ולצפות בתוצאות.
    • והכל מבוסס Text-UI - לא Command Line אלא Text-UI - נפתח חלון, כמו VIM כזה, ומנווטים בו בתוך העולם הזה . . .
      • נראה ממש טוב, עובד כמובן מאוד מהר, תומך ב-MySQL וב-PostgreSQL . . . 
      • בעצם אפשר להסתכל ולחפור פנימה ולראות איך זה בנוי - תוך כדי שאתם בונים את מה שאתם רוצים.
    • (אלון) עצה שלי - שים לזה רק Read-Only Connection, כי זה ב-Alpha  . . .
    • (דותן) כן, זה Read-Only . . .
    • (אלון) . . . לך תדע אם ה-Delete פה . . . אם יש איך להריץ דברים ,שלא יהרוג אותו.
    • (דותן) נכון - כמובן שבכל הדברים האלה צריך  . . . לא להתחבר ל-Production עם הדבר הזה . . .
      • (אלון)  ...  אלא אם כן זה Mongo, ואז זה לא משנה
      • (דותן) כן, Read, Write, זה לא באמת חשוב . . . .
      • (אלון) לא עקרוני . . .
  • (דותן) אז האייטם הבא הוא גם בקו הזה של UI - אז יש פרויקט שנקרא Druid
    • לא ה-druid של ה-Data אלא UI
    • ב-Title, זה Data-first Rust-native UI toolkit - או במילים אחרות: סוג של מימוש React-י, עם תחושה של React, בתוך Rust
    • כשמדברים על UI, אז זה על אפליקציות Desktop, בעצם.
    • (אלון) במקור - אתה צריך לספר את ההיסטוריה - זה נולד כמכשיר עינויים . . .
      • (דותן) למה?
      • (אלון) מי רוצה לכתוב ב-Rust את ה-UI?
      • (דותן) קודם כל - אם אתה רוצה לכתוב אפליקציית UI שהיא Cross-Platform, מה אתה עושה היום?
      • (אלון) Web  . . .
      • (דותן) ואם אתה לא רוצה Web, אתה רוצה Native - מה אתה עושה? אולי Electron או משהו כזה . . . 
      • (אלון) כן, Electron. . . למה? זה נראה לי סיוט . . . 
      • (דותן) תלוי בדרישות . . . למשל - יש הפצת Linux שאני מאוד אוהב שנקראית elementary, וזה נראה ממש, נקרא לזה “כמו-Mac” - אבל זה מדהים, לדעתי זה Linux כמו ש-Linux היה צריך להיראות.
        • ושם בונים Native-UI Apps - וכמובן שכשאתה בונה הפצה של מערכת הפעלה, אתה לא יכול באמת לארוז הכל ב-Electron - אפליקציה של מחשבון שתיקח לך 150Mb ותגמור לך את ה-CPU והזיכרון.
        • [ב- Microsoft Teams זה לגיטימי . . . .]
        • אז שם הם עושים את זה עם Vala - ו-Vala זה איזשהו “שיקוץ” כזה, זה #C מעל GTK, וזה כזה משהו שתמיד הרגיש כאילו נעשה בשביל ”לסגור פינה” - אבל כל מערכת ההפעלה בנויה בזה, והיא עובדת מדהים.
      • אז נגיד לדבר כזה זה מאוד שימושי . . . 
    • אז זהו - זה Druid, והיום ה-Reference Implementation של UI Apps, מסתבר, זה לממש Spotify Client . . .
      • אז בעצם הוספתי לינק למישהו שעבד עם Druid ופיתח פרויקט שנקרא psst - כמו שעושים למישהו “פססט” כזה, לחתולים . . . וזה בעצם Spotify client ממומש Native-לי, בלי Electron, רק עם Rust
      • בעצם מקבלים, אני משער - האמת שאפשר גם לא לשער . . . לא, אין Releases - אז אני משער שזו תיהיה אפליקציה ששוקלת 4-5Mb, משהו כזה.
      • זהו, אז בעצם . . .
      • (אלון) עם “UI בשקל”, בסדר . . .
      • (דותן) למה? ה-UI נראה טוב . . . כאילו, אתה יכול להסתכל על ה-Screenshot-ים, הוא נראה סבבה . . . 
      • (אלון) כן, נו - אבל אחרי זה  . . . לא יודע, אני חושב שאלא אם כן אתה באמת חייב את זה, לברוח . . .
      • (דותן) אין ספק שהקריטריון הוא שאתה חייב את זה . . . יש המון אופציות לא לבנות Native - אבל אם אתה חייב את זה, אז בעצם מה האפשרויות? האפשרויות הן - אם אתה רוצה Cross-Platform . . .
      • נגיד, Linux יתפוס לך הרבה מאוד נפח, אז זה GTK, ו-GTK זה חתיכת סיוט . . . 
      • אז כן, אם אתה חייב, במקרים שאתה חייב - אני חושב שאין הרבה פתרונות טובים ל-Cross-Platform וזה יכול להיות פתרון טוב.
  • הקטיגוריה הבאה של Rust שאני מתעניין בה זה משחקים - אז יש Platformers ויש כל מיני Indi-Frameworks לפיתוח משחקים, כש-Unity היום, במיוחד בתחרויות פיתוח משחקים, הוא השולט, ותמיד אני מחפש את ה . . . אני יודע של-Rust יש Sweet-spot של Performance ו-Productivity ותמיד אני מחפש לראות איך עולם ה-Indi-Games או חבר’ה שבאים ו . . . שהם לא סטודיו מטורף, ומשתמשים ב-Rust כדי לנצל את המעלות שלו כדי לפתח משחקים - וזה מתחיל לקרות.
    • אז יש כזה משחק שנקרא Fish Fight, שבעצם עשו לו Open-Source - הוא לא היה בתקופה מסויימת, והפך להיות Open-Source.
    • זה איזשהו Tactical 2D shooter מצחיק כזה, עם דגים שנלחמים אחד בשני - ממש מגניב, לא עלוב בכלל אלא להיפך, זה כזה . . . יש לזה “פקטור מגניבות” כזה.
    • וזה משתמש ב-Framework ב-Rust שנקרא Macroquad - שעברתי עליו ובדקתי אותו ונראה ממש ממש טוב, לפיתוח משחקים Indi
      • בנוסף, יש המון Learning Materials בתוך המשחק הזה, כולל Tutorial של איך לבנות משחק וכולל איזושהו Mini-Setup ל-Platformer.
    • אז ככה, לתקופת החגים הקרובה - למי שיש לו זמן ורוצה לצלול ולפתח משחק - שזה לדעתי אחד הדברים הכי כיפיים לעשות - אז זו אחלה נקודה להתחיל בה. זהו . . .
  • האייטם הבא נקרא Rustacean Principles . . . 
    • עכשיו, לכל קהילה יש איזושהי נקודה - אני זוכר את זה במיוחד מאיך שקהילת ה-Ruby התפתחה - יש נקודה שמתחילים לזהות “אופי של קהילה”, וכמובן שהאופי הזה נובע… אם הקהילה היא סביב שפה אז הוא נובע מאיך שהשפה בנויה ומה שהיא דורשת מהמשתתפים בקהילה.
    • אז יש את Niko Matsakis - אחד הכוכבים בקהילה הזו [הפנייה ל-ציטוטים מומצאים של הגשש?]
    • והוא החליט להסתכל ולעשות איזושהי אובסרבציה (Observation) ולהביא כמה עקרונות שמלווים אנשים שבונים ב-Rust, וגם את הקהילה עצמה.
    • אני אתן כמה דוגמאות - לא יודע אם כולם ממש תואמים, אבל נגיד:
      • למשל - gearReliable: “if  it compiles, it works - וזה נכון
      • או horse Performant: “idiomatic code runs efficiently - זה גם נכון . . .
      • קהילה שהיא smiling face with hearts Supportive - שזה נכון בצורה . . . לא כמו קהילת ה-Ruby, אבל זה די נכון
      • וגם puzzle piece Productive ו-wrench Transparent ו-person cartwheeling Versatile
    • אז כל הדברים האלה - אני יכול להעיד לפחות שהם נכונים.
    • בעצם זה מוביל אותי לאייטם, שאני דווקא אתן דוגמא . . . הוא גם משמש כדוגמא לדברים האלה.
  • אז יש חבילה בשם polars - וזה נראה לי שרן יאהב - וזה בעצם Blazingly fast DataFrames in Rust & Python
    • אז בעצם לקחו DataFrames, מימשו חלק מהפעולות - או “חתיכה מהעולם” - ב-Rust - ועשו Binding ל-Python
    • ובעצם, אם נסתכל על ה-Benchmark-ים, שזה החלק החשוב בדבר הזה - המימוש ב-Rust הגיע, כמעט תמיד, למקום השני בכל ה-Benchmark-ים, מקום שני-שלישי.
    • אם מסתכלים בקוד - ואני עברתי על הקוד - אין שום דבר שנכתב ב-Rust שנראה Specialized . . . 
      • אין Hack-ים, אין טריקים - כל האימפלמנטציה (Implementation) “נאיבית”.
      • יש שם Generics, יש שם איטרציות (Iterations) מעל Collection-ים מאוד מאוד High-level . . . יש Temporary variables והמון אבסטרקציות (Abstractions)
      • וכל הדבר הזה לא משפיע בכלום על ה-Performance . . .
    • (רן) אני חושב שהסתכלתי על זה בעבר - זה נחמד, כאילו, הזריזות של זה זה נחמד
      • חסרה הפונקציונאליות הגדולה שיש ב-pandas . . .
    • (דותן) כן, זה לא מחליף את pandas, זה לא מחליף . . . זה נותן חתיכה מהסיפור . . . 
    • (רן) כן - אבל אם זה יגדל, זה יכול להיות תחליף טוב ל-pandas, אני מסכים.
    • (דותן) כן, אז כאילו מה שאני מנסה להעביר זה שכשראיתי את הפרויקט הזה, הדבר הראשון שעשיתי זה לצלול ולהבין האם יש Hack-ים
      • כל מיני Hack-ים של Performance, כל מיני טריקים כדי לממש דברים בצורה יותר חכמה ויותר מהירה - ואין . . .
      • כלומר - הכל קוד “Vanilla” של Rust שאפשר לקרוא בצורה “הומאנית”, וזה אחד הדברים המעניינים.
    • (רן) כן, ונגיד שגם דברים שקיימים ב-pandas - כשהם רצים מהר, אז זה רץ ב-++C . . . זה אומרת או שזה Alpine מתחת, או שזה מימושי ++C ספציפיים
      • אבל שום דבר לא רץ מהר ככה ב-Python . . . 
      • אז פה בעצם אולי הם הצליחו לייצר משהו שהוא ב-Rust ויותר מהיר מ- ++C, אבל זה לא משהו שהוא אינרנטי (Inherent) . . .
      • אולי זה מימוש יותר אלגנטי, אולי זה מימוש של איזשהו Subset של פונקציונאליות . . .
    • (דותן) כן, צריך לזכור שמה שמקבלים בחינם, בניגוד ל-++C, זה Safety ו-Memory leaks - שאין - ובאגים טיפוסיים שמן מהסתם שייכים לעולם הזה של C ו-++C
      • וקוד שהוא קריא-בטירוף, הייתי קורא לזה . . . מדהים.
    • (רן) קראת ל-++C “לא קריא” ברגע זה?!
    • (דותן) כן.
      • לא קריא - וגם הופך אותך ללא-שפוי לאורך זמן . . . 
    • (רן) “לא שפוי” זה עניין יחסי . . . בסדר. אין בעיה, לא נפתח פה חזית . . . הלאה.
  • (דותן) הוספתי אייטם ל-Fast Rust Builds, כי ידעתי שאלון יקפוץ מיד עם ה-Build-ים האיטיים ב-Rust, כדי לסגור את הפינה ומראש להנחית מהלומה . . .
    • (אלון) להרגיע לפני שזה גדל, אתה אומר . . .
    • (דותן) לגמרי.
    • (רן) מכיר את הבדיחה על הקומקום?
    • (דותן) לא . . .
    • (רן) ילד ואבא יושבים, ופתאום הקומקום על הכיריים - פעם היו קומקומים על הכיריים, שהיו שורקים ברגע שהם היו רותחים, כי היה להם מעיין פקק כזה, לפני הקומקומים החשמליים . . . - אז ברגע שהקומקום שורק, האבא רץ ונותן לו מכה ככה, עם מחבט.
      • אז הילד שואל אותו “מה קרה? למה אתה ככה נותן מכה לקומקום?”
      • שכחתי לציין לפני כן שהאבא נפגע בתאונת רכבת . . . ננסה שוב . . .
      • (אלון) האמא בתאונת רכבת . . . 
      • (רן) אז האבא אומר “צריך להרוג אותם כשהם עוד קטנים”.
      • (דותן) הרסת את הבדיחה, באמת . . .
      • (אלון) הרכבת הייתה עושה “טו-טו” ו . . .
      • (דותן) האמת . . . העורך יכול לתקן את זה? אחלה אתגר . . .
      • [אה . . . ]
      • (רן) אני רק אציין שאני העורך ברגעים אלו . . . 
      • (דותן) בסדר, עדיין אפשר לקרוא לך “העורך” . . .
      • (רן) כן, “בכובע העורך”
      • (אלון) וואו . . . קודם כל, זה טוב לדעת שאתה עורך . . . תראה, אם אתה רק הופך את הסדר של הבדיחה שתיהיה בסדר בעריכה, אז היא תיהיה בינונית . . .
      • (רן) אני חושב שיעריכו אותנטיות פה . . . נשאיר את זה As-is . . .
    • אבל כמה יותר מהר? בוא נחזור רגע -  “Build-ים יותר מהירים”  - כמה? מה?
    • (דותן) אז הוא מסכם את המאמר עם משהו שאני מסכים איתו - Build של Rust עם בערך 200,000 שורות קוד, עם אופטימיזציות אגרסיביות . . . 
      • ב-Rust יש סרגל שלם של אופטימיזציות שאפשר להפעיל
      • צריך לקחת בסביבות העשר דקות.
      • שזה נשמע הרבה, אבל אתה . . .
    • (רן) ולפני זה כמה היה?
    • (דותן) אז הוא לא לקח . . . הוא לא עשה Use Case של “לפני ואחרי”, זה לא ממש מאמר שאתה מסתכל עליו ואומר “אוקיי, הנה הבעיה ו . . .”
      • הוא פשוט נותן כמה טריקים ידועים לקהילה
      • הרוב זה Caching ו-Caching חכם - ולמה Caching ו-Caching חכם? כי Rust בעצם מאוד קרוב ל- C ו-++C במובן הזה, ספריות שנבנות הן ספריות שהופכות להיות סוג של Binary Libraries.
      • ואם . . מה זה “אם?” הספריות האלה לא משתנות . . . אז בעצם אתה רוצה לעשות Caching של האוביקטים האלה כבינאריים, ואז אתה בעצם מקבל את זה “חינם” . . . 
      • אז יש עולם שלם של Build Cache, שהוא זהה כמעט לגמרי אם אתה בא מ-++C וכאלה - אז זה אחד
      • ושתיים - כל הקומפילציה (Compiling) של מפתחים, אנחנו עושים . . . .אני חושב שנגיד גם ב-Java זה קיים, וב-Kotlin - יש Incremental Builds: אתה בעצם עושה Build רק של מה שהשתנה
        • וב-CI זה לא רלוונטי, אז אתה עושה Disable לכל המנגנון הזה ואז זה מאיץ לך את ה-Build בסוף . . . 
      • כל מיני טריקים כאלה
    •  הוא נותן שם כמה מספרים . . . אני יכול להגיד לך שאני הייתי על Build-ים של חצי שעה, ואז הקטנתי אותם לסדר גודל כזה של עשר דקות.
    • (אלון) העיקר צחקת עלי, שאני אמרתי “מה? לא יכולת להגיד “חצי שעה זה סבבה! אתה יודע כמה קפה אני יכול לשתות בחצי שעה?””
    • (דותן) תלוי ,יש תקופות שאתה רוצה שה-Build יקח חצי שעה, אבל כן . . . 
  • אז בקיצור - אייטם הבא: אז לקחתי פה איזשהו סיפור בהמשכים של חברה בשם CROWDSTRIKE
    • זו חברת סייבר די גדולה, פומבית (Public), נאסד”ק וכאלה . . . די מפורסמת גם.
    • והם מספרים סיפור שככה יצא לי לחוות אותו אחד-לאחד - והוא איך בעצם לוקחים את עולם ה-Machine Learning של Python ומחברים אותו עם Rust, 
      • כאשר ה-Python עושה את ה-Training ו-Rust עושה את הפרדיקציה (Prediction),
      • כדי לקבל את הפרדיקציה - וזה גם מה שאני חוויתי - לקבל פרדיקציה יותר מהירה.
    • אז הם עשו את זה בשני חלקים, והם מראים פה בעצם נתונים מדהימים - 
      • מתחילים בעצם ב-Background ו”למה?” - איזשהו Assessment כזה של שני פרויקטים שלהם -
        • אחד נקרא “Dark Knight” - יש להם שמות מגניבים לפרויקטים - והשני נקרא “Airen”
      • אחד בעצם מבוסס TensorFlow ו-Python ו- ++C וכל מיני שטויות
      • והשני בעצם מבוסס Rust ו-Python
    • ומראים תוצאות מדהימות, זה המאמר הראשון - אז נתחיל עם התוצאה, מראים כאן מספרים
      • לדוגמא 2.98 לעומת 0.16 ב-Rust . . . לדעתי זה ב-milliSeconds, כן זה milliSeconds
    • אז זה Mind-boggling, ההבדלים האלה - וכשזה חשוב לך לקבל את הפרדיקציה במהירות, אז זה מאוד מאוד משמעותי
    • מה שהם מדברים על Use-Case-ים, אז יש להם טכנולוגיה אחת לזהות URL-ים “חשודים”, ועוד אחת לזהות שינויי קבצים
      • ושתי הטכנולוגיות האלה מבוססות על Machine Learning ו-TensorFlow - וחשוב להם מאוד ה-Real-time-יות של זה . . . ולכן הם התחילו לבחון פתרונות אחרים.
    • אז בחלק השני הם בעצם פורטים את “המכניקה” של מה שהם עשו, שזה דבר יחסית-סטנדרטי  -
      • הם בעצם לקחו חלקים מ-Python והיו חייבים לשכתב אותם ב-Rust, את כל העניין של הפרדיקציה
      • והם מסבירים למה זה היה שווה להם
      • אני יכול להגיד שעברתי בדיוק את אותו תהליך אצלנו, לפני משהו כמו שנה, וזה פשוט . . הפירות של זה הם ממש עד היום.
    • זהו - זה למי שמתעניין על איך להאיץ את ה . . . או שצריך פרדיקציה מהירה.
    • (רן) אבל הם גם עושים את זה ע”י tf.function
      • זאת אומרת, בגדול, כשאתה עושה את זה דרך TensorFlow, אתה יכול לכתוב קוד Python-י ולשים איזשהו Decorator של tf.function - ואז זה מייצר Predictor מהיר
      • השאלה אם הויזיבליות הזאת גם קיימת פה, או שהם צריכים לכתוב . . .
    • (דותן) הם כתבו חלק מהדברים האלה מחדש . . .
    • (רן) כן . . . אז פה, כאילו, “זה לא חוכמה”, באיזשהו מובן - כי הם כתבו משהו שהוא ממש Dedicated ל-Use Case שלהם, לא משהו שהוא גנרי 
      • זאת אומרת שאם הם אח”כ ירצו לשנות את המבנה, אני מניח, או לשנות משהו אחר - אז הם יצטרכו לכתוב משהו שהוא Dedicated שוב ב-Rust
      • אז זה קצת כאילו להשוות תפוחים לתפוזים, באיזשהו מובן
      • אז כן - אם אתה כותב משהו שהוא מאוד Dedicated, אז תוכל להשיג משהו יותר מהיר . . . דרך אגב, יכול להיות שאם היו כותבים בדיוק את אותו הדבר ב-++C ישירות מה-TensorFlow, הם גם היו מקבלים ביצועים כאלה . . . 
    • (דותן) אני חושב שפשוט  . . . קודם כל, כשנכנסים לפרטים, אז יש פה המרה של מודל
      • אני הלכתי דרך כמה . . . “ביקרתי בכמה תחנות”, וכשהבנתי שאת הפרדיקציה בחרתי לעשות עם XGBoost
      • והסיפור האישי שלי הוא שמימשתי - למרות שה-XGBoost כתוב ++C - מימשתי את זה מאפס ב-Rust, את החלק של הפרדיקציה.
      • וקיבלתי פרדיקציה יותר מדוייקת - וגם יותר מהירה.
      • אז כאילו באופן מסויים הנתיב הזה הוא . . . אתה חושב שאתה כאילו לוקח קוד, כשאתה מתחיל - אתה חושב שאתה לוקח קוד שאנשים עבדו עליו ועשו אופטימיזציות משוגעות וכו’
      • אתה כותב אותו פשוט ב-Rust על הניסיון הראשון - ובריצה הראשונה אתה פשוט מקבל משהו שעובד יותר מהר . . . וזו החווייה.
    • (רן) לא התכוונתי, דרך אגב, שעשו אופטימיזציות ב-++C - אני מתכוון שיש יותר יוזביליות (Usability)
      • אתה יכול . . . יש יותר ורסטיליות (Versatility), שאתה יכול לעשות יותר דברים.
    • פה אולי הם תפרו ל-Use Case ספציפי שלהם וזה עושה בדיוק את מה שהם צריכים ועושה את זה יותר מהר
    • אבל היתרון בגרסא המקורית זה שאתה יכול לעשות, אתה יודע - אתה יכול לכתוב איזו פונקציה גנרית, איזושהי רשת גנרית ב-Python, לקמפל אותה ל-++C עם tf.function - ויש לך משהו חדש.
      • בזמן ש . . .זאת אומרת, אתה לא צריך לכתוב את זה מחדש ב-Rust
    • אבל ברור לי לגמרי שאם יש להם משהו שהוא כבר Stable, הם כבר יודעים מה הם רוצים . . .
    • (דותן) נכון, לגמרי, זה תמיד . . הניסיון השני והשלישי זה תמיד יותר טוב . . . .
    • (אלון) זה כמו Framework גנרי לפתור בעיה ספציפית . . . בשביל לפתור בעיה ספציפית אתה תעשה את האופטימיזציה הנכונה
      • אבל הקונספט מעניין, אני חושב - ברמת ה”לקחת את זה למאקרו” זה בעייתי להגיד “בוא נזרוק TensorFlow ונעבוד עם Rust
      • אבל אני חושב . . .
    • (דותן) הם לא זורקים . . . 
    • (אלון) לא . . .
    • (דותן) הם פשוט מימשו את החלק של הפרדיקציה בצורה, נקרא לזה “פרטנית”, או “Custom להם”
    • (אלון) שוב, יכול להיות שאתה יודע . . . טוב, בקיצור, כרגיל, כל מקרה לגופו . . . . אם שווה לך להשקיע בזה או לא.
    • (דותן) הייתי שמח אם הם פותחים את הקוד של זה, אבל לא נראה שזה קרה . . . אבל לך תדע.
      • אני, בכל אופן, אמשיך לעקוב אחרי זה.
    • (אלון) שמע, זה חברת סייבר-  חכה שמישהו יפרוץ להם ויוציא את הקוד . . . 
    • (דותן) טוב . . . נמשיך לכמה אייטמים אחרונים . . .
    • (רן) יש ל משהו על Rust להיום?
    • (דותן) כן, אז אני אשנה נושא . . . האייטמים האחרונים יהיו על Rust.
  • אז הוספתי עוד לינק בשביל אלון - זה נקרא Cheap tricks for high-performance Rust
    • אז הדף הוא ריק - כי לא צריך  טריקים כאלה . . . סתם, יש שם כמה דברים.
    • (אלון) למה רשום בשורה הראשונה Write in Go”?
    • (דותן) בקיצור, יש שם דברים מאוד מועטים ומאוד שטחיים - כי לא באמת צריך . . .  סתם כמה פרמטרים, אין יותר מדי.
      • את האמת, לא בצחוק: אין פה שום דבר שאומר לך איך לכתוב קוד - אני רק שם לב לזה עכשיו - איך לכתוב את הקוד שלך ב-Rust אחרת כדי שיהיה יותר [מוטה-] Performance.
      • כל מה שיש פה זה Build flags למיניהם . . . שזה מעניין.
    • (אלון) כי הם עדיין לא הצליחו להריץ את בקוד, אז הם מקמפלים (Compiling)?
    • (דותן) יכול להיות  . . . סבבה.
  • אייטם אחרון - ונקנח דווקא עם Rust: זה נקרא Miri
    • זה פרויקט שעבדו עליו הרבה זמן, התחיל כפרויקט אקספירמנטלי (Experimental) לגמרי  בעולם של שפות תכנות
    • הניסיון היה לקחת . . . הרי Rust מתקמפל (Compile) לאיזשהו “ייצוג ביניים” - Intermediate interpretation, איזשהו IR - 
      • ואז את הייצוג ביניים הזה, שאפשר לחשוב על זה כעל Assembler-מתוחכם-High-Level” - הדבר הזה מתקמפל ל-Machine-Code ע”י מנגנון אחר.
    • אז בעצם הרעיון שהיה ב-Rust, שהוא רעיון יוצא דופן - לקחת רק את הקוד IR הזה ולהריץ אותו ב-Run-Time, כמו Interpreter - כשהמטרה בסוף היא שיהיה פרויקט - במקרה הזה Miri - שיודע “לקרוא החוצה את החתיכות לוגיקה” האלה ולמצוא בהן כל מיני בעיות לוגיות.
      • למצוא אופטימיזציות, למצוא באגים למיניהם - כל מיני דברים כאלה.
    • אז הדבר הזה כבר “עלה כיתה” - הוא כבר רץ על כל מיני ספריות ב-Rust ומצא באגים אמיתיים
      • זאת אומרת - יש טסטים, יש הכל, זה ספריות Open-Source גם . . . 
      • אבל באגים שבסוף, אין מה לעשות - זה טעויות של מפתחים, ובסופו של דבר יש באגים . . . 
      • אז זה מצא לא מעט באגים בצורה אוטומטית בספריות מאוד פופולאריות - וגם בספריות Core של השפה.
    • אז אני חושב שאולי Valgrind וכל המשפחות האלה של ה-Tool-ים - בגישה זה זהה.
      • בטכניקה זה שונה.

(רן) אוקיי - ועד כאן החלק על Rust, נראה לי . . . עד כאן בעצם החלק הרציני של הערב.
אז יש לנו סדרה של קטעים קצת יותר הומוריסטים - המצחיקולים שלנו [יש מצב שכבר שווה פתיח נפרד : - ) . . . ]
אז נתחיל:

  • הלינק הראשון נתרם ע”י מאזיננו ערן - תודה ערן!
    • הלינק הראשון נקרא How-I-experience-Web-Today.com
    • וכשאתם לוחצים עליו אתם בעצם מקבלים איזושהי חוויה שכנראה ראיתם אותה בעבר, שבה אתם למעשה, נניח, עושים איזשהו חיפוש ב-Google ומקבלים איזשהו לינק לאתר, לוחצים על האתר - 
      • והדבר הראשון שאתם רואים למטה זה Cookie Privacy Statement, שאתם צריכים לעשות Accept, נגיד . . .
      • אז נניח שעשיתם Accept - קופץ לכם Pop-up מלמעלה: של “האם אפשר לשלוח נוטיפיקציות (Notifications)?” . . . . נגיד “לא” . . . 
      • אתם אומרים No Thanks, תודה .  . . ואז קופצת עוד Pop-up: “אני רוצה להראות לך נוטיפיקציות!” - ושוב אתה אומר “לא!”
      • ואז קופץ עוד Pop-up - “תעשה לי בבקשה Subscribe ל-Newsletter!”
      • אתם לוחצים “No Thanks” - ואז אתם מגלים ש-”!Ad-block detected”, ואתם עושים “OK” . . . 
    • בקיצור - שורה של Pop-Ups על Pop-Ups על Pop-Ups . . . . ככה פחות או יותר נראים הרבה מאוד אתרים היום באינטרנט, למרבה העצב.
    • וגם כשאתם רוצים לעזוב - אז קופץ לכם Pop-up “האם אתם באמת רוצים לעזוב את האתר הזה?!” . . . שזה טריק ידוע וישן שמשוחזר פה.
    • אז כן - קצת רטרוספקטיבה על איך נראה האינטרנט נכון להיום, רטרוספקטיבה אולי קצת עצובה אבל אני חושב שמשקפת נאמנה הרבה מהאתרים של היום . . . 
  • האייטם הבא שבחרתי להציג - האמת היא שהוא לא חדש, אבל הרבה זמן לא עשינו Bumpers וזה לא הוצג פה [היה לינק באחד הרפרנסים למיטבי לכת …] - זה סרטון נחמד שצילמו אצלי בחברה ב-AppsFlyer, שנקרא “אז שכרנו הד האנטר. פחות הצליח” . . . 
    • סרטון הומוריסטי - אני מזמין אתכם לבוא ולראות אותו.
      • כנראה שכבר ראיתם - אבל אם לא אז לכו תראו: חמש דקות של כיף, של צחוק על קהילת ההיי-טק, קהילת פיתוח התוכנה בישראל.
      • על איך נראה הד-האנטר של פעם בעולם של היום.
      • לכו תראו - נחמד, ב-YouTube, ב-Facebook, בכל מקום שתרצו - אני אשים כמובן את הקישור.
    • (דותן) זה נראה לי שזה ה-Head Hunter של העתיד . . . 
    • (רן) של העתיד?
    • (דותן) נראה לי שזה יגיע לשם בסוף . . . 
    • (רן) כן . . . בקיצור - משעשע, גם למי שלא ב . . 
    • (אלון) יש חברות שכבר שם . . . 
    • (רן) גם מי שדרך אגב  . . . . גם אשתי ראתה וגם הילדות שלי ראו - ואת כולם זה הצחיק, זאת אומרת שיש פה הומור שמדבר לכל גיל ולכל מקצוע.
      • עשוי היטב, הפקה יפה - לכו תראו.
  • אייטם הבא - טוויט נחמד, או ציטוט נחמד שמצאתי ב-Twitter, אני אקריא לכם:
    • אז משעשע . . . זה נמצא ב-Twitter של CodeWisdom@, זה שם החשבון, CodeWisdom@ [זה ה-Handler, השם הוא Programming Wisdom], אז יש שם עוד כמה כאלה משעשעים . . . 
  • ונעבור לאייטם הבא ב-Twitter - גם הוא דרך איזשהו חשבון וירטואלי משעשע של מפתחים שנקרא I am Programmer, I have no life - והציטוט הבא מגיע [גם] משם:
  • When someone ask you what programming language they should learn, don’t simply answer the one you prefer. 
  • First - ask them what area they plan to focus on. For example:
    • [ובעברית]
    • זהו, אז זה סוף ה-Quote הזה . . . 
    • (אלון) אני לא יודע אם זה מצחיק או עצוב . . . 
    • (רן) כן, אני מניח שאצל דותן תעשה Find-Replace ל-Rust, בסדר . . . ואלון - אתה רשאי לבחור ב-Go . . . 
    • ונעבור לאייטם הבא . . .
  • אז אחד מה-Release notes - אתם יודעים, כל פעם שמשחררים אפליקציה ל-App-store, צריך לכתוב ככה Release Notes - אז Slack, באחד מה-Release Notes האחרונים שלהם, כתבו ככה: What’s New - מה חדש ב-release האחרון של Slack ל-AppStore - אז ככה הם כותבים:
    • וכו’ וכו’ -בקיצור: “לא היה לנו מה לכתוב, אז שיהיה לכם יום טוב - באהבה, ביי . . . .”
    • אז כן - אז Release Notes משעשעים, לא תמיד צריך לכתוב את מספר הבאגים שתוקנו, אם אין לכם שום דבר מעניין . . . 
    • (דותן) אה - זה אמיתי! . . . 
    • (רן) זה אמיתי . . . לגמרי אמיתי, מלפני כמה שבועות [זה Slack 21.07.20] . . . נחמד
      • חברה שהיא Corporate כבר לא קטן, באים וככה מכניסים איזשהו Easter egg כזה חמוד
  • טוב - האייטם הבא, לדעתי נתרם ע”י אלון, נכון? שלחת לנו את זה פה ב-WhatsApp . . . 
    • (אלון) זה היה ע”י זהר [זהר!] - (רן) אה, אז תודה זהר!
    • למעשה, אני לא יודע אם זו בדיחה או משהו אמיתי, אבל זה איזשהו מועמד לתפקיד, ששלח איזשהו תיאור של היכולות שלו, והוא כותב:
      • לנציגי ה-HR בחברה, הוא כותב להם “הנה - זה מה שאני מציע בתור עובד”: עלות חודשית - כך-וכך $; שעות בשבוע - 40 שעות בשבוע; Emails per week - 400; קפה, או הפסקות קפה או תה - 3; Overtime -   . . . “
    • בקיצור - הוא נותן איזשהו Spec של של עצמו, והכותרת של זה היא EaaS, כלומר: Employee as a Service . . . 
      • אז זה מה שהוא מציע ב-Spec שלו . . .
    • עכשיו, לא בטוח . . .  אני לא לגמרי הבנתי עד כמה זה רציני או “בדיחתי” . . .  כי יש פה איזשהו נופך של 1 באפריל, שזה יכול להיות גם וגם . . . 
    • בכל אופן - זה יותר משעשע, של Employee as a Service ואיזשהו Spec שלו, כמו Spec של instance ב-EC2 . . . 
    • (דותן) זו, דרך התשובה, להד-האנטרים של העתיד . . . 
    • (רן) לגמרי . . .  הנה, סגרנו פה מעגל, טוב . . . 
  • if (Hamas.IsAttacking)
{
  • if (Hammas.Attacks.Contains(“rockets”) && Hammas.Attacks.Contains(“arson balloons”) && Hammas.Attacks.Contains (“violent riots”))
{
  • Terroism = true;
  • RegionStability = false;

  • Israel.Defend();
    • עכשיו נפרש . . . איך נפרש את הדבר הזה? . . . 
    • (דותן) קודם כל, הם היו צריכים לדאוג לזה, לפקטור “המפתח הציני” - שזה לא מתקמפל, ושזו השורה הראשונה בקובץ, וזה שאין פה בכלל פונקציה מעל זה, ושמות משתנים שמתחילים באות גדולה ומלא מלא בלגן קורה פה בקוד . . . 
    • (רן) אז בוא נסתכל על שני הצדדים - על החצי המלא והחצי הריק של הכוס:
      • (1) - נחמד שניסו לתקשר לעולם בצורה של קוד, בצורה שהיא קצת גיקית
      • אבל (2) - אם אתם רוצים להיות רציניים, בואו נעשה באמת - כמו שדותן אמר - משהו שבאמת נקרא, שגיקים מצליחים לקרוא, לקמפל להם בראש - 
      • ולא לקבל התקף חרדה של “אם אלה האנשים שכותבים ב-IDF, אז ככה נראה המצב . . . .”
      • [מה שבר-זיק אמר . . . ]
    • (דותן) אה, אתה אומר שזה משליך  . . . לא חשבתי על זה . . . 
    • (רן) כן, אז Twitter היה מלא בתגובות של “חבר’ה, רבותיי - בואו, אולי כדי שלא נראה איך נראה הקוד שלנו, כדי שלא לעודד את החמאס או אחרים . . . “
    • אז זה נחמד, ניסיון יפה - אבל מצד שני, מישהו היה צריך לעשות לזה Code Review לפני שזה פורסם ב-Twitter.
    • (אלון) “שבר את הרשת”, כמו שאומרים . . . 
    • (רן) “שבר את הרשת” . . . בהחלט . . .
    • ואלון - יש לך גם כמה אייטמים קטנים - בבקשה: 
    • אז Non-Zero Value זה כשיש לך נייר טואלט, ואפס זה כשהגליל ריק - ו-NULL זה כשאין גליל . . .
    • ו-Undefined זה כשאין גם מתקן לגליל . . . .
    • זו ההגדרה - וזו תמונה חמודה ומשעשעת, זהו
  • עוד משהו - יש את ה-Extension ל-Terminal שדיברנו עליו פעם, בשם .FIG
    • (רן) התקנתי אותו, דרך אגב . . . 
    • (אלון) הוא מדהים . . . הוא מדהים
    • (רן) קצת מעצבן אותי . . . קצת מעצבן - הוא נחמד ויפה והכל, אבל קצת מעצבן . . . כל הזמן קופץ, קצת מעיק לדעתי . . .
      • (אלון) אמרתי שהוא מגניב - למה אתה הורס לי? כאילו, אני לא מבין - בנאדם בא ואומר “מגניב” ו . . . 
      • (רן) אבל אני עדיין משתמש, הוא יפה . . . 
      • (אלון) או - תודה! אני מבקש רן - תוריד את זה בעריכה, באמת [לא קרה . . . ]
      • (רן) הוא מגניב, אמרתי כבר שהוא מגניב?
      • (אלון) כן, אמרנו שהוא מגניב, יופי . . . אני לא מאמין, אתה סותר אותי מול הילדים! [אה?]
    • בקיצור - אז לא משנה, יש שם . . .הם פרסמו . . . אפשר לעשות ב -  ;brew install cmatrix $ - ואז להריץ cmatrix - והטרמינל ניהיה “כזה של “Matrix [החדש?!]
      • (דותן) זה היה . . .  שמע, כשמטריקס היה “אין” [ב-1999…], אז היו מלא כאלה . . . אתם זוכרים? שומר מסך . . .
      • (רן) חזר המטריקס!
      • (אלון) . . . .עכשיו מטריקס שוב פעם “אין”!
      • (דותן) נכון . . . . זה “גל גיקיות” כזה . . .
      • (רן) זה הגל הרביעי . . . 
      • (אלון) בדיוק - אנחנו שוב במטריקס, בגל הרביעי - ולכן כל הדברים הגיקיים ששמרנו מפעם, אפשר להחזיר אותם . . . 
      • (דותן) אפשר להוציא אותם עוד פעם - פוסטר, הכל . . . זוכרים את הפוסטרים? שפעם היו . . .
      • (רן) כן, היה פוסטר של ניאו על מטריצה, כן . . . [היה?!]
    • (אלון) זהו, אין לי יותר מצחיקולים יותר ליום הזה . . .
    • (רן) זהו? אז זה הכל, כן.

אז אנחנו ממש ככה לקראת סיום - אז לכו תשתשעו במטריקס, מקווה שתהנו מהסרט [יש לכם עוד להתאכזב מ-Dune השנה - אז בעדינות…] - ותודה רבה לכולם.
כאן אנחנו מסיימים - להתראות, תודה רבה.


 האזנה נעימה ותודה רבה לעופר פורר על התמלול!

אין תגובות:

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