יום שני, 11 בפברואר 2019

358 Bumpers 55 - Nostagia

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

הכל התחיל לפני לא מעט שנים - Ruby on Rails היה הדבר החם, Node.JS כבר היה (אבל לא כזה חם) - ומאז זרמו הרבה קומיטים ב-Github, וכל אחד בחר כמה נקודות להתייחס אליהן.

  • הצוות עצמו עבר הרבה תהפוכות במהלך השנים, ואלה שמות (מאז דצמבר 2012) - 
    • עידן, אבנר, רן ודותן
    • אורי הצטרף
    • רן, אבנר ודותן
    • רן, אלון ודותן בהרכב הנוכחי

  • פרקי 1 באפריל (38, 47)- 
    • המצאת שפות תכנות, תוכניות הגירה לבכירים בעולם התוכנה, Frameworks חדשניים ופיקטיבים לזמנם, חלקם פשוט הקדימו אותו . .
      • למשל ה - Super Simple Storage Service - S4
      • עלייתו הצפויה לארץ של Werner Vogels
      • ה - D4: Directed Data Driven Document - מוצר שבאמת יצא בסופו של דבר (עם ראשי תיבות קצת שונים אבל אל תיהיו קטנוניים).
      • הכרזה על Angular 3 לפני שיצא 2 - ואז הם הכריזו על 4 . . .
      • הענן של Facebook: ה-Like Storage שיתחרה ב-S3
      • ועוד שלל נבואות והצלחות ענק - בתקווה לעוד בפרקי 1 באפריל הבאים

  • שפות תכנות וטכנולוגיות חדשניות שנסקרו במהלך השנים - 
    • היו הרבה . . . Go, Rust, Kotlin, Elm, Crystal, GraphQL, Swift, Let’s encrypt- שמעתם כאן לראשונה (אולי, לפעמים).
    • רמזים מוקדמים, נבואות והימורים, כולל מי ינצח? Go vs. Rust
      • יש חדשות גם בנושא הזה
    • על GraphQL רן שמע מדותן ואימץ בחום
    • גם Go ו-Let’s encrypt ועוד - לומדים ומיישמים וזה נחמד
  • והיו גם שפות תכנות מטופשות (עד שיוכח אחרת) שיצא לסקור - 
    • כי Borland C זה היסטוריה עתיקה - יש את ArnoldC: שפת תכנות שבנויה כולה על שורות של ארנולד שוורצנגר. אפשר לכתוב בזה תוכניות, בטוח נמצא ב-Production אצל מישהו (אחלה Job Security, נראה מי מעז למחוק)
    • שפה שימושית לא פחות (כי קשה) - Rockstar: שפה שמורכבת מבלדות של רוק כבד
      • עם יתרון אחד לא מבוטל - לגמרי לגיטימי לרשום בקו”ח שאתם Rockstar Developer
      • איפה שפת Ninja שתהפוך את הקו”ח למושלמים?
    • אם שפות תכנות היו כלי רכב
      • בלי הגרסא הישראלית של Java בתור סובארו פשע עם עבירות אינסופית
    • ואיך אפשר בלי המועמדים לנשיאות ארה”ב כשפות תכנות . . .

  • פרק ה Way Back עם “חדשות מפעם” - הכרזת Unix, חדשות על VI - ואלה רק הדברים ששרדו כדי שנוכל לצחוק עליהם
    • 1976 - הכרזה על VI (עוד לא VIM)
    • 1979 - תור Bash
    • 1991 - מודמים מזנקים לעתיד ומגיעים למהירות המדהימה של 14.4K!
    • 1993 - לינוקס!

  • עוד שפה עם עליות וירידות לאורך השנים - Dart

  • ההתערבות המפורסמת מכל - Go vs Rust


  • אי שם ב-2012 דיברנו על ES6 ודברים חדשים ב-JavaScript
    • “הדבר החדש הזה” . . . הרבה מזה קרה, הרבה לא
    • גם סוג של תזכורת למי הם Addy Osmani ו-Yehuda Katz, שניהם עשו המון
    • ההרצאה הנבואית על The Birth & Death of JavaScript נראתה בזמנו מצחיקה, היום נראה שהכל היה נכון
      • אפקט 1 באפריל כנראה לא ייחודי לבאמפרס, ונראה ששווה לשים לב לכל שטות לכאורה שאומרים על JavaScript
    • וזה מאנשים שלא היו מאוהדי TypeScript בהתחלה (בלשון המעטה), ודיברו בהערכה על Flow של פייסבוק.

  • הגענו ל-2014 - 
    • הזכרנו את Jim Weirich שנפטר - איש מאוד נחמד שכתב המון מהתשתיות של Ruby ועשה המון למען “ארגונומיה של קוד”.
    • זו גם הייתה שנת ה-Hitler memes  . . .
    • שנה שבא Clojure פרץ ולקח הרבה מפתחי Ruby איתו
      • היום זה די קרס לתוך איזושהי נישה, אז זה נראה יותר גדול
      • גילוי נאות - החברה שבה רן עובד עובדת לא מעט עם Clojure, יש מצב שזו הנישה
    • באותו שנה MongoDB היה בדיחה 
      • בניגוד לעכשיו? השמועות אומרות שעכשיו זה בסדר, ואם כותבים לתוכו משהו יש סיכוי סביר שיהיה אפשר לקרוא את זה אח”כ. לא ש Write-Only זה רע בהכרח.
    • שילוב של XML או HTML בתוך קוד? נשמע אז לא משהו. בדיעבד JSX לא כזה רע.
      • להגנתנו - ה- Homepage היה מאוד לא מזמין ולא נגיש. לא עושים דברים כאלה היום.

  • 2016 - 
    • מסתבר שדיברנו Parse -
      • סוג של Serverless של Facebook (אחרי רכישה)
      • אז זה מת, אבל נתן חיים להרבה דברים אחרים
      • התחיל כסרבר למובייל (ודואג ל-Push), כנראה כסוג של אסטרטגיה ליצור פלטפורמה שמפתחים עובדים עליה; מאז די עבר להם והאסטרטגיה השתנתה
      • מכאן והלאה Firebase צמח, אולי זה מה שנתן חיים לכל היקום ה-Serverless ? אולי.
      • אין סרבר - אין דאגות

  • רן מאוד התלהב בזמנו מ Lambda, אכל הרבה חצץ בהתחלה אבל חווייה חיובית בינתיים.
    • כולם רוצים להיות Serverless, גם מי שיש לו שרתים פיזיים. השם קצת בעייתי כי יש בסופו של דבר יש מכונה בקצה השרשרת.

  • ועוד משהו מרן - !Last commit before leaving a job
    • שישים שורות קוד של רשע טהור, כולל הגדרת פאי ל-3.2, הגדרה של IF כ-While ועוד פנינים
    • כולל דירוג של רמת האכזריות
    • כולל חלק שלם של Locks
    • נדרשת גרסא חדשה בעוד שפות - מי עוזב עכשיו עבודה עם C?! צריך להרים שרת במיוחד?

  • הויכוח בין Wix ל-WordPress סביב שימוש בקוד פתוח
    • העלה את נושא המודעות לרשיונות השונים וחשיבות ההבנה של מה שיושב בכל חברה
    • רכיב של Wix עשה שימוש (תמים?) ברכיב של WordPress; אולי היה עובר בשקט אלמלא היה מדובר במתחרות.
    • מרגיש כאילו זה היה אתמול . . .

  • ולחובבי Ruby - מהלך להגדרת השפה כ-Spec, מתוך מחשבה ליצור כל מיני וריאנטים של השפה
    • עזר לכל השפות להתפתח ולגדול - ודי למות . . . הכל התכנס לכדי משהו שלא ממש קיים
    • צוות ההובלה של Ruby לא עשה מספיק? צוות יפני (Matz) שהיום הוא חלק מ-Salesforce, ופחות מתקשר בשפות שאינן יפנית ולא ממש פתוח לעולם . . .
    • להשוואה - בשנתיים האחרונות רואים קפיצה משמעותית בפייתון, ו-Ruby נשארה די סטטית
      • אבל כבר הספדנו את  Dart אז אולי

  • סיפור לא נחמד מצד Heroku , שעשו ניתוב לאפליקציות מסויימות ל-compute יותר חלש למשל
    • האם זה יכול לקרות שוב בעולם של Serverless?
    • יש בכלל הגדרה נורמאלית מוסכמת של vCPU? שאלה טובה . . . אתה לא באמת יודע מי השכן לידך בחווה בסוף היום
    • המהירות של כל ליבה לא משתנה משמעותית בשנים האחרונות, יכול להיות שזה חלק מזה.

  • כמה אסימונים שנפלו במבט לאחור - 
    • בזמנו, Go נראתה כמו צעצוע מאוד יציב ומאוד פשוט . . שש שנים קדימה זה תפס בצורה מטורפת
      • התומכים הגדולים דווקא לא באו מתוך Google אלא מבחוץ; בתוך Google נראה לכאורה שיש מעט מאוד פרויקטים ב-Go, נראה שמי שכבר כותב ב ++C או Java כבר לא עובר כל כך מהר
      • למעט פרויקטים חיצוניים כמו K8S וכו’
      • עדיין מושקעים המון מאמצים ע”י Google
      • זו עדיין שפת ה-High Performance העיקרית, ויחסית קלה ללימוד
      • כבר שפה בוגרת, יש דיבורים על גרסא 2, עם רשימת מפתחים מאוד מכובדת

    • עוד בעבר הרחוק של פרק 18 דובר על Kubernetes פלטפורמה של גוגל להרצה של Docker
      • הפריצה בשנתיים האחרונות מדהימה (מאז הבעת האמון של Outbrain?)
      • לכל העננים המרכזיים יש שירות מנוהל ל K8S; טוב יותר או פחות אבל בכל מקרה סימן
      • כש-Docker יצא, זו הייתה תוכנה ב-Go . . . בזמנו Solomon Hykes תיאר את זה כמנוע לניהול של קונטיירים בפייתון, וכשזה נראה לא טוב אז החליטו ללמוד Go ולעבור. ואז להפוך את זה ל Open source . . .

    • תואר מלכת הדרמות - Node! הייתה תקופה שזה היה כמעט בכל פרק
      • הפיצול המדובר בין Node לבין io.js, ואז האיחוד הרומנטי בחזרה
      • כולל תקופה שבה בכל פרק היה אייטם על מעבר של עוד חברה מ-Node ל-Go
        • סכסוכים פנימיים, מעברים דרמטים, מפתחים שעברו, הרבה עניין
        • ועד הפרק האחרון עם I don’t know what to say . . .
      • קצת כמו מה שהיה פעם עם Windows - מערכת מאוד נפוצה --> כולם מנסים לפרוץ --> מוצאים יותר פרצות

    • קצת בלי ששמנו לב, Microsoft חזרה מהצד האפל
      • תומכת בקוד פתוח, קונה את Github, חביבת המפתחים . . . והגיהנום לא קפא.
      • החלפת המנכ”ל עשתה פלאים

    • קצת חזרה ל 2012-2013 - React מחקה עולם שלם . . .
      • מישהו זוכר Prototype? מי הימר על jQuery? רן . . .
      • ובסוף (נכון לעכשיו) React השאירה לכולם אבק
      • ועדיין - Angular עם בעיות אבל לגמרי חיה, ו-View צומחת יפה
      • מלפני React לא נשאר כלום

    • גיוס הפך לממש קשה . . .
      • יש זמן קבוע ואינסוף כלים ואין זמן להתעמק?
      • פערים בין היצע לביקוש? 15,000 מפתחים חסרים?
      • לא היו כל כך הרבה שפות? התרגלו לחפש את ה-Buzzwords וקשה למצוא את הבנאדם הספציפי
        • צריך ידע כללי טוב ולהכיר את ה-framework הנכון, ופחות קריטי לתכנת ממש טוב?
        • יש מוצרי חלב עם תוקף יותר ארוך מטכנולוגיות JavaScript . . .
      • וכולם רוצים Full stack - הרבה יותר רחב, אולי פחות מעמיק
      • הטכנולוגיה הכי חמה יצאה אחרי תחילת הראיון, לא רלוונטי . . .
      • הרבה פעמים הכישורים הנדרשים על מנת להביא Value ללקוחות מהר אינם כוללים תואר שלישי במדעי המחשב
        • השאלה מה קורה לאורך זמן - הטרנדים לא תמיד עובדים טוב בכל שלושת הצדדים של המטבע
        • להתעסק באופטימיזציה ולהמציא את הגלגל מחדש במקום להשתמש בספרייה קיימת לא בהכרח משרת היטב את הלקוחות, יש בזה כנראה גם אלמנט תרבותי
        • יכול להיות שמי שיש לו בסיס יותר רחב, יכול גם ללמוד יותר - ובכל מקרה רמת האבסטרקציה הנדרשת ממפתחים צריכה לעלות כל הזמן, לפעמים זה אומר ריחוק מה”ברזלים” ומ”CS Basics”
  • עד כאן לפרק היובל +5. בבאמפרס הבא חוזרים לחדשות באמת חדשות.

הקובץ נמצא כאן, האזנה נעימה ותודה רבה לעופר פורר על התמלול

יום רביעי, 6 בפברואר 2019

Summit 2018: Making Quick Decisions / Zohar Lerman

Whether you are a developer, a team leader or a product manager, your role involves making decisions on a daily basis. For most of us, making those decisions can be hard. This presentation is a cheat-sheet on how to hack your decision process. Using only a few easy steps and a cheap gadget, your decision-making process will become faster and more efficient.



MP3

Summit 2018: A ballad to a programmer (בלדה למתכנת) / Yoni Tsafir & Iftach Bar

They are back! After the viral success of last year's interview song, Iftach & Yoni return with an epic ballad about an epic programmer.

This will be a satirical song, mocking some of the unique patterns of modern software development in Israeli hi-tech.

There will be laughter. There will be tears. Don't miss out.



MP3

Summit 2018: Master the Art of the AST (and Take Control of Your JS!) / Yonatan Mevorach

Think of the new tools that are taking over the Javascript ecosystem: Babel, Typescript, Rollup, ESLint, etc.
What do they all have in common: they all take Javascript source code as input, and some emit Javascript code as output.
This talk will be a deep dive into the basic building block all these tools share: Transforming your code into a JS Abstract Syntax Tree (AST).
You'll learn to read, traverse, and manipulate the AST so you can extend Babel by writing your own plugins, or by writing custom ESLint rules to enforce your team's code conventions.
You'll also learn how to create super powerful "code-mods" to automatically convert thousands of legacy ES5 scripts to ES6 in seconds.



MP3

יום שני, 4 בפברואר 2019

Summit 2018: REST in peace? - cause APIs are much more than REST / Yonatan Maman

REST is commonly used and considered as the usual suspect to solve any inter-process communication. RPC, data dump, message notifications, actors model, are all valid ways to communicate between distributed systems. In this talk, I will explore the different approaches and technologies in order to help you pick the right architecture for your domain.



MP3

Summit 2018: Keep interviewing and nobody explodes: How WeWork uses games as part of our hiring / Yonatan Bergman

While finding good software engineers is hard, finding the right ones for your team is harder. As we grew our engineering teams, we found ourselves putting a lot of time and effort into not just the hiring of employees but also the fine-tuning of the hiring process itself. In this talk, I'm going to share with you how we use games as part of our interview process. What led us to use this technique, a few takeaways from running this experiment for the past year, how you can use it today and of course - a live demo where we defuse a bomb together



MP3

Summit 2018: Beyond the point estimate: uncertainty in neural networks for recommendations / Yoel Zeldes

Recommender systems need to optimize a delicate balance between exploring new recommendations and exploiting informative ones. Up until this point recommender systems employed mostly bayesian prediction algorithms and utilized the inherent measures of uncertainty to optimize the crucial exploration/exploitation balance. While DNNs obtain state of the art results, they present specific challenges for recommender systems due to their lack of standardized uncertainty measures needed for most exploration strategies. In this talk I’ll cover how we overcome this challenge at Taboola and how we use uncertainty measures to our advantage when serving content recommendations billions of times a day.



MP3