Birdland – Kerinne Jenkins

Click to fly to Birdland

Birdland Films

Birdland Films was created by Kerinne Jenkins in 2017, as a home for her own work across a number of platforms, but more importantly as a starting point. To establish a place where other like minded filmmakers, creatives and artists could come to collaborate and create.

Inspired by the feel, the tone and the emotion in the Patti Smith song ‘Birdland’;

I am helium raven and this movie is mine.

And we are free to create anything we could possibly imagine.

Whether it’s a film, a podcast, a music video, an installation, a play or a poem. Whether it’s for long or short, for big screens or small, there is no one format that we will limit ourselves to. Birdland Films hopes to grow and change with every person who comes into the fold.

But there is one rule of Birdland.

That at the heart of any project is a focus on character and story. It might seem like we’re stating the obvious, but we want to make sure that this comes through in anything we make, whether it’s a traditional narrative, a case study, a commercial or an installation.

Let’s never get too distracted by all the other parts of the process that we forget why we wanted to make these things in the first place.

Posted in Bach, Films | Tagged , | Leave a comment

Birdland – Patti Smith

Horses is the debut album by American musician Patti Smith, released in 1975 on Arista Records. The record was a key factor and major influence on the New York punk rock scene.

At the time she recorded Horses, Patti Smith and her band were favorites in the New York club scene along with Blondie and The Ramones. The former’s influence can be best heard in the track “Gloria”, a radical retake on the Them song. “Birdland”, in particular, owed more to the jazz which Smith’s mother enjoyed than to the influence of punk. When recording this song, which was improvised by the band in Electric Lady Studios, Smith has said she imagined the spirit of Jimi Hendrix watching her. The lyrics of “Birdland” are based upon A Book of Dreams, a 1973 memoir of Wilhelm Reich by his son Peter. Several of the album’s songs — “Redondo Beach”, “Free Money”, “Kimberly” — were inspired by moments with members of Smith’s family, while others — “Break It Up”, “Elegie” — were written about her idols. “Land” was already a live favorite and featured the first verse of Chris Kenner’s “Land of a Thousand Dances” and contains a tribute to her long-time idol Arthur Rimbaud. Guest musicians included Tom Verlaine of Television and Allen Lanier of Blue Öyster Cult.

“Horses” is often cited as one of the greatest albums in music history. In 2003, the album was ranked number 44 on Rolling Stone magazine’s list of the 500 greatest albums of all time. NME named the album number 1 in its list “20 Near-as-Damn-It Perfect Initial Efforts”. According to a list released by Time magazine in 2006, Horses is one of the All-Time 100 Greatest Albums.

His father died and left him a little farm in New England.
All the long black funeral cars left the scene
And the boy was just standing there alone
Looking at the shiny red tractor
Him and his daddy used to sit inside
And circle the blue fields and grease the night.
It was if someone had spread butter on all the fine points of the stars
‘Cause when he looked up they started to slip.
Then he put his head in the crux of his arm
And he started to drift, drift to the belly of a ship,
Let the ship slide open, and he went inside of it
And saw his daddy ‘hind the control board streamin’ beads of light,
He saw his daddy ‘hind the control board,
And he was very different tonight
‘Cause he was not human, he was not human.

And then the little boy’s face lit up with such naked joy
That the sun burned around his lids and his eyes were like two suns,
White lids, white opals, seeing everything just a little bit too clearly
And he looked around and there was no black ship in sight,
No black funeral cars, nothing except for him the raven
And fell on his knees and looked up and cried out,
“No, daddy, don’t leave me here alone,
Take me up, daddy, to the belly of your ship,
Let the ship slide open and I’ll go inside of it
Where you’re not human, you are not human.”

But nobody heard the boy’s cry of alarm.
Nobody there ‘cept for the birds around the New England farm
And they gathered in all directions, like roses they scattered
And they were like compass grass coming together into the head of a shaman bouquet
Slit in his nose and all the others went shooting
And he saw the lights of traffic beckoning like the hands of Blake
Grabbing at his cheeks, taking out his neck,
All his limbs, everything was twisted and he said,
“I won’t give up, won’t give up, don’t let me give up,
I won’t give up, come here, let me go up fast,
Take me up quick, take me up, up to the belly of a ship
And the ship slides open and I go inside of it where I am not human.”

I am helium raven and this movie is mine,
So he cried out as he stretched the sky,
Pushing it all out like latex cartoon, am I all alone in this generation?
We’ll just be dreaming of animation night and day
And won’t let up, won’t let up and I see them coming in,
Oh, I couldn’t hear them before, but I hear ’em now,
It’s a radar scope in all silver and all platinum lights
Moving in like black ships, they were moving in, streams of them,
And he put up his hands and he said, “It’s me, it’s me,
I’ll give you my eyes, take me up, oh now please take me up,
I’m helium raven waitin’ for you, please take me up,
Don’t let me here,” the son, the sign, the cross,
Like the shape of a tortured woman, the true shape of a tortured woman,
The mother standing in the doorway letting her sons
No longer presidents but prophets
They’re all dreaming they’re gonna bear the prophet,
He’s gonna run through the fields dreaming in animation
It’s all gonna split his skull
It’s gonna come out like a black bouquet shining
Like a fist that’s gonna shoot them up
Like light, like Mohammed Boxer
Take them up up up up up up
Oh, let’s go up, up, take me up, I’ll go up,
I’m going up, I’m going up
Take me up, I’m going up, I’ll go up there
Go up go up go up go up up up up up up up
Up, up to the belly of a ship.
Let the ship slide open and we’ll go inside of it
Where we are not human, we’re not human.

Well, there was sand, there were tiles,
The sun had melted the sand and it coagulated
Like a river of glass
When it hardened he looked at the surface
He saw his face
And where there were eyes were just two white opals, two white opals,
Where there were eyes there were just two white opals
And he looked up and the rays shot
And he saw raven comin’ in
And he crawled on his back and he went up
Up up up up up up
Sha da do wop, da shaman do way, sha da do wop, da shaman do way,
Sha da do wop, da shaman do way, sha da do wop, da shaman do way,
Sha da do wop, da shaman do way,
We like birdland.



Posted in Bach | Tagged , , , | 1 Comment

Extracting numbers from text – update

I have previously posted a spreadsheet with user defined functions (UDFs) using regular expressions to extract numbers from a text string (see Extracting numbers from text and regular expressions).

I have now modified the Extractnums function to optionally return the numbers as text strings, rather than values. This allows for instance, for telephone or account numbers to be extracted without corruption, or dates in number format to be returned as a string to avoid problems with differing regional date formats.

The spreadsheet (including open source code) can be downloaded from:


The screenshot below shows output from the ExtractNums function with the Returnstrings argument omitted (default = False), and set to True (click on image for full size view):

The optional arguments to the function are:

  • ReturnStrings: return all numbers as strings; default = False
  • Position: return the number at the specified position; default = 0 = return all numbers
  • MaxNum: maximum number of values to extract from the string; default = 10
  • DecString: decimal point string; default = “.”
  • IgnoreString: character to be ignored if surrounded by two numbers; default = “,”

Note that in columns F to I no optional arguments have been given, and the input range includes rows 18 to 30.  The function returns a table of the extracted numbers, using all the default settings.  In Columns K to N the ReturnStrings argument has been set to True, and a separate function has been entered for each line, so that different optional arguments can be applied on each line.

Posted in Excel, UDFs, VBA | Tagged , , , , , | Leave a comment

Joe Boyd on Unhalfbricking

Joe Boyd talks about the transition of Fairport Convention from a band playing American pop to a band playing English folk music like it had never been played before:

And a song from the album, A Sailor’s Life:


Posted in Bach | Tagged , , , | Leave a comment

Indexing pdf content, again

I discovered today that my latest computer (with 64 bit Windows 10) had not been indexing the content of pdf files, which makes doing a search on local file content pretty much a waste of time.  Checking the file search settings I found that the pdf setting indicated : “Registered ifilter is not found”.  Searching for a solution I found nothing official from either Microsoft or Adobe; neither did I find a very useful post from a blog by the name of NewtonExcelBach:

Indexing pdf content

The solution is to download the 64 bit ifilter from :

See the link above for more details.

While I was at it, I also decided to install the latest Acrobat Reader, but found at the Adobe site the only version apparently available was the DC (data cloud) version, which I did not want.  The secret here is to go to:

Acrobat Reader – Not DC

which looks like:


Once you select an operating system and a language, it then reveals that yes, actually you can still download the non-DC version of Acrobat Reader.





Posted in Computing - general | Tagged , , , , | 2 Comments

Year 9 Report

Last years’ statistics for this blog are now uploaded to Onedrive. The link to each post is preserved in the spreadsheet, so it makes a convenient index to what has been posted over the year, and what people are looking at from previous years. You should be able to access the links in the window below, or open the file in your browser or Excel, or download it.

Of the 2016 posts, the most popular overall was:

Use Matplotlib from Excel with xlwings

The most popular in the Newton category was:

2D non-linear FEA with Excel

and the most popular in the Bach category was:

The Big Short and When the Levee Breaks

From the “deserving but sadly neglected category” I have chosen (and they are all worth a look/listen):


Non-linear frame analysis; moment curvature and self-weight


xlwSciPy 1.09 – update for xlwings 0.10 and Scipy 0.18.1


Jack Bruce on double bass


Posted in Bach, Excel, Newton | Tagged | Leave a comment

The meaning of = in Python

In VBA, if you have an array named a and a variant named b, then the statement “b = a” creates a new array b with the same size and values as a.  If the values of either a or b are subsequently changed, the values of the other remain unchanged.

In Python it doesn’t work that way.  All variables are objects and “b=a” indicates that the object named a is now also named b.  The result is that b not only has the same values as a, it is the same in every other respect.  If the values of either a or b are changed, the values of the other are also changed.  This behaviour can cause problems for the unwary, and also sometimes it is necessary to create a new object with the same values as the original, but not otherwise connected.  Python provides ways of doing this, but the detailed workings are not always obvious, behaviour varies depending on the type of the object, and different ways of achieving the same end can have huge differences in performance.  This post therefore looks at the various options for making independent copies of different objects, focussing on Python lists and Numpy arrays.

Suppose we create a list with name ‘a’:
>>>  a = [1,2,3]
We can then give that list another name, ‘b’:
>>>  b = a
We can check that the two names indeed refer to the same object:
>>> b is a
Then any operation we perform on a also affects b, and vice versa:
>>> a[2] = 4
>>> b.append(5)
>>> a
>>> b

However, if we assign a new list to one, the other remains unchanged:
>>> a = [4,5,6]
>>> a
>>> b
>>> b is a

Methods that can be used to create a new copy of a list include:

  •  Create a new list of the same size, then loop through list ‘a’ and assign the value of each element to list ‘b’.
  • Use the copy or deepcopy functions (see below for differences between the two)
  •  Create a Numpy array with the values in the list, then convert that array back to a list
  •  For a list of lists, create a new list of the same size and shape, then loop through list ‘a’ and copy the value of each sub-list to list ‘b’.

To use the copy or deepcopy functions we must first import the copy module, then:
>>> a = [1,2,3]
>>> b = copy.copy(a)
>>> b
>>> b is a

Copy may also be used on a list of lists, but comes with a catch:
>>> a = [[1,2,3],[4,5,6]]
>>> b = copy.copy(a)
>>> b is a
>>> b[0] is a[0]

So copy creates a new object for the top level list, but each sub-list refers to the same object as in ‘a’.  We could loop through b and create a new copy of each sub-list, or use the deepcopy function:
>>> b = copy.deepcopy(a)
>>> b[0] is a[0]

To check how these alternatives work in practice I have set up an Excel function to perform the copy operations on a large array, and return times, data types, and values from both arrays when a value in one is changed.

The screenshot below shows results for 13 different methods of copying a list  of lists (click on the image for full-size view).  Note that for the results  shown in red the process has created an alias, rather than a new copy.


Of the results that do create a new copy of all elements of the original list, method 11 is by far the quickest, using copy to create a new array, then using copy again on each sub-list.  The deepcopy function is convenient, but is very much slower.

For Numpy arrays the operation a=b works the same as for lists; b refers to the same array as a.  On the other hand the copy and deepcopy functions both create a full new array.  There is also a Numpy copy function and a copyto function, and several other ways to copy to a new array, as shown below:


There was much less variation in the times of the different options (other than looping through the array, and assigning item by item), but the simple operation:
y = np.array(x)
was consistently the fastest.

Posted in Arrays, Excel, Link to Python, NumPy and SciPy, UDFs, VBA | Tagged , , , , , , , , , | 2 Comments