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.
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.
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).
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).
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.
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.
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.
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.
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).
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.
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.
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.
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.