ועוד מילה על העתיד 😂
https://notes.zachmanson.com/copilot-edited-an-ad-into-my-pr/
בסיפור פה שמשום מה טלגרם לא מציג את התקציר שלו
קופיילוט הוסיף פרסומת ל raycast בתוך הודעת הקומיט
https://notes.zachmanson.com/copilot-edited-an-ad-into-my-pr/
בסיפור פה שמשום מה טלגרם לא מציג את התקציר שלו
קופיילוט הוסיף פרסומת ל raycast בתוך הודעת הקומיט
📌 כל יצרן והסקילז שלו
למינימקס יש ריפו של סקילז למודל שלהם:
https://github.com/MiniMax-AI/skills
זה של אנטרופיק:
https://github.com/anthropics/skills
זה של OpenAI:
https://github.com/openai/skills
וכמובן של Gemini:
https://github.com/google-gemini/gemini-skills
אבל למה כל אחד צריך skill משלו? ומה הם לא מספרים לנו? אז נכון האוסף של Gemini די ריק אבל שלושת האחרים כוללים הרבה דברים משותפים. למה שלא תעבדו יחד?
אני חושב שהסיפור כאן הוא בדיקת הפרומפטים מול המודל ועבודת Prompt Engineering של אותן חברות. נשווה למשל את הסקיל של פיתוח פרונטאנד, ב OpenAI יש רשימה מסודרת של נושאים וכל נושא מחולק לתתי נושאים לדוגמה:
לעומתם אנטרופיק מתארים לנו פרומפט הרבה יותר פתוח ויצירתי:
וכאן יש שאלה, עד כמה אנטרופיק כותבים את הסקיל שיתאים למודלים שלהם או משתמשים בסקיל ובאקוסיסטם כדי לבדל את עצמם.
ככל שהמודלים משתפרים והפערים ביניהם הולכים וקטנים אנחנו נראה יותר עבודת התאמה באקוסיסטם - סקילז, אימון לשימוש בכלים מסוימים, גישה בלעדית ל APIs מסוימים (ג'מיני כבר עושים את זה עם היכולת הבלעדית שלהם לקרוא סרטים מיוטיוב). וככל שהדגש עובר לאקוסיסטם כך נראה יותר אפשרויות ושילובים מעניינים, כמו היכולת לחבר סקיל של אנטרופיק למודל פתוח של מינימקס ולהריץ אותו בתוך סוכן הקידוד של OpenAI.
ובאותו נושא אולמה הודיעו לאחרונה על אינטגרציה מלאה עם VS Code. אפשר היום לבחור מתוך התפריט של VS Code מודלים פתוחים לגמרי שרצים אצלכם על המכונה (או בענן) בנוסף למודלים שמגיעים מקופיילוט.
למינימקס יש ריפו של סקילז למודל שלהם:
https://github.com/MiniMax-AI/skills
זה של אנטרופיק:
https://github.com/anthropics/skills
זה של OpenAI:
https://github.com/openai/skills
וכמובן של Gemini:
https://github.com/google-gemini/gemini-skills
אבל למה כל אחד צריך skill משלו? ומה הם לא מספרים לנו? אז נכון האוסף של Gemini די ריק אבל שלושת האחרים כוללים הרבה דברים משותפים. למה שלא תעבדו יחד?
אני חושב שהסיפור כאן הוא בדיקת הפרומפטים מול המודל ועבודת Prompt Engineering של אותן חברות. נשווה למשל את הסקיל של פיתוח פרונטאנד, ב OpenAI יש רשימה מסודרת של נושאים וכל נושא מחולק לתתי נושאים לדוגמה:
Copy
1. Write in product language, not design commentary.
2. Let the headline carry the meaning.
3. Supporting copy should usually be one short sentence.
4. Cut repetition between sections.
5. Do not include prompt language or design commentary into the UI.
6. Give every section one responsibility: explain, prove, deepen, or convert.
If deleting 30 percent of the copy improves the page, keep deleting.
לעומתם אנטרופיק מתארים לנו פרומפט הרבה יותר פתוח ויצירתי:
Design Thinking
Purpose: What problem does this interface solve? Who uses it?
Tone: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction.
Constraints: Technical requirements (framework, performance, accessibility).
Differentiation: What makes this UNFORGETTABLE? What's the one thing someone will remember?
וכאן יש שאלה, עד כמה אנטרופיק כותבים את הסקיל שיתאים למודלים שלהם או משתמשים בסקיל ובאקוסיסטם כדי לבדל את עצמם.
ככל שהמודלים משתפרים והפערים ביניהם הולכים וקטנים אנחנו נראה יותר עבודת התאמה באקוסיסטם - סקילז, אימון לשימוש בכלים מסוימים, גישה בלעדית ל APIs מסוימים (ג'מיני כבר עושים את זה עם היכולת הבלעדית שלהם לקרוא סרטים מיוטיוב). וככל שהדגש עובר לאקוסיסטם כך נראה יותר אפשרויות ושילובים מעניינים, כמו היכולת לחבר סקיל של אנטרופיק למודל פתוח של מינימקס ולהריץ אותו בתוך סוכן הקידוד של OpenAI.
ובאותו נושא אולמה הודיעו לאחרונה על אינטגרציה מלאה עם VS Code. אפשר היום לבחור מתוך התפריט של VS Code מודלים פתוחים לגמרי שרצים אצלכם על המכונה (או בענן) בנוסף למודלים שמגיעים מקופיילוט.
GitHub
GitHub - MiniMax-AI/skills
Contribute to MiniMax-AI/skills development by creating an account on GitHub.
📌 לא הכי חדש
עוד לא הספקנו להתאושש מהגרסאות המזויפות של LiteLLM וכבר התפרסם שגם axios נפרצו וגרסאות זדוניות עלו ל npm. אם בטעות תתקינו את אקסיוס 1.14.1 או 0.30.4 סקריפט שרץ אחרי התקנה יכניס סוס טרויאני שישתלט מרחוק על המחשב שלכם.
מאחר והגרסאות הזדוניות האלה לרוב מתגלות מהר הבעיה היא בעיקר של אנשים שמפעילים
ב npm נוכל להשתמש בו באמצעות הפקודות הבאות בקובץ
הרבה אנשים מוסיפים גם את הפקודה:
שמונעת מחבילות באופן כללי להריץ סקריפטים, מה שהיה עוזר עם הפרצה הזו לאקסיוס אך לא בטוח שיעזור במקרה הכללי כי תמיד חבילה זדונית יכולה פשוט להריץ קוד זדוני כשטוענים אותה.
בפייתון אין לנו עדיין פתרון מובנה ב pip אבל אם אתם משתמשים ב uv תוכלו להוסיף לקובץ
כדי ש uv יתעלם מחבילות שעוד לא ישבו בריפו שבוע להתייבש.
וכן ברור לגמרי שיש פה טריידאוף. גרסאות חדשות יכולות לתקן בעיות אבטחה בגרסאות ישנות יותר ולפעמים נרצה להתקין מהר מהר גרסה חדשה לפני שבעיית האבטחה תתגלה והאקרים ישתמשו בקוד הישן נגדנו. כרגע עושה רושם שהמתנה עם התקנת גרסאות חדשות היא ברירת מחדל טובה יותר.
עוד לא הספקנו להתאושש מהגרסאות המזויפות של LiteLLM וכבר התפרסם שגם axios נפרצו וגרסאות זדוניות עלו ל npm. אם בטעות תתקינו את אקסיוס 1.14.1 או 0.30.4 סקריפט שרץ אחרי התקנה יכניס סוס טרויאני שישתלט מרחוק על המחשב שלכם.
מאחר והגרסאות הזדוניות האלה לרוב מתגלות מהר הבעיה היא בעיקר של אנשים שמפעילים
npm install axios בדיוק באותם יום או יומיים שהגרסה המזויפת היא החדשה ביותר על npm. מה עושים? אפשר לבדוק כל פעם ב npm מה הגרסה העדכנית, מה השינויים שהיא מביאה וכמה זמן היא באוויר ולבחור לבד גרסה אחת יותר ישנה. אפשר גם לזכור שכלי ניהול חבילות רבים מגיעים עם מנגנון Cooldown מובנה שימנע התקנת גרסאות חדשות מדי.ב npm נוכל להשתמש בו באמצעות הפקודות הבאות בקובץ
~/.npmrc:min-release-age=7 # days
הרבה אנשים מוסיפים גם את הפקודה:
ignore-scripts=true
שמונעת מחבילות באופן כללי להריץ סקריפטים, מה שהיה עוזר עם הפרצה הזו לאקסיוס אך לא בטוח שיעזור במקרה הכללי כי תמיד חבילה זדונית יכולה פשוט להריץ קוד זדוני כשטוענים אותה.
בפייתון אין לנו עדיין פתרון מובנה ב pip אבל אם אתם משתמשים ב uv תוכלו להוסיף לקובץ
~/.config/uv/uv.toml את הפקודה:exclude-newer = "7 days"
כדי ש uv יתעלם מחבילות שעוד לא ישבו בריפו שבוע להתייבש.
וכן ברור לגמרי שיש פה טריידאוף. גרסאות חדשות יכולות לתקן בעיות אבטחה בגרסאות ישנות יותר ולפעמים נרצה להתקין מהר מהר גרסה חדשה לפני שבעיית האבטחה תתגלה והאקרים ישתמשו בקוד הישן נגדנו. כרגע עושה רושם שהמתנה עם התקנת גרסאות חדשות היא ברירת מחדל טובה יותר.
📌 טיפ הנדסת פרומפטים: עדיף להשתמש במה שהמודל מכיר
הטיפ שלי להיום הוא תוצאה של יותר מדי זמן שבזבזתי בריב עם מודל על משהו לכאורה פשוט - ג'מיני של גוגל יודע לגשת לסרטים ביוטיוב ולהסביר מה קורה בסרט ואפילו להוציא תמליל טקסטואלי.
בנסיון הראשון שלי להשתמש בו כדי לתמלל סרטים כתבתי פשוט "תוציא לי את הזמנים מהסרט" אבל התוצאה לא היתה מספיק טובה. לפעמים המודל פשוט ניחש זמנים, לפעמים הוא שבר משפטים במקומות לא נכונים. בעבודת Prompt Engineering בעזרת AI הגעתי לפרומפט ממש טוב שכלל 3 כללי אצבע:
אבל לא משנה מה עשיתי תמיד היו מדי פעם פספוסים.
הפתרון היה לקחת צעד אחורה מכל טכניקות הנדסות הפרומפטים ולתכנן מסלול מחדש. במקום להסביר לו איך צריך לייצר כתוביות אמרתי פשוט: "צור קובץ srt". כך במעט מאוד טוקנים כיוונתי את המודל לעולם תוכן שלם של כללים שכבר היו מוטמעים במודל מנתוני האימון שלו.
מוסר ההשכל היותר חשוב כאן הוא מה לא קרה - לא משנה כמה ביקשתי מסוכני AI לשפר את הפרומפט, אף אחד מהם לא הציע לי למחוק הכל ולמצוא פרומפט אחר שמשיג את אותה מטרה בדרך טובה יותר. את הטיפ כאן של ליצור קובץ srt אף מודל לא חשב לתת, למרות שאם אני שואל כל מודל אם זה רעיון טוב הם כולם יעופו עליו.
הטיפ שלי להיום הוא תוצאה של יותר מדי זמן שבזבזתי בריב עם מודל על משהו לכאורה פשוט - ג'מיני של גוגל יודע לגשת לסרטים ביוטיוב ולהסביר מה קורה בסרט ואפילו להוציא תמליל טקסטואלי.
בנסיון הראשון שלי להשתמש בו כדי לתמלל סרטים כתבתי פשוט "תוציא לי את הזמנים מהסרט" אבל התוצאה לא היתה מספיק טובה. לפעמים המודל פשוט ניחש זמנים, לפעמים הוא שבר משפטים במקומות לא נכונים. בעבודת Prompt Engineering בעזרת AI הגעתי לפרומפט ממש טוב שכלל 3 כללי אצבע:
1. **Audio Analysis**: You need to actually listen to the audio and not rely only on the existing youtube captions. YouTube transcriptions can be inaccurate and is not suitable for our requirements.
2. **Language Focus**: The provided content might include text in other languages in the beginning or the end (before or after the actual content). Only extract the main video in the clip language. You can ignore prefix or suffix if they're in another language.
3. **Phrase Segmentation Rules**:
- **Mandatory splits**: Always split before coordinating conjunctions (and, but, or, so)
- Split at clause boundaries (before subordinating conjunctions, after complete thoughts)
- Keep grammatically linked words together (modal + verb, adjective + noun, etc.)
- Target 4-7 words per phrase for optimal memorization
- Each phrase should demonstrate one primary grammatical concept
- Break at natural pauses that would occur in speech
אבל לא משנה מה עשיתי תמיד היו מדי פעם פספוסים.
הפתרון היה לקחת צעד אחורה מכל טכניקות הנדסות הפרומפטים ולתכנן מסלול מחדש. במקום להסביר לו איך צריך לייצר כתוביות אמרתי פשוט: "צור קובץ srt". כך במעט מאוד טוקנים כיוונתי את המודל לעולם תוכן שלם של כללים שכבר היו מוטמעים במודל מנתוני האימון שלו.
מוסר ההשכל היותר חשוב כאן הוא מה לא קרה - לא משנה כמה ביקשתי מסוכני AI לשפר את הפרומפט, אף אחד מהם לא הציע לי למחוק הכל ולמצוא פרומפט אחר שמשיג את אותה מטרה בדרך טובה יותר. את הטיפ כאן של ליצור קובץ srt אף מודל לא חשב לתת, למרות שאם אני שואל כל מודל אם זה רעיון טוב הם כולם יעופו עליו.
❤3👍1
📌 זהירות: תפיסת חריג מבלוק ברובי
הקוד הבא ברובי זורק Exception מתוך הלולאה ותופס אותה, וקל לראות שזה עובד:
אבל חשוב לא להתבלבל, המבנה של rescue אחרי בלוק לא מבטיח שכל Exception שייזרק מהבלוק באמת ייתפס. הדוגמה הקלאסית היא קוד שנשלח להרצה ב Thread נפרד, וזה נראה ככה:
פונקציית pmap שהגדרתי על Array שולחת את הבלוק לרוץ ב thread נפרד ולכן ה Exception שהבלוק זורק לא נתפס ב Thread הראשי. דרך אחת לטפל בקוד כזה היא להקפיד להעביר את ה Exception ל Thread הראשי מתוך pmap, כלומר:
והפעם הפעלה תדפיס את השגיאה:
הקוד הבא ברובי זורק Exception מתוך הלולאה ותופס אותה, וקל לראות שזה עובד:
begin
[1, 2, 3].each do |i|
raise 'Stop' if i.even?
end
rescue => e
puts "Error: #{e.message}"
end
אבל חשוב לא להתבלבל, המבנה של rescue אחרי בלוק לא מבטיח שכל Exception שייזרק מהבלוק באמת ייתפס. הדוגמה הקלאסית היא קוד שנשלח להרצה ב Thread נפרד, וזה נראה ככה:
class Array
def pmap(&block)
each do |i|
Thread.new { block.call(i) }
end
self
end
end
begin
[1, 2, 3].pmap do |i|
raise 'Stop' if i.even?
end
rescue => e
puts "Error: #{e.message}"
end
פונקציית pmap שהגדרתי על Array שולחת את הבלוק לרוץ ב thread נפרד ולכן ה Exception שהבלוק זורק לא נתפס ב Thread הראשי. דרך אחת לטפל בקוד כזה היא להקפיד להעביר את ה Exception ל Thread הראשי מתוך pmap, כלומר:
class Array
def pmap(&block)
threads = each.map do |i|
Thread.new do
block.call(i)
end
end
threads.each(&:join)
threads.each(&:value)
end
end
והפעם הפעלה תדפיס את השגיאה:
#<Thread:0x000000012233cbd8 a.rb:4 run> terminated with exception (report_on_exception is true):
a.rb:15:in `block in <main>': Stop (RuntimeError)
from a.rb:5:in `block (2 levels) in pmap'
Error: Stop
📌 סיכום שנה ראשונה של langlets
השבוע חידשתי את הדומיין langlets.app וכך נזכרתי שעברה שנה מאז שהעליתי אותו לאוויר, וזו הזדמנות מצוינת לסקירה של הפרויקט ועל התרומה הייחודית של AI לסיפור שלו.
✏ מה זה לנגלטס
דואולינגו תמיד היה אפליקציית לימוד השפות האהובה עליי. דואולינגו מושלם כדי ללמוד את המילים הראשונות בשפה טבעית חדשה ולהגיע מאפס למשפטים פשוטים דרך תרגול ומשחק. מאוד נהניתי מהמשחקים שם ולמדתי בדואולינגו צרפתית, ספרדית, רוסית, ערבית, קצת יוונית וקצת רומנית. בכל המקרים התחלתי ללמוד מילים מהשניה הראשונה שהפעלתי את האפליקציה. בשבילי דואולינגו פתח דלת לעולם של לימוד שפות שלא היה נגיש עבורי לפני.
הבעיה שנתקלתי בה בכל שפה שהתחלתי ללמוד בדואולינגו היתה בעיית הצעד הבא, כלומר אחרי שלושה-ארבעה חודשים של לימוד שפה התרגילים בדואולינגו כבר לא לימדו אותי אוצר מילים שימושי והחל מהנקודה הזאת בשביל להתקדם בשפה צריך לעבור לתוכן יותר רציני - ספרים, וידאו, פודקסטים. דברים אמיתיים. אבל מי שמתרגל ללמוד דרך משחקים חמודים מגלה שלעבור לקרוא ספר או לראות וידאו זה מאתגר ולא תמיד זוכרים את המילים כמו שצריך.
וכך נולד langlets - מערכת שהופכת כל תוכן אמיתי למשחקי לימוד בסגנון דואולינגו.
✏ מה עובד
לנגלטס מכיל Pipeline שיודע לקחת כל סרט מיוטיוב ולבנות ממנו סדרה של נתונים ללומדי שפה:
1. תמליל מלא בשפה המקורית של הוידאו
2. תרגום שנשמע טבעי לשפה אחרת
3. התאמת מילים - כלומר התאמת כל חלק בטקסט המקורי למילה המקבילה לו במשפט התרגום
4. חלוקת הסרט לקטעים קצרים שמתאימים ללמידה.
5. בניית תרגילי אוצר מילים בסגנון דואולינגו מתוך הטקסט של הוידאו
בזכות Ollama ומודלים פתוחים והנדיבות של גוגל שנותנים 20 בקשות ביום בחינם ל Gemini Flash אפשר לעבד עד 20 סרטים ביום בחינם לגמרי. זה אולי לא מספיק בשביל לתת לכל אחד להעלות סרטים למערכת אבל בהחלט מספיק בשביל להתחיל לבנות ספריית תכנים לשפות שאני רוצה ללמוד.
התחלתי להכניס למערכת שירים בצרפתית, ספרדית וערבית ואתם יכולים למצוא אותם בדף הראשי של האתר ולאחרונה עברתי להוסיף סדרות רשת קצרות, בערבית שמתי 10 קליפים מתוך حياة عيلتنا (סדרת רשת מצוירת ירדנית), בצרפתית 13 קטעים מתוך הסדרה bref (מהירה, הרבה סלנג, לא היה קל לשכנע את ה AI לשתף פעולה) ובספרדית 5 ספורי ילדים.
✏ מה התוכניות להמשך
אמנם לנגלטס באוויר שנה אבל רק ממש לפני כמה שבועות עברתי ל Ollama ומודלים חופשיים וכך נפתחה לי האופציה להגביר את קצב העלאת הסרטים. עד המעבר ל Ollama כל סרט שהעליתי עלה 2-3 ש"ח, שזה לא נורא אבל עדיין ההבדל בין 2-3 ש"ח לחינם הוא משמעותי, במיוחד בפרויקט פנאי שלא מכניס שקל.
לכן הדבר הראשון שאני רוצה שם זה פשוט להוסיף עוד תכנים - בדגש על סדרות רשת קצרות כי גיליתי שזו הדרך שהכי כיף לי ללמוד בה. עם התכנים אצטרך למצוא דרך יותר טובה להציג אותם ולארגן את עמוד הבית ואולי לייצר מערכת המלצות.
אתגר שני הוא בתרגולים עצמם. הם כבר עובדים טוב ועוזרים לי להשתפר בשפות אבל אני רחוק מרמת המשחקיות וההתמכרות של דואולינגו.
✏ רוצים לעזור? אתם מוזמנים
לנגלטס הוא פרויקט קוד פתוח. אם יש לכם רעיונות לשיפור או סתם רוצים לראות איך זה עובד אפשר למצוא את הקוד בגיטהאב בקישור הזה:
https://github.com/ynonp/langlets-rails
השבוע חידשתי את הדומיין langlets.app וכך נזכרתי שעברה שנה מאז שהעליתי אותו לאוויר, וזו הזדמנות מצוינת לסקירה של הפרויקט ועל התרומה הייחודית של AI לסיפור שלו.
✏ מה זה לנגלטס
דואולינגו תמיד היה אפליקציית לימוד השפות האהובה עליי. דואולינגו מושלם כדי ללמוד את המילים הראשונות בשפה טבעית חדשה ולהגיע מאפס למשפטים פשוטים דרך תרגול ומשחק. מאוד נהניתי מהמשחקים שם ולמדתי בדואולינגו צרפתית, ספרדית, רוסית, ערבית, קצת יוונית וקצת רומנית. בכל המקרים התחלתי ללמוד מילים מהשניה הראשונה שהפעלתי את האפליקציה. בשבילי דואולינגו פתח דלת לעולם של לימוד שפות שלא היה נגיש עבורי לפני.
הבעיה שנתקלתי בה בכל שפה שהתחלתי ללמוד בדואולינגו היתה בעיית הצעד הבא, כלומר אחרי שלושה-ארבעה חודשים של לימוד שפה התרגילים בדואולינגו כבר לא לימדו אותי אוצר מילים שימושי והחל מהנקודה הזאת בשביל להתקדם בשפה צריך לעבור לתוכן יותר רציני - ספרים, וידאו, פודקסטים. דברים אמיתיים. אבל מי שמתרגל ללמוד דרך משחקים חמודים מגלה שלעבור לקרוא ספר או לראות וידאו זה מאתגר ולא תמיד זוכרים את המילים כמו שצריך.
וכך נולד langlets - מערכת שהופכת כל תוכן אמיתי למשחקי לימוד בסגנון דואולינגו.
✏ מה עובד
לנגלטס מכיל Pipeline שיודע לקחת כל סרט מיוטיוב ולבנות ממנו סדרה של נתונים ללומדי שפה:
1. תמליל מלא בשפה המקורית של הוידאו
2. תרגום שנשמע טבעי לשפה אחרת
3. התאמת מילים - כלומר התאמת כל חלק בטקסט המקורי למילה המקבילה לו במשפט התרגום
4. חלוקת הסרט לקטעים קצרים שמתאימים ללמידה.
5. בניית תרגילי אוצר מילים בסגנון דואולינגו מתוך הטקסט של הוידאו
בזכות Ollama ומודלים פתוחים והנדיבות של גוגל שנותנים 20 בקשות ביום בחינם ל Gemini Flash אפשר לעבד עד 20 סרטים ביום בחינם לגמרי. זה אולי לא מספיק בשביל לתת לכל אחד להעלות סרטים למערכת אבל בהחלט מספיק בשביל להתחיל לבנות ספריית תכנים לשפות שאני רוצה ללמוד.
התחלתי להכניס למערכת שירים בצרפתית, ספרדית וערבית ואתם יכולים למצוא אותם בדף הראשי של האתר ולאחרונה עברתי להוסיף סדרות רשת קצרות, בערבית שמתי 10 קליפים מתוך حياة عيلتنا (סדרת רשת מצוירת ירדנית), בצרפתית 13 קטעים מתוך הסדרה bref (מהירה, הרבה סלנג, לא היה קל לשכנע את ה AI לשתף פעולה) ובספרדית 5 ספורי ילדים.
✏ מה התוכניות להמשך
אמנם לנגלטס באוויר שנה אבל רק ממש לפני כמה שבועות עברתי ל Ollama ומודלים חופשיים וכך נפתחה לי האופציה להגביר את קצב העלאת הסרטים. עד המעבר ל Ollama כל סרט שהעליתי עלה 2-3 ש"ח, שזה לא נורא אבל עדיין ההבדל בין 2-3 ש"ח לחינם הוא משמעותי, במיוחד בפרויקט פנאי שלא מכניס שקל.
לכן הדבר הראשון שאני רוצה שם זה פשוט להוסיף עוד תכנים - בדגש על סדרות רשת קצרות כי גיליתי שזו הדרך שהכי כיף לי ללמוד בה. עם התכנים אצטרך למצוא דרך יותר טובה להציג אותם ולארגן את עמוד הבית ואולי לייצר מערכת המלצות.
אתגר שני הוא בתרגולים עצמם. הם כבר עובדים טוב ועוזרים לי להשתפר בשפות אבל אני רחוק מרמת המשחקיות וההתמכרות של דואולינגו.
✏ רוצים לעזור? אתם מוזמנים
לנגלטס הוא פרויקט קוד פתוח. אם יש לכם רעיונות לשיפור או סתם רוצים לראות איך זה עובד אפשר למצוא את הקוד בגיטהאב בקישור הזה:
https://github.com/ynonp/langlets-rails
Langlets
Langlets - Learn Languages Through Interactive Video Clips
Learn languages through interactive video clips. Practice listening, speaking, and comprehension with songs, TV shows, and real-world content powered by AI.
👏3
📌 חמש תקריות אבטחה הקשורות לסוכני AI שחשוב להכיר
כל טכנולוגיה חדשה מביאה איתה התרגשות, יכולות חדשות, הבנה לא מלאה של עולם התוכן ולחץ לאימוץ מהיר מדי - גורמים שיחד מייצרים אינסוף עבודה לאנשי אבטחת מידע. בואו נראה 5 דוגמאות מהתקופה האחרונה שנותנות טעימה מהאתגרים שמצפים לנו בשנים הקרובות.
✏ דליפת הקוד של קלוד קוד דרך sourcemap
ממש לפני כמה ימים אנטרופיק העלו גרסה חדשה של קלוד קוד. קלוד קוד כתוב באלקטרון ורץ עם bun, אפליקציות כאלה בדרך כלל עוברות מיניפיקציה שהופכת את הקוד ללא קריא לבני אדם אבל בגלל טעות של סוכן הקידוד הגרסה הפעם כללה גם את הקוד המקורי (סוג של debug build). האינטרנט חגג וקוד המקור המלא של קלוד קוד זמין היום להורדה מהמון אתרים אותם אנטרופיק מנסה להוריד מהרשת.
אנטרופיק מפורסמים בתהליך פיתוח בו סוכני הקידוד כותבים את הקוד משלב הרעיון עד פרודקשן. האם גם בני אדם היו יכולים לעשות טעות דומה ולא לשים לב שמעלים גרסה עם קוד המקור המלא? כנראה שכן. קרו מקרים. ועדיין אין ספק שכשכל תהליך הפיתוח עובר להילוך מהיר קל יותר לעשות טעויות.
מקור לקריאה נוספת:
https://dev.to/varshithvhegde/the-great-claude-code-leak-of-2026-accident-incompetence-or-the-best-pr-stunt-in-ai-history-3igm
✏ פרצת אבטחה ב Code Rabbit חשפה מידע סודי
קודרביט הוא סוכן חכם שכותב Code Reviews, כלומר הוא קורא קוד (PR-ים) שאנשים מעלים לגיטהאב ומסביר מה טוב ומה צריך לשפר בהם. קודרביט מאפשר להריץ כלי אנאליזה אוטומטיים על הקוד. אחד הכלים הנתמכים נקרא rubocop ותפקידו לבדוק קוד רובי. ופה יש שתי בעיות:
1. קודרביט הריץ את הכלי רובוקופ על מכונה פנימית שלהם, לה יש הרשאות והגדרת מפתחות API בתור משתני סביבה שמאפשרים לגשת להמון תשתית פנימית של קוד רביט.
2. רובוקופ מאפשר לטעון Extensions שהם קבצי Ruby מתוך מאגר הקוד הנבדק.
חיבור שני הדברים אפשר לחוקרי אבטחה להריץ כל קוד שלהם על המכונה שמריצה את הסוכן של קודרביט ודרכה להגיע לכל תשתיות הענן של קודרביט עצמם.
מקור לקריאה נוספת:
https://kudelskisecurity.com/research/how-we-exploited-coderabbit-from-a-simple-pr-to-rce-and-write-access-on-1m-repositories
✏ מתקפת הזרקת פרומפט EchoLeak לקופיילוט
אתגר עצום בהרצת סוכן AI שמטפל לך בעניינים במחשב הוא שאותו סוכן חשוף להמון מידע שעלול להיות זדוני, ולכן סוכנים כאלה צריכים מנגנוני סינון. במתקפת EchoLeak חוקרים הראו איך הם עוקפים את מנגנוני הסינון של Copilot 365 (זה של האופיס) כדי להזריק הוראות זדוניות לקופיילוט דרך אימייל. המהלך עובד כך:
1. תוקף שולח אימייל עם הוראות זדוניות בכתב בלתי נראה.
2. קופיילוט 365 נשלח לבדוק אימיילים או לסכם אימיילים מהתיבה.
3. קופיילוט עוקב אחר ההוראות הזדוניות ושולח סיסמאות ומידע רגיש לתוקף.
מתקפה זו מזכירה לנו את הבעיה בהגנה מבוססת סינון - מנגנוני סינון אפשר לעקוף ובהנתן תמריץ מספיק חזק מישהו בוודאות ימצא מעקף. לקח לנו עשרות שנים לנצח מתקפות SQL Injection וזמן דומה לנצח מתקפות JavaScript Injection (XSS). כמה זמן ייקח לנצח את מתקפות ה Prompt Injection?
קריאה נוספת:
https://www.forcepoint.com/blog/insights/echoleak-m365-copilot-attack
✏ בסיס הנתונים המלא של מולטבוק היה זמין ברשת
נכון, הם לא הראשונים. גם בני אדם השאירו בסיסי נתונים (במיוחד רדיס) וקבצים על AWS פתוחים לעולם, אבל כמו שכתבתי על דליפת קוד המקור, סוכני קידוד פשוט עושים יותר וזהירים פחות ולכן עושים הרבה יותר טעויות.
מולטבוק, הרשת החברתית של סוכני AI, נכתבה במלואה על ידי סוכן קידוד. בסיס הנתונים שלהם הכיל מיליון וחצי מפתחות API ובזכות העדר מוחלט של בקרת גישה לקריאה כל אחד יכל להכנס לחשבון של כל אחד מהבוטים הרשומים למערכת.
למידע נוסף:
https://www.wiz.io/blog/exposed-moltbook-database-reveals-millions-of-api-keys
✏ סוכן תמיכה של מטא שכנע עובד לבטל מדיניות אבטחה
המקרה הבא מעניין בגלל הדינמיקה הארגונית שלו. עובד אחד מפרסם שאלה בפורום פנימי ב meta, עובד אחר ביקש מה AI לענות לעובד הראשון בפרטי אבל הסוכן פרסם את התשובה בפורום לכולם. עובד שלישי ראה את התשובה (שמכילה מידע שגוי) וניסה ללכת לפי ההוראות שבה. אותן הוראות גרמו לביטול חומת אבטחה ובכך בעצם ניתנו הרשאות יתר לקבוצה גדולה של עובדים שלא היו צריכים לקבל הרשאות אלה.
כל טכנולוגיה חדשה מביאה איתה התרגשות, יכולות חדשות, הבנה לא מלאה של עולם התוכן ולחץ לאימוץ מהיר מדי - גורמים שיחד מייצרים אינסוף עבודה לאנשי אבטחת מידע. בואו נראה 5 דוגמאות מהתקופה האחרונה שנותנות טעימה מהאתגרים שמצפים לנו בשנים הקרובות.
✏ דליפת הקוד של קלוד קוד דרך sourcemap
ממש לפני כמה ימים אנטרופיק העלו גרסה חדשה של קלוד קוד. קלוד קוד כתוב באלקטרון ורץ עם bun, אפליקציות כאלה בדרך כלל עוברות מיניפיקציה שהופכת את הקוד ללא קריא לבני אדם אבל בגלל טעות של סוכן הקידוד הגרסה הפעם כללה גם את הקוד המקורי (סוג של debug build). האינטרנט חגג וקוד המקור המלא של קלוד קוד זמין היום להורדה מהמון אתרים אותם אנטרופיק מנסה להוריד מהרשת.
אנטרופיק מפורסמים בתהליך פיתוח בו סוכני הקידוד כותבים את הקוד משלב הרעיון עד פרודקשן. האם גם בני אדם היו יכולים לעשות טעות דומה ולא לשים לב שמעלים גרסה עם קוד המקור המלא? כנראה שכן. קרו מקרים. ועדיין אין ספק שכשכל תהליך הפיתוח עובר להילוך מהיר קל יותר לעשות טעויות.
מקור לקריאה נוספת:
https://dev.to/varshithvhegde/the-great-claude-code-leak-of-2026-accident-incompetence-or-the-best-pr-stunt-in-ai-history-3igm
✏ פרצת אבטחה ב Code Rabbit חשפה מידע סודי
קודרביט הוא סוכן חכם שכותב Code Reviews, כלומר הוא קורא קוד (PR-ים) שאנשים מעלים לגיטהאב ומסביר מה טוב ומה צריך לשפר בהם. קודרביט מאפשר להריץ כלי אנאליזה אוטומטיים על הקוד. אחד הכלים הנתמכים נקרא rubocop ותפקידו לבדוק קוד רובי. ופה יש שתי בעיות:
1. קודרביט הריץ את הכלי רובוקופ על מכונה פנימית שלהם, לה יש הרשאות והגדרת מפתחות API בתור משתני סביבה שמאפשרים לגשת להמון תשתית פנימית של קוד רביט.
2. רובוקופ מאפשר לטעון Extensions שהם קבצי Ruby מתוך מאגר הקוד הנבדק.
חיבור שני הדברים אפשר לחוקרי אבטחה להריץ כל קוד שלהם על המכונה שמריצה את הסוכן של קודרביט ודרכה להגיע לכל תשתיות הענן של קודרביט עצמם.
מקור לקריאה נוספת:
https://kudelskisecurity.com/research/how-we-exploited-coderabbit-from-a-simple-pr-to-rce-and-write-access-on-1m-repositories
✏ מתקפת הזרקת פרומפט EchoLeak לקופיילוט
אתגר עצום בהרצת סוכן AI שמטפל לך בעניינים במחשב הוא שאותו סוכן חשוף להמון מידע שעלול להיות זדוני, ולכן סוכנים כאלה צריכים מנגנוני סינון. במתקפת EchoLeak חוקרים הראו איך הם עוקפים את מנגנוני הסינון של Copilot 365 (זה של האופיס) כדי להזריק הוראות זדוניות לקופיילוט דרך אימייל. המהלך עובד כך:
1. תוקף שולח אימייל עם הוראות זדוניות בכתב בלתי נראה.
2. קופיילוט 365 נשלח לבדוק אימיילים או לסכם אימיילים מהתיבה.
3. קופיילוט עוקב אחר ההוראות הזדוניות ושולח סיסמאות ומידע רגיש לתוקף.
מתקפה זו מזכירה לנו את הבעיה בהגנה מבוססת סינון - מנגנוני סינון אפשר לעקוף ובהנתן תמריץ מספיק חזק מישהו בוודאות ימצא מעקף. לקח לנו עשרות שנים לנצח מתקפות SQL Injection וזמן דומה לנצח מתקפות JavaScript Injection (XSS). כמה זמן ייקח לנצח את מתקפות ה Prompt Injection?
קריאה נוספת:
https://www.forcepoint.com/blog/insights/echoleak-m365-copilot-attack
✏ בסיס הנתונים המלא של מולטבוק היה זמין ברשת
נכון, הם לא הראשונים. גם בני אדם השאירו בסיסי נתונים (במיוחד רדיס) וקבצים על AWS פתוחים לעולם, אבל כמו שכתבתי על דליפת קוד המקור, סוכני קידוד פשוט עושים יותר וזהירים פחות ולכן עושים הרבה יותר טעויות.
מולטבוק, הרשת החברתית של סוכני AI, נכתבה במלואה על ידי סוכן קידוד. בסיס הנתונים שלהם הכיל מיליון וחצי מפתחות API ובזכות העדר מוחלט של בקרת גישה לקריאה כל אחד יכל להכנס לחשבון של כל אחד מהבוטים הרשומים למערכת.
למידע נוסף:
https://www.wiz.io/blog/exposed-moltbook-database-reveals-millions-of-api-keys
✏ סוכן תמיכה של מטא שכנע עובד לבטל מדיניות אבטחה
המקרה הבא מעניין בגלל הדינמיקה הארגונית שלו. עובד אחד מפרסם שאלה בפורום פנימי ב meta, עובד אחר ביקש מה AI לענות לעובד הראשון בפרטי אבל הסוכן פרסם את התשובה בפורום לכולם. עובד שלישי ראה את התשובה (שמכילה מידע שגוי) וניסה ללכת לפי ההוראות שבה. אותן הוראות גרמו לביטול חומת אבטחה ובכך בעצם ניתנו הרשאות יתר לקבוצה גדולה של עובדים שלא היו צריכים לקבל הרשאות אלה.
DEV Community
The Great Claude Code Leak of 2026: Accident, Incompetence, or the Best PR Stunt in AI History?
TL;DR: On March 31, 2026, Anthropic accidentally shipped the entire source code of Claude Code to the...
👍2
הבעיה כאן היא הפוכה. אנחנו רגילים לשמוע על סוכן AI שעושה פעולות לא הגיוניות ושובר דברים. כאן יש לנו בן אדם שהיו לו הרשאות לבצע פעולה מסוימת, ומזה אנחנו לומדים שהוא היה אמור לדעת מה הוא עושה, ובכל זאת עשה את אותה פעולה מסוכנת שביטלה מנגנוני הגנה פנימיים בחברה. האם סוכני AI הולכים להפוך מתקפות Social Engineering לקלות יותר? במובן מסוים כן. כשהסוכן מפרסם מידע שגוי ומטעה בתוך פורומים פנימיים העובדים נוטים להאמין ולנסות אפילו אם העצה לא נשמעת הגיונית.
לקריאה נוספת על האירוע:
https://agatsoftware.com/blog/ai-agent-security-meta-rogue-agent-incident/
לקריאה נוספת על האירוע:
https://agatsoftware.com/blog/ai-agent-security-meta-rogue-agent-incident/
Enterprise AI Security & Unified Communications Compliance | Agat
AI Agent Security: Meta's Rogue AI Agent Incident
AI agent security failed at Meta when a rogue agent exposed sensitive internal data to unauthorized employees for two hours. Here's what it means for your enterprise.
👍1
📌 כזה ניסיתי: פיתוח צד-שרת עם vavite
אם אתם מפתחי צד לקוח או Full Stack סיכוי טוב מאוד שאתם עובדים עם next.js או עם vite. נקסט נותנת דרך מהירה מאוד לבנות אפליקציות ריאקט בלי לחשוב על הפרטים ו vite מציעה פתרון יותר גנרי לכל פריימוורק צד לקוח שנרצה. שני כלים אלה השתלטו על השוק שרק לפני כמה שנים עבד בצורה כמעט בלעדית עם webpack.
בעוד ש next.js מאפשרת לכתוב גם קוד צד שרת וגם קוד צד לקוח, הפוקוס של vite הוא על צד לקוח בלבד. ומה קורה למי שרוצה לפתח קוד צד שרת node.js למשל עם express אבל בלי React? פה עדיין אין אפשרויות טובות:
1. אפשר להשאר עם node.js ולהשתמש בכלי כמו nodemon כדי לרענן את השרת אחרי כל שינוי בקוד ובכלי כמו ts-node בשביל להריץ את הטייפסקריפט (וכן נוד מתקרב לשם עם מצב watch מובנה והפשטת טיפוסי טייפסקריפט אבל אנחנו עדיין לא בעולם של ויט).
2. אפשר לעבור ל deno או bun שיודעים להריץ יופי טייפסקריפט מהקופסה אבל עלולים לסבך אותנו עם חבילות מסוימות שלא נתמכות (בעיקר דינו).
"לך מהר", או בשמו המקצועי vavite הוא פלאגין ל vite שמציע חווית פיתוח צד שרת עם ויט שעובדת טוב כמו פיתוח צד לקוח עם vite וגם מאפשרת הרחבות כמו Server Side Rendering למי שרוצה לבנות לעצמו next.js פשוט ומהיר יותר.
הקישור לפרויקט הוא:
https://github.com/cyco130/vavite
ואפשר למצוא המון דוגמאות בתיקיית הדוגמאות שלהם כאן:
https://github.com/cyco130/vavite/tree/main/examples
בשביל הניסוי התחלתי פרויקט vite חדש והוספתי את vavite:
לאחר מכן יצרתי לפי ההוראות קובץ vite.config.ts עם התוכן הבא:
וקובץ src/entry.server.ts עם התוכן הבא:
הפעלת שרת הפיתוח עם:
ואנחנו באוויר. התוצאה:
1. נתיב ראשי שמחזיר את ה JSON שמוגדר בקוד.
2. שגיאות קומפילציה אם אני טועה בטייפסקריפט, גם בדפדפן וגם במסוף.
3. טעינה אוטומטית אחרי כל שינוי.
אחרי שמסיימים פיתוח מפעילים
בתיקיית הדוגמאות שלהם יש עוד המון דוגמאות להמון פריימוורקים וגם דוגמה לשילוב ריאקט ופיתוח SSR מאפס. סך הכל נראה יופי של כלי לאנשים שרוצים שליטה מלאה על בניית קוד צד השרת שלהם בלי להתפשר על חווית פיתוח מהירה.
אם אתם מפתחי צד לקוח או Full Stack סיכוי טוב מאוד שאתם עובדים עם next.js או עם vite. נקסט נותנת דרך מהירה מאוד לבנות אפליקציות ריאקט בלי לחשוב על הפרטים ו vite מציעה פתרון יותר גנרי לכל פריימוורק צד לקוח שנרצה. שני כלים אלה השתלטו על השוק שרק לפני כמה שנים עבד בצורה כמעט בלעדית עם webpack.
בעוד ש next.js מאפשרת לכתוב גם קוד צד שרת וגם קוד צד לקוח, הפוקוס של vite הוא על צד לקוח בלבד. ומה קורה למי שרוצה לפתח קוד צד שרת node.js למשל עם express אבל בלי React? פה עדיין אין אפשרויות טובות:
1. אפשר להשאר עם node.js ולהשתמש בכלי כמו nodemon כדי לרענן את השרת אחרי כל שינוי בקוד ובכלי כמו ts-node בשביל להריץ את הטייפסקריפט (וכן נוד מתקרב לשם עם מצב watch מובנה והפשטת טיפוסי טייפסקריפט אבל אנחנו עדיין לא בעולם של ויט).
2. אפשר לעבור ל deno או bun שיודעים להריץ יופי טייפסקריפט מהקופסה אבל עלולים לסבך אותנו עם חבילות מסוימות שלא נתמכות (בעיקר דינו).
"לך מהר", או בשמו המקצועי vavite הוא פלאגין ל vite שמציע חווית פיתוח צד שרת עם ויט שעובדת טוב כמו פיתוח צד לקוח עם vite וגם מאפשרת הרחבות כמו Server Side Rendering למי שרוצה לבנות לעצמו next.js פשוט ומהיר יותר.
הקישור לפרויקט הוא:
https://github.com/cyco130/vavite
ואפשר למצוא המון דוגמאות בתיקיית הדוגמאות שלהם כאן:
https://github.com/cyco130/vavite/tree/main/examples
בשביל הניסוי התחלתי פרויקט vite חדש והוספתי את vavite:
$ npm create vite@latest server-demo
$ cd server-demo
$ npm install --save-dev vavite
$ npm install express @types/express
לאחר מכן יצרתי לפי ההוראות קובץ vite.config.ts עם התוכן הבא:
import { defineConfig } from "vite";
import { vavite } from "vavite";
export default defineConfig({
appType: "custom",
builder: {
async buildApp(builder) {
await builder.build(builder.environments.ssr!);
},
},
plugins: [vavite()],
});וקובץ src/entry.server.ts עם התוכן הבא:
import express from "express";
const text: string = "Hello New World";
const app = express();
app.get("/", async (req, res) => {
res.send({ text });
});
// Default export a Connect-compatible handler for dev
export default app;
if (import.meta.env.COMMAND === "build") {
// Start the Express server in production mode
app.listen(3000, () => {
console.log("Server is running on http://localhost:3000");
});
}
if (import.meta.hot) {
import.meta.hot.accept();
}
הפעלת שרת הפיתוח עם:
$ npm run dev
ואנחנו באוויר. התוצאה:
1. נתיב ראשי שמחזיר את ה JSON שמוגדר בקוד.
2. שגיאות קומפילציה אם אני טועה בטייפסקריפט, גם בדפדפן וגם במסוף.
3. טעינה אוטומטית אחרי כל שינוי.
אחרי שמסיימים פיתוח מפעילים
npm run build והפלאגין הופך את קבצי הטייפסקריפט לקובץ dist/entry.server.js אותו אפשר להפעיל ישירות עם node dist/entry.server.js או ליצור קיצור דרך מה package.json.בתיקיית הדוגמאות שלהם יש עוד המון דוגמאות להמון פריימוורקים וגם דוגמה לשילוב ריאקט ופיתוח SSR מאפס. סך הכל נראה יופי של כלי לאנשים שרוצים שליטה מלאה על בניית קוד צד השרת שלהם בלי להתפשר על חווית פיתוח מהירה.
GitHub
GitHub - cyco130/vavite: Develop server-side applications with Vite
Develop server-side applications with Vite. Contribute to cyco130/vavite development by creating an account on GitHub.
📌 תרגום ספריה? כבר לא בעיה
בעולם שלפני AI כשכתבתי קוד ריילס צד שרת והיתה חסרה לי ספריה שהיתה זמינה רק ל JavaScript היו לי בגדול שתי אפשרויות פרקטיות:
1. אפשר להריץ node.js בצד שרת כדי שיריץ את ה JavaScript.
2. אפשר לשלוח את הקוד להרצה בדפדפן ב Client Side.
ברור שהאפשרות של תרגום הספריה מ JavaScript לרובי או פייתון היתה שם אבל היא לא היתה ריאלית. אף אחד לא היה יושב לתרגם ספריית קוד פתוח רק בשביל לבנות פיצ'ר.
היום זה כבר לא המצב.
הבוקר רציתי לרנדר מארקדאון בצד שרת בהזרמה. רדקרפט שהוא מנוע פענוח המארקדאון של רובי לא בנוי לזה. אולי היה אפשר להתאים אותו. אולי לא. לא נשארתי לגלות. במקום מצאתי את streaming markdown שהוא ספריית JavaScript לפענוח מדורג של מארקדאון, בדיוק מה שהייתי צריך. מה עושים? נותנים לקלוד קוד עם מודל פתוח GLM-5 לרוץ על הספריה ולבנות גרסת רובי שלה. שלוש שעות אחרי קיבלתי את:
https://github.com/ynonp/streaming-markdown-rb
אותו ממשק, 282 בדיקות אוטומטיות שהועתקו מגרסת ה JavaScript ועוברות בגרסת הרובי וקוד שעבד בנסיון הראשון.
בעולם שלפני AI כשכתבתי קוד ריילס צד שרת והיתה חסרה לי ספריה שהיתה זמינה רק ל JavaScript היו לי בגדול שתי אפשרויות פרקטיות:
1. אפשר להריץ node.js בצד שרת כדי שיריץ את ה JavaScript.
2. אפשר לשלוח את הקוד להרצה בדפדפן ב Client Side.
ברור שהאפשרות של תרגום הספריה מ JavaScript לרובי או פייתון היתה שם אבל היא לא היתה ריאלית. אף אחד לא היה יושב לתרגם ספריית קוד פתוח רק בשביל לבנות פיצ'ר.
היום זה כבר לא המצב.
הבוקר רציתי לרנדר מארקדאון בצד שרת בהזרמה. רדקרפט שהוא מנוע פענוח המארקדאון של רובי לא בנוי לזה. אולי היה אפשר להתאים אותו. אולי לא. לא נשארתי לגלות. במקום מצאתי את streaming markdown שהוא ספריית JavaScript לפענוח מדורג של מארקדאון, בדיוק מה שהייתי צריך. מה עושים? נותנים לקלוד קוד עם מודל פתוח GLM-5 לרוץ על הספריה ולבנות גרסת רובי שלה. שלוש שעות אחרי קיבלתי את:
https://github.com/ynonp/streaming-markdown-rb
אותו ממשק, 282 בדיקות אוטומטיות שהועתקו מגרסת ה JavaScript ועוברות בגרסת הרובי וקוד שעבד בנסיון הראשון.
GitHub
GitHub - ynonp/streaming-markdown-rb: A ruby port of https://github.com/thetarnav/streaming-markdown created by Claude Code (GLM…
A ruby port of https://github.com/thetarnav/streaming-markdown created by Claude Code (GLM-5) - ynonp/streaming-markdown-rb
📌 למה AI פוגע בבטחון שלכם כמפתחים ומה אפשר לעשות עם זה
אחד הדברים שאהבתי בתכנות עוד מאז ההיכרות הראשונה שלי עם טורבו פסקל היה שמדובר במקצוע צפוי. תכתוב את הקוד הנכון והתוכנית תעבוד. תכתוב קוד לא נכון ודברים רעים יקרו.
לימים למדתי שגם קוד לא נכון יכול לעבוד במצבים מסוימים והבעיות הכי קשות קורות כשיש לנו קוד נכון שמפספס מקרה קצה שאף אחד לא חשב עליו, אבל גם אז אחרי שקילפנו מספיק שכבות הקוד עשה מה שקוד צריך לעשות.
בעידן ה AI זה כבר לא נכון, וזה מדאיג במיוחד עבור מתכנתים צעירים.
חבר שלח לי קישור למערכת לימוד תכנות לילדים שמשתמשת ב AI ועוזרת לילדים לבנות משחקים עם סוכן קידוד. תוך כמה דקות היה לי באוויר משחק של מטוס מתחמק מאסטרואידים, אבל אז עצרתי לחשוב "מה לקחתי מהחוויה הזאת" והאם אני רוצה שהילדים שלי ילמדו תכנות בצורה כזאת?
נתחיל במה לא לקחתי מהחוויה. בשום שלב לא ניסיתי לעשות משהו שלא עבד ובשום שלב לא הסתכלתי על קוד וחשבתי "מה צריך לשנות כאן כדי שמשהו יעבוד אחרת על המסך". למעשה את הקוד שנוצר היה לי קשה מאוד לקרוא לא כל שכן לתחזק. הנה דוגמה לפונקציה אחת שהבוט כתב:
חוץ מההערה בעברית קשה להבין מה קורה שם: שמות משתנים לא ברורים, מספרי קסם מפוזרים והמון תחביר מתקדם.
ברור שאם שיחה עם AI מייצרת קוד כזה התוצאה היא שנרצה פחות לקרוא את הקוד ונשען יותר על ה AI כדי שיפרש לנו מה כתוב שם. ברור גם שה AI טועה והוזה וכנראה ימשיך לטעות ולהזות בשנים הקרובות ולכן הוא בדיוק ההיפך מתכנות - במקום עולם תוכן צפוי עם הסבר הגיוני לכל דבר אנחנו נכנסים לשיחה חסרת הגיון עם מכונה ומקווים שההודעה הבאה תפתור את הבעיה. לא פלא שתכנות בעזרת AI מוריד את הבטחון העצמי שלנו כמפתחים ופוגע בסקרנות.
כל זה לא בא לטעון שעלינו לוותר על ה AI בתור כלי עבודה או אפילו לוותר על סוכני קידוד שיכתבו את הקוד בשבילנו בהילוך מהיר ועל טייס אוטומטי. האתגר הוא לבנות את הבטחון העצמי בשלבים ובשיטת הספירלה, תוך כדי בניית ההיכרות שלנו עם המערכת.
יש אנשים שככל שהם משתמשים ב AI יותר כך הם פחות מזהים את הקוד שלהם והופכים תלויים בתשובות הסוכן. אנחנו רוצים להיות האנשים שככל שמשתמשים יותר ב AI כך אנחנו מכירים טוב יותר את הקוד ויודעים לצפות מה תהיה תשובת הסוכן לפני שהוא כותב אותה.
אחד הדברים שאהבתי בתכנות עוד מאז ההיכרות הראשונה שלי עם טורבו פסקל היה שמדובר במקצוע צפוי. תכתוב את הקוד הנכון והתוכנית תעבוד. תכתוב קוד לא נכון ודברים רעים יקרו.
לימים למדתי שגם קוד לא נכון יכול לעבוד במצבים מסוימים והבעיות הכי קשות קורות כשיש לנו קוד נכון שמפספס מקרה קצה שאף אחד לא חשב עליו, אבל גם אז אחרי שקילפנו מספיק שכבות הקוד עשה מה שקוד צריך לעשות.
בעידן ה AI זה כבר לא נכון, וזה מדאיג במיוחד עבור מתכנתים צעירים.
חבר שלח לי קישור למערכת לימוד תכנות לילדים שמשתמשת ב AI ועוזרת לילדים לבנות משחקים עם סוכן קידוד. תוך כמה דקות היה לי באוויר משחק של מטוס מתחמק מאסטרואידים, אבל אז עצרתי לחשוב "מה לקחתי מהחוויה הזאת" והאם אני רוצה שהילדים שלי ילמדו תכנות בצורה כזאת?
נתחיל במה לא לקחתי מהחוויה. בשום שלב לא ניסיתי לעשות משהו שלא עבד ובשום שלב לא הסתכלתי על קוד וחשבתי "מה צריך לשנות כאן כדי שמשהו יעבוד אחרת על המסך". למעשה את הקוד שנוצר היה לי קשה מאוד לקרוא לא כל שכן לתחזק. הנה דוגמה לפונקציה אחת שהבוט כתב:
function spawnAsteroid(){
let r=Math.random()*22+14;
let y=Math.random()*(H-r*2)+r;
// מרחק מינימלי מהשחקן
if(Math.abs(y-player.y)<60) y+=80;
y=Math.max(r,Math.min(H-r,y));
asteroids.push({x:W+r,y,r,speed:Math.random()*120+100+difficulty*15,rot:0,rotSpeed:(Math.random()-0.5)*3,hit:false});
}חוץ מההערה בעברית קשה להבין מה קורה שם: שמות משתנים לא ברורים, מספרי קסם מפוזרים והמון תחביר מתקדם.
ברור שאם שיחה עם AI מייצרת קוד כזה התוצאה היא שנרצה פחות לקרוא את הקוד ונשען יותר על ה AI כדי שיפרש לנו מה כתוב שם. ברור גם שה AI טועה והוזה וכנראה ימשיך לטעות ולהזות בשנים הקרובות ולכן הוא בדיוק ההיפך מתכנות - במקום עולם תוכן צפוי עם הסבר הגיוני לכל דבר אנחנו נכנסים לשיחה חסרת הגיון עם מכונה ומקווים שההודעה הבאה תפתור את הבעיה. לא פלא שתכנות בעזרת AI מוריד את הבטחון העצמי שלנו כמפתחים ופוגע בסקרנות.
כל זה לא בא לטעון שעלינו לוותר על ה AI בתור כלי עבודה או אפילו לוותר על סוכני קידוד שיכתבו את הקוד בשבילנו בהילוך מהיר ועל טייס אוטומטי. האתגר הוא לבנות את הבטחון העצמי בשלבים ובשיטת הספירלה, תוך כדי בניית ההיכרות שלנו עם המערכת.
יש אנשים שככל שהם משתמשים ב AI יותר כך הם פחות מזהים את הקוד שלהם והופכים תלויים בתשובות הסוכן. אנחנו רוצים להיות האנשים שככל שמשתמשים יותר ב AI כך אנחנו מכירים טוב יותר את הקוד ויודעים לצפות מה תהיה תשובת הסוכן לפני שהוא כותב אותה.
🔥1👏1