Skip to content
By using Twitter’s services you agree to our Cookies Use. We and our partners operate globally and use cookies, including for analytics, personalisation, and ads.
  • Home Home Home, current page.
  • About

Saved searches

  • Remove
  • In this conversation
    Verified accountProtected Tweets @
Suggested users
  • Verified accountProtected Tweets @
  • Verified accountProtected Tweets @
  • Language: English
    • Bahasa Indonesia
    • Bahasa Melayu
    • Català
    • Čeština
    • Dansk
    • Deutsch
    • English UK
    • Español
    • Filipino
    • Français
    • Hrvatski
    • Italiano
    • Magyar
    • Nederlands
    • Norsk
    • Polski
    • Português
    • Română
    • Slovenčina
    • Suomi
    • Svenska
    • Tiếng Việt
    • Türkçe
    • Ελληνικά
    • Български език
    • Русский
    • Српски
    • Українська мова
    • עִבְרִית
    • العربية
    • فارسی
    • मराठी
    • हिन्दी
    • বাংলা
    • ગુજરાતી
    • தமிழ்
    • ಕನ್ನಡ
    • ภาษาไทย
    • 한국어
    • 日本語
    • 简体中文
    • 繁體中文
  • Have an account? Log in
    Have an account?
    · Forgot password?

    New to Twitter?
    Sign up
Jonathan_Blow's profile
Jonathan Blow
Jonathan Blow
Jonathan Blow
@Jonathan_Blow

Tweets

Jonathan Blow

@Jonathan_Blow

Game designer of Braid and The Witness. Partner in IndieFund.

San Francisco
the-witness.net/news
Joined January 2010

Tweets

  • © 2019 Twitter
  • About
  • Help Center
  • Terms
  • Privacy policy
  • Imprint
  • Cookies
  • Ads info
Dismiss
Previous
Next

Go to a person's profile

Saved searches

  • Remove
  • In this conversation
    Verified accountProtected Tweets @
Suggested users
  • Verified accountProtected Tweets @
  • Verified accountProtected Tweets @

Promote this Tweet

Block

  • Tweet with a location

    You can add location information to your Tweets, such as your city or precise location, from the web and via third-party applications. You always have the option to delete your Tweet location history. Learn more

    Your lists

    Create a new list


    Under 100 characters, optional

    Privacy

    Copy link to Tweet

    Embed this Tweet

    Embed this Video

    Add this Tweet to your website by copying the code below. Learn more

    Add this video to your website by copying the code below. Learn more

    Hmm, there was a problem reaching the server.

    By embedding Twitter content in your website or app, you are agreeing to the Twitter Developer Agreement and Developer Policy.

    Preview

    Why you're seeing this ad

    Log in to Twitter

    · Forgot password?
    Don't have an account? Sign up »

    Sign up for Twitter

    Not on Twitter? Sign up, tune into the things you care about, and get updates as they happen.

    Sign up
    Have an account? Log in »

    Two-way (sending and receiving) short codes:

    Country Code For customers of
    United States 40404 (any)
    Canada 21212 (any)
    United Kingdom 86444 Vodafone, Orange, 3, O2
    Brazil 40404 Nextel, TIM
    Haiti 40404 Digicel, Voila
    Ireland 51210 Vodafone, O2
    India 53000 Bharti Airtel, Videocon, Reliance
    Indonesia 89887 AXIS, 3, Telkomsel, Indosat, XL Axiata
    Italy 4880804 Wind
    3424486444 Vodafone
    » See SMS short codes for other countries

    Confirmation

     

    Welcome home!

    This timeline is where you’ll spend most of your time, getting instant updates about what matters to you.

    Tweets not working for you?

    Hover over the profile pic and click the Following button to unfollow any account.

    Say a lot with a little

    When you see a Tweet you love, tap the heart — it lets the person who wrote it know you shared the love.

    Spread the word

    The fastest way to share someone else’s Tweet with your followers is with a Retweet. Tap the icon to send it instantly.

    Join the conversation

    Add your thoughts about any Tweet with a Reply. Find a topic you’re passionate about, and jump right in.

    Learn the latest

    Get instant insight into what people are talking about now.

    Get more of what you love

    Follow more accounts to get instant updates about topics you care about.

    Find what's happening

    See the latest conversations about any topic instantly.

    Never miss a Moment

    Catch up instantly on the best stories happening as they unfold.

    1. Andreas Svensson‏ @syranide Jun 16
      • Report Tweet
      Replying to @RobertWalter83 @Jonathan_Blow

      I would say it's even the name, "language *server* protocol". The objection is that there is absolutely no reason for that to be exposed as a server, HTTP-server with JSON-RPC no less. Could you even imagine how complex this would be if you made it into 5 servers communicating

      1 reply 0 retweets 0 likes
    2. Andreas Svensson‏ @syranide Jun 16
      • Report Tweet
      Replying to @syranide @RobertWalter83 @Jonathan_Blow

      amongst themselves? I sincerely hope you can appreciate the danger of an entire generation believing that replacing something so fundamental and simple as synchronous function calls with asynchronous HTTP-requests to a JSON-RPC HTTP-server is somehow desireable and good. It's not

      2 replies 0 retweets 1 like
    3. Jonathan Blow‏ @Jonathan_Blow Jun 16
      • Report Tweet
      Replying to @syranide @RobertWalter83

      The one thing I didn’t mention in the talk, too, is that once you have N servers, the claim “this insulated your program from a crash” is clearly untrue, because have fun trying to recover when some guy in the middle of that web dies and restarts.

      1 reply 0 retweets 2 likes
    4. Rafael Chaves‏ @abstratt Jun 16
      • Report Tweet
      Replying to @Jonathan_Blow @syranide @RobertWalter83

      If they are stateless (caching aside), crashing/restarting can be a way of life. And there is no "web" implied - what is the need for communication between servers?

      1 reply 0 retweets 0 likes
    5. Jonathan Blow‏ @Jonathan_Blow Jun 16
      • Report Tweet
      Replying to @abstratt @syranide @RobertWalter83

      Because libraries use libraries, all the time. I explain this in the talk. It's easy to say "stateless", but try the actual exercise of looking at every API you use and seeing what would be required to make it stateless, and what would be the corresponding drop in efficiency.

      1 reply 0 retweets 1 like
    6. Jonathan Blow‏ @Jonathan_Blow Jun 16
      • Report Tweet
      Replying to @Jonathan_Blow @abstratt and

      (And also, what would be the corresponding increase in complexity of the control logic.)

      1 reply 0 retweets 1 like
    7. Rafael Chaves‏ @abstratt Jun 16
      • Report Tweet
      Replying to @Jonathan_Blow @syranide @RobertWalter83

      If your API is designed for potentially high latency (which is a good practice in many cases anyways), and you have a language-native client that wraps the IPC, there is no reason writing client code would be more difficult to write.

      1 reply 0 retweets 0 likes
    8. Andreas Svensson‏ @syranide Jun 16
      • Report Tweet
      Replying to @abstratt @Jonathan_Blow @RobertWalter83

      However the server code would be much more complicated to write. It's also much more complicated to debug and reason about from the perspective of the client. Additionally, the OS must task switch to the server process which in itself has a significant latency and cost, and back.

      2 replies 0 retweets 0 likes
    9. Andreas Svensson‏ @syranide Jun 16
      • Report Tweet
      Replying to @syranide @abstratt and

      This also means you'll have to carefully design the API to too many calls, which means the API is both harder to design and use, and less flexible. When the result is meant to be presented to the user it's easy for the overhead/latencies to stack up and you can no longer hit

      1 reply 0 retweets 0 likes
    10. Andreas Svensson‏ @syranide Jun 16
      • Report Tweet
      Replying to @syranide @abstratt and

      60/144FPS. So you'll spend more time refining the API to add more caching (which is really complicated to get right) and bulk-functions or you'll just do as most seem to do nowadays, "meh, 200ms is fast enough for opening a dialog".

      2 replies 0 retweets 0 likes
      Jonathan Blow‏ @Jonathan_Blow Jun 16
      • Report Tweet
      Replying to @syranide @abstratt @RobertWalter83

      That’s bad enough but then, again, look at what happens when libraries start using libraries. When your main program does a loop from 1 to 100 calling a procedure that uses one of these libraries that is using 3 other of these libraries.

      1:09 PM - 16 Jun 2019
      2 replies 0 retweets 0 likes
        1. New conversation
        2. Rafael Chaves‏ @abstratt Jun 16
          • Report Tweet
          Replying to @Jonathan_Blow @syranide @RobertWalter83

          For sure, the approach is not reasonable for all applications. For an IDE, seems quite sufficient, with lots of benefits. People working on LSP have worked for decades on development tools. Also, don't loop on invocation to costly calls. That is wrong, even without IPC.

          1 reply 0 retweets 0 likes
        3. Andreas Svensson‏ @syranide Jun 16
          • Report Tweet
          Replying to @abstratt @Jonathan_Blow @RobertWalter83

          Problem is though as soon as you use server/IPC, all calls are now very costly and all queries must then be batched. Which is fine, but you have to be extremely careful where you put the boundary and it is very rarely at the library-API level.

          0 replies 0 retweets 0 likes
        4. End of conversation
        1. Andreas Svensson‏ @syranide Jun 16
          • Report Tweet
          Replying to @Jonathan_Blow @abstratt @RobertWalter83

          Ofc, but that is just an argument for more transparency, less black boxes and ensuring that each API has a clear and singular purpose. Not do-it-all-monstrosities.

          0 replies 0 retweets 0 likes
          Thanks. Twitter will use this to make your timeline better. Undo
          Undo

      Loading seems to be taking a while.

      Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.

        Promoted Tweet

        false

        • © 2019 Twitter
        • About
        • Help Center
        • Terms
        • Privacy policy
        • Imprint
        • Cookies
        • Ads info