Self-hosting your AIs

French version available on LinuxFr.org Introduction If you believe LinkedIn gurus, AI is the new technological revolution, the new gold rush, and so on. Soon, software engineers will no longer be needed! And if you believe my YouTube recommendations, AI is the latest trendy scam, an unprecedented economic bubble inflating, and an ecological disaster ¯\(ツ)/¯. In any case, in IT professions, the subject has become difficult to avoid. For my part, after examining the problem, I reached the following personal conclusion: It’s a new tool, nothing more, nothing less. The challenge is to find how to best use it. And as an old communist bearded penguin, that means finding the most open-source tools possible and figuring out how to self-host the beast. ...

15 mai 2026

Proxmox + Nvidia + LXC + Docker + Xorg + Steam

Context Summer is coming. Summer is hot. Gaming on desktop computer makes my office hotter. My laptop on the other hand doesn’t make it that much hotter. My basement is cold. Therefore my Proxmox server is cold, and it doesn’t make my office hotter. Idea Put my video card in my Proxmox server and play remotely using Steam Remote Play. Putting everything in a LXC container allows to keep things nice, tidy and separate from the host system as much as possible. The main goal for me is not security (you have to give the container access to a lot of things), but simply handling backups in a generic manner. It also allow me to snapshot the container easily before trying some dumb idea on it. ...

3 mai 2023

Monitoring students on an SSH server

Introduction I currently have to teach someone how to use the Linux shell (bash). I have to do it remotely. The obvious first step is to create a sandbox virtual machine running Linux and create accounts for them on it. I have a backup of the VM so they can freely make a mess if they want to. But to guide them, I need to have a way to see what they are inputting and what they did input. I could use videoconferencing with screen sharing. But I like letting them do most of the work, so they spend a lot of time looking for info and thinking hard by themselves. So videoconferencing with them all the time would be a waste of my time. Also videoconferencing doesn’t allow me to see what they previously inputted. ...

29 juin 2022

Collaborative web IDE for job interviews

Introduction I’m a programmer by trade and I’ve been helping my manager recruiting for quite some times. By helping recruiting, I mean separating good applicants from bad ones by having a technical interview with them. Resumes are often full of approximations and flat-out lies. The idea here is to figure out what their actual programming skills are. And I needed a tool to do that efficiently and remotely. ...

8 juin 2022

Markdown documentation

Introduction Documentation should live with the code. Therefore a common problem is to keep your code documentation beside your source code, in a Git-friendly manner, while also being able to transform it later in a user-friendly format. In other words, you want to keep your documentation written in easy-to-read and easy-to-modify text files while also being able to generate PDF files from it (or HTML). You may want also to be able to include nice diagrams in your documentation, while also being able to version them in a Git-friendly manner. ...

4 avril 2022

Python: packaging data and translation files

Data files in your Python package The cleanest way I’ve found has 3 steps. MANIFEST.in Your MANIFEST.in must include the files you want in the package. For example, to include all .mo files: recursive-include multisense_processes *.py *.mo recursive-include tests * include *.md __init__.py All the directories containing data files must be Python modules, even if they don’t actually contain any actual code. In other words, they must all have files called __init__.py. For instance: ...

4 avril 2022

Debian/Ubuntu, zsh and liquidprompt

On Debian 10 (buster) and Ubuntu 20.04, switching to zsh and liquidprompt, the quick and easy way: 1 2 3 4 5 sudo apt install zsh liquidprompt chsh -s /usr/bin/zsh # restart your session liquidprompt_activate # close your shell and re-open it

24 avril 2021

Kivy Recipe For Yocto

Here is the recipe I’ve made recently to integrate Kivy 2.0.0 in Yocto (dunfell). It’s probably far from perfect, but I guess it can help other Yocto+Kivy users like me. Note that I had to patch the setup.py of Kivy to work around a bug. This bug has been fixed now, so this patch won’t be useful for future versions. SUMMARY = "Recipe to embedded the Python PiP Package Kivy" HOMEPAGE = "https://kivy.org/" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=f0c851d60495c7e27225a819e179208a" PYPI_PACKAGE = "Kivy" USE_WAYLAND = "1" export USE_WAYLAND inherit dos2unix pypi setuptools3 SRC_URI += " \ file://0001-setup.py-Fix-get_modulename_from_file.patch \ " SRC_URI[md5sum] = "410d3968c7f45171285bcac76bbad265" SRC_URI[sha256sum] = "d25e44eb44e43762b2fd0c5874e51954e0f1181fd9800d8a6756be6d084812d8" DEPENDS += " \ gstreamer1.0 \ gstreamer1.0-python \ libsdl2 \ libsdl2-image \ libsdl2-mixer \ libsdl2-ttf \ pango \ python3-cython-native \ " RDEPENDS_${PN} = " \ gstreamer1.0 \ gstreamer1.0-python \ libsdl2 \ libsdl2-image \ libsdl2-mixer \ libsdl2-ttf \ pango \ python3-docutils \ python3-fcntl \ python3-image \ python3-kivy-garden \ python3-pillow \ python3-pygments \ " do_install_append() { # drop the examples # XXX(Jflesch): by default they shouldn't have been built by # Kivy's setup.py. Therefore they shouldn't have been installed # either. Yet somehow here they are. rm -rf ${D}/usr/share } Kivy-garden is also required by Kivy, so I also had to make a recipe for it. You can download the complete recipes and patches for Kivy and Kivy-garden here: yocto_recipe_kivy.tar.gz. ...

29 janvier 2021

Raspberry Pi 4 + K3s + Rook + Ceph

Use Ubuntu 20.04.1 (Raspbian is only available as armhf images ; we need arm64). In /etc/modules, add libceph and rbd Install K3s Clear the disks you want to use as Ceph storages As root: 1 2 3 sudo apt install ceph-common git clone https://github.com/rook/rook.git cd rook Switch to the raspbernetes images instead of the default ones. Currently the default ones are not all built as multi-arch yet and therefore don’t all work on arm64. ...

9 septembre 2020

Segway Kickscooter Ninebot ES2 trials

My girlfriend and me have bought the very same electric kick scooter, the Segway Kickscooter Ninebot ES-2. We have done the very same trip at the same time. Both scooters are brand new. This showcase very nicely the importance of weight regarding electric kick-scooter autonomy. Beware: This electric kick-scooter requires you to install an application on your phone. On Android, the application is available on Aptoide and works without Google services. However this application is 100% proprietary, poor quality, and clearly from China. It will publish the distance you travel somewhere without asking you first. ...

18 juillet 2020