A few poems

Somewhere North of Tucson
After a drawing by Robert Hale

A quiver of flaming arrows hangs high
In a restless blue sky.
Buttes, the color of ancient blood, and
A pile of bleached bones, spilled on the floor of arroyo seco
Hum along with the song of the saguaros.

The desert here breathes long and shallow,
The sand and rocks swallow the heat
Before it devours me.

I was supposed to meet someone here once
[We’ve all been there].
The rendezvous turned out to be a mirage

I cast my dilemma to the four corners not
Drawing so much as an echo.

So, I planted my tent stakes among the gilas and javelinas,
Learned to catch flaming arrows barehanded, and sold jewelry
Made from polished buffalo dung to tourists.

Something about the sparseness quenches a thirst.
At night, you can watch time travel, spiraling in sync with the galaxies.
I’ve learned to get on with the mirages and talking cactus.

Today, my tent wore out, I surrendered.
I drew myself next to a saguaro and skull with horns
And became part of the landscape.

The Last Peach

In the deepest depths of August
Even hotter than July
I harvested tomatoes
Red falling from the vine

In the kitchee in a bowl
Fruit flies buzzing near
Cuts a solitary figure
The last peach of the year

That fuzzywuzzy orb
The color of fiery skies
Patience has restrained my bite
Till the moment divine arrives

[Whooosh] like a zephyr you appear
Wearing nothing but a smile
Like Venus on the half shell
In twenty first century style

You sink your fangs into the flesh and
Rivulets of gold cascade
Over your lips and chin and breast
Sounds of splendid pleasure made

If it were anyone else but you
I’d have sent a fleet of harpies
To reclaim that golden treasure
And hide it in the berries

Now the sweetest prize has gone
Where summer goes to rest
i’ll settle for canned peaches
And enjoy that delicious mess

Cat got your tongue

Mother tongue or
Another tongue
Tongue twister or
Freudian slip
It’s on the tip if my tongue

Baked, boiled, pickled or pierced
Speaks in tongues
Tongues of fire
Licking licking licking
Wagging wagging wagging

Silver tongue
Forked tongue
Sharp tongue
Bite your tongue
Get a good tongue lashing

Tongue in cheek
Tongue and groove

Clucking, ticking, kissing, hissing
Stick out your tongue!

Summer Solstice 2022

The sun rose hot on
This longest day’s rays.
Morning Mercury passes 90
Racing fans that can’t keep up.

I’m splayed on the queen
Like a sunnyside up on a mound
Of home fries.
Perched on a single elbow
my pen prospects for gems.

Just another day in the Anthropocene

The world is inflamed.
To cool us off, we throw fossils on the pyre.
The little blue dot is in flames and
running short of water.

There is a green fly on my thigh
Ratcheting over skin and hair.
My Cenozoic friend can take the heat
But not the beat of a newspaper swatter.

Acrobatic buzzing, aimless flight
Corruption, consumption, profit uber alles.
I roll over on the queen.
The ceiling is a spiraling starry sky.

First Flakes – Multiple Choice Haiku
Stillness, first snowflakes fall
Red leaves glow on jeweled grass

Long nights till sap runs
2 bowls of miso soup
Moon barks at wet dog
Wet dog barks at moon
I forgot the password

Braided Water
My kitchen sink frames the story
A flip of the wrist and out it tumbles,

Cascades over rocky ledges of plates, swirling
Peas trapped in teacup eddies,
Riffles over spoons, then forks

Not like the river
It is the river we drink

The Misi-ziibi tunnels into our homes,
Overflows our lips,
Beating hearts hurry it along, sweeten each cell,

It surges through our veins out to sea, etches
Our arteries into the skin of the earth, weaves
Us into the watery web.

White water gray water black water brown

13 red and white stripes celebrate.
The Cuyahoga self-immolates in protest

Attempts to launder responsibility— fail.
Toxic fingerprints crawl all over the landscape.
Corporations are people, but no one claims the Dead Zone.

Consider the 18 million bodies sustained by this water.
Cultivate a vision of life downstream.
Listen to the river inside you.


La vida te da sorpresas; sorpresas te da la vida. -Ruben Blades*

If you see my gaze perched in a Birch, it’s because I see faces everywhere, in trees and clouds, and even crumpled clothes and burned grilled cheese toast. Pareidolia! Always a surprise. It starts with a jab of light that reels in the eye; our powers then stitch the shades of dark and bright, re-drawing over the original vision. Grins and grimace, shock and shame, to some it’s halluc-ination, to me imag-ination. Consider for a moment, reading and writing as a form of symbolic halluc-ination, the image and moment stitched by our powers. As we write, words are hurled at us from an amorphous dictionary and captured by the same pen that draws the constellations and the face on the moon. I am always surprised by what’s in the ink.

*Life gives you surprises; surprises give you life.

Summer of ’18 First Harvest

Been a fairly good year in the gardens. I tried a lot of new varieties this year and was amazed with their success, in spite of the sporadic drought and deluge. I want to talk about some plants that I’ve already eaten.

Garlic A perennial favorite. This year marked the 15th year I’ve been cultivating my bulbs by natural selection. I’ve been reserving the largest cloved bulbs for planting each year and have developed a crop is red striped and  each has 4-6 large cloves. So beautiful to admire, so few to peel, so delicious to eat…..


Padrón peppers  – These small peppers from Galicia, Spain are like cracker jacks. 10 to 25% of them are hot, so you don’t know what the prize will be. Sweet and tasty or hot and sizzle. I’ve never had one I couldn’t handle but for some it might be too much. Just keep a baguette nearby.

Simply fry them in hot olive oil until they  turn dark. Thinned skin they are, so you can just grab them by the tail and eat. My Galician friends went wild over them.

Mizuna (ミズナ(水菜)Fun to read about,  beautiful to look at and delicious to eat.  Also called Japanese mustard green but the name doesn’t describe the taste. The characters are more so. Very easy to cultivate, grows fast and furious so you can start dining immediately. One plant would have been more than enough. Add it to salads or a salad on it’s own with simple dressing of rice vinegar, a tad of sweetener of choice ( Mirin is best ), roasted sesame oil and soy sauce.  I’m going to have some now.

Beets Tried a few new varieties and was very pleased. I really can’t grow enough to keep my son and I in beets; fortunately there is an abundance at the St. Paul Farmer’s Market.  Boiling or steaming seems too brutish so I rub them down with olive oil and roast at 375 till al dente.

Slice and serve with goat cheese and a honey dijon dressing on a bed of Mizuna.

Yellow San Marzanos – Didn’t yield as expected but very colorful and tasty. They don’t resemble San Marzanos so don’t expect a large, dense fruit.  Perhaps they didn’t get along with other family members planted close by.

Yukon Gold Potatoes  The sandy soil at the Rice Street Community Gardens is perfect for spuds. Very easy to grow. I grab a bag of organic from the coop making sure there is lots of ‘eyes’.  Let them get a start in the bright light, then cut, separating the eyes. Plant to depth of 4-6 inches. So fun to dig up and be surprised what happens in the darkness. A freshly dug potato is a wonder !


Soon I’ll have more as the winter squash start to roll in. Also I will be talking about pollinators and the role they play. Hope you enjoyed this bit of garden adventure in the Urban Landscape.

Anything we can grow organically, keeps us off the pesticide/herbicide/chemical fertilizer grid.

White Pine and Blacktop

This morning the stillnes of the neighborhood was violated by the rumble of large trucks and chain saws. It was as if someone had thrown a brick through a plate glass window.

The crew scaled the majestic White Pine and dangling on the ropes like an aerial circus act began whittling away at the branches. Chips and sawdust drifted like snowflakes as a light breeze stirred the  sweet resinous air.

In the neighboring trees, the birds, that I expect had made the pine their home , were wildly dancing and singing a  song of distress. It was an unusually loud and high-pitched scold I wished I’d recorded.

The tree was estimated to be between 100 and 150 years old, was nearly 3 feet in diameter and reached almost 200 feet into the sky. The branches extended 20 feet or more from the trunk.  One of the woodmen said it was virgin growth which meant it was here long before the urban life was laid down.

As the last large section of trunk shuddered the truck bed, I felt sad that such magnificence would not be seen again on those mornings after a fresh snowfall. The whispering of the the needles in the wind falls silent. It was feared that such a giant, could, in a storm, wipe out  3 or 4 homes, theoretically I suppose. Fear of the giant was its demise.

My violin is made from Maple, Spruce, and Ebony trees. Trees are invaluable to me. I’ve started composing a piece about the White Pine as token of tribute.



Gravlax is so succulent and wonderful that even squeamish folks who wouldn’t eat sashimi love it. I personally enjoy the fatty fish from Norwegian farms. It melts in your mouth.

A Norwegian native friend, Anne, showed me how to prepare it as it’s done at home. Of course there was no recipe ( written that is ).  Homemade is usually a little more rustic than restaurant prepared so experiment all you like with different flavors. I’ve even added a drop of fresh lime. Be bold but don’t drown the fish !!

Start with two filettes of the freshest salmon you can, sashimi grade if  available. This is of course the key ! You will also need salt, sugar, and a few stalks fresh dill. ( dried will be *ok* but fresh dill is the best )

Take equal amounts of salt and sugar, rub in a thin layer on each cut side of the fish, next, layer as much chopped dill as you can get on top of one piece.

Place the fillettes, rubbed sides together, wrap tightly with plastic wrap and place in a container with raised sides, it should be flat also. Refrigerate for at least one day. Pour off the liquid if you like.

Slice thinly, serve on thin rye bread with honey mustard. If there is any left, refrigerate. Will keep for a few days at least.

Aquavit is a fine accompaniment !


Crop Report 2017

A productive growing season is coming to an end, snow is predicted in a few days, but no time for rest as I evaluate what worked and what didn’t do so well. I’ve always been a compact gardener due to limited space and sunlight. This year I obtained another plot in our local community garden which allowed me to stretch my imagination and experiment. Acorn squash, leeks, and potatoes were the major successes. I’d never planted potatoes, the ease of growing and deliciousness ensures their survival in my plot next year. Potato-Leek soup won the prize. The garlic which I’ve grown for over 15 years are solid producers. Planting of cloves is a little later now due to climatic changes which I’ll expound on soon.

The weather was a great partner this year, so much so that I got to travel to Europe for a couple weeks, Amsterdam and Prague. The growers in the Netherlands are producing magnificent vegetables in their high tech hot houses. National Geographic recently profiled this work of art.

With the hot July sun, San Marzano tomatoes were once again the stars of the fruiting section, followed by the serranos,  jalapenos and gypsy peppers.

The soil in the new plot got quite hard between rainfalls, will need some more compost for sure, my legacy plots have been mulched and composted every year and difference in soil texture is astounding.

Next year I will attempt to grow more native crops. Many of my garden companions are from Southeast Asia and have introduced plants I’m not used to seeing.  Red Amaranth for one is stunning to watch. I believe the leaves are used in soups and stir fries. I haven’t had any reports of seed use. I may try some of that next year.

So aside from a few persistent serrano plants and late-surging chards things are winding down, save for some soil conditioning and future fantasies.

I’m available for consulting year ’round on any and all topics – just saying…….

Fighting Words

Whenever I hear an appeal for money that states the organization is ‘fighting’ something I get agitated. Whether it’s fighting cancer, homelessness, racism or bad breath, the fighting metaphor is lame.

I’ll use cancer as an example. Cancer is a biologic malfunctioning of cellular replication in our bodies, cells not reading their DNA messages properly or reading bad data from the DNA. It is not an  an external enemy that we can engage in physical combat or country we can invade. I think the ‘fight’ is an extension of our militaristic culture adopted by advertisers because of its simplicity (mindlessness).  It also implies that there is a winner or a loser. Like the phrase “lose a battle with cancer” which means cancer won.  How can cancer ‘win’.  Where’s the battle,  it’s our own bodies.

So I don’t want to be critical without making a positive contribution. How about we say “Find immunotherapies that tame our out of control cells” or since most cancers have environmental causes, “exercise, eat healthy, don’t smoke !”. I guess that wouldn’t be profitable.


This is another prepare ahead of time party delight from Turkey. It can be purchased in jar form but is so much better freshly prepared. The scent of roasting peppers,garlic and eggplant is like perfume…

Ajvar, pronounced, “eye – vahr ” is a vegetable dish made from roasted red peppers, eggplant, garlic, olive oil and any other things you might want to add. There are several local variations running around Romania, , Bulgaria, Serbia and other Balkan nations. For a party use the following recipe:
6 fresh red paprika (mild or medium-hot, to taste)
3 medium-size eggplants
1/4 – 1/2 cup olive oil
1 large onion, finely minced
3 large garlic cloves ( at least ) , chopped
1 to 2 tablespoons lemon juice

Salt and pepper to taste
Chopped fresh parsley for garnish

Roast the paprika and eggplants over charcoal or a gas flame until the skin is blistered and black. Place the roasted vegetables in a plastic bag and let them steam in their own heat for 10 – 15 minutes. Peel off and toss the burnt skin along with the steams and seeds.

Sautee the onions and garlic in some olive oil until soft. Add all ingredients together and run thru the food processor until you get the texture you like. It’s nice a little chunky.

I dress it up with a little chopped parsely or cilantro.

Serve with warm baguette or crackers.

Kimchi Chigae (Kim Chi Soup)

On a cold autumn evening, I re-visited my Korean cookbook; this recipe leapt out at me and begged to be cooked. In order to maintain a healthy body temperature during cold weather, folks around the world cook up hot soups and this pepper infused stew looked like the perfect cold weather elixir. It is so quick and easy to prepare I eat it a couple dinners a week. Aside from the delightful kimchi*, the main ingredient is called Kochujang, a tasty paste made from glutinous rice powder mixed with powdered fermented soybeans and red peppers. On a visit to my favorite Korean grocer, I found a red box of it made by CJ Foods. The ingredients also included malt syrup but it contained no preservatives except for some grain alchohol, I can deal with that. As soon as I got into the car I popped the lid and ran my finger through the vermillion paste and stuck the warm slightly sweet lump in my mouth. After two more fingers I put it away as a light warm mist developed on my forehead.

As soon as I got home, I put a pan on the fire and sauteed a few cloves of garlic in some Canola oil, olive somehow seemed foreign to the intention. I chopped up about a cup of kimchi and added it to the mixture. After pouring a half a box of chicken stock I added a couple tablespoons of the Kochujang. I let it come to a boil and tossed in half a block of tofu cubed. I had also purchased some frozen kim chee dumplings which I tossed in for the last 3 minutes. A litle garnish of chopped scallions and the feast was ready.

The basic recipe:

1 tsp light-flavored oil, like canola (cooking spray works, too)
3 cloves garlic, minced
handful of pork, sliced thin (if desired)
Kochujang to taste, start with a couple tablespoons
1 cup kimchee, cut into large bite-size pieces
1 tsp soy sauce
2 cups water or chicken stock
3 green onions, chopped for garnish
1/2 block FIRM tofu, cut into 1 in cubes
1/2 tsp toasted sesame oil for garnish

* kimchi is pickled napa cabbage with hot red pepper, fish sauce, sugar and garlic ( simply delcious! ) Google it if you would like read more….

Coming Next: The cousin from the west: Hungarian Sauerkraut Soup

Attitude and Heading Reference System (For a Violin Bow)

The Idea….

As a diversion from the industrial IoT projects I’ve been working on, I decided to investigate the wonderful world of wearables and build a system to track violin bow movement.

An attitude and heading reference system is a 3 axis description of an object that transmits the data to a mobile device via bluetooth ble. The data can then be used for generating sound, tracking a person’s movements, falls, etc. I used the Adafruit Flora wearables platform because it seemed well suited for the task at hand which was to gather data on how my violin bow moves about when I play percussively as in Métis fiddle music which I enjoy. I will use the data to build a midi track that produces a percussion accompaniment and will produce a video in the near future to demonstrate.

Skills Needed:

You’ll need some experience at installing Arduino/Flora libraries and some familiarity with sensors and bluetooth. There’s a lot of info out there so you won’t have any difficulty finding it.

Hardware Required:

Adafruit Flora Wearable Board

Adafruit BlueFruit BLE

Adafruit LSM9DS0 Accelerometer, Gyro, Magnetometer

If you don’t purchase their kits, be prepared to acquire some soldering and sewing equipment.

Read about the platform here…


Arduino IDE

Following Flora Libraries: ( follow directions on Adafruit site for installing )

Adafruit Universal Sensor Driver

Adafruit ARHS

Adafruit LSDM9DS0

Bluetooth Apps for receiving data

nRF Toolbox for BLE , Android

Adafruit Bluefruit LE Connect, Android

Adafruit Bluefruit LE Connect, iOS

LightBlue Explorer – Bluetooth Low Energy, iOS


There are many more of course on the AppStore and Google Play.

Or you can download the source code for a barebones Android app that I have created that will allow you to customize the way you receive and view the data. You will have to code anything you want to do with the data that isn’t raw bytes.

Down the app source code here !


Alligators and Sensors during Testing

Code Walk Through

After all the components are wired up and communicating we can begin to push some data out to our mobile devices. First we wake up the sensors and bluetooth and repeatedly query the AHRS module that takes the input of the sensors and calculates the Euler angles and returns them to the main loop which bundles them up and transmits to the mobile device. Using one of the above mentioned apps, we can view the data as it arrives. Simple eh ?

The comments in the code provide a good narration of each function.

The source code for this Arduino project can be found on my github site.

Coming Soon: The Performance !!

About the Author

Bob Hale is a mobile and IoT developer and musician who likes to write about it all…

Transform Data to Music – Temperatures Hi and Lo

A couple weeks ago I watched a show on PBS that discussed whether mathematics existed in the natural world or if we created mathematics to explain the workings of the universe. Music was used as an example.

I’ve always been fascinated with the mathematical relationships in music. So much so I bought a Commodore Amiga computer and Yamaha DX-7 synthesizer and taught myself C Language programming to create apps that would allow the two computers to communicate. ( Yes, that along ago!) In the world of Data Science we use visualizations to imagine what data relationships might look like, I looked at the the data and said why not listen to it ? This series of articles will explore that process through the wonders of MIDI.

This file assigns the values of the climate data to pitches, not even scratching the surface of what can done with effects and more complex note structures. We’ll leave that for a future article.

To begin, I selected a collection of climate data from the Minnesota Dept. of Natural Resources. The particular sample I selected was from 1/1/2010 to 12/31/2010 and contained date, high temp, low temp and precipitation columns. Below is small sample.


Next I coded a Python script that would allow me to read the data rows and build a MIDI music file as the result. I chose Python because of the quick, cross-platform usage. There are several very robust MIDI libraries available for this task written in Java, .Net and other high level languages. The library I chose is MidiUtil-0.89 mostly because it’s written in Python.

First, we had to adjust some of the data values to account for negative values ( cold days ) as MIDI values are 0-128 and increase the values so the pitches where closer to middle C to avoid extremely low pitches that are barely audible. For expediency I accomplished this with inline code but could also be done in R or in a database.

Here is the entire script with comments #

# A sample program read a data file, generate a midi file
# and write to disk.

#Import the library
from midiutil.MidiFile3 import MIDIFile

import csv

# constant values
channel = 0
channel2 = 1
channel3 = 2
track1 = 0
track2 = 1
track3 = 2
time = 0

beats = 540

# indexes to elements of data row
highTemp = 1
lowTemp = 2
precipitation = 3

highTempAdjustment = 20
lowTempAdjustment = 30

# Create the MIDIFile Object with 3 tracks plus names of tracks

MyMIDI = MIDIFile(3)
MyMIDI.addTrackName(track1,time,"Temperature MusicHI")
time = time +1
MyMIDI.addTrackName(track2,time,"Temperature MusicLOW")
time = time +1
MyMIDI.addTrackName(track3,time,"Temperature MusicPrecip")
time = time +1
MyMIDI.addTempo(track1,time, beats)
time = time +1
MyMIDI.addTempo(track2,time, beats)
time = time +1
MyMIDI.addTempo(track3,time, beats)

# set voice (sound) to be played on tracks
# we used General Midi sounds ( see General Midi docs )
time = time +1
MyMIDI.addProgramChange(track1,0, time, 53) # voice 1 = 53
time = time +1
MyMIDI.addProgramChange(track2,1, time, 53) # voice 2 = 53
time = time +1
MyMIDI.addProgramChange(track3,2, time, 119) # cymbal = 119

time = time +1

# open and read each line ( data object ) in file
f = open("climate2010.txt")
for row in csv.reader(f):
 # calculate pitch value from temperatures
 pitch1 = int(row[highTemp]) + highTempAdjustment
 pitch2 = int(row[lowTemp]) + lowTempAdjustment
 duration = .5
 volume = 100 
 # add initial tracks
 # Add a note. addNote expects the following information:
 time = time +1
 time = time + 1
 if row[precipitation] != "0.00": #got some rain today
 pitch3 = 96

time = time + 4

# change track 3 to ocean sound for the finale !!

MyMIDI.addProgramChange(track3,2, time, 122) # 122 = Seashore
time = time + 1
MyMIDI.addNote(track3,channel3,40,time,45,100) # let it ring....

# And write it to disk.
binfile = open("climatetemp2010_TempsPrecip.mid", 'wb')

And the resulting file ! Not much to look at – unless you are a real hex-head – just a series of hex values. However with a tool such as Midi Microscope you can view all the events in both hex and carbon-based annotation. A necessity for those in the trade! In an upcoming article I’ll cover some of the tools I use to produce sounds, create MP3 files and edit the raw data.

4D 54 68 64 00 00 00 06 00 01 00 03 03 C0 4D 54
72 6B 00 00 0E 69 00 FF 03 13 54 65 6D 70 65 72
61 74 75 72 65 20 4D 75 73 69 63 48 49 96 40 FF
51 03 01 B2 07 96 40 C0 35 96 40 90 1A 64 83 60
80 1A 64 8B 20 90 15 64 83 60 80 15 64 8B 20 90
1B 64 83 60 80 1B 64 8B 20 90 1B 64 83 60 80 1B
64 8B 20 90 1E 64 83 60 80 1E 64 8B 20 90 24 64
83 60 80 24 64 8B 20 90 24 64 83 60 80 24 64 8B
20 90 1C 64 83 60 80 1C 64 8B 20 90 1A 64 83 60

After this file has been created I played the midi file through a VirtualMidiSynthesizer  so the hex data in the file is ‘voiced’ by the settings embedded in the file. I ran the output through another piece of software which captured and saved the output as a MP3 file. Audacity is another open source product I use for this purpose. There is quite a bit of setup required to use all these tools so I’ll cover them in another post.

The following MP3 file is the result played back through a digital software synthesizer. The voices are the high and low temps chasing each other about getting higher and more frenetic in summer ( the middle of cut ). The cymbal sounds for each day there was precipitation. Interesting to hear the lack of rain during summer and autumn. So sit back and enjoy the weather ! If you listen to this using Windows Media Player, turn on the visualization options for an added treat.

The code and data files used in this project are available on GitHub.