Wednesday, August 12, 2026

AVMaturix — A Fully Configurable Maturity Assessment Framework

What if you could author an entire DevOps, Agile, Automation, Engineering, or other domain-specific maturity assessment through a workbook template—and instantly turn it into a web-based assessment? That is the idea behind AVMaturix.

The key differentiator is assessment configurability. The entire assessment can be authored and customized through workbook templates—from assessment areas and sections to questions, KPIs, scoring, recommendations, and other assessment dimensions. The workbook becomes the assessment definition, while AVMaturix turns that definition into a complete web-based assessment experience with participant access, scoring, dashboards, and reporting.

This enables the same framework to support very different domains:

DevOps / DevSecOps
Agile
Automation
Engineering Practices
Technology Adoption
And many more

Author the assessment in a workbook. Turn it into a web-based assessment.

Explore AVMaturix on GitHub:

  charts_en

cover_en 

Tuesday, December 5, 2023

MyPyTalks : A Generative AI Powered, Shell Copilot

Perform your tasks under Linux | Unix boxes with Natural Language Prompts.

The tool will generate Shell Scripts based on the user prompts with the insights on the execution impact, with the help of Generative AI. The script could be further customized by the user prior to the execution for an added flexibility.

Find more in GitHub

MyPyTalks_en

 

 

Friday, February 17, 2023

RaspberryPi4: Enabling Audio Devices During Remote Desktop Sessions

During RDP Sessions, ensure
  • User has been in Right Groups.
  • Display Manager has been unlinked from Pulse Sink During RDP Sessions

Reference

Alternate Method:

With XRDP, use x11vnc protocol to Login into Local Desktop Session, than to a new session with RDP Protocol. This will enable the user with all the required privileges in an RDP Session, as that of a locally logged in session.

For implementation instructions follow this GitHub Link.


Tuesday, December 13, 2022

Migrating an Existing ENCRYPTED Hard Drive to a NEW “NVMe PCIe M.2 SSD”

An upgrade to a “NVMe PCIe M.2 SSD” drive, helps your system perform 6X faster.

The context has been detailed in the trail.

This blog primarily talks about, Migrating the current Hard Drive (Which is ENCRYPTED) to the new “NVME Drive”. Our current environment has the existing Hard Drive fully  encrypted using Microsoft BitLocker Or McAfee Encryption. We would like to have the migration as seamless as possible, without redoing all the OS/Software Setup.

Many of the Disk Cloning Tools may fail, while cloning an encrypted Disk.

Hence for this purpose we’ve used “CloneZilla” with “Sector To Sector Copy” option. This option will use “dd” linux command to clone a drive.

It will use a bit by bit copy, so you will get an exact replica of the original Hard Drive. You could now directly plug and play the new “NVMe PCIe Drive”, replacing the original Hard Drive.

image

 

Advantages Of ““NVMe PCIe M.2 SSD” (Context):

Getting Desktop Virtualization To Next Level with a “NVMe PCIe M.2 SSD” (~6X performance gain)

Recently we’ve upgraded our Personal Desktop HDD/SSD to the new “NVMe PCIe M.2 SSD” (~3Gbps transfer speed). The performance gain has been astonishing, including overall desktop and virtualization performance.

Earlier we’ve been keeping multiple HDDs, to have a hassle free Virtualization experience. Since HDDs are of mechanical and to transfer data, their HEADs has to be moved over the platter (SEEK), which is time consuming.

If multiple applications are competing for data, say your Primary Desktop and multiple Virtual Machines running on top of your primary system, Your Hard Drive will choke, as it has to SEEK its heads over multiple locations and the heads can only move back and forth (not in random fashion). In worst case, it can freeze the entire system.

However if you keep multiple HDDs, say one specific for Virtualization purposes, this issue wont happen, as your virtualized application data SEEK operations will done independently, compared to your Primary Desktop Data SEEK operations, as both are done in separate HDDs.

Still data transfer speed will be a primary bottleneck on your virtualization performance, as HDDs max data transfer speed only comes around 150-200MBps.

Changing to SATA SSD’s can improve the performance to a greater extent, as it can provide a data transfer speed up to 550MBps. A 2.5x performance gain.

However with a new “NVMe PCIe M.2 SSD” drive, which is almost similar to a RAM design and support random read/write, can deliver around 3000MBps (3GBps). Approx 6X performance gain. Since it support random access, a single drive can cater to multiple applications competing for DATA. i.e A single “NVME SSD” can support your primary desktop and virtualized application at once with high data transfer rate.

In a nutshell now we enjoy the below benefits with a “NVMe PCIe M.2 SSD” upgrade;

  1. High boot speed. Both for desktop (boot in 7 seconds) and virtual machines.
  2. Overall 6X performance gain
  3. A single, compact device, instead of multiple big hard drives
  4. Longevity, as NVMe is similar to RAM and having no moving parts
  5. Low Power Consumption
  6. Less Heat
  7. Silent Operation
  8. Better Battery Backup for Laptops/NoteBooks
  9. Better performance and turn arounds for data intensive applications like AI/Machine Learning


Friday, November 5, 2021

PyCompilePackage, A Lightweight Python Pre Compiler and Packager

A Lightweight Python Pre Compiler and Packager (As a single Package). with Added Support for Dependencies having C/C++ extensions. e.g. Numpy

Try PyCompilePackager here.

Are You Tired of, with the below aspects of your Python Deployments?

* Concerned about sharing the Original Python Source code files for Deployment? (The source may highly prone towards tampering)

* Slow startup time of your Python App, due to the initial compilations

* Your deployment contains the whole hierarchy of Python Source, folders and associated files (which are Difficult to manage and update)


PyCompilePackge, Helps to make your Python Build/Deployments clean and compact by;

1. Pre-Compile all your python sources to Byte Codes

2. Package those Compiled Files in a Single PYZ Container file, with any associated resources

3. Deployment is as simple as, Copy this single PYZ file to Target Machines and run


This has the below advantages over the traditional python deployments;

* Original Python Source code is not shared, hence less chance for tampering

* Enjoy performance boosts, due to pre compiled source and faster startup time

* Easy and fast (re)deployments, as you don't have to deal with lot of files/folder hierarchies

* Chances for Individual file corruption post deployment is less, Since all files have packaged as a single PYZ file

Friday, September 24, 2021

Reconnect to a Local Desktop Session from RDP : Linux

Connecting to the same Locally Logged In Desktop Session, from an RDP Client is an obvious challenge in any Linux Environment. But this should be the way, how RDP Protocol should behave as we find with Windows Machines.

Linux RDP Implementations like XRDP, will create separate Session with Remote Connections, rather than connecting to a locally available Desktop Session.

However you could use a combination of both XRDP and X11VNC utilities, to achieve the desired behavior.

A sample implementation with Debian10 LXQt Desktop (using LightDM as the display-manager) is given here;

fig. A Debian 10 Virtual Machine, being accessed simultaneously from an RDP Client (Remmina) and a native viewer (Virt-Viewer), using the same Session.

RDPShareLocalSession

Monday, March 29, 2021

Cross Compile Modern C++, 2X Faster and Cleaner with Docker

Setting up Cross Compilation Tool Chain on your Development Box for Modern C++, is not easy and could easily pollute or break the system.

However, Docker and Qemu User space Emulation will make these tasks a lot more simpler and faster.

Refer a sample implementation in this GitHub Page.

image

 

image

image

Tuesday, March 16, 2021

Run Your Pi (RaspberryPi) with 16GB Of RAM !

Enable your Pi to boot from a good quality SSD (Solid State Drive).
Enable Swap file, and configure it to grow between 8-16 GB.

Your Pi is now ready to take, much demanding use cases !

image

  

Components Used:

PowerBank-1 (Two 2.4A Out), powering
   Raspberry Pi2
   120GB SSD (Enables Virtual Memory of 16GB for Pi)

PowerBank-2 (Two 2.4A Out), powering
    Router (Used as Wifi Extender – Optional*)
    USB FAN (To maintain the Pi’s temp between 40-42C)

 

 

Sunday, February 14, 2021

WhiteStat : Real-time Daily Network Bandwidth Usage Analyzer, Targeted for RaspberryPi

WhiteStat is an entire Network (Internet) Bandwidth Daily Usage Analyzer, in a Docker Container with Historic Data Persistence.

Supports both IPV4 and V6 captures. It requires no other external dependency other than Docker CE installed on the Host.

 

image

Key Features includes:


1. Entire Network Usage Analyzer is in a Docker Image and minimal enough to run on a Pi Hardware


2. Provides Daily Usage Levels per individual Host in the Network, Considering DHCP and the same Host could have different IP's on the same day


3. Single Responsive Dashboard (UX) to view all the daily/historic statistics. Supports searching/sorting on all usage record fields.


4. Survival of Usage Data, in case of a System Crash (Router/Pi at which WhiteStat is running)
WhiteStat keeps checkpoints on data usage in every 30 Seconds by default, and use the same as the starting level, when the system comes up.


5. Provides Historic Data, in SQL lite Database


6. JSON end points are given, so that it could be integrated with other Analytics tools for detailed data analysis (like PowerBI, excel)

To Know More Follow WhiteStat in GitHub.

image

image

Monday, January 18, 2021

PowerBank as a UPS, for RaspberryPi

We could make use of a Standard Powerbank, as a cost effective UPS to powerup RaspberryPi. This will be particularly useful, if Pi is serving critical functions for your network 24x7, and you cannot afford any downtime.

Make a note of below important points;

a. Use a PowerBank that meets the Voltage/Current specifications of Pi.

b. The PowerBank should allow PassThrough Charging

(So you could charge your PowerBank and Pi at the same time)

c. The PowerBank should allow Advanced Current Shunt

(Even if you leave the PowerBank, with AC Power the feature will protect from Overcharging).

Moving around the Pi, While its Up and Running !

image

Sunday, January 17, 2021

Network Bandwidth Monitoring/Analysis Using RaspberryPi II

Pi could be used to Monitor the Bandwidth Usage of entire Home Network. Time series data could be visualized in different types of Charts. Historic data visualization supported (e.g Monthly Bandwidth Usage). Each Network/IP/Machine level statistics could be analyzed and viewed.

The below configuration explain about setting up such an environment. The only prerequisite would be, Make all your traffic go through Pi. i.e Change your Default Gateway from Router to Pi. This could be easily done through, updating the Router LAN settings, and putting Raspberry Pi IP-Address, in the Default Gateway box.

Now update Raspberry Pi’s Default Gateway as Routers IP, and enable IP forwarding. This will make all traffic destined for Internet will be automatically routed to the Router from Pi. Finally setup ‘ntopng’, to churn the network packets, for analysis. 

Detailed instructions are given here.

image

image

Monday, January 11, 2021

Raspberry Pi, as Network Security Appliance/AD-Blocker

In this article, we will explain how to use RaspberryPi, as a Network Security Appliance for private network, which could be used to block all ADS, and secure the network by whitelisting/blacklisting DNS names.

It could effectively improve the overall network performance as all the AD requests going out of your private network will get blocked, and never goes out of your private network. It extends the protection to all computers in your network including mobile/other devices connects to your home network.


The below configuration shows, Pi-Hole deployed in Docker containers hosted on a RaspberryPi, and managed through Portainer (A Container orchestration platform, again running inside a Docker Container)

image

 

You could find the instructions on setting up the same here.

The only change we’d, is using a new version of Pi-Hole image (pihole/pihole:v5.0-armhf)

A single day operation statistics is given below: In a single day operation, Pi-Hole has blocked 31.7% of total requests, which are of type Ads.

Since the CPU/Memory (~4.5MB) footprints are pretty low, Pi runs smooth 24x7 and meets the network performance.

image

Bypass Qemu Network Stack with Virtio-Vhost, for Near Native Performance

For virtualized environments, primary performance bottleneck could happen with below resources:

a. CPU

b. Storage

c. Network

For CPU, direct passthrough option would give a performance near to bare metal. For Storage and Network, deploying VIRTIO drivers (paravirtualization) could provide a descent performance as well. These concepts have been explained here.

With network, one more performance tuning is possible, to completely bypass the Hypervisor (Qemu) network stack, and let the GUEST directly interact with HOST’s network stack. This may give almost similar network performance for guest applications as with application running on the host.

Implementing this requires, enabling ‘vhost_net’ driver on the host, and update the VM Settings to use this driver, which is detailed here.

In an optimal setting, you will also enable the same number of IO-Queues, as with the total number of CPU Cores allotted to the Virtual Machine.

Reference

image

 

 

Wednesday, January 15, 2020

Automate IE Proxy Setting Changes on Network Adapter Changes–Windows Powershell

If you need to turn on IE Proxy settings, say if the LAN cable is plugged in and reverse the setting, once Wireless got connected, you could rely on Powershell script to automate the same in Windows environment.

This is a two step process:

1. Create the powershell script, which detects the Network Adapter Change, and update IE Settings accordingly

Sample Script here:

2. Create a new Task in “Task Scheduler”, which will be triggered on Network Changes (NetworkProfile->Event ID:10000) and System Startup

Set the above script as the Action, for the task

Eg

Program: powershell.exe

Arguments: -windowstyle hidden "<PathTo>\SwitchProxyOnNetworkChange.ps1":

Note: This will run the script in hidden mode, so that user won’t notice the powershell window – for the best experience


From now on whenever your Network get changed, the script will be triggered automatically to set IE Proxy settings accordingly.

Wednesday, November 13, 2019

Configure Console Only Login On Ubuntu 16.04+ Desktop

Occasionally we may want to login to our Ubuntu Desktop as console only mode (for eg: running our Ubuntu desktop as a bare metal hypervisor, only to launch Virtual Machines which will be connected remotely).

This will help to run the desktop with bare minimum memory (120MB RAM on Ubuntu 16.04) and CPU usage.

By default Ubuntu Desktop 16.04+ does not provide (which has Systemd than the legacy init system) this option, and you’ve to configure the same. Once configured you will get a new Grub menu entry on startup, to login as Console Mode.

  1. Copy a sample menu entry from (/boot/grub/grub.cfg) to (/etc/grub.d/40_custom)

    Sample:

    menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-0e341ce4-5a12-4a6d-a997-5336d1670353' {

           recordfail

           load_video

           gfxmode $linux_gfx_mode

           insmod gzio

           if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi

           insmod part_msdos

           insmod ext2

           set root='hd2,msdos5'

           if [ x$feature_platform_search_hint = xy ]; then

             search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos5 --hint-efi=hd2,msdos5 --hint-baremetal=ahci2,msdos5  0e341ce4-5a12-4a6d-a997-5336d1670353

           else

             search --no-floppy --fs-uuid --set=root 0e341ce4-5a12-4a6d-a997-5336d1670353

           fi

            linux /boot/vmlinuz-4.15.0-54-generic root=UUID=0e341ce4-5a12-4a6d-a997-5336d1670353 ro  ipv6.disable=1  scsi_mod.use_blk_mq=1

           initrd /boot/initrd.img-4.15.0-54-generic

    }

     

  2. Update the copied entry as per below (highlighted text). The crux is ‘systemd.unit’ property.

    Sample:

    menuentry 'Ubuntu-TextMode' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-0e341ce4-5a12-4a6d-a997-5336d1670353' {

           recordfail

           #load_video

           #gfxmode $linux_gfx_mode

           insmod gzio

           if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi

           insmod part_msdos

           insmod ext2

           set root='hd2,msdos5'

           if [ x$feature_platform_search_hint = xy ]; then

             search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos5 --hint-efi=hd2,msdos5 --hint-baremetal=ahci2,msdos5  0e341ce4-5a12-4a6d-a997-5336d1670353

           else

             search --no-floppy --fs-uuid --set=root 0e341ce4-5a12-4a6d-a997-5336d1670353

           fi

            linux /vmlinuz root=UUID=0e341ce4-5a12-4a6d-a997-5336d1670353 systemd.unit=multi-user.target ro  ipv6.disable=1  scsi_mod.use_blk_mq=1

           initrd /initrd.img

    }


  3. Update grub using (Sudo update-grub2)

  4. Reboot

  5. Select the menu entry “Ubuntu-TextMode’