?:
Some "freezing-cold-New-Hamshire-Winter" morning metal:
?:
Organization for Flask + React + Typescript + MongoDB using the nifty Blueprints library.
- this project on github is over here
Setup:
Trans: Latin prefix implying "across" or "Beyond", often used in gender nonconforming situations โ Scend: Archaic word describing a strong "surge" or "wave", originating with 15th century english sailors โ Survival: 15th century english compound word describing an existence only worth transcending.
Some "freezing-cold-New-Hamshire-Winter" morning metal:
Organization for Flask + React + Typescript + MongoDB using the nifty Blueprints library.
Setup:
..also, check out the sporadically maintained Terrific Music list too @ /musics :)***
...Despite the ubiquitousness of needing to make a POST request from a browser (or, perhaps for this very reason) there seems to be just as many ways, methods, libraries, and standards of implementing http functions in JavaScript as there are people doing said implementing. Between the adoption of the fetch api in browsers and the prevalence and power of Promises in JS, asynchronous http needn't be a hassle!
/*
...happily processing some data in a browser, when suddenly...
....panik!
you need to complete a portion of this processing elsewhere on some server...:
*/
Or, when life gives you apples, use Linux
Seemingly harder to remove with every eye-glazing gist and thread... A mac plagued with an is_mdm_removable=false
Mobile Device Management profile: the worst! ๐
First, boot into recovery mode by rebooting while holding down the Command
& R
keys.
At this stage, you'll need to connect to the internet briefly to download the recovery OS. This provides a few tools including like disk utility, support, an osx reinstaller- at the top menu, you'll find an option to access a terminal.
Once in there, you'll want to:
Disable SIP:
csrutil disable
Then reboot:
reboot now
While holding down Command
+ Option
+ P
+ R
to start afresh with cleared NVRAM.
Reboot once again while holding down the Command
& R
keys to return to the recovery OS. Reinstall whatever version of OSX it offers- instead of trying to deal with the slippery, network connected DEP plists & binaries contained within the various LaunchAgents
and LaunchDaemons
found in the /System/Library
directories directly, we'll let Apple finish with the ConfigurationProfiles
first, then sneak in and remove them.
While this stuff is cooking, get yourself a usb stick and a penguin, such as Budgie:
wget -nd http://cdimage.ubuntu.com/ubuntu-budgie/releases/20.04.1/release/ubuntu-budgie-20.04.1-desktop-amd64.iso
umount /dev/sdc 2>/dev/null || true
sudo dd if=ubuntu-budgie-20.04.1-desktop-amd64.iso of=/dev/sdc bs=1048576 && sync
Boot up again, this time holding the Option
key for the bootloader menu. Once in the live usb system, make sure you can read Apples HFS filesystem:
sudo apt-get install hfsprogs
For me at least, I needed to run a quick fsck
to fix up the headers before I could mount the osx filesystem living at /dev/sda2
(sda1
is the efi
partition):
sudo fsck.hfsplus /dev/sda2
Now, lets go in there and remove those ConfigurationProfiles:
mkdir badapple
sudo mount -o force /dev/sda2 badapple
cd badapple
sudo rm -rf private/var/db/ConfigurationProfiles/*
๐
Hmmmm.....
...In the mean time...
./OpenCore-Boot.sh:
#!/usr/bin/env bash
# setup tap0 if haven't already for $session:
sudo ip tuntap add dev tap0 mode tap
sudo ip link set tap0 up promisc on
sudo ip link set dev virbr0 up
sudo ip link set dev tap0 master virbr0
REPO_PATH="./"
OVMF_DIR="."
args=(
-enable-kvm -m 24000 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check
-machine q35
-smp 4,cores=2,sockets=1
-device usb-ehci,id=ehci
-device usb-kbd,bus=ehci.0
-device usb-mouse,bus=ehci.0
-device nec-usb-xhci,id=xhci
-device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
-drive if=pflash,format=raw,readonly,file="$REPO_PATH/$OVMF_DIR/OVMF_CODE.fd"
-drive if=pflash,format=raw,file="$REPO_PATH/$OVMF_DIR/OVMF_VARS-1024x768.fd"
-smbios type=2
-device ich9-intel-hda -device hda-duplex
-device ich9-ahci,id=sata
-drive id=OpenCoreBoot,if=none,snapshot=on,format=qcow2,file="$REPO_PATH/OpenCore-Catalina/OpenCore-nopicker.qcow2"
-device ide-hd,bus=sata.2,drive=OpenCoreBoot
-device ide-hd,bus=sata.3,drive=InstallMedia
-drive id=InstallMedia,if=none,file="$REPO_PATH/BaseSystem.img",format=raw
-drive id=MacHDD,if=none,file="$REPO_PATH/mac_hdd_ng.img",format=qcow2
-device ide-hd,bus=sata.4,drive=MacHDD
-netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27
-vga vmware
)
qemu-system-x86_64 "${args[@]}"
Check out this project on my Github over here ๐
Chrome remote desktop is fantastic, but often clashes with Xorg nuances from a variety of desktop environments in Ubuntu. This chrome-remote-desktop
script extends and replaces the version automatically installed by Google in /opt/google/chrome-remote-desktop/chrome-remote-desktop
. This stuff is only relevant for accessing your Ubuntu machine from elsewhere (e.g. the "server", the client machine should not be installing anything, all it needs is a web browser).
Set up the server:
Before patching anything or pursuing other forms of delightful tomfoolery, follow the installation instructions provided by Google. Set up everything normally- install Google's .deb download with dpkg, set up a PIN, etc.
The trouble comes when you are trying to remote in- some problems you may encounter include:
Patch it up:
# get this script:
# wget https://raw.githubusercontent.com/Jesssullivan/chrome-remote-desktop-budgie/master/chrome-remote-desktop
# or:
git clone https://github.com/Jesssullivan/chrome-remote-desktop-budgie/
cd chrome-remote-desktop-budgie
# behold:
python3 chrome-remote-desktop
# ...perhaps, if you are keen (optional):
sudo chmod u+x addsystemd.sh
sudo ./addsystemd.sh
What does this do?
We are primarily just enforcing the use of existing instances of X and correct display values as reported by your system.
/usr/local/bin/
in addition updating the one executed by Chrome in /opt/google/chrome-remote-desktop/
. /usr/local/bin/chrome-remote-desktop.github
, and will let the user know if there are updates. /opt/
too as chrome-remote-desktop.verbatim
. chrome-remote-desktop
will always make sure it is where it should be, even after Google pushes updates and overwrites everything in /opt/
.....Updated 07/19/2020
Bits & bobs, this & that of late:
...In effort to thwart the recent heat and humidity here in the White Mountains (or, perhaps just to follow the philosophy of circuitous overcomplication... ๐ ) here are some sketches of quick-release exhaust fittings of mine for a large, wheeled AC & dehumidifier unit (these have been installed throughout my home via window panels).
![]() |
---|
...Sketching out a severely overcomplicated "computer shelf", rapid-fab style:
(plasma cut / 3d printed four-post server rack == RepRapRack?? xD) ๐
...Also, Ryan @ V1Engineering recently released his new MPCNC Primo here, should anyone be keen. Long Live the MPCNC! ๐
...Oodles of fun everyday over in the clipi
project- check it out!
xD
Find this project on my github here!
...post updated 07/19/2020
An efficient toolset for Pi devices
Emulate, organize, burn, manage a variety of distributions for Raspberry Pi.
Emulate:
clipi
virtualizes many common sbc operating systems with QEMU, and can play with both 32 bit and 64 bit operating systems.
clipi
will handle the rest.Organize:
clipi
builds and maintains organized directories for each OS as well a persistent & convenient .qcow2 QEMU disk image.
clipi
cleans up after itself under the Utilities...
menu. Write:
clipi
burns emulations to external disks! Just insert a sd card or disk and follow the friendly prompts. All files, /home
, guest directories are written out.
/boot
in the freshly burned disk. /boot
too. clipi
provides options for writing from an emulation's .qcow2
file via qemu... verbatim
argument Manage:
clipi
can find the addresses of all the Raspberry Pi devices on your local network.
clipi
can install itself as a Bash alias (option under the Utilities...
menu, fire it up whenever you want. Shortcuts:
Shortcuts & configuration arguments can be passed to clipi
as a .toml (or yaml) file.
# <shortcut>.toml
# you can access the same tools and functions visible in the interactive menu like so:
'Burn a bootable disk image' = true
# same as selecting in the interactive cli
'image' = 'octoprint'
'target_disk' = 'sdc'
clipi
exposes many features only accessible via configuration file arguments, such as distribution options and emulation settings.# <shortcut>.toml
# important qemu arguments can be provided via a shortcut file like so:
'kernel' = "bin/ddebian/vmlinuz-4.19.0-9-arm64"
'initrd' = "bin/ddebian/initrd.img-4.19.0-9-arm64"
# qemu arguments like these use familiar qemu lexicon:
'M' = "virt"
'm' = "2048"
# default values are be edited the same way:
'cpu' = "cortex-a53"
'qcow_size' = "+8G"
'append' = '"rw root=/dev/vda2 console=ttyAMA0 rootwait fsck.repair=yes memtest=1"'
# extra arguments can be passed too:
'**args' = """
-device virtio-blk-device,drive=hd-root \
-no-reboot -monitor stdio
"""
# additional network arguments can be passed like so:
# (clipi may automatically modify network arguments depending on bridge / SLiRP settings)
'network' = """
-netdev bridge,br=br0,id=net0 \
-device virtio-net-pci,netdev=net0
"""
Supply a shortcut file like so:
python3 clipi.py etc/find_pi.toml
take a look in /etc for some shortcut examples and default values
bridge networking things:
kernel stuff:
automate ramdisk & kernel extraction-
most functions to do so are all ready to go in /kernel.py
other random kernel todos-
gcp-io stuff:
formalize ddns.py & dockerfile
make sure all ports (22, 80, 8765, etc) can up/down as reverse proxy
# clone:
git clone https://github.com/Jesssullivan/clipi
cd clipi
# preheat:
pip3 install -r requirements.txt
# (or pip install -r requirements.txt)
# begin cooking some Pi:
python3 clipi.py
Open Source Summit + Embedded Linux Conference!
Jess's Monday:
In other tangents...
....Dover Microsystem's Genesys 2 FPGA is moving into it's new home, v6:
....A quick polyphase hub motor sketch around a Toyota wheel bearing:
© 2023 Trans Scend Survival
Theme by Anders Noren — Up ↑
Chit Chat