Now that this eclipse is behind us, we are thankful that we didn’t end up like Guillaume Le Gentil, and we are naturally looking to the next eclipses. The next American eclipse is in 2045.
Tag audio files / sheet music images to relate the audio to the location on the sheet music. Kinda like a Karaoke lyrics read-out but advanced and customizable for musicians / music students.
As a lifelong music learner, I view sheet music while playing as a crutch that probably hurts musicianship in the long-run. However, sheet music while listening I view as a major enhancement that could especially help kids learn music the same way they learn language, by mass exposure. Following sheet music while listening brings meaning to hours of listening and helps a person’s brain assign value to understanding the notes they hear while they listen. It can help a person “develop their ear.”
“Chess Arena” using camera with software board recognition and Stockfish chess engine to analyze the games for an audience on a screen facing away from the players. Enhance in-person chess.
Scrabble remote using camera with software board recognition.
Fully-connected house with
Automated windows up and down.
Fully-automated lights.
Security system that stores footage on the LAN with fully open-source video storage code. No subscription with high-def storage not reliant on SLOW internet upload limits. (This does not exist because companies make money on security subscriptions).
Temperature monitors throughout the house.
OstranderNet. A second internet. There shouldn’t be just one.
Limited bandwidth. Start by transmitting chess games.
Completely wireless using amateur radio bands.
‘All equipment runs from 12V. Car batteries. Apocalypse-ready.
Done. Wordle Scratchpad. Front-end practice. Model / View / Controller architecture. Python with tkinter is one-install set-up to start coding with powerful language.
Ongoing. Model number decoder et cetera (work project)
Done. Buyouts and drawings search tools (work project)
Secure text app like Signal with:
Annual / monthly / daily customizable word limits on group chats (with suggestions and holiday-specific text allowances).
Maybe a regular text message app that works with SMS / MMS that auto-replies to groups that go over a certain limit. Spam the spammers.
The post-industrial house will solve the following domestic problems and maximize the following healthy ways of living.
Fresh air should be maximized.
The “un-building” house: start all planning with the assumption that we live outside and favor outdoor living unless necessary to be indoors. Assume that the outdoors is a good thing and try to not block it if possible, for example:
Need heat in the winter. Best kind of heat is a small cozy space with body heat. Can heating be compartmentalized into a small center of the house?
Keep bugs out. Screens do this without blocking the rest of the outdoors. A breeze is pretty effective against bugs but too much breeze could be annoying all the time.
Houses with opaque well-insulated walls are great if you assume you want to completely control the indoors and live in a controlled environment, but they almost totally sacrifice fresh air. Walls block breezes. Walls get hot in the sun and bake the indoors all night long even when it is cool outside. Roofs prevent sunlight from sanitizing and drying the indoors.
How to minimize how “indoor” the house is?
Completely compartmentalize the “indoor” aspect of the house?
Disinfecting sunlight should be maximized especially in bathrooms.
There should be so much airflow in bathrooms and laundry areas that anything in those areas dries quickly.
Should be outdoor space for a clothes line near the laundry, preferably with some cover that allows sunlight but not rain.
Shower curtain against bath tub mold build-up: how has this problem not yet been solved?? (besides dripping the shower liner onto the floor outside the tub or replacing the shower liner every few months). There must be airflow and sunlight or there will be mold!!
Outdoor shower is nice but good to do something to control mosquitos around it.
All sides of the house should receive some direct sunlight.
During the winter day, the house should be able to collect and store as much heat from the sun as possible when available.
Wood stove? (more efficient than wood-burning insert into existing fireplace).
Address humidity if possible. Dry air is usually just accepted in the winter, but is there a way to naturally or easily have the air a little bit more humid in the winter?
Personal humidifiers, OK.
What about compartmentalizing the house somehow so the human warmth collects in a cozy way, i.e. cozy small room effect? At least for sleeping areas.
During the summer night, should be able to cool off as quickly as possible and drain heat reservoirs to collect excess heat during the day. House should feel like a large shade tree on a breezy summer afternoon – (NOT like the inside of a refrigerator).
Remember to address humidity. Humidity is half of the comfort and convenience equation but is usually treated as an afterthought.
Should be able to completely shade itself on the exterior, independent of trees.
Or using strategic trees.
Large eves are nice and simple design for shade and protect the side of the house. Movable eves?
Canopies over windows?
Should be able to leave the windows open during summer rainstorms, while still addressing the following issues:
Security of having windows open.
Screens should prevent bugs from entering, plus a system to eliminate the bugs that get through.
Convenient window coverings should not get in the way of opening and closing the windows. Automated windows would be nice (cars have them!) except when they fail, which they would, so they should just be easy to open and close.
There should be outdoor space on the roof, or above the house somewhere. Like a rooftop bar with a view of whatever is around doesn’t matter rooftop is cool.
There should be ample shade / rain cover just outside the house near the kitchen for meals outside.
Build house around a central courtyard area? Build in a horseshoe shape?
The hot water tank should be near the hot water faucets. Waiting for hot water is hot water wasted and time wasted. (I am opposed to tank-less water heaters, they just aren’t that great.)
Independent water treatment system for healthy drinking water, nice skin, and prevent mineral deposit build-up.
Completely separate heated exterior space with garage door, ~14 x 22 feet ~ one-car garage size. Bicycle storage plus.
Carport! A simple cover over the car keeps the snow off in the winter, prevents most of the rust from being rained on all the time and prevents sun damage. A garage is unnecessary but a carport is necessary.
Location location location. There should be good people, good government, good parks, libraries, town center within biking distance.
~1407 sqft. 3 bedroom, 1 1/2 bathroom. Kitchen, dining, living room. Large closet in the master bedroom. Laundry, clothes line area, outdoor shower all connected.
2-story with bedrooms upstairs, or ranch?
2-story pros: rooftop bar higher. Bedrooms separate from living area. Smaller footprint / basement requirement. More cube-like for less exterior walls (more efficient?)
Ranch pros: no stairs. Everything connected.
Maintenance convenience:
All (or most) plumbing and electric – especially plumbing – should be accessible from a basement or with known and marked access points.
While some things will be automated, automation should be limited and control should be centralized with systems accessible for maintenance and upgrades.
There should be a large Time v3 timekeeping device prominently displayed in the post-industrial house.
Git can be a little intimidating at first because it has the power to change the files you are working on, so it’s good to start with commands that don’t do anything to get a feel for the situation before you actually do something.
git config --list
Shows useful information about the current repository. Shows the remote.origin.url variable for example.
git config --get remote.origin.url
Shows just the url associated with local git repository.
git config --list --show-origin
Shows ___.
git status
Probably the most common git command.
git diff
To see changes since the last commit. Or
git diff > gitdiff.txt
for a text file of the information.
ls -al ~/.ssh
To check for SSH keys (on Linux only I think).
git log --oneline
Is useful to see all the commits in a row with their commit messages. Or
git log --oneline --decorate --graph --all
for more detailed information.
git log -p filename.py > log.txt
Makes a file with the entire change history of filename. The -p is patch text. This is great for resurrecting “lost portions” of code and replaced the file I used to keep: “unused code.txt”
git branch -v -a
Lists all the branches including remotes, with the current branch highlighted in green plus an asterisk.
git branch --show-current
Shows just the current branch.
git tag -n1
Says to list all the tags and show 1 line of annotation per tag. Default is 0 lines of annotation.
git ls-tree -r trunk --name-only
Initial Set-Up Commands and Connecting to GitHub
Notice above command to check for existing keys.
The first step is establishing an SSH key on the machine to be connected to GitHub then copy the public key to GitHub. This is a pretty good description of how to do that. Notice Git bash in Linux is just the command line of a Linux machine with Git installed while on Windows you have to open the Git bash executable for a Git-specific terminal.
& 'C:\Program Files\Git\bin\sh.exe' --login
to open the Git command line.
git clone git@github.com:rr34/Astro.git
Notice the format of the remote url determines SSH versus https transfer. The above format is for SSH, which is required to commit changes because password identification was disabled for committing changes.
To initialize, navigate to the directory where your code is stored, and:
git init
to initialize git tracking of the directory.
git add
to add files. You can add one at a time to be selective or
? how to add all the files in the directory, then ignore?
To rename a file, use git to rename it instead of renaming it manually. This allows git to track the rename instead of appearing to be “delete and add new.”
Deleting a File
git rm filename
To delete a file, use git to allow git to track the deletion. Don’t do it manually or it just shows up missing.
Revert a Single File to an Old Version
git checkout <commit ID> filename
There are various ways to do this (restore and revert maybe?) but I did it once like this and it worked. You have to be OK with losing any work in that file since the last commit. The point is it doesn’t affect the other files.
Branching
git branch <new-branch-name>
To create a new branch.
git switch <new-branch-name>
To switch to a different branch (same as the still-valid git checkout <new-branch-name>)
git checkout -b new-branch-name
To create a new local branch and switch to it in one command.
Had I really not published this post before? Here is my speculation on what will cause the (next) apocalypse / collapse of civilization. In order of likelihood:
Apathy: the builders of society get bored when we can’t reach new highs and we just let it go. Like a little boy playing with Legos, the world is built by men. How long does a Lego structure last? The bigger it is the funner it is to destroy. How long does a dollhouse last within sight of a young boy? We should enjoy our tower while it stands!
Zombies: zombies have already caused one apocalyptic civilization collapse. The only question remaining is, could they end us entirely?
Disease*: disease is ancient and kills by numbers even bigger than millions or billions. Disease kills by the percentage of population. Disease is our most ancient enemy and far-underrated as it is invisible and not glamorous or sensational.
Nuclear war: nukes are powerful and most people don’t even realize how powerful. Fusion bombs make Hiroshima and Nagasaki look tiny.
EMP: again I think it’s optimistic to believe we will last long enough for an electromagnetic pulse to get us. Plus, one-time catastrophes like an EMP are sensational but not nearly as crushing as grinding sickness that can slowly erode resolve over years, decades, centuries.
Flood, Earthquake, Asteroid, Volcano, Fire, Storm: wouldn’t be the first time for some of these, but could any of them really take us out? An asteroid certainly could, but it’s pretty sensational.
*COVID has brought disease to our attention but the COVID response has mostly highlighted our unprecedented inability to actually do something. Lose weight? Strengthen ourselves in the face of disease? None of that. This could be a wake-up call to get healthy.
getent group or getent group | grep searchsomething
To get the status, including rules being enforced, of the uncomplicated firewall:
sudo ufw status
To list all processes currently running;
ps aux | grep searchsomething
To find a particular file or directory from among all files:
sudo find / -name "searchsomething"
or for directory name search only:
sudo find / -type d -name "searchsomething"
To search for specific text within the files within the current directory:
grep -nr 'searchsomething*' .
$ is the normal prompt for commands
# is the system administrator prompt
in the C shell, the prompt ends with %
> is used to send the output to a text file. >> is used to append the output to an existing text file without over-writing.
$VARIABLE_NAME is a variable
apt combines apt-get and apt-cache and it is newer. Use apt.
sudo apt update && sudo apt upgrade -y
To install Python packages, use apt only if you want to install directly on the machine, otherwise use pip. Pip installs modules slower, but installs the latest versions, and most importantly works within a virtualenv. In the special case of Raspberry Pi, use apt because it knows the unique processor architecture and installs the correct builds of modules.
script savedcommands.txt
A .sh file is an executable shell script. # to comment within
./ is used to specify the current working directory especially when running something that could be the same as a system command.
nano is the basic user-friendly text editor.
To view $PATH, echo "${PATH//:/$'\n'}" or just echo $PATH
To edit $PATH for the current session, export PATH='/new/directory:$PATH'
> sends command output to a file. >> appends the output to a file without overwriting existing contents.
ls -al shows all files in directory including hidden
What the following does: download source code, unpack it, make directory ~/.localpython to install into, run the configuration file setting install going to install folder, compile, install compilation, create a virtualenv pointing to the install, switch to the virtualenv to use it:
Note the venv folder stores neither the Python installation nor your code for your project. It is only used to store version information about the Python installation used for your project.
sudo passwd (change from default as desired for security)
sudo raspi-config
Set up location, time zone, language, keyboard, Wi-Fi, SSH. Turn off Bluetooth? How?
python --version
>> Python 3.9.2
sudo apt install python3-pip – for the Raspberry Pi, it is better to not use pip because it installs software not compiled for the Pi (the Pi Zero ISA is ARMv6l).
sudo apt install python3-numpy
sudo apt install python3-astropy
Note! Astropy installs this one. Not the rc2 or any of the other ones.
sudo apt install python3-pyerfa (installs with Astropy – I think)
sudo apt install python3-pyyaml (installs with Astropy – I think)
sudo apt install python3-packaging (installs with Astropy – I think)
sudo apt install python3-astroplan
sudo apt install python3-pytz (installs with Astroplan)
The Raspberry Pi Zero W is 32-bit and uses ARMv6 instead of the newer ARMv7. The [biggest? only?] difference is in how the processor handles floating point operations.
The Raspberry Pi Zero 2 W is 64-bit.
The Raspberry Pi OS version 11 – the latest version still – is 32-bit. A 64-bit Raspberry Pi OS is in development but not available yet.
To check the version of Raspberry Pi OS installed, cat /etc/os-release.
Python
Python comes already installed with the Raspberry Pi OS. To verify, type python --version. You could install if necessary with sudo apt install python3.8x.
sudo apt update is also a good command to run.
PyCharm on Linux
Pycharm is a the most popular Python editor.
NEVERMIND Develop on Windows, then put the program on the Raspberry Pi after. Or Develop directly on the Pi? Seems like develop on Windows is the best option.
The PyCharm install comes packed as a .tar and compressed as .gz, so .tar.gz. Decompress the file with gzip -d filename.tar.gz, then unpack it with tar -xvf filename.tar. This will create a directory of the same name as the .tar file.
Linux comes with both gzip and tar installed so the commands work right away.
Once unpacked, you can run PyCharm by navigating to the bin folder, in my case /etc/pycharm-community-2018.3/bin and type ./pycharm.sh. You need Java to run it, so …
On Ubuntu, to get latest python, sudo add-apt-repository ppa:deadsnakes/ppa, then sudo apt update && sudo apt upgrade -y. To see if a version is available, apt list | grep python3.10
2021 Dec – Astropy and Astroplan Notes
Root a Smartphone – Option for an appropriate processor?
Navigate to About Phone -> Build Number. Tap Build Number 7x for Developer Mode.
Under settings, there will be a new option called Developer Options. Within Developer Options, enable OEM unlocking.
Some useful apps for rooting and installing Linux are
Miniconda 3.5.5 installs Python 2.7.7. Python 2.7.7 was released in Jun 2014 (same month as Miniconda 3.5.5)
The Miniconda installation instructions specifically say you can leave Python installed do not remove it (see link below under Miniconda).
Astroplan uses the Python package Numpy. Use either the Linux command pip3 list, or python -c "import numpy; print(numpy.__version__)" to find the Numpy version installed.
I have Numpy 1.19.5. Is that because the legacy Miniconda installed it or because of the Python 3.9.2 installed on the Raspberry Pi OS? I think it’s the Python 3.9.2 from the OS.
On my first test with Astroplan (and Astropy) I had a Numpy error that sent me to this link. The correction was sudo apt-get install libatlas-base-dev. I also updated Numpy with pip3 install numpy --upgrade and it upgraded to Numpy 1.21.5
Miniconda (a Python Distribution)
Astroplan highly recommends to be installed using Conda rather than by manually installing Python and required packages.
Both Anaconda and Miniconda are Conda and Conda is a Python distro. Miniconda is Python plus data science tools. Anaconda is Minconda plus a GUI and more tools.
Do you have to remove existing Python to install Conda? No, you can leave Python installed. But for a legacy Miniconda install with the latest Python? May be an issue?
Legacy Miniconda downloads here. For the Raspberry Pi Zero W (1st gen, which is an ARMv6 processor), I found just one ARMv6 version from the long list of legacy Miniconda installs: Miniconda-3.5.5-Linux-armv6l.sh.
For the conda command to work, an appropriate line has to be added to the .bashrc and .bash_profile files. The install does it automatically, BUT: I installed Miniconda into /etc/miniconda and in order to do this, I installed it as root user and because of that, the conda command only worked if I opened the terminal as the root. Of note, once I switched to root and back to pi in the terminal, the conda command still worked as pi. /home/username/.bashrc is for “non-login” shells. /home/username/.bash_profile is for “login” shells
Astropy 0.3.0 is what Miniconda 3.5.5 installs. This is a much earlier version than I would have expected. Astropy 0.3 was released in Nov 2013.
Astropy 0.4 was released in Jul 2014. Therefore Astropy 0.3 was the latest version when Miniconda 3.5.5 was released and is probably why Miniconda 3.5.5 installs with Astropy 0.3.
Astropy v1.2 requires Python v2.7 or later and Numpy 1.7.0 or later.
Astropy v1.3: “vectors and coordinates can be reshaped like arrays.”
Astropy v2.0.0 started to implement Python 3 but specifically says does not change functionality with Python 2. However, from 2.0.0 to 2.0.18, Python 2 was gradually phased out.
Astropy v3.0 is the first version that supports only Python 3.
I think I want Astropy v1.3 – unless it won’t run for some reason. Why does Miniconda 3.5.5 install Astropy 0.3.0? Was it the current Astropy at the release time? Answer: yes, it was. Do the newer Astropy versions require newer ISA? At some point, I got a “need ARMv7” error so probably.
However, also unexpectedly, it updates Python from 2.7.7 to 2.7.8. Python 2.7.8 was released in Jul 2014.
Astroplan
2021 Jun – Set up Linux, Apache, MySQL, PHP Server, LAMP Stack
A Server is a Physical Computer
There are various types of servers, but they all consist of a physical computer somewhere. This tutorial shows how to set up a server first with the simplest of physical devices you can have in your home for less than $20 and side-by-side with how to do it in its more abstract – and more common – form, a VPS (virtual private server) you can rent from a hosting service.
The two procedures are very analogous. Seeing them side-by-side helps make concrete what you are actually doing even though sometimes you can’t physically see it.
Server 1. Raspberry Pi Zero W Running Raspberry Pi OS (Debian, a flavor of Linux)
Can be purchased many places, such as Microcenter or Amazon.
Server 2. VPS (Virtual Private Server) Running Ubuntu 20.04 (a flavor of Linux)
I purchased a VPS from Hostwinds. There are various operating systems available. I used Ubuntu 20.04.
Connect to Your Server over a Network (or the Internet)
Connect Via Secure Shell (SSH)
I SSH login using the MobaXterm SSH Client. The server is usually a remote computer to which you do not have physical access, so instead of plugging in a keyboard, mouse and screen, you establish a connection that gives you access to the server’s command prompt. SSH stands for secure shell, meaning the data you transfer between your computer and the server are encrypted. SSH is enabled by default in Ubuntu, but not all Linux flavors.
Connect the Raspberry Pi Zero to your LAN. There is a way to do this with command line but the Raspberry Pi OS connects to WiFi on the initial startup, so just do it on initialization. If you want, to view the saved password with the command line to know generally where WiFi passwords are stored, use
sudo grep psk= /etc/wpa_supplicant/*
which searches the appropriate directory for “psk=” and you see the stored WiFi keys.
Enable SSH. SSH is not enabled by default with Raspberry Pi Zero. Many tutorials tell you to add a blank file to the /boot folder called SSH (no extension at all). Use the command touch ssh, then reboot. If you do this, notice once SSH is enabled then the file gets deleted so you will not see any change other than the SSH login should work.
Or enable SSH by: in the raspberry pi terminal window, enter sudo raspi-config, select Interfacing Options, SSH, enable it.
2. Ubuntu
Must install openssh-server. Use sudo apt install openssh-server. Check status after install with sudo systemctl status ssh.
Find the Raspberry Pi’s own IP address in the command line with ip add or ip addr or ifconfig. The IP will show after wlan0: inet __.__.__.__ Within a LAN, it is often something like 192.168.1.* Alternatively, you can type your router’s IP into your browser and view a list of connected devices. Or, use nmap, sudo apt install nmap and the command sudo nmap -sn 192.168.1.0/24 (without sudo you won’t see all the MAC addresses)
2. VPS
On a VPS, SSH is (should be) enabled by your host to allow the purchaser to access it. You will get a default username and password from the hosting service who established the VPS with its default settings.
In MobaXterm, “Remote host” is where you specify the IP address of your server, available in your Hostwinds account.
The username is “root”
The password is whatever you set in Hostwinds
Useful Linux Commands
At this point, you are using Linux. Either Raspberry Pi OS or Ubuntu are “flavors” of Linux. Having a list of basic commands is helpful:
Create Non-Root Super-User
This step appears complex and does not appear necessary especially this early in the process. Strictly speaking, it is indeed not necessary. You could skip this step and do everything as the root or default user that already exists. However, it is best to do this now because:
to do things in the right order
to highlight an important aspect of the Linux OS: that Linux is very user-specific and permissions-based. This makes Linux less intuitive at first but makes it secure enough to be accessed by many different anonymous people as a server without allowing hackers to access sensitive parts of the server.
to avoid inevitable frustration later. Using Linux you will see “permission denied” errors periodically throughout your experience and you are better off expecting and troubleshooting them than believing that Linux is just annoying. Permissions are built-in to Linux from the ground up and it’s best to work with it rather than try to ignore it.
Logging in as a non-root user is safer. For example, some installations of Ubuntu default to external root login disabled, which means for a remote server you would be locked out if this were set and you don’t have another user to login as.
sudo adduser new_username
usermod -aG sudo new_username
Change the password for the current user as desired with:
passwd
Grant all privileges to the user with the command
sudo visudo
and add a line in the /etc/sudoers file below the root user line: new_username ALL=(ALL:ALL)ALL
This only allows the user to give itself privileges. The user does not have all read/write privileges like the root itself. Log in as the new user through SSH.
Optional: Update Operating System
1. Raspberry Pi OS
sudo apt update is the Debian update command (Raspberry Pi OS is based on Debian).
2. VPS
Update Ubuntu (only required if there is a new version of Ubuntu).*
*First, be sure you can login as the non-root super-user before updating Ubuntu as the new install will default to not allow root login. This means if you were planning to just use the existing root user with infinite powers you are now infinitely locked out of your own VPS and have to have your host re-initialize it. Your VPS host changed this setting when it set up your VPS so you can login but when you update the Ubuntu OS, the OS returns to the OS default which is to not allow SSH root login! This is a GREAT example of why to do the user basics as the very first step.
sudo do-release-upgrade
Update the advanced package tool:
sudo apt-get update (without the -get is newer, so I use it)
sudo apt update
Install the “L-A-M-P” Programs
L: Linux, already installed. I used 20.04.
A: Apache. The Apache2 default site appears immediately by typing server IP address in browser.
sudo apt install apache2
P: php
sudo apt install php php-mysql
sudo reboot
php -v
You can test php functionality by making index.php file in the /html/ directory and visiting the file in a browser:
<?phpphpinfo();
M: MySQL. Mariadb seems to be the most widely-used version of MySQL, so I installed mariadb instead of the standard MySQL. The XAMPP controller that establishes localhost for developing uses mariadb. Mariadb is a version of MySQL.
sudo apt install mariadb-server
(I don’t think this was necessary) Enable mysqli in /etc/php/7.2/apache2/php.ini by removing comment ‘;’
extension=mysqli ; nate enabled this
also:
sudo phpenmod mysql
To login to MySQL from the Linux command prompt:
sudo mysql -u root or mysql -u username -p
From the MySQL command prompt, which is “MariaDB” – a version of MySQL, same thing, various self-explanatory commands:
MariaDB [(none)]> CREATE user 'new_username'@'localhost';
SELECT user, host, authentication_string FROM mysql.user;
DROP user 'new_username'@'localhost'
CREATE USER 'new_username'@'localhost' IDENTIFIED BY 'yourpassword';
CREATE database yourdatabasename;
GRANT SELECT, INSERT, UPDATE ON yourdatabasename.* TO 'new_username'@'localhost'; or GRANT ALL ...
SHOW GRANTS FOR new_username;
ALTER USER 'new_username'@'localhost' IDENTIFIED BY 'yournewpassword';
then modify the directory permission to be written by the owner group:
sudo chmod -vR g+w /var/www/ (add +x if you want to be able to develop in this directory)
sudo chmod -vR g+w /etc/apache2/sites-available
sudo chmod -vR g+w /etc/apache2/sites-enabled
(Useful Users and Permissions Commands)
Linux has a group and user structure to manage permissions and it is very useful to be able to view the current state:
List all users in the system:
cat /etc/passwd
List all groups on the system:
cat etc/group or less etc/group
or
getent group
for all members of a single group:
getent group group_name
check ownership of a directory, for example:
ls -ld /var/www/
check ownership of a file:
ls -l /var/www/
Find all the files owned by a particular user (may take some time):
sudo find / -user username
Change the active group for the session, possibly not:
newgrp servermanager
delete a group:
sudo groupdel group_name
delete a user (-r removes the user’s directory and mail spool):
sudo userdel -r username
search “linux octal permissions” to understand the numbering system.
Show all currently logged in users on a system:
w
Upload and Enable a Site
With the commands above, you gave the non-root super-user sufficient permission to set up sites.
Upload any site directory to /var/www/html/your_site/
Go to /etc/apache2/sites-available/ and copy the default .conf file:
cp 000-default.conf your_site.conf
and modify with the following information:
ServerName your_site.com
ServerAlias www.your_site.com
ServerAdmin you@email.com
DocumentRoot /var/www/html/your_site
Use the following command to enable the site. What it actually does is copy the .conf file from /sites-available/ to /sites-enabled/:
sudo a2ensite your_site opposite is sudo a2dissite your_site
sudo systemctl reload apache2
to show some server information:
ps aux | grep apache2 | less
#q
to get out of this command.
Make Website Available Outside Your LAN
1. Raspberry Pi Zero W
Once the Pi server is serving a site on its IP within the LAN, making the site available outside the LAN (on the internet) is as simple as directing site requests that arrive to your internet IP to the Pi server. Sounds complicated, but when a browser looks for a website on the internet, it looks on port 80. Most routers have an option to direct all traffic arriving on a specific port to a specific IP within the LAN. Connect to your network’s router to configure it, usually by entering its IP (often 192.168.1.1) into a browser and logging in with a password you set. You should see an option like this under the advanced settings.
To Do: Establish an SSH Connection with SSH Keys for the Non-Root User
Normally, you generate a public and private key on your local computer then copy the public key to the server along with some settings. Hostwinds has an option in server management to generate the key, download the private key, and install the public key on the server. Reboot required.
WordPress from Scratch
On a fresh Debian VPN. Per WordPress.org’s own list:
sudo apt install apache2
sudo apt install php
sudo apt install php-curl
sudo apt install php-[the rest of the recommended extensions]
php -m to see a list of the php extensions installed.
Computer Architecture = Instruction Set Architecture (ISA) = Processor Architecture
At its lowest level, software must execute code properly on the processor chip itself. Processor architecture is standardized to allow for code to be written and compiled that works across many individual models of chips. Some common architectures with examples are:
IA-32 is the 32-bit version of Intel’s x86 architecture.*
*Notice x86** does not by itself specify an architecture, it is a family of Intel architecture that includes everything from 16-bit released in 1978 to modern 64-bit.
**Note, the x86 Wikipedia article has a good explanation of which chips generally use which ISA.
The Intel 80386 microprocessor released in 1985 was the first commercial 32-bit processor.
ARMv8-A is the first 64-bit version of the ARM architecture. ARMv8-A is AArch64, which is the same as ARM64.
ARM is a double-acronym. RISC stands for Reduced Instruction Set Computing. All together, ARM stands for “Advanced Reduced Instruction Set Computing Machine.” The ARM architecture in general is maintained by ARM Ltd. in Cambridge, UK.
The ARM Cortex-A53 in the Raspberry Pi Zero 2 W uses ARMv8-A and is considered 64-bit.
There is a certain a group of people who hates the daylight savings time change because it “arbitrarily disconnects us from nature.” One day we wake up and the sun is up. The next day we wake up at the “same time” and it is dark (or vice versa when we go off daylight savings time).
To my timekeeping-conscious friends out there, we have something in common: a dislike of brutish machine timekeeping. However, I believe what we really dislike is industrial timekeeping as a whole, not just daylight savings time. The daylight savings time change is like a tiny semiannual glitch in the matrix of industrial timekeeping that draws our attention just enough to feel something is wrong but passes before we really focus the energy to investigate the true enormity of the problem.
The problem is industrial time – since the 18th century – and the solution is Time v3.