SQLite backups fail with existing config and new

Summary
I have upgraded my containers to latest version of DB-Backup. All of the SQLite backups are now failing. Using the previous environment variables and the updated naming too.
I have checked all versions of 4 and they appear to all be impacted.
The sqlite database files are visible in the designated folders. Commands like copy can be performed on them.
If I use 3.1.2 the backups begin working again.
Steps to reproduce

Launch container with latest version, or of any version 4 using either existing environment variables and one sqlite database per instance.
Or run using new environment variable naming conventions including db01, db02 to enable multiple databases per container instance.
Run backup-now within a docker exec session into the container.
The follow error will be displayed when attempting to backup the sqlite database files

The sqlite database files are visible in the designated locations / folders. Commands like copy can be performed on them.
What is the expected correct behavior?
Backups are successful using both new and old environment variables.
Relevant logs and/or screenshots
Screenshot of error:

Screenshot showing files are visible in correct folders within the container:

Error capture as text:
2023-11-10.15:15:24 [INFO] ** [db-backup02] Starting Manual Backup for db-backup02
2023-11-10.15:15:26 [NOTICE] ** [02-/mnt/db02/tautulli.db__] Dumping sqlite3 database: '/mnt/db02/tautulli.db' and compressing with 'zstd'
2023-11-10.15:15:26 [ERROR] ** [02-/mnt/db02/tautulli.db__] DB Backup of 'sqlite3_tautulli_20231110-151526.sqlite3.zst' reported errors
cat: /tmp/backups/backup.sqlite3: No such file or directory
2023-11-10.15:15:26 [ERROR] ** [02-/mnt/db02/tautulli.db__] Skipping Checksum creation because backup did not complete successfully
2023-11-10.15:15:26 [ERROR] ** [02-/mnt/db02/tautulli.db__] Skipping moving DB Backup to final location because backup did not complete successfully
2023-11-10.15:15:26 [ERROR] ** [02-/mnt/db02/tautulli.db__] Moving of backup 'sqlite3_tautulli_20231110-151526.sqlite3.zst' reported errors
2023-11-10.15:15:26 [NOTICE] ** [02-/mnt/db02/tautulli.db__] Sending Backup Statistics to Zabbix
2023-11-10.15:15:26 [ERROR] ** [02-/mnt/db02/tautulli.db__] Error sending statistics, consider disabling with 'CONTAINER_ENABLE_MONITORING=FALSE'
2023-11-10.15:15:26 [NOTICE] ** [02-/mnt/db02/tautulli.db__] DB Backup for 'tautulli' time taken: Hours: 0 Minutes: 00 Seconds: 00
2023-11-10.15:15:26 [INFO] ** [02-/mnt/db02/tautulli.db__] Backup 02 routines finish time: 2023-11-10 15:15:26 GMT with exit code 0
2023-11-10.15:15:26 [NOTICE] ** [02-/mnt/db02/tautulli.db__] Backup 02 routines time taken: Hours: 0 Minutes: 00 Seconds: 00
2023-11-10.15:15:26 [INFO] ** [db-backup03] Starting Manual Backup for db-backup03
2023-11-10.15:15:28 [NOTICE] ** [03-/mnt/db03/data.db__] Dumping sqlite3 database: '/mnt/db03/data.db' and compressing with 'zstd'
2023-11-10.15:15:28 [ERROR] ** [03-/mnt/db03/data.db__] DB Backup of 'sqlite3_data_20231110-151528.sqlite3.zst' reported errors
cat: /tmp/backups/backup.sqlite3: No such file or directory
2023-11-10.15:15:29 [ERROR] ** [03-/mnt/db03/data.db__] Skipping Checksum creation because backup did not complete successfully
2023-11-10.15:15:29 [ERROR] ** [03-/mnt/db03/data.db__] Skipping moving DB Backup to final location because backup did not complete successfully
2023-11-10.15:15:29 [ERROR] ** [03-/mnt/db03/data.db__] Moving of backup 'sqlite3_data_20231110-151528.sqlite3.zst' reported errors
2023-11-10.15:15:29 [NOTICE] ** [03-/mnt/db03/data.db__] Sending Backup Statistics to Zabbix
2023-11-10.15:15:29 [ERROR] ** [03-/mnt/db03/data.db__] Error sending statistics, consider disabling with 'CONTAINER_ENABLE_MONITORING=FALSE'
2023-11-10.15:15:29 [NOTICE] ** [03-/mnt/db03/data.db__] DB Backup for 'data' time taken: Hours: 0 Minutes: 00 Seconds: 01
2023-11-10.15:15:29 [INFO] ** [03-/mnt/db03/data.db__] Backup 03 routines finish time: 2023-11-10 15:15:29 GMT with exit code 0
2023-11-10.15:15:29 [NOTICE] ** [03-/mnt/db03/data.db__] Backup 03 routines time taken: Hours: 0 Minutes: 00 Seconds: 01

Environment

Image version / tag:  latest / 4.0.4 / 4.0.3 / 4.0.2 / 4.0.1 / 4.0.0
Host OS:  Raspberry Pi OS / Debian Bookworm

docker-compose.yml file:
services:
  db-backup:
    container_name: db-backup-RPi7
    image: tiredofit/db-backup:latest
    volumes:
      - db01-backup-postgres-backup:/backup/db01
      - db-backup-rpi7-logs:/logs
#      - db01-backup-xxxx-source:/mnt/xxxx
      - db02-backup-tautulli-backup:/backup/db02
      - db02-backup-tautulli-source:/mnt/db02
      - db03-backup-upsnap-backup:/backup/db03
      - db03-backup-upsnap-source:/mnt/db03
    environment:
      #
      - PUID=$USER_DBBACKUP
      - PGID=$GROUP_DBBACKUP
      - TZ=Europe/London
      - stdin_open=true # docker run -i
      - tty=true # docker run -t
      #
      - MODE=$MODE
      - LOG_PATH=$LOG_PATH
      - DEBUG_MODE=$DEBUG_MODE
      - BACKUP_JOB_CONCURRENCY=$BACKUP_JOB_CONCURRENCY
#      - MAIL_FROM=$MAIL_FROM
#     - MAIL_TO=$MAIL_TO
#     - SMTP_HOST=$SMTP_HOST
#     - SMTP_PORT=$SMTP_PORT
      #
      # DB01 - Postgres
      #
      - DB01_TYPE=$DB01_TYPE
      - DB01_HOST=$DB01_HOST
      - DB01_NAME=$DB01_NAME
      - DB01_USER=$DB01_USER
      - DB01_PASS=$DB01_PASS
      - DB01_BACKUP_INTERVAL=$DB01_BACKUP_INTERVAL
      - DB01_BACKUP_BEGIN=$DB01_BACKUP_BEGIN
      - DB01_CLEANUP_TIME=$DB01_CLEANUP_TIME
      - DB01_CHECKSUM=$DB01_CHECKSUM
      - DB01_COMPRESSION=$DB01_COMPRESSION
      - DB01_COMPRESSION_LEVEL=$DB01_COMPRESSION_LEVEL
      - DB01_BACKUP_LOCATION=$DB01_BACKUP_LOCATION
      - DB01_LOG_LEVEL=DEBUG
      - DB01_PARALLEL_COMPRESSION_THREADS=$DB01_PARALLEL_COMPRESSION_THREADS
      - DB01_ENCRYPT=$DB01_ENCRYPT
      #
      # DB02 - SQLite
      #
      - DB02_TYPE=$DB02_TYPE
      - DB02_HOST=$DB02_HOST
      - DB02_BACKUP_INTERVAL=$DB02_BACKUP_INTERVAL
      - DB02_BACKUP_BEGIN=$DB02_BACKUP_BEGIN
      - DB02_CLEANUP_TIME=$DB02_CLEANUP_TIME
      - DB02_CHECKSUM=$DB02_CHECKSUM
      - DB02_COMPRESSION=$DB02_COMPRESSION
      - DB02_BACKUP_LOCATION=$DB02_BACKUP_LOCATION
      - DB02_LOG_LEVEL=DEBUG
       #
       # DB03 - SQLite
       #
      - DB03_TYPE=$DB03_TYPE
      - DB03_HOST=$DB03_HOST
      - DB03_BACKUP_INTERVAL=$DB03_BACKUP_INTERVAL
      - DB03_BACKUP_BEGIN=$DB03_BACKUP_BEGIN
      - DB03_CLEANUP_TIME=$DB03_CLEANUP_TIME
      - DB03_CHECKSUM=$DB03_CHECKSUM
      - DB03_COMPRESSION=$DB03_COMPRESSION
      - DB03_BACKUP_LOCATION=$DB03_BACKUP_LOCATION
      - DB03_LOG_LEVEL=DEBUG
      #
      #
      #
    restart: unless-stopped
    networks:
      - postgres
      - db-backup

networks:
   db-backup:
     driver: bridge
     name: db-backup
   postgres:
     external: true

volumes:
   db-backup-rpi7-logs:
    driver_opts:
      type: "nfs"
      o: "addr=<IP_ADDRESS>,nfsvers=4"
      device: ":/data/media/docker/db-backup/rpi7/logs"
    name: db-backup-rpi7-logs
   db01-backup-postgres-backup:
    driver_opts:
      type: "nfs"
      o: "addr=<IP_ADDRESS>,nfsvers=4"
      device: ":/volume1/Backup/postgres-backups/db-backup"
    name: db-backup-authelia-backup
   db02-backup-tautulli-source:
    driver_opts:
      type: "nfs"
      o: "addr=<IP_ADDRESS>,nfsvers=4"
      device: ":/data/media/docker/tautulli/pi7/data"
    name: db-backup-tautulli-source
   db02-backup-tautulli-backup:
    driver_opts:
      type: "nfs"
      o: "addr=<IP_ADDRESS>,nfsvers=4"
      device: ":/volume1/Backup/sqlite-backups/tautulli/tautulli-pi7"
    name: db-backup-tautulli-backup
   db03-backup-upsnap-source:
    driver_opts:
      type: "nfs"
      o: "addr=<IP_ADDRESS>,nfsvers=4"
      device: ":/data/media/docker/upsnap/db"
    name: db-backup-upsnap-source
   db03-backup-upsnap-backup:
    driver_opts:
      type: "nfs"
      o: "addr=<IP_ADDRESS>,nfsvers=4"
      device: ":/volume1/Backup/sqlite-backups/upsnap"
    name: db-backup-upsnap-backup

.env file (some elements redacted):
# DB-Backup - Universal
#
# SMTP
#
MAIL_FROM=
MAIL_TO=
SMTP_HOST=
SMTP_PORT=
#
MODE=AUTO
USER_DBBACKUP=1000
GROUP_DBBACKUP=1000
LOG_PATH=/logs
#TEMP_PATH
DEBUG_MODE=FALSE
BACKUP_JOB_CONCURRENCY=1
#
#
#
# DB01
#
DB01_TYPE=postgres
DB01_HOST=
DB01_USER=
DB01_PASS=
DB01_BACKUP_LOCATION=FILESYSTEM
DB01_CHECKSUM=MD5
DB01_CREATE_LATEST_SYMLINK=TRUE
DB01_LOG_LEVEL=INFO
#DB01_RESOURCE_OPTIMIZED=
#DB01_SKIP_AVAILABILITY_CHECK=
DB01_COMPRESSION=ZSTD
DB01_COMPRESSION_LEVEL=10
DB01_ENABLE_PARALLEL_COMPRESSION=2
DB01_PARALLEL_COMPRESSION_THREADS=2
DB01_ENCRYPT=FALSE
DB01_BACKUP_INTERVAL=240
DB01_BACKUP_BEGIN=2230
DB01_CLEANUP_TIME=20160
#DB01_ARCHIVE_TIME=
#DB01_BACKUP_BLACKOUT_BEGIN=0800
#DB01_BACKUP_BLACKOUT_END=2200
#
# SQLite
#
#DB02_HOST=/mnt/db01
#DB02_CREATE_LATEST_SYMLINK=TRUE
#DB02_FILESYSTEM_PATH=/backup/db01
#DB02_FILESYSTEM_ARCHIVE_PATH=
#DB02_FILESYSTEM_PERMISSION=
#
# mysql
#
#DB01_MYSQL_EVENTS=
#DB01_MYSQL_MAX_ALLOWED_PACKET=
#DB01_MYSQL_SINGLE_TRANSACTION=
#DB01_MYSQL_STORED_PROCEDURES=
#DB01_MYSQL_ENABLE_TLS=
#DB01_MYSQL_TLS_VERIFY=
#DB01_MYSQL_TLS_VERSION=
#DB01_MYSQL_TLS_CA_FILE=
#DB01_MYSQL_TLS_CERT_FILE=
#DB01_MYSQL_TLS_KEY_FILE=
#DB01_MSSQL_MODE=
#
# postgres
#
#DB01_AUTH=
DB01_NAME=All
DB01_PORT=5432
#DB01_BACKUP_GLOBALS=
#DB01_EXTRA_OPTS=
#DB01_EXTRA_BACKUP_OPTS=
#DB01_EXTRA_ENUMERATION_OPTS=
#
# mongodb
#
#DB01_AUTH
#DB01_PORT=
#DB01_MONGO_CUSTOM_URI=
#
# redis
#
#DB01_EXTRA_OPTS
#DB01_EXTRA_BACKUP_OPTS
#DB01_ARCHIVE_TIME_PORT
#
# S3
#
#DB01_S3_BUCKET=
#DB01_S3_KEY_ID=
#DB01_S3_KEY_SECRET=
#DB01_S3_PATH=
#DB01_S3_REGION=
#DB01_S3_HOST=
#DB01_S3_PROTOCOL=
#DB01_S3_EXTRA_OPTS=
#DB01_S3_CERT_CA_FILE=
# or
#DB01_S3_CERT_SKIP_VERIFY=
#
#
#
# DB02
#
DB02_TYPE=sqlite
#DB02_NAME=
#DB02_USER=
#DB02_PASS=
DB02_BACKUP_LOCATION=FILESYSTEM
DB02_CHECKSUM=MD5
DB02_LOG_LEVEL=DEBUG
#DB02_RESOURCE_OPTIMIZED=
#DB02_SKIP_AVAILABILITY_CHECK=
DB02_COMPRESSION=ZSTD
DB02_COMPRESSION_LEVEL=10
DB02_ENABLE_PARALLEL_COMPRESSION=TRUE
DB02_PARALLEL_COMPRESSION_THREADS=2
#DB02_ENCRYPT=FALSE
DB02_BACKUP_INTERVAL=360
DB02_BACKUP_BEGIN=2240
DB02_CLEANUP_TIME=20160
#DB02_ARCHIVE_TIME=
#DB02_BACKUP_BLACKOUT_BEGIN=
#DB02_BACKUP_BLACKOUT_END=
#
# SQLite
#
DB02_HOST=/mnt/db02/tautulli.db
DB02_CREATE_LATEST_SYMLINK=TRUE
DB02_FILESYSTEM_PATH=/backup/db02
#DB02_FILESYSTEM_ARCHIVE_PATH=
#DB02_FILESYSTEM_PERMISSION=
#
# mysql
#
#DB02_NAME_EXCLUDE=
#DB02_MYSQL_EVENTS=
#DB02_MYSQL_MAX_ALLOWED_PACKET=
#DB02_MYSQL_SINGLE_TRANSACTION=
#DB02_MYSQL_STORED_PROCEDURES=
#DB02_MYSQL_ENABLE_TLS=
#DB02_MYSQL_TLS_VERIFY=
#DB02_MYSQL_TLS_VERSION=
#DB02_MYSQL_TLS_CA_FILE=
#DB02_MYSQL_TLS_CERT_FILE=
#DB02_MYSQL_TLS_KEY_FILE=
#DB02_MSSQL_MODE=
#DB02_PORT=
#
# postgres
#
#DB02_AUTH=
#DB02_NAME
#DB02_PORT
#DB02_BACKUP_GLOBALS=
#DB02_EXTRA_OPTS=
#DB02_EXTRA_BACKUP_OPTS=
#DB02_EXTRA_ENUMERATION_OPTS=
#
#
# mongodb
#
#DB02_AUTH
#DB02_PORT=
#DB02_MONGO_CUSTOM_URI=
#
# redis
#
#DB02_EXTRA_OPTS
#DB02_EXTRA_BACKUP_OPTS
#DB02_ARCHIVE_TIME_PORT
#
# S3
#
#DB01_S3_BUCKET=
#DB01_S3_KEY_ID=
#DB01_S3_KEY_SECRET=
#DB01_S3_PATH=
#DB01_S3_REGION=
#DB01_S3_HOST=
#DB01_S3_PROTOCOL=
#DB01_S3_EXTRA_OPTS=
#DB01_S3_CERT_CA_FILE=
# or
#DB01_S3_CERT_SKIP_VERIFY=
#
#
#
# DB03
#
DB03_TYPE=sqlite
#DB03_NAME=
#DB03_USER=
#DB03_PASS=
DB03_BACKUP_LOCATION=FILESYSTEM
DB03_CHECKSUM=MD5
DB03_LOG_LEVEL=DEBUG
#DB03_RESOURCE_OPTIMIZED=
#DB03_SKIP_AVAILABILITY_CHECK=
DB03_COMPRESSION=ZSTD
DB03_COMPRESSION_LEVEL=10
DB03_ENABLE_PARALLEL_COMPRESSION=TRUE
DB03_PARALLEL_COMPRESSION_THREADS=2
#DB03_ENCRYPT=FALSE
DB03_BACKUP_INTERVAL=360
DB03_BACKUP_BEGIN=2245
DB03_CLEANUP_TIME=20160
#DB03_ARCHIVE_TIME=
#DB03_BACKUP_BLACKOUT_BEGIN=
#DB03_BACKUP_BLACKOUT_END=
#
# SQLite
#
DB03_HOST=/mnt/db03/data.db
DB03_CREATE_LATEST_SYMLINK=TRUE
DB03_FILESYSTEM_PATH=/backup/db03
#DB03_FILESYSTEM_ARCHIVE_PATH=
#DB03_FILESYSTEM_PERMISSION=
#
# mysql
#
#DB03_NAME_EXCLUDE=
#DB03_MYSQL_EVENTS=
#DB03_MYSQL_MAX_ALLOWED_PACKET=
#DB03_MYSQL_SINGLE_TRANSACTION=
#DB03_MYSQL_STORED_PROCEDURES=
#DB03_MYSQL_ENABLE_TLS=
#DB03_MYSQL_TLS_VERIFY=
#DB03_MYSQL_TLS_VERSION=
#DB03_MYSQL_TLS_CA_FILE=
#DB03_MYSQL_TLS_CERT_FILE=
#DB03_MYSQL_TLS_KEY_FILE=
#DB03_MSSQL_MODE=
#DB03_PORT=
#
# postgres
#
#DB03_AUTH=
#DB03_NAME
#DB03_PORT
#DB03_BACKUP_GLOBALS=
#DB03_EXTRA_OPTS=
#DB03_EXTRA_BACKUP_OPTS=
#DB03_EXTRA_ENUMERATION_OPTS=
#
#
# mongodb
#
#DB03_AUTH
#DB03_PORT=
#DB03_MONGO_CUSTOM_URI=
#
# redis
#
#DB03_EXTRA_OPTS
#DB03_EXTRA_BACKUP_OPTS
#DB03_ARCHIVE_TIME_PORT
#
# S3
#
#DB01_S3_BUCKET=
#DB01_S3_KEY_ID=
#DB01_S3_KEY_SECRET=
#DB01_S3_PATH=
#DB01_S3_REGION=
#DB01_S3_HOST=
#DB01_S3_PROTOCOL=
#DB01_S3_EXTRA_OPTS=
#DB01_S3_CERT_CA_FILE=
# or
#DB01_S3_CERT_SKIP_VERIFY=
#

Possible fixes
v3.1.2 is functional with existing environment variable syntax.

Interesting. There are some interesting issues happening to other users that I cannot recreate #270 #271 so I'm going to paste what I wrote in one of them to attempt to understand platform before we move forward:
I think we're going to have to go to the architecture level:
Whats the architecture, x86_64, armv7, armv8/aarch64?
What Operating System, if Linux, what distribution (cat /etc/os-release | grep PRETTY_NAME)
If Linux, what Kernel version (uname -a)
If Linux, what filesystem?
Docker or Podman?
What version of the above. For Docker docker info | grep "Server Version)
If Docker what Storage driver (`docker info | grep "Storage")

Then lets try some tests.
from outside the container, can you write a file to the logs directory and see it from inside the container. example: date > ./logs/outside_inside.txt
from inside the container, can you write to a file in the logs directory and see it from outside the container. example date > /logs/inside_outside.txt
from a scoped user and inside the container can you write to a file in the logs directory and see it from outside the container. example: echo "$(date)" | sudo -u dbbackup tee -a > /logs/dbbackup_inside_outside.txt

I only have access to nixOS and Arch systems and they have passed all tests for all db engines so I am curious to see what could be happening here.
Then, I think your next best step as you have a couple issues going on, can I get a full DEBUG_MODE=TRUE log output emailed over to me? Email is in the CHANGELOG.md.

@tiredofit
Same issue here, activated verbose debugging and I noticed this

Seems that no filename is generated for the backup.

Alright, that took a bit longer than I expected it to be, but I found a series of issues that have been happening:
1 - Running as user dbbackup is not what we want to do when backing up from the filesystem - We need to run as root. Once we grab the initial file we can switch back to the db-backup context.
2 - Temp backup dumps are not being cleaned up, causing extra space on the filesystem
3 - Concurrent SQLite backups would conflict and overwrite each other due to some naming, they've now switched to job_date context temp files
This should get you back going here!

I'm still struggling with v4. All my current instances that I haven't touched since before the upgrade, so using the old variables and one database per DB-Backup instance, they all stopped working on the upgrade to v4.
Here is the log output for the backup of SQLite database from the Authelia app. I have checked permissions and they are set to allow everyone read/write.  The error is the same for all the instances.
Does this need to be a new issue? if so I will move it?
24/11/2023
16:10:01
chown: changing ownership of '/backup/sqlite3_database_20231102-101001.sqlite3.zst.sha1': Invalid argument
24/11/2023
16:10:01
chown: changing ownership of '/backup/sqlite3_database_20231108-161001.sqlite3.zst': Invalid argument
24/11/2023
16:10:01
chown: changing ownership of '/backup/sqlite3_database_20231102-161001.sqlite3.zst.sha1': Invalid argument
24/11/2023
16:10:01
chown: changing ownership of '/backup': Invalid argument
24/11/2023
16:10:02
2023-11-24.16:10:02 [NOTICE] ** [01-_mnt_npm_database.sqlite__All] Dumping sqlite3 database: '/mnt/npm/database.sqlite' and compressing with 'zstd'
24/11/2023
16:10:02
2023-11-24.16:10:02 [INFO] ** [01-_mnt_npm_database.sqlite__All] DB Backup of 'sqlite3_database_20231124-161002.sqlite3' completed successfully
24/11/2023
16:10:02
2023-11-24.16:10:02 [NOTICE] ** [01-_mnt_npm_database.sqlite__All] Generating SHA1 sum for 'sqlite3_database_20231124-161002.sqlite3.zst'
24/11/2023
16:10:02
2023-11-24.16:10:02 [NOTICE] ** [01-_mnt_npm_database.sqlite__All] Backup of 'sqlite3_database_20231124-161002.sqlite3.zst' created with the size of 238734 bytes
24/11/2023
16:10:02
mv: cannot stat '/backup/sqlite3_database_20231123-221000.sqlite3.zst.sha1': Permission denied
24/11/2023
16:10:02
mv: cannot stat '/backup/sqlite3_database_20231124-041001.sqlite3.zst.sha1': Permission denied
24/11/2023
16:10:02
mv: cannot stat '/backup/sqlite3_database_20231124-101002.sqlite3.zst.sha1': Permission denied
24/11/2023
16:10:02
mv: cannot stat '/backup/sqlite3_database_20231124-161002.sqlite3.zst.sha1': Permission denied
24/11/2023
16:10:02
mv: cannot stat '/backup/sqlite3_database_20231124-161002.sqlite3.zst': Permission denied
24/11/2023
16:10:02
ln: failed to access '/backup/latest-sqlite3_database': Permission denied
24/11/2023
16:10:03
2023-11-24.16:10:03 [ERROR] ** [01-_mnt_npm_database.sqlite__All] Moving of backup 'sqlite3_database_20231124-161002.sqlite3.zst' reported errors
24/11/2023
16:10:03
2023-11-24.16:10:03 [NOTICE] ** [01-_mnt_npm_database.sqlite__All] DB Backup for 'database' time taken: Hours: 0 Minutes: 00 Seconds: 02
24/11/2023
16:10:03
2023-11-24.16:10:03 [INFO] ** [01-_mnt_npm_database.sqlite__All] Backup 01 routines finish time: 2023-11-24 16:10:03 GMT with exit code 0
24/11/2023
16:10:03
2023-11-24.16:10:03 [NOTICE] ** [01-_mnt_npm_database.sqlite__All] Backup 01 routines time taken: Hours: 0 Minutes: 00 Seconds: 02
24/11/2023
16:10:03
2023-11-24.16:10:03 [ERROR] ** [01-_mnt_npm_database.sqlite__All] Skipping Cleaning up old backups because there were errors in backing up
24/11/2023
16:10:03
2023-11-24.16:10:03 [NOTICE] ** [01-_mnt_npm_database.sqlite__All] Sleeping for another 21598 seconds. Waking up at 2023-11-24 22:10:01 GMT

Technically a new issue yes - If creating one please include a copy of as much as you can in terms of a docker-compose file or how you are launching, the output of  when setting the environment variable of DEBUG_MOVE_DBBACKUP=TRUE, and for good measure ls -l / and ls -l /backup/

I have managed to get it working successfully by switching from no root squash to map root to admin on my NAS in the NFS settings.  I am not sure if the introduction of the USER_DBBACKUP, GROUP_DBBACKUP has anything to do with this, this is all that I can recall to do with permission related changes.
Do you still want me to create a new ticket so you can investigate?

I think the upgrade from 3.x to 4.x is shaking out some of the weird file system cases and I think this seems pretty normal. As long as you are up and running we are good. I'm going to close this ticket as they are semi related but the original issue has been resolved a few weeks back..


Add mayapy

Builds now run with access to mayapy, on Linux. Now we can run tests and do other things that require mayapy, like #16

Was wondering why CI didn't kick off, and looks like it's out of our control.

Done.
Tests run, but don't cause check failure at the moment. Also @Muream have a look at the error here which I suspect is because it's checking for str whereas what Maya returns is unicode.

Ah right, I was just testing with python3, that makes sense.
I may not have time to fix this until late this week though. If this is blocking anything, feel free to fix this on your end. Should just be a matter of comparing with unicode on python2 or even just six.string_types, I think that works for both version


[AUTO-CHERRYPICK] Bug fix in patch CVE-2024-5535 in openssl - branch main

This is an auto-generated pull request to cherry-pick commit 1d6d14d32cd6dcc791bc38ef5d9c01b3b50e58f5 to main. Original PR: #9957

Thank you @jslobodzian for the review and merge.


no module named 'imp'

`Collecting audioread==3.0.0 (from -r requirements.txt (line 15))
Using cached audioread-3.0.0.tar.gz (377 kB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [6 lines of output]
Traceback (most recent call last):
File "", line 2, in
File "", line 34, in
File "/private/var/folders/xt/yb5btvp501ngl71d59j030840000gp/T/pip-install-mkr1aw5o/audioread_88bf52e368d24a36a5be9fb6eb2ca323/setup.py", line 17, in
import imp
ModuleNotFoundError: No module named 'imp'
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
`

Apparently this is because "imp is deprecated and is turned into importlib in 3.12."
https://github.com/BradenM/micropy-cli/issues/575#

Thank you for sharing that Python<=3.11 is recommended.


Use pip-sync

venv creation process is unrelated to pip-tools' benchmark. Since pip-compile is already installed in user space we can just run pip-sync which could improve pip-tools' benchmark results.

I can understand that virtualenv creation is outside the scope of pip-tools, but it seems unfair to not include it when that's what all the other tools are doing. I'd prefer to keep it 1:1 with the other tools which are all maintaining package isolation.
I would guess that most developers using pip-tools are using it within a virtualenv. Docker may be the exception there, but that isn't exactly what we're testing here.

If we were to use pip-sync with the virtualenv, what is the recommended way to do that? Can the user install be used to manage packages inside the virtualenv? Or should the tool be installed directly inside it?

If we were to use pip-sync with the virtualenv, what is the recommended way to do that? Can the user install be used to manage packages inside the virtualenv? Or should the tool be installed directly inside it?

There are two options avaiable:

install pip-tools inside user's venv and run pip-sync in that venv.

specify Python executable via --python-executable:

pip-sync --python-executable=pip-tools/.venv/bin/python

Thanks for the tips! I went with the latter option.
The site will gets updated based on scheduled runs which happen every 6 hours, so you should see the changes there in a bit.


Archive Files task is geting wrong working directory

var winSevenZipLocation =  path.join(tl.cwd(), '7zip/7z.exe');
this line translates into this command C:\tfs_agent\_work\1\s\7zip\7z.exe when tool runs. Instead of C:\tfs_agent\_work\_tasks\ArchiveFiles_d8b84976-e99a-4b86-b885-4849694435b0\1.0.2\7zip\7z.exe
Seems like when task is created - CWD points to source directory

Yes, by default if not specified the current working directory of a task is the root of the repo.
Jason, __dirname would be the location of the script.
See if path.join(__dirname, '7zip/7z.exe'); works

Yep, just the right kind of magic!!!
Will you fix it in repo?
or should I create a PR?

A PR is fine.  thanks
You may want to also PR into releases/104 since that's the sprint that's about to go out.

Jason is away so I'll test this, merge it, and get it into the releases/m104 branch.  Thanks, guys!

https://github.com/Microsoft/vsts-tasks/pull/2243

Java team did archive task

Fixed by #2243


Is it possible to trigger a tooltip to appear/disappear programmatically?

I had a quick look but couldn't see anything in the API to do that - is there maybe an internal function I can use?
I need to do this as I have 2 charts and I want to be able to trigger the tooltip on the same data point for both charts at the same time when either of those two charts is hovered over.

Did you implement this in the data.onmouseover/onmouseout callback? I need the same functionality, to show tooltip for another graph with the same x-scale. How did you go about getting "mouse"?

@peterlauri yup I implemented this on data.onmouseover and data.onmouseout.
mouse is just an array of two integers - the x and y coordinates of where you want the tooltip to appear relevant to the chart. Try something like [0, 25] to get an idea!

@AnSavvides the API has changed, so it is not that trivial anymore. See this PR: https://github.com/masayuki0812/c3/pull/833
However, I got it to work by first defining my own tooltip.position (note my x-axis is timeseries).
config.tooltip.position = function(data, ttWidth, ttHeight) {
            var $$ = this;  // c3 internal
            var top = ($$.currentHeight - ttHeight - $$.margin.top - $$.margin.bottom)/2;  // centers the tool tip
            var domainLeft = $$.x.orgDomain()[0],
                domainRight = $$.x.orgDomain()[1];
            var toolTipMargin = 20;

            var ms_per_pixel = (domainRight-domainLeft)/$$.width;
            var data_x = data[0].x;  // x Date value

            var left = (data_x-domainLeft)/ms_per_pixel + $$.margin.left + toolTipMargin;
            if(left + ttWidth - $$.margin.left + toolTipMargin > $$.width) {  // swap side
                left = left - ttWidth - 2 * toolTipMargin;
            }
            return {top: top, left: left};
        };

I'm using AngularJS, and I broadcast the mouseover/out events.
    config.data.onmouseover = function(d) {
            $rootScope.$broadcast('dataMouseOver', d, this);  // passing this (the chart object), to be able to not call in same function TODO: should not need this, need to check AngularJS docs
        };

    config.data.onmouseout = function(d) {
            $rootScope.$broadcast('dataMouseOut', this);  // passing this (the chart object), to be able to not call in same function
        };

    $scope.$on('dataMouseOver', function(event, datapoint, origin) {
        if(origin !== $scope.chart) {  // it is broadcasted over rootScope so we need to check the origin (included in broad cast)
            var $$ = $scope.chart.internal;  // c3 internal
            var x = datapoint.x;
            var data_on_x = $$.filterByX($$.data.targets, x);
            for(var i=0; i<data_on_x.length; i++) {
                data_on_x[i] = $$.addName(data_on_x[i]);
            };
            $$.showTooltip(data_on_x);
            $$.showXGridFocus(data_on_x);
        }
    });

    $scope.$on('dataMouseOut', function(event, origin) {
        if(origin !== $scope.chart) {
            $$ = $scope.chart.internal;
            $$.hideTooltip();
            $$.hideXGridFocus();
        }
    });


Need Pairing Password

I have setup a balena sound device.
It does it job but I am living in a flat and my neighbours can connect to the device, because there is no Password set to pair.
Thats a big issue!

#34 offers a solution.

@ibaxx i have implemented a solution in #48

PIN code support was implemented on #51. There are some quirks with apple devices (won't work on iOS due to apple security restrictions). Closing this issue.


requests.go:42-42: decrypt requests

The puzzle 7-633161db (from #7) in worker/requests.go (lines 42-42) has to be resolved: "decrypt requests"
The puzzle was created by Felix Neumann on 16-Sep-17.
Estimate: 0 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

Precondition: encryption, esp. #25

The puzzle 7-633161db has disappeared from the source code, that's why I closed this issue.


short nparray not supported

Hi I found that if I try to send a very short np array such as np.array([1,1]), the server will not receive it. Is this a problem overall or just on my side?
My solution for now is that I just send the repeated array of 100 times and it will be received successfully.

the socket has a buffer, you can change the size of the buffer on the recv call. In essence, if the buffer isn't filled, you won't get your data back (this is why you have to send the array a bunch of times because then it finally fills the buffer).
bufsize is the size in bytes.
you can calculate how many bytes you need for the bufsize with:
x = np.array([1,1])
bufsize = x.size * x.itemsize
print(bufsize) # 16 bytes

for a 2 element int64 array, the size of your buffer is 16 bytes
conn.recv(bufsize=16)
however, I just tried with bufsize=32 and bufsize=64 and both work fine. bufsize=128 does not. Probably this is because there is extra data overhead with the way I bundle up a the numpy array.


Add an encoding parameter to write_* and create_* functions

Add an encoding parameter to write_* and create_* functions so that dot files created will be written in the specified encoding. This includes the temporary dot files created when writing or outputting in other formats.
Fixes issue #142.

Thanks, merged as 7e2f17644a954aae2412b6cb87a02fded7072745.


Invalid address value for "Modify Depositor(s)" causes unhandled JS error

Submitting a value like "fubar" for the Address field for the Modify Depositor(s) action causes an error reported only in the browser console.  This is in Firefox on MacOS.
Warning: An unhandled error was caught from submitForm() TypeError: a.t0.data is undefined
    a EditDepositor.tsx:84
    l runtime.js:63
    _invoke runtime.js:293
    I runtime.js:118
    Babel 6
    o EditDepositor.tsx:68
    X Formik.tsx:851
    cr Formik.tsx:1202
    V Formik.tsx:758
    promise callback*rr/V< Formik.tsx:733
    cr Formik.tsx:1202
    J Formik.tsx:825
    cr Formik.tsx:1202
    React 11
    unstable_runWithPriority scheduler.production.min.js:18
    React 19
    787 index.tsx:10
    a (index):1
    t (index):1
    r (index):1
    <anonymous> main.09ac684b.chunk.js:1

Thanks for reporting.
I have added the validations on the address field now almost everywhere.
If something is missing then please report and I'll try to add a fix.


Silencing "a jupyter kernel connection is required..." message

Hi!
I was wondering if there is an option to suppress this message in an output rendered through MyST:
https://github.com/jupyter-book/thebe/blob/2f69ba2bf42a3bde8bbd28de7359f355f3c8781b/packages/core/src/utils.ts#L29
For a cleaner look, I want to add this information in the figure caption and suppress from the output (if possible).
Thank you!

Hi @agahkarakuzu, one way to suppress the output is to add a placeholder to the figure, that should/would remove that message. And it will look nicer/cleaner in the process - https://mystmd.org/guide/reuse-jupyter-outputs#placeholder-content - does that fit your use case?

Hi @stevejpurves, thanks for responding! I already have an interactive figure (widgets are modifying traces on it when connected to a kernel) rendered from the labeled cell output at the initial values of the sliders, and the warning appears right below it. So I assume using a placeholder would remove the content of interest?

@agahkarakuzu it would replace the entire contents of the figure (all cell outputs) only on initial render, as soon as you connected to a kernel and ran the figure (cell/notebook) it would be replaced with your widgets.
It sounds like your cell might be producing 2 outputs though? the first an interactive graph that does not require a kernel and the second containing widgets?

The widget callback is creating/updating the interactive figure.
This is how it looks on the page:

and on the notebook:

with the following input:
#| label: interactCylinder

@interact(Ncyl=widgets.IntSlider(min=1, max=100, step=1, value=30,description="# cylinders"), R=widgets.FloatSlider(min=0.5, max=5, step=0.5, value=1.5, description="R cylinder"))
def update(Ncyl, R):
    """Update the visualization based on widget values."""
    visualize_random_cylinders(Ncyl=Ncyl, R=R, L=100)

yes I thought so. I take it you would also want to remove the interactive(children=...?
so it looks like this line in the https://github.com/jupyter-book/myst-theme/blob/50c625864f091f52dc563cd3bd486e68de3625d1/packages/jupyter/src/jupyter.tsx#L90-L91 @myst-theme/jupyter package is the culprit but there's no configuration available for that right now, seems like it could be a "theme option" which would then need to be propagated through, to the PassiveOutputRenderer.
it might be better to wait on https://github.com/jupyter-book/myst-theme/pull/429 though.!?

Thank you so much for the clarification!
I'll keep an eye on this PR as it is not really urgent and pretty glad to learn about rehydration through a PR :)

great, closing this for now then


Add option to remove label when issues are closed

Fixes https://github.com/gcampbell-msft/fixed-pending-release/issues/7
This PR adds the optional argument removeLabel to remove a label after commenting and closing an issue. I did run npm run prepare, but I can roll back those changes if you would prefer so the PR is easier to review.
I am not sure how to test the action due to not being able to open issues on my fork, but I believe this should work as is. (just added another input and added logic when commenting on the issue)
Edit to add: I am okay making my own action if you don't want to manage it, but figured a PR would be more beneficial for the community instead of having competing actions with similar functionality

Thanks!


Add MicroSurvey Pop Up to Discover Page to Support HydroShare User Experience Evaluation

Describe the feature you'd like and what it will do
Add a microsurvey pop-up for users after they visit the discover page. The survey has been created using Typeform and the embed code is provided below.
Why is this feature important?
Supports the HydroShare User Experience Evaluation being conducted by the TACC team.
Is your feature request related to a problem? Please describe.
No
Additional context
Survey Criteria:
The survey should display on the Discover page for users that have completed at least one search using either the free text search bar or a facet, and have been on the page for at least two minutes.
Embed code and Instructions:
Place the code in your page's HTML where you want your typeform launcher button to appear.
Launch me

Below is an email chain outlining the progress made on this issue.
Ok sounds good. I’ll run this version by the team and let you know if any additional adjustments are needed before moving forward.

Thanks for your help with this.

Emily

From: Scott Black<EMAIL_ADDRESS>Sent: Friday, September 10, 2021 12:38 PM
To: Emily Clark<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

You could have it pop up a little bit after a search is made.  I don’t know.  We could try it without popping out at all and if we’re not getting enough responses we could later update it to pop out after a  period of time and/or event.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Friday, September 10, 2021 at 9:34 AM
To: Scott Black<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Awesome, thanks for the quick update! I like this much better too.

Using this approach, do you think it’s necessary to show the button only to users that have completed a search?

From: Scott Black<EMAIL_ADDRESS>Sent: Friday, September 10, 2021 11:30 AM
To: Emily Clark<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

Beta is updated with the new code.  I like this a lot better.  The help us improve tab always shows and then opens after the time delay.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Friday, September 10, 2021 at 9:24 AM
To: Scott Black<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Hi Scott,

Typeform has a new option to add a the launch button as a sidebar. See the screenshot below. Can we try this? The embed code is below, but it doesn’t have the time delay piece. Can you grab that piece from the previous embed code I sent? If that’s tricky, I can have Typeform generate it again.

Thanks,
Emily

New Code:

Previous Code with Time Delay:

<button data-tf-popup="gfePN4ur" data-tf-open="time" data-tf-open-value="10000" data-tf-auto-close data-tf-hidden="email=xxxxx,cookie=xxxxx" style="all:unset;font-family:Helvetica,Arial,sans-serif;display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#0445AF;color:#FFFFFF;font-size:20px;border-radius:25px;padding:0 33px;font-weight:bold;height:50px;cursor:pointer;line-height:50px;text-align:center;margin:0;text-decoration:none;">Launch me</button>

From: Emily Clark
Sent: Thursday, September 9, 2021 11:51 AM
To: Scott Black<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Alright, sounds good. I just sent a calendar invitation. Talk to you in a bit.

- Emily

From: Scott Black<EMAIL_ADDRESS>Sent: Thursday, September 9, 2021 11:24 AM
To: Emily Clark<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

I’m available at 1pm today.  I think it’d be good to discuss this further to see if we can nail down an approach you’re happy with.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Wednesday, September 8, 2021 at 2:24 PM
To: Scott Black<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Hi Scott,

Thanks for this feedback. Maybe we can iterate offline. Before you tie the survey to the search event, are we able to add a constraint to the survey so that it’s only shown to users who have not completed the survey already (I understand that this might not be a perfect depending if cookies are cleared).  I’m concerned it could be very annoying if a user is using Discover frequently.

I’m also not sure that two minutes is the right amount for the time delay. The initial idea was to give users enough time to conduct their search and then analyze the results, but I think if a user clicked into a resource then returned to discover before two minutes, they would bypass the survey. Maybe a 20 or 30 second time delays is more appropriate. I’m trying to see if Heap can tell us information about the average time spent on Discover after a search.  Do you have any thoughts on this

I could talk at 1:00 pm ET tomorrow if it’d be easer to discuss further.

Thanks,
Emily

From: Scott Black<EMAIL_ADDRESS>Sent: Tuesday, September 7, 2021 12:32 PM
To: Emily Clark<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

I’m not available tomorrow but can make Thursday work.  I’m free from 11 Eastern to the end of the day.

The big blue button was in the code you sent me, I can remove it if you’d like.  As for setting up the events, it’ll take some fiddling but I don’t expect it to be much work.  I expect to be able to implement and thoroughly test it with about a day’s worth of work.  It’s one of those things that could be really quick or it might take some exploration.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Tuesday, September 7, 2021 at 8:57 AM
To: Scott Black<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Hi Scott,

A few more questions about survey implementation came up during my call with the TACC team this morning. Do you have a few minutes to chat quickly about this tomorrow or Thursday?

Tomorrow I’m free from 12 – 1:30 pm ET or 3 – 4:30 pm ET; Thursday I’m free until 4 pm ET.

Thank you!
Emily

From: Emily Clark
Sent: Friday, September 3, 2021 2:49 PM
To: Scott Black<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Awesome, thanks for testing this out. I confirm it pops up after a delay. The ‘Launch Me’ button is just for testing purposes and will eventually go away, correct?

You mentioned that adding additional constraints to make it only pop up after a search has been performed would be more difficult, correct? Do you have an estimate on this effort? I can discuss this with the team when we meet on Tuesday and we can decide if the time delay is sufficient.

Thanks for your help with this.
- Emily

From: Scott Black<EMAIL_ADDRESS>Sent: Friday, September 3, 2021 2:10 PM
To: Emily Clark<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

It’s up on beta now.  I updated the delay time to 20 seconds just to be sure we can change the time.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Friday, September 3, 2021 at 10:08 AM
To: Scott Black<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Okay, try this:

<button data-tf-popup="gfePN4ur" data-tf-open="time" data-tf-open-value="10000" data-tf-auto-close data-tf-hidden="email=xxxxx,cookie=xxxxx" style="all:unset;font-family:Helvetica,Arial,sans-serif;display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#0445AF;color:#FFFFFF;font-size:20px;border-radius:25px;padding:0 33px;font-weight:bold;height:50px;cursor:pointer;line-height:50px;text-align:center;margin:0;text-decoration:none;">Launch me</button>

From: Scott Black<EMAIL_ADDRESS>Sent: Friday, September 3, 2021 12:00 PM
To: Emily Clark<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

If you send me the code with the time delay, I bet it’s easy to update to what we want.  If we have to implement our own delay, it won’t be a significant effort if we’re also implementing the event trigger.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Friday, September 3, 2021 at 9:45 AM
To: Scott Black<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Hi Scott,

I encountered a snafu here in that Typeform only allows a time delay of up to 10 seconds. That’s not going to be nearly enough time for this activity.

Do you have an idea of the difficulty/effort required to implement the time delay ourselves?

We have a call with the TACC team on Tuesday morning, so I could discuss other options with them if needed.

Thanks,
Emily

From: Emily Clark
Sent: Tuesday, August 31, 2021 1:01 PM
To: Scott Black<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

I tested the cookie hidden field and that appears to be working as well. (see below).

In order to use Typeform’s hidden field feature, we’ll need to upgrade our plan subscription. I’m using Martin’s account and it looks like we’re grandfathered into the plan that we have, so if I change it, I won’t be able to switch it back to the same plan. I want to run this by him before I make any changes, so I’ll do this tomorrow and let you know when we’re ready to proceed.

Thanks,
Emily

From: Scott Black<EMAIL_ADDRESS>Sent: Tuesday, August 31, 2021 11:11 AM
To: Emily Clark<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

Beta is updated with the cookie and email.

Scott

From: Scott Black<EMAIL_ADDRESS>Date: Tuesday, August 31, 2021 at 9:05 AM
To: Emily Clark<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

We can try out the time delay.  It sounds like typeform can provide that code to us.  If we want to tie it to a search event, I’ll have to do a bit of coding.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Tuesday, August 31, 2021 at 8:40 AM
To: Scott Black<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Ok, I wasn’t sure if specific language needed to be used and how typeform and hydroshare knew to talk to each other, but it sounds like you’re linking them on your side. I added another hidden field called cookie. The updated code is below.  Please let me know if you need anything else for this.

Is it possible to test the time delay in beta instead of using the blue launch button, or is that something we still need to work out?

Thanks,
Emily

<button data-tf-popup="gfePN4ur" data-tf-hidden="email=xxxxx,cookie=xxxxx" style="all:unset;font-family:Helvetica,Arial,sans-serif;display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#0445AF;color:#FFFFFF;font-size:20px;border-radius:25px;padding:0 33px;font-weight:bold;height:50px;cursor:pointer;line-height:50px;text-align:center;margin:0;text-decoration:none;">Launch me</button>

From: Scott Black<EMAIL_ADDRESS>Sent: Tuesday, August 31, 2021 10:20 AM
To: Emily Clark<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

We can do that.  It’s really up to you what it is called, though it’s best to keep spaces out of the field name.  Just send me the new embed code snippet and I’ll hook up the session cookie to the new hidden field attribute.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Tuesday, August 31, 2021 at 8:15 AM
To: Scott Black<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Hi Scott,

Confirming that the survey is working and that the hidden field collects the email information when the user is logged in (see below).

Should I try adding another hidden field to collect the session cookie information? Would the field just be called ‘session cookie’?

Thanks,
Emily

From: Emily Clark
Sent: Monday, August 30, 2021 4:56 PM
To: Scott Black<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Hi Scott,

Thanks for setting this up. I confirm I can see the launch button on beta. I’ll take a more thorough look at this tomorrow morning, including reviewing how the results are compiled.

- Emily

From: Scott Black<EMAIL_ADDRESS>Sent: Monday, August 30, 2021 12:42 PM
To: Emily Clark<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

The big blue “Launch Me” button is on the beta discover page now.  The hidden email attribute is filled in with a logged-in user’s email.  If the user is not logged in, nothing is sent in the email attribute.

I was able to get the session cookie to work as well.  The thing with session cookies is they change with different devices and browsers.  It also changes if the user logs in/out or if they expire.  We do have the ability to trace it back to a user if we wanted to as the session keys are stored in the database (I think it is cleared weekly).

From a technical standpoint, there is nothing we can do to reliably identify if a single anonymous user submits a survey twice.  Email is the best way to identify logged-in users.  If you’d like to keep it anonymous, we can hash the email and still identify duplicate submissions for logged-in users.

Scott

From: Scott Black<EMAIL_ADDRESS>Date: Monday, August 30, 2021 at 9:37 AM
To: Emily Clark<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

It would be sent as a hidden field, the same method as email.

I’ll get your current button deployed to beta later today.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Monday, August 30, 2021 at 9:07 AM
To: Scott Black<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Hi Scott,

Thanks for taking a look at this.

For user tracking, I’m happy to use whatever approach is easiest and reasonably effective; @Jerad and Dave, do you have a preference on this?

@Scott, with the session cookie method you mention below, how does the session cookie get connected back to the survey results that are collected Typeform?

Thanks,
Emily

From: Scott Black<EMAIL_ADDRESS>Sent: Friday, August 27, 2021 8:56 PM
To: Emily Clark<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

This was a bit trickier than I expected since it’s on the new discover.  I’ve got it working locally now to get the email into the hidden attributes.  I’ll deploy this to beta for you to look at next week (it’s a big blue button that says Launch Me).  Neal is currently using beta for testing 1.47.

If you don’t want to trace the survey back to an email but still know if one (logged in) user submits multiple surveys then we could use a one-way hash of the email or a session cookie (session cookie would allow us to track anonymous users) instead of the email in the hidden attribute.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Friday, August 27, 2021 at 8:20 AM
To: Scott Black<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Hi Scott,

I added the hidden field to the survey, as you can see in the source code below, although I’m not sure it was done correctly. I did not add the logic yet.

If we’re collecting email addresses either through the hidden field or using logic to ask the user to enter their email address if they’re not logged in, would it be easier and more transparent to collect the identifying information in a survey question up front, since the survey is no longer anonymous? We could include a note that identifying information will be separated from the survey responses. Let me know what you think.

Thanks,
Emily

<button data-tf-popup="gfePN4ur" data-tf-hidden="email=xxxxx" style="all:unset;font-family:Helvetica,Arial,sans-serif;display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#0445AF;color:#FFFFFF;font-size:20px;border-radius:25px;padding:0 33px;font-weight:bold;height:50px;cursor:pointer;line-height:50px;text-align:center;margin:0;text-decoration:none;">Launch me</button>

From: Scott Black<EMAIL_ADDRESS>Sent: Thursday, August 26, 2021 12:38 PM
To: Emily Clark<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

Hi Emily,

Tying into a search event will be straightforward to implement.  I’ll have to see how the time delay typeform provides works to know if we can use it or if we should implement our own since we’re coupling it with a search event.

We can use Hidden Fields to send the user’s email with the response (if they’re logged in) without requiring the user to provide their email.  You could Add Logic to Hidden Fields to request the emails of those not logged in.  This would allow us to identify duplicate responses based on emails

If you’d like to more thoroughly prevent duplicate responses than cookies allow, we can look at alternatives.  There is an API to request the response information.  However, it is not trivial to setup and would require a fair amount of work in the backend.  An alternative that I would favor is standing up a temporary endpoint in HydroShare that allows us to store/retrieve whether a user has completed a survey.  This would avoid the issues with cookies and if written to be standalone, it wouldn’t interfere with the rest of HydroShare.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Thursday, August 26, 2021 at 9:16 AM
To: Scott Black<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Hi Scott,

Following up on the HydroShare microsurvey.  The Typeform survey can be viewed here. I’ve included the embed code for the pop up survey format below.  I’ve also opened GH Issue# 4322 to document this work.

A few additional details and questions:

The TACC team suggested that the survey display for users that has completed at least one search using either the free text search bar or a facet, and have been on the Discover page for at least two minutes.
We would need to update our Typeform account plan to use the time delay feature. I can update this if needed.
Do you know if there is any way that Typform could collect information that would tell us if a user has completed the survey more than once  if their cookies are disabled? Or a way for the HydroShare logging record to record which users were prompted to take the survey?
Finally, just confirming that because we’re using a third party service to survey the user, the user’s responses to the survey will not be linked to their HydroShare account even if they are logged in, unless we explicitly ask for this information in the survey, correct?

Please let me know if you have any feedback or questions, and next steps for moving this into beta for testing.

Thanks,
Emily

Embed code and Instructions:

Place the code in your page's HTML where you want your typeform launcher button to appear.

<button data-tf-popup="gfePN4ur" style="all:unset;font-family:Helvetica,Arial,sans-serif;display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#0445AF;color:#FFFFFF;font-size:20px;border-radius:25px;padding:0 33px;font-weight:bold;height:50px;cursor:pointer;line-height:50px;text-align:center;margin:0;text-decoration:none;">Launch me</button>

From: Emily Clark
Sent: Thursday, August 19, 2021 4:23 PM
To: Scott Black<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: RE: Following Up: Implementing Microsurvey on HydroShare

Hi Scott,

Thanks, this is very helpful. I’ll follow up with the survey embed code once we narrow down where we’d like the survey and the corresponding questions.

- Emily

From: Scott Black<EMAIL_ADDRESS>Sent: Thursday, August 19, 2021 11:53 AM
To: Emily Clark<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: Re: Following Up: Implementing Microsurvey on HydroShare

Emily,

From what I’ve seen in the documentation, Typeform provides an html snippet that we can use anywhere we choose.  We can use beta for testing when you are ready.

Typeform provides custom launch options to launch after a period of time, for example.

Inserting the embed code on beta is a quick process and does not require a deploy or downtime.  If you send me the embed code along with where you’d like it placed, I’m happy to update beta.

It will take some development time to show the survey to 1 of 5 users and to only show the survey once per user.  This will be lighter weight if we use cookies but keep in mind that cookies are controlled by the users.  If cookies are blocked or deleted, the same user may get the survey again.

Scott

From: Emily Clark<EMAIL_ADDRESS>Date: Thursday, August 19, 2021 at 8:31 AM
To: Scott Black<EMAIL_ADDRESS>Cc: Jerad Bales<EMAIL_ADDRESS>David Tarboton<EMAIL_ADDRESS>Subject: Following Up: Implementing Microsurvey on HydroShare

Hi Scott,

Following up on the discussion during Monday’s programmer call regarding implementing a pop-up microsurvey on hydroshare: we have a Typeform account that we can use to host the survey.  We have the option to embed the survey with our version, and can create a pop-up survey (see below).

Is there anything else you need to know about Typeform in general to confirm that this will work? Additional help documentation for embedding the form is available here. If you need something more technical I can see what else I can find.  We’re still discussing the trigger for the survey, but let me know if you think of any general red flags or pages/areas to avoid.

Please let me know if you want access to the Typeform account at this time or if we need to discuss anything further.

Thank you,
Emily

Hi @sblack-usu,
The team is happy with the new version of the survey. I would like to proceed with getting it into production, using the behavior outlined below, but I think we should still test #2 and #3 below in beta as we haven’t done this yet, correct?
Please let me know next steps.

The survey appears on the side bar when a user opens Discover.
The survey tab expands after one minute time delay after a user performs a search using the search bar or facets.
Use the cookies approach so that once a user completes the survey, the survey tab is no longer shown to them (with the understanding that this is not perfect).
When the data is cleaned, use the hidden fields to track cookies and user email to determine whether the same user has submitted more than one response (already in place).

Thanks,
Emily


New Friends Manager

This is a better solution to manage friends and enemies.
In the previous "friends manager", if it can be called that, lowercase and uppercase would make a difference, whereas that has been fixed here, with a full actual friends manager.
This PR also updates the friends module to use the new friends manager.

Thanks for the PR, it seems to be working like a charm! If you join the Discord server I will give you the Contributor role


Refactored the code on how sys and job config properties are handled

Refactored the code on how system and job config properties are handled and passed around. With the changes, AbstractJobLauncher nows takes only a single Properties object that includes both system and job config properties.
Added a JobConfigurationUtils and used it.
Added WriterUtils.setFileAttributesFromState(properties, fs, outputFile); back to AvroHdfsDataWriter that was deleted by accident in #123.

Signed-off-by: Yinan Li<EMAIL_ADDRESS>

@sahilTakiar can you review this?

Minor comments, otherwise LGTM


Slow inference

Description
The current BriefComm summarizer efficiently converts audio content into text and provides summaries using the Whisper and Llama2 models. However, it has been observed that the summarization process is slower than expected, impacting user experience. Additionally, the Llama2 model has now become outdated with the release of Llama3, which offers improved performance and capabilities.
Proposed Enhancements
1. Speed Optimization with Groq Inference:

Implement Groq inference to enhance the processing speed of the summarizer.
As Whisper is already included in Groq inference, integrating it will be straightforward and will significantly improve the transcription speed.

2. Upgrade to Llama3:

Replace the current Llama2 model with the newly released Llama3 model.
Llama3 offers better performance, accuracy, and efficiency in summarization tasks, providing users with more precise and quicker summaries.

Feature Integration and Testing:

Integrate Groq inference into the current workflow to optimize Whisper's transcription process.
Transition from Llama2 to Llama3 for summarization, ensuring compatibility and seamless operation.
Conduct extensive testing with diverse datasets to validate the improvements in speed and summarization quality.

Resources:

Documentation and implementation guides for Groq inference and Whisper.
Llama3 model and its integration documentation.
Datasets for testing transcription and summarization improvements.

Assignees:

Assign this issue to team members experienced with AI model integration, specifically those familiar with Whisper, Groq inference, and the Llama series models.

Milestone:

Set a milestone for the completion of these enhancements within the next development cycle to ensure timely updates and improved user experience.

Labels:

Enhancement
Performance
Speed Optimization

Additional Information:

Ensure all contributions follow the GitHub Community Guidelines and maintain high code quality and documentation standards.
Regularly update the progress on this issue and involve the community for feedback and suggestions.

Thanks I'll do it. Closing this issue for now.


Code Review

Take a look and see if everything makes sense and/or needs refactoring/rethinking. Thanks!

Note: builds are currently breaking on Node v0.8 due to a bug in a dependency. Waiting for the fix to land.

LGTM.

Awesome. Thanks!


Error: undefined method `xpath' for nil:NilClass

When ingesting, we saw a couple of records have this error, when trying to get the label for a file.  See https://github.com/pulibrary/plum/blob/master/app/models/concerns/mets_structure.rb#L13

Do you have a sample record ID?

Closed by 08c6e33de97ad0fd9912c480f8e52d0b09441445


Navigation Pane flickering, and weird animation

🐛 Bug Report
When navigating between two pages in the same group, the entire nav pane flickers blank.  And the chevron in the group header of the two pages flashed back to the closed position and reanimates open.
Have you read the Contributing Guidelines on issues?
(Write your answer here.)
To Reproduce

Goto https://facebook.github.io/react-native/docs/getting-started
Navigate between two pages in the The Basics group

Expected behavior

Navigation wouldn't flicker and group wouldn't animate unnecessarily.
Actual Behavior

Navigation pane goes blank for some frames during navigation.
The chevron animates when it should remain consistently in the open position.

Reproducible Demo
(Paste the link to an example repo, including a siteConfig.js, and exact instructions to reproduce the issue.)

This is because pages in Docusaurus 1 are server-side rendered and the expand/collapse logic only runs after the page loads. There's a script which finds the category that contains the current page and toggle that part to expand.
This bug is annoying but doesn't affect the site's functionality. One potential way to solve it would be to determine if a category should be expanded during SSR phase and render the expanded HTML. It can be quite complicated and might not be worth fixing. Help in fixing would be appreciated!
FWIF this problem does not exist in Docusaurus 2 because it's a single-page app.

Another solution is to use something like pjax that can loads pages using AJAX and updates the browser's current URL using pushState() without reloading page's layout or any resources (JS, CSS), giving a fast page load.
https://github.com/MoOx/pjax/blob/master/README.md#pjax

It allows you to completely transform the user experience of standard websites (server-side generated or static ones) to make users feel like they are browsing an app, especially for those with low bandwidth connections.

This is a duplicate of #1235. We'll address this in v2.


Add option --or-later

If --or-later is passed, append _or_later to the bottle tag.

Seems reasonable, thanks again @sjackman!

Thanks again for merging, Mike!


Relicense to MIT

Confirmed separately with @zetlen that this is doable & fine. I've been using MIT on most of my other packages and all new ones as a default.
I believe the only contribution from another human is #6 (cc @sirugh). I believe bumping disparity to a newer version should qualify for us not needing to seek relicensing approval (if we did at all?). Bumping the version can't hurt anyway.

🤖


Flux infused crusher has no recipe.

While testing the new version I noticed the flux-infused crusher has no recipe.

Do you have Redstone Arsenal installed?

Oops sorry not in my testing instance of minecraft. Do have it in my regular modpack. Sorry for the false alarm.


科比·布莱恩特 Kobe Bryant

早上起床拿起手机发现有几十条消息。有各个平台的消息。但是最先看到的是詹姆斯悼念科比的新闻。我当时在想干嘛悼念，然后就愣住了，手指颤抖的往下翻，铺天盖地的新闻说科比坐直升机坠机去世了。当时感觉这不是真的，也不愿意相信真的，但是片刻冷静下来才知道科比真的去世了。不愿相信也许是太不想他就这样离开了吧？错愕，震惊，悲伤各种心情涌上心头。各种科比以前的画面浮现在脑海里，一遍遍，一幕幕通过大脑传达内心，不由得钻心的痛。我30岁了，可以说是看着科比那一代人打球长大的。我记得2002年上初中开始看比赛，那时候听到最多的就是科比，姚明，弗朗西斯，艾弗森，麦迪，奥尼尔，加内特，邓肯那一批球员的名字。那个时候看比赛只有朝廷台转播，而且每次播比赛之前都有一个片头，我清楚的记得有一个科比360度转身扣篮的镜头。从此开始一直到科比退役，他都是我最关注的几个球星之一。也许科比的天赋不是最好的，但他是最努力的。也许的成就不是最高的，但他是最坚强的。他那种不服输，不放弃，不退让的精神至今在我的生活里影响着我。在艾弗森，麦迪，姚明等一批球员以各种理由退役后，坚持到最久的还是科比，打过乔丹，皮蓬，打过麦迪，艾弗森，打过邓肯，诺天王，打过勒布朗，韦德，打过杜兰特，库里甚至打过10后的一大批球员，在他的整个职业生涯里也许没有一个人能正真的凌驾于他之上。有多少人爱他，就有多少人恨他。不做乔丹，只做科比。不管时代怎么变化，他永远是逆来顺受，永远是最特别的一个。所有的赞美都不及你一世回眸。也许我已经语无伦次，胡言乱语，回忆永远说不完，道不尽。可是洛杉矶的4点没有人再起来练球了。你走了，带走的是我整个青葱的岁月，但你的精神会陪伴我走完今后的路。永远怀念你，科比·布莱恩特。

57 Memorable Kobe Bryant Quote
https://addicted2success.com/quotes/57-memorable-kobe-bryant-quotes/
Kobe Bryant is one of the best basketball players in the history of the game. He is a 5-time NBA champion, Most Valuable Player, 2-time Finals MVP, 2-time scoring champion, and has 7 NBA Championship appearances.
He is one of the most recognizable sports icons on the planet.
Here are 57 Memorable Kobe Bryant Quotes:

“People just don’t understand how obsessed I am with winning.” – Kobe Bryant

“Friends can come and go, but banners hang forever.” – Kobe Bryant

“The most important thing is to try and inspire people so that they can be great in whatever they want to do.” – Kobe Bryant

“I don’t want to be the next Michael Jordan, I only want to be Kobe Bryant.” – Kobe Bryant

“June 2010, after winning his fifth title: “I just got one more than Shaq. So you can take that to the bank.” – Kobe Bryant

“Winning takes precedence over all. There’s no gray area. No almosts.” – Kobe Bryant

“I’ll do whatever it takes to win games, whether it’s sitting on a bench waving a towel, handing a cup of water to a teammate, or hitting the game-winning shot.” – Kobe Bryant

“As I sit here now, when I take off my shoe and I look down at my scar, I see beauty in it. I see all the hard work, all the sacrifices. I see the journey that it took to get back to this point of being healthy. And I see beauty in that struggle. That’s what makes it beautiful.” – Kobe Bryant

“Because I don’t want chumps, I don’t want pushovers, and if you’re a chump and a pushover, I will run over you.” – Kobe Bryant

“After ESPN ranked him the 40th-best player in the NBA: “I’ve known for a long time they’re a bunch of idiots… I tend to use things as motivation that tend to be in the realm of reality.” – Kobe Bryant

“The last time I was intimidated was when I was 6 years old in karate class. I was an orange belt and the instructor ordered me to fight a black belt who was a couple years older and a lot bigger. I was scared s—less.   That was around the time I realized that intimidation didn’t really exist if you’re in the right frame of mind.” – Kobe Bryant

“When I have the chance to guard Michael Jordan, I want to guard him. I want him. It’s the ultimate challenge.” – Kobe Bryant

“There’s certain players that I’ve made cry.  – Kobe Bryant

“I’m here. I’m not going anywhere. No matter what the injury – unless it’s completely debilitating – I’m going to be the same player I’ve always been. I’ll figure it out.  – Kobe Bryant

“Better learn not to talk to me.  – Kobe Bryant

Kobe-Bryant-1

“Boos don’t block dunks.” – Kobe Bryant

“I’m reflective only in the sense that I learn to move forward. I reflect with a purpose.” – Kobe Bryant

“Everything negative – pressure, challenges – is all an opportunity for me to rise.” – Kobe Bryant

“I’ve played with IVs before, during and after games. I’ve played with a broken hand, a sprained ankle, a torn shoulder, a fractured tooth, a severed lip, and a knee the size of a softball. I don’t miss 15 games because of a toe injury that everybody knows wasn’t that serious in the first place.” – Kobe Bryant

20th Kobe Bryant Quote – “The topic of leadership is a touchy one. A lot of leaders fail because they don’t have the bravery to touch that nerve or strike that chord. Throughout my years, I haven’t had that fear.” – Kobe Bryant
21. “I can’t relate to lazy people. We don’t speak the same language. I don’t understand you. I don’t want to understand you.” – Kobe Bryant

“I’m chasing perfection.” – Kobe Bryant

“I love going one-on-one with someone. That’s what I do. I’ve never lost.  – Kobe Bryant

“I’m extremely willful to win, and I respond to challenges. Scoring titles and stuff like that… it sounds, well, I don’t care how it sounds – to me, scoring comes easy. It’s not a challenge to me to win the scoring title, because I know I can.” – Kobe Bryant

“These young guys are playing checkers.  – Kobe Bryant

“My parents are my backbone. Still are. They’re the only group that will support you if you score zero or you score 40.” – Kobe Bryant

“The most important thing is you must put everybody on notice that you’re here and you are for real. I’m not a player that is just going to come and go. I’m not a player that is going to make an All-Star team one time, two times. I’m here to be an all-time great. Once I made that commitment and said, ‘I want to be one of the greatest ever’, then the game became everything for me.”  – Kobe Bryant

“There’s a choice that we have to make as people, as individuals. If you want to be great at something, there’s a choice you have to make. We all can be masters at our craft, but you have to make a choice. What I mean by that is, there are inherent sacrifices that come along with that. Family time, hanging out with friends, being a great friend, being a great son, nephew, whatever the case may be. There are sacrifices that come along with making that decision.” – Kobe Bryant

“I’ve shot too much from the time I was 8 years old. But ‘too much’ is a matter of perspective. Some people thought Mozart had too many notes in his compositions. Let me put it this way: I entertain people who say I shoot too much. I find it very interesting. Going back to Mozart, he responded to critics by saying there were neither too many notes or too few. There were as many as necessary.” – Kobe Bryant

“I focus on one thing and one thing only – that’s trying to win as many championships as I can.” – Kobe Bryant

“I have self-doubt. I have insecurity. I have fear of failure. I have nights when I show up at the arena and I’m like, ‘My back hurts, my feet hurt, my knees hurt. I don’t have it. I just want to chill.’ We all have self-doubt. You don’t deny it, but you also don’t capitulate to it. You embrace it.” – Kobe Bryant

“I’m playing against great players, playing against the best in the world. The competition – that’s what I’ve always wanted.” – Kobe Bryant

On Shaq: “It used to drive me crazy that he was so lazy. You got to have the responsibility of working every single day. You can’t skate through s–.” – Kobe Bryant

“On being forced to retire if his hand fell off: “Even then, you could still play with one hand.” – Kobe Bryant

“After scoring 44 points on 34 shots in 31 minutes during a Lakers blowout loss: “I’d rather not have to do that, but you can’t sit back and watch crime happen in front of you.” – Kobe Bryant

Kobe-Bryant-2

“On LeBron asserting that the 2012-13 Lakers would never experience the level of scrutiny his Miami Heat did: “What does it matter? What does he want, a cookie for that?”  If I go out there and miss game winners, and people say, ‘Kobe choked, or Kobe is seven for whatever in pressure situations.’ Well, [expletive] you.”  The only reason is because you’ve just now lost confidence in yourself.” – Kobe Bryant

“Hi, I’m Kobe Bryant. And I have decided to take my talent to, uh… I have decided to skip college and take my talent to the NBA.” – Kobe Bryant

40th Kobe Bryant Quote – “On Grinnell’s Jack Taylor scoring 138 points in one game: “Would people be celebrating me if I scored 138 points? You know how it is; some people would, some people wouldn’t. They can all kiss my a– as I’m sure he feels the same way. If you score 138 points, you kind of have a license to tell people to f— off.” – Kobe Bryant
41. “All the training and sacrifice just flew out the window with one step that I’ve done millions of times! The frustration is unbearable. The anger is rage.   Now I’m supposed to come back from this and be the same player or better at 35?!? How in the world am I supposed to do that?? I have NO CLUE. Do I have the consistent will to overcome this thing? Maybe I should break out the rocking chair and reminisce on the career that was. Maybe this is how my book ends. Maybe Father Time has defeated me…Then again maybe not!” – Kobe Bryant

“I don’t f— with bees, man. Other than that, I’m not afraid of nothing.” – Kobe Bryant

“It’s an intentional pass to oneself, so it’s an assist. That way people can’t say all I do is shoot.” – Kobe Bryant

“What people see on court is another side of me; it’s not me.” – Kobe Bryant

“Are you willing to push the right buttons even if it means being perceived as the villain? … I’d rather be perceived as a winner than a good teammate. I wish they both went hand in hand all the time but that’s just not reality. … I have nothing in common with lazy people who blame others for their lack of success.” – Kobe Bryant

“One thing you gotta know about me is I have absolutely no filter. I have no problem saying what the hell I think of someone.”  – Kobe Bryant

“My brain . . . it cannot process failure. It will not process failure.  I think that’s almost worse than death.” – Kobe Bryant

“I remember feeling the silence. I remember feeling the fear. I’m like, ‘This could be a wrap.’ And that’s what the silence was. It was like, ‘This could really be a wrap for you.’” – Kobe Bryant

“I had to organize things. So I created the ‘Black Mamba’. So Kobe has to deal with these issues, all the personal challenges. The Black Mamba steps on the court and does what he does. I’m destroying everybody that steps on the court.” – Kobe Bryant

“There’s a choice that we have to make as people, as individuals. If you want to be great at something, there’s a choice you have to make. We all can be masters at our craft, but you have to make a choice. What I mean by that is, there are inherent sacrifices that come along with that. Family time, hanging out with friends, being a great friend, being a great son, nephew, whatever the case may be. There are sacrifices that come along with making that decision.” – Kobe Bryant

“If you’re afraid to fail, then you’re probably going to fail.” – Kobe Bryant

“I’m more than comfortable just sitting back and scoring 21, 22 points or whatever and getting 10, 11 assists whatever the case might be. More than comfortable with that. It’s just a matter of the pieces that you have around you and what you can do to elevate everybody else.” – Kobe Bryant

“Take it all in. Sit back and watch and listen and hear all the hate that’s being thrown at us and remember every person that’s kicking you when you’re down, because next year it ain’t gonna be this way. Appreciate it now. Let it sit in now, because revenge is sweet and it’s quick.” – Kobe Bryant

“The most important thing is you must put everybody on notice that you’re here and you are for real. I’m not a player that is just going to come and go. I’m not a player that is going to make an All-Star team one time, two times. I’m here to be an all-time great. Once I made that commitment and said, ‘I want to be one of the greatest ever’, then the game became everything for me.” – Kobe Bryant

“The people who truly know me know what I’m like. There have been people who try to say things that aren’t fair, and I check them. And then they don’t like me because I checked them.” – Kobe Bryant

“Everyone looks at your watch and it represents who you are, your values and your personal style.” – Kobe Bryant

“The Black Mamba collection of watches is me: It is my alter ego, so to speak. As I mentioned before, it is sharp, cutting edge and sleek which are characteristics I try to apply when I’m out there on the basketball court.” – Kobe Bryant

quote fancy (Kobe Bryant)
https://quotefancy.com/kobe-bryant-quotes


Is it possible to add custom_vms?

Is it possible to add custom VPS, for example Custom VPS Addition! from https://github.com/FleexSecurity/fleex/releases/tag/v2.0

Hey @0xhunster,
You can customize the tools that get installed during the Packer image build process (ax build) by Bringing Your Own Provisioner. There are some configurations such as SSH port on 2266 and username op that are not easily changed since the various ax scripts rely on them. Lmk if that answers your question!
Feel free to join us on discord! https://discord.com/invite/c6BHVfn