acl digest – 16 september 2018

Dreamboat Annie – Because she’s a Labradoodle she’s completely covered in a riot of curls, all in of a mix of many colors and shades. She was mostly black with the heart-shaped mark on her brisket when she was a pup (hence the name, Heart’s Dreamboat Annie), but after three years her coloring has become heavily tinged with white, silver and ginger. To be honest I like this coloration because it gives considerable definition to her overall shape. This is her sphinx position she likes to take while on guard and watching everything and everybody.

White Bougainvillea – One of a number of potted plants inside the screened in area around the pool. This year quite a few of my potted plants have done much better, if not the best, they’ve every done over the last 10 years. I’m charmed by this white bougainvillea because of the off-white color of the petals tinged with an occasional light pink on the tips. I have a solid pink sitting next to it, which is not yet blooming. This is the second time this year the white has bloomed.

Camera Work Flow – These images were taken with the Panasonic GH4 and the Panasonic Lumix 30mm f/2.8 macro with the older MEGA O.I.S. in-lens image stabilization. The GH4 doesn’t have any sensor image stabilization. I’m using my iPhone with Panasonic’s app to transfer images off the GH4 onto the phone. From there I do a little post processing with Snapseed (some cropping, very little exposure tweaking and only if needed). I then push those results to Instagram and to my WordPress media collection via the WordPress app. When I write on WordPress using the media, I still prefer to do it on Chrome using the WP-Admin editor.

This might sound a bit complicated, but trust me, it beats pulling the SDXC card out of the camera body and inserting it into the Macbook Pro’s SDXC adapter, then using Lightroom to pull the files from the card. Then, from there, using Lightroom and my various plugins to work the RAW file. Now, if I want to move files off the camera that way, I only do it to essentially backup my images. I might, on very rare occasions, still use Lightroom, but even that is getting less and less. I’m looking at other possible applications on macOS to do what I’ve done with Lightroom. I just can’t get involved with Adobe any more. I’m working out my own work flows that suite me, and it appears to be centered more and more around my iPhone. It really is a lot easier and a lot faster, and I have enough storage on my iPhone these days to keep quite a bit of still and video work. And if I don’t, where, there’s the growing possibility of paying Apple $9.99/month for 2TB of cloud storage that will then allow me to work with all my stills and videos across all my devices.

python 3.7 on raspberry pi 3b+ and raspbian 9.4

I’ve been working again on the RPI 3B+, this time with Python. The current version of Raspbian, 9.4, comes stock with Python 3.5.4. I wanted the latest and greatest, so I decided to actually build Python 3.7 from source and install it locally to my account’s home directory. This leaves both versions of distro Python alone.

Note before you get started that it will take a good three hours to build and test Python 3.7 before you can even install it for use. The long build time is due to the extensive suite of tests the build process performs before it’s finished. You want all the tests to complete and to be successful.

You can follow my simple, dense directions, or you can go here:

Directions To Build And Install

  1. Install support tools to build python
    • sudo apt install libffi-dev libbz2-dev liblzma-dev libsqlite3-dev libncurses5-dev libgdbm-dev zlib1g-dev libreadline-dev libssl-dev tk-dev build-essential libncursesw5-dev libc6-dev openssl git
  2. Download the latest Python 3.x source from the GitHub source repository
  3. Untar the source into your account’s home directory from where it was downloaded
    • tar xvzf ~/Downloads/cpython-3.7.0.tar.gz
    • Note that the default download for Chromium is ~/Downloads unless you change it
    • Note that the current version as of the date of this post is 3.7.0
  4. Configure Python 3.7
    • cd ~/cpython-3.7.0
    • ./configure –prefix=$HOME/.local –enable-optimizations
    • Note the convention of installing into ~/.local
  5. Build CPython
    • make -j -l 4
    • make install
    • Note that make will take two to three hours. Just let it run.
    • Do NOT run as root; in other words, do NOT run with sudo
  6. Add CPython 3.7 to your path such that it is found first
    • Edit ~/.bashrc, and somewhere towards the bottom add:
      • export PATH=$HOME/.local/bin/:$PATH
  7. Open a new shell session and test that CPython 3.7 and pip3 are accessible
    • ‘which python3’ should produce /home/[login]/.local/bin/python3
    • ‘which pip3’ should produce /home/[login]/.local/bin/pip3

Once that’s all done, you can also check with ‘python3 –version’ or ‘pip3 –version’. CPython 3.7 should return ‘3.7.0’ and pip3 should return ‘pip 10.0.1…’ with additional information showing the filesystem location from where it was invoked, which should match ‘which pip3’.

Why Python, And Why Now?

First, this is a reaction to my less than pleasant experience with Julia 1.0. Not everything worked as claimed in Julia. I also discovered that the performance of Julia on a Raspberry Pi 3B+ with Raspbian is poor compared to Python. CPython 3.7 is blazing fast by comparison, especially starting up, and Python’s resource footprint seems a lot smaller than Julia’s.

Second, I have some programatic math work I want to do that Python does quite well compared to Google’s Go. Google’s Go is great for what I want it to do at the hardware level as I’ve documented elsewhere on this blog. But it doesn’t (yet) have some of the math support frameworks that Python has. Trying to make a single language do everything, especially some of the math work I want to perform, is a bit stupid when existing tools already exist and I know how to use them. All the important bits that I needed to run in Go I’ve already converted to Go, and I’m quite happy with. Python can pick up the rest.

Third, some of the example Raspberry Pi code for manipulating hardware is written in Python (2.7 to be exact). If it’s already running then it’s foolish not to use it.

Finally, it’s fun. I learned how to pull the latest Python and get it running on the latest Raspberry Pi, and while it took a while to get it build and have it self-test, the final results were worth it. Python 3.7 is very, very fast for a scripting language. And I like the fact it runs quite well on the Raspberry Pi, a feature it shares with Google Go.