פרק מספר 68 של באמפרס (393 למניין רברס עם פלטפורמה) - רן, אלון ודותן נפגשים שוב ב-8 ביולי 2020 בעיצומו של הגל השני, מקליטים מהבית דרך Zoom . . .
ואף על כן - באמפרס: רן, אלון ודותן עם סידרה של קצרצרים על מה שקרה ברשת, מה עניין אותנו, בלוג-פוסטים מעניינים שנתקלנו בהם, Repos מעניינים ב-GitHub ועוד.
אז נצלול . . .
רן -
- חברת Microsoft הוציאה לקוד פתוח את התוכנה שנקראת GW-BASIC - מי זוכר מה זה?
- מדובר בשכלול קל על ה-Basic הרגיל, הכי בסיסי
- ה-GW-BASIC הייתה אחת הגרסאות הכי פופלאריות של Basic - יכול מאוד להיות שאם אתם מכירים Basic, אז אתם מכירים את הגרסא הזו.
- למעשה, Microsoft גם הוציאו בלוג-פוסט וגם Repo ב-GitHub, ששם נמצא כל ה-Source Code של GW-BASIC
- (דותן) שאפו על זה שהם ממש שמו היסטוריה אמיתית ב-Git - יש כאן “38 years ago” . . .
- (רן) כנראה באמת שיחזרו את ההיסטוריה, כי Git לא היה קיים לפני 38 שנים . . .
- אתם יכולים לגשת לכל קבצי ה-ASM (הלא הם ה-Assembly!) ולקרוא את הפקודות - אשכרה פקודות-מכונה שבאמצעותן נכתב GW-BASIC
- מרתק למי שבקטע - או סתם נוסטלגיה למי שפחות.
- (דותן) אתם יודעים מה זה אומר?
- (אלון) שאפשר להתחיל לכתוב ב-BASIC?
- (דותן) גם - וגם שצריך להתחיל לפתוח להם Pull-Requests . . . למה אין Source folder?! למה אין Make?!
- (רן) לגמרי - מבחינת איכות כתיבת הקוד . . .
- (דותן) אין פה Folders בכלל! מחפש איפה להיכנס ואין לאן.
- (אלון) אני לא יודע האם לפני 38 שנים Windows ידע לעבוד עם Folders - בעצם זה היה עוד בכלל DOS . . .
- (דותן) כן, יש פה Code of Conduct ו-Contributing . . . תתרום! אה, בעצם - “Please do not send Pull Requests” . . .
- (רן) למרות שיש פה ושם עדכונים - ראיתי אחד לפני חודשיים, אז זה לא שזה לגמרי הכל כמו לפני 38 שנים, אבל הרוב כן.
- (דותן) וכולם כל כך ממושמעים - אין כאן אפילו Pull Request אחד שנפתח, לא Closed, לא כלום . . .
- (רן) כן, טוב - הם הבעלים של הפלטפורמה, בוא לא נשכח . . .
- סקר של Stack Overflow שהתפרסם לא מזמן - הסקר השנתי שלהם של שנת 2020
- הם כל שנה מוציאים סקר וזה תמיד מעניין ונחמד לקרוא את מה שהם כותבים.
- הפעם הדבר הבולט ביותר בעיני הוא שויזואלית - זה מהמם . . . פשוט מעוצב יפה.
- יש שם גם הרבה תוכן, אבל הדבר הראשון שבולט לעין (כן . . .) זה שזה מעוצב יפה, עם JavaScript כזה אינטראקטיבי וכל מיני גרפים שזזים.
- על הסקר ענו 65,000 מפתחים מרחבי העולם - אפשר לראות פרטים דמוגרפיים שלהם וכו’.
- אני לא זוכר איזשהו אייטם ספציפי לגבי שאלות או תשובות מעניינות שראיתי, אבל יש שם המון אינפורמציה - כל אחד ימצא את מה שמעניין שם.
- יש המון אינפורמציה על טרנדים דמוגרפיים וטרנדים בתעשייה - אם זה טכנולוגיות ודברים כאלה
- פשוט כיף לראות את זה, ויזואלית זה מאוד יפה, עם הרבה מאוד אינפו-גרפיקות מכל מיני סוגים.
- אם אתם זוכרים, באחד הפרקים שעברו דיברתי על זה שאני קורא כמה ספרים ובינתיים לא מצאתי משהו מעניין - אז מצאתי ספר טוב שאני כן רוצה להמליץ עליו
- דותן, זוכר? אמרת שברגע שיהיה משהו להמליץ אז נמליץ? אז הנה - ספר שאני עדיין בעיצומו ולא סיימתי לקרוא אותו ונקרא An Introduction to Machine Learning, שזה תחום שאני עוסק בו בזמן האחרון.
- הורדתי את הספר אונליין, אני קורא אותו כ eBook
- מה שאני אוהב בספר הזה זה
- (1) הוא כתוב בשפה מאוד יפה, זאת אומרת - בניגוד לספרים אחרים שקראתי והייתה בהם אנגלית “קצת שבורה ומעצבנת”, כאן זאת באמת שפה יפה שכיף לקרוא ובנוסף
- (2) יש בו הרבה מאוד תרגילים - בסוף כל פרק - שמאוד עוזרים להפנים את החומר.
- יש שלושה סוגי תרגילים - סוג אחד הוא “תרגילי חשיבה”; סוג שני הוא “קח נייר ועפרון ותעשה חישוב” וסוג שלישי של כתיבת תוכניות שמממשות Perceptron או מסווג מסוג כזה או אחר - וזה מאוד עוזר להפנים את החומר.
- אז הספר נקרא An Introduction to Machine Learning, בהוצאת Springer, המחבר הוא Miroslav Kubat - אמריקאי מאוניברסיטת פלורידה (מיאמי)
- אם אתם בעניין של לעשות איזושהי הכרות עם Machine Learning אז זו היכרות די מעמיקה, אני חייב להגיד.
- (דותן) עד כמה הוא פרגמטי? או אם לשאול בצורה אחרת - אתה צריך לדעת אלגברה לינארית לפני כן? להיזכר בכל מיני דברים מהאוניברסיטה, או שהוא מאוד פרגמטי?
- (רן) הוא לא מאוד פרגמטי . . . הוא לא מדבר על ספריות כמו Pandas או TensorFlow, לא מדבר בכלל על כלים
- הוא מדבר ברמה התיאורטית - אבל התרגילים הם כן פרקטיים, זאת אומרת שצריך ממש לכתוב תוכנה
- אני את התרגילים האלה כותב ב Clojure מתוך היצר המזוכיסטי שלי . . .
- אתה כן מקבל איזשהו ניסיון תכנותי - אבל הוא לא פרגמטי כל כך במובן של “להכיר כלים אמיתיים”.
- מבחינת ידע ורקע - אני חושב שמתימטיקה ברמה של תואר ראשון זה לגמרי מספיק, כנראה שאפילו פחות, אולי אפילו רק השנה הראשונה של התואר הראשון מספיקה; אלגברה לינארית ברמה לא גבוהה מדי, חשבון אינפיטיסימלי או חדו”א (!) ברמה גם לא-מאוד-גבוהה - צריך להבין מה זו נגזרת, מה זה אינטגרל, דברים כאלה . . . שנה ראשונה באוניברסיטה בכל אחד מהמקצועות המדעיים נותנת לכם רקע מספיק בשביל הדברים האלה, עם קצת הבנה בהסתברות וסטטיסטיקה, אולי קצת הבנה בקומבינטוריקה אבל לא הרבה. זהו . . .
- זה לא ספר קל, אני חייב להגיד (כי עד עכשיו נשמע סבבה) - דורש קריאה איטית ומחשבה, אז גם אם יש לכם את הרקע, זה לא רומן . . . זה משהו שדורש מחשבה והעמקה ובעיקר תרגול.
- בכל אופן - אני אוהב את הספר. המלצה!
- (אלון) טוב לדעת . . . אבל אם לא סיימת, עדיין אפשר לעשות לך ספויילרים על מה קורה בסוף! נגלה לך איזו תוכנה אתה כותב בסוף . . .
- זה ספר על Machine Learning, מה כבר יכול לקרות?
- (רן) האם המסווג הוא חיובי או שלילי?
- נושא אחר אבל קצת דומה (ופרגמטי) - בלוג-פוסט של GitHub שמתאר איך הם עושים MLOps (שזה בעצם Machine Learning Ops) באמצעות GitHub Actions
- ה - GitHub Actions הוא Feature בן שנה בערך, אולי יותר - ומאפשר לעשות לא רק CI מעל GitHub אלא בכלל איזושהי אוטומציה יותר כללית
- למשל - בכל פעם שעושים Push, אז להריץ איזשהו Pipeline
- כאן הם מתארים כל מיני משימות סטדנרטיות שיש ב-Machine Learning, שהם מכנים בשם הכללי “MLOps”
- לא שהם המציאו את השם הזה, הוא היה כבר קיים
- למשל - ניקוי Data או Feature Engineering או הרצה של כל מיני Frameworks (במקרה הזה מדברים על binder) - דברים כאלה
- וכל זה - ב-Pull Request, וזה נחמד
- הרבה פעמים כשמפתחים איזשהו מודל ורוצים לעשות אופטימיזציות, רוצים לראות שלא עשינו משהו יותר גרוע, שלא שברנו משהו - וזה נחמד שכל הדברים הללו יכולים לקרות בצורה אוטומטית.
- אתם חושבים ששיפרתם משהו - עשיתם Commit לאיזשהו פרמטר ואז פתאום מגלים ששברתם משהו אחר . . . זה כל ה- Concept מאחורי Contentious Integration.
- בהקשר הזה - MLOps זו התשובה, והם נותנים דוגמא שלה באמצעות GitHub Actions
- (אלון) זה נשמע ממש בסיסי . . מה הבשורה שלהם?
- (רן) כקונספט, לנו כמהנדסים, אין כאן שום דבר חדש - אבל הם כן מראים איך הם עושים אינטגרציה לכלים הרלוונטיים השונים.
- איך אתה עושה Extraction ל-Data, איך אתה עושה Feature Engineering, איך אתה מריץ את המודל - וכל זה בתוך ה-Containers שלהם
- למי שעושה CI כבר שנים אין פה חדש, אני מסכים - זה לא קונספט חדש, אלא משהו יותר פרקטי, מראים את הכלים עצמם
- (אלון) משעשע שהם משתמשים Argo עבור Workflow, ולא במשהו פנימי . . . לא ידעתי שמישהו משתמש בזה חוץ מאיתנו . . .
- שפה בשם goplus - וכן, זה “Go עם עוד קצת” . . .
- זה מעיין Super-set של Go, כשכל תוכנית ב-Go היא גם תוכנית ב-goplus - אלא של-goplus יש גם Syntax נוסף שמאפשר לה להיראות קצת כמו Script, קצת כמו Python באיזשהו מובן.
- לא חייבים להכריז על פונקציה, אפשר פשוט לכתוב “=:a” ולכתוב לשם איזשהו מערך וכו’ - נותן איזשהו “Feel” של Python (או Ruby או JavaScript), אבל עם Syntax שהוא מאוד Go-י - קצת כמו לקחת את Go ולעשות ממנו Script.
- כמה פיצ’רים בולטים -
- אפשר פשוט להריץ את זה כסוג של Script, לא צריך לכתוב פונקציה כדי להריץ משהו
- כמו ב-Python, יש יכולת לעבוד על List Comprehensions (או Map Comprehension), שכל מי שאוהב את Python בודאי מכיר - For x in . . . where x>3 - אז אפשר לעשות את זה גם למערכים וגם ל-Maps, וזהו מאוד קומפקטי ונחמד
- זה לגמרי Compatible עם Go
- ויש עוד הרבה פיצ’רים
- ויש גם Playground - כמו שיש את ה Go Playground, יש גם Go+ Playground, שזה נחמד
- כל הקונספט של זה, לפי מה שרשום, זה שזה אמור להיות ידידותי ל-Data Science: ה-Tagline הוא The Go+ language for data science
- למה זה “ידידותי ל-Data Science”? כי Data Scientists בדרך כלל עובדים בתוך Notebooks, כותבים סקריפטים קצרים ורוצים לראות מה התוצאה - ולכתוב תוכנית ב-Go זה לפעמים overhead שהוא קצת פחות מדבר ל-Data Scientists, ובגלל זה Python כל כך קוסמת.
- אז goplus מביא את חלק מהיתרונות של Python לפה
- כמובן שהחלק המשמעותי הוא הספריות - שאולי חלק מהן קיימות, אבל זה ממש לא באותה רמה של Python, אבל השפה כבר פה.
- האם זה חילול הקודש או ברכה? לא יודע, כל אחד עם הטייק שלו . . . מי שאוהב את Go ואוהב אותה כמו שהיא אז עבורו זה כנראה חילול הקודש, אבל למי שרוצה לראות את Go מתפתחת לכל מיני כיוונים אז זה אולי אחד מהכיוונים.
- דרך אגב - אני לא רואה את המפתחים של Go מאמצים משהו מפה - זו לגמרי שפה אחרת, אפשר לחשוב על זה כמו על C ועל ++C - יש כאלה שפשוט ישארו עם C תמיד ולא ילכו ל++C, וזה לא מתערבב.
- בכל מקרה - זה מעניין, וזה Repo שהושקעה בו הרבה מאוד עבודה - וגם מאוד פופולארי ב-GitHub
- (אלון) יש פה כמה קונספטים ממש מעניינים . . . ה-Error-Handling זה משהו שמאוד התחברתי אליו, הוא הרבה יותר הגיוני לדעתי.
- אני חושב שלקחת את Go ולהביא אותה ל - Data Science זה מעניין, אבל לדעתי זה לא יבוא מ-Go אלא יבוא מ-Rust כי Facebook מאוד דוחפים לזה, אבל זה מעניין, קונספט מעניין ומבורך.
- (רן) דרך אגב - יש ספריות Data Science ב-Go, הן לא עשירות כמו אלו של Python אבל בהחלט קיימות. בואו נראה . . .
- גם ב-Rust זה מעניין - יכול להיות שאת ספריות ה-Core, אם היום כותבים אותן ב-++C אז מחר יכתבו אותן ב-Rust, אבל עדיין משתמשי הקצה . . . הרבה מה- Data Scientists לא כותבים ב-++C אלה ב-Python או R, ואני לא רואה אותם עוברים ל-Rust סתם ככה, אלא אם כן הם באמת צריכים לכתוב ממש ספריות, וזה לא רוב הזמן.
אלון -
- נתחיל מאחד הנושאים הפופולאריים - הפגנות Black Life Matter: התחילו לעשות “ניקוי שורות” בכל מיני שפות, נתחיל ב-Go כדי להמשיך את הקו: Pull request של להעיף את כל הרפרנסים ל - White list מול Black list או Master ו-Slave מה-Core Library של Go
- שמתי את זה בתור אחד מהראשונים שלי, ואז זה התחיל לתפוס פופולאריות בעוד כל מני מקומות, ולהתחיל להעיף איזכורים מעוד כל מיני מקומות.
- הרעיון הוא ש -whitelist/blacklist זה דבר פוגעני, וצריך להחליף ל Allowlist /Blocklist - שזה גם שמות יותר ברורים, האמת.
- ואת master/slave ל- Primary / Secondary אני חושב, לא רואה את זה כרגע.
- בקיצור - הרבה שפות התחילו לשנות, לא רק Go, והמונחים שאנחנו רגילים להשתמש בהם הולכים להשתנות כנראה בתקופה הקרובה
- הדבר היחיד שעוד לא ראיתי ששינו זה את ה Git Repo - ה-Root זה עדיין Master . . . אבל עוד לא ניתקלתי במחאה בכיוון הזה.
- (דותן) חייב להגיד שאני נפלתי פה - לקחתי את ה-Commits שיש פה, סתם כדי להסתכל, ונפלתי על To-Do - שינו את הטקסט ב To-do, והיה שם Split כדי שאפשר יהיה לעשות allowlist במקום whitelist - אז אם כבר נכנסו ושינו, לא לא כבר עשו את ה-To-do? . . .
- (אלון) אם אתה הולך נגיד על fmt, אז שינו שם למשל את blacklist ל-blocklist . . .
- (דותן) כן - אבל יש שם הערה שאומרת “to-do: צריך לממש את זה אחרת”, ואם אתה כבר עושה re-factor ל-Comment אז כבר תעשה מימוש . . .
- (אלון) תראה, אני לא נכנסתי פה . . .
- (דותן) אבל אתה כבר שם! שינית את ה- whitelist ל-allowlist . . .
- (אלון) בסוף זה Copy-Paste-Replace . . . כן, שינו - אתה יכול לעבור על ה-commits, חלקם זה באמת Comments (בתוך ה-GC זה Comment) . . .בתוך loader.go שינו whitelist ל-allowlist
- (דותן) אז צריכים לעבור קובץ-קובץ ולהכריז . . .
- (אלון) כן, אין הרבה שינויים - אבל עשו עבודה, וזה לא במקום היחיד שעשו את השינוי הזה.
- טוויט נחמד שנתקלתי בו - Ashley Willis שאלה What’s the best tech talk you’ve ever seen?
- מה שמעניין זה שיש פה מאות תשובות עם לינקים להרצאות, שכל אחד טוען שזו ההרצאה הכי טובה שהוא ראה
- עברתי על זה ברפרוף ואמרתי שאני שומר לעצמי את הלינק הזה - והעבודה הבאה היא לפלטר לי מפה הרצאות ולהכין רשימת צפייה, כי זה בטח שווה משהו, אם כל אחד שם את ההרצאה שהוא חושב שהיא הכי טובה אז בטח יש פה רשימה מכובדת, “חוכמת ההמונים” וכו’.
- נראה כמו לינק שעבור מי שמחפש הרצאות לראות אז זה יהיה מאוד שימושי עבורו.
- (דותן) יש על זה כבר Crawling או עוד לא? . . .
- (אלון) לא . . .הנה , יש לך הזדמנות - שמו לפעמים את אותו לינק פעמיים ואז תדע עם מה להתחיל.
- (רן) רציתי להגיד שזה מדהים, מבחינת חדשנות ישראלית, איך לכל דבר אנחנו מביאים את ה-Touch האישי שלנו, פשוא מדהים המוח היהודי . . .
- (דותן) צריך רק למצוא איזו תמונה של מישהו מרצה על איזשהו Slide, ואז כשאתה לוחץ . . .
- (רן) כן, בשנות התשעים זה היה אחד הטובים
- (אלון) היית עושה מליונים, הרבה לירות היה יוצא לך מזה . . . בקיצור, יש כאן הרצאות ענתיקות בחלקן וחלקן מהשנים האחרונות, אנשים שמו פה הרצאות גם מ-1900 ומשהו, אני לא יודע אם היה למרצה מחשב באותה תקופה, כל מיני כאלה - וחלק זה ממש מהשלוש-ארבע שנים האחרונות אז כנראה יותר רלוונטי . . . נראה לי מגניב
- (דותן) אני גם לא רואה כאן את Remembering Joe . . .
- (רן) של Joe Armstrong? אני חושב שאני מכיר . . .
- (דותן) זה היה באחד הפרקים (369 הקוסמי!), מה זאת אומרת?!
- (רן) בסדר, לא כולם מקשיבים (ברור, חלק רק קוראים)
- (אלון) דווקא חושב שראיתי את Joe Armstrong שם, די בטוח - בקיצור, תעבור, תכין רשימה יותר מצומצמת, ניתן לרן לצמצמם עוד קצת - ואז אני אסתכל
- (דותן) אי אעשה את הישנים והטובים, אתה תעשה את המודרניים והמגניבים
- (רן) ואני דורש שיהיו בכל רשימה לפחות חמישה מכנסי רברסים שעברו . . .
- (אלון) זו הזדמנות להכניס שם ל-List ולהתחיל להפציץ אותו . . . אני מבקש מכל המרצים: כל אחד, שישים את הלינק של עצמו.
- זו קריאה למרצים! - שימו את הלינק להרצאות שלכם שם, ואז אתה מקפיץ את הכנס
- כנס? 2020?
- ספריה ישראלית - golang mediary - של Here Mobility
- הוספת interceptors ל-http.Client
- שלחו לי - הסתכלתי - נחמד - מפרגן בכיף
- הרעיון הוא שאפשר להתחבר על ה HTTP Request - לפני ה-Request, אחרי ה-Request, ואז לעשות אינטרפולציות ל-Request עצמו או ל-Response
- אפשר להוסיף לוגים או דברים של Security או statsd . . . יש דוגמאות, גם Tracing . . . יכול להיות מעניין
- נראה חמוד למי שצריך את זה, ספריה צעירה יחסית - שיהיה בהצלחה! אני אהבתי
- ונמשיך עם Go, ככה יצא הפעם - mockery זו ספריה שמאפשר לעשות Mock-ים ב-Go
- ספרייה מאוד פשוטה וחמודה - למי שמחפש לעשות Unit Test ומחפש איך למקמק (create mocks) קוד - שווה להסתכל
- נחמד, פשוט, קליל, שימושי ונוח.
- (רן) ואחת הפופולאריות שבהן - יש עוד אחת-שתיים, אבל זו אחת הפופולאריות ביותר
- (אלון) מה שמפתיע זה שגם הפופולאריות לא פופולאריות . . . פחות מ-2000 Stars זה . . .
- או שאנשים לא עושים טסטים, גם אופציה
- (רן) אני חושב שפשוט צריך הרבה פחות Mocks, במיוחד ב-Go, בעיקר בגלל הגישה של ה-Interfaces - פונקציה שמקבלת Interface, אז אם הוא מספיק “רזה” זה כל כך קל למקמק (Mock) בעצמך כך שאתה לא חייב שום Framework.
- מתי כן צריך Framework? אולי לא צריך - אבל מתי תרצה? או כשה-Interfaces יחסית ארוכים ואתה לא רוצה למקמק הכל בעצמך, או כשאתה רוצה לעשות Spying: לספור את מספר הקריאות או משהו כזה, ואז אתה כבר תלך ותשתמש באיזשהו Framework
- אני, בטסטים שלי, פשוט יוצר Instances של ה-Interfaces בלי להשתמש באף Framework - יותר קומפקטי, יותר מובן, לדעתי, לא מצריך ללמוד עוד Framework - אני חושב שזה לפחות חלק מההסבר
- (אלון) כן, אבל הרבה פעמים יש דברים מורכבים . . . זה נכון לדברים יותר פשוטים, אבל כשאתה בא לספריית צד-שלישי בדרך כלל, עם כל מיני התחברויות ודברים שקורים . . . זה יותר מורכב
- אני ניסיתי פעם למקמק ל-S3, וזה לא היה סימפטי
- (רן) במקרים כאלה אני באמת לא אקח את זה על עצמי ובאמת אשתמש בספרייה
- או שאני אשתמש בבדיקות אינטגרציה (Integration Testing), למשל - ארים Container שיש לו Interface של S3 - מכיר את Testcontainers? יש להם מלא קונטיינרים עם כל מיני כלים - S3 זה אחד מהם אם אני לא טועה, יש ל-SQS ולעוד כל מיני דברים כמובן - כל הדברים הסטנדרטיים כמו Databases מסוגים שונים
- אז אתה יכול פשוט להרים Container - ודרך אגב יש לזה גם תמיכה ב-Go: אתה יכול לעשות setup לטסט שמרים לך Container בהתחלה ואז מוריד את ה-Container, ולפעמים זה יותר נוח מאשר למקמק (Mock it) את זה בעצמך
- זה אמנם רץ יותר לאט, אבל מצד שני זה קצת יותר אמין, מבחינת ה-API
- (אלון) מבחינת טסטים ל-Integration זה הכי נחמד - אבל זה כבר Integration Test ולא Unit Test.
- (רן) נכון, זה כבר לא Unit Test - אבל אתה כבר עובד עם S3, האם זה עדיין Unit Test? שאלה פילוסופית . . . אם אתה גם ככה כבר עובד עם משהו כבד חיצוני, זה כנראה גם ככה כבר לא ממש Unit Test.
- (אלון) זה ברור, אני נכנסים פה כבר לפילוסופיה . . .
- (דותן) זה עניין של טעם, בסוף - טעם ואיזון.
- (רן) לגמרי - אני לא מנסה להחליט מה זה Integration Test ומה זה Unit Test כי לא נצא מזה בחיים - רק אומר שיש לך כאן כמה אופציות, ואחת מהן זה באמת לעשות Mocking באמצעות mockery או באמצעות כלים אחרים; אופציה שנייה זה לקחת את ה-Interfaces ולממש אותם בעצמך, וזה נוח כשה-Interfaces יחסית “רזים”; ואופציה שלישית זה באמת להרים Service, אם אתה מדבר עם Service - להרים Service ב-Container ליד; או, רחמנא ליצלן! - לדבר עם ה-Service האמיתי (למשל S3 האמיתי), אבל זה ברוב המקרים הכי פחות מומלץ.
- אם אתה באמת הולך על הגישה של Container - יש Framework כזה שנקרא Testcontainers, שיש לו תמיכה בהמון שפות - Java ו-Go ובטח עוד הרבה - שממש נותנים לכם בזמן ה-Setup של הטסט להרים Container ולהוריד אותו בסוף הטסט, והאינטגרציה הזו מאוד נחמדה.
- (אלון) זה חמוד ממש - ותמיד יש את ההמלצה הקבועה: הכי טוב זה טסט אמיתי - טסט על Production! למה לא לנצל את זה?
- (רן) Famous last words . . .
דותן -
- ספריה ש-Apple הוציאה, או יותר כמו Framework, בשם ExposureNotification
- אם נחבר את זה לאקטואליה - בעצם הם ייצרו Framework סטנדרטי שממדל חשיפות ל - COVID-19
- זה חלק מההכרזות שלהם לא מזמן (iOS 13.5 release)- הם ראו שיש כל מיני ממשלות או כל מיני אפליקציות שמנסות למדל חשיפות לקורונה על גבי מפה וכו’ - והם פיתחו עבור זה API סטנדרטי
- עכשיו אם אתה רוצה לבנות אפליקציה כזו - אתה יכול להשתמש בספרייה הזאת, והיא גם עוזרת לך פה ושם.
- אני (דותן) נכנסתי לקרוא את ה-Interface, ויש שם כמה חלקים מגניבים, שאולי מגיעים משפות של רפואה
- לדוגמא, לרגע התבלבלתי כשהיה כתוב שם “Transmission risk level” ו-”Signal” - אני לקחתי את זה לכיוון של רדיו וכו’ . . .
- (רן) אתה כנראה הסתכלת על טורי פורייה, אבל הכוונה לביולוגיה . . .
- (דותן) בדיוק . . . הכוונה ל-Transmission של המחלה, אולי ה-Signal של המחלה?
- בכל אופן - נראה מעניין, לפחות ברמה של ה-API, שאפשר לקרוא איך נראית קורונה דרך API . . . זה מגניב, וכמובן שאם מישהו רוצה לפתח אפליקציה פופולארית ל-App Store, אז זה מקל את הכאב . . .
- (רן) דרך אגב - לא דיברנו כאן ואולי שווה לדבר על איך עובדות אפליקציות למעקב אחרי קורונה . . . בגדול, לפי מה שאני (רן) יודע, יש שני סוגים -
- סוג אחד זה לפי קירבה - משתמש ב-Bluetooth ועושה איזשהו מעקב אחרי מי נמצא ליד מי, למשל אם אתם נמצאים במקום ציבורי, אז ה-Bluetooth שלכם “מדבר” עם Bluetooth של אחרים, וככה אתם יודעים אם אתם קרובים למישהו אחר - ואם אחר כך מתגלה שהוא חולה, אז יש את המעקב הזה.
- איך זה נשמר ואיך באמת עושים את הגלוי? זה כבר סיפור אחר . . . אבל לפחות ברמה העקרונית, ברמה הפיזית, הגילוי הוא באמצעות Bluetooth.
- שיטה אחרת זה באמצעות מיקום - GPS וכו’
- למיטב ידיעתי, השיטה של ה-Bluetooth נקראת “השיטה הסינגפורית”, ואותה בסופו של דבר גם Apple וגם Google מאמצים - כשדיברו על זה ש-”Apple ו-Google משלבים ידיים למאמץ משותף” אז מדובר על זה, למיטב ידיעתי, בשיטה שמבוססת על ה-Bluetooth
- אלא שזה לא יהיה באפליקציה - זה יהיה ממש מוטמע במערכת ההפעלה, וזה יהיה Battery efficient וכל זה.
- השיטה של האפליקציה הישראלית שנקראת “המגן”, אני מניח שהרבה מכם התקינו אותה - זו דווקא שיטה שמתבססת על מיקום - ולכל אחד מהם יש יתרונות וחסרונות:
- ל-Bluetooth - מצד אחד הוא באמת יותר אמין - ברזולוציה, Bluetooth אמור לקלוט למרחק של כמה מטרים בודדים, כשהדבקה מוגדרת, אני חושב, כמצב שבו אתה נמצא רבע שעה במרחק של שני מטרים או פחות מבנאדם - ומרחק של שני מטרים או פחות זה משהו שבדרך כלל Bluetooth יודע ו-GPS פחות יודע, כי GPS (אזרחי…) עובד ברזולוציה יותר גבוהה.
- מצד שני - ל-Bluetooth יש גם יכולת לקלוט מעשרה או עשרים מטרים, תלוי בתנאי מזג האוויר ורעשי רקע ודברים כאלה.
- לכל אחד מהם יכולים להיות False Positives, ואולי גם False Negatives - אני לא מכיר את המקרים אבל יכול להיות שיש כאלה.
- זהו - אני חושב שזה מעניין, ככה, קצת לדבר על הטכנולוגיה שמאחורי זה, אבל אני שואל את עצמי האם באמת Apple ו-Google יכולים לקחת את ה-Bluetooth ולהוריד שם את רמת ה-False Positives בצורה משמעותית, כי בשביל להיות מסוגלים לעשות את זה, צריך גישה ממש למערכות הפיסיות, כדי להבין באמת מה עוצמת הסיגנל ומהן רמות ההפרעה וכו’, כדי להבין האם באמת הבנאדם קרוב או רחוק ממני.
- (דותן) וזו קריאה ל Apple ו-Google - לשלוח מכתב למערכת (AWS מאזינים מזמן . . .), אבל כן - זה מגניב
- (אלון) קודם כל - שמעתם את זה פה לראשונה, כי אנחנו תמיד חוזים דברים, זה ידוע
- אבל רגע - “לפני מיליון שנה”, כשעבדתי באינטל, היו חיישני Bluetooth והיינו מבינים איפה הדבר נמצא לפי המרחקים ועוצמת ה-Bluetooth - עוד אז רישתנו הכל ב-Bluetooth וידענו להגיד איפה ה-Wafers נמצאים בכל רגע נתון לפי מרחקים - אז זה משהו שכבר קיים, לפי הרבה שנים
- (דותן) עוצמת הסיגנל של Bluetooth, אם אני זוכר נכון, קיים ב-iOS
- (רן) כאן, זה קיים - השאלה היא רק מה רמת הדיוק של זה? לפעמים עוצמה היא “5” כשאתה במרחק שני מטרים ולפעמים העוצמה היא “5” כשאתה במרחק של עשרה מטרים . . . זה לא מדויק. אתה יכול אולי באופן יחסי להגיד מי קרוב ומי רחוק
- (אלון) תראה (תשמע) - אני יכול להגיד לך שאנחנו אולי היינו (Literally) בתנאי מעבדה, אבל בתנאי מעבדה זה היה מאוד יציב . . . היה מאוד ברור וזה עבד מאוד טוב, הזיהוי מרחק של מקומות, זה היה עוד בזמן “Bluetooth 0” או לא יודע איזו טכנולוגיה זה היה, אבל ה-Bluetooth התקדם מאז די הרבה אז יכול להיות שעכשיו זה שונה - אבל בזמנו זה עבד, אז אני לא יודע מה הבעיה . . .
- (רן) הפיסיקה השתנתה . . . באמת, אין לי ידע עמוק בזה אז אם מישהו מהמאזינים מכיר אז מוזמנים לתקן אותי, למיטב הבנתי זה פשוט מאוד תלוי בתנאי הסביבה, ובאמת יש הבדל מאוד משמעותי אם אתה בתנאי מעבדה או לא - תלוי בלחות, תלוי במכשירים האחרים שנמצאים ליד, ואני מניח שבעוד כמה פרמטרים.
- אבל שוב - אני בטח לא מומחה לתחום, ואני גם שמעתי או קראתי את זה איפשהו.
- בכל אופן - אני חושב שזה מעניין עכשיו להגיד שבאמת יש שני מודלים, ויכול להיות שהתשובה היא איזשהו שילוב של שניהם, כדי להגיע לרמה דיוק יותר גבוהה - אבל שני המודלים האלה בגדול הם שאחד מתבסס על שירותי מיקום (כמו באפליקציית המגן הישראלית), והשני מתבסס על Bluetooth, זהו, Se Tu.
- (אלון) רק אסיים - הפיסיקה אכן השתנתה! בתקופתי העולם היה עגול ועכשיו אומרים שהוא שטוח, אז זה כנראה שינה את כל הפיסיקה
- (דותן) ואז ניהיה דור 5 . . .
- ספריה וכלי - streamlit
- מבוסס Python, או לפחות לקהילת ה-Python או ככה זה נראה
- למי שמכיר את Swift Playgrounds - זוכרים שהייתה ההכרזה של Apple על Swift, ואז זה גם הופיע ב-iPad - שאתה צריך לכתוב קוד ומופיעה לך ויזואליזציה של הקוד שלך והכל אינטראקטיבי, אתה יכול להזיז Sliders כאלה, והקוד שלך בעצם משתנה לפי ה-Sliders?
- אז הם לקחו את הקונספט הזה - ועשו את אותו הדבר ל-Python
- לפחות מה-ReadMe נראה שקהל היעד זה בעיקר Data Scientists ואנשים שמתעסקים עם Data.
- שיחקתי עם זה קצת וזה אחלה לכל דבר - מספיק שיש לך פה Sliders ו-Controllers אינטראקטיביים, ויש לך איזושהי פונקציה ב-Python שאתה רוצה לשחק איתה, אז זה מהר מאוד יכול להפוך לכלי לימודי, בלי קשר ל-Data Science, אחלה דבר.
- (רן) אני מחכה לראות את זה נכנס לתוך Jupyter Notebooks, כי זה מתבקש
- הרבה פעמים רציתי לעשות איזושהי ויזואליזציה (Visualization) עם איזשהו Control של Slider, או משהו כזה - ועד עכשיו לא מצאתי, אז נראה שזו אולי התשובה, רק צריך לעשות לזה אינטגרציה לתוך Jupyter
- (דותן) לא ראיתי על משהו כזה . . . כן נראה שיש פה חברה מאחורי זה, סוג של . . . אני מניח שהם רצו להחליף או להיות אלטרנטיבה לזה, כי זה נראה קצת כמו Jupyter.
- קצת בקטע של נוסטלגיה - Cryengine, או Crytek - החברה שמאחורי Cryengine שמאחורי המשחק Crisis - פתחה (Open sourced) את הקוד של המנוע הראשון של Crisis (המשחק)
- אנחנו לא משחקים עם ה-Crisis הראשון, אבל אני זוכר אותו, כי זה מסוג המשחקים ששינו את העולם ונשארים לך במוח, כמו Doom וכאלה (עד כדי כך?)
- אז הם פתחו את הקוד ואני קצת רפרפתי - קצת ++C, בגדול, שנראה שנכתב ע”י מפתח אחד או שניים, “במשיכה אחת” מה שנקרא.
- מעניין למי שאוהב נוסטלגיה - אני אוהב להסתכל לפעמים; לא בניתי, לא קימפלתי וממש גם לא הולך לעשות את זה, אבל לפעמים גם כיף להסתכל על קוד שנכתב באותה תקופה, וזה נחמד.
- (רן) אני מסתכל על Commits שלהם, ונראה שיש להם מוסכמה מעניינת ל-Commits - נגיד B! או T! או I! . . . מעניין מה זה.
- (דותן) האמת שראיתי את זה וזה היה נראה לי כמו רעש, אבל אתה נותן פה טוויסט מעניין . . .
- (רן) כנראה שיש כאן איזושהי קונבנציה (Convention) ל-Commits שאני מנסה לפענח . . לפני איזה שניים נגיד יש XB! (היה בהקלטה לפחות . . .)
- (אלון) וגם XI! . . . זה מגניב, עכשיו אני חייב להבין מה זה . . . T! זה סתם טקסט, אתה רואה שזה סתם Copyright וכאלה, אז זה כבר מעניין.
- (רן) אולי B! זה Bug . . . מה זה I! ? . . .
- (אלון) U! זה בטח User Interface . . . לא, בעצם זה Undo . . . נחמד
- (דותן) יש כאן עוד כמה דברים מעניינים - יש Commit שמתקן משהו שנראה כמו Bug מלפני חודש - עכשיו, זה Cryengine, זה מ-2004 . . . מה קורה פה?
- (רן) כנראה עבדו על זה כדי להוציא את זה ל-Open Source
- (דותן) יכול להיות . . . מעניין; אלו החלקים שאני אוהב לנבור בהם, בקוד מאוד ישן - מגלים כל מיני דברים שהאנושות כבר לא עושה.
- (אלון) עכשיו רק תחפש פה פרצות אבטחה ונחש מה עבר הלאה לגרסאות החדשות . . .
- (דותן) כן, הא . . .
- האייטם הבא הוא backstage - פרוייקט של Spotify שהם החליטו לעשות לו Open-source
- זה בעצם Developer portal Framework, והם מכנים את זה “open platform for building developer portals”
- אני חייב להגיד שקראתי את זה ומאוד רציתי לדעת מה זה - וכשראיתי אז מאוד לא רציתי לראות מה זה . . .
- לא יודע, אני עדיין מבשל את זה עם עצמי - זה נראה כמו Wiki משולב ב-Dashboards, והכל מוכוון למפתחים ב-Spotify - אם אתה חבר ב-Squad אז יש לך את ה-Squad metrics מול הפנים; אם אתה רוצה לקרוא חדשות אז יש לך חדשות של Spotify שם; אם אתה לראות Metrics של Services אז זה גם שם - בעצם, כל העולם שלך נמצא בתוך מקום אחד.
- אולי אני קצת Old school, אבל זה . . . אני קצת פחות התחברתי, זה משדר “רובוט שעובד בשביל חברה”, וכל עולמו נסגר במקום אחד . . .
- כשאני קראתי את זה, חשבתי שאני הולך לראות Developers Portal במובן של כל הידע של ה-Developers והפרוייקטים והכלים שאני יכול להשתמש בהם כדי להאיץ את העבודה וכו’ - אבל אני בעצם רואה פה סוג של “מנגנון שליטה” או “חוטים סביב הבובה”. אבל תשוטטו בזה, זה מגניב.
- (אלון) אני עוד לא הבנתי מה אני יכול לעשות עם זה, אם זה טוב או רע - אני צריך לראות את הוידאו, לא נעים לי
- (דותן) יש לך Gif, לא צריך וידאו . . .
- (אלון) ה-Gif לא מספר את כל הסיפור . . . ב-Gif זה דווקא נראה חמוד: אתה מכין דשבורדים (Dashboards), יש את כל המטריקות (Metrics) שאתה צריך, אם מעניין אז יש משהו לראות . . . יכול להיות נחמד.
- (דותן) זה קצת Fallacy, כי קודם כל - אם אתה מאמן או מאלף אנשים להסתכל רק במקום אחד ולא לצאת מהמקום הזה, אז אוקיי, סבבה - יש כאן כל מיני Widgets שאם מישהו שם Widget שאתה אמור להכיר אז עכשיו לא הכרת ולא ידעת אז זה לא קיים.
- (אלון) אתה יכול לבדוק את ה-CI, לבדוק את המטריקות (Metrics), לבדוק לוגים . . . יש לך מקום אחד במקום להתחיל לטייל, וזה לא רע.
- (רן) לא - וגם חברות עושות את זה אז בוא - כל חברה בונה את זה לעצמה, כל חברה שאני הייתי בה בנתה אחד כזה, אז זה יכול להיות נחמד להתחיל ממשהו מוכן.
- אתה יכול לבוא ולהגיד שיש לזה חסרונות, כי ברגע שאתה בונה פורטל כזה לא מסתכלים ימינה ושמאלה - אולי, אבל מצד שני כולם בונים, כי אני חושב שה-Benefit עולה על החסרון הזה.
- עכשיו - האם זה פורטל טוב? אני לא יודע, אבל האם צריך פורטל? אני חושב שכן, אני די משוכנע שצריך.
- (דותן) זה תמיד יש - יש לך Jira ויש לך את העולמות שלך . . מה שאני מכיר זה שבונים, אבל בונים בתצורה של כלי, ופה ה-Feel שאני מקבל זה של “זה העולם שלך, וה-Browser שלך נעול לתוך הדבר הזה וזהו”. זה Feel כזה, זה לא באמת . . .
- (רן) יכול להיות . . . אני מסכים עם זה שנכון שיהיה לו API, שזה לא יהיה UI-First אלה API-First, שכל פעולה שאתה יכול לעשות דרך ה-UI אתה תוכל לעשות גם דרך ה-CLI באמצעות Client וכו’.
- עדיין, אני חושב שזה נכון שיהיה איזשהו פורטל מפתחים, ששם יהיה את כל מה שהם צריכים - אתה יודע, דברים בסיסיים כמו Service Catalog ו-Metrics ואיך ליצור Service חדש, ומי ה-Owner של כל אחד מה-Services ומה התלויות בינהם ודברים כאלה.
- דרך אגב - לא הכל כל כך בסיס, חלק מהדברים כן מורכבים, אבל זה הכל שימושי בעיני.
- כל חברה שהייתי בה בסופו של דבר בנתה לעצמה אחד כזה, אז אני חושב שזה נחמד להתחיל מאיזשהו משהו, אבל אני לא יודע - צריך לעשות לו איזשהו Test Run ולראות האם זה באמת הכלי הנכון בשבילכם.
- (דותן) לא, עכשיו זה נראה . . פחות, אבל תנסו
- (אלון) אל תקשיבו! Spotify, אתה לא יכול ללכלך עליהם - הגיע סוף סוף לארץ ה - Spotify Family (קישור לא ממומן . . .), אז אני מבקש - לא ללכלך עליהם!
- (דותן) לא מלכלך . . . זה אחלה, כלי מדהים!
- הספרייה הבאה - rich - עושה צבעים ב-Python
- חייב לומר שזו סופסוף ספרייה שנראית טוב, עבור מי שרוצה ליצור Developer experience טיפה מעבר למה שיש בסטנדרט של Python.
- היא עושה את כל בצבעים, כל הפלטה (palette) - טבלאות ו-Spinners ו-Progress bars, עושה גם Syntax coloring על הטרמינל ועוד ועוד - אפילו מרנדרת markdown
- מגניב, ברגע שאתה לוקח ספרייה כזו, יש לך את החופש לעשות מה שבא לך, או שבתוך הטרמינל את יכול לרנדר Markdown, יכול להוציא טבלאות
- אני מניח שכלים מגניבים יבנו מעל הספרייה הזאת ובזכותה
- ממש אהבתי - וגם עושה חשק לבנות כלי Command Line חדשים שנראים טוב ב- Python
- תשתמשו!
- ספרייה בשם texthero - שעושה עיבוד טקסט
- הדגש פה הוא על זה שהיא קלה וקלילה - אהבתי את הנקיונות של טקסט שבה, אבל יש בה עוד יכולות
- אתה מתקין ומיד יש לך כל מיני אלגוריתמים פופולאריים לעבודה על טקסט
- לא יותר מדי עמוק אבל גם לא יותר מדי - פשוט וממש נחמד
- למי שלא אוהב את הדוקומנטציה (Documentation) של Docker, יש docker-cheat-sheet (באתר של Docker)
- כאן יש את כל הדוקומנטציה שבאתר - משוטח לקובץ Markdown אחד, הכל ב-Repository
- גם נחמד - וגם יותר קל לחפש, וגם יותר נוח להשאיר פתוח כל הזמן . . .
- (אלון) רשום פה “4 months ago” . . .
- (דותן) כן, הדוקומנטציה הרשמית כנראה מתעדכנת יותר תדיר, אבל יש פה את הדברים שהם Basic ורוב מה שלפעמים אתה אולי שוכח אז יש לך.
- עוד ספרייה בשם mimalloc - נושא שהוא קצת יותר Low-level ו-hardcore, דיברנו על זה קצת בעבר - הספרייה היא לשימוש ב-Allocator ש-Microsoft הוציאו
- הם בעצם הפכו ל-Allocator עם ה-Performance הכי טוב בשוק, פחות או יותר
- לאן זה רלוונטי? רלוונטי לספריות או כלים שבנויים על ++C, וב-Space האישי שלי - על Rust.
- אנחנו רואים פה כבר הבדלים שהם יחסית משמעותיים - היא עושה ניהול אלוקציה של זכרון (Memory allocation) פי 5 או פי 6 מהר ממה שיש שיש לך ב-Default.
- יש פה גם פי 10 ופי 20 לעומת אלטרנטיבות אחרות
- למי שעוסק ב-Performance או ש-Performance חשוב לו, ויש לו Code Base שעושה המון אלוקציות והמון עבודה “קשוחה” כזו ב-Rust, יכול להחליף את ה-Allocator שלו ברמה של כמה דקות עבודה ולראות האם זה שיפר לו ביצועים.
- בשפות אחרות אני מניח שזה גם
- בשורה התחתונה - הופך להיות משהו שהוא פחות אקספירמנטלי וכבר נראה די טוב לשימוש.
- עוד אייטם שמצא כן בעיני דווקא בגלל ה-Feel שלו - hackingtool: כלי ל-Hackers כמו בשנות ה-90!
- מישהו לקח סקריפט ב-Python, ובנה כאלה Prompts ולוגו כזה ענק וכו’ - וזה בסך הכל מפעיל מלא Scripts אחרים, סתם הצחיק אותי
- (אלון ) רגע . . . עכשיו אנחנו עובדים מהבית, אבל במשרד, עם חלון כזה פתוח באופן קבוע זה . . . שמע - להיט!
- (דותן) כן, ממש 90’s, ממש הזכיר לי את זה - זה כזה עם תפריטים, שאתה לוחץ ואז מופיע התפריט הבא, ויש כותרת אחרת ועוד תפריט, עד שבסוף אתה מגיע למה שאתה רוצה להפעיל ואומר לו “תפעיל!” . . . ממש s’90 ונוסטלגיה
- בסוף יש מלא כלי Hacking, ממש המון, אז הוא לקח רק כמה - לא יודע אם זה הכלי הכי טוב ל-Hacking או ל-Pen-Testing, אבל בהחלט הכי מעלה זכרונות
- (רן) אני זוכר שפעם היו ממש גרסאות Linux שממש היו מיועדות לזה, עם כל הכלים מותקנים . . .
- (דותן) אה - יש! עדיין יש
- (רן) עוד עושים כאלה?
- (דותן) בטח . . . מה שקרה איתן זה שלמשל KALI ו-Backtrack הפכו להיות חברות, באיזושהי דרך, חברות Security שאיכשהו מימנו או קנו, ונוצרה להן מעיין יישות שהיא, מעבר להפצת Linux עם מלא כלי Security, בעצם גם מובילת-דעה בעולם של Pen-Testing, וחלק ממה שהיא עושה זה גם להוציא את ההפצה שנקראת, נגיד, KALI.
- אז לא רק שהיו - הן גם התרבו ויש כבר די הרבה.
- ב”ימים של האינטרנט הגרוע” היה לי כזה, בסטנדרט, בתיק - וכשהייתי צריך אינטרנט אז הייתי “משיג” בצורה כזאת
- גם ה-WiFi של פעם לא היה כזה מתוחכם - לוקח כמה דקות ויש לך סיסמא של מישהו, של ה-WiFi שלו . . .
- היום זה כבר פחות רלוונטי, זה יותר קשה לעשות
- (אלון) תגיד - הרצת את זה? יש גם מוסיקה, כמו פעם?
- (דותן) לא . . . אין מוסיקה, אבל זה אחלה רעיון ל-Pull Request.
- (רן) זה כולל קפוצ’ון?
- (אלון) נראה לי שתורנו לקבל קפוצ’ון . . .
- (דותן) רעיונות מדהים, נראה לי שצריך להוסיף ל Pull Requests - “להוסיף מוסיקה!”
- ועוד אחד - EasyOCR: מישהו לקח Neural Network, את כל מה שאנחנו מכירים ב-Neural Network ו-Deep Learning וזיהוי טקסט, ארז את זה בספרייה ויצר OCR שמזהה כמה וכמה שפות.
- אני חושב שהדגש הוא על קלות ההפעלה, או איך שלא נקרא לזה
- בעצם, בשלוש שורות - יש לך OCR, מה שבדר”כ היינו עושים tesseract כזה, שזה חינמי? אז פה כבר אפשר לקחת, לנסות ולראות אם זה נותן יתרון משמעותי מעל ה-OCR-ים האחרים, החינמיים.
- (רן) רק נזכיר למי ששכח - OCR זה Optical Character Recognition - היכולת “לקרוא” טקסט
- (דתן) מקבלים תמונה - מקבלים טקסט
- ואם כבר אנחנו מתמקדים בנושא - ה OCR-ים “מהדור הראשון” לקחו פונטים ואיכשהו היו Coupled לפונטים בדרך שלהם לזהות טקסט
- היום זה כבר Neural Network, אז ההבדל הוא די רציני
- בכל אופן - ה-EasyOCR יודע לעשות את זה גם באנגלית וגם בשפות קצת יותר אקזוטיות: סינית, תאילנדית וכו’. מעניין.
- אייטם נוסף - gitqlite: אני ראיתי בזה עוד פעם את “איך לא עשו את זה כבר?” -
- מישהו לקח Git Repo ולקח SQLite . . . היה לנו אייטם כזה פעם, שמישהו לוקח Data, מכניס אותו ל - SQLite ויוצר לו ספריית תחקור . . .אני חושב שזה היה אפילו מישהו ישראלי, זה היה נקרא q, לא? אם אני זוכר נכון . . .
- (רן) הראל בן עטיה כתב את q, שבאמת לוקח Data, שם אותו בתוך SQLite ואז מתשאל אותו.
- (דותן) כן, אז שם זה היה JSON אם אני זוכר נכון, וכאן זה Git Commits או Git בכלל - אני מניח שככה הוא בנה את זה: לקח Git Log ועשה לו קצת Parsing או אולי משהו קצת יותר מתוחכם, דחף את זה ל-SQLite לכמה טבלאות, ועכשיו יש לך כלי Command Line שאתה יכול להפעיל שאילתות מעל ה-Repo שלך או מעל ה-Git - שזה די מגניב
- רעיון כזה פשוט ש”איך אף אחד לא חשב על זה קודם?”
- (רן) במקרה של q, אני חושב שהיו לו כמה סוגים של Inputs - גם JSON וגם CSV וגם Output של פקודות, שהוא היה יכול לפרסר (Parsing) אותן כטבלאות.
- (דותן) מגניב . . . צריך לבדוק מה הוא עשה ב-gitqlite, אבל אולי אפשר להזרים את זה לתוך q . . . בעצם לא, זה SQLite . . .
- ואייטם אחרון (כמעט) - practical-python: לא יודע אם זה כזה Highlight כי יש כל כך הרבה resources ללמוד Python, אבל כשהסתכלתי על זה אז משהו קפץ לי פה -
- השם של מי שעשה את זה הוא David Beazley - וכל מי שעשה Python בשנות ה-2000 מכיר את David Beazley, רן מכיר בטוח . . .
- (רן) לא מכיר . . .
- (דותן) הוא עשה את ה-Python Cookbook והיה די חלוץ בעולם ההוראה ה Python-י
- מה שהוא בעצם עושה זה לפתוח את הקורס שלו, שהוא כתב שהוא העביר יותר מ-400 פעמים, סוג של Training שלו - הוא פותח אותו ועושה אותו חינם ופתוח ב-GitHub, ואפשר ללכת ולעשות את הקורס.
- יש שם Exercises והוא טוען, ואני מניח שהוא צודק - שהקורס הזה הוא בעצם למידה שלו, שהוא שייף לאורך משהו כמו 20 שנה אחורה.
- מעניין לפחות להסתכל מה יש שם.
- ואייטם ממש אחרון - !HEY
- גובל בדרמה, ואני מניח ששמעתם מה היה עם !HEY . . .
- (רן) לא - ספר לנו!
- (דותן) אה, אוקיי . . אז יש את ה-Email החדש שנקרא !HEY, אם אפשר לקרוא לזה ככה, ש DHH . . .
- (רן) זה Email client?
- (דותן) לא יודע אם Email client, זה ממש email . . .מחליף את Gmail באיזשהו מובן, ש-DHH ו-Basecamp וכל הקבוצה הזו הוציאו.
- זה לא של Basecamp, אבל זה חלק מהכלים של Basecamp, נראה לי, בקטע של Productivity
- מה שהוא אומר זה שהוא הוציא מייל שהוא לא של אף יישות גדולה, לא יודע אם להוסיף “מרושעת” אבל כנראה שזו הכוונה שלו, שהוא תומך ב-Privacy וכו’
- אבל העניין שהתפתח הוא ש-DHH כהרגלו, יש לו איזשהי מנטרה ל-business שהיא מאוד ידועה, וכשהוא הגיש את האפליקציה של !HEY ל-Apple App Store, אז הוא עבר על ה-Policy של in-app purchase - וקיבלת אפליקציה שאי אפשר להשתמש בה, אלא אם כן את הולך לאתר הנפרד, שלא קשור ל-app Store, של !HEY, ואז אתה משלם ואתה כן יכול להשתמש בה . . .
- ו-Apple - כמובן שזה נוגד את ה-Term & conditions שלהם, אתה לא יכול לתת אפליקציה שאתה לא יכול להפעיל אותה בלי לשלם, ולשלם בתוך ה-Ecosystem של Apple - אז הם עשו לו Ban לאפליקציה . . .
- ואז התחילו משהו כמו שבועיים של טרור-טוויטר של של DHH נגד Apple, והתפתחו כל כך הרבה Threads ושיחות מטורפות מעל Twitter וזה די “שבר את Twitter” - ובסוף Apple וויתרו.
- וזהו - זה היה HEY . . .
- (רן) רגע - אז הם נותנים לו לעשות Purchase מחוץ ל App Store? בתוך האפליקציה?
- (דותן) הם סוג-של-וויתרו, וגם הוא סוג-של-וויתר - אבל זה היה . . . אם היית קורא את ה-Twitter בימים האלה אז כאילו נראה היה שיש פה מלחמה ואף אחד לא הולך לרדת מהעץ - אז בסוף הוא עשה גרסא סוג-של-חינמית והם סוג-של-וויתרו על החוקים הנוקשים שלהם
- אפילו מישהו פתח אתר כזה … היה איזה VP ב-Apple שאמר “You download the app and it doesn’t work”’ ואז מישהו פתח אתר כזה בשם YouDdownloadTheAppAndItDoesntWork.com - ושם היו Screenshot של כל האפלקיציות שאתה מוריד והן לא עובדות.
- הבדיחה היא שהן לא באמת לא עובדות . . .
- בין השאר היו גם Spotify ו-Netflix וכו’, וכולן במודל הזה - ב-Apple אמרו שזה Reader וזו לא בדיוק אפליקציה, אבל גם Gmail זה Reader . . . בקיצור, התפתחו שם כל מיני דיונים פילוסופיים מסובכים
- יש כאלה שטוענים שזה היה PR Stunt של DHH, כי זה נתן המון פרסום - מעבר ל-Twitter זה עשה המון גלים בכל “אתרי החדשות לגיקים”, אבל זה…
- מה שנותר לעשות זה לנסות להשתמש בHEY ולנסות להחליף את המיילים שאתם מכירים בחינם - בכסף.
- (רן) יפה אז סיפקת לנו את הדרמה של היום, בהחלט.
- (אלון) אני עדיין לא מבין למה אני צריך להחליף את האימייל שלי מכל הסיפור . . .
- (דותן) אז אמרתי - אתה מוזמן להחליף את האימייל שלך באימייל אחר - בתשלום!
- (אלון) במקום בחינם?
- (דותן) כן
- (רן) אני חושב שזה הקטע שהוא לא מבין, דותן, אבל נסביר לו אח”כ.
- (דותן) סתם - מה שהוא מוכר בסוף זה Privacy - במחיר של $99 לשנה, אתה מקבל Privacy: הוא חוסם לך Trackers וכאלה, ואתה מקבל כתובת אימייל של hey.com, שזה כאילו מגניב . . . אפשר לפתוח לרגע פסקת ציניות?
- כן
- לפני ההשקה, כי DHH חימם את כל Twitter, מישהי עשה לו Reply ואמר לו “כבר השגתי כניסה ל-HEY, והכתובת של זה Hey@username” - הפכה את ה-Domain ואת השם, שזה כאילו . . . בסוף את משלם על Domain של שלוש אותיות, זה מה שקורה.
- (אלון) כן - ואז תתחיל להקריא את זה בשירות שאתה צריך בטלפון: “לאן לשלוח?” - “לAlon@Hey.com” - “מה?! H?” - אנשים לא מבינים, עזוב אותך, למי אכפת שלוש אותיות?
- (דותן) היה שם קטע נחמד - קיבלתי Invite יחסית מוקדם, אז הדבר הראשון שאתה עושה כשאתה מקבל Invite יותר מוקדם מכולם זה לנסות לתפוס שמות . . .
- אז יש שם קטע נחמד של מעט אותיות - נגיד, שתי אותיות זה סכום מטורף, אבל שלוש אותיות זה כבר $350 לשנה, נדמה לי - ואז אתה כבר מתחיל לתהות . . .
- כמובן שניסיתי “DHH” - לא היה . . . ואז ניסיתי DNH, שזה קצת דומה ל-DHH - וכן היה.
- אז סתם - לידיעתם ה-fisher-ים שם בחוץ, אפשר לעשות דברים מעניינים . . . אבל לא - לא שילמתי
- (רן) לא שילמת $350?
- (דותן) לא - לא הלכתי על זה
- (אלון) היה פעם למישהו סקריפט שתופס שמות קצרים ב-Twitter, אבל בוא נעצור פה.
- (רן) אני כבר רואה את הבלוג-פוסט הבא: “אתה קונה שם בשלוש אותיות ב-$350 - וזה לא עובד!”
- (דותן) “com.”
(רן) טוב, קצת חרגנו - הגיע הזמן לקטע של המצחיקולים, כדי להקל על האווירה אחרי הדרמה הרצינית הזאת שקרתה פה . . .
- הראשון - טוויט של bradfitz, אחד המפתחים המפורסמים בעולם - היה בצוות ה-Core של Go, כתב את Memcached בעבר,ועוד
- הוא כתב ב-Twitter שהוא אחרי יום ארוך של ראיונות ורוצה להוציא את התסכול שלו - אז הנה השאלה: “Print the largest even integer in an array of integers.” - וספקו לי אך ורק תשובות שגויות
- וזה ניהיה מצחיק . . . אנשים הציעו כל מיני רעיונות לאיך להדפיס את המספר הזוגי הגדול ביותר במערך של Integers
- למשל - תשובה אחת זה “(print(a” - פשוט להדפיס את כל מערך, והמספר הזוגי הגדול ביותר כנראה יודפס שם . . . זה עובד.
- תשובה נוספת - לעשות לולאה בין 0 ל-MaxInt ולהדפיס את כל המספרים - וגם במקרה הזה המספר הזוגי הגדול ביותר במערך כנראה יודפס איפשהו שם.
- בקיצור - היו כל מיני תשובות מתחכמות כמו “קודם כל צריך ליצור מודל ואז לאמן אותו” והייתה תשובה ב-Shell עם Grep ו-Sort . . . בקיצור, כל מיני תשובות מאוד משעשעות, מוזמנים לעבור על ה-Thread ב-Twitter
- וכן - חלק גם נתנו רפרנסים לתשובות ב-Stack Overflow. . . עשו מזה מטעמים. נחמד, משעשע.
- אייטם הבא - ypp, או: Yid++ כמו שהם כותבים - the oylem’s first programming shprach
- מי שיודע פה יידיש - מוזמנים לתרגם . . .
- וכן - Yid++ זה בעצם Compiler מיידיש ל-++C, אם אני לא טועה
- זה למעשה ה-Compiler הראשון בעולם, או משהו כזה
- אתם מוזמניםללכת לקרוא Source Code של Yid++, למשל -
- למשל - be_soymech_on <iostream> זה (Include (iostream
- ו- holding shitta std זה (namespace(std - למי שזוכר את ה-++C בטח יראה את הדמיון
- יש גם -bli_ayin_hara main () bh שזה בעצם (void (main, והוא מחזיר בעצם “bh”, שאני מניח שזה “בעזרת השם”
- ולמעלה כמובן כתוב בגדול “BSD” - שזה “בסיעתה דשמייא” כמובן . . .
- (דותן) זה גם מבלבל מבחינה לגאלית . . .
- (רן) אני בטוח שזה לא יד המקרה . . .
- (אלון) מעניין האם זה מתקמפל בשבת . . .
- (דותן) לקחת לי! אני כבר מחכה להגיד את זה!
- (אלון) סליחה, אתה יכול למחוק את המשפט האחרון שלי? (לא) - דותן, מה רצית להגיד?
- (דותן) האם זה מתקמפל בשבת? האם ה-Compiler יעבוד בשבת?
- (רן) בואו נקרא עוד קצת פנינים מהשפה -
- למשל - >>be_machriz זה >>cout, להדפסה
- יש פה עוד איזו מילה ביידיש שאני לא מזהה . . .
- בקיצור - משעשע
- (דותן) בינתיים אני גם מסתכל בקוד - וצריך לפרגן פה לבנאדם שכתב את זה: בחור בשם משה שור מחיפה, מהטכניון - קל”ב אליך . . .
- יש פה גם דברים מגניבים בקוד, כמו קובץ ++C שנקרא ani_maymin.cpp . . . בקיצור, גם הקוד עמוס בדברים כאלה
- זה כל כך חזק, שאני מאמין כבר שזה אמיתי . . . אני רואה שיש כאן הכשר מאיזשהו רב ל - Code base . . . זה מתחיל להיות כבר . . . צריך לבדוק את זה איתו.
- (רן) יש תעודת הכשר לקוד, יפה, הלך עם זה עד הסוף - כל הכבוד, משה!
- (רן) אני רואה שיש פה שניים - משה וגם עוד מישהו שתרם - יחיאל קלמנסון, שהוא דווקא מניו-יורק
- (דותן) אני חושב שזה אמיתי, זה נראה לי אמיתי, זו באמת שפה כשרה . . .
- (רן) לגמרי - סחטיין על העבודה חברים, אם אתם שומעים אותנו
- וזהו - אחלה צחוק, תקראו קצת את הקוד, אני בטוח שתזהו הרבה יידיש גם אם אתם לא דוברי יידיש שוטף, בטוח שתזהו הרבה.
זהו - זה הכל, כאן אנחנו מסיימים.
תודה לכם אלון ודותן, היה משעשע ומחכים כרגיל - נתראה בפעם הבאה.
הקובץ נמצא כאן, האזנה נעימה ותודה רבה לעופר פורר על התמלול