Monday, March 16, 2026

tumblerd prevents disk from being ejected on Linux

When trying to eject a USB external disk, a message along the lines of "process tumblerd is currently using the disk, eject anyway?"


Since I had a very large number of images on that drive, and I had just saved an mp4 file onto the drive, tumblerd was probably creating thumbnails for all of the multimedia files. So, did 

killall -HUP tumblerd

and then the disk could be ejected.

OpenSpace session recording "save frames" crash

On my Lenovo ThinkCentre M93 machine with an NVidia GTX1050 graphics card, OpenSpace session recording playback with "save frames" was crashing after a few hundred frames being saved. Each frame was taking around 1000 to 1500 ms for 4096x4096 frames.

According to Claude.ai, the crashes might be due to CEF "being starved" between updates - and I submitted this fix as an issue on the OpenSpace repo.

Claude suggested workaround was in SGCT.

// sgct/src/image.cpp

png_set_compression_level(png, -1);  // changed to:

png_set_compression_level(png, 1);

As the comment just above that line says, -1 sets the compression level to default, which seems to be 6. Setting this to 1 made the frame export only 300 ms per frame (3x faster) and also fixed the crashes - so CEF was not "being starved" of updates.

The increase in file size was not much, 4 MB increased to 5.1 MB for a typical frame.

Another change I made before exporting again, was to close all other windows and apps like the Edge Browser, which I had used earlier for triggering the exports - now OpenSpace has some checkboxes in the export settings which allows us to hide the UI while exporting, so we don't need to trigger the export via a web browser.

Edit: No, the problem is not solved. No crash when saving frames for this recording, ts_003_moon_to_Earth.osrectxt

but crashes after a few hundred frames when saving frames for this recording, ts_002_india_rotate_zoom.osrectxt

So my current workaround was to split the recording into multiple smaller recordings.

Edit - another workaround to get around the crashes, which seem to be caused by CEF, seems to be to disable the module CEFui inside OpenSpace > Settings - issue thread is at https://github.com/OpenSpace/OpenSpace/issues/3954 

Thursday, March 12, 2026

uninstalling ollama

https://github.com/ollama/ollama/issues/986

ran all the lines suggested there, got some 15 GB freed.

Copy-pasting from the above,

Here's a general guideline on how to uninstall it:

Delete the Ollama binary:
Use the rm command to remove the Ollama binary. For example:

sudo rm /usr/local/bin/ollama

If the script created a systemd service, disable and remove it:
If the script created a systemd service for Ollama, you should disable and remove it using the following commands:

sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
sudo systemctl daemon-reload

Remove any created user and group (if applicable):
The script might have created a user and group named "ollama." You can remove them using the following commands:

sudo userdel ollama
sudo groupdel ollama

-----------------------

More lines from other people, esp if location of ollama and downloaded models are different - 

sudo rm -v /usr/local/bin/ollama
sudo rm -rv /usr/local/lib/ollama

sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm -v /etc/systemd/system/ollama.service
sudo systemctl daemon-reload

sudo userdel ollama
sudo groupdel ollama

sudo rm -rv /usr/share/ollama
# for downloaded models

rm -rv ~/.ollama

sudo rm -rv /usr/lib/ollama/
sudo rm -rv /usr/local/lib/ollama


Tuesday, March 10, 2026

domain transfers - godaddy to nettigritty and one account to another

We had a few domains which needed to be transferred. A couple of domains needed to be transferred from one account to another on nettigritty, and a domain needed to be transferred from godaddy to nettigritty.

Thursday, March 05, 2026

downloading from a server via http (no SSL) with auth

Downloading some planetarium files from a server in Sweden, which had password protected directories but no SSL (no https) - 
  1. Directly downloading via the browser - slow, prompts us to "Keep" or delete the file every time due to being downloaded unsecurely

  2. Using aria2

     aria2c -x16 -s16 --http-user=USERNAME --http-passwd=PASSWORD url

    Need ProtonVPN, since without it, http downloads are severely throttled to less than 100 kbps.

  3. Better option, running 

    aria2c -x16 -s16 --http-user=USERNAME --http-passwd=PASSWORD -i urls.txt

    on one of our AWS servers - all the URLs get downloaded in a jiffy, then we can use Filezilla and download to our local machine over sftp without throttling issues.

Wednesday, March 04, 2026

change of email id in CMS

One of the users in our CMS (google apps script with php/pgsql authentication) changed their email id in the profile, but was then unable to find any of the assets they had been working on.

Now changed the 'username' field in the postgresql database for this user from
old@gmail to new@new.email
(the email id field had already been changed by the user.)

That seems to have solved the issue. This is a duplicate of an earlier post, https://hnsws.blogspot.com/2024/06/unable-to-see-old-assets-after-email.html

Monday, March 02, 2026

OpenSpace - hover over a planet and allow it to rotate under you - OpenSpace seminar

As noted in an earlier post (which I had forgotten), the relevant option is in Settings > Navigation Handler > "Follow Anchor Node Rotation" 

When I asked Gemini via aistudio.google.com, it found a transcript from an OpenSpace seminar, which is a useful link - https://www.ppadomes.org/events/online-seminars/ppsarchive/2025-archive/2025-01-31-chat

Friday, February 27, 2026

github 14 day traffic stats

Since github has a page which shows 14-day stats, like https://github.com/hn-88/OpenSpace-AppImage/graphs/traffic but which is behind the login of the user, I asked Claude to create a stats page for the traffic to all my public repos. The prompt is here, 
and the github traffic stats page is here

The "clones" number is so high for the https://github.com/hn-88/OpenSpace-AppImage/ repo because of the multiple daily build workflows.

Tuesday, February 24, 2026

Enable MFA for Amazon AWS console

PB sent an email asking us to set up MFA for the AWS console logins. I replied that those users don't seem to have the permissions to set up MFA. So, probably set it up using his master login, in IAM, for those users - Google Authenticator. Unfortunately, the name in Google Authenticator gets truncated in portrait mode, so Amazon Web Services is seen, but the account identifying part which comes after is visible only in landscape mode.

Friday, February 20, 2026

adjusting sound volume on Mac

Since I don't have an Apple keyboard, adjusting the volume on the Mac mini was not very straightforward. An LLM's advice seemed to be a bit sarcastic when taken in the context of how easy it should be versus the method suggested - 

Adjusting the volume using the menu bar is a simple and straightforward method. Here are the steps to follow:

  1. Click on the Apple logo in the top-left corner of your screen.
  2. Select "System Preferences" from the drop-down menu.
  3. In the System Preferences window, click on "Sound."
  4. Go to the "Output" tab.
  5. Drag the volume slider to adjust the volume level.
On my machine, it was "System Settings" and not Preferences. And, there seemed to be a slightly faster way, which is clicking on the "Control Centre" in the menu bar - screenshot below - the "edit controls" button allows us to drag the icon into the menu bar, too.






Wednesday, February 18, 2026

SSL certificates for an internal web server as backend for app

There was a query about installing SSL certificates for an internal web server, which was to be used as backend for app. Copy-pasting my reply.

Since the app needed trusted certificates, just using a self-signed certificate would be unwieldy, probably needing the installation of our own cert chain on each device or something like that. 

Also, since free SSL certificates from https://letsencrypt.org/ need updating every 60/90 days, buying a certificate may be an option with fewer hassles for this internal server with no external ip address.

has low-cost options. Most probably the lowest cost one will work, can ask nettigritty support if you have doubts.

There are lots of step-by-step tutorials on how to install, like


A week later, the reply was,

it is just a java application running with java.
NO Apache. nginix is found. so tried installing with let's encrypt website using ngnix
getting thie error... 
 Detail: DNS problem: NXDOMAIN looking up A for theinternaldomain.net - check that a DNS record exists for this domain; DNS problem: SERVFAIL looking up AAAA for theinternaldomain.net - the domain's nameservers may be malfunctioning

Hint: The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet.

My reply was,

You will probably need to buy a certificate and install it, as mentioned in the first email in this thread.

Since theinternaldomain.net is not a publicly available DNS record, certbot cannot resolve it.

If the server is a java application running on some port, say 5000, you will need to run ngnix or apache as a reverse proxy, and install the certificate for apache/ngnix.

The reverse-proxy config for apache is mentioned here, 
(but of course, don't use certbot, purchase and install a cert instead as mentioned in the first email in this thread.)

Monday, February 16, 2026

using Blender to mask bright scenes

Using the same technique as in this previous post, but running on Blender 5 on Mac Mini, 3840x2160 video for Unseen Earth was being rendered at around 15 fps using the ProRES LT codec. Apparently Blender still doesn't have GPU accelerated output codec support, and this is one of the fastest codecs as suggested by ChatGPT. The ProRES LT can then be re-encoded as HEVC using the py-ffmpeg-warp presets

Some more tweaks used were:
  • Multiple masks one atop another to darken extremely bright areas,
  • Using Shift-D to duplicate and then K to cut the mask
  • Using an adjustment layer to increase contrast for the base layer. 
Edit: April 2026 - I now see that Blender 5 has "Curves" as one of the Adjustment layer modifiers - so, we can easily clamp bright regions using a "Curves" filter. And it looks like this has been there in older Blender versions as well.

close all Finder windows on Mac

It looks like Option+Cmd+w is the keyboard shortcut to close all windows of an app. Also, Finder has this method of Option+click on the File menu, which then shows a "Close all" menu item. 

A bit clunky in my opinion. And apparently many people moving from Linux/Windows to Mac have this problem, due to selecting a large number of files and hitting "Get Info..." like I did - MacOS then proceeds to open that many info boxes instead of showing a single window with cumulative info as on Linux/Windows.

Tuesday, February 10, 2026

Moodle custom reports not being emailed

One of our Moodle instances had this issue being reported, that some newly created custom reports were not being emailed as scheduled. 

The issue was that notifications - including email notifications - were disabled for "Custom report builder schedules" at https://ourserver.org/admin/message.php

After enabling email notifications now for this, "Custom report builder schedules" - the issue was reportedly resolved.

Friday, February 06, 2026

DNS resolving glitch with lovable

One of our colleagues wanted a domain verified by "lovable the AI agent" - https://lovable.dev/

After setting up the verification txt record and the provided A record, he still got an error 1000 when trying to browse the website on the newly added subdomain - DNS points to prohibited IP.

Lovable suggested removing the proxy toggle on cloudflare (but that was already set to DNS-only).

So, I suggested that he maybe needs to click on some "verify domain ownership" button somewhere in "lovable" control panel if any ... 

He replied that he had initially used bigrock setup, now he "removed the domain in project settings of loveable and added again, it is now working."

Tuesday, February 03, 2026

Google Group Admin Settings

 PB noted that he had changed one of our public google group's settings - 

Have made the following changes in the Google Group Admin Settings
Admin Console → Apps → Google Workspace → Groups for Business → Sharing settings



Changed the admin settings from "Private" to "Public on the internet"


This allows to anyone on the web to join the group if the owner of the group has allowed 



Earlier with sharing options was "Private" only the Organisation Members could see the group like:




With this change it is up to the owner of the group to choose one of the following:




This change now allows the gmail users to join the group.

Later, he confirmed that the permission to post is still restricted, only the owner can post:



 


Monday, February 02, 2026

google workspace storage limits

At some point of time, Google Workspace has added a feature to admin.google.com where we can set individual users' storage limits on or off, or change the value on an organizational unit basis. Our current Google workspace now has this feature. One possible catch is that the on/off setting is inherited from the base organizational unit. And it also seems to allow certain users to use 146% of their quota!

Thursday, January 29, 2026

pdfs - make smaller - split or join

There was a requirement to 
1. Make some pdfs smaller than 200 kB to enable uploading on a govt. website
2. Split some pages of the pdf into separate documents.

I used pdfsam - https://pdfsam.org/download-pdfsam-basic/ - to do the separation and merging, 
and the online tool
to compress the pdf size.

Monday, January 26, 2026

troubleshooting dot net server crash on AWS

First, checked if the AWS dashboard has any troubleshooting info for me. But "This user does not have permissions to view AWS Health events" - so I wouldn't get much help from it. Used my earlier post on investigating another Linux server crash as well as ChatGPT for going step by step.

ChatGPT suggested these,
dmesg -T | grep -i oom
journalctl -k | grep -i oom
which had no results. No out-of-memory events seen with those commands.

du -sh /var/log showed 4 GB of journal
journalctl --disk-usage
also showed nearly 4 GB of current and archived logs.

But the system had enough hard disk space left, 
df -h
showed around 30% remaining for the OS disk. 

Checking authentication log with
tail /var/log/auth.log -n4000 | more
found an entry
2026-01-25T14:38:58.186744+05:30 ip-10-0-0-73 systemd-logind[600]: New seat seat0.

But ChatGPT said that's normal, this is apparently done for each login.

Then, copy-pasting the lines just before the crash from syslog, using T13 since the crash was around 13:30

sudo cat  syslog | grep T13 > /home/theadminaccount/syslogsnippet.txt

ChatGPT immediately found the issue. 

ourtestapi.service: Scheduled restart job, restart counter is at 101203
and the reason the service was failing was
The application '/home/thepath/www/ourapi/ourtest.dll' does not exist.

Stopped the service, disabled it, and deleted it from /etc/systemd/system
sudo systemctl stop ourtestapi
sudo systemctl disable ourtestapi
sudo rm /etc/systemd/system/ourtestapi.service

Additionally, as ChatGPT suggested, set up some limits for journalctl's logging by editing
/etc/systemd/journald.conf
and uncommenting these lines and adding values for them - under
[Journal]

SystemMaxUse=900M
SystemKeepFree=1G

RuntimeMaxUse=100M

MaxRetentionSec=30day

and restarted,
sudo systemctl restart systemd-journald

Also vacuumed (removed archived logs) with
sudo journalctl --vacuum-size=3000M
(0 bytes removed - archives were smaller than that)
sudo journalctl --vacuum-size=300M
(500M of archives were removed.)

see who has signed an app on MacOS

Via https://www.youtube.com/watch?v=1UDUtO7LY0k

 Apple Menu > About this Mac > More info button > (Search for System Report on left-hand panel)

In System Report, click the System Report button, then Software > Applications on left-hand panel.

Scroll down to the app in question.

Our self-signed OpenSpace builds show up as "Unknown". Sheepit Mac client also shows "Unknown", so there is a chance that I can edit the manifest of the app to run a script on double-click in order to allow the Mac build to run with a double-click on the app file.

Saturday, January 24, 2026

to record a stereo track in Reaper

The default tracks are mono in Reaper. So, to record from a stereo source, as the LLM-powered search says, "create a new track and set it to record from a stereo input by selecting "Input Stereo/Input 1 + Input 2" in the track settings. Make sure to arm the track for recording and then start your audio source to capture the stereo sound."

how to install steamvr

 How to Download SteamVR (Step-by-Step Guide) - https://www.digitalcitizen.life/how-to-download-steam-vr/

SteamVR how to Record/Stream VR in full screen - https://www.youtube.com/watch?v=mk07OTBZZmc

would be useful to see the vr screen on the desktop.

SteamVR = hamburger menu > display VR screen

(Edit - these were for trying out various VR options with OpenSpace. Was not very successful.)

Tuesday, January 20, 2026

Azure Storage minimum TLS notification

We got an email "Action required: Update the minimum TLS version of your Azure Storage account to 1.2 or later by 3 February 2026".

Updated the affected storage accounts to TLS 1.2 as required below - they were just backups/files from 2018 - but then, got the message that the old backups can be deleted.

So I have deleted the three storage accounts and their contents now - last modified in 2018 (wordpress files), 2020 and 2021 (server logs). The wordpress files are being served from github pages instead now.

Saturday, January 17, 2026

allowing a non-root user to restart a service on Ubuntu Linux server

As described by ChatGPT, the preferred method was to create sudoers rules for the relevant service(s).

sudo visudo -f /etc/sudoers.d/ourapi

and inside that file, write

deployuser ALL=NOPASSWD: /usr/bin/systemctl restart ourapi.service, \
                         /usr/bin/systemctl start ourapi.service, \
                         /usr/bin/systemctl stop ourapi.service, \
                         /usr/bin/systemctl status ourapi.service

where ourapi.service is the service and deployuser is the non-root user.

Here, we double-checked the location of systemctl using 
which systemctl

After doing this, on logging on as deployuser, we can do things like

sudo systemctl start ourapi.service

where it will prompt for deployuser's password and then carry out the command.

But a caveat - we need to type exactly the same command as mentioned in the custom sudoers file - even equivalent commands like

sudo systemctl start ourapi

will not work unless we add that to the sudoers file also.

Friday, January 16, 2026

Azure supported VM sizes

Some Azure VM sizes become unavailable in some regions - case in point, after upgrading to 16 GB RAM for a day, I could not go back to the B-series 8 GB RAM VM in that Central India location (which had shown quota limited before I stopped it). Went back to a slightly more expensive D2asv4.

Edit - I had noted on 7th Jan that the size was Standard B2as v2 - vCPUs = 2, RAM = 8 GiB - and this was "insufficient quota" in Central India at the moment. It is Rs. 2998 per month. 

We then temporarily changed to D4as_v4 for a few hours, which is 7.5k per month. Stop the VM, change the size and then start the VM. And after the work was done, B2as v2 was not available, so we went to D2asv4 which is Rs. 3,778 per month.

some quirks of my KVM setup and Apple keyboard layout

Currently using this product, 

HDMI KVM Switch 4 Port - 

there were some quirks which I had to work around. 
  1. The Dell desktop running Linux Mint needed the USB keyboard to be mapped to it while booting, or else it would boot into Windows instead, even though the default boot sequence was set to Linux. Probably because the "fail-safe" boot option is different, when it beeps to indicate "No keyboard detected."
  2. The KVM switch defaults to number 4 on power up, not number 1. So, the Dell desktop needs to be connected to 4 and not 1, for booting up without having to hit the KVM switch.
  3. The Mac mini can boot OK without having the KVM mapped to it, but if we leave it on and not logged in, the login screen blanks and we can't get the screen to come back to life with the keyboard or mouse - we need to short-press the power button.
  4. The Mac mini default keyboard mapping was showing the Indian rupee symbol instead of the backtick symbol ` for the key to the left of 1 (perhaps after the upgrade to MacOS Tahoe). Since I need ` for markdown on github etc, changed the keyboard layout to "US" from "ABC India" which was the default. For this, following this,
    chose Apple menu > System Settings, then searched for Keyboard in the sidebar. There, Input sources > Edit button, the small + button at the bottom left to add Input sources. Quite easy to miss.

Friday, January 09, 2026

OpenSpace stopped working with undefined symbol: sqlite3_column_table_name

After some packages were updated / upgraded / autoremoved, openspace, which used to work fine, stopped working (on Linux Mint, using the Ubuntu 24.04 deb) with the error message

./OpenSpace: symbol lookup error: /lib/x86_64-linux-gnu/libgdal.so.34: undefined symbol: sqlite3_column_table_name

As suggested by ChatGPT, a reinstall of gdal and sqlite fixed it

sudo apt update
sudo apt install --reinstall libsqlite3-0 libsqlite3-dev libgdal34

https://github.com/hn-88/OpenSpace-AppImage/issues/86 has the full answer given by ChatGPT

Thursday, December 25, 2025

can't update a git submodule from github web interface

Short answer - not currently possible to do it from the web interface. Discussion about this is at https://github.com/orgs/community/discussions/15079#discussioncomment-9292900

The same terminal commands are needed as referenced in the earlier post, https://hnsws.blogspot.com/2025/04/change-submodule-for-git-repository.html

In my case, since I'm using github actions to build OpenSpace (which I don't have commit access to), what I can do is to just 

cd whichever/submodule/parentdirectory
rm -Rf submoduledirectory
git clone https://fresh.git.subdirectory.url submoduledirectory
cd submoduledirectory
git checkout whatever-branch

before the configure and build steps. Or, of course, if just updating the branch is needed, only the git checkout line would be needed.

Wednesday, December 24, 2025

test a Mac app to see if it has everything it needs packaged

One way would be to remove all homebrew packages, which would not be recommended - apparently this can be done like
brew remove --force $(brew list --formula) --ignore-dependencies
(not tested)

But an easier way is to just rename the homebrew directory, for eg on Apple Silicon Macs,
sudo mv /opt/homebrew /opt/homebrew-backup

(and after finishing the tests, rename it back.)

Sunday, December 21, 2025

adding a 'slow-send' functionality for Google Apps mailing list

I've updated the github repo Google-Apps-Script-mailing-list with a script file which does 'slow-send' for large mailing lists which can be sent over several days. 


Features - 
  • time-based trigger, programmatically created and removed
  • sends emails to each recipient individually, ramping up from sending
    24 emails per day (once an hour)
    to 96 (once every 15 minutes)
    to 144 (once every 10 minutes)
    to 288 emails per day (once every 5 minutes). This could be increased further, too.
  • uses GmailApp instead of MailApp, so we can have features like name (of sender), alias, reply-to, etc.

Saturday, December 20, 2025

uninstalling coderabbit

I had signed up for the free trial of coderabbit, but did not find the free plan's functionality of "summarizing pull requests" to be of much use. In order to "uninstall" it, followed the method at 

To revote authorization, on any github page after logging in, profile picture on top right > Settings > Integrations (on lhs) > Applications > Authorized GitHub Apps tab > click Revoke button for coderabbit.

Thursday, December 18, 2025

how to do a homebrew install - avidemux - example

The workflow of installing an app with homebrew, with avidemux as an example, from https://www.avidemux.org/smf/index.php?topic=9960.msg53651#msg53651

After installation an App will be created in your Applications folder and there is finally a audio output device available (you have to select it in the preferences of the App: Edit -> Preferences -> Audio -> AudioDevice: "CoreAudio").

(1) Install XCode and the Command Line Tools of XCode.

(2) Install Homebrew using the following Terminal command:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

(Perhaps these steps 1 & 2 are now superceded by the instructions at brew.sh)


(3) Install the latest version of Avidemux (nightly version, recommended) using the following Terminal command:

brew install --HEAD avidemux


(4) When the installation has finished, you are asked to make an alias of the app in your Application folder using this command:

brew linkapps

--------------------------------
If you want to update Avidemux to the latest nightly version:

brew rm -f avidemux
brew install --HEAD avidemux


If you want to install the "stable" version of Avidemux (Milestone):

brew install avidemux


set up file sharing on Mac

In order to move files from the internal drive of the Mac to an external NTFS drive, though Mounty does work, it has the issue that after we finish copying, unmouting the drive seems to make Finder unresponsive. Copying over the network to the Linux machine seems to be more hassle-free.

This has the how-to, and the official documentation is at

Apple menu > System Settings > (searched for Sharing) and enable "File Sharing" and in my case, allowed full disk access to my user.

Setting up smb share as it would help Windows also.

For setting up file sharing on Linux Mint - https://www.siberoloji.com/how-to-set-up-file-sharing-on-linux-mint/ (this seems to be an outdated post? It mentions 
sudo apt install samba samba-common system-config-samba
and we get
E: Unable to locate package system-config-samba 

So, not doing this right now.)

file transfer - Android to and from Mac

Macdroid for USB transfers, but only free for Android to Mac - 

JustBeamIt - works over wifi? but very slow, and link times out after 10 minutes. <1 Mbps. Suitable only for small files.

Filesharing - maybe if we connect both machines with wired connections (Android phone connected via USB to Linux box, and that to Mac with wired LAN), this might be fastest.

Wednesday, December 17, 2025

fix mp4 on mac

Solution according to Copilot / ChatGPT for unplayable mp4 video file when ffmpeg is aborted with Ctrl+C on Mac - (for a file encoded with hvc1 codec)

ffmpeg -i gputestfixed.mp4 
  -map 0 \
  -c copy \
  -movflags +faststart \
  -tag:v hvc1 \
  qtplayable.mp4

hardware accelerated encoding on mac


-c:v h264_videotoolbox \ # use Apple Silicon hardware acceleration

Just like
ffmpeg -h encoder=hevc_nvenc

(Trying on Linux running on a PC, 
Codec 'h264_videotoolbox' is not recognized by FFmpeg - will work only on Mac.)

libx265 itself went at 20+fps.

hevc_videotoolbox with warping went at 33 fps.

using py-ffmpeg-warp on Mac

Trying to run py-ffmpeg-warp on the Mac mini, ran into module not found errors.

ModuleNotFoundError: No module named '_tkinter' on mac
had the simple solution as suggested in stackoverflow,

brew install python-tk 

But other modules like scipy, pillow, etc could not be installed this way. ChatGPT suggested a virtual environment to avoid breakage.

1. Create a venv (once per project)
python3 -m venv ~/venvs/gui_env
(this path is just an example.)

2. Activate it
source ~/venvs/gui_env/bin/activate
prompt changes to something like:
(gui_env) %

3. Install the required packages
python -m pip install --upgrade pip
python -m pip install numpy scipy pillow

So, when I want to run py-ffmpeg-warp, I could run the following manually - 

source ~/venvs/gui_env/bin/activate
cd /home/path/to/py/script
python3 py-ffmpeg-warp.py

Or maybe even put those lines in a script as mentioned at https://linuxconfig.org/how-to-use-a-bash-script-to-run-your-python-scripts


ntfs write on MacOS

Current Apple Silicon Macs only have read-only NTFS access out of the box. In order to write to NTFS, we need to jump through some hoops. 


free option seems to be via terminal

brew install --cask macfuse

But
brew install ntfs-3g
ntfs-3g: Linux is required for this software.

Then, ChatGPT suggested

which has installation instructions lower down in that page. FUSE is a bit slow compared to the natively supported exFAT etc, but usually sufficient for our use since our low-cost NTFS external hard disks are also slow.  

Monday, December 15, 2025

sheepit renderfarm statistics for the M4 Mac Mini

Compared to the earlier stats, the CPU speed is nearly double, but lack of NVidia GPU prevents many projects from rendering. Copy-pasting from the session information page (My account > Connected machine > (clicking on the machine) - 

OSmacm1

CPUApple M4 x 10
RAM allowed11.0 GB
RAM available16.8 GB
Max render time per frame
Power CPU208 %
Schedulerdefault

Saturday, December 13, 2025

take a screenshot on Mac

 https://support.apple.com/en-us/102646

Shift + CMD + 3 = full screen capture

Shift + CMD + 4 = capture selected area

Shift + CMD + 4 then press and release spacebar = cursor turns to camera, click on window you want to capture.

Shift + CMD + 5 - capture using screenshot app. (This can also do screen recordings.)

I have put the screenshot app in the menu bar from Control Centre (which is accessed from the icon on top right corner.)

By default, screenshots save to the desktop with the name Screen Shot [date] at [time].

force quit on Mac


Click outside the problematic app - my test build of OpenSpace in this case - to change focus to another app, then click the Apple Menu > Force Quit ... which gives a choice, to choose the running app we should force quit.

Friday, December 12, 2025

after resetting password for a user, recovery info in Google Workspace

Note to self - even though "no contact information has been added" is seen in the first tab of the user in Google Workspace, the Security tab will have recovery information and 2FA information which also needs to be reset if required.

running OpenSpace on Apple Silicon and modern Intel Macs

As written in the documentation, OpenSpace uses OpenGL double precision floating point operations extensively, and Apple Silicon does not have hardware support for it. Checking if it will downgrade gracefully to software rendering, found that OpenSpace would just crash, with Claude.ai telling me that the crash report 

Crashed Thread:        0  CrBrowserMain  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:: CrBrowserMain Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib                   0x190856388 __pthread_kill + 8
1   libsystem_pthread.dylib                  0x19088f848 pthread_kill + 296
2   libsystem_c.dylib                        0x1907989e4 abort + 124
3   libGLProgrammability.dylib               0x1f0ea63e4 glpPrimitiveTypeGetScalarType + 136
4   libGLProgrammability.dylib               0x1f0e8af20 glpLLVMLoadVector + 120
5   libGLProgrammability.dylib               0x1f0e7c8f0 glpLLVMCGLValue + 1160
6   libGLProgrammability.dylib               0x1f0e771b0 glpLLVMCGAssign + 112
7   libGLProgrammability.dylib               0x1f0e7788c glpLLVMCGCommaExpr + 268
8   libGLProgrammability.dylib               0x1f0e7788c glpLLVMCGCommaExpr + 268
9   libGLProgrammability.dylib               0x1f0e771b0 glpLLVMCGAssign + 112
10  libGLProgrammability.dylib               0x1f0e7788c glpLLVMCGCommaExpr + 268
11  libGLProgrammability.dylib               0x1f0e7788c glpLLVMCGCommaExpr + 268
12  libGLProgrammability.dylib               0x1f0e771b0 glpLLVMCGAssign + 112
13  libGLProgrammability.dylib               0x1f0e7788c glpLLVMCGCommaExpr + 268
14  libGLProgrammability.dylib               0x1f0e7b5f8 glpLLVMCGBlock + 516
15  libGLProgrammability.dylib               0x1f0e722c8 glpLLVMCGNode + 632
16  libGLProgrammability.dylib               0x1f0e7b234 glpLLVMCGFunctionDefinition + 2888
17  libGLProgrammability.dylib               0x1f0e70f30 glpLLVMCGTopLevel + 1444
18  libGLProgrammability.dylib               0x1f0e985f8 glpLinkProgram + 10092
19  libGLProgrammability.dylib               0x1f0eb1ea0 ShLink + 208
20  GLEngine                                 0x1f104a3b8 gleLinkProgram + 1140
21  GLEngine                                 0x1f0fc6350 glLinkProgramARB_Exec + 180
22  OpenSpace                                0x1021f8aa4 glbinding::BasicCallHelper<void, unsigned int>::call(glbinding::Function<void, unsigned int> const*, unsigned int&&) + 44
23  OpenSpace                                0x1021f87d0 glbinding::Function<void, unsigned int>::call(unsigned int&) const + 184
24  OpenSpace                                0x1021f3a24 glbinding::Function<void, unsigned int>::operator()(unsigned int&) const + 32
25  OpenSpace                                0x1023470c8 gl::glLinkProgram(unsigned int) + 32
26  OpenSpace                                0x101e5dc2c ghoul::opengl::ProgramObject::linkProgramObject() + 44
27  OpenSpace                                0x101e5e668 ghoul::opengl::ProgramObject::Build(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::__fs::filesystem::path const&, std::__1::__fs::filesystem::path const&, ghoul::Dictionary const&) + 1456
28  OpenSpace                                0x100a5dbac openspace::RenderEngine::buildRenderProgram(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::__fs::filesystem::path const&, std::__1::__fs::filesystem::path const&, ghoul::Dictionary) + 316
29  OpenSpace                                0x1016ce084 openspace::globebrowsing::RenderableGlobe::recompileShaders() + 6156
30  OpenSpace                                0x1016cc82c openspace::globebrowsing::RenderableGlobe::initializeGL() + 208
31  OpenSpace                                0x100b47b88 openspace::SceneGraphNode::initializeGL() + 584
32  OpenSpace                                0x100ae4bb0 openspace::Scene::update(openspace::UpdateData const&) + 132
33  OpenSpace                                0x100a5a6d0 openspace::RenderEngine::updateScene() + 196
34  OpenSpace                                0x1007eb428 openspace::OpenSpaceEngine::loadAssets() + 972
35  OpenSpace                                0x1007ed234 openspace::OpenSpaceEngine::preSynchronization() + 156
36  OpenSpace                                0x1004303ac (anonymous namespace)::mainPreSyncFunc() + 80
37  OpenSpace                                0x100ce8b90 sgct::Engine::exec() + 288
38  OpenSpace                                0x10042d170 main + 14684
39  dyld                                     0x1904eeb98 start + 6076

indicates that 

The crash is happening in Apple's OpenGL shader compiler (libGLProgrammability.dylib) when OpenSpace tries to compile shaders for the globe rendering. Look at the stack:

Frame 26-29: OpenSpace is compiling shaders for RenderableGlobe
Frame 19-21: Apple's OpenGL implementation tries to link the shader program
Frame 3: The shader compiler encounters something it can't handle and aborts 

Now, this could possibly be due to some filesystem issues, restrictions due to running OpenSpace from command-line from a sub-folder of my home folder instead of Applications folder, but I got a similar crash when running OpenSpace inside UTM on Ubuntu 24.04 (using the daily build deb file yesterday) if I enable hardware acceleration. 

Unfortunately, mesa on MacOS doesn't seem to enable software rendering - 
brew install mesa

# Set environment variables to use Mesa's software renderer
export LIBGL_ALWAYS_SOFTWARE=1
export GALLIUM_DRIVER=llvmpipe

# Run OpenSpace
./OpenSpace.app/Contents/MacOS/OpenSpace 

But the same crash is observed. Claude says,
Unfortunately, Mesa on macOS is limited. The Homebrew Mesa package primarily provides: OSMesa (off-screen rendering) and some utilities

But it won't override Apple's OpenGL framework the way it does on Linux. macOS applications are hardcoded to use /System/Library/Frameworks/OpenGL.framework

Then, tried disabling hardware acceleration and running the same OpenSpace deb file on Ubuntu 24.04, and that works. Around 8 fps, and the frame-rate does not seem to improve much beyond 20 fps or so even if we use something like onlyEarth.profile or loading individual assets to the empty profile, etc. But this could be still useful for offline work, validating single-precision builds and so on.

And so now to single-precision builds - I'll try to build for Mac Apple Silicon and see what happens.

Also, maybe I can try building for Intel Macs with these patches - with XCode for MacOS26, many of the incompatibilities and unsupported implementations are now ironed out, so we need far fewer patches. And github now has MacOS26 public runners.

Edit: 11 Jan 2026 - Finally OpenSpace for MacOS - Apple silicon - is up and running. Lots of shader patching, especially a tricky one here - Mac build - crashes when shader is called · Issue #75 · hn-88/OpenSpace-AppImage

Thursday, December 11, 2025

Cloudflare timeout - how to use admin site without cloudflare

Copy-pasting from an email thread, about a connection timeout Cloudflare error seen by one of our Wordpress site admins - 

The screenshot shows that you were trying to open a WordfenceScan page. Such pages usually take a long time to load, and it is natural for Cloudflare to time out. 

In case those pages don't have any option to email you the results of the scan or such workarounds, you can disable cloudflare for yourself by directly accessing the site, without cloudflare proxying, by editing the hosts file on your computer.

On Windows, you would do this by going to the start menu, and start typing notepad.exe, right click on Notepad, choose Run as Administrator, and open the file
C:\Windows\System32\drivers\etc\hosts
(since it is just hosts and not hosts.txt, when using File->open to find it, you must choose the drop-down "All files *. *" option.)

In that file, you can add extra lines at the end,

1.2.3.4 ourserver.org

4.5.6.7 staging.ourserver.org


When you are through with your admin work and if you want to access through cloudflare again, you can comment out each of these lines by adding the # symbol as the first character on those lines. This is optional, you can continue to access without cloudflare also.

Why this solution is better than just disabling cloudflare - this can allow general users to have the snappiness of cloudflare proxying while only admins can access the unproxied direct URL.

(After making changes to the hosts file, you may need to close your browser, open it again, and perhaps re-login for the changes to take effect. Or perhaps restart your computer.)

Tuesday, December 09, 2025

Xcode update - "Xcode 1.5 not supported"

Copy-pasting an answer from one of the LLMs (I don't remember which one, maybe duck.ai)

The CMake error "Xcode 1.5 not supported" when building on macOS 15.5 indicates a version mismatch between your CMake installation and your Xcode installation.
Understanding the Issue:
  • Xcode 1.5 is a very old version of Apple's integrated development environment. It predates many modern macOS features and compiler toolchains.
  • macOS 15.5 is a relatively recent operating system. This means it likely requires a much newer version of Xcode and its associated command-line tools to function correctly.
  • CMake needs to be able to find and interact with a compatible Xcode installation: to generate build files and compile your project. If CMake detects an unsupported or outdated Xcode version, it will throw this error.
Resolving the Error:
  • Update Xcode:
    The most likely solution is to update your Xcode installation to a version compatible with macOS 15.5.
    • Open the Mac App Store and search for "Xcode."
    • Download and install the latest available version.
    • After installation, open Xcode to complete any initial setup and agree to the license agreements.
  • Install Xcode Command Line Tools:
    Even if you update Xcode, you might also need to explicitly install or update the Xcode Command Line Tools, as these contain the compilers and other utilities that CMake relies on.
    • Open Terminal and run the following command:
Code
        xcode-select --install
  • Follow the on-screen prompts to complete the installation.
  • Update CMake: While less likely to be the primary cause, ensuring you have a recent version of CMake is good practice.
    • If you installed CMake via Homebrew:
Code
        brew update        brew upgrade cmake
  • If you installed CMake manually, download the latest version from the official CMake website and follow the installation instructions.
  • Verify Xcode Selection: Ensure that your system is pointing to the correct Xcode installation.
    • In Terminal, run:
Code
        xcode-select -p
  • This should output the path to your current Xcode installation (e.g., /Applications/Xcode.app/Contents/Developer). If it's incorrect or points to an older version, you can set it using:
Code
        sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
(Adjust the path if your Xcode is installed elsewhere).
After performing these steps, try running CMake again to generate your build files. The error should be resolved.

Wednesday, December 03, 2025

steps to creating an iOS app via wpmobile.app

wpmobile.app creates an app from a wordpress site, and one of our institutions wanted support with uploading such an app to Google Play Store and Apple App Store.

For Apple App Store, the first step would be to enrol into Apple Developer Program

... looks like enrolling into the Apple Developer program is a long-drawn-out process. Currently it says, "You will be sent an email soon." (2 working days). 

How long does it take for Apple to process your Apple Developer Program enrollment? : r/iOSProgramming

didn't get it within 2 working days, I contacted support and asked them to expedite, then it came through.

From https://wpmobile.app/en/help/

needed account / pw of wpmobile dashboard 

then to create app specific password for the apple account which has the Apple developer account

https://support.apple.com/en-us/102654

Where to find my Team Name and Team ID

Log in to your account at https://developer.apple.com/account/
Go to Subscription details
The Team ID is the team identifier
The Team Name is displayed at the top right of the page (your first and last name if it’s an Individual account).



Next, the 2FA will come on the iOS device (iPad in my case) when trying to log in to the apple account via the wpmobile.app dashboard. After a few minutes, the dashboard shows App generated with success.... The build will be pushed to your Apple account in few minutes. Download the certificate file for notification and upload it on the WPMobile plugin > Notifications > Settings > iOS. (on the wordpress site).

It seems XCode (the platform used to compile Mac and iOS apps) will push the build to our App Store Connect account. ... the app is seen there....  need to go through the process of editing the description etc and related online paperwork, and then send for review. appstoreconnect.apple.com/apps

In order to install the app before reaching the app store, we need to invite that particular user using testflight - and we need to invite using the Apple id which is associated with that particular iOS device. 

Edit - In our case, the app review said that since this app was supposed to be used by the members of a particular organization, they would not approve public distribution. So, applied for unlisted distribution (where searching the app store will not find it, but we can link to the app from our website). And that was approved.

Initially submitted Dec 5
Rejected Dec 6
Applied for unlisted on Dec 8
Approved for unlisted distribution Dec 11
Again sent for review with this approval Dec 11
(respond to App Review directly in the App Review section in App Store Connect)
Review passed Dec 12
(available for distribution at apps.apple.com)



Sunday, November 30, 2025

tuning lossless ffmpeg command-line with Claude

The ffmpeg command

ffmpeg -y -r 30 -i in_%05d.jpg -i ../NormPeak-6dBENG.wav -c:v hevc_nvenc -preset lossless -global_quality 18 -pix_fmt nv12 -c:a aac -b:a 192k ~/Downloads/4kframes.mp4

gives the following warnings - 

[aist#1:0/pcm_s16le @ 0x59f7e96fbfc0] Guessed Channel Layout: stereo
....

[in#0/image2 @ 0x59f7e96f4e40] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)

[swscaler @ 0x59f7e97ae500] deprecated pixel format used, make sure you did set range correctly

    Last message repeated 3 times

[hevc_nvenc @ 0x59f7e9701880] The selected preset is deprecated. Use p1 to p7 + -tune or fast/medium/slow.

[hevc_nvenc @ 0x59f7e9701880] Using global_quality with nvenc is deprecated. Use qp instead. 

Claude's suggestion to fix - 

ffmpeg -y -r 30 -i in_%05d.jpg -thread_queue_size 512 -i ../NormPeak-6dBENG.wav -c:v hevc_nvenc -preset p7 -tune lossless -cq 0 -pix_fmt yuv420p -c:a aac -b:a 192k ~/Downloads/4kframes.mp4