HEO – LEGO Boost robot


Using Linux, Python and a couple of amazing libraries, I added voice control to Vernie, the LEGO Boost based robot.

Now, with kids, we put all engineering skills together and took official path to built our custom robot – HEO. Then we composed a path-finding program in the original LEGO Boost application.

Finally, the kids created a nice video for their YouTube channel.

P.S. HEO – is acronym in Russian – Наш пЕрвый рОбот which can be translated as: Our First Robot.

Posted in My projects | Tagged , , , | Leave a comment

New life of old socks

I have just revived, updated and fixed macOS port of an amazing, yet abandoned transparent SOCKS proxy library. Don’t lose socks, guys 🙂


tsocks provides transparent network access through a SOCKS proxy. This is common in firewalled LAN environments where all connections to the internet need to pass through a SOCKS server on the firewall. tsocks intercepts the calls applications make to create tcp connections and determines if they can be directly accessed or need the SOCKS server. If they need the SOCKS server their connection is negotiated with the server transparently to the application. This allows existing applications to use SOCKS without recompilation or modification. tsocks is a wrapper library for a number of socket networking functions. Essentially it’s the equivalent of the socksified winsock.dll libraries that are available for Windows.

Posted in My projects | Tagged , , | Leave a comment

amen.sh – Simplified vintage looking user interface elements for shell

I have just finished working on the first public version of the set of simplified vintage looking user interface elements for *NIX shell.

amen.sh demo

It is a simple shell script full of ANSI ESC-sequences to generate frames, windows, buttons and etc. Though, there is a lot of things to be implemented and fixed (as it’s an early development stage), I have no patience to hide it from public any more. So beware of bugs if you decide to try.

Download repository from GitLab: amen.sh, post me bug reports.

P.S. The acronym “amen” stands for “Ansi MENu” 😉

Posted in My projects | Tagged , , , , , , , , | Leave a comment

The real hardware for the BeaST storage system

Shortly after I finished developing the BeaST storage system concept and ended testing it in the virtual environment I faced a problem of how to find a two-headed bare-metal server with a bunch of shared drives.

In fact I did not hope to find a platform for this actually quite expensive testing, but I was lucky enough to get a fantastic offer from the Open Analytics guys to take part in their project of testing the BeaST as an open-source reliable storage system for their needs.

One sunny morning Tobias Verbeke, Open Analytics Managing Director, contacted me and showed an amazing equipment specification, that fits the BeaST testing very well.

A dual-node server – Supermicro 2028TP-DC1TR 2U:

  • 4 x Intel Xeon E5-2630v4
  • 16 x Certified 16GB DDR4 2400Mhz ecc reg
  • 4 x Intel 150GB S3520 
  • 2 x Intel i350-T2 Dual 1GbE (oem)
  • Onboard 3108 redundant power
  • 2 x LSI 9300-8E external HBA card
  • 4 x Supermicro  CBL-SAST-05731M SAS cable

A drive-enclosure to which the server nodes are connected – Supermicro 847E2C-R1K28JBOD with drives:

  • 3 x Seagate ST800FM0173 SAS SSD
  • 3 x Supermicro 3.5 to 2.5 bracket
  • 24 x HGST 8TB SAS 7200RPM (SMC)

Should I say, I agreed immediately? Together with Ronald Bister, who assisted me from the Open Analytics side, we installed FreeBSD and configured the BeaST storage system as well as the client for testing.

We started with the dual-controller BeaST Classic configured for RAID arrays and CTL HA just to test the concept as a whole and we found out it worked!

As the three SSD drives were not used in that configuration the only tricky thing was to balance all the 24 SAS drives across controllers and not to mix them all together: I had to enable the multipathing for each physical drive as well as to create mirrored and then striped RAID-groups.

Luckily my old GEOM configuration parsing script allowed me to find all the volumes and helped to prepare the right configuration (a bit later I updated it to show SAS-addresses – sas2da.sh and even add location of each drive in the enclosure – sas2da_mpr.sh)

As a client we used a CentOS Linux server which was connected with two 10 Gigabit Ethernet interfaces of the BeaST storage system and an even number of volumes was provided from the BeaST. On the Linux client the drives were configured by using the guide: Configuring Linux server to work with the BeaST storage system over iSCSI protocol.

The BeaST Classic – dual-controller storage system with ZFS and CTL HA configuration was obviously more complex to configure. It took more time to implement everything properly and enable the smooth failover and failback operations. We have finally achieved the stable Active-Active state of the testing system (though for the sake of preventing potential issues on the working system the engineers of Open Analytics decided to use the Active/Hot-Standby mode on the backend-pools) and left the BeaST system to work as the storage system for testing environments at Open Analytics.

So, what do we have at the end of the story?

We have tested the BeaST storage system on the real hardware in both RAID and ZFS configurations. I’m absolutely happy the BeaST performs well and the Failover/Failback operations work normally in both the Active/Active and the Active/Hot-Standby modes. Yet, I have a lot of work to do:

  • improve the BeaST Quorum/arbitration subsystem to handle properly all possible hardware failures
  • create installation and configuration scripts
  • write a user interface
Posted in BeaST, IRL, My projects, Storage | Tagged , | 1 Comment

Voice Control for Vernie, the robot based on LEGO

Yes, it’s me who spends long winter holidays playing with children’s toys. We bought a wonderful LEGO BOOST creative toolbox for my son, but I insidiously picked it from the child and started enhancing it with Python to add Voice Control to order the robot simple movement commands. Sometimes it obeys my Russian English, but not always 😉

And “yes”, no Internet connection is required for the Vernie voice control to work 😉

Sources and installation instructions are on Gitlab. Feel free to message me on any issues.

Posted in IRL, My projects | Tagged , , , , , | 2 Comments

My 2018 as a free software developer

The year is almost near the end and I’m feeling Christmas in the air already, now it’s time to recall what was done and count some results.

So, the first half of the year I used GitHub as a platform to store my code and manage updates.

My GitHub stats

As you see, I didn’t do many commits every day. That’s because I’m too lazy I still prefer developing old-school ways (yes, blame me for that 🙂 ) and keep all changes on my PC, pushing only valuable changes to public repositories. Also, I mostly code in my free time: in the evenings and on vacations, therefore you can see empty gaps between commits.

The other reason is that my favourite the BeaST project has a main page only on my blog and the BeaST Quorum (BQ) source code on SourceForge platform.

In June I migrated most part of my code to GitLab, though I didn’t also delete the GitHub account for references and history.

My GitLab stats

So, what projects can I mark “successful” this year? Actually, I’m looking sceptically at all of them, but at least I feel less shame mentioning these projects, code and activities:

  • The BeaST storage system at Open Analytics – a consulting company specialised in supporting the data analysis process of its customers end to end. Together, we have launched tests of the BeaST on a real bare-metal hardware. And it works! After functional tests the BeaST is going to be a LUNs provider for the Kubernetes cluster of the Open Analytics testing environment. I promise to write a post (or two) about this significant milestone in the life of the BeaST project.
  • svcstats – a CLI stat-like utility for reporting IBM SVC/Storwize storage system performance statistics using SMI-S interface. Though I started coding it in 2017, a lot of work has also been done this year.
  • sp_ping – my own simple ICMP ping implementations in Python. It supports both IPv4 and IPv6 protocols as well as unicast/broadcast/multicast requests. It’s code I later reused in the Net Radar – Simple IP networks browser software, which is currently in the early development stage.
  • ds8k_perfs.py – Another stat-like utility. It displays Open-systems performance metrics for IBM DS8000 storage system in CLI. Utilises SMI-S protocols as well.
  • supermatic – a simple HTTP server I wrote just for fun as Bourne Shell script. Yes, It’s a toy, but who cares? 🙂

Posted in BeaST, BeaST Quorum, Misc, My projects, sp_ping, svcstats.py | Tagged , , , , , , , , , | Leave a comment

Supermatic – HTTP server in Bourne Shell

Have you, like me, ever dreamed about having your own WEB server? I mean, the real one – not a blog or a page in a social network.

Now my dream came true. I have my own WEB server, it’s called Supermatic and I spent the whole morning coding it in Bourne Shell 🙂

The power of Supermatic in action!

It works perfectly on my FreeBSD, so the most actual question now is: are there any free VPS servers anywhere in Internet, just to show everyone how it works somewhere except my home test-pet.

This is the project page for Supermatic on my blog and there are sources on GitLab.

Posted in My projects | Tagged , , , , , , | Leave a comment