Posts

Your own private VPN

In the past, I often used to remotely connect to my desktop computer at home to perform intensive tasks such as compiling programs or doing ML workloads. To achieve this, I simply opened the router port and had a free reverse DNS service that would automatically bind my home’s current IP to a domain name. It was a simple solution and it worked quite well.

Today, while working on my master thesis, I find myself in a slightly more complex scenario: I have my computer at home, as well as a workstation behind a university firewall, and I want to be able to work from my laptop when necessary or connect either workstation with one another. I thought of leveraging my VPS by hosting a VPN server there.

Thoughts on the Dvorak layout

During my senior year in my Bachelor’s, I was very interested in finding ways to take notes efficiently in real time while attending lectures or watching videos. My workflow was inspired by the blogs from Gilles Castel. After hours of customizing my dotfiles and getting used to the new workflow, I reached a point were no more snippets or hotkeys would make me faster: my bottleneck was my typing speed.

I never learnt how to properly type on a computer, even though I spend most part of the day working on one. Moreover, when trying to type at ‘high’ speeds, I had sore hands and could not maintain the typing speed for long. My thinking speed was faster than my typing speed, and this was really annoying me.

Custom OpenCV 3 installation with ROS Kinetic

Before you start reading, I made a .deb package of OpenCV 3.3.1 ready to work on Ubuntu 16 and ROS Kinetic. You can download it here. Please note that I do NOT actively maintain this package, and that compiling the package yourself as explained below is a better approach security-wise.

ROS Kinetic comes with an OpenCV package that only contains its core functionality. In order to use some advanced features (anything contained in opencv-contrib), you will have to build OpenCV from source and manually include any module you want from opencv-contrib. But the ROS Kinetic packages are already precompiled to work with a specific OpenCV version. In order for this to work, version 3.3.1 is mandatory (not even 3.3.0 will do it).

How to calculate the centroidal composite inertia matrix of a robot

When working on robot control problems, it is often useful to simplify the dynamics in order to perform some sort of optimization. One of the possible simplifications to make is assume that the robot behaves as a single rigid body. Thus the dynamics are described by the total mass at the center of mass (CoM) and the moment of inertia also at the CoM.

Calculating the CoM, total mass and moment of inertia of a robot described with URDFs is not straight forward, even more when you want to describe the moments of inertia with respect to a particular robot state (centroidal composite rigid body inertia).

Quick guide for coming to the dark side (a.k.a. painless Vim to Emacs transition)

Disclaimer: I have returned back to neovim well after I made this post.

Ranting

Being an avid (neo)vim user for the last two years and a half, I couldn’t envision myself using anything else. Vim has everything: fast start-up times, sane keybindings, an infinite amount of plugins, … But as everything in life it doesn’t come without flaws. The vim community is already splitting, as neovim slowly diverges from its predecessor. Because of the Lua scripting present in neovim, new plugins may not be compatible with original vim. As much as Vim is trying to catch up with NeoVim, I don’t see Bram Moolenaar introducing Lua scripting inside Vim.

Easy analytical Inverse Kinematics in ROS

One of the most common ways to calculate the inverse kinematics in ROS is through the KDL package. The ‘problem’ with this kind of solvers is that they are numeric, which means they will perform numerical optimization iteratively until a solution (or none) is found. An alternative approach would be to calculate the analytical expression of the Inverse Kinematics. Having a closed form solution means that you’ll be certain to always obtain the exact solutions if they exist. The downside is that the process of obtaining the analytical expression for large kinematic links is complex. IKFast is a script that takes in a URDF and directly outputs library agnostic C++ code that computes the Inverse Kinematics of a specified link.

One year after using a degoogled Android phone

A year ago I received my OnePlus 3T that was sent for a repair. The process erased all memory, so I wrongly decided that it was a good time investment to install Lineage OS without Gapps.

The imminent thing was to find a Play Store replacement, and F-Droid did the job. F-Droid is a great repository of open source apps. The downside is that lots of ’normal’ apps aren’t there. I had to download Whatsapp and Signal from their respective websites for instance. Later I found Aurora Store, which connects with an anonymous account to Play Store and lets you download almost every app there. I couldn’t find my bank app for example, which was a bummer. Also, a lot of apps rely on Google Services to operate so a great deal of them just crashed or ran very slowly.

This page is self hosted now

Up until recently, this page was hosted on a vultr’s virtual private server. The VPS service was good for the price: $4.24/month (after VAT), the offer with the minimum cost available. For that price I got a server located in New Jersey with 10GB SSD, 0.5GB of RAM and 1 CPU. It served as my web and private email server. But I found it rather ’expensive’ for the use I was giving it: the web page does not have visits at the moment and I don’t use my mail regularly. Originally I intended to make a searx instance but I just couldn’t get it to work.

Thoughts after using Gentoo for the summer

After a chaotic and very demanding term due to coronavirus, one nice way to relax and enjoy holidays was to do a fresh install of Gentoo. To my surprise, the installation itself was not that complicated (talking about a stage3 amd64 install), just a bit more tedious than your usual Arch install. Specifically, the most time demanding task is configuring your own kernel. But you can skip this step installing gentoo-kernel instead of linux-kernel, as the former has almost a carbon copy configuration of the Arch Linux kernel. Also, keep in mind that you don’t need to have a Gentoo bootable stick to install it, I used an Arch stick (mainly because genfstab as the Gentoo installer lacks a script to auto generate /etc/fstab).

Recommendation: Kilo text editor tutorial

The past week I’ve been following the tutorial hosted here. It is a step by step guide on writing your own simple (< 1000 SLOC) text editor in C. Once I completed it, I felt a lot more comfortable handling strings, memory and interacting with the terminal without any external libraries. Although my code is nearly the same and I didn’t implement any new feature, I found that by reading the diffs, trying to understand them and coding what I remembered in my head was a good approach at retaining new information and techniques. Remember to comment your code, as it is impossible to recall everything.

Ultralearning book review

Being an autodidact, I never thought of spending time learning to learn. I stumbled upon this book when John Carmack tweeted he was reading it (so it must be good, I thought). The book gives a tip for every chapter, accompanied with some stories of success of ‘ultralearners’ that applied those tips. I found those stories the most engaging part of the book, as it described the thought process of legends like Feynman or Ramanujan. But also introduced lesser known geniuses like Mary Somerville, who translated Laplace’s Traité de mécanique céleste and got recognised by Laplace himself as the only woman who understood his job.

First steps with STM32

In this introductory guide, you will learn how to set up an open toolchain to program any STM32 (and hopefully be able to switch more easily to other manufacturers). The motivation to use only open source tools is that they free you from the licensing of private tools, so your projects and workflow are guaranteed to be persistent over time. Also, we are not going to use any IDE (only Makefiles) so you can use whatever tool you like the most.

Rigol DS1052E Hack with Linux terminal

So I had a second hand Rigol DS1052E laying around for some months and I always wanted to do the hack to evolve it to a DS1102E. Basically the latter model can measure rise times down to 3.5 ns (100MHz), and some users on the EEVBlog forum mentioned that the FFT now is more precise.

A quick glance to the info screen of the scope (Utility → System Info) showed my scope had the firmware version 00.02.02 SP2. Great! That means I don’t have to do the downgrade to hack it. If you have a firmware greater than 00.02.02 SP2, please visit the EEVBlog Forum topic and follow the instructions there.