Really? Seems very different. There are some leaseholds on reservations near my cottage and "owning" one does not mean what you think it means. On a normal property as long as you pay your taxes it's yours in perpetuity, and the value tends to rise over time. With a leasehold it's never "yours" and can be taken away at a future date. The value approaches zero as the lease approaches its end date, since there's no guarantee it will be extended, so the property depreciates over time. This also has the effect of making any buildings on the property fairly dilapidated as the end-date nears, as the buildings can/will be confiscated with the lease (there's no incentive for the owner to maintain them).
Yeah I had a look at that too, but I'm concerned it may use a custom API that does not line up with the spec. WebRTC is confusing enough without an additional premature abstraction! Also, not to disparage, but it's missing: API compatible with browser RTCPeerConnection, which I think is essential for our use case.
Also, when you say native, I guess you mean just in Node, right? C++ or wasm binaries are going to be faster, and I'd just prefer the performance extra performance / lower overhead in something lightweight for real-time streaming that I believe webrtc-node offers.
> it may use a custom API that does not line up with the spec
Not sure about that, but it's been working brilliantly for me so far.
> API compatible with browser RTCPeerConnection
Fair enough, though I'd be curious what you'd be doing with Node not in a browser that requires this...
> Also, when you say native, I guess you mean just in Node, right?
Yeah, sorry I guess "native" was the wrong word there.
> C++ or wasm binaries are going to be faster
True, but if you are trying to distribute your NPM package to lots of users, and it requires platform specific binaries or, God help us, node-gyp, you're in for a lot of GitHub issues :)
RTCPeerConnection is central to WebRTC, it's the main p2p connection. In Node you use the same thing. The server is just another "peer". We wrap @roamhq/wrtc with SimplePeer, which, funnily enough heh, greatly simplifies things! :) RTCPeerConnection is central to simple peer.
The other library does say it has a different API, on its homepage: Easy to Use - The API design is similar to the browser's WebRTC API, which reduces the learning cost.
Regarding native binaries we have not had any issues so far, mainly as the prior major wrtc provided pre-built binaries for every major platform. I think the new one posted here expands the set of targets.
I do recall encountering a few obstacles with various addons from different libraries in different projects in the past, and node-gyp was occasionally involved. Tho I don't recall it being particularly troublesome, nor preventing us doing what we wanted. In fact I fondly recall node-pre-gyp or whatever usefully creating a build for the current target on the fly on install, which was fantastic and convenient, magic.
In the worst case to build for a custom arch, I consider these types of things a configuration issue, nothing insurmountable.
Stepping back, I think a lot of these concerns will eventually go away, or you can currently make them go away, with wasm. Which, while not at C++ perf level, is adequate and a significant speedup on node for some computationally intensive tasks.
I'm interested to know more about what particular issues have you had with native addons and node-gyp in the past and what you are currently using WebRTC for, if you're interested to share.
I maintain a Homebridge (community built system to bridge IoT devices to Apple HomeKit) plugin for Google Nest devices. The newer Nest cams use WebRTC for video streaming. This makes viewing the cameras in Apple Home a bit complex, as the bridge must setup and connect to a WebRTC stream, transcode it, and then send it out to your iPhone etc. as an RTSP stream.
Since this is for home automation the system runs on all kinds of weird devices, from RPi's to NAS's to old laptops etc. When I tried to use anything requiring platform specific binaries it was a complete mess, most of the time things would not build.
The problem may not be insurmountable if you're being paid, but since this is just done in my spare time it's not something I wanted to deal with.
Completely understand, yeah. It is annoying trying to get those builds to work! You'd rather just do something that slips right in. It's always good to shop around and find the lib that best suits your purpose!
Cool, these home automation projects seems pretty nifty, and like a compelling rabbithole where you can just keep adding stuff. Your set up sounds like a big project, well done! It's cool you created a whole streaming stack for this. The use of a dedicated streaming RTSP server is a high level of technical sophistication!
Hahaha! Thank you for saying this! Yes! Not to at all disparage the other suggested library, but I think its intended use case is more teaching and learning (at least in part). It says as much on its homepage: https://shinyoshiaki.github.io/werift-webrtc/website/build/
Ideal for learning: The code base is very small and all the protocol stacks of WebRTC are in one repository. It is also very easy to build, so you can easily add or modify features yourself.
It is undoubtedly a commendable and extraordinary achievement to create a largely compliant implementation of WebRTC in TypeScript tho.
You cannot use that library in the browser (as you cannot reimplement the primitives that use UDP as there are essentially no browser APIs for that (barring the Chrome-focused WebTransport I think)), but creating it in Node using udp libraries is possible. It's fantastic and dedicated stuff, but may not be the right fit if you want performance and reliability.
Canadian here. Housing costs have increased so dramatically this would still put you back to only maybe five years ago in terms of disposable income. This is just a wild guesstimate, but you get the idea. Anecdotally I've heard that other countries, particularly in Europe, have tried subsidized or even free daycare and that it failed to have any effect on birthrate.
"Under the words 'Contact Position' there's a button that says 'Push to Close'".
"Push it."
When Spielberg was on he was ON! Who else could take a scene like "they have to reset the circuit breakers" and make you absolutely on the edge of your seat over it.
Out of curiosity I actually looked up the details on this scene a while back. There is some actual real model of circuit breaker this scene was based on; I think someone dug up the model number, but I can't remember it now.
It turns out a lot of high-power circuit breakers need the energy from a clockwork mechanism in order to open in the event of a fault. So the thing where you have to pump the handle is actually to charge a clockwork mechanism to ensure there's enough mechanical energy to open in the event of a fault - AIUI. Presumably, the breaker is designed with safety in mind and won't let you push-to-close until you've done this.
I always thought that the main breaker looked much more real than the "individual park systems". Turns out it was! The other "breakers" with the backlit names are definitely from the prop department
Possibly, but the fact that they are refusing to tell him why he's being removed makes this suspicious. Seems like they would not need to hide it if the reason was "you're being removed due to excessive litigation against the school and your peers". They would have a reason to hide "you're being removed because you disagree with us".
We only really have his word for that. We have him saying that he was told that if he didn't resign, dismissal proceedings would start. We have him saying that the only reason he was given for starting a dismissal proceeding was "collegiality".
His past behavior is likely causing the administration to be very, very cautious about what is said by who and where because anything touching this individual will likely result in legal action.
The university is also refusing to tell them the nature of their "investigation."
(The non-profit organization FIRE and the legal firms involved here are extremely reputable. If the university is afraid of being sued, their apparent aversion to anything resembling due process would seem to be having the opposite effect.)
> The university is also refusing to tell them the nature of their “investigation.”
Since he hasn’t contested that the refusal to participate itself was a termination-eligible offense per the staff handbook, and since he hasn’t offered any indication of anything in the staff handbook or other material that would form part of the employment contract that entitled him to know about the subject of the investigation, I don’t see how that’s material. He has not disputed that he committed an offense that is in black and white an offense justifying termination, and seems mostly to be (even if you accept his explanation in its entirety as to the facts known to him) speculating only on the context of that offense, and then suggesting that that speculative context is the real motive for firing him, not the uncontested firing-worthy offense.
Yeah, yeah, it sucks for everyone (well, everyone in private employment, without a better contract that Gerber apparently had) in this country that private employment doesn’t come with the same type of due process rights that having adverse consequences imposed by the State has. But Gerber’s a law prof, so presumably he knew that already, and, anyway, he’s not making a complaint about the legal structure of private employment relations, so, I’m really not sure what the point is beyond an argument that he is entitled to special treatment outside of the contract even though there is no general entitlement to such treatment.
> Possibly, but the fact that they are refusing to tell him why he’s being removed makes this suspicious.
Besides his claim, what basis do you have for describing this as a “fact”?
> Seems like they would not need to hide it if the reason was “you’re being removed due to excessive litigation against the school and your peers”. They would have a reason to hide “you’re being removed because you disagree with us”.
Seems like if he was going to misrepresent the reason he was being fired, misrepresenting the information he was or was not given by the people firing him would very likely be part of that. (Of course, even his account has him being given notice previously of potential cause of adverse career consequences of specific actions.) He contends that he choose to refuse to participate in the investigation he was asked to because he did not have adequate information about its content, but he does not seem to dispute that such refusal is defined as insubordination in the staff handbook nor does he allege that there is anything in University policy that entitles him to more information than he had received prior to participating in an investigation. Private employment in the US generally doesn’t come with due process rights beyond those in the employment contract. You’d think a conservative law prof, even if they weren’t working in a private institution, would know that.
Your other points may be valid, I was just speculating. There may be additional protections here other than the handbook since he seems to have tenure, which brings additional special protections (obligatory "I'm not a lawyer")
> but the fact that they are refusing to tell him why he's being removed makes this suspicious
FWIW this sounds normal to me. Many lawyers consider standard operating procedure with litigious individuals to be: "Give them as few specifics as possible".