Tools: precision test indicator holder

This is the second part in the series of the tools I use. Tools that are surprisingly useful, tools that are not that obvious to find. Check out the first part here. Today: how to calibrate the CNC axis without actually cutting anything ? Use a test indicator ! How to hold the meter steady though, ? Attach it to the frame of your router using the power of magnets ! Sample item on Amazon here [affiliate link warning]

image0 image1 image2

Despite being attached to the frame by its back instead of the bottom it still holds beautifully.

Enabling USB 3.0 in already existing Virtualbox VMs

Just a quick note on how to get USB 3.0 in Virtualbox for VMs that were created with USB 1.1 support only. First, download VirtualBox Extension Pack from here. Install it. Then quit Virtualbox completely. Go to your directory that contains your virtual machine and edit .vbox file. Replace the whole <USBController> section with the following:

<USB>
    <Controllers>
        <Controller name="xHCI" type="XHCI"/>
    </Controllers>
    <DeviceFilters/>
</USB>

That's it, let me know if it works for you !

When life gives you temp space - make lemonade !

Some VPS providers, e.g. Azure (I know..) provide you with 2 disks for your VPSes. One, of very limited size, system disk, and the other one, spacy but with not guarantees that the data survives reboot. Basically it means that you can have a small VPS, with a small amount of RAM but large temp disk space. Why this could be useful ? Imagine tasks with lots of mem requirements but that not need to be extra fast, where swapping is allowed. Like complex nightly builds. Here is a set of super simple scripts I've come up with to quickly boot up a system, and then in the background add a new swap file on the temp drive there. The temp drive is assumed to be under /mnt.

root@someazurehost:~# cat /etc/rc.local
#!/bin/sh -e
set -v

# do not wait for swap to become online,
# proceed with the boot further,
# with swap being created in the background
/etc/make_and_enable_swap &

exit 0
root@someazurehost:~# cat /etc/make_and_enable_swap
#!/bin/sh
set -e
set -v
# create new 2GB swap file
dd if=/dev/zero of=/mnt/swap bs=1M count=2048
chmod 0600 /mnt/swap
mkswap /mnt/swap
swapon /mnt/swap

Don't forget to make /etc/make_and_enable_swap executable ! Do not add this swap file to fstab, as it is being read before rc.local, and this may certainly result in a boot failure, as the swap file would not be ready yet.

Containerized zombie spawner

Recently I was playing with a fully Dockerized setup of Jenkins at work and found a curious issue there. Whenever Jenkins was polling the git server the side effect was that it created a zombie ssh process. The issue is actually remediated by the Jenkins team now by explicitly using a tiny init system called ... tini, started as the main container's process instead of just starting Jenkins there. This tiny tini thing can properly adopt and reap the children. I was all like - wow, what a great blog entry is coming at me. I was planning to describe how zombies come to existence on Linux and why Docker should, in my opinion, provide an adopter-reaper by default and other very interesting things ! But then I found a really excellent article by the Phusion team here explaining all that and more. It is very good. You should read it. That is it. The end. Happy reaping !