Real-time peer-to-peer communications has become more important than ever before in the post-a̶p̶o̶c̶a̶l̶y̶p̶t̶i̶c̶ pandemic world. I’ve recently had to leverage WebRTC technology for an application and decided to share my experience with some of the difficulties with dealing with NATs in our existing network infrastructure.
For the purpose of peer-to-peer (P2P) communications, be it real-time video streaming, phone calls or gaming, there are 2 main types NAT implementations: Cone and Symmetric NAT. Variants of each type depending on how incoming packets are filtered will be ignored for now.
The Cone NAT implementation will translate each outgoing packet’s address and port…
A Japanese translated version of this article is available on Qiita.
Thanks to the recent developments from the ClojureScript community, writing command-line scripts in Clojure has been a fun experience for me. Major kudos to @anmonteiro for developing lumo and the core ClojureScript team.
I think Clojure is a great language for writing single-use scripts to process data because of the built-in manipulation functions and immutable structures so you won’t have to worry about references and deep-cloning.
The easiest way to get started is to install
lumo on your system and run Clojure files with it (see NPM section below…
Clojure is a compiled, functional and dynamically typed language that targets multiple existing runtimes. At the time of writing, Clojure can run on the Java JVM, .NET CLR and JS engines.
ClojureScript refers to the Clojure → JS compiler but within the community it’s also used for Clojure code that runs on JS engines (i.e. doesn’t…