Skip to content

Instantly share code, notes, and snippets.

View rm77's full-sized avatar
💭
(to be) or not (to be) = (to be)

Roy rm77

💭
(to be) or not (to be) = (to be)
  • surabaya, indonesia
View GitHub Profile
@jfeilbach
jfeilbach / firefox_snap.md
Last active October 20, 2025 02:16
Ubuntu 24.04 remove Firefox snap and install .deb version

Ubuntu 24.04 Firefox snap replacement

I need a proper Firefox installation and not the snap version. The snap version does not work properly with Smart Cards. Although it seems to be possible to get it to work with smart cards it is extremely difficult and I don't care to try and make it work. This is not a tutorial on how to get your PIV or CAC to work. Also snaps suck. Canonical will heopfully abandon snaps in the future.

Remove Snap Firefox

sudo snap disable firefox
sudo snap remove --purge firefox
error: cannot perform the following tasks:
- Remove data for snap "firefox" (1943) (unlinkat /var/snap/firefox/common/host-hunspell/en_ZA.dic: read-only file system)
@lidgnulinux
lidgnulinux / Alpine_Linux_minirootfs_install.md
Last active September 5, 2025 11:38
Install Alpine Linux Via Minirootfs Archive.

Install Alpine Linux Via Minirootfs Archive.

Prerequisites.

  • Any live usb bootable.
  • Alpine Linux minirootfs archive, we can get it here. We can choose alpine-minirootfs-3.20.2-x86_64.tar.gz.
  • Some partitions, for root system (/), efi (if you have uefi machine) and swap (optional).
  • Basic commandline knowledge.

Steps.

@megadix
megadix / jfif_to_jpg.py
Created May 17, 2024 06:33
Python script to convert JFIF images to JPEG - useful for images generated by Image Creator from Microsoft Bing
# Prerequisites:
# 1. Python 3.x
# 2. Pillow library (PIL fork)
# pip install pillow
import os
import sys
from PIL import Image
dir_path = None
@morgangiraud
morgangiraud / multi-gpu.sh
Last active October 10, 2025 21:06
Script for Ubuntu: Nvidia Multi-GPU Installation and Testing
# Script for Ubuntu: Nvidia Multi-GPU Installation and Testing (Adaptable for other distros)
# Step 0: Clean Nvidia Installation
# If you need to completely remove a previous Nvidia installation, use these commands.
# This ensures that you start with a clean slate for a new installation.
sudo apt-get --purge remove "*nvidia*"
sudo apt-get --purge remove "*cuda*" "*cudnn*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*" "*libnccl*"
# Verify that the removal is complete by checking if any Nvidia, CUDA, or cuDNN packages are still installed.
apt list --installed | grep cuda
@tejasraman
tejasraman / chromeos-win-qemu-guide.md
Last active September 29, 2025 02:13
Install ChromeOS in QEMU (Windows)

Installing ChromeOS Flex (hardware accelerated) on QEMU for Windows

A word of warning. This will be slow and buggy. Do not attempt to use this as a daily driver.

Requirements:

  • Windows 10 or 11 (x64)

Download Files:

  • Download QEMU
  • Download ChromeOS Flex (remember to download the file; do NOT use Chromebook Recovery Utility)
@tanaikech
tanaikech / submit.md
Created October 30, 2022 23:31
Workaround: Checking Existence of File ID in Google Drive without Access token and API key

Workaround: Checking Existence of File ID in Google Drive without Access token and API key

This is a workaround for checking the existence of file ID in Google Drive without both the access token and API key.

When you want to check whether the file of the file ID is existing in Google Drive, generally, you might use Drive API and Drive service (DriveApp) of Google Apps Script. In this case, the scope of Drive API is required to be used. By this, the access token and the API key (in the case of publicly shared files) are required to be used. But, there might be a case that the available scopes are limited. In this post, I would like to introduce a workaround for checking the existence of file ID in Google Drive without both the access token and API key.

Workaround: curl

In this workaround, the thumbnail link like https://drive.google.com/thumbnail?id={fileId} is used. Ref In this case, when the file ID is existing, the sign-in page with the status code of `200

@plembo
plembo / createkvmstoragepool.md
Last active November 13, 2024 17:38
Create the default KVM storage pool for images

Create the default KVM storage pool for images

Some distributions create the defaut KVM (libvirtd) storage pool for images when they install KVM, others do this upon the creation of the first KVM guest. Creating the default pool from scratch is pretty straightforward. Here's how to do it with virsh.

First verify there is no existing default pool:

$ virsh pool-list --all
 Name      State    Autostart
-----------------------------
@theprojectsomething
theprojectsomething / An Ubuntu WiFi Secure Captive Portal.md
Last active July 11, 2025 14:03
Guide: An Ubuntu WiFi Secure Captive Portal: Network Manager / DNSMasq / HA Proxy / Let's Encrypt

An Ubuntu WiFi Secure Captive Portal

Improvements, suggestions & fixes are welcome!

Captive portals can be a pain. Here's an opinionated and no-doubt entirely imperfect guide to setting one up for a WiFi access point on Ubuntu (tested on 20+), utilising Network Manager, DNSMasq, HA Proxy and (optionally) Let's Encrypt for a secure, locally hosted landing page.

_Note: This setup was originally designed for an offline WLAN, providing access to a small number of locally hosted domains ... think the WiFi media portal on a flight or boat. If you are looking to provide internet access behind a captive portal then this guide won't get you all the way there. That said, many routers have this capability built in, as do any number of open source router firmware solutions. So you probably don't need to roll your own. If you'd like to try anyway, Ha Proxy Stick Tables would probably come in handy. Very happy to update the guide with any p

@nitred
nitred / optimal_mtu.md
Last active October 30, 2025 17:08
Wireguard Optimal MTU

About

  • I faced bandwidth issues between a WG Peer and a WG server. Download bandwidth when downloading from WG Server to WG peer was reduced significantly and upload bandwidth was practically non existent.
  • I found a few reddit posts that said that we need to choose the right MTU. So I wrote a script to find an optimal MTU.
  • Ideally I would have liked to have run all possible MTU configurations for both WG Server and WG Peer but for simplicity I choose to fix the WG Server to the original 1420 MTU and tried all MTUs from 1280 to 1500 for the WG Peer.

Testing

  • On WG server, I started an iperf3 server
  • On WG peer, I wrote a script that does the following:
    • wg-quick down wg0
  • Edit MTU in the /etc/wireguard/wg0.conf file
@DavidVentura
DavidVentura / tap-linux.py
Created August 2, 2021 21:18 — forked from makcuk/tap-linux.py
A simple python tun/tap udp tunnel example
# Simple linux tun/tap device example tunnel over udp
# create tap device with ip tuntap add device0 tap
# set ip address on it and run tap-linux on that device and set desitation ip
# run same on another node, changing dst ip to first node
import fcntl
import struct
import os
import socket
import threading