Physics in Focus Year 12

Here it is!

I am very pleased to announce the arrival of Physics in Focus for Year 12, the new book for NSW high schools. See here!

My contribution is just a couple of chapters of the 17 in there, plus some solutions to various worked examples and end-of-chapter questions.

A book like this, with so many equations, images, tables, figures and other forms of content, is a highly collaborative exercise, and I’m glad I was not responsible for putting all the pieces together! That was up to Eleanor Gregory and Felicity Clissold at Cengage. The editing was by Elaine Cochrane, and Jane Fitzpatrick was the proofreader.

I hope I was not too hard to work with. I’m very pleased that the body text is a serif font. Choosing sans serif fonts for body text does not work well for mathematics where we need to be able to differentiate symbols and where we’d like a real italic rather than an oblique. The choice means the designers are taking the content seriously.

There was little to worry about here since the style was already set in the Year 11 book.

Photo of cover, showing title and authors, including me...

The front cover of Physics in Focus for Year 12, the new textbook from Nelson (Cengage).  ISBN-13: 9780170409131 — order your copy now!

 

Seconded.

Advertisements

Debian 9 (Stretch) is (easily fixable) malware

Well, it’s not really malware, I’m just cheesed off.

I quote from https://wiki.debian.org/UnattendedUpgrades:

As of Debian 9 (Stretch) both the unattended-upgrades and apt-listchanges packages are installed by default and upgrades are enabled with the GNOME desktop. Rudimentary configuration is accessible via the “Software & Updates” application.

In other words, like Windows, it is going to do whatever the hell it likes no matter if that inconveniences you or not. A great step backwards.

I noticed when I tried to boot my machine and it sat there telling me ‘A start job is running’ and something about ‘Daily apt upgrade’ and then it just sat there until I turned off the computer by holding in the switch. I am wondering if it tried to get something from the ‘net; seeing as I have limited bandwidth I do not let computers access the internet unattended and I often leave the router turned off unless I need the web. I often do major upgrades at the end of the month if and when I have enough quota left (we do not have wire or fibre where we are, and that limits the plans available and makes them expensive). The last thing I want is unattended upgrades using up my quota. This was always one of the benefits of Linux over Windows for me, and now they’ve decided to screw that up by default. At least it should be fixable.

Anyway, the link above says it can be fixed using ‘Software & Updates’

On MATE, System → Preferences → Other → Software & Updates

(Perhaps not the most logical place for it, ‘Other’…)

Selected Updates tab and set ‘Automatically check for updates’ to ‘Never’.

OK, let’s see if that fixes it.

 

Might also go

apt-get remove unattended-upgrades apt-listchanges

Esp. since these have no dependencies and the command only removes these two packages. (Might also want to remove zeitgeist… I dunno)

Debian is really pretty good mostly.

Android tablet keeps restarting

PENDO pad, an admittedly cheap and low-spec Android tablet, keeps restarting, often before I even have access to the desktop. Tried holding in power button till it stopped and then starting it with ‘Volume +’ button held down. This gives a sort of rescue interface.

Used the volume +/- buttons to skip through the options and then pressed the power button to select ‘Wipe cache partition’. Then selected ‘Reboot system now’.

Did not help.

Did the same (turned off/rebooted with button down) and selected ‘Wipe data/factory reset’. Drastic, but…

Reboot.

Took a long time to boot up. But seems to be working.

I can update applications, but for the OS as a whole, there’s no ‘Update’ option anywhere within the ‘Settings’ menu of this piece of crap, so the only way to update Android is via a USB cable after installing some kind of device manager thingy from the vendor on a desktop machine.

Now, I’d really like to do that because bits of software keep falling over and stopping working.

I always thought tablet computers were stupid. Now I know they are.

Emailed pendo.com.au to see if I could get some assistance/advice in updating the machine. That was after looking on their website for some useful support (eg a download that might help). Could not find anything.

They sent me an email — it’s not updateable as far as they are concerned.

Update: Now I just get a grey–black screen, and can’t even get the recovery screen. It turns on in that the backlight comes on, and then goes off. Glad it was cheap. Will never get another one.

Maybe I can do a clean reinstall myself?

Pendo cannot provide me with a system image either. Effectively, no support.

 

End transmission.

EP-44 serial printer via USB adapter: Windows 10

RS232 Serial printer on Windows 10 (current as of August 2018)

(1) Installed the Windows 10 driver from the CD that came with it  (file Pl2303_Prolific_DriverInstaller_v1.10.0.exe).

(2) Plugged in device, then plugged my home-made serial printer cable into the converter and connected that to the typewriter/printer.

Image of adapter, DB9 to DB25 converter and mini-CD with drivers

USB to serial adapter

(3) Installed RealTerm (https://sourceforge.net/projects/realterm/).

(4) Ran RealTerm. Selected Port 3, 1200 baud, other settings to match the typewriter. Did not change any other settings.

Screenshots showing the settings; 1 stop bit, 8 data bits, parity set to none, 1200 baud on port 3.

Screenshots showing the configuration.

The dialogue showing file being sent to printer. Image showing the pin functions. For DB9, 1 is DCD, 2 is RSD, 3 is IXD, 4 is DTR, 5 is ground, 6 is DSR, 7 is RTS, 8 is CTS and 9 is RING. I don't know what all these mean!

(5) Started typing in the terminal and it echoed onto the printer perfectly.

(6) Grabbed some screenshots of the configuration (see above).

(7) So tried adding it as a printer — no luck.

(8) But, if we open RealTerm and then go to the Send tab, we can use the ‘Dump File to Port’ option and that works!

(9) Sort of — it works one line at a time, bit like on Linux. I think the buffer gets filled up. Add in some delays at EOL.

(10) Fiddled with some settings and got it to work. The trick was to lower the baud rate enough (both on printer and computer).

Configuration, modified to show a baud rate of 110 (that's very low!)

EOL (end of line) set to carriage return plus line feed. Like on DOS.

The RealTerm settings that worked for printing.

(11) Since RealTerm is scriptable, I am guessing this could be automated. Or a Python script.

(12) If RealTerm is not already open, a script can be used to use it to print from the Windows CMD line.

https://stackoverflow.com/questions/2161180/com-port-terminal-program

https://hw-server.com/constrc/domaci_automatizace/domaci_automatizace.html#Command Line

Create a batch file

Let’s call it ep44print.bat. To use it, put it in the path and type:

C:\> ep44print filename.txt

Here the batch file is typed out:

C:\> type ep44print.bat
@echo off
echo .
echo Set printer to 110 baud, 8 bit data
echo .
pause
“c:\Program Files (x86)\Bel\Realterm\realterm.exe” baud=110 port=3 sendquit=%1
echo .
echo %1 printed, I hope

the command ‘sendquit’ just sends the file then quits RealTerm.

It’s good to first format the document to be less than 80 cols wide. But there we go.

One important conclusion — the main reason for setting up on Windows was to test the USB to serial device, since I could not get it to work on Linux; and … the converter does seem to work. So its problems on Linux seem to be driver-related. That’s useful to know.

Appendix

First need cables. From ebay — a USB to DB9 cable ($4), plus a DB9 to DB25 adapter — to print from a modern machine like my NetBook. $4.

Photo of these components.

USB to serial cable plus driver disk and DB9 to DB25 adapter.

44 44 44 44.

Installing ZMC on Windows

ZMC is a suite of code for modelling diffuse scattering. If you don’t know what any of that means, there’s nothing to see here.

Binary distribution

Downloaded http://rsc.anu.edu.au/~goossens/ZMC_files/ZMC_Nov2015_Win_g95.zip OR http://djg.altervista.org/downloads/ZMC_files/ZMC_Nov2015_Win_g95.zip into an install directory and unzipped.

Opened a commandline window and cd’d to the directory where files were unpacked.

C:\WHATEVERTHEPATHIS> cd ZMCWin_g95
C:\WHATEVERTHEPATHIS> ZMC.exe --help2

Seems to run.

That’s it. Could have added the directory to my path.

Downloaded http://rsc.anu.edu.au/~goossens/ZMC_files/ZMC_source_package_Mar20_2014.tar.gz OR http://djg.altervista.org/downloads/ZMC_files/ZMC_source_package_Mar20_2014.tar.gz and explored the documentation and the sample simulation included, but used the more current binaries.

Also, went to http://dx.doi.org/10.1155/2015/878463 and downloaded the paper and the simulation hosted there. It is a complete working example. The simulation is also hosted at http://djg.altervista.org/downloads/ZMC_files/878463.f2.zip.

That’s the easy part done…

Installing from source — Cygwin

(1) Install gfortran

Ran Cygwin setup-XXX.exe (x86-64 in my case) and installed gcc-fortran package and any dependencies.

(2) Opened a Cygwin terminal and made an install directory

$ cd installs

$ mkdir ZMC

$ cd ZMC

$ wget http://djg.altervista.org/downloads/ZMC_files/ZMC_toolbox_source_April_2016.tar.gz

$ tar x -vzf ZMC_toolbox_source_April_2016.tar.gz

$ cd ZMC_toolbox_source_April_2016

(3) Run the compile script

$ bash compile_all_Linux_gfortran.sh

Errors!

(4) OK, try 32-bit toolchain.

install cygwin32-gcc-fortran

(5) Copy the script and change the compiler name to i686-pc-cygwin-gfortran.exe

$ bash compile_all_Linux_gfortran_32bit.sh

Mostly works, but bin2gray does not compile, and it is essential.

(6) Try using djgpp fortran (install via Setup.exe)

Change compiler to i586-pc-msdosdjgpp-gfortran.exe

$ bash compile_all_Linux_gfortran_djgpp.sh

Much like 32-bit compile– no bin2gray.

(7) What’s the error? We’ll fix it for the 32-bit gcc compile, rather than djgpp.

$ i686-pc-cygwin-gfortran.exe -w -static -O2 -o bin2gray_static bin2gray.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
bin2gray.f90:15:40:

bin2gray.f90:6:6:

use cmdline_arguments
2
bin2gray.f90:15:40:

character(len=*), parameter :: version = "$Id: bin2gray.f90,v 1.6 2007/06/04 05:23:11 aidan Exp $"
1
Error: Symbol ‘version’ at (1) conflicts with symbol from module ‘cmdline_arguments’, use-associated at (2)

OK, some kind of scope thing. I’ll just change ‘version’ in bin2gray.f90 to ‘versionbg’.

Works!

OK, download new bin2gray from:

$ wget http://djg.altervista.org/downloads/ZMC_files/bin2graybg.f90

And modify the script to the the 32-bit compiler and to compile this file instead of the other one.

(8) Make some links

$ ln -s /home/darren/installs/ZMC/ZMC_toolbox_source_April_2016/ZMCLinux_gfortran_static_32bit/ZMC_static.exe /home/darren/bin/ZMC

and so on.

(9) Testing finds that the binary ‘runs’ in that it throws no errors, but it does nothing. OK. We have a problem.

(10) Add ‘.exe.’ to end of each output file from the compile commands. Does not help.

(11) Retry 64-bit compile. It’s the native one, after all. See what the errors are.

Says: undefined symbol `strtoflt128′
But the relevant library is installed. Adding an explicit call to it -lquadmath does not seem to help.

Oh dear.

Installing from source — MinGW

What if we try for a Windows compile outside of Cygwin?

https://gcc.gnu.org/wiki/GFortranBinaries#Windows

Installed the MinGW bunch of stuff. Went to start menu and opened the MinGW terminal.

H:\Other\ZMC\ZMC_toolbox_source_April_2016>which gfortran
C:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin\gfortran.EXE

Used the version of bin2gray.f90 modified to replace the ‘version’ variable with, say, ‘versionbg’, (bin2graybg.f90 as noted above, though copied over the top of bin2gray.f90) then…

Created a new install batch file that looks like this:

H:\Other\ZMC\ZMC_toolbox_source_April_2016>type compile_all_Win_gfortran.bat
@echo off
REM Manual compile of ZMC, DZMC and toolbox programs.
REM
REM Note: I have gnuwin32 installed, so I hve access to pwd etc
REM Dependencies are accounted for by the order of the
REM compilations -- some modules depend on others.
REM This means that this could be broken by upstream changes
REM to the modules by Aidan Heerdegen (aidan@rsc.anu.edu.au)
REM
REM However, if this does not happen, compilation is simple.
REM
REM NOTE!!: Some manual customisation of this file will
REM probably be needed, but it is very simple:
REM
REM Namely the -I and -L flags to gfortran need to point
REM to the directory where the compilation is happening,
REM and that it is easiest for a relatively simple project
REM like this to use the flat structure, then just copy out
REM the executables to a directory in the path.
REM
REM No guarantees/warranties are given or implied. Use at
REM your own risk. Caveat emptor. Buyer beware.
REM
REM And you get what you pay for...
REM
REM darren.goossens@gmail.com Jul 2018
REM
echo ---------------------------
echo on
del *.o *.O *.mod *.MOD
set bindir=ZMCWin_gfortran_static
echo ---------------------------
mkdir %bindir%
echo ---------------------------
gfortran -static -O2 -ffree-line-length-0 -c precision.f90
gfortran -static -O2 -ffree-line-length-0 -c fundamental_constants.f90
gfortran -static -O2 -ffree-line-length-0 -c varying_string.f90
gfortran -static -O2 -ffree-line-length-0 -c globals.f90
gfortran -static -O2 -ffree-line-length-0 -c cartesian_class.f90
gfortran -static -O2 -ffree-line-length-0 -c array_functions.f90

gfortran -static -O2 -ffree-line-length-0 -c sort_functions.f90
gfortran -static -O2 -ffree-line-length-0 -c variable_array.f90
gfortran -static -O2 -ffree-line-length-0 -c binary.f90

gfortran -static -O2 -ffree-line-length-0 -c string_functions.f90
gfortran -static -O2 -ffree-line-length-0 -c statistics.f90

gfortran -static -O2 -ffree-line-length-0 -c binary_io.f90

gfortran -static -O2 -ffree-line-length-0 -c file_functions.f90

gfortran -static -O2 -ffree-line-length-0 -c hash_table.f90
gfortran -static -O2 -ffree-line-length-0 -c polysample.f90
gfortran -static -O2 -ffree-line-length-0 -c vector_class.f90

gfortran -static -O2 -ffree-line-length-0 -c mol2_class.f90
gfortran -static -O2 -ffree-line-length-0 -c cmdline_arguments.f90
gfortran -static -O2 -ffree-line-length-0 -c keyword_class.f90
gfortran -static -O2 -ffree-line-length-0 -c rotmatrix_class.f90

gfortran -static -O2 -ffree-line-length-0 -c crystallography_class.f90
gfortran -static -O2 -ffree-line-length-0 -c image_transforms.f90
gfortran -static -O2 -ffree-line-length-0 -c quaternion_class.f90
gfortran -static -O2 -ffree-line-length-0 -c zmatrix_class.f90

gfortran -static -O2 -ffree-line-length-0 -c pnm_class.f90
gfortran -static -O2 -ffree-line-length-0 -c superimpose.f90

gfortran -w -static -O2 -o ZMC_static zmc_Nov03_2015.f90 rannum.f ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o DZMC_static readat_zmc_Aug29_2014.f90 diffuse_allocatable_March20_2014.f90 rannum.f ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o bin2gray_static bin2gray.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o zmat_maker_static zmat_maker.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o zmat2xyz_static zmat2xyz.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o zmatchk_static zmatchk.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o zmat_anim_static zmat_anim.f90 rannum.f ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o zmat2mol2_static zmat2mol2.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o pgmave_static pgmave.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o pgmcombine_static pgmcombine.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o make_random_occ_static make_random_occ.f90 rannum.f ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o mol2xyz_static mol2xyz.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o catmol2_static catmol2.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o chkmol2_static chkmol2.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o pgm2mask_static pgm2mask.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o pgm2ni_static pgm2ni.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o ni2pgm_static ni2pgm.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
gfortran -w -static -O2 -o raw2pgm_static raw2pgm.f90 ps_routines.f fundamental_constants.o varying_string.o globals.o precision.o cartesian_class.o array_functions.o sort_functions.o variable_array.o binary.o binary_io.o string_functions.o statistics.o file_functions.o hash_table.o polysample.o vector_class.o mol2_class.o cmdline_arguments.o keyword_class.o rotmatrix_class.o crystallography_class.o image_transforms.o quaternion_class.o zmatrix_class.o superimpose.o pnm_class.o
move *.exe %bindir%
copy *.txt %bindir%
copy READ* %bindir%

Opened a Windows command prompt, went to the directory where the files are. Ran the batch file and all was well.

Done!

After this, it’s a case of actually putting together a simulation, putting ZMC binaries where they need to be, and so on.

 

Just for completeness.

xFig font selection

It’s a bit 20th century, but I like it.

xFig is an idiosyncratic but useful vector drawing program that comes with most Linux distributions. It also works under Cygwin and on Mac. It’s still maintained and it works well with LaTeX. These are the fonts it gives you — the famous 35.

An example of each of the available fonts.

The fonts available in xFig, default install.

Just put here for reference.

 

Off.

sf Impulse: A random review of nothing you’ll read

sf Impulse Vol 1 No 7

Roberts & Vinter, 1966

160 pages

This is the seventh issue of Impulse/sf Impulse, the successor magazine to Science Fantasy. It’s the last issue edited by Kyril Bonfiglioli, and in that way possibly marks the beginning of the end — not many more were to come.

Scan of the cover showing a giant lily attacking an oil well.

The cover of sf Impulse volume 1 number 7. Quite a good cover, I think.

If this is anything to go by, it’s not hard to see why.

It contains 70 pages of Make Room, Make Room!, Harry Harrison’s overpopulation novel, the one that led to the movie Soylent Green, and that is far and away the best thing in it. Most of the rest is taken up by ‘The Rig’, a vaguely interesting but very silly story by Chris Boyce. The rest is better left unnamed. It’s not even an interesting cultural artefact, because there aren’t any funky old adverts or naff but nifty examples of internal art. The cover is probably the second best thing about it.

You’ll never see a copy of it anyway, but this is really only for the completist collector or someone who weirdly has the other parts of the serial. It cost me 50¢ as a curiosity many years ago. I finally got around to reading it and I should have waited longer.

Strange highways.

Fixing a Pi

Raspberry Pi (running Raspbian) acting up. Throwing errors and seg faults on trying to update. apt-get keeps asking me to run

$ apt-get -f install

and

dpkg --configure -a

And then now and again apt-get itself was throwing seg faults! Or I’d update something and then it would forget I had done so. Odd.

Eventually, I came to the conclusion that maybe the SD card was on the fritz. Did the following:

Inserted SD card into desktop Linux machine. Worked out which device it was mounted at. It was /dev/sde. Made a direct copy of the card:

$ sudo dd if=/dev/sde of=picard.img

(if = input file system, of = output file system, or something like that) removed card, inserted blank of same size. Checked it was also mounted at /dev/sde; yes.

sudo dd of=/dev/sde if=picard.img

7761920+0 records in
7761920+0 records out
3974103040 bytes (4.0 GB, 3.7 GiB) copied, 1107.12 s, 3.6 MB/s

Rebooted RPi on new card.

Was able to run apt-get update and all that with no problems.

Saved!

 

Cake.

Fall of Fortresses by Elmer Bendiner — a high-quality WWII memoir

This is a very fine book. Bendiner was not a famous pilot like Guy Gibson (Enemy Coast Ahead) — he was a navigator who managed to complete a tour of 25 operations over occupied Europe in B-17 Fly Fortresses that steadfastly continued to attack during daylight hours, and suffered horrendous losses as a result. When 10% per mission was considered an acceptable loss rate, not many can have made it through 25.

Image of the cover of the Pan edition from the early 80s.

The cover of the edition I read.

But what makes the memoir interesting is not Bendiner’s achievements — not that they are negligible — but the honesty and insight that he brings. The book was published 35 years after the war ended, and that critical distance allows Bendiner to be autobiographer and biographer at the same time, something made possible I suspect by the intensity and otherness of war. There is a point in the book, near the end, when he has finished his tour but not yet been allowed to leave the aerodrome:

How stupid, how cruel to let me stay alive and safe among those who are still hostages to death. No surgeon would leave an amputated limb near the living patient.

This captures his ability to look upon the events from inside and outside at the same time, and to come up with a striking metaphor to capture it. Few war memoirs are as notable for the prose as this one, though it is worn lightly.

A few examples:

The cottage had a fine, dishevelled look, like a girl fresh from tumbling about in the hay.

I cannot take seriously those who adopt the pose of the disenchanted without having experienced the prerequisite enchantment.

It could be J. G. Ballard:

The earth was no longer tilled land. The cities were empty and staring. One imagined a world of grotesque fungi. The only signs of animation appeared in the yellow flicker of burning B-17s.

Or, speaking about a General after a raid that cost many men and machines:

He was in the position of a man who does not know precisely what he has bought but is certain that it was very expensive.

On keeping notes while flying:

I would have noted by heart’s blood dripped to the floor — the time, place, altitude.

Or, showing how we get the inside and the outside at once, he talks about watching a formation of planes heading out on a mission:

I exulted in that parade. I confess this is an act of treason against the intellect, because I have seen dead men washed out of their turrets with a hose. But if one wants an intellectual view of war one must ask someone who has not seen it.

And a little bon mot, yet hardly free of irony:

Navigators must exude self-confidence or abdicate.

I really cannot recommend this book highly enough. It is written with the wit and artistry of a top-line novelist, tackles some of the greatest topics in art, literature and life — war, death, life — and is a page-turner as much as any thriller.

It is interesting to compare it to one of the most famous war memoirs ever written, <i>If this is a man</i> by Primo Levi. Both authors are Jewish, and Bendiner reflects on his war and the experiences of the prisoners in Dachau, and shakes his head and knows that what he saw tells him nothing about that — but the similarities run deeper than happenstances of religion. Both books combine intellect and artistry to deal with the unexplainable. They show how human beings somehow survive, and how important it is that they fool themselves.

Bediner picked a poppy before every mission. He knew it was pointless, but he also knew that without it he was doomed.

 

Antithesis.