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

    [read more]
  • Advent of code 2017

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

    [read more]
  • 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:

    [read more]
  • 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).

    [read more]
  • Algorithms, Part II on Coursera

    Took the course Algorithms, Part II on Coursera (remember Part I), spent 4 weeks on video lectures, programming tasks in Java (see github). Again, enjoyed the experience a lot, recommend to everybody!

  • KVM for desktop virtualization retried

    A year ago I concluded that VirtualBox would be the best choice for desktop virtualization. I ran Windows 7 back then and wasn’t able to get MSYS2 terminal emulator displayed lively. And now I was to install Windows 10, so took a chance to reevaluate KVM in pursuit for better performance. This time I started with libvirt and virt-manager.

    [read more]
  • Continuous integration for dotfiles

    I’ve set up Travis CI for dotfiles finally. The idea is to clone the repository, configure the deployment and to conduct various tests with it. The most interesting and challenging part is of course testing. To check various vim functionality in different scenarios automatically, PTY is required.

    [read more]
  • Beating memory leak of gnome-shell

    GNOME shell has been leaking memory for a while hurting user experience. For instance, it could freeze a laptop sending it to deep swapping. To counteract, we had to detect the situation, switch to the virtual terminal, login and kill the offending process. Luckily, restarting gnome-shell is seamless and harmless. I have just realized that monitoring it could easily be automated.

    [read more]
  • Portable dotfiles

    While dotfiles are mainly targeted for installation into home directory, I realized recently that the settings could be portable too. Consider the following scenario: a colleague of mine calls me up for some help, and I will have to look at the code on her station. Local customizations could be weird and counter-productive. But if instead I deployed and applied my dotfiles without changing hers, it would be much more convenient.

    [read more]
  • GDB in neovim

    One more essential tool needed for development in C++ is debugger. While I have been quite productive with bare bone GDB and its TUI, still felt like missing few convenient features: code navigation (where to put a breakpoint?), syntax coloring, custom keymaps. Few years ago I found the plugin Conque-GDB, which served pretty well in Vim. However, it hasn’t been updated for a while, and doesn’t work well in neovim.

    [read more]

subscribe via RSS