Hacker Newsnew | past | comments | ask | show | jobs | submit | bobinator606's commentslogin

check out the contactless vital sign sensors from NorbertHealth.com that has SpO2, BP, PRV, temp, etc.


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.


"The truth is like a lion. it needs not defense. it will defend itself" -- St. Augustine


St. Augustine was wrong


the actual title is "10 Hot Startups In NYC"


The cluelessness of this article is beyond words.

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)

6. new Select Bus Service

7. new New Jersey tunnels

8. repairing East River Bridges

9. new tunnels for LIRR service to Penn Station


like it or hate it, this is exact how its supposed to be done.


That doesn't mean its the way it should always be done though.


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.


Amazing that the only contact from Adobe mentioned in this blog post is from their PR folks

>At 12PM I received emails from Adobe’s PR who wanted to make sure we were on the same page with how we were addressing the issue


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.

http://sites.sandiego.edu/icail/


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: