יום ראשון, 17 בנובמבר 2024

482 Bumpers 84




פרק מספר 482 של רברס עם פלטפורמה - באמפרס מספר 84: רן, דותן ואלון עם סדרה של קצרצרים שתפסו את תשומת הלב בתקופה האחרונה - בלוגים מעניינים, דברים מ- GitHub, וכל מיני פרויקטים מעניינים או דברים יפים שראינו באינטרנט וחשבנו לאסוף ולהביא אליכם.
לצערנו לא יצאנו להקליט די הרבה זמן, כמעט חצי שנה -  אבל הנה עכשיו אנחנו שוב פה.reminder ribbon


00:52 רן - DSPy, סקרים, Code Assistants Wars ו-Self-Driving code
  • (רן) אז אני אתחיל : אחד הדברים שיוצא לי להתעסק בהם בזמן האחרון זה עבודה עם LLM-ים, אולי כמו רבים אחרים.
    • ואחד הדברים שעושים בעבודה עם LLM-ים, זה “תופרים Propmt-ים, נכון?
    • צריך לוודא שה-Prompt נכון, שהסיומת נכונה, שמבקשים יפה, שעושים Chain of Thoughts, שעושים כל מיני ש*ט כאלה, כדי שהדברים יעבדו - ולפעמים נראה כאילו זה איזשהו Witchcraft שאמור כבר לעבור מהעולם . . . .
      • כאילו, למה זה משנה אם אני שם סימן שאלה בסוף המשפט או לא? אם אני שם פסיק או לא? כאילו, הוא אמור להבין אותי, לא?
    • אז המציאות היא שלפעמים כן, ולפעמים לא . . . זה כנראה גם תלוי באיכות ה-LLM.
    • אבל תמיד חיפשתי איזושהי דרך קצת יותר מתודולוגית, אולי קצת יותר מדעית, לבוא ולייצר Propmt-ים בצורה שהיא פחות “Black Magic” כזה.
    • ואז, נתקלתי בכלי - ספרייה - שנקראת DSPy.
    • ו-DSPy בעצם מתיימרת לעשות דבר כזה: למעשה, אתה מציב לה מטרה.
      • אתה בא ואומר “אני רוצה סוג כזה של Output”
      • אתה מגדיר איזושהי פונקציה שבוחנת את האיכות של ה-Output, ומגדיר לה את ה-Input-ים.
    • והיא מנסה, על סמך זה, לעשות ניסוי וטעייה - בעצם לטייל באיזשהו גרף של טקסטים שהיא מייצרת, על מנת למצוא את ה-Prompt האידיאלי ל-Use Case שלך.
      • אם זה נגיד, הזכרנו Chain of Thoughts, אם זה להגדיר דוגמאות - זאת אומרת, לתת 2-3 דוגמאות, אולי אפילו לתת מקרים שהם “קשים”
        • זאת אומרת, למצוא את הדוגמאות המעניינות, כדי לתת.
    • ובסופו של דבר, מספקת לך Prompt בצורה שהיא חצי-אוטומטית”, נקרא לזה, שעושה אופטימיזציה ל-Use Case שלך.
      • אז אפשר לחשוב על זה כמו על סוג של בניית Prompt אוטומטי, אם אתה יודע להגדיר את זה כמו שצריך, אם אתה יודע להגדיר את הצרכים שלך כמו שצריך.
    • למי שיצא להתעסק בעולם הזה, יכול להיות שהוא מכיר ספריות או כלים אחרים, כמו נגיד, LangChain או LlamaIndex - זה לא אותו דבר. 
      • הם דואגים לאספקטים אחרים של הפיתוח.
      • ו-DSPy למעשה מתממשק אליהם - זאת אומרת, הם “מכירים אותו”, ואפשר לעבוד איתם ביחד.
    • (אלון) אי אפשר להחליף את זה ב-LLM? כלומר, אני נותן ב-LLM את ה-Prompt, ואומר לו “תכתוב Prompt נורמלי” - כותב לי Prompt נורמלי, וזה עובד . . .
    • (רן) ומה אתה חושב שהם עושים?
    • (אלון) אז מה צריך אותם? . . . .
    • (רן) אז כן, בגדול, כאילו, “זה שילוב של כן”
      • א', הם משתמשים ב-LLM, זה כן.
      • אבל חלק מהאתגר זה לבוא ולמדוד את האיכות של התוצאה - וזה משהו שהם עוזרים בו.
      • וגם בלפרמל את הדברים האלה.
    • אבל בסופו של דבר, מתחת לפני השטח, כן - הם גם עושים את זה.
    • אבל ללכת ולהגיד ל-LLM “תייצר לי Prompt אידיאלי” - הוא אולי ייצר לך משהו, אבל החלק המאתגר ביותר זה לבוא ולעשות איזו אופטימיזציה.
      • זאת אומרת, לדעת שהוא באמת אידיאלי, לדעת שלא עשית ממש . . . .  שאין איזשהו שינוי קטן, שיכול לעשות את זה קצת יותר טוב, בקיצור.
    • אז זה איזשהו שילוב של באמת עבודה עם LLM-ים והיכולת למדוד את האיכות של התוצאה.
    • (דותן) אני רואה שזה של stanfordnlp  . . . 
    • (רן) נכון . . . 
    • (דותן) אז כאילו, זה הניסיון שלהם להגיד “גם אנחנו בו במשחק”, נכון?
      • אני זוכר הספרייה הזאת, של NLP, כבר שנים, שנים אחורה . . .  מה שנקרא “סטנדרט בלתי כתוב”.
      • ואני מסתכל ככה גם על הפרויקטים שלהם - נראה שזה הפרויקט הראשון שהוא עוסק ב-LLM.
      • אני לא יודע אם אפשר להשליך מזה שזה פרויקט טוב או לא, אבל...
    • (רן) אפשר רק להזכיר ש-NLP, לפני הימים של-LLM, היה דיסציפלינה די מוכרת - אבל שיטות אחרות לגמרי. אוקיי?
      • לנסות לנתח את המבנה התחברי של המשפט, להבין על מה זה פועל, הטיות וכו’.
    • זה לא מה ש-LLM עושים היום. היום ה-LLM עובדים בצורה סטטיסטית לחלוטין, בלי איזשהו ניסיון - או לפחות ניסיון מהותי - לבוא ולהבין מבנה תחברי, או סמנטיקה.
      • אפשר אולי להתווכח על זה, אבל זה גישות שונות. NLP זה כאילו “הגישה היותר קלאסית” והדרך שבה ה-LLM-ים עובדים היום זו דרך שונה.
    • אז בעצם מה שדותן אומר, זה שהם “הצטרפו לעגלה”, כן? הצטרפו לקהל הרב . . . 
    • (דותן) פעם, אם רצית NLP, היית הולך ל-stanfordnlp.
      • לא היית יודע בכלל מה זה, היית פשוט הולך לשם.
    • (אלון) אני יכול להגיד שבעולם הזה, של “קצת להבין את ה-LLM-ים”, אפילו Datadog הוציאו כלי של LLM Observability,
      • שזה קצת להבין איזה Prompt-ים, מה היו התוצאות? מה זו תוצאה טובה? וקצת לעזור . . . 
      • הכלי שלהם נראה יותר מרשים, אני חייב להגיד, של Datadog, אבל אני לא יודע מה יותר טוב או פחות טוב.
        • לא התעסקתי לא עם זה ולא עם זה.
    • (רן) עד כאן . . . 
    • (דותן) נתנו חסות?
    • (אלון) “אוהבים דאטה?! . . .”
  • (רן) ובמעבר חד: התפרסם לא מזמן - וכשאני אומר “לא מזמן”, זה נראה לי משהו כמו חודשיים - הסקר השנתי  של Stack Overflow 2024.
    • בעבר היינו סוקרים את הסקרים האלה, זאת אומרת היינו באים ומביאים Highlights - אבל אני חייב להגיד שאני לא יודע מה מעניין שם הפעם . . .
      • אז רק רציתי להרים פה, אם במקרה לכם יצא להסתכל על הסקר הזה . . 
    • עברתי עליו, כאילו בסדר - ראיתי שם מספרים וזה, אבל אני לא יודע, שום דבר לא תפס שם את עיני.
      • שזה אולי האייטם - כאילו זה נראה כאילו זה כבר, אוקיי, “עבר זמנו” . . .
    • אבל בכל אופן - יצא לכם לעבור עליו? יצא לכם לראות שם משהו מעניין?
    • (דותן) לא . . . 
    • (אלון) יצא לי משהו מעניין אחר - יצא לי לראות את כמות המשתמשים ב-Stack Overflow, מאז ש-GPT יצא לראשונה.
      • וכמות המשתמשים המשתמשים ירדה באיזה 65 אחוז, אם אני זוכר נכון, בשנתיים האחרונות [ChatGPT is putting Stack Overflow out of business traffic is down over 50%].
      • ואז גם כנראה הסקר הזה, זה אנשים שלא משתמשים כל כך בכלים המודרניים - ואז הייתי אומר, לא יודע . . . זה כאילו מראש קהל בעייתי, לא הייתי אומר את זה כל כך.
    • (רן) כאילו, בוא נגיד מראש, זה היה סקר של משתמשי Stack Overflow, שזה קהל מוטה באיזשהו אופן.
      • אבל אתה אומר שהיום ההטייה היא כבר שונה לחלוטין, אז לא לבנות על תוצאות הסקר.
    • כן, בסדר, בקיצור - עשינו @Mention, נמשיך . . .
  • נושא אחר, ועדיין קשור מן הסתם ל-LLM-ים, זו כל הזירה הזו של Code Assistants, או “המלחמה” אני קראתי לזה, “The Code Assistants War”.
    • אז יש שוק מאוד מאוד פעיל, שאני בטוח שכל מפתח תוכנה מכיר, של כלים להשלמת קוד או לעזרה בקידוד.
    • בין אם זה Copilot של GitHub, שהיה בין הראשונים, Tabnine שאפילו היה עוד לפניו - חברה ישראלית - וחדשים, כמו Cursor ו-Codium 
    • אבל יש עוד ועוד ועוד  . . .  ואלה הבולטים, יש לדעתי עוד עשרות כאלה.
      • וגם כל אחד יכול להרים לעצמו אחד פרטי, כזה על הלפטופ כבר, זה לא כזה מסובך . . . 
    • העולם הזה די מתפוצץ, החברות - חברות כמו Cursor ו-Codium שהזכרתי - יש להן הערכות שווי במיליארדים גדולים, למיטב זיכרוני.
      • זאת אומרת - זה שוק לא קטן.
    • ורציתי סתם לפתוח לשיחה של מה אתם חושבים - כאילו, לאן זה ילך? זאת אומרת, איך אתם רואים את העתיד של עולם ה-Code Assistants?
    • (אלון) קודם כל, אני חושב שהערכות-שווי שלהם הן מה-זה מגזמות, כי בסוף תיהיה קונסולידציה (Consolidation) ובחיאת ראבאק - הם לא יוצאו על אותו כלי כל כך הרבה כסף . . . זה הראשון.
    • דבר שני, אני יכול להגיד ש-VS Code, למשל, הוא לאט לאט נהיה Cursor  . . .
      • כאילו, הם מתחילים להעתיק פיצ'רים, ואני לא יודע עוד חצי שנה, איזה יתרון יהיה ל-Cursor, ולמה לא להשתמש ב-VS Code.
      • בטח שיש לו גם את כל המודלים “המתוחכמים” - עכשיו גם הוסיפו את Claude, ואתה יכול לגרות קבצים, ולשאול אותו על ה-Context . . . 
      • ואני לא רואה יתרון . . . יש עדיין יתרון ל-Cursor, אבל זה לא נראה לי משהו שיחזיק לנצח.
    • בסוף, בוא נתחיל מזה - הם מבוססים על VS Code, אז כן, זה לא בעיה לעשות את הכיוון ההפוך גם.
    • (רן) כן, בדרך כלל, זה מעניין שרוב ה-Assistants מתלבשים על IDEs קיימים, כמו VS Code, או ה-IntelliJ או vim, או אחרים.
      • ו-Cursor בחרו לפתח “IDE משלהם” - ואני עושה כזה “גרשיים”, אני עושה “מרכאות באוויר”, כי למעשה, גם ה-IDE שהם פיתחו כמובן מבוסס על VS Code . . . 
      • זאת אומרת, הם לא פיתחו את זה מאפס - זה נראה די דומה, הם רק החליטו לשים את הפאנלים ולסדר אותם קצת אחרת, אבל די ברור לכולם שזה VS Code מתחת.
      • אבל כן, הם הלכו על איזושהי אסטרטגיה של שיווק, שבה יש להם את ה-IDE משלהם, זאת אומרת, הם הפלטפורמה.
    • אבל כמו שאתה אומר, אלון - תכל’ס, התוצאה היא די דומה.
      • כאילו אולי Cursor - היה להם איזשהו יתרון לתקופה, אבל אני רואה את כולם סוגרים את הפער.
    • ל-GitHub גם היה פעם יתרון - וגם אחרים סגרו את הפער, כלומר, זה משחק שכל הזמן קורה.
    • (דותן) נראה לי שיש פה שתי שאלות . . . .
      • אחת זה “מי מכל ה-Editors האלה יהיה  “ה-Editors המוביל”
    • ובלי קשר לזה, יש פה המון “ללמוד מההיסטוריה” - אני מרגיש שכל התשובות נמצאות כבר, כאילו. “ההיסטוריה חוזרת על עצמה”.
      • ונראה לי שפה מי שינצח, זה מי שיש לו את הפלטפורמת-הפצה, 
      • פשוט ככה, כמו עם ה-Browser-ים . . .
    • (אלון) אמרת הרבה בשביל להגיד “Microsoft” . . . .
    • (דותן) לא יודע. . . . אולי זה Microsoft, יכול להיות שזה Microsoft, בסיכוי מאוד מאוד גבוה.
      • אבל יש פה הרבה התפלפלויות . . . 
    • היה גם איזשהו Editor שעשה Fork, זה קבוצה של אנשים שעשתה Fork - וככה הם הקימו חברה, עשתה פורק של Editor קיים.
      • והקהילה כזה “נכנסה בהם” והם נעלמו, אני לא זוכר בדיוק מי אלה.
    • אבל בסוף, כמו כל דבר, הפלטפורמת הפצה תנצח.
    • השאלה השנייה זה “איך ייראה העולם הזה?” - ש”יש לי Editor ש-AI כותב לי את הכל”.
      • גם פה נראה לי שזה איפשהו בהיסטוריה, האמת שעוד לא נכנסתי לזה לעומק במחשבה.
    • אבל פילוסופית, זה צריך להיות איפשהו להסתכל על המאמצים של Microsoft עם IntelliSense, ומה IntelliSense עשה . . . . IntelliSense, כשזה יצא, זה היה “ביג דיל”.
      • היו גם כל מיני חברות של “AI של פעם”, שכתבו טסטים אוטומטית - מה קרה איתם ואיך זה עבד?
      • ו-Refactoring - כל מיני כאלה שעשו תוספים של Refactoring של קוד, ואיך זה עבד להם וכמה השתמשו בזה?
    • כאילו, איפשהו זה שילוב של הכל, ולא יודע . . . בינתיים אני יודע שיש Sweet-Spot-ים שאני משתמש
      • כל מה שקשור לטסטים עובד טוב,
      • “שכתב לי את הקוד הזה בצורה יותר טובה - תן לי לראות מה אתה חושב” - גם עבד לי טוב. 
      • “תכתוב לי קוד” - נפלתי לא מעט פעמים, שלקחתי קוד שהוא כתב לי, ופשוט הבאגים שהיו הם היו כל כך עדינים, שפשוט בלמצוא ולתקן הפסדתי את כל הזמן שהרווחתי, פשוט ככה.
      • זה בטח ישתפר, אבל כרגע זה מה שאני ראיתי.
    • (אלון) ומן סתם ל-Boilerplates גם - אחת השיטות זה לתת לו לכתוב קוד, לכתוב טסטים, או להגיד לו “זה ה-Output” - ואז הוא מתקן את עצמו,
      • כאילו, לעשות את איטרטיבי.
    • (דותן) כן, אז אני זורק לו את ה-Error ונותן לו להתמודד עם מה שהוא יצר, כאילו . . . 
    • (אלון) כן, אנחנו עדיין סתם בלופ כדי לתת לו את ה-Error-ים - כאילו, ועוד מעט הם יעשו את זה לבד . . .
      • זה כמו השיחות שלי עם ה-Support ב-Amazon - אני כאילו פותח את ה-ChatGPT, ואני . . . 
      • שני ה-ChatGPT מדברים אחד עם השני, אני סתם עושה Copy-Paste-ים . . .  זה ממש מטומם.
  • (רן) כן, יפה - אז בדיוק בשביל זה הבאתי את הבלוג הבא: אז בחור בשם Graham Neubig, וזה האייטם הבא שלי, בא ועשה איזשהו . . . ניסה לקחת איזשהו מבט-על העולם הזה, של כלים לכתיבה של קוד - AI Enhanced Software engineering - והשווה אותם לעולם של Self-Driving Cars, אוקיי?
    • הוא בא ואמר “אוקיי, בעולם של מכוניות אוטונומיות, כבר הוגדרו חמש רמות:
      • רמה הראשונה זה . . . זאת אומרת רמה אפס אולי זה אפס אוטומציה
      •  רמה מספר אחת זה נקרא Driver Assistance - או במילים שלנו זה Code Completion, אוקיי? שזה פחות או יותר רוב הכלים שיש לנו היום, כל מיני “סייענים” אבל לא יותר מזה.
      • רמה שנייה נקראת Partial Automation - אז נגיד ששם הוא שם את Tesla Autopilot, ובעולם של Code Completions, נגיד Copilot או Chat Refactoring
        • זאת אומרת שאפשר לעשות צ'אט ולעשות Refactor באמצעות זה לקוד.
        • ויש את זה גם ב- Cursor ואני חושב שיש את זה גם לכלים אחרים, דיברנו על זה שכולם משלימים את הפיצ'רים אחד של השני, אז זה קיים.
      • ברמה השלישית הוא שם את Conditional Automation. דרך אגב, אני לא חושב שזו הגדרה שלו, זו הגדרה די סטנדרטית - ובעולם של Self-Driving Cars זה נגיד מוצר של Mercedes-Benz שנקרא DRIVE PILOT.
        • שאני לא מכיר אישית, אבל אני מניח שהוא עושה קצת יותר מ-Autopilot של Tesla.
        • בעולם של Software Development, הוא מזכיר כלים כמו Diffblue Test Generation, וטכניקה שנקראת TransCoder for code porting
          • שלי לא יצא לעבוד עם אף אחד מהם, אבל אני מניח ש-Diffblue, לפי השם, מייצר טסטים בצורה אוטומטית, קצת דומה למה שדותן ואלון הזכרתם מקודם.
          • אבל כנראה שיש שם רמת אוטומציה עוד יותר גבוהה.
      • ברמה הרביעית, יש מה שנקרא High Automation, שלמעשה ברכבים אוטונומיים זה נהיגת . . . נקרא זה “Cruise Control על סטרואידים”.
        • זאת אומרת  רכב שיודע להגיע מנקודה א' לנקודה ב', בלי עזרה של בני אדם.
        • בגדול זה Self-Driving Cars . . . אולי בלי החוכמה של מעבר, אולי כאילו בלי “חוכמת-הכביש” שמעבר, אולי בלי טיפול במצבי קיצון, אבל זה בגדול די Self-Driving Cars.
        • ובעולם של פיתוח תוכנה, זה כלים שהוא מזכיר, כמו Devin, שיצא לי קצת להסתכל עליו, Devin או, OpenDevin
          • שלמעשה זה Agents שאתה אומר להם “אני רוצה לייצר אפליקציית iPhone” או “אני רוצה לייצר אתר, שעושה ככה וככה”
          • והוא עושה לך את זה, אוקיי?
          • האם הוא עושה את זה טוב? האם האיכות גבוהה? זה עדיין לחלוטין נתון לויכוח, אבל אתה לא כותב שורות קוד שם, זאת אומרת - אתה רק מתאר Spec.
          • אתה רק בא ואומר לו “אני רוצה את התוצאה הזאת - תייצר אותה”. זה כמו להגיע מנקודה א' לנקודה ב', במכונית, אוקיי?
      • רמה חמישית של אוטומציה מלאה - פה אין לו דוגמאות, אני לא יודע מה הן הדוגמאות, אולי אנחנו עוד לא שם - אבל בכל אופן, אני חשב שזה נחמד.
    • זאת אומרת, הבלוג הזה נחמד. Graham Neubig הוא Computer Scientist ב-CMU, זאת אומרת לא אוניברסיטה קטנה.
      • והוא גם עובד בחברה שמייצרת כלים כאלה, אז אני מניח שהוא חושב על הנושא הזה לא מעט.
    • וזהו, חשבתי שזה מעניין לבוא ולהשוות את עולם המכוניות האוטונומיות לעולם פיתוח התוכנה, ולשים אותם ככה, אחד מול השני.
      • ובאותה הזדמנות גם להכיר את הכלים השונים במערכה הזאת.
    • זהו, אז קריאה קלילה, זה לא מאוד ארוך - מוזמנים, נשים לינקים כמובן.
    • (דותן) נראה שהזווית של המאמר זה בעצם להגיע בסוף ל-OpenDevin, שעכשיו נקרא OpenHands, ששייך ל-All Hands . . .
    • (רן) כן, שזו החברה שבה הוא עובד . . . 
    • (דותן) כן . . . 
    • (רן) הוא בעצם רוצה לבוא ולהגיד “אוקיי, אנחנו ברמה הכי גבוהה, כל השאר שחקנים קטנים” . . . בסדר, אתה יודע, יכול להיות שזאת הזווית שלו . . . 
      • אבל זו סקירה מעניינת של השוק ופרספקטיבה נכונה, אני חושב.
    • (דותן) כן, תראה, זה Open Source - אני רואה שיש פה איזשהו Docker שאתה יכול להריץ.
      • אתה מריץ, מופיע לך כזה ב-Local Host - ונראה לי שאחרי זה אני אנסה את זה קצת
        • כאילו, ניתן לזה לכתוב משהו, בסוף זה המבחן, הרי, נכון?
        • אפשר להמשיך להגיד שזה עובד ו”עובדים עם זה”, ו-”AI כותב את כל הקוד” וכו'.
        • בסוף, אתה מריץ את ה-Docker הזה, אומר לו “אתה עושה לי אפליקציה של  . . . “ - לא יודע מה, Pomodoro.
          • ואתה נוגע בזה ורואה . . .  כאילו, ה-Bottom-Line זה מה שחשוב.
    • (רן) כן. דרך אגב, אני לא ניסיתי, אבל נראה לי שלייצר . . . פעם ראשונה זה סבבה, לבוא ולהוסיף פיצ'רים ולתקן באגים - זה כבר דורש קצת יותר מעורבות טכנית.
      • ופה אני בספק עד כמה באמת זה יעבוד.
      • אבל שווה לנסות!
  • טוב, עד כאן LLM-ים, מודלי-שפה, Code Completions וכו’ - ונעבור אליך, דותן! יצא לך לעבוד על איזשהו Framework קטן בזמן האחרון . . . 

18:53 דותן - [loco.rs] This section is LLM-Free
  • (דותן) כן, האמת שכל האייטמים שלי הם נטולי-LLM [כמעט פלינדרום], או “LLM-Free”, אז כל מי שבשוחות . . . 
    • (אלון) אפשר לתייג את זה  . . . “This Section is LLM Free”
    • (רן) “ מכיל LLM בכמות גבוהה” . . . .
    • (דותן) “No-AI”, כאילו זה משהו זה ללא גלוטן . . . בקיצור, כן - אני בשוחות, חופר את הבוץ.
      • אתם שם למעלה, במגדל של ה-AI . . . 
      • וזה מיועד לאנשים שהם נגד AI.
  • בקיצור, אז יש לי מסע, שקצת מתועד פה בפודקאסט, אני מניח . . .
    • שבאיזשהו שלב - גם אלון היה איתי במסע הזה - באיזשהו שלב עזבתי את Rails ואת Ruby והבית החם הזה.
    • שאני חייב להגיד שעם Rails ו-Ruby ממש הרגיש כזה כמו בית - אתה יכול לבנות הכל פשוט, כל דבר אתה מתרגם לסדרת פקודות של Rails - Rails New, scaffold זה, scaffold זה . . . - בום! יש לך אפליקציה חיה ועובדת.
    • ופה מדובר על 20 שנה אחורה - היום אתה יכול לראות את זה בדמות אנשים שכאילו עושים פוסטים על AI - “תראו, אמרתי ל-AI מה לעשות, והוא ייצר לי אפליקציה!”
      • סוג של אותה חוויה - אתה בא עם רעיון ואנרגיה, ויוצא לך משהו.
    • אז איפשהו, באיזשהו שלב, עזבתי את העולם של Ruby - עברתי ל-Go, עברתי ל-Kotlin, כל מיני מקומות שביקרתי בהם.
      • אבל בסופו של דבר, תמיד רציתי את החוויה הזאת . . .
      • איפשהו השתקעתי ב-Node.js לתקופה, תקופה יחסית ארוכה.
      • ובניתי Framework שהוא תואם Rails ב-Node.js -
      • ו-Production, הכל, זה עובד סבבה - יש כמה אפליקציות שרצות על זה, אנשים משתמשים בזה וכו',
    • אבל ראיתי שכ-Maintainer, אני פשוט לא יכול לחיות . . .  זאת אומרת שאחד הדברים ב-Open Source, זה שכשאתה רוצה לשים את הפרויקט שלך Online, מידי פעם לבוא ולא יודע, להוסיף דברים שאתה רוצה להוסיף בכיף.
      • כי בסוף, אם אתה לא נהנה מזה, וזה Open Source בזמן החופשי שלך, אז זה פשוט לא יעבוד.
    • וראיתי שבאמת . . .  קודם כל, לקח לי זמן להבין למה אני מרגיש רע עם זה כל הזמן.
      • כל פעם שאני רוצה לבוא לתקן משהו שמישהו כותב משהו, זה פשוט הופך להיות סיוט של לפתוח את הפרויקט - ופיתחתי “רפלקס אנטי” כזה.
        • לא בא לי לפתוח, לא בא לי לעשות Pull, לא בא לי לעשות Clone.
      • וזאת הייתה תחושה שהקיפה אותי עם הפרויקט, שהוא ה-Clone של Rails ב-Node.js.
    • ובסוף החלטתי רגע לקחת צעד ולהבין למה יש לי את התחושה הזאת, הסתכלו פנימית כזאת - והבנתי שפשוט כל פעם יש איזשהו “טקס של שבירה”
      • אני מוריד את הפרויקט אליי - וזה הפרויקט שלי, זו האירוניה - אני עושה איזשהו npm install, whatever, עם כל הכלים הכי חדשים והמודרניים,
      • ואני מבלה שעתיים של להבין למה ספרייה נשברה, ולמה סביבה דפוקה, ולמה אני לא יכול לשחזר פה, ולא יכול לשחזר שם . . . 
    • (רן) Don't get me started on Python  . . . 
    • (אלון) כן, כן . . . והאמת שאתה יודע מה? ב-Python
    • (רן) . . . עוד יותר גרוע . . . .
    • (דותן) . . . התסכול זהה, אבל אני חושב ש-Node.js הפך . . . 
    • (אלון) תסכול כפול . . . 
    • (דותן) לא, לא . . . אני חושב שלפחות מה שאני התעסקתי, שה-Framework הזה זה “Framework שלוקח”
      • הוא שואב ספריות, מלא ספריות . . . .
      • באמת מה ששמתי זה זה Full Stack לגמרי, כולל Authentication, כולל הכל, ממש הכל.
      • אז כמות ה-Dependencies שהייתה לי היא משוגעת - וגם “ Dependencies Shady” כאלה, למשל Express.js, שלא עודכן שנים על גבי שנים, רק עכשיו הם הוציאו גרסה . . . 
      • וכל מיני ספריות אותנטיקציה (Authentication) שוואלה - לפני 6-7 שנים היית אומר “זה הפרארי”, והיום זה פשוט סיוט של Memory Leaks וכל מיני קשקושים כאלה.
    • ובאיזשהו שלב אמרתי “טוב, אני לא יכול, אני חייב פתרון - אני חוזר ל-Rails!”
      • כאילו אני חוזר ל-Rails - כי כשיש לך רעיון ואתה רוצה להוציא אותו לפועל, אתה לא יכול שיש לך משהו שיעצור אותך.
      • אתה רוצה את “החלק” הזה בדרך לבנייה.
    • אז חקרתי על Rails - ואז איפשהו השתלבו לי העולמות: אני בא מ-Rust עכשיו, כל דבר שאני עושה זה Rust, ואני אומר את זה בכיף ובגאווה.
    • ואמרתי, אוקיי - בוא נעשה רעיון משוגע: בוא ננסה, נתחיל, Baby Steps: 
      • אני אקח את ה-Framework ב-JavaScript הזה
      • אני אסתכל כאילו, מה עבד שם
      • ואני אתחיל לעשות איזה Porting ל-Rust, ממש Porting.
    • ומה שנקרא “לפני ששמתי לב” - אני כבר מסתכל על Framework ש”מנגן לי יפה בידיים”.
    • עיקר הבעיה הייתה למצוא ה-RM טוב - ברגע שמצאתי אחד כזה, שהוא מאוד מאוד Rails-י, הכל התחבר.
    • והיום יש Framework שהוא כבר עובד, שהוא Clone של Rails ב-Rust - נקרא Loco-RS, מלשון Locomotive.
      • והוא עובד פצצה!
    • אני יכול להגיד שהמבחן האמיתי זה הכיף - לבוא ולהוריד אותו ולעבוד עליו - זה פשוט תענוג צרוף.
      • אין לי שבירה של תלויות, אין לי שבירה של כלים.
      • כל פעם שאני רוצה להוסיף פיצ'ר, אני עושה Clone
      • ו-Rust עוזר בזה, Rust שומר עליי” - כי ה-Compiler מאוד מאוד חזק.
    • הרמת-ביטחון שלי בלהוסיף פיצ'ר ל-Framework כזה מורכב היא אחת הגבוהות שהייתה לי בקריירה בכלל.
      • כאילו, בכל השפות שהתעסקתי,
    • וזה פשוט תענוג לעבוד על זה.
    • וזה עובד - אנשים משתמשים בזה, מתלהבים מזה, זה ברמה של Rails עד כדי “חמש דקות - ואתה כותב בלוג”.
      • עם Generators, עם כל ה-Magic.
      • עם scaffold מלא של Full REST API, וגם Full Stack - גם מייצר UI והכל.
    • וזה 100% תודות ל-Rust.
      • כאילו, קצת מהניסיון שהבאתי והזה . . . .
      • אבל מלא מלא מלא הולך לספריות הסופר-יציבות של Rust, זה פשוט כיף.
    • אז אני ממליץ למי ש...
    • (רן) כן, אני הייתי בטוח שאתה קורא לזה Loco - כי אתה משוגע . . .
    • (דותן) לא, האמת זה יצא ככה . . . . זה יצא ככה. זה באמת שילוב משוגע.
    • אבל תשמע - יש בזה חוויה. 
      • כאילו זה “קפה” כזה - זה קצת מר, זאת אומרת, זה לא Rails, שאתה עושה Rails New ואז יש לך אפליקציה ואתה מרים אותה בשנייה, כן?
      • אז אתה עושה Loco New - יש לך אפליקציה בפחות משנייה - כי זה Rust, הוא מייצר קבצים בצורה מטורפת.
      • ואז בסדר, ה-Loco Start ייקח לך משהו כמו חצי דקה עד שהוא מקמפל (Compile) את הכל,
      • ואז כל קימפול נוסף זה ברמה של שניות.
    • אז זה הטיפה מר בפה - אבל החצי דקה הזאת, או השניות האלה - לקבל פרויקט שבאמת יש בו אפס באגים
      • פשוט ככה - כל הבאגים המוזרים של Dynamically Typed Languages וכאלה
      • אפס באגים, אין לי באגים - כאילו אני אומר את זה לא בשחצנות, פשוט אין באגים, פשוט ככה. [הקומיטים שלי טובים].
      • עזוב באגים של לוגיקה, כן? אין לך את “הש*ט הלא צפוי” - אין, אפס.
      • וזה פשוט מטורף.
    • עכשיו, אחרי כל זה, אתה בונה את האפליקציה שלך - אתה מקבל Binary בגודל של איזה 20-30 מגה, כשהכל “אפוי” בפנים.
      • אתה לוקח ואתה עושה Copy ל-Binary הזה - כאילו חוויית Go.
    • אבל מה שלא חוויית Go זה שהדבר הזה תופס 6 מגה בזיכרון - ונותן לך, בבדיקה האחרונה שעשיתי, 50 אלף Request-ים לשנייה, כולל קריאות ל-Database.
      • ו-200-300 Request-ים לשנייה בלי Database
      • 500 אלף, כאלה מספרים.
    • אז אתה יכול על Raspberry Pi לעשות מה שאתה עושה על שרתי-ענק,
      • ו-Go לא נותן את התוצאות האלה פה.
    • (רן) אפשר להתקין את זה על השעון שלי . . . 
      • (דותן) כן . . .
      • (רן) ולשרת משם את ה-Spotify . . . .
    • (רן) כן, אז אתה מצטנע - התחלת לפני שנה ומשהו, כן? והיום יש לך 5.3K סטארים, 225 Fork-ים, ו-Contributors יש כמה?  80 ומשהו . . .  זאת אומרת פרויקט גדול, גדול בכל קנה-מידה.
    • (דותן) כן, אני לא מסתכל על הסטארים - אני מסתכל על החוויות הקטנות האלה. 
      • למשל, כשבאתי ובניתי . . . יש שם איזה Background-Jobs Framework, מה שב-Rails לקח הרבה זמן להתבשל.
      • אז אמרתי תשמע, “אני גונב את כל זה . . .  כאילו, את כל הלמידה אני גונב”.
      • ואני בונה בעצמי Background-Jobs Framework.
    • אז זה, מטעמי נקרא לזה “קמצנות” - הלכתי ובניתי כזה דבר
      • לקחתי אחד ל-Redis, כמו מה שמי שמכיר sidekiq, ובניתי אחד ל-postgres, קטצ’יק כזה.
      • ואמרתי “אין לי כוח לבנות ל-SQLite” -  אני לא תומך ב-SQLite, אני לא חושב שזה - מטעמי קמצנות - אני חושב שזה יהיה מאמץ מיותר. 
    • ולפני כמה ימים בא מישהו, והוסיף אימפלמטציה (Implementation) ל-SQLite, של Background-Jobs Processing Framework.
      • מה שכאילו, בעולם המקביל, ב-Rails או ב-Node.js, זה כאילו “טקס” - מישהו בא ובונה, ונזילות זיכרון, במיוחד בדברים האלה, ולוקח זמן עד שזה יציב . . . 
    • והדבר הזה פשוט “ברזל” - הבן אדם בא עם ניסיון, מכיר את הנושא, נותן אימפלמטציה
      • כל מה שנשאר לי זה לעשות Merge - וזהו.
    • אז זה החוויות שאני אומר “וואלה, זה עובד”.
      • כאילו, כשיש את האינטראקציות האלה, זה באמת כיף.
    • (רן) יפה, אז תתחדש על ה-Framework החדש שלך.
    • (דותן) כן - ואני ממליץ: מי שרוצה לעשות Rust, אז עבדתי קשה כדי שלא תפגשו את ה-Borrow Checker . . 
      • שלא יהיו לכם בעיות של Lifetimes.
      • כי בעצם, Request מתחיל, הוא לוקח Data, אתה משחק עם ה-Data - וה-Data הולך לפח בסוף  ה-Request.
      • לא מחזיקים שום דבר באוויר, ככה שאין לך בעיות של “יש לי Pointer לפה, Pointer לפה, ועכשיו אני צריך לדבר עם ה-Compiler”.
    • אז כל מה שנשאר זה רק לריב עם ה-Syntax, מה ש... זה ה-Friction היחיד, לדעתי.
      • זהו  . . . 
    • (רן) מגניב . . . אוקיי. אז loco.rs, חפשו ותיהנו.
    • (דותן) כן, וזה “Framework לקמצנים”, אני חייב להגיד . . . זו גם אחת מהמוטיבציות: אתה יכול להרים Business ב... לא יודע מה, $10 לחודש באיזשהו שרת-פח כזה, ב-Hetzner או Whatever, ולקבל “1000% החזר” על ההשקעה.
    • (רן) כן, למרות שצריך - כדי להשתמש נורמלי - צריך להכיר Rust, כן?
    • (דותן) כן, צריך. אבל כן - אני לוקח איזה... העולם איתי! העולם בסוף יתכנס לשם, לדעתי.
    • (אלון) כן . . . עם שפה, זה דבר הרבה יותר קטן, כאילו, אם הקשבת לעצמך, עם כל ה-LLM-ים, אז אני חושב שהיום זה הרבה יותר קל.
      • כי אתה לא יודע איך עושים משהו? אתה מקבל את ה-Boilerplate, ואז אתה מתחיל לשנות.
      • זה לא כמו פעם להתחיל “איך אני . . . “
      • כאילו, הוא נותן לך את ה-Template הראשוני, ויאללה - אתה מתחיל, יותר קל להתחיל לעבוד על זה.
    • (דותן) זהו, אז יש הרבה דברים גם מעניינים שאנחנו עושים שם.
    • למשל, אני אתן סתם דוגמה, סתם להצית את הדמיון, לא קשור ל-Framework - כל מיני ספריות-צד שנולדו.
      • אז אחת הספריות, או איזשהו Framework קטן, שבא ואומר, רגע - אם יש לי אפליקציה שאני רוצה להתקין, נגיד Rails
      • ועכשיו אתה רוצה להתקין Rails, ולבחור Database כזה, ולבחור Background Job כזה, וכל מיני אופציות, במהלך ההתקנה של הספרייה, של ה-Framework או Whatever.
      • אז אני צריך לעשות טסטים לדבר הזה, ליצירה של אפליקציה - אני צריך לעשות טסטים עם Database postgres, עם SQLite, עם MySQL . . . 
    • ואז אני צריך לעשות טסטים . . .  רגע, הבן אדם רצה API, או רצה SaaS, או רצה אותנטיקציה (Authentication) או לא רצה אותנטיקציה . . . 
      • מלא מלא מלא שילובים, של כל מיני קומבינציות של אפליקציה שאתה רוצה לייצר כסטארטר, Starter-App כזה.
    • אז מה שעשינו, זה בנינו Framework, שעושה Fuzzing לזה: לוקח את כל הפרמטרים שיש, לוקח את כל הקומבינציות, סוג של prop.test כזה.
      • ומייצר שעות על גבי שעות, את כל הקומבינציות של כל האפליקציה - כשבסוף כל Generation של App חדש, הוא מריץ Suite של טסטים.
      • הטסטים יוצרו על ידי LLM - כאילו, השתמשנו קצת כדי להרחיב את הדמיון, מה שנקרא.
      • אבל ה-Fuzzing הוא Fuzzing סטנדרטי כזה.
    • למשל, עשינו אפליקציה עם אימוג'י, בתור השם של האפליקציה - וזה שבר לא מעט דברים.
      • כל מיני קשקושים כאלה . . . 
    • אז זה עם Rust גם עובד ממש טוב - כי קודם כל הספרייה היא  Statically Typed, היא גם באה מעולם של ML, אז יש שם אנשים שאוהבים את התחום של prop.test וכאלה.
    • (רן) אוקיי, אחלה, תודה! זהו, הבא בתור!

31:49 עוד דותן - gitbutler, openobserve, 100-exercises-to-learn-rust,PDF ל-Markdown, Rust based editor, shadcn/ui
  • (דותן) הבא בתור - אז יש את סקוט שקון, או צ'קון [Scott Chacon] - מי שבנה, נדמה לי שהוא בנה, את libgit, היה אחד מהשפיצים ב-GitHub, אני חושב שהוא כתב את הספר של git - הספר - אני מדבר מהזיכרון.
    • באיזשהו שלב הוא יצא כזה הצידה, מעולם היזמות, לבנות אפליקציה שהיא Desktop App ל-git.
    • קוראים לזה gitbutler וזה Open Source.
    • זה אחלה Codebase לקרוא - וגם אחלה אפליקציה להשתמש, אם מישהו אוהב UI מעל ה-git שלו.
    • ו...יפה.
    • (אלון) מי אוהב UI מעל ה-git שלו? אנשים לא אומרים את זה בקול רם . . . 
    • (דותן) נכון, צריך להגיד את זה יותר! אנשים שאוהבים UI מעל ה-git שלהם.
    • אז זו אפליקציה ממש נחמדה, כתובה ב...Rust
      • זאת אומרת, יש Framework שנקרא tauri, מבוסס Rust ו-JavaScript וכל מה שצריך.
    • זה אחלה דרך לראות מה אפשר להשיג ואיך אפשר לכתוב Desktop App, היום בימינו, Cross-Platform.
    • כשאתה עושה את ה-JavaScript שלך והכל, אבל כל ה-Backend Functions, כל הדיבור עם מערכת ההפעלה, מתבצע ב-Rust.
      • וזה אחלה פתרון.
  • הדבר הבא - פרויקט שנקרא openobserve
    • יש איזשהו Track כזה, איזשהו Journey של Tracing ו-Open Tracing וכל מיני מאמצים של Log-ים ו-Tracing ומטריקות (Metrics).
      • וזה אותו דבר? זה לא אותו דבר? זה שרת לזה, שרת לזה . . . ויוניפיקציה (Unification) וסטנדרטים וכו' 
      • אני כבר לא עוקב אחרי כל הסיפור - OpenTelemetry, OpenTracing - כבר לא זוכר ולא עוקב.
    • אבל יש פה איזשהו פרויקט שבא לתת פתרון, שהוא Low Cost - High Performance ל-Elastic.
    • לפי מה שהם כותבים, זה, איך נגיד, פי 140 פחות Storage [140x lower storage cost,], או ב-140 פעמים פחות Storage מ-Elasticsearch.
      • ומי שיודע ומכיר, אז במטריקות, Log-ים וכאלה, הנתון הזה הוא סופר-סופר-חשוב, ה-Storage.
    • זה  high performance,  petabyte scale, אלטרנטיבה ל-Datadog, ל-Elastic וכו’
      •  הכל בשרת אחד, כזה Single Binary.
    • והפתעה - כתוב ב-Rust!
    • (רן) זו הפתעת היום . . . 
    • (אלון) בשרת אחד . . . כאילו, הוא יודע לעבוד גם כמה? 
      • כאילו, מתישהו הוא ימות, ממקום או מביצועים או ממשהו . . . 
    • (דותן) יש לו Clustering ו-High Availability . . . .
      • לא שאני פרשתי אותו, אבל זה למשל פרויקט שאני אומר “אה, לא יכול להיות . . . .”
      • “לא יכול להיות שזה כפול 140!”
      • נכנס, קורא את הקוד - ואז אומר “אוקיי, הבנתי”.
    • קודם כל, הרבה מזה זה חוק 80-20 - 80 אחוז מזה זה פשוט Rust . . . 
      • ואחרי זה אני מתחיל לקרוא את הקוד, אני רואה את ה-Design, אני רואה מה הם עשו.
      • ואני אומר “אוקיי, אני נוטה להאמין לזה” . . . ככה אני בונה את הביטחון שלי.
      • זה נטו לקריאה של קוד ולמידה בשבילי.
    • אז זה מי שרוצה לנסות, נראה לי שזה, לפחות מה שאני קראתי ובדקתי מהקוד, זה אחלה פרויקט.
  • פרויקט הבא - יש פה את mainmatter, שהיא חברה כזאת, “חברת למידה” נקרא לה, חברה שמייצרת חומרי -למידה, שיצרה פרויקט שנקרא 100-exercises-to-learn-rust.
    • 100 תרגילים כאלה, וזה אחלה דבר.
    • מי שאוהב לבוא ולפצח גרעינים כזה - זה אחלה אחלה פרויקט, למי שרוצה לנסות.
    • לא נראה לי שיש פה מה להפסיד, זה קליל, זה נחמד.
    • אז זה זה.
  • ונכון שהבטחתי בלי LLM-ים, אבל יש פה איזשהו משהו שחיפשתי הרבה זמן, וזה PDF ל-Markdown.
    • לקחת PDF, ולהפוך אותו ל-Markdown עם מודל שפה כזה.
    • זה וואו . . . . לא יודע למה, אבל להתעסק עם PDF-ים בשבילי זה וואו, וזה עובד מטורף.
    • (רן) אני יכול להרחיב - מי שמכיר HTML חושב לעצמו “אוקיי, מה הבעיה? יש Title-ים, יש Header-ים, יש מבנה, יש טבלה, אפשר להבין מה קורה גם בתוך PDF.
    • אבל האמת העצובה היא שלא, ב-PDF זה לא ככה. ב-PDF זה בלגן אחד גדול.
      • ה-Title-ים הם בהרבה מקרים לא לוגיים, זה פשוט פונט יותר גדול.
      • הטבלאות - יש עשר דרכים שונות לייצר טבלאות . . . 
    • בסופו של דבר, פשוט לקרוא את ה-Source Code של PDF זה אומנם אפשרי - אבל זה לא תמיד נותן לך את הערך, זה לא תמיד בנוי לוגית נכון, כמו ש-HTML . . . 
      • זאת אומרת, לא שתמיד HTML כמובן בנוי נכון, אבל יותר נכון.
    • אז אי אפשר פשוט לקרוא את ה-Source, והרבה פעמים מה שאתה נאלץ לעשות, זה פשוט להפעיל מודל Vision על ה-PDF, כדי להבין מה באמת . . . איך זה באמת אמור להיראות.
      • עד כמה מגוחך שזה נשמע . . . 
      • יש לך טקסט כ-Input, ובסוף תצטרך, צריך לעשות Render ולראות מה יצא.
      • אבל כן - זה מה שהרבה פעמים עושים, ובגלל זה זה וואו.
    • עכשיו, דרך אגב, למה Markdown? כי Markdown זה די סטנדרטי, ו-LLM-ים עובדים מאוד יפה עם Markdown.
      • זאת אומרת, אתה יכול לקחת אחר כך את ה-Markdown הזה, ולדחוף את זה לתוך-LLM - ואז “הם” בדרך כלל יבינו הרבה יותר טוב.
    • (דותן) כן. גם הפרויקט הזה עובד ככה - מעבירים ל-Image ומה-Image “זורמים”.
    • אגב, יש דמו, שאפשר להעלות קובץ
      • תיזהרו עם קבצים! עם טבלאות שאתם לא רוצים שיהיו . . .
      • אבל אתם יכולים להעלות, כדי לאתגר את העניין, מערכת שעות של גן או משהו כזה - ולראות מה יקרה.
    • אז זה ממש נחמד.
    • (אלון) אין סיכוי שהוא אוכל מערכת שעות של גן . . . . כאילו, גם בנאדם לא מצליח . . . .  לא, אין סיכוי.
    • (דותן) יש עולם של סטנדרטים, יש עולם של סטנדרטים שבורים - ויש מערכת שעות של גן.
      • זה באמת מאתגר כל...
    • (רן) אבל מה שכן, הייתה לי כן חוויה טובה - לאו דווקא מערכת שעות של גן, אבל נגיד כל מיני דוחות של בנקים
      • נגיד שהם בעברית, ואני צריך לתרגם לאנגלית, לאיזשהו צורך.
    • עכשיו, זה לא כזה מסובך, כן? אתה יכול ללכת ולתרגם, זה פשוט מלא מלא עבודה, מספרים וזה.
    • אני זורק את זה - ניסיתי את Claude, ניסיתי את ChatGPT - אחרי כמה תפירות קלות של Prompt יוצא פשוט מדהים.
      • מתרגם מנגיד עברית לאנגלית - אפס טעויות, כולל לשמור את הטבלאות איפה שצריך, כאילו . . . . ממש ממש יפה.
    •  עכשיו, זה לא הסיפור הזה של PDF ו-Vision, זה משהו אחר - אבל עדיין, עושה אחלה עבודה, גם בלהבין איך הדבר הזה בנוי. 
    • דרך אגב, ה-Source הוא כן PDF, אז אני לא כל כך יודע מה הם עושים מאחורי הקלעים. אולי הם כן מפעילים שם איזשהו Vision, אין לי מושג.
      • אבל זה גם עושה את העבודה של להבין את המבנה של המסמך, וגם את התרגום מעברית לאנגלית.
      • ששוב - זה לא כזה מסובך, כל אחד יכול לתרגם, אבל זה פשוט מלא עבודה שחורה, וזה עושה את זה ממש יפה.
      • אז מגניב.
    • (אלון) כן, זה בכל מיני פורמטים אחרים גם . . . .
    • (דותן) כן, כן.
  • (דותן) אז זהו, נושא הבא - דיברנו קצת על Editors, אז כבר, לא יודע, די לפני הרבה זמן, נולד Editor שנקרא Zed [כבר מזמן Zed's dead, baby]
    • וגם ל-Zed יש “היסטוריית אנשי GitHub" - כמה חבר'ה מ-GitHub, שפיצים כאלה, שבאו ואמרו, אנחנו רוצים לא לעשות עוד סטארטאפ, אנחנו רוצים לבוא ולבנות Editor כזה.
    • אז יצא להם Zed.
    • איך שזה נראה, לפי הקוד והכל, זה לא VS Code Clone
      • זה אומר שהם יצאו מאפס, כתבו...
      • (אלון) התחיל מ-Atom . . . 
      • (דותן) נכון, Atom - אבל בפרויקט הזה הם כאילו התחילו מאפס, בלי שום בסיס, From Scratch, עד ה-Rendering של הפונטים, הכל כתוב מאפס. 
      • הכל ב-Rust, שוב פעם.
    • וזה פרויקט שהתחיל כסוג של VS Code Clone כזה. אולי נגיעות-סיומת של Sublime, נקרא לזה.
    • מרגיש סופר סופר מהיר - בטירוף.
    • ה-Vim Mode שלו, שזה מה שהיה חשוב לי, עובד סביר - לא טוב, אבל סביר.
    • ונראה שעכשיו הם בעצם הלכו לכיוון של AI - זאת אומרת להכניס את זה כ-First class citizen בתוך ה-Editor.
    • אז מי שאוהב את השילוב של AI ו-Performance ב-Editor וכאלה - זה יכול להיות אחלה.
      • לי זה קצת מוריד, הפוקוס על AI
      • אבל זה אני באופן אישי, לא מעיד על כלום.
      • זהו.
    • (רן) הורדתי, התקנתי . . . 
    • (דותן) כן, אין כאילו, אתה לא משלם כלום, אין שום חיסרון, אין התקנה, אין כלום - זה Binary, Super lightweight
      • אתה עושה Double-Click, מתפוצץ לך לפרצוף מרוב שזה מהיר . . .
      • אהבת - אהבת; לא אהבת - סגור.
    • (רן) כאילו, אני גם, אני אנסה את ה-Vim Mode, אבל מהניסיון שלי בדרך כלל, כאילו, Vim Mode . . . 
      • ה-Vim עובד סבבה ב-Terminal, הוא לא עובד לי טוב כל כך ב-UI.
      • כאילו, איכשהו האינטגרציה בין כל שאר הדברים ל-Editor עצמו, לא יודע, לא זורמת לי . . . 
      • אולי זה עניין של להתרגל, אולי זה עניין של למפות את המקשים נכון . . .
    •  אבל כשאני עובד ב-Terminal ואני מפעיל vim - סבבה, כאילו, אני רגיל, “האצבעות רצות”
      • כשאני עובד עם IDE ואני מפעיל Vim Mode, אף פעם לא באמת זרם לי . . . .
    • (דותן) שמע, ב-VS Code, ה-Vim Mode [VSCodeVim] בשבילי הוא מדהים
      • עד כדי כך שהחלטתי באיזשהו שלב להפסיק לתחזק את ה-”Vim-Vim” שלי, את הקונפיגורציה
      • זרקתי את זה לזבל, ובכל מקום - Linux, whatever, לא משנה איפה, אני פשוט פותח VS Code בלי להתבייש, וזהו.
      • וכאילו, אמרתי ביי ל-vim, ו-Neovim וכל זה.
    • (רן) דרך אגב, הם קראו לפרויקט zed.dev - אני תוהה, האם זה איזושהי קריצה לכיוון למשפט האלמותי Zed's dead, שנשמע קצת דומה, מתוך Pulp Fiction?
    • (דותן) יכול להיות שיש שם . . . .יכול להיות.
    • (רן) כן, ולא היו מספיק אמיצים כדי ללכת על Z.dead . . . אבל אולי אחר כך.
    • (דותן) יכול להיות . . . עוד דבר, למי שאוהב, שווה לציין שאם נכנסים לבלוג שלהם, אז אפשר to geek out לגמרי . . . 
      • מדברים עם האלגוריתמים שהשתמשו לעריכת טקסט, והמבני-נתונים המיוחדים שהם השתמשו בהם, ואיך הם עובדים עם tree-sitter, שזו הספרית-Coloring, נדמה לי, שהכי בשימוש היום, ואיך נראה Extension, ולמה הוא עובד ומלא, מלא, מלא חומר הנדסי טכני, ו...
      • וכתוב בצורה מדהימה, כאילו ציורית - עם גרפים, עם כל מה שצריך.
      • באמת אחלה חומר, כאילו, ממש כיף לקרוא.
  • (דותן) זהו, אז האייטם הבא - האמת שבשבילי זה היה ממש וואו: מי שמכיר את הספרייה של ה-UI שנקראת shadcn/ui
    • זה בחור שבנה . . . 
    • (אלון) מה זה shadcn?
    • (דותן) זה השם שלו . . . זה בחור שלא יודעים מיהו, הכינוי שלו זה shadcn
      • הוא בא משום מקום כזה, הוא בנה ספריית UI ל-React, מבוססת Tailwind
      • והיא כל כך טובה שהיא דיברה בשבילו . . . הוא לא היה צריך לקחת . . .  אפס, כאילו, פעילות ב-Social, בכלום.
      • זה פשוט ספרייה שכל כך עשויה טוב, מבחינת הדיוק שלה וה-UI והכל
      • כשאני השתמשתי בה, זה היה Flawless.
      • ואז הרבה, כאילו, הבינו את זה דרך השימוש, דרך הפה-לאוזן
      • והספרייה עצמה - היא ממש התפוצצה, והרבה בזמנו לקחו, כאלה כל מיני ספריות מובילות של React, הרבה פשוט עברו לזה, Wholesale, כאילו, בבת אחת.
      • חבר'ה של Vercel זיהו אותו, וזיהו את הגדילה של הדבר הזה, וקנו אותו - ועכשיו הוא עובד שם
      • וזה עדיין מדהים.
    • עכשיו, אחד הדברים שהיו חסרים ב-Toolkit הזה - וזה באמת רמה של פינוק, כאילו, כי יש שם המון, יש שם כל כך הרבה - זה Sidebar
      • זאת אומרת, בסופו של דבר אתה רוצה לבנות איזשהו SaaS-App כזה, נגיד, או איזושהי אפליקצית-Admin
      • אז אתה רוצה את ה-Shell, אתה רוצה את ה-Menu, אתה רוצה את ה-Sidebar ואתה רוצה את כל מה שמקיף,
      • וזה היה חסר הרבה זמן.
    • ולפחות בשבילי, זה היה אחד הדברים הכי מעצבנים לעשות, במיוחד ב-Tailwind, שאם אתה רוצה לעשות Refactoring, ואולי אז אתה מעדכן ערימות על גבי ערימות של CSS Classes כאלה מגעילים.
    • ואז הוא בנה Sidebar - והוא נתן משהו כמו מאה וריאציות, מספר משוגע . . . 
      • ופשוט היום, אתה לוקח את הדבר הזה, אתה פשוט בונה SaaS עיצוב ברמת-קצה, רק עם הספרייה.
    • עכשיו, אחד הדברים המיוחדים שהוא עשה, שאולי זה שיעור ללמוד בכלל, לבנייה של Open Source וכאלה,
    • אתה לא עושה npm install לקומפוננטים (Components), אתה עושה Copy לקוד שלהם.
    • זאת אומרת, אתה יכול לחשוב שזה כזה מגושם וכאלה - אבל זה פשוט עובד.
      • כי אתה רואה, נגיד, כפתור שאתה אוהב - אתה עושה Copy לקוד של הכפתור אליך.
      • וככה “התקנת”, “במרכאות”, את הכפתור.
    • יש בעיה ענקית לשדרג ולעבור לגרסאות יותר מתקדמות - ממש ידנית אתה צריך לבוא ולהעתיק קוד חדש ולתקן שבירות . . . 
      • אבל לדעתי זה אחד הדברים שפשוט עשו את הפיצוץ של הספרייה, כי ה-Friction להשתמש היה אפס.
    • (רן) כלומר, זה יורד ברקע אחר כך, או שפשוט לא צריך להוריד כלום?
    • (דותן) הקטע ב-Tailwind, בכלל, זה שאתה יכול לבוא, לעשות View source, להעתיק את ה-Source, לזרוק אליך - וממש יש לך הכל, הכל מתקתק, כי זה נטו-CSS.
      • אז הוא לקח את אותה הגישה - שאתה מסתכל, זה React, זה עדיין React - ואתה פשוט עושה Copy למה שאתה אוהב מהאתר שלו
      • אתה עובד ממש עם האתר - כל הזמן האתר פתוח, אתה עושה Copy, זה  . . . 
    • (אלון) כי הבעיה בדברים האלה, אתה אומר “אה, כבר התחלתי, אין לי איך . . .  זה רק להתחיל פרויקט מאפס”.
      • וכשיש לך משהו כאן, אתה אומר “אני רוצה איזה גרף” . . . 
    • (דותן) ממש . . .  הוא ממש פיצח את ה-Friction של הדבר הזה.
    • ובגלל שאנחנו מדברים פה על העתקות של קוד, אז Vercel חיברו לזה כזה כמו משהו שמייצר אפליקציה - לא יודע, LLM-based, whatever, זה לא משנה
      • אבל יש כזה דבר שלוקח את כל shadcn/ui - ויכול לייצר אפליקציות שלמות.
      • כמובן שהכל צריך להיות Hosted ב-Vercel, והכל “Sponsored by Vercel” כזה . . . 
    • זהו, אז מי שרודף אחרי - לפחות אני הרבה זמן רדפתי אחרי ה-Holy Grail
      • “תן לי UI-Toolkit, עזוב אותי, לא רוצה להתעניין בשום דבר, תן לי רק ליצור איזשהו Shell, להתחיל איזשהו פרויקט, ליזום איזה משהו כזה”
      • בלי להתעסק ב-Style, בלי להתעסק להרכיב את החלקים
      • זה הדבר. זה מדהים.
    • זהו.

(רן) טוב. מגניב. תודה רבה. אוקיי, תרצה להוסיף עוד משהו, אדון אלון?
(אלון) לא, אלון כבר מאחר . . . 
(רן) אוקיי אז, ובכן - אנחנו היינו אנחנו, זה היה באמפרס פרק מספר 84 - תודה רבה. המשך יום נעים, וניפגש.

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

אין תגובות:

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