Urban Tree Database


NY Census



“Demography is destiny” or “it’s all about reproduction”.

World’s most important graph according to Steve Sailer:


Sub Saharan Africa growth projected to double from 1.1 billion in 2013 to 2.4 billion in 2050 according to the Population Reference Bureau

It’s not just number of children per woman that is often referenced, but generation time, mortality, and even levels of altruism within a hosting population.

Let’s write a shiny app that will allow us to gain some insight by manipulating the relevant variables. The equations useful for estimates can be found in your population genetics textbook. I will use a simplified method of calculating population growth outlined by Wahl and DeHaan (2004). This simplified model will ignore complicating variables such as birth of males, gestation time and staggered births. Essentially I will be treating humans as dividing bacteria. Though a simplified model, you can still gain a sense of the synergism between generation time and fecundity.

In this model, the number of offspring N after some number of generations G given fecundtity (number of offspring per woman) F is:


I will fix the starting populations at 10 and perform calculations for 200 years, enough to get a feel for what our grandchildren might experience.

t <- seq(20, 200, by=20) ##t is in years

t (time in years) will serve as the abcissa of my plot.

The terminology I will use in the app is “Host” (suffix h; also called population 1, or p1) for the population accepting immigrants, and “Invaders” (suffix i; population 2 or p2) as the population of immigrants. To build your mental model, consider the host country something like America, and the immigrant source country some subsaharan country unconcerned with population growth and unaware of the concept of limited resources.

The growth equations:

x.h <- p1f^(t/p1g)
x.i <- p2f^(t/p2g)

p1f (fecundity) and p1g (generation time) hold input from the sliders. Consider the power t/p1g. If t is 20 years, and the input p1g is 20 years, 20/20 = 1 generation.

Next set up the plot. As it is difficult to get a sense of the magnitude of the differences generated with slider input, I want to calculate the difference in population size after 200 years and print that as annotation on the plot.

delta <- format(abs( x.h[10] - x.i[10] ), scientific=TRUE, digits=3)
ycoord <- 0.5*(max(x.h[10], x.i[10]))
ycoord2 <- 0.2*(max(x.h[10], x.i[10]))
xcoord <- 170
d <- data.frame(cbind(t, x.h, x.i))
ggplot(d, aes(t, x.h)) + geom_point( aes(size=3)) + labs(title="Fecundity X Generation Time") + geom_point(data=d, aes(t, x.i, col="red", size=3)) + annotate("text", x = xcoord, y = ycoord, label = paste("Difference after 200 years = ", delta, sep="")) + scale_y_log10() + theme(legend.position="none") + xlab("Years") + ylab("Population Size")

Consider a mixed population with equal numbers of Hosts and Invaders (10 each) after 200 years with equal fecundity (2) and a generation time of 20 years for the host, 15 years for the invaders. After 200 years the invaders outnumber hosts 10:1. It’s all downhill from there.

The app is hosted at

Code is available on github



Core features



…granted that the people involved in feature films are often super-talented and are often working at a very high level, I’d just rather not be around them, let alone be subjected to their hustle and overbearingness.
Paleo Retiree

One moves swiftly and imperceptibly from a world in which affirmative action can`t be ended because its beneficiaries are too weak to a world in which it can`t be ended because its beneficiaries are too strong. - Christopher Caldwell


Accelerated Aging of Spirits

One Man’s Quest to Make 20-Year-Old Rum in Just Six Days

This guy says he can make 20 year old rum in 6 days.

  • Oak catalyzed esterification
  • Fermentation distillation
  • Aldehydes phenols ethyl-butyrate esterification; ethyl octanoate; ethyl propanoate; isovaleraldehyde
  • Model 1 reactor
  • Break the wood polymers then force esterification
  • Terressentia
  • Terrepure;
  • Orville Tyler

Class War

The New Class War Good overview of the Managerial Class vs. The Rest, effect of peace amongst major powers, corporate overreach.


Pass password manager
cd Downloads
tar xvfz Tomb-2.4.tar.gz
cd Tomb-2.4
sudo make install
sudo apt-get install cryptsetup zsh

git clone
cd pass-tomb
sudo make install


export PASSWORD_STORE_DIR=/home/mbc/syncd/.password-store
export PASSWORD_STORE_TOMB_FILE=/home/mbc/syncd/.password.tomb
export PASSWORD_STORE_TOMB_KEY=/home/mbc/syncd/.password.key.tomb


  • Start with annotation; also use this if the password already exists
    pass insert -m twitter
  • Add password; -i will not overwrite annotation
    pass generate -n -i twitter 16
  • View
    pass show twitter
    pass show -c

  • Find
    pass find .com


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:

blkid -o list -c /dev/null

Download the Debian 9.0 image from and copy to the USB.

dd if=debian-9.0.0-amd64-netinst.iso of=/dev/sdb

Download firmware from

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.

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.


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.

# apt-get install conkeror thunderbird emacs ess guile-2.0 calibre sudo pass chromium rsync referencer nodejs yapet electrum flashplugin-nonfree xournal x11-server-utils
# apt-get remove gnome-games gnome-calendar gnome-clocks gnome-weather inkscape polari evolution
# apt-get install gnome-core
# apt autoremove

configure browser favorites, yapet, mail, electrum seed, conkeror with instapaper,

Copy over ~/.gnupg, ~/.ssh ~/.mutt

Pen info