programs that use lots of signals and/or asynchronous completion of IO or timers ("completions")
completions create all sorts of concurrency problems because they are delivered to the program without any concurrency protection, and writing such protection correctly turns out to be non-trivial.
By delivering completions into coroutines, you gain all the concurrency protection that is offered by the green threads, without having to write it from scratch.
> programs that use lots of signals and/or asynchronous completion of IO or timers ("completions")
This is actually what the most basic event loop handles for you. OS signals, timers and asynchronous events are not delivered into the middle of your program, but into the point, where all of the event handlers are not running. That's the beauty of it. You can then react to the event and cancel whatever you are waiting to be running, or schedule something new.
With coroutines you can only safely handle those things each in a separate coroutine. But you don't need them isolated, you need your code to actually do something on those signals and timer events. So, you end up with a lot of flags spread all over other coroutines, protected by mutexes/channels. But then it's still not responsive, because you cannot unblock a currently blocking call, so many concurrency patterns do not apply and even bad things happen, like leaks and deadlocks. You rethink it again and move blocking calls each into a separate coroutine, so you would be able to construct a loop that waits for messages from other coroutines and reacts right away, abandoning blocking coroutines, if required. Hopefully you eventually realize, that you are emulating an event loop, but a very clumsy one, and go back to working with event handlers and higher-order functions.
we built a green threads implementation for VAX/VMS in 1984 with pre-allocated stacks because performance. the key is to put guard pages in between the stacks to protect from stack overruns.
New York City has one of the most amazing transit systems of any city in the world, and most of it is at least 100 years old.
By focusing on stops and forgetting to mention the dozens of large projects taking place in the NYC transit system, he makes it sound like nothing is changing.
Here's just a small list off the top of my head:
1. new Penn Station
2. Yes the 7 train to Hudson Yards
3. Yes, the 2d avenue subway (which has been in the offing for 100 years)
4. new East River tunnels
5. new ferry system (including 18 new ferries announced today)
I am a self-professed terrible team member, and I scored "average" (27 out of 36) on "Reading the Eyes" test. Its not that I can't read people's faces, its that I don't care.
the AI and law movement began more than 40 years ago. There's an AI and law journal, a bi-annual international conference (ICAIL) and tons of other work (such as LDRI from the UK National Archives and the automated legal reasoning research from Stanford, CMU, and MIT.