pages / notes / 2022 / 2021 / 2020 / 2019 / 2018


Macaroni cheese

Quickish food for cold days. Adapted from the back of the pasta packet

Boil the pasta and drain and return to the pasta pan. Add the drained mixed veg (I used the Blondelle brand can with turnip, carrot, green beans and flagolets) and half an onion chopped very fine

Heat the oil in a saucepan and add the flour and mustard powder stirring continuously until absorbed by the oil. Add the milk slowly and stirring often, bring to the boil. The sauce should thicken after a few minutes. Add most of the cheese so it melts into the sauce.

Mix the sauce into the pasta and veg in the pasta pan. Then arrange the mixture into a medium sized oven tray so the mixture is about one to one and a half inches deep. Top with remaining cheese, paprika and any other seasoning.

Bake in a pre-heated oven at Gas 5 / 190C for 30 mins until top just begins to go crisp and crinkly. Serve with bread and tomato salad.


Cubist tags

Inviting pebble dashed wall near bordesley green station Back of an advertising hording in Market area Bus shelter Fazeley St

Rain, dark days, blue wash, eyes seeking novelty.

No, people should not spraycan on walls, especially pristine white pebbledashed ones. But then they do - the 'artists' probably around the same age as the cave painters of prehistory (15+). Stylistic themes appear from time to time. Iain Sinclair wrote the essay on tagging, linking it with certain conceptual art practices involving text and letter forms. Image has reasserted itself over typography in the Digbeth area at least.


Kale, fennel and cannellini bean soup

Random soup idea tonight...

Method

Fry chopped carrot and fennel bulb in oil on medium heat in a large saucepan with lid on until softened and the fennel changes colour, about 10 min

Add onion, garlic and salt and pepper and fry for a couple of minutes more

Add cavolo nero and fry/saute for another 5 minutes or so

Add boiling water one or two inches over the veg and bring to medium boil and simmer for about 15 to 20 minutes with lid on

Add a handful of macaroni or other small pasta to thicken and the cannellini beans. Boil for a further 10 minutes with lid until pasta cooked. Perhaps add more water if sticking.

Serve in bowls with cheese and bread.

Sweet taste, not dominated by fennel. Kale came over well and the thick white stock contrasted with the dark leaf. Two large bowls with at least another serving left over.


Sourdough Success

Just baked a nice sourdough boule using a starter I started a couple of months ago and which has survived a week's holiday.

Hugh Fearnley-Whittingstall's 2013 Guardian article Bread with character: Hugh Fearnley-Whittingstall's recipes for sourdough contains a procedure for cultivating a 'wet' sourdough starter over a 10 day period, and a nice recipe for a loaf that comes out just under the kilogram when baked. Just skip the rant (first half of the article).

I cook my bread in a cast iron casserole as that seems to generate a decent crust without all the faffing about with steam trays and sprays in the oven. I usually need to add a little (30ml) of water to the sponge when mixing in the 300g of flour to make the final dough. I mix a teaspoon of malt extract in with that 30ml or so of water to support a longer fermentation time. The dough always seems smooth and easy to work, even if it is sometimes a little wet.

The most recent loaf used 150g of the starter, then 250g of Lidl strong white bread flour, then 200g of Alison's wholemeal plus 100g of the Lidl white bread flour. As the starter has a 1:1 flour to water ratio, the total flour in the recipe is 75 + 250 + 300 = 625g. The total water is a nominal 75g + 275g + 30g = 380g, so the hydration is something like 61% or so. These quantities fit my 30cm casserole well, but you could scale them down easily for a 500g flour loaf.


The Infinite Game

The Infinite Game by Simon Sinek categorises organisational process as a game that has no final win or loose but where you can be ahead or behind the game. The authour suggests that managements that work on the assumption that the game is finite do worse. He seems to have popularised and condensed ideas from an older book by James Carse Finite and Infinite Games (1980s, reprinted 2013) which sounds a bit more interesting.

Of course if your plan is to get bought be Google or something a final win is possible and you can always loose by going bankrupt.

Thought: political process could be seen as infinite game in sense that there has to be a process but there might not be an equilibrium or 'sunlit uplands' especially, no endpoint as such. Can the process be nudged or influenced in such a way that the state vector stays within some limits and so the game moves lower in carbon &c?

Limits: NHS, homes, jobs, services, soft state interactions being normal for younger people and so on.

Long(ish) term direction: lower consumption and lower waste production generally.


Windows

Scarborough Art Gallery, view from windows in gallery Scarborough Art Gallery, view from windows in gallery Scarborough Art Gallery, view from windows in gallery


Art on walls

A small drawing in what looks like wax resist on a label stuck on a wall A portrait in painted tiles in the alcove of a disused building


Basic bread recipe

Read the blog post below for some perspective...

Equipment

You need a large mixing bowl, a smaller bowl to weigh the flour and water and to wet your hands from, and a digital balance reading in grams and a loaf tin, spoons for mixing and a clean tea towel for covering the dough. A pair of oven gloves will come in handy when baking the loaf.

Ingredients

Method

Same dough can be cut into 6 for rolls, cooked on parchment for 10 to 15 min and eaten while warm.

Have fun with it...


Tom Jaine's sourdough starter

Tom Jaine wrote Making bread at home in the early noughties. A short practical book with recipes adapted to the domestic kitchen. I have not had much luck with sourdough recipes generally so I'm trying his take on the starter. I'm using boiled water as directed but as I wish to begin to divorce myself from plastic, I am using a small Chinese clay pot with a lid with a small hole for ventilation as opposed to bowls with clingfilm.

First stage

Tom Jaine's sourdough starter first stage a tiny nut of dough

Mix to stiff dough with fingertips - the tiny 90g starter does not warrant a worksurface kneading at this stage. Cover and leave somewhere warm (24 to 26 Celsius) for 'about' two days. Should be moist inside and slightly aerated, smelling sweet. Outside may form a crust.

Second stage: first refreshment

Tom Jaine's sourdough starter after 2 days some crust Tom Jaine's sourdough starter stage 2: soup made from de-crusted stage 1 plus 60ml of water Tom Jaine's sourdough starter after first refresh and a bit of kneading

As instructed I cut off the crust (quite dark and dry) and was left with some slightly aerated sticky and seet smelling dough. I mixed starter in the 60ml of water until it looked soupy. Added the flour and mix to a dough. Knead (still with fingers as small) actually in the pot. Leaving for a 'day or two' at 24 to 26 degrees Celsius (aka 'warm spot', airing cupboard in my case). Should smell very slightly sharp, have enlarged and may have formed a crust. Aeration ('chocolate mousse' effect when you pull at it) more prounounced.

Third stage: second refreshment (~12 hours before you intend to bake)

Tom Jaine's sourdough starter after 4 days just before second refreshment Third stage mixing in the 225g of flour After about 12 hours the starter is ready to go. Smells astringent, definitely a sourdough

Remove any crust. Dissolve remaining starter in the water and add the strong white flour to form a dough. Knead on work surface. Place back in pot and put back in 'warm place'. You should see 'every sign of life' after 8 to 12 hours. Should smell like dough - slightly sharp but not 'off'. Ready to add to a dough. I'll be trying the starter in a sponge and then going forward to a full loaf.

By the end of the 4 to 5 days, you will end up with at least 300g of starter (assuming halving the amounts for the first two steps to allow for crust removal). Jaine specifies a 'walnut' sized amount of starter for subsequent loaves. Just wondering what I do with remaining starter and if it can be refreshed. He recommends keeping some dough back from each bake to start the next bake.

I baked a loaf using 100g of the starter, a sponge and a dough. Rose, nice bubbles, very sticky and pretty sour. Makes very nice toast. I've kept 100g of the sponge back to try another loaf after a week in the fridge.

October 3rd: The starter took a bit of waking up but the result was a much sweeter smelling boule with an acceptable (but not bouyant) rise.

Second generation sourdough loaf from Jaine's starter recipe


Quick(ish) food

Tahini dip for bits of toasted bread

Fast pittas

Ful muddamas

200g of dried fava beans (the large size bean about 1.5 to 2cm long) will weigh about 450g when soaked overnight, giving 350g when shelled. After cooking, you have just over 400g of favas. There are lots of different ful recipes, below is adapted from Tori Avey.


Bread links about sponges

Currently working on a modification of my basic yeast bread recipe using a poolish to try to get better rise with wholemeal. Some nice recipes from the Web below...


What decline looks like

empty warehouse in a local industrial park fences around construction site with no visible activity subway

Slow coast into a siding, perhaps a bit of a jiggle as we go over the points. With Branching histories you can't compare the outcomes of alternative paths.


Moving Xubuntu with whole drive encryption from a smaller to larger hard drive using dd

I use whole drive encryption with laptops to give some protection to data in transit. My threat model is modest: leaving the laptop on a bus, or possibly an opportunistic thief not realising that the humble X61s core duo laptop (11 years old and counting) is worth about fifty quid at most. I recently swapped the 60Gb hard drive it came with for a 320Gb spinning rust hard drive left over from swapping a more recent machine to SSD. The Western Digital Blue 7200 rpm drive is, actually, a noticeable upgrade oddly enough, and an enlarged swap partition allows the use of hibernate to disk, allowing me to maintain projects in progress with security.

You can copy an encrypted hard drive to a new larger drive. You need an external hard drive with enough spare space to hold the whole size of your old hard drive (60Gb in my case), a liveUSB with a Linux distribution that has a recent version of cryptsetup and luks and a tool for resizing disk partitions (Gparted in my case). The whole procedure can be completed just using the target laptop. Backups of critical data are a good idea! The main stages are summarised below...

If you have whole drive encryption using luks then the last four steps become more complex and involve luks commands. Below is some of the output from fdisk on my default Xubuntu install...

Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1  *       2048   1499135   1497088   731M 83 Linux
/dev/sda2       1501182 617658367 616157186 293.8G  5 Extended
/dev/sda5       1501184 580689919 579188736 276.2G 83 Linux

And lvdisplay tells me that I have the following lvgroups within /dev/sda5...

--- Logical volume ---
  LV Path                /dev/xubuntu-vg/root
  LV Name                root
  VG Name                xubuntu-vg

  LV Path                /dev/xubuntu-vg/swap_1
  LV Name                swap_1
  VG Name                xubuntu-vg

So I'm assuming that you have swapped the hard drive, rebooted using your live USB and have successfully copied back the disk image. Now you have to...

I rebooted and checked the size of swap with top or free, and then enabled hibernate to disk.

References...


Hummus with chana dal

Chana dal is split chick peas that have been de-skinned. Makes a smooth and runny hummus.

150g of dry chana dal makes around 350g of hummus. Keeps for a few days in the fridge. Probably has less fibre than hummus made with whole chick peas.


R with RStudio on CentOS 6

A full install of Stella Linux (basically Centos 6 with extra packages for multimedia and some kernels) has security updates until November 2020. It runs glibc 2.12 which is old now, and it has a stable and very responsive Gnome 2 desktop. After updating you get GIMP 2.8, Firefox 60-esr and other base packages of various ages. As usual with RHEL based Linux distributions, the kernel looks pre-historic (2.6.32) but has security and some other patches backported.

Installing R and RStudio Desktop on a Centos 6 based system has become complicated because of the age of the libraries. Basically, recent RStudio versions need a newer QT library and won't install. Older legacy RStudio versions won't work fully with the current R version 3.2.x branch because the way R does graphics has changed.

My work around involves compiling an older version of R (R-2.15.3) which does have some syntax differences from more recent 3.x branch and then installing an older RStudio Desktop version (rstudio-0.98.1103-i686.rpm) from the binaries available from the RStudio legacy download page.

On a fresh install of Stella Linux with all updates applied it goes like this...

#yum grouplist # Install compilers, X headers and texlive and headers for readline
#yum groupinstall 'Development Tools'
#yum groupinstall 'Desktop Platform Development'
#yum groupinstall 'TeX Support'
#yum install readline-devel 
#cd Downloads
#wget -c https://cran.r-project.org/src/base/R-2/R-2.15.3.tar.g # extracted using nautilus
#cd R-2.15.3
#./configure  --enable-R-shlib
#make
#make install # message about missing inconsolata.sty but this affects R pdf docs and not functionality
#rpm -i --nodeps http://download1.rstudio.org/rstudio-0.98.1103-i686.rpm.

Using an older version of R like this does raise the issue of compatibility of CRAN packages that you might install. But you get the basic functionality and the RStudio IDE. RStudio will nag you about an updated version being available, just tell it to ignore the update. The --nodeps option is needed because RStudio depends on R and R won't be in the package database as we installed it 'outside of Yum'.


Shotwell on Slackware current

To build Shotwell (a photo manager that I have grown used to) on Slackware Current (15.0 not quite) you need the following packages...

brotli-1.0.7-x86_64-1_SBo.tgz
geoclue2-2.4.7-x86_64-1_SBo.tgz
gst-plugins-bad-1.14.4-x86_64-1_SBo.tgz
hyphen-2.8.8-x86_64-1_SBo.tgz
libgee-0.20.1-x86_64-1_SBo.tgz
libunique-1.1.6-x86_64-5_SBo.tgz
rest-0.8.1-x86_64-1_SBo.tgz
shotwell-0.24.0-x86_64-1_SBo.tgz
webkit2gtk-2.20.5-x86_64-1_SBo.tgz
woff2-1.0.2-x86_64-1_SBo.tgz

The dependency list is shorter than it used to be, some packages have been brought into the default Slackware install. All Slackbuilds from Matteo Bernardini's Github repository. I'm using a full install less the KDE package sets. I use xfce4 and half a dozen slackbuilds.


Three (local) laws

"Law I: Every body perseveres in its state of rest, or of uniform motion in a right line, unless it is compelled to change that state by forces impress'd thereon.

Law II: The alteration of motion is ever proportional to the motive force impress'd; and is made in the direction of the right line in which that force is impress'd.

Law III: To every Action there is always opposed an equal Reaction: or the mutual actions of two bodies upon each other are always equal, and directed to contrary parts."

The Mathematical Principles of Natural Philosophy, 1729, Motte translation from Newton's latin text.

Three laws along with the Law of Gravity lead when applied to the two body problem to an elliptical orbit. The position of the minor planet can be specified by 6 orbital elements, and then a series of coordinate transformations will allow you to calculate the position of the planet in the sky. The Stanford Encyclopedia page about Newton's Philosophiae Naturalis Principia Mathematica reminded me that Newton chose a specifically local formulation of his three laws to make empirical evidence easier to relate to the laws. The other planets make the situation much harder to resolve and so Poincare refocussed onto the global formulation of dynamics, allowing him to use topological methods.


Seasons

Definition of the seasons from my old copy of Smart

Officially Spring...


Probability is lack of information

Suppose I put three yellow marbles and seven blue marbles of the same size in a black bag and shake them up. Then you pick one of the marbles at random but keep it hidden in your hand.

We say that the probability that the marble in your hand is yellow is 3/10

You open your hand and see a yellow marble. The atoms are still all in the same places - nothing in the bag or your hand has changed. But that probability of 3/10 of seeing a yellow marble has become a certainty. Our information about what is in the bag has changed as well.


Approximate precession from equinox of now to equinox of J2000.0

Jean Meeus gives an approximate formula for converting equitorial star positions from the equinox (aka reference frame) of J2000.0 to some arbitarary year. I've used that formula to convert planetary positions in the 'equinox of date' to J2000.0 so I can compare them to star charts, simply by changing the sign of the changes in RA and Dec. Checking against Stellarium indicates reasonable accuracy (given that the planetary positions themselves are low precision).

Spreadsheet formulas below...

=-(3.075/3600 + 1.336/3600*SIN(RADIANS(B84*15))*TAN(RADIANS(B85)))*$B$18/365.25
=-(20.04/3600*COS(RADIANS(B84*15)))*$B$18/365.25

B18 contains the number of days since J2000.0, so B18/36525 is the number of Julian centuries from J2000.0. B84 has the planetary RA in hours, and B85 has the planetary declination in degrees. The constants (3.075, 1.336 seconds of time and 20.04 seconds of arc) are valid for J2000 plus or minus 50 years or so. Lets face it, that will see me out.

A quick test against Stellarium using coordinates for the star Capella gives answers within two seconds of time for the RA and a tenth of a second or so for the declination. The actual formulas are below...

Change in RA = 3.075 + 1.336 * sin(RA) * tan(dec) * T

Change in Dec = 20.04 * cos(RA) * T

Where the change is measured in seconds of time for RA and seconds of arc for Dec. T is the time difference between the epochs in Julian centuries. You add the changes on if going from an earlier epoch to a later one. You subtract the changes if going from a later epoch to an earlier one (as we are when changing positions referred to today's equinox to J2000.0)

For longer time reaches than about 50 years either side of J2000.0, the constants depend on a polynomial in T (details in Meeus' book Chapter 20). Below for Cappella positions taken from Stellarium 12th March 2019 and precessed back to J2000.0...

Capella                 Deg/h	Min	Sec
Ra (date)                 5	18	8.17
Dec (date)               46	 0	53.4
dRA (hrs)                 0	 1	25.16 -0.02366 (=0.3548 degrees)
dDec (degrees)            0      1	9.88  -0.01941
RA (2000)                 5	16	43.01
Declination (2000)       45	59	43.52
Ra (Stellarium J2000.0)   5	16	41.62
Dec (Stellarium J2000.0) 45	59	44.2

A third of a degree in RA just about plottable on star charts at telescopic scale.


Bash dice rolls

The shuf, sort, and uniq commands in core utils can be used to simulate random processes. The commands below simulate rolling two dice and adding the scores 50 000 times and tallying the results. A bit of sed was needed to sort out the spaces and commas, it might be that I can generate the files with commas to begin with. I'd like to do a pipeline with just the frequency table output but we'll see how that goes.

$ shuf -r -n 100000 -e 1 2 3 4 5 6 > dice_throws.txt
$ xargs -n2 < dice_throws.txt | while read x y; do ((T=x+y)); echo $T; done > two_dice.txt
$ sort two_dice.txt | uniq -c > frequency.txt
$ sed -e 's/\s\+/,/g' frequency.txt > frequency2.txt
$ sort -t, -k3,3n frequency2.txt

The output from the last command is...

bash-5.0$ sort -t, -k3,3n frequency2.txt
,1429,2
,2723,3
,4235,4
,5539,5
,6903,6
,8405,7
,7043,8
,5545,9
,4158,10
,2642,11
,1378,12

I'm now hitting stack exchange for more bash foo to eliminate the leading comma and perhaps make an asterisk based bar chart of the frequencies. The xargs command takes a minute or so, the rest the blink of an eye. Web pages consulted...

For giggles, here is the output from 120000 rolls of three dice with added scores...

bash-5.0$ sort -t, -k3,3n frequency2.txt
,561,3
,1628,4
,3290,5
,5436,6
,8396,7
,11725,8
,13797,9
,14904,10
,15099,11
,13858,12
,11718,13
,8246,14
,5723,15
,3396,16
,1647,17
,576,18

Signed angles in degree:minute:second format on a spreadsheet

A small triumph. Suppose you want to print an angle in degrees and minutes format. The angle can be positive or negative like the declination or altitude. On OpenOffice you can do it like this...

B115 has the angle as decimal degrees...
B116: Angle sign:    =if(B115>0;"+";"-")
B117: Abs of angle:  =abs(B115)
B118: Deg figure:    =int(B117)
B119: Mins figure:   =round((B117 - B118)*60;0)
B120: Make string:   =concatenate(B116;text(B118;"00");":";text(B119;"00"))

Took half an hour of Googling and some trial and error but easy when you think about it. I suppose something like =if(B115<0;"-";"+") might be safer but the chance of any declination being exactly zero is tiny...

Note added later: The inevitable happened. The RA of Mars for 2019 3 13 20:27 UT comes out to 3.0499621 hours. Using the formulas above gives you 3h 2m 60s. So I had to implement a carry 1 using if statements...

=CONCATENATE(TEXT(INT(D100),"00"),":",TEXT(IF(D110>59.5,D109+1,D109),"00"),":",TEXT(IF(D110>59.5,0,ROUND(D110,0)),"00"))

Where D100 has the decimal RA stored and D109 is minutes and D110 is seconds. LibreOffice 5 uses the comma as the argument separator in the spreadsheet formulas, OpenOffice 4 uses the semi-colon.

Another triumph! The following one cell formulas will produce the format string directly. The first one is for an angle that can be in the range [-359d59m59s;359d59m59s]. In OpenOffice and LibreOffice I can copy and paste the formula as shown below into a cell (click in the 'input line' first so you are copying into the cell itself and not the worksheet)' OpenOffice will reformat the formula. I'll probably change the argument separator to a comma for the MS Excel people.

=CONCATENATE(
    IF(A1<0;"-";"+");
    TEXT(INT(ABS(A1));"00") ;"d";   
    IF((ABS(A1) - INT(ABS(A1)) - INT( (ABS(A1) - INT(ABS(A1)))*60 )/60) * 3600 > 59.5;
        TEXT(INT((ABS(A1) - INT(ABS(A1)))*60)+1;"00");
        TEXT(INT((ABS(A1) - INT(ABS(A1)))*60);"00")
    );"m";
    IF((ABS(A1) - INT(ABS(A1)) - INT( (ABS(A1) - INT(ABS(A1)))*60 )/60) * 3600 > 59.5;
        TEXT(0;"00");
        TEXT(ROUND(    (ABS(A1)-INT(ABS(A1))-INT((ABS(A1)-INT(ABS(A1)))*60)/60)*3600;0    );"00")
    );"s" 
)

And the formula below is if the angle is in the range [0;359d59m59s] e.g. Right Ascension

=CONCATENATE(
    TEXT(INT(A2);"00") ;"d";   
    IF((A2 - INT(A2) - INT( (A2 - INT(A2))*60 )/60) * 3600 > 59.5;
        TEXT(INT((A2 - INT(A2))*60)+1;"00");
        TEXT(INT((A2 - INT(A2))*60);"00")
    );"m";
    IF((A2 - INT(A2) - INT( (A2 - INT(A2))*60 )/60) * 3600 > 59.5;
        TEXT(0;"00");
        TEXT(ROUND(    (A2-INT(A2)-INT((A2-INT(A2))*60)/60)*3600;0    );"00")
    );"s" 
)

Try these formulas with -3.04986112 in A1 and 355.04986112 in A2 and you should get -03d03m00s and 355d03m00s as outputs. Now try -3.04986111 in A1 and 355.04986111 in A2. You should see -03d02m59s and 355d02m59s. I'm trying to find edge cases that can break the formula then writing it up on the page as there are few examples on the interwebs.


Feller quote

"...In the back of our minds we keep an intuitive interpretation of probability which gains operational meaning in certain applications. We imagine the experiment performed a great number of times. An event with a probability 0.6 should be expected, in the long run, to occur sixty times out of a hundred. This description is deliberately vague but supplies a picturesque intuitive background sufficient for the more elementary applications. As the theory proceeds and grows more elaborate, the operational meaning and the intuitive picture will become more concrete."

William Feller, Introduction to Probability Volume 1, 2nd edition, Wiley, page 5.

Roll of the dice

Which of the three patterns below looks more random?

400 dice rolls with 6 as red and other numbers as yellow 400 dice rolls with 6 as red and other numbers as yellow 400 dice rolls with 6 as red and other numbers as yellow

Trick question, they are all produced using the formula...

 
=INT(RAND()*6+1)

...copied along and down to fill 20 by 20 cells. Each time you press F9 you get a different random roll of 400 dice. Each pattern is equally likely.

Keep pressing F9 long enough and you could get a pattern like this...

equally likely but untypical configuration

...but that would be a bit like the milk spontaneously separating from your tea as you carry on stirring the cup. Less so because only 400 sites as opposed to 6 × 1023 sites but a similar principle.

If you download the .png images, you will find a measure of the relative complexity of the patterns using the file size...

bash-5.0$ ls -la
-rw-r--r-- 1 keith users 25606 Feb 18 18:45 400dice01.png
-rw-r--r-- 1 keith users 27997 Feb 18 18:46 400dice02.png
-rw-r--r-- 1 keith users 26328 Feb 18 18:47 400dice03.png
-rw-r--r-- 1 keith users 12980 Feb 18 19:11 400dice04.png

As you can see the fourth pattern produces a compressed PNG file that is much smaller than the other more disordered patterns. Lossless file compression works by finding patterns in the data that allow the data to be written in a smaller space.

Here is an old chestnut paraphrased from a gcse practice exam:

Algernon, Beatrice and Charmaine roll a fair dice 10 times each. The three sets of scores are shown below...

Which score is most likely to occur? Explain your answer

The answer of course is that all three are equally likely (and that was an alternative answer in the original multiple choice form of the question). Most people will say that Charmain's scores are less likely because they are less typical of a set of 10 dice scores. They will say that scores like Algernon's are more likely because that run of numbers is a bit more typical in the sense that sets of ten scores will sort of look the same but not exactly the same. The complexity of Algernon's and Beatrice's scores are certainly higher than the complexity of Charmain's scores and I think that many people will see that as a proxy for likelihood.


Why does chalk get added to bread flour produced within the UK?

"The latest NDNS data shows that cereals and cereal products provide around 30% of calcium intakes, the majority from bread and flour containing products. Flour may be a particularly important source of calcium, especially for those who do not consume dairy products, and because milk consumption is in decline"

Scientific Advisory Committee on Nutrition: NUTRITIONAL IMPLICATIONS OF REPEALING THE UK BREAD AND FLOUR REGULATIONS [PDF 30 pages ]

Ever wondered why we add chalk to bread flour (except wholemeal)?

It all stems from the second world war and the National Loaf.

Look for the niacin/thiamine/calcium/carbonate/iron on the ingredients list and you know the bag of flour was produced from UK grown wheat. Useful proxy.


Bread Recipe

This always works (well, it is always edible and fluffy and light with decent holes on a good day)...

You need a digital scale, a large mixing bowl, a banneton or bowl with floured tea towel, and a cast iron casserole...


Slim Slackware

Not really minimal, you get the xfce desktop and network manager, but a very basic slackware for systems with small emc storage. Prompted by a recent thread about installing Slackware on a Chromebook with 16Gb.

bash-5.0$ df -m
Filesystem     1M-blocks  Used Available Use% Mounted on
/dev/root         195837  5264    180558   3% /
devtmpfs            3925     0      3925   0% /dev
tmpfs                 32     2        31   4% /run
tmpfs               3928     0      3928   0% /dev/shm
cgroup_root            8     0         8   0% /sys/fs/cgroup

Install package sets A, L, N, X, XFCE, then install key packages as follows...

# /etc/rc.d/rc.networkmanager start
# rm -r /usr/doc/*
# rm -r /usr/man/*

Then exit root and startx in my normal user to get xfce going and then mount the USB stick with the package sets on and add...

Then I installed OpenOffice from the RPM binary from OpenOffice.org that I had already converted using rpm2tgz on another machine along with slackbuilds of xfce-whisker-menu and the text editor leafpad.

Perl and Python interpreters from D/ will probably be needed for full functionality from many programs. GIMP is behaving more oddly than usual without a system python.

This frankenslack is really only needed if you only have 16Gb of storage on one of those small laptops. Even with 32Gb I personally would do a full install minus kde/kdei.


Learning strategies (maths)

See HN discussion of two of Gowers' blog posts [1] [2] for context.


Dog food

Notes from Pascal-Zachary's book Show Stopper about the team behind the writing of Windows NT, the basis of subsequent versions of Windows. Dave Cutler convinced the programmers to run NT on their own coding computers and to find and report bugs. In those (early 1990s) days there was not a bug tracker and there was no appaport or reportbug program. The programmers had to try to work out which part of the program code contained the bug and then report the bug to the code writer for that section.

"As more programmers ate dog food they were astonished by NT's crudeness."

The point being that to get any work done at all they would as a team have to set norms for handling bugs and for tracking the root cause of each bug...

"Almost noone liked the interruptions but Cutler considered them unavoidable. Practical concerns made him an incrementalist at heart. Even code based on the best specs and designs usually only improved a little at a time. This was tedious work often avoided. So Cutler favored bothering code writers, whom he suspected always wanted to write new code and forget about yesterday's mistakes"

The problem of finding which section of the code contained the bug was difficult because most bugs occur during integration testing (each component of the code having passed some kinds of tests) and result from interactions between different parts of the system. Code writers whose components reached into many areas of NT would be involved in more bug reports - the 'cross section' of their feature was higher. Show Stopper provides the example of the Program Manager for the Windows component of NT (Windows was integrated into NT later in the project). Johanne Caron as code writer of the Program Manager had to defend her code and had to spend a lot of time resolving bug reports before the code was completed. The book reports that she found having to defend her work and the automatic assumption that it was the program manager code that was at fault wearing.


Stable systems have no history

Equipment needed: Large round bottomed bowl and marble or small plastic 'superball'.


Lessons

Things I have found...

The first two are famous (and they work).

The last one is mine. That works as well. We have so many consultants, coaches and inspectors and agencies these days that sometimes we forget the people who actually do the stuff. I have always found that the ones who actually do the stuff can tell you exactly what needs fixing and exactly what the issues are. Just listen (but with critical faculties engaged and filtered through the first two bullets).


Othering

Walker art gallery sculpture room Have you been othered? I have not seen this that much but then I would not expect to 
given the circumstances

Jade Montserrat: Instituting Care. Surprising what you can do with some chipboard, blankets, clipboards and charcoal.


Fava beans

Fava beans (aka broad beans) are the base ingredient of ful maddamas and can be obtained in the uk in tins or as dried beans. You can buy fresh green broad beans in upmarket supermarkets in the UK when in season at an outrageous price because the legume is not popular.

The canned variety from the middle east are in a very strong brine: you have to rinse them for some time to reduce the salt content. Then you can mash them with a bit of oil garlic and lemon juice, or just have them whole with tarragon, as a breakfast.

I decided to try the dried version: don't. You have to soak them overnight, then remove the tough outer layer on each bean, then boil them for an hour or so. According to the recipe sites, removing the tough outer layer is easy, just squeeze the bean at the end with the black 'eye' and the naked bean will pop out. Lies! It took me half an hour and a lot of fingernail stress to pick 350g of beans.

You have been (sic) warned. I'm sticking to the cans.


String theory

Moral: what you see depends on how far away you are (adapted from Lost in Math by Sabine Hossenfelder)

Equipment needed

A large ball of hairy string Optional: magnifying glasses or x5 loupe or similar

Main (about 5 to 10 mins depending on if interested or not, probably done with handful of people)

Might try for 'how does seeing objects work?' - reinforced by switching the lights off? Seeing takes energy - but the energy comes in lumps called photons. The more photons the stronger the light. The colour of the light depends on the energy of the photons, blue light is made of photons with higher energies than red light.

In particle physics you need very high energy photons and other kinds of energy because you want to see much smaller distances. That is why the machines need to be so big

Optional: examine ball of string with the magnifying glass. What is the string made of? Fibres within the string - so the one dimensional line is really a 3 dimensional structure twisted tightly together. Some particle theorists think that might be how our space works.


Cloister

Magdalen College Oxford cloister one crisp January day I feel like this leaf left over from autumn sometimes - not often


Slackware notes draft

Slackware features...

The first three features are down to Patrick Volkerding's experience over the decades and decision to keep going with the way it started. The last two are down to other people doing an amazing amount of work collectively to support software they needed. As an end user I'm grateful to all of them.


Deleting text between two different patterns

Very useful awk script posted by Tinkster on LinuxQuestions in 2005. I'm posting it here in case of bitrot...


#!/bin/awk -f
# strip between BeginTag and EndTag
# usage: awk -v BeginTag="xxx" -v EndTag="yyy" -f strip.awk input > output


BEGIN{
        if (!BeginTag) {
           print "usage: awk -v BeginTag="xxx" -v EndTag="yyy" -f strip.awk input"
           exit;
        }
}

{
        if (Split) {#
                if ($0 ~ EndTag) {
                        $0=substr($0,index($0,EndTag)+length(EndTag))
                        Split=0
                }
                else $0=""
        }

        if ($0 ~ BeginTag){
                Line=substr($0,1,index($0,BeginTag)-1)
                if ($0 ~ EndTag) Line=Line substr($0,index($0,EndTag)+length(EndTag))"\n"
                else Split=1
                if (Line=="" || Line=="\n") Line="!@!@empty"
        }

        if (Line) {
                if (Line != "!@!@empty") printf Line
                Line=""
        }
        else print $0

}

As the usage string suggests, you invoke the script as follows...

awk -v BeginTag="starttag" -v EndTag="endtag" -f strip.awk kpb2.txt > kpb3.txt

The script gets rid of the start and end tags as well and can work with intermediate text spread over lines or on the same line as the source file.