Artwork

תוכן מסופק על ידי רברס עם פלטפורמה. כל תוכן הפודקאסטים כולל פרקים, גרפיקה ותיאורי פודקאסטים מועלים ומסופקים ישירות על ידי רברס עם פלטפורמה או שותף פלטפורמת הפודקאסט שלהם. אם אתה מאמין שמישהו משתמש ביצירה שלך המוגנת בזכויות יוצרים ללא רשותך, אתה יכול לעקוב אחר התהליך המתואר כאן https://he.player.fm/legal.
Player FM - אפליקציית פודקאסט
התחל במצב לא מקוון עם האפליקציה Player FM !

482 Bumpers 84

 
שתפו
 

Manage episode 450707436 series 2497397
תוכן מסופק על ידי רברס עם פלטפורמה. כל תוכן הפודקאסטים כולל פרקים, גרפיקה ותיאורי פודקאסטים מועלים ומסופקים ישירות על ידי רברס עם פלטפורמה או שותף פלטפורמת הפודקאסט שלהם. אם אתה מאמין שמישהו משתמש ביצירה שלך המוגנת בזכויות יוצרים ללא רשותך, אתה יכול לעקוב אחר התהליך המתואר כאן https://he.player.fm/legal.



פרק מספר 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 כמובן בנוי נכון, אבל יותר נכון.
    • אז אי אפשר פשוט לקרוא את ה-Sour
האזנה נעימה ותודה רבה לעופר פורר על התמלול!
  continue reading

154 פרקים

Artwork

482 Bumpers 84

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

98 subscribers

published

iconשתפו
 
Manage episode 450707436 series 2497397
תוכן מסופק על ידי רברס עם פלטפורמה. כל תוכן הפודקאסטים כולל פרקים, גרפיקה ותיאורי פודקאסטים מועלים ומסופקים ישירות על ידי רברס עם פלטפורמה או שותף פלטפורמת הפודקאסט שלהם. אם אתה מאמין שמישהו משתמש ביצירה שלך המוגנת בזכויות יוצרים ללא רשותך, אתה יכול לעקוב אחר התהליך המתואר כאן https://he.player.fm/legal.



פרק מספר 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 כמובן בנוי נכון, אבל יותר נכון.
    • אז אי אפשר פשוט לקרוא את ה-Sour
האזנה נעימה ותודה רבה לעופר פורר על התמלול!
  continue reading

154 פרקים

כל הפרקים

×
 
Loading …

ברוכים הבאים אל Player FM!

Player FM סורק את האינטרנט עבור פודקאסטים באיכות גבוהה בשבילכם כדי שתהנו מהם כרגע. זה יישום הפודקאסט הטוב ביותר והוא עובד על אנדרואיד, iPhone ואינטרנט. הירשמו לסנכרון מנויים במכשירים שונים.

 

מדריך עזר מהיר