macOS Monterey VirtualBox Slow Performance Issue

Blogs
Recently I started using macOS full-time and I have to start using VirtualBox as my default Windows option inside Mac. The performance was good but I noticed it drags over the time usage then I came across this thread to use a special option "Open Low Resolution" for VirtualBox settings. However, I didn't find it in macOS Monterey. For some reason Apple engineers took away this option from the Application --> Get Info window. Few other resources explained how this can be still set in advanced mode using by editing the file. I edited two Info.plist files which are File 1 sudo nano /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/Info.plist Set NSHighResolutionCapable to False Save the changes with keys control-O (^O) to WriteOutExit the editor window with keys control-X (^X) to Exit File 2 This file…
Read More

Red arrow shortcut glyph on icon in Windows

Blogs, Snippets
After using the hardlink (instead of symbolic link in Link Shell Extension) I noticed this Red arrow shortcut glyph right on the source file from which I created the hardlink to other location. Strangely, Windows Explorer didn't show the hardlink indication however XYplorer showed this clearly. You may mistaken that red arrow is a shortcut but it's actually the source file. Red arrow glyph appearing on XYplorer but not in Window explorer for hardlinked source.
Read More

TestStand Execution Aborts Unexpectedly

Blogs, LabVIEW Blog
TestStand persisted data (like a watch window data) could be a reason behind such aborts or stopping of sequence unexpectedly. In my case, I tried to check function AbortAll() in the watch window and ran into an infinite loop of aborts whenever I try to pause the sequence. To add more trouble, it didn't allow me to delete it as Watch View becomes inaccessible (see greyed out below) after sequence aborts. Watch Window in TestStand is executing unexpected functions of TS-Engine To overcome this issue, the Watch expressions are persisted in the TS common app data can be edited in a simple text editor. Open TeststandPersistedOptions.opt found in below path in a notepad and remove the section as highlighted in following screenshot. C:\ProgramData\National Instruments\TestStand 2021 (32-bit)\Cfg\TeststandPersistedOptions.opt Delete the section which…
Read More

Reduce Path Lengths using System Links

Blogs
Sometimes when you're working with many source files, easily the file paths can go deeper in length and causes you trouble in platforms which has path length limitations. For example, LabVIEW has only a path length of 260 characters, then it starts searching for the same file even if exists in the same location beyond the 260 char path. In such cases, it would be helpful if you can reduce the length of the path but can still maintain a single copy of source files but don't like to move around copies of source files to root directories. Solution My favorite solution for this is to use symlinks or symbolic links. The way symlinks work is pretty much like a shortcut but only that it makes some hard links to…
Read More

Integrate LabVIEW with Python to access SaaS Services

Blogs, LabVIEW Blog
The world is bombarding with SaaS services all over and it's time to connect LabVIEW to the SaaS world. Most of the SaaS service provides Python API and integrating Python API to LabVIEW is gradually becoming a norm. Recently I spoke on GLA Summit 2021 about how we can integrate the LabVIEW with SaaS services with a producer-consumer loop in the python layer. Demonstration Video This video explains a top-level view of how this really works for a simple email SaaS from mailersend. https://www.youtube.com/watch?v=YQeJaod8Ti8 Presentation Slides Here are the slides where I explained one of the Python to LabVIEW integration techniques that I adopted for integrating the SaaS services to LabVIEW. GLA Summit 2021: Python Integration & Door to SaaS worldDownload
Read More

WP: Plugin download or update error

Snippets
There are many solutions around the web for this but for me, a temporary solution worked in a way when I made all of the root files read+write from /opt/ as below. Since I'm working on a separate copy of WP in my local drive, its not too risky to do this. $sudo chmod -R a+r+w opt/ And then removing the temporary directory (commenting out) mentioned in the wp-config.php file //define('WP_TEMP_DIR', '/opt/bitnami/apps/wordpress/tmp');//define('WP_TEMP_DIR', ABSPATH . 'wp-content/tmp/');
Read More

Arity & Currying

Blogs, Snippets
This is a series of blogs where I collect some interesting programming concepts, new things I learn Arity represents the number of arguments we pass to a function (or module). Say you may pass N args to a function. Currying is the process of reducing the number of arguments you pass to 1 but increase the number of functions to N. For Eg. To add three variables a, b and c you may write func like below function add (a,b,c){ return a+b+c; } add (45, 46, 47); Currying the same above function is then like below function add (a){ return function add (b){ return function add (c){ return a+b+c; }; }; } add (45) (46) (47); Notice how each function returns another function until the last function does the final…
Read More

Imperative vs Declarative programming paradigm

Blogs, LabVIEW Blog, New Learnings
This is a series of blogs where I collect some interesting programming concepts,┬ánew things I learn As LabVIEWers we're familiar with few programming paradigms like object-oriented (OOP). Have you heard of functional programming?Imperative Programming changes the state of the program. OOP is an imperative programmingDeclarative Programming: doesn't change the state of the program. Functional is a declarative programming Wikipedia has more details on the programming paradigm 2 main principles of Functional Programming Don't mutate. Don't change the state of the program, whatever data comes into the function make a new copy of the function and return the new data without modifying the original data. Keep the function purely independent ie., even if you want to play with the global variables, then pass that global variable as arguments to that function…
Read More

Get paid for your source code contribution.

Blogs, Random Thoughts
This blog is from my random thoughts collection.Just imagine what would happen if you are getting paid for your source code contribution. Na na na..! Not for any rubbish feature you add, but for the feature which is getting viral and used by most people of the main repo. For this to happen the main source code in the should be generating the revenue wherever it's used. And that generated revenue should be split to the key feature which is making the people to buy that repo. A mechanism to identify which feature is most used, most used feature is the selling-point. Based on feature usage, money can be split-up and paid to the right contributed persons.So, are you ready to fork a repo, and add some feature to start…
Read More