Przejdź do treści
Korzystanie z usług Twittera oznacza, że wyrażasz zgodę na korzystanie przez nas z plików cookie. Firma Twitter i jej partnerzy działają globalnie i wykorzystują pliki cookie do analiz, personalizacji treści i wyświetlania reklam.
  • Strona główna Strona główna Strona Główna, pierwsza strona.
  • O nas

Zapisane wyszukiwania

  • Usuń
  • W tej rozmowie
    Konto zweryfikowaneChronione tweety @
Proponowani użytkownicy
  • Konto zweryfikowaneChronione tweety @
  • Konto zweryfikowaneChronione tweety @
  • Język: polski
    • Bahasa Indonesia
    • Bahasa Melayu
    • Català
    • Čeština
    • Dansk
    • Deutsch
    • English
    • English UK
    • Español
    • Filipino
    • Français
    • Hrvatski
    • Italiano
    • Magyar
    • Nederlands
    • Norsk
    • Português
    • Română
    • Slovenčina
    • Suomi
    • Svenska
    • Tiếng Việt
    • Türkçe
    • Ελληνικά
    • Български език
    • Русский
    • Српски
    • Українська мова
    • עִבְרִית
    • العربية
    • فارسی
    • मराठी
    • हिन्दी
    • বাংলা
    • ગુજરાતી
    • தமிழ்
    • ಕನ್ನಡ
    • ภาษาไทย
    • 한국어
    • 日本語
    • 简体中文
    • 繁體中文
  • Masz konto? Zaloguj się
    Masz konto?
    · Nie pamiętasz hasła?

    Nowy na Twitterze?
    Zarejestruj się
Profil StanTwinB
McLaren Stanley
McLaren Stanley
McLaren Stanley
@StanTwinB

Tweets

McLaren Stanley

@StanTwinB

Principal Engineer @Amazon, formerly @Uber, @Twitter, @Microsoft, and @_BottleRocket. Wine Enthusiast

Seattle, WA
Dołączył czerwiec 2009

Tweets

  • © 2021 Twitter
  • O nas
  • Centrum Pomocy
  • Zasady
  • Polityka prywatności
  • Cookies (ciasteczka)
  • Informacje o reklamach
Odrzuć
Poprzedni
Dalej

Przejdź do profilu osoby

Zapisane wyszukiwania

  • Usuń
  • W tej rozmowie
    Konto zweryfikowaneChronione tweety @
Proponowani użytkownicy
  • Konto zweryfikowaneChronione tweety @
  • Konto zweryfikowaneChronione tweety @

Promuj ten tweet

Zablokuj

  • Tweetnij z lokalizacją

    Możesz dodawać lokalizację do Twoich Tweetów, jak miasto czy konkretne miejsce, z sieci lub innych aplikacji. W każdej chwili możesz usunąć historię lokalizacji swoich Tweetów. Dowiedz się więcej

    Twoje listy

    Utwórz nową listę


    Opcjonalne, poniżej 100 znaków

    Prywatność

    Kopiuj link do Tweeta

    Umieszczanie tweeta

    Embed this Video

    Umieść tego Tweeta na swojej stronie, kopiując poniższy kod. Dowiedz się więcej

    Umieść ten film na swojej stronie, kopiując poniższy kod. Dowiedz się więcej

    Hmm, wystąpił problem z połączeniem z serwerem.

    Umieszczając treści z Twittera na Twojej stronie internetowej lub w Twojej aplikacji, potwierdzasz, że akceptujesz naszą Umowę dla programistów i Zasady obowiązujące programistów.

    Podgląd

    Dlaczego widzę tę reklamę?

    Zaloguj się do Twittera

    · Nie pamiętasz hasła?
    Nie masz konta? Zarejestruj się »

    Zarejestruj się na Twitterze

    Nie ma Cię na Twitterze? Załóż profil, połącz go do interesujących Cię tematów – i otrzymuj aktualności gdy tylko się wydarzą!

    Zarejestruj się
    Masz konto? Zaloguj się »

    Wysyłanie i odbieranie krótkich kodów:

    Kraj Kod Dla klientów
    Stany Zjednoczone 40404 (dowolny)
    Kanada 21212 (dowolny)
    Wielka Brytania 86444 Vodafone, Orange, 3, O2
    Brazylia 40404 Nextel, TIM
    Haiti 40404 Digicel, Voila
    Irlandia 51210 Vodafone, O2
    Indie 53000 Bharti Airtel, Videocon, Reliance
    Indonezja 89887 AXIS, 3, Telkomsel, Indosat, XL Axiata
    Włochy 4880804 Wind
    3424486444 Vodafone
    » Zobacz krótkie kody SMS dla innych państw

    Potwierdzenie

     

    Witamy!

    Na osi czas spędzisz najwięcej czasu, czytając wiadomości o sprawach, które Cię interesują.

    Tweety Cię nie interesują?

    Najedź kursorem na zdjęcie profilowe i kliknij przycisk Obserwowany, by przestać obserwować dowolne konto.

    Powiedz wiele kilkoma słowami

    Gdy widzisz Tweeta, którego lubisz, dotknij ikony serca — jego autor dowie się, że jego wpis przypadł Ci do gustu.

    Udostępnij wiadomość

    Najszybszym sposobem na udostępnienie czyjegoś Tweeta jest podanie go dalej. Dotknij ikony, by to zrobić.

    Dołącz do rozmowy

    Powiedz, co myślisz o Tweecie, odpowiadając na niego. Znajdź temat dyskusji, który Cię interesuje, i dołącz do rozmowy.

    Zobacz najnowsze wiadomości

    Bądź zawsze na bieżąco i obserwuj publiczne dyskusje.

    Zyskaj więcej tego, co lubisz

    Obserwuj więcej kont, by widzieć więcej wiadomości na tematy, które Cię interesują.

    Sprawdź, co się dzieje

    Zobacz najnowsze rozmowy na dowolny temat.

    Nigdy nie przegap Chwili

    Bądź na bieżąco z najciekawszymi historiami.

    McLaren Stanley‏ @StanTwinB 9 gru 2020

    McLaren Stanley podał/a dalej McLaren Stanley

    Alright folks, gather round and let me tell you the story of (almost) the biggest engineering disaster I’ve ever had the misfortune of being involved in. It’s a tale of politics, architecture and the sunk cost fallacy [I’m drinking an Aberlour Cask Strength Single Malt Scotch]https://twitter.com/StanTwinB/status/1336835936538087428 …

    McLaren Stanley dodał/a,

    McLaren Stanley @StanTwinB
    W odpowiedzi do @tapbot_paul @lorenb @gsapienza
    I’m gonna have to get a glass of whiskey to answer this properly.
    20:28 - 9 gru 2020
    • 2 078 podań dalej
    • 7 281 polubień
    • Adeetier Serhat Şahin yuya Tomonori Takanawa TSUCHIDA makoto はんちゃんさん タカハシラボ SHIMIZU Taku cutmail
    106 odpowiedzi 2 078 podanych dalej 7 281 polubionych
      1. Nowa rozmowa
      2. McLaren Stanley‏ @StanTwinB 9 gru 2020

        The year was 2016. Donald Trump was not yet the President therefore the #DeleteUber movement hadn’t happened yet. TK was still the CEO, we were still in the hyper growth phase of international rollout, public sentiment was overwhelmingly positive, Uber was riding high.

        3 odpowiedzi 1 podany dalej 199 polubionych
        Pokaż ten wątek
      3. McLaren Stanley‏ @StanTwinB 9 gru 2020

        But hypergrowth is not without its problems, and the app itself was starting to show some cracks. The engineering org had doubled in sized almost every year prior, and when you grow that fast you end up with an incredibly wide range of skill. That paired with a hacking mentality

        1 odpowiedź 3 podane dalej 221 polubionych
        Pokaż ten wątek
      4. McLaren Stanley‏ @StanTwinB 9 gru 2020

        that we called “Let builder’s build”, meant that the app architecture was complicated and fragile. Uber at the time was extremely heavy on client side logic so the app would break a lot. We were constantly doing hot fixes, burning releases, etc. The design was also scaling badly.

        3 odpowiedzi 6 podanych dalej 242 polubione
        Pokaż ten wątek
      5. McLaren Stanley‏ @StanTwinB 9 gru 2020

        As a consequence of all these problems, there began to be a growing movement across all levels of the org that was rallying around the idea of “rewriting the app from scratch” The general sentiment was that the architecture was slowing us down, starting over would be faster.

        4 odpowiedzi 5 podanych dalej 231 polubionych
        Pokaż ten wątek
      6. McLaren Stanley‏ @StanTwinB 9 gru 2020

        So a team was formed to build a new mobile architecture for this new app. The driving charter for the team was to build an architecture that would “sustain mobile development at Uber for the next 5 years”. We did both platforms at once. Product and Design also started over.

        3 odpowiedzi 4 podane dalej 202 polubione
        Pokaż ten wątek
      7. McLaren Stanley‏ @StanTwinB 9 gru 2020

        On the iOS side of the world, the rewrite presented an opportunity to adopt Swift (which was in version 2.x during this timespan). Uber had tried Swift before, but like many who had adopted it that early on it was extremely problematic so it had been banned prior to the rewrite.

        1 odpowiedź 1 podany dalej 163 polubione
        Pokaż ten wątek
      8. McLaren Stanley‏ @StanTwinB 9 gru 2020

        But the general feeling of the architecture team was that most of Swift’s problems centered around the flakiness of the Objective-C interop back then so if we wrote a pure Swift app we could avoid the major issues.

        1 odpowiedź 0 podanych dalej 155 polubionych
        Pokaż ten wątek
      9. McLaren Stanley‏ @StanTwinB 9 gru 2020

        There was also a push to use the same major architectural patterns on both Android and iOS. The android folks at the time were big RxJava fans, and there was an equivalent RxSwift library that took advantage of the functional programming paradigms in Swift. Seemed straightforward

        1 odpowiedź 1 podany dalej 174 polubione
        Pokaż ten wątek
      10. McLaren Stanley‏ @StanTwinB 9 gru 2020

        So this smaller core team of Design, Product, and Architecture went off in a room for with their new functional/reactive patterns, new language, and new app for a few months. Everything went well. The architecture relied heavily on the advanced language features of Swift.

        2 odpowiedzi 0 podanych dalej 163 polubione
        Pokaż ten wątek
      11. McLaren Stanley‏ @StanTwinB 9 gru 2020

        The UI design was scalable for the growing number of products that Uber offered, the functional programing paradigm was powerful (albeit a bit of a learning curve), the architecture centered around our new realtime stream based networking protocol (that’s the part I wrote).

        2 odpowiedzi 1 podany dalej 192 polubione
        Pokaż ten wątek
      12. McLaren Stanley‏ @StanTwinB 9 gru 2020

        After a few months and a number of flashy demos later the momentum was building. The project was looking like a success. They had built amazing experiences in a short time with a small number of engineers. Most of the core product was built out. The execs were sold.

        1 odpowiedź 1 podany dalej 163 polubione
        Pokaż ten wątek
      13. McLaren Stanley‏ @StanTwinB 9 gru 2020

        So the company-wide rollout began. Teams began shifting all their focus to bringing their features to the new app. At first the excitement of the new created a flurry of motivation and productivity. The architecture was built for feature isolation which allowed teams to move fast

        1 odpowiedź 0 podanych dalej 170 polubionych
        Pokaż ten wątek
      14. McLaren Stanley‏ @StanTwinB 9 gru 2020

        But once Swift started to scale past ten engineers the wheels started coming off. The Swift compiler is still much slower than Objective-C to then but back then it was practically unusable. Build times went though the roof. Typeahead/debugging stopped working entirely.

        4 odpowiedzi 8 podanych dalej 259 polubionych
        Pokaż ten wątek
      15. McLaren Stanley‏ @StanTwinB 9 gru 2020

        There’s a video somewhere in one of our talks of an Uber engineer typing a single line statement in Xcode and then waiting 45 seconds for the letter to appear in the editor slowly, one-by-one.

        6 odpowiedzi 25 podanych dalej 512 polubionych
        Pokaż ten wątek
      16. McLaren Stanley‏ @StanTwinB 9 gru 2020

        Then we hit a wall with the dynamic linker. At the time you could only link Swift libraries dynamically. Unfortunately the linker executed in polynomial time so Apple’s recommend maximum number of libraries in a single binary was 6. We had 92 and counting.

        3 odpowiedzi 15 podanych dalej 348 polubionych
        Pokaż ten wątek
      17. McLaren Stanley‏ @StanTwinB 9 gru 2020

        As a result It took 8-12 seconds after tapping the app icon before main was even called. Our shinny new app was slower than the old clunky one. Then the binary size problem hit.

        1 odpowiedź 6 podanych dalej 236 polubionych
        Pokaż ten wątek
      18. McLaren Stanley‏ @StanTwinB 9 gru 2020

        But to answer @tapbot_paul ’s original question, when the problems started showing up in earnest, we were already way past the point of no turning back (sunk cost fallacy). At this point the whole company was pouring its energy into the new app.

        1 odpowiedź 4 podane dalej 245 polubionych
        Pokaż ten wątek
      19. McLaren Stanley‏ @StanTwinB 9 gru 2020

        Thousands of people across every discipline, millions and millions (I can’t tell you the real number but it was way more than 1) of dollars had been spent. The whole management chain was fully bought in. I had privately had the “we need to stop” conversation with my director.

        1 odpowiedź 3 podane dalej 224 polubione
        Pokaż ten wątek
      20. McLaren Stanley‏ @StanTwinB 9 gru 2020

        He told me that if this project fails he might as well pack his bags. The same was true for his boss all the way up to the VP. There was no way out.

        5 odpowiedzi 7 podanych dalej 269 polubionych
        Pokaż ten wątek
      21. McLaren Stanley‏ @StanTwinB 9 gru 2020

        So we rolled up our sleeves, and put our best people on each of the problems and prioritized the launch critical issues (dynamic linking, binary size). I was assigned to both dynamic linking and binary size in that order.

        1 odpowiedź 0 podanych dalej 190 polubionych
        Pokaż ten wątek
      22. McLaren Stanley‏ @StanTwinB 9 gru 2020

        We quickly discovered that putting all of our code in the main executable solved the linking problem at App start up. But as we all know, Swift conflates namespacing with frameworks; so to do so would take a huge code change involving countless namespace checks.

        1 odpowiedź 0 podanych dalej 193 polubione
        Pokaż ten wątek
      23. McLaren Stanley‏ @StanTwinB 9 gru 2020

        That’s when the brilliant Richard Howell (not sure if he’s on Twitter) discovered while reading the Xcode build output that he could take all the intermediate object files and re-link them back into the main executable with a custom script after the build was complete.

        2 odpowiedzi 6 podanych dalej 388 polubionych
        Pokaż ten wątek
      24. McLaren Stanley‏ @StanTwinB 9 gru 2020

        Since Swift mangles the object namespace into the symbol name itself at compile time, this meant that he could safely preserve the namespacing while doing this. This allowed us to effectively static link our libraries and cut our pre-main time from 10 to basically 0.

        1 odpowiedź 2 podane dalej 286 polubionych
        Pokaż ten wątek
      25. McLaren Stanley‏ @StanTwinB 9 gru 2020

        Next problem: App Size. At the time we were planning to include the new app in the old app bundle and slowly roll it out at runtime as a safety net. First thing we did to buy space was to just remove the old app. We called this release strategy “Yolo”. TK himself made the call.

        2 odpowiedzi 5 podanych dalej 415 polubionych
        Pokaż ten wątek
      26. McLaren Stanley‏ @StanTwinB 9 gru 2020

        We also replaced *all* of our Swift structs with classes. Value types in general have a ton of overhead due to object flattening and the extra machine code needed for the copy behavior and auto-initializers etc. This saved us space so we pressed on.

        2 odpowiedzi 12 podanych dalej 263 polubione
        Pokaż ten wątek
      27. McLaren Stanley‏ @StanTwinB 9 gru 2020

        But as the app kept growing. Soon we hit the cellar download limit (100 mb) for our universal binaries (iOS 8 and earlier). This represented a substantial amount of lost signups (it dollars it would cost us in the order of 8 figures of people who hadn’t upgraded yet).

        2 odpowiedzi 2 podane dalej 188 polubionych
        Pokaż ten wątek
      28. McLaren Stanley‏ @StanTwinB 9 gru 2020

        At this point we were weeks away from the public launch date. We had graciously received help from a certain company that I’m still under NDA with, but they couldn’t solve our problem. The only thing we could do was regenerate all the model code (25% of the total line count)

        2 odpowiedzi 0 podanych dalej 177 polubionych
        Pokaż ten wątek
      29. McLaren Stanley‏ @StanTwinB 9 gru 2020

        back into Objective-C or drop support for iOS 8. Since iOS 9 had introduced individual architecture slicing it was affectively half the size (give or take). With only a week left we decided eat the 8 figures and drop support for iOS 8.

        1 odpowiedź 2 podane dalej 198 polubionych
        Pokaż ten wątek
      30. McLaren Stanley‏ @StanTwinB 9 gru 2020

        The general thinking was that at half the size we still had plenty of runway with the iOS 9 binary, and after the rewrite was done we could solve the problem sometime way down the road, because things would slow down a bit. We were unfortunately completely wrong about that.

        1 odpowiedź 2 podane dalej 181 polubionych
        Pokaż ten wątek
      31. McLaren Stanley‏ @StanTwinB 9 gru 2020

        After the app release we threw a huge party. The app was well received by the press. It was fast and snappy, with a flashy new design. A bunch of people got promoted. We all breathed a sigh of relief. The 90 work weeks stopped for a few weeks.

        5 odpowiedzi 2 podane dalej 303 polubione
        Pokaż ten wątek
      32. Pokaż odpowiedzi

    Wydaje się, że ładowanie zajmuje dużo czasu.

    Twitter jest przeciążony lub wystąpił chwilowy problem. Spróbuj ponownie lub sprawdź status Twittera, aby uzyskać więcej informacji.

      Tweet promowany

      false

      • © 2021 Twitter
      • O nas
      • Centrum Pomocy
      • Zasady
      • Polityka prywatności
      • Cookies (ciasteczka)
      • Informacje o reklamach