פרק מספר 482 של רברס עם פלטפורמה - באמפרס מספר 84: רן, דותן ואלון עם סדרה של קצרצרים שתפסו את תשומת הלב בתקופה האחרונה - בלוגים מעניינים, דברים מ- GitHub, וכל מיני פרויקטים מעניינים או דברים יפים שראינו באינטרנט וחשבנו לאסוף ולהביא אליכם.
לצערנו לא יצאנו להקליט די הרבה זמן, כמעט חצי שנה - אבל הנה עכשיו אנחנו שוב פה.
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
- שדרך אגב - יש שתיים כאלה, אחת מהן ישראלית ושינתה את השם [466 With Itamar from 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-ים - כאילו, ועוד מעט הם יעשו את זה לבד . . .
- (רן) כן, יפה - אז בדיוק בשביל זה הבאתי את הבלוג הבא: אז בחור בשם 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 - ונראה לי שאחרי זה אני אנסה את זה קצת
- (רן) כן. דרך אגב, אני לא ניסיתי, אבל נראה לי שלייצר . . . פעם ראשונה זה סבבה, לבוא ולהוסיף פיצ'רים ולתקן באגים - זה כבר דורש קצת יותר מעורבות טכנית.
- ופה אני בספק עד כמה באמת זה יעבוד.
- אבל שווה לנסות!
- טוב, עד כאן 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 - כי אתה משוגע . . .
- (דותן) לא, האמת זה יצא ככה . . . . זה יצא ככה. זה באמת שילוב משוגע.
- אבל תשמע - יש בזה חוויה.
- ואז בסדר, ה-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 וכאלה,
- הוא בנה את הספרייה בצורה שאתה מעתיק את ה-Sheet שאתה רוצה להשתמש בו.
- ניתן רגע לזה לשקוע . . . .
- אתה לא עושה npm install לקומפוננטים (Components), אתה עושה Copy לקוד שלהם.
- זאת אומרת, אתה יכול לחשוב שזה כזה מגושם וכאלה - אבל זה פשוט עובד.
- כי אתה רואה, נגיד, כפתור שאתה אוהב - אתה עושה Copy לקוד של הכפתור אליך.
- וככה “התקנת”, “במרכאות”, את הכפתור.
- יש בעיה ענקית לשדרג ולעבור לגרסאות יותר מתקדמות - ממש ידנית אתה צריך לבוא ולהעתיק קוד חדש ולתקן שבירות . . .
- אבל לדעתי זה אחד הדברים שפשוט עשו את הפיצוץ של הספרייה, כי ה-Friction להשתמש היה אפס.
- (רן) כלומר, זה יורד ברקע אחר כך, או שפשוט לא צריך להוריד כלום?
- (דותן) הקטע ב-Tailwind, בכלל, זה שאתה יכול לבוא, לעשות View source, להעתיק את ה-Source, לזרוק אליך - וממש יש לך הכל, הכל מתקתק, כי זה נטו-CSS.
- אז הוא לקח את אותה הגישה - שאתה מסתכל, זה React, זה עדיין React - ואתה פשוט עושה Copy למה שאתה אוהב מהאתר שלו
- אתה עובד ממש עם האתר - כל הזמן האתר פתוח, אתה עושה Copy, זה . . .
- (אלון) כי הבעיה בדברים האלה, אתה אומר “אה, כבר התחלתי, אין לי איך . . . זה רק להתחיל פרויקט מאפס”.
- וכשיש לך משהו כאן, אתה אומר “אני רוצה איזה גרף” . . .
- (דותן) ממש . . . הוא ממש פיצח את ה-Friction של הדבר הזה.
- עכשיו שהוא הצטרף ל-Vercel, זה קטע מעניין - אם עכשיו עוקבים אחריו ב-Twitter, אז הוא נהיה ממש ביג -דיל כזה.
- ובגלל שאנחנו מדברים פה על העתקות של קוד, אז Vercel חיברו לזה כזה כמו משהו שמייצר אפליקציה - לא יודע, LLM-based, whatever, זה לא משנה
- אבל יש כזה דבר שלוקח את כל shadcn/ui - ויכול לייצר אפליקציות שלמות.
- כמובן שהכל צריך להיות Hosted ב-Vercel, והכל “Sponsored by Vercel” כזה . . .
- זהו, אז מי שרודף אחרי - לפחות אני הרבה זמן רדפתי אחרי ה-Holy Grail
- “תן לי UI-Toolkit, עזוב אותי, לא רוצה להתעניין בשום דבר, תן לי רק ליצור איזשהו Shell, להתחיל איזשהו פרויקט, ליזום איזה משהו כזה”
- בלי להתעסק ב-Style, בלי להתעסק להרכיב את החלקים
- זה הדבר. זה מדהים.
- זהו.
(רן) טוב. מגניב. תודה רבה. אוקיי, תרצה להוסיף עוד משהו, אדון אלון?
(אלון) לא, אלון כבר מאחר . . .
(רן) אוקיי אז, ובכן - אנחנו היינו אנחנו, זה היה באמפרס פרק מספר 84 - תודה רבה. המשך יום נעים, וניפגש.
האזנה נעימה ותודה רבה לעופר פורר על התמלול!
אין תגובות:
הוסף רשומת תגובה