The Rust Programming Handbook

I read this book because I often watch the YouTube videos of the author, so I was curious to see how he uses this different medium and read something different about Rust. Obviously the book cannot be compared to the official Rust book, also because the goals are different.

It presents all the topics with good examples; at the end of every chapter there is a summary and exercises that help to better understand the different topics. I appreciated the chapters dedicated to the peculiarities of Rust, like Ownership, Borrowing, References, and the Borrow Checker, and the chapter dedicated to concurrency.

If someone asked me how to learn Rust, I would say: read the official book and afterwards keep a copy of this book on the desk as a practical guide. Just to give an honest review, I have only one doubt about the last chapter dedicated to Docker.

I wonder if it could be skipped or made shorter. In any case Francesco, you did a great job.

Install Matrix Server

First Step to Develop a Matrix Client: Set Up a Local Matrix Server

The first step to developing a Matrix client is to set up your own Matrix server. This allows for a simple configuration to get started quickly. The easiest way is to use a Matrix server via Docker. For simplicity, this setup uses an SQLite database instead of the PostgreSQL database typically used in production environments.


Below is a summary of the steps, based on the official instructions found here: https://hub.docker.com/r/matrixdotorg/synapse

Install docker


The installation method depends on your operating system. Follow the instructions on the official Docker website for your OS.

Download the docker image
docker pull matrixdotorg/synapse

Generate initial configuration
docker run -it --rm --mount type=volume,src=synapse-data,dst=/data -e SYNAPSE_SERVER_NAME=my.matrix.host -e SYNAPSE_REPORT_STATS=yes matrixdotorg/synapse:latest generate

Start Matrix server
docker run -d --name synapse -v synapse-data:/data -p 8008:8008 matrixdotorg/synapse:latest

Create users
docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -u user2 -p password2

This command creates a user named “user2” with password “password2”.

Repeat this command to create additional users as needed.

Conclusion

Now everything is up and running (the server is listening on http://your_ip:8008). If you shut down Docker, remember to restart both Docker and the container.

For example, on openSUSE:

systemctl start docker
sudo docker start /synapse

Matrust: A Matrix Client in Rust + Slint

I’ve just started a new open-source project called Matrust (naming things isn’t my strong suit 😅).

The Goal

The idea is to build a Matrix client (https://matrix.org) using:

But why this stack—especially when I have over 20 years of experience with C++ and Qt?

Why Rust + Slint?

Love it or hate it, Rust is one of the most exciting languages around today—safe, fast, and supported by a strong ecosystem.

As for Slint, I see it as a modern and lightweight alternative to Qt/QML, with a fresh take on UI development, especially in the Rust world.

So I thought: why not build a learning path, like I previously did for SwiftUI, but this time with Rust + Slint—on a real project?

This is a learning journey for me too—it’s the first time I’m combining these three technologies.

Current Status

The project is in a very early stage. At the moment, Matrust supports:

  • Logging in
  • Receiving messages from a test Matrix server

It’s basically a first commit. What’s in the repo today will likely evolve—or be completely rewritten—as the design and architecture solidify.

A Guide for Developers

I’ll be documenting every step of the process, to build a resource for:

  • Rust or Slint beginners
  • Developers curious about building a Matrix client
  • Anyone who, like me, prefers learning by building real things

What’s Next

One of the upcoming posts will walk through setting up a local Matrix server using Docker. That way, we’ll have all the components running locally, making development and testing easier and more consistent.


The repo:

https://github.com/niqt/matrust