• Mesh VPN tinc

    Here is the technology to easily configure virtual private network for direct P2P access. Consider you need to access a server that’s located behind a firewall. Consider direct communication channel is preferable to forwarding via a central point. Consider a cross-platform support is needed. The answer to all this requirements is tinc VPN.

  • Rebuilding Arch linux kernel

    It turned out that every laptop I owned happened to need custom kernel eventually. For instance, Acer C720 had a less popular light sensor, HP needed a specific version of WiFi driver etc. And this time, Xiaomi Mi Notebook Air, doesn’t work well with the kernels younger than 4.10, the touchpad becomes unbearable jerky. Luckily there is an AUR package with LTS kernel linux-lts49. Unfortunately, it can’t be built in tmpfs because of limited size. But it turns out that building minimal kernels is very easy in Arch linux indeed.

  • Bit streams in C++

    Reading and writing specific bits is a common task. This article reviews encountered methods and introduces C++ metaprogramming-style one. There are a few conventional techniques to do that:

  • Automatic testing of nvim-gdb

    Started doing automatic testing of nvim-gdb and configured continuous integration with Travis CI. Unlike the previous attempt with dotfiles, it’s more convenient to use neovim python client.

  • LLDB in nvim-gdb

    The plugin nvim-gdb (see introduction) now supports both GDB and LLDB.

  • Welcome Language Server Protocol

    I’ve put a lot of effort to get YouCompleteMe and rtags configured and running: deployed compactly, updated automatically, adapted to vim, managed. And they served well until I found a better solution: language server protocol (LSP). It turns out to be as robust as simple to configure nowadays.

  • Arch Linux configuration management

    It turns out that tracking tweaks to the system, Arch Linux in my case, is a common concern. And it has already been solved by aconfmgr. This is a shell script, which calculates what has changed in the system: installed or removed packages; added, removed or changed files.

  • Advent of code 2017

    I did it again, completed advent of code 2017. My solutions are available on github.

  • A pitfall with std::partial_sum()

    Consider a situation: you get a buffer with some network packets and their sizes: void Packetize(std::vector<uint8_t> &buffer, std::vector<uint16_t> &sizes). Now to send the packets out, you need to calculate packet offsets. What could be easier with STL:

  • Building packages for Raspberry Pi using qemu-user

    When I first packaged for Arch Linux ARM, I merely adapted binaries built for Raspbian (see the kerberosio-alarm). It worked for a while until I upgraded to the version 2.4.0 as the machinery service started to crash. Apparently, due to lost ABI compatibility. So it’s time to build the application from the source code. Building on Raspberry PI is impractical due to limited resources, and setting up cross-compilation tools requires a great deal of accuracy. Luckily, I encountered a quick workaround: use qemu-user to allow running native compiler on an x86_64 machine (see the original post).

subscribe via RSS