יום שני, 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

יום חמישי, 31 בינואר 2019

360 Via

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

לפני הכל, חדשות מרגשות - כנס רברסים השביעי (Reversim Summit 2019) יוצא לדרך!
  • 17-16 ביוני 2019 - עדכנו ביומן slightly smiling face
  • ספונסרים יתקבלו בברכה - אם החברה שלכם רוצה להיות בשורה הראשונה בכנס, זה הזמן לתפוס מקום.
  • וגם אתם - ה Call for Papers נפתח! - בואו ספרו על משהו מעניין שעשיתם או למדתם וחושבים שכדאי לשתף - הגשות עד סוף פברואר (28/2)

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

אז מהו המוצר של Via?
  • חברה טכנולוגית שפיתחה מערכת לתחבורה ציבורית חכמה
  • האלגורתים יודע  לאסוף ולחבר אנשים על מנת לשתף נסיעה על אותו רכב - בכ-30 ערים בעולם, כשנוסע מזמין נסיעה האפלקיציה מנחה אותו להגיע לנקודת העלייה (פינת הרחוב הקרובה למשל), ומאפשרת לחלוק את הנסיעה עם עוד אנשים
    • איך זה נראה? מיניבוס, לרוב של מפעיל קיים או של העירייה, או מונית גדולה שבאה ואוספת ומסיעה באיזור מוגדר.
    • המוצר יודע גם לספק מערכת למפעיל קיים - טאבלט עבור הנהג שמקבל הנחיות נסיעה והורדת / העלאת נוסעים (יש גם אפליקציות לנוסעים, מפעילי נסיעה וכו’) - וגם להפעלה עצמאית ע”י Via (אמסטרדם, לונדון ועוד)
    • מכירים Uber, Gett וכו’? אז מעיין שילוב של Uber ואגד עם אלמנט של On-Demand והרבה טכנולוגיה.
    • בישראל יש פיילוט עם חברת דן שמובל ע”י משרד התחבורה והאוצר - נדבך נוסף לשירות של דן בתל אביב, רמת גן וגבעתיים.
      • מיניבוסים של דן עם חוויית שירות מלאה של Via, שיסעו במרחב פוליגון מסויים (תמיד רציתם לנסוע בפוליגון? הנה זה בא); ממוקד באיזורי התעסוקה ותחנות הרכבת - במטרה להוריד את הרכבים הפרטיים מהכביש עד כמה שניתן - הרכב הפרטי מוגדר כמתחרה האמיתי.
      • מזמינים נסיעה, קובעים יעד - ונוסעים עם עוד אנשים (קצת דומה ל- UberPool)
    • בישראל יש כזה כבר? אין סיבה שלא כל האוטובוסים יעבדו ככה, במקום לעבוד עם תחנות וזמנים קשיחים
      • בהינתן שאנחנו יודעים איפה כל נוסע נמצא (אם הוא רוצה ובוחר לשתף נקודת מוצא ויעד), אין סיבה לא “לדבר” עם אמצעי תחבורה אחרים. עם או בלי Via - זה משהו שכבר קורה.
      • לדוגמא - נוסעים ב-Via, יורדים ליד תחנה של אופניים שיתופיים וממשיכים איתם לרכבת
  • עוד נדבך - רכב חשמלי
    • קצת פחות PR מהרכב האוטונומי לאחרונה ועדיין מהפכה ענקית - Via מנהלת צי כזה בברלין. גם ירוק יותר וגם מאפשר לנהל את צריכת האנרגיה של הרכבים כך שהנוסע אדיש למצב הסוללה
      • עוד יותר קריטי בוואן של 8-10 מקומות.
  • רגע - כשמישהו נכנס לאוטובוס היום, המסלול קבוע והוא יודע לאן נוסעים ומתי מגיעים, בערך. עם Via הנוסע לא באמת יודע מה יהיה המסלול
    • מקביל היום למצב בו אתה היום נוסע במונית, נתקע בפקק - ומחליט לרדת ולהמשיך ברגל. 
    • המערכת יודעת לחשב מקרים כאלה בזמן אמת ולהגיד מתי כדאי לקום ולהמשיך ברגל - בכל פעם תתקבל תוצאה אחרת בהתאם למצב הנתון.
      • הסתיים משחק כדורגל? שכונה חדשה אוכלסה מאז שנקבע המסלול של הקו? רכבת תחתית כבר נבנית (15-20 שנה וזה כאן)? המערכת של Via מגיבה בזמן אמת.
    • החשש מאוד רלוונטי, והאחריות של מוצר היא שזה לא יקרה - שהדרך תיהיה היעילה ביותר עם העיקופים המינימליים - על מנת שהלקוח יחזור וישתמש במוצר כי החווייה טובה.
  • התשלום - גמיש לגמרי, נקבע יחד עם המפעיל (מרחק, זמן וכו’) - יקר מתחבורה ציבורית אבל זול ממונית ספשייל.
    • מחזיר לניגוד האינטרסים בין תשלום לפי זמן לבין המסלול היעיל ביותר - ולאותה תשובה של מחוייבות ארוכת טווח ללקוחות חוזרים ולא ניסיון למקסם רווח במפגש יחיד.
  • מעבר לזה - הניסיון התפעולי מאפשר לפתח מוצרים לשיפור חוויית משתמש - תמרוץ נהגים, למשל
    • הנהגים הם גם לקוחות, שמעודדים אותם לאסוף כמה שיותר נוסעים ולחזור ולהפעיל את השירות גם מחר. אם הנהג נתקע צריך לספק לו רכב אחר, למשל.
    • הנהג יכול להתערב באלגוריתם- לא לקבל נוסע למשל? בקצרה - לא. אין 100% שליטה (לא, אסור לחשמל נהגים סוררים), אבל בגדול המשוב מהנהגים מאוד חיובי.

ברלין, ניו-יורק - איפה עוד?

החברה אמריקאית, הוקמה ע”י שני יזמים ישראלי - אורן שובל ודניאל רמות
  • אורן נסע במונית שירות בתל אביב, שמע את השיחה של הנהג עם הסדרן והניח שב-2012 אפשר לעשות את זה טוב יותר, פנה לחבר שלו דניאל שישב בניו-יורק - ושם גם נפתחה האופרציה הראשונה.
  • מרכז הפיתוח בתל אביב עם כ-200 מהנדסים, אופרציה בכל העולם.

נגענו בכל מיני בעיות שקשורות באלגוריתמים, הגיע הזמן לחזור לזה קצת
  • אנחנו רוצים לשמור על הלקוחות מרוצים, ושגם הנהג יהיה מרוצה, ולהתאים את הרכבים החשמליים . . . הרבה אילוצים ובעיות אופטימיזציה.
  • למשל, עליתי על רכב - התשובה ל-”מתי אגיע ליעד?” לא ברורה לגמרי
  • וזה רק מסתבך, כי צריך להגדיר מהו בעצם “עיקוף” - פילוסופית, אולי זו הדרך הכי טובה ואתה לא יודע וזה רק נראה כמו עיקוף, אז האם זה באמת עיקוף? זן ואומנות אחזקת האופנוע מעולם לא היה רלוונטי יותר.
    • ונניח שהגדרנו עיקןף - מהו “עיקוף סביר”? וזה רק אתגר אחד.
  • ועוד אחד - לאן הרכבים נוסעים כשהאגם קפוא (או סתם נגמרת הנסיעה במהלך היום)? הרכב ריק ועכשיו מה?
    • אפשר לעמוד במקום (לא תמיד באמת אפשר); אפשר ללכת לשתות משהו; אפשר לנסות להגיע לאן שצפויים להיות בו נוסעים; ויש עוד
    • ל-Via יש את המידע והדרך לחזות לאן לנהג כדאי לנסוע, גם כשהוא לא יודע לחזות בעצמו
  • עוד גרסא של השאלה הזו - על הנהג להיות זמין בשעת פתיחת השירות בבוקר, אבל איפה להמתין? 
    • נניח שיש N נקודות אפשריות (כן, הגענו לשלב הזה בשיחה), ונניח אפילו שאנחנו יודעים בדיוק איפה צפויים לעמוד הלקוחות
    • מי שצריך הסעה ב-6:00 רוצה שהיא תיהיה שם, אין לו סבלנות לחכות (היה מעדיף אפילו להזמין קודם - ואם עשה כך אז אני יודע איפה הוא צפוי להיות)
      • בסינגפור Via מימשה את הפי’צר הזה בדיוק
    • אז איפה הנהג צריך לחכות על מנת להביא למינימום את משך ההמתנה הצפוי? פתרון אחר בתכנות לניארי הוא להניח יש מספר מסויים של נקודות העיר, ושאנחנו יודעים מה הזמן הצפוי להגעה מכל נקודה לכל נקודה - וסכום הזמנים של כל נסיעה שתקרה בפועל הוא משך זמן הנסיעה הצפוי וזו הפונקציה שאנחנו רוצים להביא למינימום.
    • בעיית הסוכן הנוסע היא עדיין בעיית NP קשה, ו P<>NP נכון לזמן הקלטת הפרק, והסוכן עדיין נוסע. אולי ב-Via, אבל נוסע.
    • יותר מזה - זה לא סוכן בודד, ויש המון תלויות בין הרכבים לנוסעים ולקשרים בינהם.
    • אז יש לנו N רכבים ו-M נוסעים - ו-N x M משתנים - וגם הם (הנה זה בא) בוליאנים (0 או 1 - אי אפשר לאסוף חצי נוסע עם רבע רכב, וגם אם אפשר זה לא יראה טוב) - והאילוצים כולם לינאריים.
      • ויש גם את עניין היעד שהוא גם אילוץ
      • ויש עוד פילוסופיה - האם הממוצע עונה על הדרישה? - 100 נוסעים המתינו דקה והנוסע ה-101 המתין שעה - האם זה מצב קביל? צריך להגדיר האם זה הוגן
    • באינטרנט מסתכלים על אחוזונים (95% מקבלים שירות טוב), וזה אפשרי גם ברמת המוצר, כשאפשר להוסיף תיקונים - אם אני יודע מראש שאני עומד לאחר אני יכול לשלוח לנוסע הודעת התנצלות, אולי עם פיצוי (“הנסיעה עלינו”, “תחזיק מעמד” וכו’) - אני יודע לטפל ולהגיב בזמן אמת 
      • מי אמר עמוד אינטרנט שמציג ספינר כשהוא איטי?
    • אפשר להציב חסמים ולהגיד שמעל זמן תגובה מסויים אנחנו לא מעוניים לתת את השירות כי הוא יהיה שירות לא טוב, ואנחנו בוחרים להגיד “לא” מאשר לתת שירות בכזו רמה.
  • רגע, מכל זה - מה זה בכלל תכנות ליניארי?
    • שיטה לפתרון בעיה שאותה ניתן לתאר באמצעות אוסף של משוואות ליניאריות (לא ראיתם את זה בא?)
    • האילוצים מיוצגים כאי-שיוויונות לינאריים (X+Y>4, כאלה) - משוואות ממעלה גבוהה יותר יהיו הרבה יותר מסובכות לפתרון, אילוצים לינאריים יחסית קל לפתור בזמן סביר
    • עוד משהו - הפתרון למשוואות ליניאריות לרוב יהיה רציף, ולנו יש משתנים בוליאניים (0 או 1), ולא סביר לאסוף חצי נוסע (הוא עלול להגיב לא טוב אם ננסה).
    • אל דאגה - יש פתרון! הבעיה הזו שקולה לקבוצת בעיות הידועה בשם Transportation Problems
      • דווקא לא בהקשר של תחבורה אלא יותר של הובלת מסעות
      • וכאן יש תכונה (של מטריצות) שמכונה יוני-מודולאריות (Unimodular) - ובלי להיכנס יותר מדי ל-PTSD מאלגברה א’ זה מבטיח שהתוצאה תיהיה גם בשלמים. כן, זה עובד.

האם הבעיה נפתרת בכל פעם מחדש, או שבכל עיר נקודות האיסוף קבועות פחות או יותר?
  • את הבעיה אנחנו פותרים כל הזמן, וזו נגזרת של בעיית ה-”לאן הרכבים נוסעים כשהם מתרוקנים?” שהזכרנו קודם
  • בהינתן שאנחנו יודעים מהי התמונה הכוללת של היצע וביקוש, אפשר ליצור מערכת אופטימלית ברמת המכלול. כשיש שירותים שפעילים 24/7 זה פחות רלוונטי, אבל כשיש שעת התחלה וסיום זה בדיוק מה ש-Via עושים.

מה לגבי חוסר איזון? בבוקר יש תנועה מהעיר אל איזורי התעסוקה, עד ש”העיר ריקה ממכוניות” וכולם יסיימו את הנסיעה באיזורי התעסוקה. ובערב הפוך . . .
  • בהנחה שכולם משתמשים ב-Via, אפשר לחכות במקום . . . מעבר לזה זה כבר איזון של השוק.
  • המערכת מתפתחת לענות על אתגרים של היצע וביקוש
    • הרבה יותר נוסעים מעדיפים את השירות דווקא בערב - בבוקר התנועה יחסית קבועה בשעה קבועה, אבל אחרי העבודה מגוון האפשרויות הרבה יותר גדול, והתועלת של שירות כמו Via גדלה.

מתי נסיעה מסתיימת?
  • כשכולם יורדים, כולם הגיעו לעבודה ואף אחד עדיין לא רוצה לחזור
  • המערכת מפנה את הרכב למקום שבו צפוי הביקוש הבא (בהתאם למערכת כולה)
  • כשיש רכב אוטונומי, הנסיעה אף פעם לא נגמרת - מתקיים עכשיו ניסוי באוסטרליה שבו Via בוחנת בדיוק את זה
    • השלב הבא - נוסעים אוטונומיים שיסעו ברכבים עם נהגים אמיתיים?

איך מבטיחים הוגנות לנהג?
  • ובכן - מתייחסים אליהם כאל לקוחות . . . הנוסע מחכה 3 דקות ונוסע עוד 20 דקות, בעוד שהנהג הוא הפנים של השירות כל הזמן
    • מובילים אותו לנקודת מנוחה כשצריך, מספקים תמריצים לעבודה טובה וכו’ (השכר שונה בהתאם לביצוע).
    • האם קורה שנהגים חורגים מהמסלול? כן . . . יש בקרה ותגמול, וחישוב מסלול מחדש כשצריך
      • חשוב שהנהג יעקוב אחרי המסלול כפי שנקבע, כי אפליקציה כמו Waze למשל תנחה אותו למסלול הקצר ביותר, בעוד Via תחפש מסלול אולי קצת יותר ארוך אבל עם סיכוי לאסוף עוד נוסעים
      • יש גם התחשבות באירועים נקודתיים (הסתיים קונצרט והדרך כבר לא כל כך קצרה וכו’)
      • ועוד נקודה - לא בבהכרח צריך להגיע לנקודה המדוייקת: אפשר להגיד לנוסע לרדת וללכת ברגל את 50 המטרים האחרונים, ולא להשקיע עוד 20 דקות בלהקיף את הבלוק או להיתקע בפקק כדי להיכנס לרחוב חד-סטרי מהכיוון הנכון כדי להגיע לנקודה המדוייקת.

עוד נושאים לסיום?
  • מתרגשים מכך שהשירות מגיע לישראל (גם כאן) - מרכז הפיתוח יוכל להרגיש את המוצר באופן יומיומי
  • ב-Via מגייסים slightly smiling face - מפתחים, אלגוריתמאיות, Data Scientists . . .

הפתרון האידיאלי - לצאת לפריפריה! הכי טוב :-)

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