רברס עם פלטפורמה

430 Bumpers 78


Listen Later

[קישור לקובץ mp3] 
פרק מספר 78 של הבאמפרס, 4 בינואר 2022. קדימה...
רן - 
  • אירוע אחד משמעותי שקרה זה Reversim Summit 2021, שקרה לפני כשבוע, נכון להיום - Reversim Summit 2021 בגני התערוכה.
    • כנס שבו התכנסה הקהילה כדי לשמוע תוכן - היו קרוב ל-60 הרצאות מסוגים שונים והיה טוב והיה כיף - והיה מלא מלא עבודה . . . 
    • אז קודם כל, אני אשים פה איזשהו רפרנס לבלוג-פוסט שלי שמסכם את זה, ואני אתן את ה-Highlights - 
      • היו לא מעט Twit-ים של חברי קהילה, שבאים ומסכמים - אז הבאתי איזשהו ייצוג של שלהם.
        • אני חושב שהדבר שלפחות מבחינתי היה הכי משמעותי זה איזושהי עדות ל-Impact שאנחנו עושים על הקהילה - לזה שאנחנו משפיעים על מפתחים ללמוד, להכיר אחד את השני - וזה כיף לראות את זה.
      • סתם, ככה, כמה מספרים - 
        • יש לנו משהו כמו 250,000 צפיות בערוץ YouTube - צפיות בסרטונים מהרצאות משנים עברו, וזה עדיין לא כולל את אלו של השנה.
        • יש לנו כ-3,000 חברים בקבוצת ה-Facebook וכ-1,600 ב-Twitter
        • בכנס עצמו היו כ-2,000 אורחים, פחות או יותר
        • אחוז הנוכחות הנשית עולה בכל שנה - והשנה הגענו למשהו כמו 30%, שזו עלייה משנים עברו ואני מקווה שנמשיך לעלות ככה [תוכן מקודם].
        • הגענו למשהו כמו 340 חברות שונות - זאת אומרת שבקהל היו נציגים מכ-340 חברות שונות.
    • זה כיף לראות את הנציגות הזאת והצלחנו, כנראה, קצת לפני הקורונה - או אולי תוך כדי הקורונה - לעשות את הכנס הזה.
      • היו, מן הסתם, לא מעט ביטולים - וזה מובן
      • יש גם כמה מרצים שלצערי לא יכלו להגיע - אבל זה כמובן גם טבעי, תוצאה של הנסיבות
    • בסך הכל אני חושב שהיה כנס מוצלח - היו הרבה מאוד אנשים, הצלחנו לשמור על הגיינה ציבורית עם מרווחים במסדרונות - ועל תוכן טוב [ומלא מטריות].
    • (אלון) כן, היה מעולה - אני באופן אישי נהניתי, וגם היינו Trending ב-Twitter, שזה משהו ששכחת לציין, את כמות ה-Twit-ים, היינו Trending in Israel . . . . 
    • (רן) לגמרי - היינו Tedning בישראל ב-Twitter [עם rs21 #reversim#] וזה גם הישג [יש מצב שזה היה דמו טוב לאיך שיראה Twitter ישראל ב-Metaverse . . . .]
      • ואלון, כמובן, היה חלק מהצוות המארגן, ודותן היה אמור להרצות, אבל . . . אחד מנפגעי הקורונה . . .
      • אז הקלטנו את ההרצאה, ואפשר יהיה לראות את הוידאו 
      • (אלון) הוידאו הכי שווה - כי אף אחד עדיין לא ראה אותו . . . . רק אומר . . . אני מרים לו, לוידאו . . . . שים פרסומות בהתחלה, תמכור עכשיו כ-NFT . . . 
      • (רן) כן . . . דותן עשה מצגת מאוד מאוד מושקעת - אבל לצערינו לא יכול היה לבוא בגלל בידודים - קורה, ובכל אופן הקלטנו ונשים את הוידאו ב-YouTube ותוכלו לראות.
    • זהו - אז זה היה Reversim Summit 2021 - ונעבור הלאה.
  • רציתי להמליץ על ספר! הרבה זמן שלא עשיתי את זה, נכון? אז זה ספר שאני בעצם קורא עכשיו, כבר עברתי את החצי - אבל אני כבר יכול להמליץ עליו.
    • לספר קוראים . . . 
    • (אלון) . . הוא מת בסוף! . . . 
    • (רן) . . . הספר נקרא WMDs - זה מונח שבדרך כלל מתייחס ל- Weapons of Mass Destruction, אבל כאן יש משחק מילים, ו-WMD, במקרה הזה, מבטא את Weapons of Math Destruction - זאת אומרת Math במקום Mass
    • למעשה, הספר הזה בא לדבר על תחום שנקרא AI Ethics  - אתיקה בתחום של AI או Machine Learning - והוא למעשה מנתח הרבה מאוד מערכות בינה מלאכותית מהפן האתי שלהן.
      • למעשה, הוא מראה איך מערכות שעבודות בצורה שהיא לא נכונה - לצורך העניין, קיים אצלהן Bias - איך הן יכולות ממש להרוס קריירה, לפגוע בחיי אדם
      • באמת הוא בא ומראה טיעונים מאוד יפים ומאוד . . . לא צריך היכרות מתימטית עמוקה כדי להבין את הדוגמאות שם.
      • הוא בא ומראה איך, נגיד, מערכת ההשכלה האמריקאית מייצרת Bias, איך מערכת ה-Employment האמריקאית מייצרת Bias . . . .
        • לא רק בארה”ב - גם באירופה, גם בסין . . . 
    • הספר עצמו הוא קריאה בסך הכל לא כל כך קשה - לא צריך להיות Data Scientist כדי לקרוא את זה - ואני חושב שהוא חושף נושא די חשוב ובצורה מאוד מאוד נגישה.
    • אז WMDs, או Weapons of Math Destruction - ספר שאפשר גם לקנות ב-Hardcopy אבל אפשר גם לקרוא אותו ב-Online, יש את ה-PDF, או לקרוא את זה ב-Kindle וכו’ - המלצה שלי.
  • נעבור הלאה . . . אלון?
  • (אלון) טוב, בואו נתחיל.

אלון - 
  • האייטם הבא יגרום לזה שזו כנראה הפעם האחרונה שאני פה - אבל בסדר, יאללה בוא ננסה . . . עכשיו הם יצזרו את זה דרך ההקלטה, אבל  בוא ננסה [יש טקסט!] - אני מדבר על הZero Attack ש-Google מצאו עם NSO, ה-zero-click iMessage exploit שהיה.
    • ממש פסיכי, הסיפור הזה . . . הרעיון היה שאפשר פשוט לשלוח למישהו הודעה, בגדול, והוא לא צריך לעשות שם כלום ואפשר להתחיל להריץ לו דברים על ה-iPhone שלו.
    • הסיפור של איך שזה עובד הוא די משעשע [תלוי את מי] - שולחים איזה מעיין-PDF, בתור gif, ומשתמשים שם, בגלל איך שהוא מנתח את ה-PDF, הוא משתמש שם באיזשהו אלגוריתם OCR שמנסה למצוא התאמות בכל מיני דברים - איזשהו אלגוריתם שפותח ב-Zerox בכלל לפני “מיליון שנה”, למכונות צילום שלהם . . . .
      • ואז הוא מנסה לעשות כל מיני התאמות של אותיות והצורה שהוא עושה את זה זה שהוא עושה בעצם XOR בין אותיות - ומה שזה נותן זה שאפשר לעשות פשוט…
        • לא XOR . . . איך זה נקרא? המעגל המלא? 
        • (דותן) מעגל מלא? 1XOR1 זה 0 . . . .
        • (רן) זה NAND . . . 
        • (אלון) NAND! כי אפשר עם NOR-ים ו-NAND-ים לבנות  . . . 
        • (דותן) אם אתה רוצה לעשות Difference אז אתה עושה XOR . . .אם אתה רוצה לגלות, נגיד, הבדל . . . .
        • (אלון) לא, אתה עושה XOR רק  . . . הכוונה שלי היא שאפשר עם מספר פעולות להגיע למעגלים שהם בעצם NAND . . .
        • (דותן) אה  . . . 
        • (אלון) . . . ואז אתה מגיע למעגל מלא שאפשר לבנות אותו, בעצם, Turing Complete - ומפה זה מתחיל להיות מעניין, כי ברגע שזה Turing Complete אז אתה יכול להתחיל לכתוב מה שבא לך, בעצם . . .  [ד”ש לשוקן].
      • ובעצם בנו מעיין מחשב - מחשבון, מערכת הפעלה, אני לא יודע אפילו איך לקרוא לדבר הזה - בתוך . . . מהתמונה שלך . . . ויכלו להריץ, בזכות זה, כל מה שהם רוצים . . . .
      • (דותן) קל . . .
    • (אלון) זה מאוד פשוט - אני כל בוקר מרים מכונת Turing בתוך ה-PDF
    • (דותן) פשוט יחסית . . . 
    • (אלון) כן, הם יצרו את זה ממעגלי NAND  . . . מעגלי NAND זה שילוב של AND ו-NOR - וזה Turing Complete
    • (דותן) NAND זה Not-AND . . . 
    • (רן) רק כדי לתת פה את הקונטקסט - בעצם מדובר פה על בלוג-פוסט של Google, מטעם חוקרי Security של Google, שבאים ומנתחים את הכלי שלכאורה [!] היה בשימוש ב-NSO, אם אני מבין נכון . . . 
      • והכלי הזה בעצם מנצל איזושהי חולשה ש[הייתה]קיימת ב-iPhone ושבאמצעותה בעצם אפשר, באמצעות הודעת טקסט פשוטה, להריץ כל תוכנה על ה-iPhone שלך . . . מדגימים איך אפשר לייצר מכונה שהיא Turing Complete על ידי זה שעושים Attachment ל-PDF וככה מנצלים איזושהי חולשה שקיימת במערכת ההפעלה של ה-iPhone - או לפחות הייתה קיימת, לא יודע האם עדיין קיימת.
      • [פה יש הסבר לא רע לסיפור]
    • (אלון) הם רושמים שהם סגרו את זה, במאמר הזה, שזה נסגר ב-13 בספטמבר . . .  ב-iOS 14.8, אז מי ששיש לו לפני iPhone 14.8 - כנראה שכדאי לשדרג (לעדכן), אלא אם כן אתם משתמשים בזה לעצמכם כדי להריץ, לא יודע, Snake . . . .
      • אבל אני חושב שזה בהחלט הדבר-ההנדסי-התיאורטי-שהפך-למציאות הכי מגניב שאני נתקלתי בו . . .
    • (דותן) כן, האמת שזה מעניין מכל מיני זוויות . . . קודם כל, יש טרנד מסויים של לנסות להריץ  . . . 
      • אם יש לך קוד שאתה רוצה שירוץ אצל מישהו, אז אתה רוצה לבחור מנוע הרצה שהוא כמה שיותר “זר” למישהו הזה . . .
      • לדוגמא - יש מלא Malware-ים שנבנים ב-Go היום - כי Go זה סוג של, נקרא לזה “מערכת הרצה” שהיא עדיין לא מוכרת, בניגוד נגיד ל-C, וכל ה-Malware Detectors עדיין לא יודעים להכיר.
      • עוד דבר שאני רואה פה . . .
      • (רן) אתה אומר שקוד שמתקמפל ב-Go, מייצר איזשהו Pattern שה-Malware Detectors עדיין לא מכירים, ברוב המקרים, ולכן זה “קל”  . . . .
      • (דותן) כן, זה הולך וניהיה יותר פופלארי . . . 
    • עוד דבר שמעניין פה זה שאני, ככה, לא מצליח להבין מהמאמר, זה שאם זה jpeg, אז . . . . סתם, למי שרוצה אחר כך לקרוא את זה. או פשוט NSO יכולים לשלוח לנו מייל ולהסביר . . . . [עכשיו זמן טוב לדפיקה בדלת?]
      • אם זה jpeg, אז יש פה דחיסה, שאמורה להיות איפשהו - ודחיסה מאבדת מידע.
      • ואם אתה מאבד מידע, אז נגיד וכתבו שם איזשהו קוד, אז הקוד הזה הופך להיות Corrupted, אני מניח . . . 
      • אבל יש כתובת למכתבים למערכת, נכון, כתובת פיזית? . . . [Treadstone?]
      • (אלון) כן, הם  . . .יש להם, לתלונות, ל-NSO  . . . 
      • הקוד לא Corrupted כי זה PDF - אתה שולח אותו כ-PDF, ואז זה כאילו אמור  . . . . אתה שולח PDF ואז הוא מריץ עליו, הוא עושה לו OCR על הטקסט ב-PDF - וה-OCR עובד עם מנוע XOR שאפשר להפוך אותו למנוע NAND - ואז הגעת ל-Turing Complete . . . . זה כאילו מה ש . . . .
      • (דותן) אה, זה החלק הפשוט . . .
      • (אלון) זה החלק הפשוט . . .  ואז אני מדמיין לעצמי שיש אנשים שיושבים ב-NSO ומה שהם עושים זה כותבים Framework שכשאתה כותב קוד הוא מייצר מזה תמונה, כדי שתוכל לשלוח אותה בטלפון ויקרה משהו . . . .
        • זה לא שמישהו בטח עובד עם תמונה - ממש כנראה יש להם איזו שפת תכנות . . . Pega.JS? לא יודע מה . . .
      • (דותן) אז לשלוח מכתבים . . . איך הכתובת? רוממה, ירושלים, מיקוד . . . .
      • (רן) 91903 . . . 
      • (אלון) ואם אפשר לשלוח את זה כ-PDF-ים - כי יש שם פלאפונים קצת ישנים, אולי אפשר להצליח לעשות משהו . . . 
      • (רן) טוב . . . ומנושא Security אחד לנושא  . . . לאח הגדול שלו - Log4j!
  • (אלון) Log4j, טוב . . . . לא יודע מאיפה להתחיל עם ה-Log4j הזה . . . 
    • (רן) אם לא שמעתם על Log4j ואתם מריצים Java - זה הזמן לעצור וללכת לבדוק את הקוד שלכם . . . [ה-NSA עצר - גם אתם יכולים].
      • אז איפה מתחילים עם Log4j? . . . .
        • [בר-זיק זו בדרך כלל נקודת התחלה טובה…]
      • (אלון) כן . . . באופן כללי, אם אתם מריצים Java אז לכו לבדוק את עצמכם . . . . למה אתם עובד עובדים עם Java, באמת? מה קורה לכם?
    • ועכשיו בנימה יותר רצינית - Log4j זו כנראה ספריית ה-Log-ים הכי פופולארית ב-Java, שרצה על בערך כל דבר, כולל הרכב שעל המאדים [לא הרובר - הרחפן, וב-NASA מכחישים…], לפי Apache, שרץ במאדים . . . . אז הוא גם מריץ Log4j [לכאורה].
    • וב-Log4j יש קטע די מוזר, שאפשר לעשות גם Log-ים ב-LDAP - ולהתחבר, לפתוח שם איזה Socket ולהתחיל לכתוב לשם כביכול-לוגים
      • אבל בדבר הזה אפשר גם להתחיל לכתוב דאטה, ובגדול מה שזה גורם זה לכך שאפשר להריץ כל מה שרוצים מהמחשב . . .
      • לעשות (ליזום) פניות לשרת אחר, עם כל המידע שלך . . ..  בגדול.
    • (דותן) אני אסביר רגע איך זה נראה - יש קובץ קונפיגורציה (Configuration) של Log4j . . .
      • בצורה מוזרה, לאלו שמשתמשים ב-Java, אני אהיה פה מאוד ציני, אני לא יכול לעזור את עצמי . . . 
      • אז ב-Java יש עדיין את מה שנקרא JNI וכל ה-JNDI וכל העולם הזה של “להריץ קוד מרחוק בדרך קסם”, שמזכיר לי את כל העולם של ה-SAOP ו-CORBA וכל  הדברים האלה . . . 
        • אני מניח שזה שייך לאותה “מלחמת פיצ’רים” שהייתה לפני 15 שנה  . . . [פוטנציאל לסרט?]
      • אז אפשר להריץ קוד מרחוק - וזה היה בערך התרגיל הזה, של שנה א’ סמסטר א’: “תראו איך אתם יכולים להריץ קוד מרחוק ב-Java “. . . 
      • יש חלק ב-Log4j Configuration שיודע לעשות אינטרפולציה (Interpolation) לאיזשהו Directive - אם אתה כותב שם כתובת ל-JNI, כמו שאתה כותב כתובת ל-HTTP - כמו “JNI-bla-bla-bla”, כתובת של איזשהו Server - שמכיל קוד, שהמטרה שלו היא להיות מורץ-מרחוק, אז מה ש-Log4j יעשה זה שהוא יעקוב אחרי האינטרפולציה הזו ויגיד “או! אני פונה ל-Server הזה כי זה הגיוני, אולי הוא מכיל שם מידע כמו Class-ים בינאריים מקומפלים שאני יכול להוריד ולהריץ על המכונה הזאת!”.
      • נראה לי שזה כאילו ה-Holy Grail של כל Hacker שאי פעם רצה להריץ קוד מרחוק . . . זה Pretty much ש-Java עשה את העבודה בשבילך . . . .
      • וזהו - ואז אנשים התחילו לנצל את הדבר הזה, ומכאן והלאה הסיפור הוא כבר היסטוריה . . . 
    • (רן) מה שמעניין פה . . . זה נשמע, כמו שאתה מתאר את זה - דותן - זה נשמע כאילו זה פיצ’ר (Feature) שקיים כבר כך-וכך שנים, אולי לא חשבו כל כך לעומק על ה-Security של הפיצ’ר הזה, אבל זה קיים כבר הרבה מאוד שנים . . . .
      • והשאלה היא למה עכשיו זה פתאום התפרץ? מה גרם לגילוי של זה עכשיו? זה אפילו לא Bug - זה Feature . . . .
      • זאת אומרת - אין פה איזשהו ניצול של חולשה או משהו כזה, אם אני מבין אותך נכון . . . למה פתאום עכשיו זה “מרים את הראש”?
    • (דותן) כמו כל דבר - אני מניח שזה התגלה לפני ושזה היה סוג-של Zero-Day כזה שאף אחד לא דיווח עליו . . .
      • ניצלו את את מה שיכלו ממנו - ומספיק שאיזשהו Hacker בא ורצה לעשות איזשהו Ransome על מישהו והתעצבן והיה לא אחראי, והדבר הזה פתאום דלף לעולם . . .
      • כל מקרה שאתה יכול לדמיין, כנראה שבסוף יכול לקרות . . .  זה מה שאני למדתי מה . . . 
    • (רן) בכל מקרה, אני חושב שזה כן היה ב-Black Hat לפני איזה 6 שנים או משהו כזה, רק שאף אחד לא כל כך שם לב לזה . . . 
      • אבל זה נראה כאילו זה אפילו לא Bug - ככה אמורים להשתמש בזה . . . .
      • לפי מה שאתה מתאר זה לגמרי מתועד - אז כאילו . . . מה מנע מאנשים לפני זה לעשות לזה Exploits?
    • (דותן) זה לא Volnurability - זה Misuse . . . אתה יכול למצוא את הדברים האלה, יש המון
      • כל מה שאתה צריך זה פשוט להפעיל איזה סוג אחר של יצירתיות . . . אם אתה רוצה, אתה יכול לשבת מול הרבה . . . אני חושב שמקום טוב להתחיל זה בעצם Java - מול הרבה ספריות של API שונים ומשונים
      • ופשוט לשבת כל היום ולהיות יצירתי ולחפש את המהלכי . . . מולטי-מהלכי-שחמט האלה . . . 
      • זה נקרא להיות Security Researcher היום . . . .
      • [נסה את Going Postal]
    • (רן) טוב, בקיצור - אם יש לכם Log4j איפשהו, או שאתם משתמשים ב-Java איפשהו, גם אם אתם לא משתמשים ישירות ב-Log4j - ועדיין לא עדכנתם . . .  אז בואו, תבדקו, יכול להיות שאתם צריכים קצת לעבוד עכשיו .  . [אז אלו היו התורים המטורפים לבדיקות? . . . .]
    • (אלון) זה לא רק Java - זה JVM: גם אם אתם ב-Kotlin, ואתם עושים איזה Reference לאיזו ספרייה, והיא עם Log4j - אז אתם באותה הבעיה . . . .
    • ועוד משהו מוזר עם ה-Log4j הזה - ספריית לוגים, שזה ממש מוזר לי - ספריית לוגים בדרך כלל זה הדבר הכי פשוט שאמור להיות, כי אתה משתמש בה כל הזמן ואתה עושה Reference
      • ופתאום ספרייה שהיא עם כל כך הרבה לוגיקה ופותחת תקשורת ואלוהים ישמור . . . לא יודע - מי שומר על הלוג של הלוג? . . . .
    • (דותן) כן . . . בדרך כלל, סתם כדוגמא, גם ב-Node.js תמיד רדפתי אחרי ספריות Logging שהן מאוד מאוד  רזות, סוג של Fetish שהיה לי .  . .
      • והרבה פעמים אנשים לא הבינו . . . .
      • הכי כיף זה לקחת את הספרייה השמנה והמלאה בפיצ’רים, שיכולה לעשות כל כך הרבה דברים - לפלוט החוצה צבעים, מה שאתה לא רוצה . . . .
      • אבל אני תמיד רדפתי אחרי אותה ספרייה שאתה יכול לקרוא אותה ב-100 שורות קוד, שפולטת רק JSON ופה זה נגמר . . . 
      • בסוף זו הסיבה - אם יש לך רכיב שהוא כל כך קריטי, ואין לך הרבה . . .  כאילו, לצבוע לוגים זה מגניב, אבל זה גם מייצר “גוש של בוץ” שאתה לוקח ל-Production אחר כך . . . 
      • (רן) זה מייצר Attack Surface גדול יותר . . . 
    • טוב, בסדר - ובנימה אופטימית זו, בואו נעבור למשחקים . . . 
  • (אלון) יאללה, בואו נעבור למשחקים . . . . אז נלך ל-GitHub ויש שם איזשוהי ספריה שנקראית Tetra3d
    • שזה בעצם מנוע משחקי תלת-מימד, סטייל Doom וכאלה - שכתוב ב-Go . . . 
    • ואפשר להשתמש בו ב-Go הקרוב לביתכם, לעשות משחקים - והוא ממש נחמד.
    • אז למי שאוהב משחקים - דותן - ו-3D ורטרו - דותן . . . 
      • נראה ש-Go זו הבעיה היחידה פה . . .
    • (דותן) זה משתמש ב-ebiten, שזה Framework למשחקים, גם נהדר - וזה (Tetra3d) ה-3D . . . הוריאציה [מילה טעונה בימים אלו]
      • אם אתה רוצה לעשות 3D אז אתה משתמש ב-Tetra3d.
    • האמת שני אוהב לכתוב משחקים בכל שפה . . . חלק מהם זה . . . חלק מהשפות הן כיפיות יותר מאחרות וחלק פחות.
    • (רן) יפה . . . ניסית את זה, אלון?
    • (אלון) לא - לא היה לי זמן לכתוב משחקים . . . . אבל בכל זאת . . . 
    • (דותן) לשחק עם הרעיון לכתוב משחקים?
    • (אלון) להסתכל על הקוד ולשחק עם המחשבה שיהיה לי איזה יום אחד זמן לכתוב משחק, זה משעשע.
    • (רן) טוב, נראה מה עוד נגיש - אני קורא קצת את ה-ReadMe שלהם, באמת נראה משהו פשוט. נחמד . . .
  • (אלון) טוב, בואו נלך - אוהבים ORM?! אז בואו ננסה: Introducing the Redis OM Client Libraries
    • זה OM ולא ORM כי זה לא Relational  - ה-ORM זה  Object–Relational Model (Mapping) והם לא רלציוניים, אז Object Model (Mapping)  . . . 
      • אז הם כבר פה אפילו הרוויחו ביצועים - תחשבו על זה ככה . . . 
    • בעצם, Redis הוציאו ספרייה רשמית כדי לעשות Object Mapping מהקוד או . . . פשוט Redis, ממש להשתמש בו כ-Database, להגדיר איזה אובייקט של Redis ולכתוב שם וכן הלאה . . . .
    • (דותן) מגניב . . .
    • (אלון) מה שנחמד זה שזה רשמי שלהם ולא איזה משהו חיצוני, אז יכול להיות שזה אפילו שווה משהו.
      • כי בדר”כ ה-ORM-ים האלה הם בעייתיים . . . .
    • (רן) אוקיי . . .  אז יש להם ObjectMapper ויש Biniding ל-NET. ל-Node.js, ל-Python ול-Spring, ספציפית . . . לא ל-Java כללי - ונראה בסך הכל די פשוט . . . .
      • אתה אומר שזה OM ולא ORM כי זה בעצם לא רלציוני, אז מה זה אומר? שלמעשה זה הכל שטוח? 
      • (דותן) שזה Search Engine . . . . לא? 
        • מה זה עושה? לוקח Class, מסתכל על ה-Properties, אולי זה גם טרנזיטיבי (Transitive) - כאילו, אם יש Nested אז זה גם עושה, הופך את זה ל-Hash - 
        • ואיפשהו זה גם צריך להיות Key ב-Redis, עם Indexing . . . צריכים להיות פה כמה Layer-ים של אינדקסים . . . .
        • כי אני רואה שיש API של Get-By-Whatever . . . . אז זה סוג של Search Engine? לא יודע . . .
    • (אלון) זה נראה שהם שומרים את זה בכמה צורות, ואז אפשר לגשת לזה דרך ה-RediSearch שיש להם
      • יש את ה-Plugin ל-Redis של RediSearch, ואז אתה יכול בעצם, אפשר לגשת לדאטה הזה מחיפוש . . .
    • (דותן) אז אומר שזה סוג של “ספריית-נוחות” - כדי למפות אובייקטים בשפה X לתוך Redis, זה מה שזה . . .
      • כאילו - זה יחסית “רזה”, אם ככה.
    • (רן) כן, זה נראה ככה . . . 
    • (אלון) כן, כמו כל ORM-ים - רק יותר רזה, אפילו אין בו R . . . . זה OM, ממש רזה . . . .
    • (רן) היסטורית, אחת הדוגמאות שתמיד היו ב-ORM-ים זה שהם לוקחים איזשהו Syntax בשפה - לצורך העניין איזשהו Syntax ב-Java או ב-Node.js - והופכים אותו לשאילתת SQL שיכולה להיות מאוד מורכבת
      • והמפתח לא תמיד מבין את המורכבות של מה שהוא יוצר - זאת אומרת, הוא כותב בשפה שזה נראה לו מאוד טבעי, אבל מתחת לפני השטח רצה שאילתת SQL שיכולה להיות מאוד בעייתית מבחינת Performance, ומפתחים לא מודעים לזה.
      • זה לפחות אחת הבעיות שאני מכיר מ-ORM-ים.
      • עכשיו, אם זה מאוד פשוט והפונקציונאליות פה מאוד “רזה” - אז הסכנה הזו לא קיימת, זה שורה אחת ב-Python שהופכת לשורה אחת בשאילתת Redis וזה פשוט, זה לא ניהיה  . . .
      • ברגע שמוותרים על ה”רלציוני”, ברגע שמוותרים על ה-Relations בין האובייקטים, זה הופך את הדברים להרבה יותר פשוטים - אז זו בסך הכל איזושהי “שכבת-נוחות” כזו, כן - של מיפוי של אובייקטים בשפה שלך ל-Data בתוך Redis
    • (אלון) כן . . . מי שמעניין אותו Benchmark-ים, אז זה משתמש במשהו שנקרא RedisJSON, ויש שם לינק למאמר שהם הוציאו על ה-RedisJSON, עם כל ה-Benchmark-ים והחיפושים וה . . . .
      • משווים אותו גם ל-Elasticsearch - למרות שאני לא יודע עד כמה זה הוגן, כי בדרך כלל Redis רץ על שרת אחד ו-Elastic הוא יותר Distributed, אבל אני חושב . . . אני לא מכיר את המאמר הזה לעומק.
    • (רן) אוקיי . . . נקסט.
  • (אלון) הבא בתור שנתקלתי בו זה Implement a load balancer in Golang
    • הסיבה שנזכרתי בו היא שהיתה לנו ברברסים [הכנס!] הרצאה של איך לכתוב Load Balancer - אז למי שלא היה בהרצאה ורוצה להשלים, אז אפשר עוד להשלים פה.
    • זה Tutorial בסיסי, מן הסתם - בסוף אתם לא תקבלו Load Balancer ל-Production - אבל בסוף נוכל להבין קצת באופן בסיסי איך עובד Load Balancer 
      • יש פה Helath Check ו-Round Robin ו-Reverse Proxy שמדברים עליו . . . Active Check ו-Passive Check ו . . . זהו.
    • (רן) בגדול, מה עושה Load Balancer? הוא מקבל פנייה , נגיד פניית HTTP - ואז מעביר אותה הלאה לאחד משרתי ה-Backend שלו, אוקיי?
      • עכשיו הוא צריך להחליט לאן להעביר, בתור התחלה - האם לעשות את זה ב-Round Robin או לפי Least Active או Whatever
      • ו-(2) הוא צריך גם להבין מי מהשרתים “חי” - יכול להיות שחלק מהם כרגע למטה . . .
      • וזו, בגדול, הפונקציונאליות שמוסברת פה, אם אני עוקב אחרי הכל . . . 
      • ה-Tutorial הז הוא באמת מאוד קצר ובסיסי - Load Balancers אמיתיים קצת יותר מתוחכמים, מן הסתם.
      • אבל כן - זה מראה ממש את הבסיס.
    • (דותן) האמת שזה ממש אחלה - ממליץ . . . בעצם, אחד התרגילים שעבדתי איתם בראיונות עבודה יחד עם מרואיינים זה לבנות Load Balancer
      • והחלק הכייפי - כשזה כמובן ביחד ופרונטלי ועל Whiteboard - זה שאתה יכול לצייר את כל התמונה: יש לך Load Balancer, יש לך Hosting תחתיו ויש לך Traffic . . . .
      • כל המקרי-קצה . . . יש כל כך הרבה מקרי-קצה וכל כך הרבה אירועים שיכולים לקרות, שזה פותח את הראש לחשיבה מחוץ לקופסא.
      • כמה ש-Load Balancer יכול להישמע משעמם, זה משוגע כמה שיש מקרי-קצה וגם אני רואה שבמאמר הם מתייחסים לזה - אז זה מעניין, מגניב.
    • (רן) מעולה, תודה - אז דותן, אליך? . . . 
    • (אלון) רגע, רק לפני זה נשלים - שההרצאה ברברסים הייתה של אמיר הדדי מ-Outbrain - אז למי שרוצה אחרי זה להשלים, או להשלים לפני [למצוא מישהו שהיה ולבקש לצלם? תחשבו 2004] - מומלץ.
      • (רן) כן - הייתה הרצאה מצויינת שזכתה לביקורות מאוד טובות. אפשר להשלים את הוידיאו . . . [יעלה ל-YouTube מתישהו].
      • [אמיר גם יכול לסגור לכם פינה עם ה-Log4j על הדרך]
    • אליך דותן . . .

דותן - 
  • אז נתחיל - לפעמים קורים לי מקרים כאלה, שאני קורא משהו וזה פותח לי את הראש - זה לא קורה הרבה, זה קורה כל כמה שנים. ופה יש - אני אבנה את זה רגע בכמה Step-ים . . . .
    • יש Framework שנקרא salsa - פותח ב-Rust, אבל מסתמך על כמה וכמה Framework-ים קודמים, כמו glimmer ו-adapton - טכנולוגיות דווקא מעולם של React - שעוסק ב-Incremental Computation
    • ועכשיו אפשר לשאול את עצמנו מה זה Incremental Computation . . . . 
      • אני חושב שהדוגמא הכי קרובה אלינו זה Incremental Compilation, שזה גם סוג של חישוב
      • אז אחד ה-Complier-ים שעשו את זה ממש פופולארי, או אחת המערכות שעשו את זה פופלארי, זה נגיד Gradle, בעולם של Java - לקחת קוד ולהחליט שלא צריך לקמפל (Compile) את הכל מההתחלה - אפשר לקמפל רק שני קבצים שהשתנו, ולהשתמש בהמון אובייקטים ו-Asset-ים שה-Compiler כבר ייצר
        • להיות מאוד מאוד חכם לגבי זה.
        • נגיד - Make זו הדוגמא הכי פרהיסטורית של ניסיון לעשות דבר כזה, וזה מאוד גס ולא חכם . . . 
      • וככל שיצאו שפות פיתוח מתקדמות יותר, ככה המנוע של Incremental Computation הפך להיות יותר חכם - TypeScript היום הוא “כוכב עולה” באיזור הזה, ו-Gradle ו-Kotlin ועוד אחרים
        • וגם Rust . . . 
    • בעצם, נחזור אחורה - salsa זה Framework שנותן לכל אחד לייצר חישוב כזה גנרי . . . .
    • עכשיו נעשה את זה במילים פשוטות - אם יש לכם אלגוריתם שיש בו צעדים, ולכל צעד יש Input ו-Output, ואין להם Side-effects - אז בעצם אפשר לקחת Cache ולקחת את כל הפרמטרים שנכנסים לכל צעד ולעשות Cache על החישוב - ובהינתן שיש את ה-Output אז לעשות Cache ל-Output גם . . . 
      • ואז, בהינתן ורוצים להריץ את אותה הפונקציה, ומזהים שהפרמטרים כבר היו והחישוב הזה כבר נעשה - אפשר פשוט להוציא את ה-Output במקום את הפונקציה . . .
    • עכשיו - זה נשמע מאוד מוכר, כי אני מתאר עכשיו סוג של Cache שכל אחד בטח מימש בחיים, רק שמגיעים לחישוב ולייצר גרף הרצה, אז יש עוד כמה Housekeeping ו-Bookkeeping שצריך לעשות - שה-Framework עושה את כל הדברים האלה.
    • מה שאהבתי זה שקודם כל יש את ה-Framework הזה ואפשר להשתמש בו כדי לממש כל מה שרוצים, בעצם - שזה דבר מדהים.
      • בין אם אתם רוצים לממש Compiler או לממש כל דבר אחר - והוא גנרי.
    • ומה שאהבתי זה שיש שני Video-ים - שגם בהם יש משהו מיוחד, שהוספתי את הלינקים שלהם:
      • (1) זה וידאו שעושה בדיוק את מה שתיארתי עכשיו - רק בצורה הרבה יותר מפורטת ואולי כייפית.
        • זה Niko Matsakis, נדמה לי - שהוא אחד מה-Core של Rust.
      • הוידאו השני, שהוא מיוחד - מה שהוא [עדיין Niko] החליט לעשות זה לעשות את ה-In-depth של איך דברים עובדים מאחורי הקלעים - אבל הוא גם לקח איתו סוג-של-ברווז . . .. מישהו שיהיה “הברווז שלו”, וזה מדהים . . . 
        • זה בעצם וידאו שמוקלט ע”י User, בנאדם אחר שהוא User של salsa - כשהוא מתחיל את הוידאו ואומר ל-User, למתכנת הזה: ”כל פעם שאני אומר משהו שהוא לא מובן - תפריע לי, תשאל, ואני אסביר אותו”.
        • זה באמת טריק מדהים כדי לייצר Video-ים טכניים - לקחת עוד מישהו שיהיה כאילו “הצופה מהקהל” שפשוט גורם לך, למרצה, פשוט להסביר את כל העקרונות ב-Real-time במקום לקבל את השאלות מהקהל ב-Commet-ים אחר כך.
    • (רן) אז מתי אתה חושב שתשתמש בדבר כזה? זאת אומרת, אם אני מבין נכון, זה יכול לתת לך שני פיצ’רים עיקריים - 
      • אחד זה יעילות, Cacheing - לא לקרוא לפונקציה יותר פעם אחת אם לא צריך, אם ה-Input לא השתנה.
      • ו-(2) זה אולי בהירות - הפרדה יותר נכונה לפונקציונאליות, פונקציות שהן ללא Side-effects וכו’
      • אז אלו שני הפיצ’רים שאני מבין שקיימים פה - אבל מה עוד? ומתי תשתמש ב-Framework כזה?
    • (דותן) קודם כל, הדבר הראשון שזה עשה לי זה ממש גרם לי, אחרי הוידאו, לחשוב על כל האיזורים שבהם אני יכול להשתמש בדבר כזה - וגם על איזורים שאני לא יכול.
    • אני אתן סתם עוד דוגמא לחוכמה של דבר כזה - הוא [Niko] מתאר, מן הסתם, את ה-Framework כשאחד ה-Use-case-ים זה לבנות Complier שמקמפל יעיל Incremental Computation.
      • אז לדוגמא - נכנס Source Code והוא הופך להיות ast, שזה ה-Abstract Sytax Tree.
        • ה-Caching - או ה-Output - הוא ast; הפונקציה זה שלב מסויים בקומפילציה (Compliation)
        • ה-Input הוא Source Code
      • אז הוא אומר שהפונקציה הזאת תדע להגיד, מבחינתו, כשיש רווחים בקוד, שהם לא משפיעים על ה-ast - יש Input שהוא “לא רגיש”, זאת אומרת שהוא לא משנה את ה-Output.
      • אז מבחינתו השלב הזה “מוחבא”, Encapsulated - והוא אפילו לא רוצה לדעת שזה קורה . . . - שזה גם דבר מדהים לגבי כל הסיפור הזה.
    • אז בעיקר המקומות שהתחלתי לחשוב לאן לקחת את זה אליהם זה קודם כל אצלנו ב-Scan - אנחנו בונים Scanner שהוא לא Compiler אבל הדרך עבודה שלו היא שהוא לוקח המון קבצים והוא עושה להם סריקה של Security 
      • ויש גם בתוך הדבר הזה Pre-Planner ל-Execution והוא מסתכל על כל הקבצים, מבין איזה קובץ עדיף לסרוק קודם ובלה-בלה-בלה . . . .
      • אז זה איזור, מו הסתם, ראשון שחשבתי לקחת את זה.
    • וחוץ מזה, ככה שיחקתי עם המחשבה - עם כל מיני איזורים שהם לא . . . כמה קוד זה יכול היה לחסוך לי, בעצם . . . 
    • וזה בגדול האיזורים שחשבתי עליהם, עד היום.
    • (רן) טוב, יפה - מעניין איך זה, נגיד - זה קצת מזכיר את ה-Concept של Reactive Programming . . . 
    • (דותן) כן, זה קשור . . . .
    • (רן) . . . או אולי מערכות שמייצרות גרף חישובי, כמו Spark שאני מניח שהרבה מכירים . . . .
      • אז יש פה Concept-ים דומים - אבל אתה אומר שזה כאילו . . . 
      • נגיד, Spark עובד על Data - פה אתה לא רק עובד על Data, זה נותן לך איזושהי אבסטרקציה אחרת . . . אוקיי, מעניין.
    • (דותן) בגדול, ה-”Meta-concept” זה Incremental Computation - ופה ספציפית יש Use-case אחד בצורה מאוד מאוד מפורטת על איך שהדבר הזה עובד “בחיים האמיתיים”.
      • אבל גם יש Use-Case-ים אחרים - Spark למשל זה גם סוג של אימפלמנטציה (Implentation) כזאת של Incremental Computation . . . 
    • (רן) טוב, מעולה - תמשיך . . . 
  • (דותן) כן - הדבר הבא, שהוא דומה: טיילתי קצת באיך שה-Compiler של Rust בנוי - ויש שם דברים באמת מדהימים ופותחים את הראש.
    • אז עוד מערכת שמימשו שם נקראית Chalk - גיר - והבעיה שזה פותר: תדמיינו שפה שיש לה Constraint-ים . . . 
      • נגיד, בשפות רגילות זה, לא יודע . . . “כלב” יורש מ”חיה”, והאם אפשר לעשות על “כלב” כל מיני דברים - האם אפשר לקרוא ל-Bark או לכל מיני דברים שכלב עושה . . .
      • ועכשיו - קחו את מה שתיארתי ותכפילו במאה, או באלף . . . . כל מיני Constraints כאלה ואחרים.
    • ולפעמים יש שפות שה-Constraint הוא לא רק ירושה אלא הוא גם Trait, שזה הרבה יותר מבלבל -יש למשל . . .
    • (רן) נגיד - ה-Input צריך להיות Integer, אבל עכשיו אתה רוצה להגיד “אוקיי, זה לא Integer - זה גם צריך להיות בין 0 ל-100” . . . .
    • (דותן) נכון, בדיוק - הוא צריך לעבוד בכל מיני Constraint-ים . . . . 
    • והתחלנו לתאר משהו שהוא יחסית, או אולי מאוד מאוד מסובך . . . . ואחד הדברים שאהבתי שעשו פה זה שאמרו “אנחנו לא נפתור את זה - את הבעיה הזו אנחנו לא נפתור בתוך ה-Complier, בתוך ה-Core של Rust” - מה שנראה לי שכל השפות הפופולאריות עושות - אלא “אנחנו נעשה רדוקציה” . . . 
    • מה שהם עשו זה שהם לקחו קוד של Rust, עשו רדוקציה (Reduction) לשפה שהיא שפה שנראית כמו Prolog. . . . 
      • כש-Prolog זו שפה שנולדה לעשות Constraints
      • ואז נתנו לשפה הזאת לפתור את ה-Constrains  . . .
    • ורואים בציור שבתוך המאמר שיש Class עם כל מיני Constraint-ים, שמומר לכל מיני “אמירות לוגיות”, כמו ב-Prolog
      • ואז פותרים את ה-Constraint  - ומחזירים האם אפשר לעשות X-Y-Z על איזשהו Class.
    • (רן) זה מזכיר לי איזושהי שפת קונפיגורציה שראיתי לפני כמה זמן - אני מנסה להיזכר מה שמה . . . 
      • גם שם יש (א) Syntax שדומה ל-Prolog ו-(ב) מערכת Constraint-ים כזאת . . ..  לא זוכר מה זו השפה הזו.
      • משהו מהתחום של שפות הקונפיגורציה המודרניות שמשתמשים בהן ב-Kubernetes וחבורתו.
      • אם אני אזכר אני אשים לינק . . . . 
      • (דותן) כן, אני חושב שאני יודע למה אתה מתכוון . . . . אבל אני לא אנחש.
    • בכל אופן, גם - תשתית מדהימה . . . בהתחלה אתה שואל את עצמך “למה לעזאזל לבנות כזה מדע-טילים כדי לפתור בעיה כזאת”, אבל . . .
      • אחד הדברים היפים ב-Rust זה שהדוקומנטציה (Documention) מאוד אנושית - ואז כשאתה קורה, אתה מיד מבין למה.
      • ומה שאתה מבין זה שהם בחרו לא להיכנס לבור שהם יודעים איך לצאת ממנו - אלא פשוט לדלג מעליו, וזה מדהים.
    • עוד שני לינקים ששמתי . . .
    • (רן) נזכרתי! ואני חושב שגם דיברנו על זה פעם בפודקאסט - זה נקרא CUE - שפת קונפיגורקציה שיש לה באמת מימוש כזה של Constraints וקונספטים שדומים ל-Prolog . . . .
      • [אכן, הוזכרה ב-383 Bumpers 64 - פרק נהדר מינואר 2020 שהתחיל ב”זהירות, שטפונות” אופטימי . . . זה לא היה גשם, הדבר הזה . . . .]
    • (דותן) כן, בכלל - Constraint Languages זה . . . . כאילו, תדמיין מצב שבו יש לך איזו בעיה קשה לפתור ואז אתה ממש ממדל את זה כשפת Constraints - אתה ממדל את הבעיה ב-Constraint-ים - ואז בא ה-Constraints Solver ופותר לך את הכל . . . 
      • זה עושה לך ממש Heavy Lifting - בלי שאתה צריך לכתוב קוד כדי לחשוב על כל המצבים, לנסות לפתור איזושהי בעיה.
    • (אלון) זה “ה-Machine Learning של פעם” - היית מגדיר בעיה . . . מצליח להגדיר אותה כבעיה ואז הכל היה נפתר ב-Prolog . . . 
    • (דותן) האמת שנכון . . . כן, השורשים של Prolog הם לגמרי, נקרא לזה “AI של פעם” . . . .
    • (רן) כן, זה נכון מאוד - אבל זה . . . העולם השתנה, ה-Data גדל - היום זה לא בוליאני (Boolean), זה לא “נכון” או “לא נכון” אלא זה סטטיסטי - זה”80% נכון”, אוקיי  . . . 
      • ואז - לדברים כאלה שפות לוגיות כבר פחות מתאימות.
      • אבל לגמרי זה נכון ש-”Prolog זה ה-AI של פעם”, זה היה ככה . . . .
  • (דותן) מגניב, אז עוד שני אייטמים - אחד זה נקרא The Little Book of Rust Books - שזה Meta-book . . . .
    • אתה נכנס לזה, ואז אתה רואה מלא ספרים של Rust - רשמיים ולא רשמיים.
    • זה גם משהו שלא ראיתי בשום שפה - חוץ מ-Go . . . .
  • יש פה איזשהו Repo שנקרא GoBooks - ואת זה שמתי לך (רן) ולאלון, כדי שלא תאשימו אותי ב-Bias  . . .
    • (רן) מי יחשוב שיש לך Bias לטובת Rust?! איפה נשמע כדבר . . . 
    • (דותן) תיקנתי את ה-Bias, טיפה . . . 
    • (אלון) לא ידעתי שאתה בכלל אוהב Rust . . . פעם ראשונה ששמעתי את זה עכשיו . . . 
    • (דותן) סתם, כאילו . . .
  • זהו, הנה עוד כמה דברים מגניבים שראיתי - יש פה ספרייה בשם tabled, או Tabel-D . . .
    • היא - הפתעה! - כתובה ב-Rust  . . .
    • אבל יש ספריות כאלה בכל שפה, שאתה נותן להן . . . אתה רוצה לייצר טבלה - טבלת ASCII שנפלטת ל-Terminal, או לכל מקום אחר . . . 
      • (אלון) אתה יודע, זו דרישה שאני שומע מלא, באמת - לייצר טבלאות ASCII . . . אני שמעתי אותה עשרות פעמים בחיי - וזה תמיד בא ממך . . . 
      • (דותן) בבקשה, אתה רואה? . . . . השאלה אם זה בא ממני מהצד או בצורה ישירה . . . 
      • (אלון) תמיד יש לך דרישות ל-ASCII, נורא קשות . . . .
      • (דותן) שמע - ASCII זה החיים  . . . 
    • אז בקיצור - או שאתה מייצר טבלה כזו ידנית ואתה צריך להתחשב בכל ה-Layout והכל, או שאתה משתמש בספרייה . . . .
    • במקרה הזה, ה-Holy Grail של הספריות האלה זה שיש לך מערך של אובייקטים או Struct-ים ואתה זורק את זה למשהו שמצייר את זה - ואז זה פשוט פולט את זה בצורה טובה.
    • אז פה יש ספרייה אחת שהיא ממש טובה לזה, במקום כל מיני Layout-ים וצבעים וכל מיני שטויות, שלא ראיתי . . . 
      • נגיד - יש ב-Node, יש ב-Python, אבל לא ראיתי משהו ברמה כזאת של גימור.
    • אני אתן, רגע לא בצחוק, למה צריך צריך את זה - אז סתם לדוגמא, אחד השימושים הראשונים שלי לדברים כאלה - וזה היה Wow Moment, לפני לא-יודע-איזה-12-13-שנה - זה Rails . . . .
      • כשאתה פתחת קונסולה של Rails ורצית להדפיס אובייקט - אז קיבלת את כל האובייקט מודפס בצורת טבלה.
      • לימים, בניתי כזה ל-Node.js וכו’ - אבל תחשוב על זה ככה: כל פעם שאתה יודע להדפיס טבלה, אתה יכול גם לעשות Export ל-CSV או לכל פורמט טבלאי שהוא - וזה אחד הדברים שאני מחפש - גם - בספריות כאלה.
    • (אלון) איפה הימים של Ruby ו-Rails . . . 
    • (דותן) כן, הא? זה עוד יחזור . . .
  • זהו, האייטם הבא נקרא NOTFLIX, שאת האמת - שמרתי לעצמי אותו, כי השם מגניב . . . 
    • בעצם זה מה שמתואר - זה לא Netflix . . . 
    • אתה נותן לזה Torrent-ים של, כמובן, Video-ים וסרטים וסדרות חוקיים [מי העלה על דעתו משהו אחר?] - וזה פשוט עושה לך Streaming, בלי יותר מדי קליקים ושום אתר.
      • אתה נותן לזה Torrent וזה פשוט עושה Streaming מה-Torrent - כמו Netflix, אבל Not  . . .
    • (אלון) יו, שמע - זה ממש מגניב! רק שזה קצת לא חוקי, אבל זה ממש מגניב.
    • (דותן) תראה, התוכן שאני צורך בתוך הדבר הזה זה רק דברים שהם חוקיים ופתוחים לציבור ברישיון, כמובן.
    • (אלון) בוא’נה, זה פרויקט חדש-דנדש - מאיפה הבאת אותו? מהניילונים הבאת אותו . . . .
      • (דותן) כן, חמוד מאוד
      • (אלון) מה זה - הוא בן ימים-בודדים, לא? . . . .
      • (דותן) כן - פה עובדים כמו שצריך, ב-Real-time . . . .
      • (אלון) אתה ממש  . . . מה זה, התקשרו אליך כשפתחו את הפרויקט?
      • (דותן) הקו של הנפט של ה-Commit-ים  . . . 
      • (אלון) מה זה - זה “3d ago” מתחילת הפרויקט, לא? וואו . . . . אנחנו הראשונים לראות את זה
      • (דותן) שמע, עד שזה יעלה זה כבר יהיה Old News, אבל בסדר . . . 
        • [זה Challenege? . . . בכל מקרה, נראה שזה מה-2 לינואר 2022 בערך]
  • עוד פרויקט נחמד שמתחבר למשחקים ולמשחקיות - זה נקרא pyxel (פייקסל או פיקסל) 
    • ב-Python, אז אפשר להירגע.
    • אבל המנוע ממומש ב-Rust . . . . הכנסתי לכם את זה בדלת האחורית.
    • יש לי כזה בכל פעם, אני מוצא את המנועים האלה, שהם בעצם ניבנו על בסיס . . . נדמה לי שקראו לזה Pico
      • ו-Pico היה VM, מנוע משחקים All-included, All-in-One, שאפשר לבנות שם את המשחק, את הגרפיקה ואת המוסיקה - והאלמנט שחזר על עצמו זה המגבלה
        • כלומר - הרזולוציה מאוד מוגבלת, מספר הצילילם שאפשר להשמיע מאוד מוגבל, כמות הזכרון מוגבלת
        • כמובן שהכל מוגבל בצורה מלאכותית - מתוך חשיבה שמגבלה מייצרת, נקרא לזה “יצירתיות”, שזה נכון בהרבה מאוד מקרים.
    • וזהו - יש פה מימוש של אחד כזה, סוג של Retro Game-Engine כזה . . .
    • (אלון) מדהים . . .
    • (דותן) האמת שכשאני . . . זה משהו שצריך תמיד ללמוד אותו, כי נגיד כשעורכים Sound אז  . . .
      • יש, למי שמכיר, ממש לפני הרבה זמן היה . . . 
      • קודם כל, לפני הרבה זמן, בתקופה של ה-BBS-ים, היה מה שנקרא FastTracker וכל אלה.
      • אחרי זה היה Fruity Loops - טיפה יותר מודרני . . . 
    • אבל יש לך, בעצם, סוג של “ערכה” כזו, כדי לייצר מוסיקה - והכל בפנים
      • אתה גם לא יכול לצאת החוצה מתוך “הגן הסגור” הזה.
    • זהו . . . פרויקט כזה, “להשתקע בו”, לבנות משחק בצורה אחרת דווקא . . . מגניב, למי שאוהב להתעסק עם הדברים האלה.
    • (רן) יום של משחקים היום . . . 
    • (דותן) לגמרי . . .
    • (אלון) הבעיה היחידה היא שזה Python, אבל חוץ מזה הכל סבבה . . . 
    • (דותן) כן, זה חצי, זה היברידי . . . .
  • זהו, אייטם אחרון - Repository שנקרא hacker-laws
    • אני חייב להגיד שהשם של ה-Repository מטעה . . . אבל זה אוסף של חוקים, “כללי-אצבע” או נקרא לזה “כללים אמיתיים”
      • חלק באים מפילוסופיה, חלק באים מהתעשייה שלנו, חוקים שלמדו תוך כדי . . . “חוקי-יקום” כאלה - והכל מרוכז במקום אחד.
    • לא כל החוקים, אבל המון חוקים שרלוונטיים ליום-יום שלנו בתוך עולם ה-Tech, מרוכזים במקום אחד.
    • אחד הדברים שאהבתי זה שיש הסברים, נראה לי של אותם תורמים ל-Repo הזה - אינטואיטיביים ואיך שזה מתחבר לעולם שלנו וכו’.
    • ניתן כמה כדוגמא, או נגיד את החלק שאני אוהב . . . קודם כל, יש קטיגוריה של Razor-ים, “תערים” נקרא לזה . . . אפשר להגיד שזה נושק לפילוסופיה - ותערים באים לעזור לאדם כשהוא לא יכול לקבל החלטה
      • אז למשל יש את Occam's Razor, שאומר שבהינתן המון אופציות . . . 
      • (רן) אתה מתכוון לתער ב”ע”, כן? סכין, שחותכת . . . .
      • (דותן) כן [יותר פשוט כשקוראים  . . . לתארים כאלה יש מנגנון אחר]
      • אז למשל Occam's Razor, שאני משתמש בו המון, זה ש . . . הוא מנוסח כאן קצת בצורה אחרת, אבל מהחיים, נגיד ניסוח קרוב יותר ליום-יום: אם יש לך המון המון אפשרויות, כנראה שעדיף לך לבחור באפשרות הפשוטה ביותר . . . אם אתה חייב להחליט, חייב לקחת החלטה, כנראה שהאפשרות הפשוטה ביותר היא זו שתיהיה הנכונה
        • כמובן שהכל  . . . מה זה “הפשוטה ביותר”? שיש בה הכי פחות קונספטים והכי פחות הנחות - תיאוריות, Assumptions, תזות וכו’.
        • (אלון) זה הבסיס של ה-Agile Manifesto . . . לכל החלטה . . .
        • (רן) כן, שם אחר ל-Occam's Razor זה KISS [לא אלה, אם כי גם אחלה שם ללהקה] - Keep It Simple, Stupid, נכון? תמיד תבחר באופציה הפשוטה ביותר, המינימליסטית, שאתה יכול.
      • (דותן) כן, האמת שאני Fan של פילוסופיה שהיא פרקטית - זה תחום, כאילו . . . ובסוף, כשאתה מסתכל על Agile ועל תכנות ועל כל הדברים האלה, בסופו של דבר זו כנראה נגזרת-של-נגזרת-של-נגזרת של אותם חומרים פילוסופיים שכבר, לא יודע, מאות שנים אנחנו כבר יודעים, כבני אדם.
    • אז יש פה עוד כאלה - יש גם את Parkinson's Law, שאני מאוד אוהב - וזה חוק שהוא שנוי במחלוקת
      • הוא אומר שעבודה תמלא . . . הטבע של עבודה הוא למלא את הזמן שנדרש עבור ההשלמה של העבודה.
        • מה זה אומר? אם יש לך משימה, ויש לכם יום שלם, פשוט במקרה - אז היא תמלא יום שלם . . . 
        • לעומת שאם היו לכם חמש דקות - אז יש מצב שהייתם יכולים להשלים את העבודה בחמש דקות, פשוט אתם לא יודעים . . . לא ייצרתם את המגבלה של הזמן.
      • עכשיו - למה זה שנוי במחלוקת? כי לאורך ההיסטוריה, מנהלים לקחו את החוק הזה ויצרו ממנו משהו לא טוב, שזה לכל Task לשים Deadline, וכל Deadline - לחצות אותו לשתיים בצורה מלאכותית, וכל מיני דברים כאלה שיותר נושקים ל-Micro-Management . . . .
      • אבל זה חוק שבעולם של פרודקטיביות מאוד רלוונטי להכיר אותו.
      • (אלון) פתחת פה תיבת פנדורה להערכת זמנים, אבל כן . . . החוק עצמו מעניין.
    • (רן) אז בגדול, hacker-laws - אני מניח שזה משחק-מילים על Hacker News, האתר הפופולארי של Hacker News - וזה אוסף של “חוקי-מתכנתים”, או “חוקי-פיתוח” או “כללי-אצבע לפיתוח” . . . 
      • קצת אולי כמו Design Patterns אבל יותר רחב מה-Design Patterns עצמם . . . אני מניח שיש כאן גם Design Patterns אבל יש פה גם הרבה מעבר, עקרונות של SOLID ו-YAGNI וכו’.
    • (דותן) כן, יש פה אוסף שהוא Curated ו-Hand-picked, שהוא, מהמעבר שראיתי, הוא מספיק טוב, אפילו יותר ממספיק להכיר.
    • כן הייתי נותן לכל מהנדס או לכל אחד שעובד בתעשייה שלנו את הדבר הזה, אפילו כ-Must-Read - כל כך הרבה דברים שאתה תלמד בצלקות ובכאב, ואפשר פשוט להבין אותם דרך הדברים האלה, עוד לפני שהם בכלל קורים.
    • וזהו  . . . 

(רן) טוב, אז נעבור לחלק המשעשע של היום . . . נעבור לגזרת המצחיקולים -
  • אדיר דוכן, שאני חושב שכבר הזכרנו אותו פה לפני זה, הוא עושה Video-ים . . . 
    • (אלון) כן, מספר פעמים . . .[עם זה ב-415 Bumpers 75 - אבל לא במצחיקולים, אז זה נכנס למצעד ישר לרשימה הראשית] 
    • (רן) אז הוא פרסם לא מזמן וידאו חדש שבו הוא מראה איך מתראיינים - או איך מראיינים - מפתחים.
    • אז חבל שאני אעשה פה חיקויי - פשוט לכו לראות: זה מצחיק, הבחור מאוד מאוד מוכשר [והתחיל מוקדם]
    • זהו, לכו תראו - יש לו הרבה מאוד video-ים נחמדים, זה ספציפית אני חושב שמצאתי אותו ב-LinkedIn, אבל אני חושב שהוא קיים בעוד כמה מקומות, אז תודה אדיר! זה מצחיק, תמשיך . . .
    • (אלון) כן, אחלה . . . אני מנסה לחשוב - אם אתה תעשה חיקוי של הסרטון אז זה גם יהיה מצחיק . . . .
  • (אלון) כן, אז זה סרטון אחר - זה סרטון על microServices, שאיזה Product Manager בסרטון מבקש ממפתח “תוסיף לי רק את השם לפיצ’ר”, או משהו כזה.
    • והמפתח מסביר לו למה זה מסובך - אז יש פה איזשהו סרטון היתולי על microServices . . .
    • (רן) נחמד . . . סוג של ראיון עבודה או שיחה ? . . . 
    • (אלון) לא - שיחת Product שבה הוא מבקש ממנו פיצ’ר - “אני רק צריך שתוסיף לי את הזה לזה”, ואז הוא מתחיל להסביר לו “כן, אבל המידע הזה בכלל נמצא ב-Service ההוא”, ואז צריך להביא את ה-Service ההוא, אבל זה לא נמצא שם, ואז זה לא שם אז צריך להביא מפה וללכת לשם . . . .
      • מסביר שלהוסיף לזה שם זה חצי שנה . . . 
    • (רן) יש לדבר הזה 1400 Commet-ים, לסרטון הזה . . . 1400 הערות . . . 
    • (דותן) מתחכמות גם . . . .
    • (רן) מתחכמות מסוגים שונים - נראה לי שאחרי שאתה מסיים לראות את הוידאו, לך גם תקרא את כל ההערות . . . שיהיה לך בהצלחה בחופשה הבאה שלך.

טוב, מעולה - אז פה אנחנו מסיימים.שוב - נסיים עם מה שהתחלנו: Reversim Summit [2021] קרה! היה לפני שבוע, הוידאו-ים יצאו בקרוב [והתמונות כבר יצאו] אז אנחנו נפרסם ברגע שכולם יצאו. היה מאוד מוצלח ותודה לכל מי שהשתתף - ותודה עוד יותר לכל מי שעבד בכנס - הייתה הרבה מאוד עבודה קשה מאחורי הקלעים.אז תודה לכולכם - ונשתמע.
 האזנה נעימה ותודה רבה לעופר פורר על התמלול!
...more
View all episodesView all episodes
Download on the App Store

רברס עם פלטפורמהBy רברס עם פלטפורמה

  • 4.4
  • 4.4
  • 4.4
  • 4.4
  • 4.4

4.4

5 ratings


More shows like רברס עם פלטפורמה

View all
גיקונומי by ראם שרמן ודורון ניר

גיקונומי

93 Listeners

עושים היסטוריה עם רן לוי Osim Historia With Ran Levi by רשת עושים היסטוריה

עושים היסטוריה עם רן לוי Osim Historia With Ran Levi

156 Listeners

חיות כיס Hayot Kiss by כאן | Kan

חיות כיס Hayot Kiss

142 Listeners

שיר אחד One Song by כאן | Kan

שיר אחד One Song

167 Listeners

מפתחים חסרי תרבות by מפתחים חסרי תרבות

מפתחים חסרי תרבות

10 Listeners

מנועי הכסף by כלכליסט

מנועי הכסף

39 Listeners

עושים תוכנה Osim Tochna by רשת עושים היסטוריה

עושים תוכנה Osim Tochna

8 Listeners

Startup for Startup by Powered by monday.com

Startup for Startup

20 Listeners

בזמן שעבדתם by mako מאקו

בזמן שעבדתם

102 Listeners

אחד ביום by N12

אחד ביום

313 Listeners

מפלגת המחשבות by Beit Avi Chai

מפלגת המחשבות

97 Listeners

השקעות לעצלנים - פודקאסט על כסף, השקעות והחיים עצמם by תמיר מנדובסקי

השקעות לעצלנים - פודקאסט על כסף, השקעות והחיים עצמם

26 Listeners

מפתחים מחוץ לקופסה by שחר פולק ודותן טליתמן

מפתחים מחוץ לקופסה

1 Listeners

LangTalks by Lee Twito, Gal Peretz

LangTalks

0 Listeners

הקרנף - עם יואב רבינוביץ׳ by בית הפודיום

הקרנף - עם יואב רבינוביץ׳

23 Listeners