I ran a BBS in the Baltimore area as a kid. Of course, it was only open after midnight and closed again at 4 am. I used to set my alarm and sneak upstairs to turn off/on the ringers on the other phones. I had about 8 regular callers from all over MD -- this was practically international to a 9 year-old. I ran TriBBS.
Somewhat related to the coroutine vs. FSM issue: <a href="http://eli.thegreenplace.net/2009/08/29/co-routines-as-an-alternative-to-state-machines/" rel="nofollow">http://eli.thegreenplace.net/2009/08/29/co-routines-as-an-al...</a><p>[apologize for the plug, but IMHO it's very relevant]
<i>Enter Lua's coroutines, which are really the only full and complete coroutines.</i><p>I'm curious, could someone explain this statement? I was under the impression that Python had coroutines as well. Syntactically they are a bit uglier (yield statements everywhere), but functionally similar: <a href="http://www.python.org/dev/peps/pep-0342/" rel="nofollow">http://www.python.org/dev/peps/pep-0342/</a><p>(Admittedly, I don't know a lot about coroutines, so I could be way off here.)<p>In code: <a href="http://gist.github.com/630921" rel="nofollow">http://gist.github.com/630921</a>
I ran a BBS out of Stockholm, Sweden on my Atari 1040STFM with a MegaDrive 60MB harddrive which was really loud in my bedroom all day and all night, like a vacum cleaner. Many different people from all over the country dialed my one phone line connection. People downloaded mostly Public Domain applications have music in MOD-format. I met up with some of the people logging in, they were often older than me and could by booze, haha. Just reminiscing....
The problems Zed lists for a co-routine based web app (essentially tying important state to a single server) are also problems for the Scala/Lift framework. Dave Pollak, the author of Lift, claims that maintaining some server-side state solves more problems than it causes but I haven't had a chance to test this myself in a real app.
Does anybody have a good solution for the "Sharing Coroutine State Sucks"-problem? I've thought a very long time about this (in my case, using continuations in FP instead of coroutines in Lua), but I still can't seem to come up with a good answer.<p>I guess one way to deal with it is by mechanically transforming the co-routines into a FSM. This is very similar to defunctionalization. However, I don't know of a language that does this well. Any suggestions?
I ran a Renegade BBS on a machine inside my step-dad's office (Hartford CT area). He was nice enough to let me use his fax number (as he almost never did) with the caveat that he could disconnect people if he needed it.<p>Very fun times. I used to love the Barren Realms Elite leagues most of all.
Sysop of a Wildcat BBS on a 286. Still remember how excited I was to upgrade to a 386 with an optical drive. The idea that I could store 650MB available for download! If I ever needed more I could just change the disk.<p>Missed many nights of homework working on that thing. Making contests for LoRD or Tradewars. Zed described the death of BBSs very accurately. It went from THE thing to do, to lights out almost overnight.
Good timing. I'm working on a MUD server with lua scripting and this coroutine stuff is a much better way to handle input.<p>Eventually I'm going to stick ZMQ-based RPC onto it as well, so other services (M2?) can interrogate the server for things like player lists.
web-programming with coroutines has been around.<p><a href="http://cocoon.apache.org/2.1/userdocs/flow/continuations.html" rel="nofollow">http://cocoon.apache.org/2.1/userdocs/flow/continuations.htm...</a> for one example, but that was still based on prior art.