Blog
A first look at ROS 2 applications written in asynchronous Rust (Slides)
In July 2025, we presented our paper about real-time properties of ROS 2 applications written in asynchronous Rust at the ECRTS conference in Brussels, Belgium. Here are the slides of our presentation.
Nix & NixOS workshop
Podklady z mého Nix & NixOS workshopu na InstallFestu 2024.
Julia: Počítejte svobodně a rychle
Below are the materials from my today’s Installfest talk.
Practical Nix
Below are notes for my Nix workshop at Installfest.
Introduction to Julia
Transcript of my seminar about Julia language.
git-sarah: Edit files locally, compile and test remotely
Recently, I worked on a visual object tracker implemented in C++. The project has several compile configurations and a time-consuming test suite, some parts of which need a GPU not present in my laptop. Because many parts of the code depend heavily on compile configuration, changing them requires recompilation and ideally also retesting of all configurations to make sure that everything works correctly. Since my development laptop not only lacks the GPU needed for testing but also has only four cores, which makes the compilation unnecessarily slow, I looked for an easy way to compile and test the code being edited on a powerful remote server.
Poor man’s function_graph trace for C programs
When studying Linux kernel sources, it’s often helpful to use ftrace’s
function_graph tracer, which traces function entry and exit points
and clearly shows how functions call each other.
Sometimes, it is useful to get such a trace from other code than the
Linux kernel. In case of C++ this is pretty easy, but for plain C, it
is trickier. I came up with the following to print nice traces. It
uses GCC cleanup variable attribute to register a function exit
callback.
Installfest: Emacs Org mode aneb organizujte svůj život v ASCII
„Slidy“ z mého workshopu na Installfestu. K dispozici i ve formě org-mode zdrojáku, jen je potřeba změnit příponu z .txt na .org.
KiCad Eeschema automation
I started using KiCad (version 4.0.1) for electronic design. It seems to be a great tool, but working with big connectors in schema editor is tedious. All connections have to be done manually and thus the process is error prone. Some way of automating the process would help. KiCad comes with scripting support, but unfortunately only in pcbnew. Eeschema seems not to have any support for automation yet. Hopefully, one can use xdotool under Linux to automate some boring tasks.
Installfest: Úvod do Emacsu
Osnova, podle které jsem jel na dnešním workshopu na Installfestu.
InstallFest 2014: Automatizace bootování s novabootem
Stejně jako vloni jsem měl i letos přednášku na InstallFestu. Tentokrát to bylo o nástroji novaboot, který už přes dva roky vyvíjím a používám jej k mnoha zajímavým věcem. Některé z nich jsem během přednášky zmínil a najdete je ve slidech.
Při přednášce se dostavil klasický "demo efekt", tedy že to, co ještě ráno fungovalo, fungovat přestalo. Nemohl za to novaboot, ale pochybná implementace technologie Intel AMT na mém počítači. Naštěstí jsem měl ještě jeden počítač, se kterým novaboot fungoval, ale bohužel jsem na něj neměl otočenou web kameru, takže se návštěvníci museli spokojit jen s výstupem na mém terminálu.
On generating Linux applications from Simulink
I use Matlab/Simulink R2012b under Linux to model dynamic systems. In order to perform hardware-in-the-loop testing, I want to run my models in real-time on Linux with rt_preempt patch. Running a Simulink model in real-time can be achieved by converting the model to the C code, compiling it and running the resulting application. Simulink supports this by means of Simulink Coder. Producing a Linux application with Simulink Coder is not as straightforward as one might think, though.
InstallFest 2013: Jak na Linux v robotech
Na letošním InstallFestu jsem měl přednášku o použití Linuxu v robotech. Snažil jsem se ukázat, jak lze z Linuxu běžícím na nějaké "embedded" desce ovládat hardware k ní připojený. Všechny praktické ukázky, které jsem měl připravené, se povedly, až na tu poslední – robot v akci. Ale tu jsem nahradil videem z finále Eurobotu 2010.
Update: Video záznam z přednášky je k dispozici na stránkách InstallFestu.
Ikiwiki with Shibboleth authentication
I have an ikiwiki-based website that is used for a university course. Every student has a page where she is supposed to provide information about a project being worked on. For this I want to authenticate students so that they can only edit their page. So far the authentication was implemented with unixauth plugin and the server used PAM modules to authenticate against LDAP server. This worked sufficiently well, however, this method was deprecated by our university IT. Instead, they want all web applications to use Shibboleth technology. I was surprised how easy it is to make ikiwiki work with Shibboleth.
OS noise paper
Last week I presented a paper at 14th Real-Time Linux Workshop. The topic was the comparison of operating system noise between Linux and NOVA microkernel. It was a joint work of myself and Stefan Wächtler from TU Dresden. If you are interested I published the paper as well as all source data here.
ORTE 0.3.3 released
This is mostly a bugfix release. The last version was released almost four years ago so it is definitely time for a new release. One big change since the last release is that ORTE is no longer distributed as a part of OCERA project. We created a new project at sourceforge specifically for ORTE. With this change we also moved the source repository from CVS to Git and created a new homepage.
How to reset a PC that has no reset button
At our university, we bought a PC that was intended for testing during development of low-level components in operating systems (drivers, kernels, etc.). In such tests it is common that the machine gets stuck because of various bugs and it is necessary to perform hard reset to recover from such situations. To our surprise the machine we ordered had neither a reset button on the case nor any connector on the motherboard where the button could be connected. It was a Dell machine.
"Compile on save" in Emacs
When one writes programs or TeX documents, it is quite useful to
compile the program/document quite often to be sure that there are no
syntactical or other errors. I use Emacs and have the F9 key set to
invoke the compile command which, by default, calls make and
allows easy navigation through the detected errors, if there are some.
One disadvantage of this command is that when there is unsaved buffer,
it asks whether to save the modified file. This means that one have to
either save the file by C-x C-s and then press F9 or press
directly F9 and confirm the saving of the file by y. Neither
variant is ideal because I do not like pressing unnecessary keys.
(Yes, I know that I should switch to vim, but that’s another story.)
Using Ikiwiki with Gitolite
Recently I installed Gitolite on our server and wanted it to manage the repositories for Ikiwiki-based wikis. It turned out that this is not as trivial task as one might expect so here is how I did it.
First, let’s look at how ikiwiki uses the git repositories. Every wiki
needs two git repositories at the server. One of them is a bare
repository and pushing changes to this repository updates the wiki.
The other repository has a work tree and is used to “compile” the wiki
to HTML and by Ikiwiki’s CGI wrapper to edit the wiki via web
interface. Whenever somebody pushes to the bare repository, git
invokes post-update hook, whose goal is to update the second
repository and to compile the wiki to HTML.
Sorting LaTeX acronyms in Emacs
Recently I needed to put a list of acronyms to a LaTeX document. There is great acronym package for this purpose. With this package one can define the acronyms and refer to them from the text. The package ensures that the meaning of an acronym appears together with its first use. The package can also generate the list of acronyms however the list is not automatically sorted. When the list becomes long, a big amount of mental capacity is needed find the position where to add a new acronym.