Sign in

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.

Running scripts with Lumo

The easiest way to get started is to install lumo on your system and run Clojure files with it (see NPM section below…

I’ve recently been tasked with writing an interactive web app called ShotBot to help mobile app developers quickly create attractive App Store/Google Play Store store screenshots. Instead of using JavaScript like most other web apps, I’ve decided to write this one in Clojure.


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…


Electronics / Software Engineer — Eagle • Mbed • Nix • Arch • OS X • TS • Clojure • React • Postgres

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store