RSSAmplifier

Blog

Blago's blog

Recent content on Blago's blog

petrovs.infoRSS feed ↗42 posts

Latest posts

Bor: My Side Project

This blog does not get updated very often, and there is a simple reason for that: most of my free time goes into a side project called Bor. After more than a year of evenings and weekends spent on it, it deserves a proper introduction here. What is Bor Bor is an open-source policy management platform for Linux desktops. The core idea can be summarized in one sentence: define, distribute, and…

Тренажор за радиолюбителския изпит на КРС

Note: this post is in Bulgarian, as it concerns the Bulgarian amateur radio license exam held by the Communications Regulation Commission (CRC). Какво направих От известно време имам намерение да се явя на изпита за радиолюбителска правоспособност. При прегледа на материалите за подготовка установих, че официалните въпроси на Комисията за регулиране на съобщенията (КРС) са достъпни само като PDF…

In the daily

♫ As the snow flies, On a cold and gray Chicago mornin’, An overworked dev logs in… “the daily.” And his mama cries, ‘Cause the build broke down at half past five, While the scrum master pries… “In the daily.” People stand around, Talking ‘bout “alignment” while the deadlines hound, And the mute bug bites… “In the daily.” Then the…

Conquering Carriage Returns and Permissions: Ensuring a Smooth Cross-Platform Git Workflow

If you work on a project that primarily runs on Linux or another Unix-like environment but collaborate with colleagues on Windows, you’ve likely run into two recurring headaches: Inconsistent line endings (CRLF vs. LF) leading to unnecessary diffs, merge conflicts, or even runtime errors in scripts. Missing Unix permissions when cloning to an NTFS-based filesystem, which doesn’t store executable…

Using Reverse WebSocket Connections in Go to Reach Services Behind NAT

Introduction Have you ever needed to access a service running on a machine behind NAT—one where you can’t simply open a port and connect from the outside? This scenario is very common for remote management or “agent” scenarios, but not only that. Other use cases might be: Sharing a local VNC server port to provide remote assistance (similar to RustDesk / TeamViewer) Accessing IoT…

Self-hosting workshop in Initlab

Together with Vasil, we organized a workshop about self-hosting in initLab, the hackerspace of Sofia. It was fun and productive discussion! Your browser does not support the video tag.

Discussing Open Source and Internet Freedom on Izotopia

On October 10th, I had the pleasure of joining Bogomil (Bogo) Shopov on the Bulgarian national radio program “Horizont” in their show “Izotopia” [🇫] to talk about some of the most pressing issues in technology today. As part of the OpenFest team, we delved into the world of open source, the evolving landscape of internet freedom, and the role of AI in this digital age. We…

Joystick for changing the Plasma virtual desktops

The whole project took about ~30 min, using some stuff around the living room and electrical tape. The controller is Olimex AVR-T32U4, Arduino Leonardo clone. It runs really well with the Kwin script for maximizing the windows to a new virtual desktop, when they are in full screen. Just like in Mac. Here is the code: #include <Keyboard.h> const int upPin = 2; const int downPin = 3; const int…

Miniflux is a minimalist and opinionated feed reader

In the age of information overload, it&rsquo;s crucial to find the right tool that streamlines our online reading experience. While there are numerous feed aggregators in the market, Miniflux has emerged as my aggregator of choice. Here’s why: 1. A Minimalistic User Interface for a Distraction-Free Experience First and foremost, what captured my attention about Miniflux is its blazing fast and…

Dracula theme for Miniflux

CSS theme for Miniflux with close colors to the Dracula theme. :root { --body-color: #f8f8f2; --body-background: #282a36; --hr-border-color: #44475a; --title-color: #50fa7b; --link-color: #f8f8f2; --link-focus-color: #8be9fd; --link-hover-color: #ff79c6; --link-visited-color: #6272a4; --header-list-border-color: #44475a; --header-link-color: #f8f8f2; --header-link-focus-color: #8be9fd;…

Resticara - a wrapper of Restic

Hey folks, hope you&rsquo;re all doing well! If you&rsquo;ve ever had to deal with backups, you know it can be a chore. Enter Restic — an excellent command-line tool for backups. But wouldn&rsquo;t it be nice to skip the bash scripting for simple projects? That&rsquo;s exactly why I decided to build Resticara over a weekend. I was working with a client and realized that both of us needed a more…

Thunderbird in Docker with Xpra

Old project which is useful for QA testing of mail servers and mail security appliances. In the time, it was needed for testing one mail account with different configurations. The code is here

Vintage bicycle ergometer, used as Street View controller (2013 project)

I don&rsquo;t keep the code but it was really simple. Olimex AVR-T32U4 was used for keyboard emulation. Your user agent does not support the HTML5 Video element.

ChatGPT generated possible Manowar song

Hello, could you please generate lyrics for a new song of Manowar? Sure, here&rsquo;s a sample of lyrics for a hypothetical Manowar song: Verse 1: In the land of steel and thunder We ride to fight, our will unbroken With the power of the gods in our hearts We strike down our enemies, unspoken Chorus: Manowar, Manowar We are the warriors, hear our battle cry Manowar, Manowar Our strength and honor,…

Project Шайба

Update So, here is the code. It&rsquo;s really simple gadget. The whole setup took me less than a hour for building and coding. I got the rotary dialer from a local auction site, like Ebay. My first idea was to include everything inside it&rsquo;s box and leave only the USB cable outside but it was encapsulated and I didn&rsquo;t have any success for opening it. Originally, the cable had 5 pin DIN…

Worst Airbnb experience

Well, we had a really bad experience with a host in Portugal. He waited only 10 minutes for us and then he left the place, without responding for hours. We had to book another hotel which was not a bad idea at all :). The place was really cheap and I didn&rsquo;t care about the refunding. Still, we didn&rsquo;t get any support options from Airbnb. The most unpleasant part was today, when my review…

Joysticks in the bedroom

In this way, it&rsquo;s really comfortable to control the lamps without trying to find the switches at night :) I made it with two industrial joysticks bought from a local hardware shop. The signal is going to the electrical rack in my storage room. I&rsquo;m using two smart relays - Shelly Pro 4PM made by a Bulgarian company. They are enough to control the lights in the whole apartment. I have…

Gluu on LXD

If you are experiencing errors when installing Gluu, the Open Source digital identity server in LXD, this is because Gluu works in a chrooted environment by default. Errors like these should appear on systems with deb or RPM packages installed: Jun 03 14:05:10 gluu systemd[1]: Starting Container gluu-server... Jun 03 14:05:10 gluu systemd-nspawn[1546]: Failed to mount n/a (type n/a) on…

Building LXD images with Packer and Ansible

Building from scratch machines with similar configuration is not very wise. Unless it&rsquo;s not often. Preparing at least LXD base images would be helpful. Small routine tasks like changing the default repositories, MOTD, adding ssh keys and base tools would take more than 5 minutes per machine. 5 new machines per week, that takes a lot. To be effective, system administrators should be lazy and…

Running Wine apps in multi user environment

For the project I mentioned in the last post there was a requirement for running some Windows games on the computers. Despite the challenge to maintain 20 years old Windows software in Linux, the main challenge was to make it working in multi user environment with LDAP. Wine is a per-user app. Every user has their own Wine prefix with the apps directory and the emulated Windows root drive.

Revival of the Bulgarian villages

Occasionally I&rsquo;m giving technical support to foundation &ldquo;Revival of the Bulgarian villages&rdquo; (фондация Възраждане на българските села). They are just a group of people with the noble mission to support the small places in our country with education and equipment. The children in these regions must have equal access to knowledge and technologies just like their peers from the big…

DeltaProXmlGen

DeltaProXmlGen Two years ago I made a small desktop program for my girlfriend&rsquo;s company. It converts XLS financial statements from the Amazon web store to Microinvest DeltaPro. It&rsquo;s really simple but working solution that is saving some manual data entry time. A new version is planned for the future. The most important functionality which is missing is the automatic currency conversion…

New blog platform

It&rsquo;s been a long time since my last post here. There are several reasons for this but the main one is laziness. Although, system administrators should be lazy. Another reason was the blog platform ( Hexo ). Last week I worked for about two evenings to migrate the website to a new platform. As well as he last one, Octopress Hexo, became difficult to maintain. Most of the community support of…

Lighting talk about home automation

This is my lighting talk from OpenFest 2017 It&rsquo;s about the home automation in my appartment. Sorry, Bulgarian only. . . . And here is another great one from the same session

Open data of SofiaTraffic

Quick post, first for 2017. I got an Android car PC computer for Christmas and the hacking ideas began to appear. Because most the buffer parkings near the Sofia subway stations are full from early in the morning, I always have to do a lot of maneuvers with the car. It would be great if the car PC warns me about the free places around 1km away from the parking every morning, based on the GPS.

HAProxy build with more Debian-like configuration

I made a HAProxy build with Debian-style config file because some of the haproxy.cfg files on my servers became really big. HAProxy has an option to include multiple config files as a command line arguent, like this: haproxy -f haproxy.cfg -f haproxy2.cfg -f...etc. So, the algoritm is like: Read /etc/haproxy/haproxy.cfg (The global settings); Read /etc/haproxy/haproxy.cfg.d/http/http.cfg (Global…

Example of MySQL incremental backup with XtraBackup

Percona&rsquo;s XtraBackup is really good solution for incremental backups if small or large MySQL/MariaDB databases. Mysqldump is really slow and is not downtimeless. In our case, we need two week history of every day. Every Sunday the backup will be full and the rest of the days, backups will be incremental, based on Sunday&rsquo;s full backup. The backups will be placed in a folder named…

Using Ansible with pass

To work with the root user and ssh keys is a common practice in the Ansible community. Another variant is to use a &ldquo;deploy&rdquo; user with the same password on every machine. Another option is to use Ansible Vault to encrypt the yaml files. or to use a password manager. It&rsquo;s never a good idea to keep passwords, private keys and other sensual data to the source code repository. Pass I…

My way to auto update Let's Encrypt certs without downtime

It&rsquo;s been a while since my last post here. This is my first post with the new platform - Hexo. It&rsquo;s faster and simpler than Octopress and it&rsquo;s not Ruby but nevermind&hellip; The whole concept with the Certification Authorities is completely broken but we don&rsquo;t have something better which is working. A world with fully encrypted web is a really a good idea since the whole…

How to cook Patatnik

This is my first non technical post here. I&rsquo;m going to explain in details my way to cook Patatnik - Bulgarian dish from the Rhodopi Mountains. It&rsquo;s made of shredded potatoes, eggs, onions, cheese and some local spices. I&rsquo;m not sure if this is the most authentic recipe but it&rsquo;s the way I like it. What is needed for two servings: 3 - 4 medium potatoes; A head of an onion; 3…

Quick way to setup VirtualBox VM in multi user environment

Let&rsquo;s assume that we need to setup VirtualBox VM with Windows XP and an old version of Microsoft Office. The machine must be used from everyone on a given number of Linux workstations. The workstations may work with LDAP and NFS/Cifs. The standard installation of the VM would be extremely space consuming and it would cost a lot of the personal life of the administrator. I made an easy hack…

OpenNIC – Lighting talk on OpenFest 2013

Copyrights

Content All original content on this site is copyright © Blagovest Petrov and published under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. You are free to share and adapt the material for any purpose, even commercially, provided you give appropriate attribution and distribute any derivative works under the same license. Software This site is generated with…

Manual HA Failover Cluster with Linux Containers, DRBD and Btrfs

In this post I&rsquo;m going to explain you how to deploy really fast and cheap cluster of Linux Containers. I use the same setup in a production enviroment for a big ERP system with accounting data (10GB++ of MySQL). Why LXC? Because it is Über-cool! Compared to the Hardware Virtualization, the runtime performance is near the bare metal speeds. Operations like starting/stopping of the system or…

Perl in the office

Today Perl helped me again to solve a boring office problem. The colleagues gave me a presentation with almost 1000 slides. It was designed for a theatre subtitles. The slides was simple. Just a sentence per each slide. Only the colors was mistaken. Not black on white but white on black. My colleagues spent hours in googling for M$ Office bulk color change function. Then something blinked in me.…

F.B. Purity

Some of my Facebook friends have enough free time to repost stupid Facebook page images, Tumblr gifs and other crap. Others are just not clever enough. The worst is when there&rsquo;s a new reality show on the TV, a new internet meme or &ldquo;just-share-crap&rdquo; trend. I don&rsquo;t want to be a part of that. F.B. Purity helps me to filter the Facebook wall with more advanced tools than the…

Virtualize a broken Windows XP machine with KVM or Xen, Part2

It’s time to convert the physical disk to a virtual image. I’m using KVM/Qemu almost everywhere, so, this tutorial will be about KVM. You can use the images in Xen/VMWare almost the same way. First, install the VirtIO drivers for a better performance. The Fedora team builds isos with binary executables. Check the KVM documentation for the newest download links. First, attach a new VirtIO disk…

Virtualize a broken Windows XP machine with KVM or Xen, Part1

There are a lot of dirty legacy Personal Computers which are online and cannot be reinstalled. The most common problems are that they are installed with a special software and the CDs are lost or licensing problems. But what will happen when your zombie Durom dies? And your boss wants to use the accounting software ASAP.. The best scenario is when your HDD is healthy 🙂 First, you shoud find a…

My presentation on OpenFest 2013

This year, on OpenFest 2013 I will talk about Ulteo OVD - Open Source Application Delivery system. The conference shedule was full and there was just a place on the Lighting Talks, but it&rsquo;s enough. I will cover the core functionality and some words about the company which is developing Ulteo. It&rsquo;s a good idea to invite the developers on the next OpenFest. I have a working setup in the…

Horse - dummy school project

Just a small dummy C project from the highschool, made probably in 2008. It&rsquo;s completely useless. I still keep it as a good example of using an escape characters in Bash. The code is hosted here

Ubuntu 12.04 Desktop with Zentyal 3.2

Zentyal, The Linux Small Business Server includes the most important services for a small or medium company. Most of the services are integrated around OpenLdap. Since version 3.1, Zentyal uses Samba4 as a Directory and File Sharing services. I&rsquo;m maintaining the computers in the Francophone center in University of Sofia. Everything in this place is with Ubuntu workstations. There was a major…

(untitled)

My name is Blagovest Petrov and this is my personal blog. Here I&rsquo;m writing mainly about Linux, System Administration and DevOps. The purpose of most of the posts is to track what I have done over the years for myself. Currently I&rsquo;m a DevOps team lead at IBM. In my free time I like to go kayaking on dams or to the Greek seasisde, visiting music festivals, working on DIY projects, etc.