Using Tonic as backend and gRPC-web as frontend communication to build chat system. Protobuf + gRPC + rust/tonic + envoy + gRPC-web.

Image by Author

Background

Rust is static, fast, and safe. gRPC is static and popular as well. Why cannot we try to use Rust + gRPC to create a web-chatting system? To make this article simple and quick to read. I will skip the background introduction, please read the below links if you are interested for tools used here:

  • Rust, the programming language for our backend system.
  • Tonic, Rust gRPC framework
  • gRPC
  • Protobuf, the protocol used by gRPC
  • gRPC-web, gRPC for web since browser didn’t support HTTP2.
  • Javascript + HTML for showing content on frontend.

What we will do

We will create a broadcast chatting room for everyone…


There are lots of calendar apps to sync calendar data. It’s worth exploring how to use Rust to fetch CalDav data.

Image by author

Background

In our daily work, we may use several calendars at the same time, one for group work, one for self-work, one for family TODO, etc… Sometimes it’s hard to follow the schedule. SO, in my company, we created a small python script to fetch all events and TODOs which will happen today, and send an email to everyone in the morning. This is really helpful since it will remind us of the schedule especially we will be noticed in advance and then arrange them more flexibly.

We could do this because it’s easy to create a CalDav client to fetch…


Rust Client for ROS2

The easiest way to create an interface code for a target app is by using `CMake` and `empy`. Explore the simplest version of how both can be used in ROS2.

Image by author

This is the second article appearing in this series: Rust Client for ROS2 from Scratch.

The other parts are: 0. Integrate C API to Create ROS2 node

Background

It has been quite some time since I published the first article in this series. Over the last month, I’ve been busy moving into a new apartment and spent most of my time helping set-up our new place — which gave me little time for other things. …


Rust Client for ROS2

Link ROS2 C API with Rust via `bindgen`, and create a `node` in Rust. Simple steps on how to use `bindgen`.

Image by author

This is the first article in this series: Rust Client for ROS2 from Scratch.

The other parts are: 1.1 Create the Dynamic Library via CMake & Empy

Background

ROS2 is the latest version of ROS (Robot Operating System), which forms the basis for building applications related to robotics, and also provides a lot of libraries and tools for such applications. The primary advantage of moving from ROS to ROS2 is that ROS2 uses DDS for its communication system. Using DDS does not require a master node in ROS, which simplifies the communication protocol. For further information on the advantages and differences…


Rust can be used to speed up Python code, but how fast can it be? This article highlights the comparison between the performance of: Rust, PyO3, and Python3, and an easy way to setup PyO3.

Rust logo from rust-lang.org and Black Python logo from cleanpng.com. Composite logos image by author

Rust has seen rapid growth ever since Mozilla began sponsoring the project in 2009, and later announcing its development and release in 2010. As stated by the Octoverse in 2019, Rust has been the second fastest programming language in terms of growth and adoption by developers. Additionally, Rust has been voted to be the most loved language in a survey conducted by StackOverflow in 2020 . Rust’s growth is attributable by its evident pros, namely: robust performance and powerful security. Its performance matches that of C/C++, along with an added measure of security checks and memory management. …

Marshal SHI

Robots make our life easier | Robotics, Reinforcement Learning, Web, Python, Rust & Life Hacking. At MotivEdge.io

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