The New Class War Good overview of the Managerial Class vs. The Rest, effect of peace amongst major powers, corporate overreach.
Pass password manager
https://files.dyne.org/tomb/
cd Downloads
tar xvfz Tomb-2.4.tar.gz
cd Tomb-2.4
sudo make install
sudo apt-get install cryptsetup zsh
git clone https://github.com/roddhjav/pass-tomb/
cd pass-tomb
sudo make install
- Tomb commands
sudo tomb dig -s 10 mytomb
sudo tomb forge mytomb.key
sudo tomb lock mytomb -k mytomb.key
sudo tomb -f lock mytomb -k mytomb.key
sudo tomb -f open mytomb -k mytomb.key
tomb close
tomb slam all
tomb is found at /media/mytomb
~/.bashrc
export PASSWORD_STORE_GENERATED_LENGTH=16
export PASSWORD_STORE_DIR=/home/mbc/syncd/.password-store
export PASSWORD_STORE_ENABLE_EXTENSIONS=true
export PASSWORD_STORE_TOMB_FILE=/home/mbc/syncd/.password.tomb
export PASSWORD_STORE_TOMB_KEY=/home/mbc/syncd/.password.key.tomb
Other
When you see “-bash: ‘\r’: command not found” run dos2unix on the file.
caution s dos2unix modifies in place
Usage
Start with annotation; also use this if the password already exists, it will not modify first line, or leaves first line blank if it already exists
pass insert -m twitterAdd password; -i will not overwrite annotation
pass generate -n -i mbc/twitter 16View
pass show twitter
pass show -cFind
pass find .comEdit
pass edit mbc/twitter
By convention leave all file names lower case
To make nano the default editor (useful for pass edit):
sudo update-alternatives –config editor
When presented with the editor list choose /bin/nano (“1”)
Debian 9.0 / Surface Pro 3.0
Installation of Debian 9.0 on a Surface Pro 3.0. I started by following the directions here, but had to improvise as my surface had been upgraded to Windows 10.
Prepare USBs
Prepare two USB drives with the necessary iso images. To determine name of the USB port:
1 | blkid -o list -c /dev/null |
Download the Debian 9.0 image from https://www.debian.org/distrib/netinst and copy to the USB.
1 | dd if=debian-9.0.0-amd64-netinst.iso of=/dev/sdb |
Download firmware from https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/current/amd64/iso-cd/
1 | dd if=firmware-9.0.0-amd64-netinst.iso of=/dev/sdb |
Prepare Surface
The first thing I did was save my recovery partition to a USB drive. I then shrunk the windows partition by right clicking on the C:\ drive in the Disk Management software. Once shrunk, open a command window and disable hibernation.
1 | powercfg -hibernate off |
Turn the Surface off. Turn it back on and repeately press the ESC key during startup. This will take you to the harware setup window, where you can disable Secure Boot. If you have the bitlocker key, select that option and turn off encryption. Bitlocker will prevent booting into Windows if Secure Boot is turned off. Change the boot device order here selecting USB –> SSD. Shut down the Surface.
Gather hardware
You will need a USB hub so that both iso containing USBs can be plugged in simultaneously. I found that my Displaylink docking station served the purpose. However when I plug in the docking station, the Surface keypad no longer works. I had to plug a USB keyboard into the Displaylink to navigate through the installation.
Installation
Start up the Surface. At the Bitlocker screen select “Skip this drive” which will redirect you to the USB and start the Debian installation. Debian 9.0 retrieves the Wifi driver (and maybe other drivers) from the firmware iso without prompts. The most difficult part of the installation was the SSD partitioning. I was presenting with multiple partitions, one of which was empty space at 53.5GB. I reduced this partition to 53GB and used the 0.5GB for the boot partition. I also set up a swap space.
Though I use Xfce as my window manager, I selected Gnome for the Surface for its tablet support. I did not need any further configuration. Files were downloaded as needed. I rebooted when prompted and went right into Grub. Touchpad, keyboard, wifi, camera are all working.
Next I installed software of interest and deleted a lot of crapware installed by default with Gnome.
1 |
|
configure browser favorites, mail, electrum seed, conkeror with instapaper,
Copy over ~/.gnupg, ~/.ssh ~/.mutt
Pen info
References
http://winaero.com/blog/how-to-install-linux-on-surface-pro-3/
https://github.com/jimdigriz/debian-mssp4
Troubleshooting
Ctrl-Alt-F5 to get to a terminal
sudo chmod 1777 /tmp to fix correct password rejection problem
substitute lightdm for gdm3 for circular login problem (didn’t work on HP desktop debian 10)
Growing up and being useful is the new counterculture
To find meaning in life take on responsibility rather than demand rights.
Travel
Travel as an alternative to boredom induced alcoholism.
Too many people want to travel
Travel photos
Dotbitme
View a .bit domain
To view a .bit domain you need to update your browser with the dotbitme plugin. More information also at dotbitme and meowbit. Namecoin client available here.
Register and set up a .bit domain
I am using Hostgator as my hosting service.
Namecoin
Claim and configure .bit address with the Namecoin client
Configure the domain using nameservers as I don’t have a dedicated IP address
Hostgator
create add-on domain ‘public_html/lostnation.bit’
- all content goes under this domain
- (I put it under public_html/lostnation.bit)
Redirect any .net name to this .bit directory
- redirect lostnat.net -> lostnation.bit/lnsDFoKytr
- redirect lostnation.bit -> lostnation.bit
create ftp account for uploading files
- lnsDFoKytr@lostnation.bit
- provides access to /home2/myname/public_html/lostnation.bit
Hexo _config.yaml
/# Deployment
/#/# Docs: https://hexo.io/docs/deployment.html
deploy:
type: ftpsync
host: mydomain.net
user: lnsDFoKytr@lostnation.bit
pass: mypass
remote: /
port:
ignore:
connections:
verbose: true
Buy a hot domain name: crispr.bit
The other day I was reading an article about the transfer and potential worth of the crispr.com domain name and wondered “is crispr.bit available?” I fired up my Namecoin client and lo and behold it was! I claimed both crispr.bit and crisprcas9.bit. If you arrived at this page, dear Reader, because you typed crispr.bit in your browser, wondering “is crispr.bit for sale?” - yes indeed it is. $100,000 for either crispr.bit or crisprcas9.bit or a whopping 25% discount - $150,000 - for both. If you are interested, do the following:
Transfer $100,000 or $150,000 worth of Bitcoin to my wallet ID 18Vvgw9bNmpwwH4pWJ646YAFVa3n6TXSfS. For your convenience a QR code is on my about page.
After 6 confirmations send me an email at mbcladwell@gmail.com including your Namecoin wallet ID and the domain name you are interested in.
Using the Namecoin client I will transfer the domain to you.
Thank you. It was a pleasure doing business.
Diet
Book review: The Hungry Brain Leptin, hyperpalatable food, lipostat, neo-Puritan asceticism, MealSquares
Behavioral epistasis
A recent paper Social Epistasis Amplifies the Fitness Costs of Deleterious Mutations, Engendering Rapid Fitness Decline Among Modernized Populations provides a mathematical model to show the effects of behaviour of a subpopulation (carriers with behavioral mutations) on the total population. I was interested in playing with the parameters and so created a shiny app that would allow me to do so.
Assume co-mingling of a wild type population pop1 with a carrier population pop2. pop2 has deleterious behavioural mutation(s) that affect pop1 via social epistasis. Example behaviors that might have a negative impact on the population might be extreme altruism or free riding. The following equations from the paper describe the population growth of the two intermixed populations.
Population 1 (wild type) growth rate: $$pop1_{t+1} - pop1_t = (1 - p_{12})*birthrate1(pop1_t, pop2_t)*pop1_t - deathrate1*pop1_t$$ Population 2 (carrier) growth rate: $$pop2_{t+1} - pop2_t = birthrate2 * pop2_t - deathrate2 * pop2_t + p_{12} * birthrate1(pop1_t,pop2_t) * pop1_t$$ Birth rate of population 1: $$birthrate1(pop1_t, pop2_t) = birthsmax1* \frac{pop1_t}{pop1_t + pop2_t}$$To convert this to R code I utilize a vector indexed by the variable i which will represent the flow of time in generations. pop1[1] is the first generation, pop[2] the second etc. and more generally pop1[i] is followed by pop[i+1]. Likewise birthrate1, which is population size dependent, will be indexed by i, with a potentially unique value for each generation.
Start by defining variables and setting their values to the defaults used in the paper. pop 1 and 2 will be vectors
1 |
|
Loop over the generations, adjusting population sizes and birthrate1’s value, which is population size dependent.
1 |
|
Then plot
1 |
|
I would like to make this a Shiny app where I can dynamically change the variables and see the effect in the plot. Take the constants and wrap them into a reactive function. Here is server.R:
1 |
|
And the interface:
1 | shinyUI(fluidPage( |
Here is a reproduction of Figure 1 from the paper:
Here is the app on shinyapps.io. There is a monthly limit of free hours on shinyapps.io so you may have to come back if I have surpassed my limit.
Here is John Tooby with some commentary on purifying selection.
Ethnocentrism dominates humanitarianism.