OK, flat and messy is better for databases. If the data exists already get it in a database first and then add structure that you need later.
Don’t waste time on what you never need.
OK, flat and messy is better for databases. If the data exists already get it in a database first and then add structure that you need later.
Don’t waste time on what you never need.
According to:
During World War II, the British government planted astrological charts by Sybil Leek that convinced Deputy Führer Rudolf Hess to fly to Britian to instigate a peace treaty with some duke. Hess was captured and later tried in Nuremberg. He died in prison.
In current times, Hess style micro-targeting distortion personal belief scales to the entire population. In fact, this is precisely what Russian GRU did in the 2016 Presidential Election. However, domestically, the political parties themselves are doing this. Likely, business marketing departments are doing this or will be doing this.
All of this propaganda will come disguised as Social Media links to articles in news sources from all over the planet. For each of us targets, it is everywhere. The list of exploited human cognitive biases is long …
Take a microphone, an amplifier, and a speaker. Hold the microphone up to the speaker and hear the screech. Rewarding extreme beliefs that happen to provide an immediate benefit to the manipulator is a positive feedback loop. (In the long run, the manipulator is part of this feedback system). Really, this is not good.
Placard in Chicago’s MSI Display
Bulletin of the Atomic Scientist, June 1947
The Bulletin started by concerned Atomic Scientists had a great display at Chicago’s MSI. Though, when did vacations get that extra impending doom zest?
From the get go, these guys knew how to use design to make a point. Here’s the first Bulletin from June 1947. World War II seems to have birthed a certain style for using simplified images and messages to get a point across. Nazis definitely had their own style — hard angles, black, white, and a little red.
It looks like everyone learned from this but … more organic colors, circle shapes.
This iconic (literally and descriptively) continues.
Doomsday Dashboard from 2017.06.18
Bruce Schneier wrote:
Applied Cryptography: Protocols, Algorithms and Source Code in C
His monthly newsletter had this snippet precipitated by this blog post:
Maybe I’m being optimistic, but I think we just won the Crypto War. A very important part of the US government is prioritizing security over surveillance.
An important quote from this blog post:
Democracies depend on civic infrastructure. These organizations, whether the American Association for the Advancement of Science, the Council on Foreign Relations, or Sierra Club, serve as intermediaries between the people and those who govern, providing information and insight on a wide variety of issues.
Today, slashdot had a blurb on the stolen CIA CherryBlossom tool for compromising our home and small office routers. Slashdot summarizes the tool’s capabilities:
The tool can sniff, log, and redirect the user’s Internet traffic, open a VPN to the victim’s local network, execute actions based on predefined rules, alert operators when the victim becomes active, and more.
At best, to get the Senate to use Signal and, possibly, get our Intelligence agency putting a smidgen of focus on security, we had to suffer the subjugation of our ‘civic infrastructure’ to a foreign state. At worst, our ‘civic infrastructure’ is unrecoverable.
This is the subtle stuff. We should protect the thought-makers and messengers from distortion.
However, there are basic problems. For example, as Bruce Schneier and others have pointed out, we need machine printed, voter verified ballots.
I believe that there is a foundational issue. Stepping all the way back, the whole point of election process is to measure the will of the electorate. The whole point of government is governing. Our parties, elections, and politicians don’t do this for a whole host of reasons. Our primary process leading to 17 GOP candidates is a disaster. Our “increased transparency, everyone is covered but 23 Million people, all done out in the open in a closed room, thoughtfully with no thought, ACA replacement bill is a disaster.
As demonstrated in 2015 , 2016, and, now, in 2017, this mess is susceptible to easy and continuous manipulation by foreign entities.
Here a system is an entity of interest that exists in time. For comprehension and exploration, an analyst creates an abstraction of the system. The analyst then refers to this abstraction as “the system.”
The dynamics of the analyst’s system is how that abstraction changes over time. Ideally, the abstract system and the dynamics are correlated with the real system and its observed behavior.
Quantitatively, the abstraction has a set of state variables. These variables sufficiently describe the state of the abstraction. Typically, the dynamics are expressed as a set of differential equations involving these state variables and variables describing any external inputs to the system.
Example systems include an engine, a car, and an airplane. However, anything existing in time is a system. For example, the global economy consisting of individual agents form a system. The more complex the system the more difficult to find a useful abstraction that sufficiently captures the real system’s complexity.
For Humans, because of the dimension reducing nature of our brains, seeing what is over what is believed is impossible. Because of this, the abstraction becomes what is believed, and we can’t see what is.
During the 1970s and 1980s, across disciplines, academics wrestled against an ingrained bias towards simple, linear system abstractions. There was a blindness towards the “messy” but necessary complexity. In fact, linearity was ingrained deeply in the Engineering curriculum.
The linear engineering problems are solved by applying a series of steps leading to a singular answer. Any qualitative understanding of the dynamics is ancillary. Yes, we studied root-locus in Control Systems and we studied Smith charts in E-mag. But, in my opinion, we students quickly lost sight of the whole racing to the singular answer at the end of the problem solving algorithm. Problems like this are easy to get right and easy to grade.
BUT THIS FOCUS LEADS TO A VIEW THAT IS INSIDIOUSLY DISTORTED. Why “insidious”? This viewpoint blinds us to the real world. Linear Dynamical Systems are unicorns. They don’t exist. Sure, linear abstractions were more than useful to learn but not at the occlusion of the real-systems.
In fact, because linear dynamics were desired, analysts abstracted real world system to linear abstractions even knowing the abstractions were a poor representation.
Steven Strogatz wrote:
This book steps through non-linear system dynamics focusing on qualitative understanding leading to a real understand of differential equations (linear and non-linear).
Following Dr. Strogatz’s solutions demonstrates how working analytically with non-linear equations can be more an art than a science. It reminded me of finding anti-derivatives in calculus. The vista is holistic.
Not having an algorithm leading to a solution is scary. However, even if you can’t find a solution, the insight from exploring the dynamics of these example problems is useful in real life. Assuming your real-life involves making abstractions and understanding the dynamics of these abstractions.
Here are things that require a password today:
Work Insurance site, Medical insurance site, Doctor’s site, Dentist’s site, Doctor’s secure email, NTTA (Toll) Authority, House Router, 5-7 computers, 3 tablets, 4 phones, TV, 2 google chromecast, 2 amazon fire boxes, cell phone site, facebook, twitter, snap chat, 10 email accounts, Amazon, Google, Netflix, Webkinz, Traxxas forum, other forums, Internet provider, Google voice, Voice box, NAS box, 3 cars, 2 apps for cars, cameras, Quad copter, ATM, bank website, etc., etc.
Here’s the list from 1978:
My Room
Wow, setting up Angstrom’s openembedded/bitbake environment is hard. First off, DO NOT USE WIRELESS. There is something with my wireless router that causes some of the getline stuff to fail. This cost me hours. Also, this seems to take a lot of space so don’t put it on a VM disk.
OK …
Step 1, git the environment (git the pun?):
cd ~;mkdir oe;cd oe
git clone git://github.com/Angstrom-distribution/setup-scripts.git
Step 2, make the systemd-image
cd ~/oe/setup-scripts
MACHINE=beaglebone ./oebb.sh config beaglebone
MACHINE=beaglebone ./oebb.sh update
MACHINE=beaglebone ./oebb.sh bitbake systemd-image
Wait a good long while for the fetching, compiling, and all that to complete.
Step 3, load the systemd-image onto your card
Now you need to get a micro-SD card to put your new system image on. Don’t use the one that came with your beaglebone — this will just cause you stress if something goes wrong. First you have to format the card with a boot and root partition. I used this script:
wget http://www.angstrom-distribution.org/demo/beaglebone/mkcard.txt
mv mkcard.txt mkcard.sh;chmod +x mkcard.sh
Now, guess what? Some volume manager thing is going to start messing with you. (Things were a lot easier back in the day before logical volume management when a disk was a disk). When mkcard.sh run kpartx, the lvm stuff grabs your new partition on the sd card and won’t let you play with it. Anyway, do this as root:
# plug the card into your USB reader
dmesg # note the new device -- make sure it is your card and not your harddisk
# assume here the new drive is sdg
./mkcard.sh /dev/sdg
dmsetup ls
dmsetup remove sdg2 # if you see sdg2 in the dmsetup ls
dmsetup remove sdg1 # if you see sdg1 in the dmsetup ls
vi mkcard.sh # comment out the kpartx
#if [ -x `which kpartx` ]; then
# kpartx -a ${DRIVE}
#fi
./mkcard.sh
./mkcard.sh /dev/sdg
Great, now you have a card all setup. Now …
mkdir /mnt/boot
mkdir /mnt/Angstrom
mount /dev/sdg1 /mnt/boot
mount /dev/sdg2 /mnt/Angstrom
cd ~username/oe/setup-scripts/build/\
tmp-angstrom_v2012_05-eglibc/deploy/images/beaglebone
cp MLO /mnt/boot
cp u-boot.img /mnt/boot
cp uImage-beaglebone.bin /mnt/boot/uImage
tar -xjv -C /mnt/Angstrom/ -f systemd-image-beaglebone.tar.bz2
umount /mnt/boot
umount /mnt/Angstrom
Ok, go boot your card and make sure your beaglebone is working. sshd is enabled so you just have to figure out the IP address of it and then ssh to it and do the opkg thing. I use the i2c bus stuff and gdb to look at my user space programs that puke:
ssh root@192.168.1.113
# password is just return
opkg update
opkg install i2c-tools i2c-tools-dev
opkg install gdb
opkg install gcc gcc-symlinks
opkg install cpp cpp-symlinks
opkg install libtool libtool-symlinks
opkg install g++ g++-symlinks
opkg install binutils-dev vim binutils-symlinks
opkg install libstdc++-dev
opkg install make
Step 2, build the environment:
Back on your non-wireless development machine. Time to setup the kernel build environment.
cd ~/oe/setup-scripts
MACHINE=beaglebone ./oebb.sh configure beaglebone
MACHINE=beaglebone ./oebb.sh update
MACHINE=beaglebone ./oebb.sh -c compile virtual/kernel
MACHINE=beaglebone ./oebb.sh i2c-tools
cd ~
# create softlink of big nasty directory to ~/bbl
ln -s ~/oe/setup-scripts/build/tmp-angstrom_v2012_05-eglibc/work/beaglebone-angstrom-linux-gnueabi/linux-ti33x-psp-3.2.23-r14h+gitr720e07b4c1f687b61b147b31c698cb6816d72f01/git bbl
Step 3, write the env setup script
You want to do normal makefile stuff as you are making changes to the kernel area. To setup the environment save this script to a file bb_env_setup.
#!/bin/bash
echo "Running bitbake environment dump"
cd ~/oe/setup-scripts
MACHINE=beaglebone ./oebb.sh bitbake -e > bb_env_dump.txt
echo "Starting to set environment variables"
eval `grep "^export PKG_CONFIG_PATH=" bb_env_dump.txt`
eval `grep "^export PKG_CONFIG_SYSROOT_DIR=" bb_env_dump.txt`
eval `grep "^TARGET_SYS=" bb_env_dump.txt`
export TARGET_SYS
CROSS_COMPILE=${TARGET_SYS}-
export CROSS_COMPILE
eval `grep "^STAGING_DATADIR=" bb_env_dump.txt`
export STAGING_DATADIR
eval `grep "^export TARGET_CFLAGS=" bb_env_dump.txt`
eval `grep "^export TARGET_LDFLAGS=" bb_env_dump.txt`
eval `grep "^export PATH=" bb_env_dump.txt`
Step 4, build the kernel
Ok, run the environment setup script
. ./env_bb_setup
Now to build do:
cd ~/bbl
make ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage
# note that you can build specific files from the bbl directory with
make ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- drivers/pwm/pwm.o
This takes a while the first time. After that, it will only pick up your changes.
MAKE SURE YOU BACKUP YOUR CHANGES OUTSIDE OF THIS DIRECTORY STRUCTURE. It is very easy to mess this structure up if you need to rebuild the systemd-image.
Step 5, replace the kernel on your card and go
This is straight forward. Plug your card into your USB reader.
dmesg # assume the card is sdg
mount /dev/sdg1 /mnt/boot
mount /dev/sdg1 /mnt/Angstrom
cd ~username/bbl/arch/arm/boot
cp uImage /mnt/boot/uImage # say 'y' to overwrite
cp uImage /mnt/Angstrom/boot/uImage-3.2.23 # or whatever the version is, say 'y' to overwrite
umount /mnt/boot
umount /mnt/Angstrom
Pull the card and place in beaglebone and boot
Step 6 repeat 4 and 5 with your changes
Go into your kernel areas and start making changes. For me, the best thing to do would be to just add a:
printk(KERN_EMERG "filename: i am here\n")
to the driver probe function to make sure changes I make appear when I run dmesg after boot.
ssh root@192.168.1.113
dmesg | grep "i am here" # you should see your log
Don’t do what I did and write a bunch of code only to learn that you weren’t properly copying over the uImage. This cost me more hours to my life.
Step 7 see a future post
I will start documenting the changes I am making to the drivers/pwm/ area of the linux kernel to bring in the pwm capture function.
Planning to modify the beaglebone Angstrom device driver to add support for PWM capture to measure R/C rate PWM signals.
The current driver only support using the 3 ECAP subsystems as PWM output.
Our oldest daughter, D, got into trouble and was sent to her room. Furious, D proclaimed the time had come for her to read parenting books because we must be doing something wrong. C encouraged her to go ahead, directed her to the shelves of parenting books and informed her that a lot were about her. D went to shelves and started crying — she thought that “How to Raise a Good Kid” was about how to raise her sister and not her.
After that, D and G talked about what they think about when they are sent to their rooms. G said that she is really mad at first and then she starts playing with her toys and then she isn’t mad anymore. “Its really not that bad D”. D says she just gets madder and madder and, then, she plots her revenge.