Why, oh why, is it so hard to build a telephony interface that just works like a sound card?
Rewriting my phone server to be purely event-driven has had fringe benefits - the design is much better now. But full duplex audio on the goddamn IXJ card still does not bloody work. At first, it starts dropping frames left and right, then it suddenly decides that it just doesn't want to wake up select(2) on write anymore. So the server's state machine stalls and everything goes to hell.
It's not a challenge anymore, it's just a never-ending nightmare. Nothing works, everything is broken, and there are no explanations to be found anywhere.