Monday, January 02, 2017

I Hate My Smart-ass Prius

My Prius is driving me crazy.

First that incessant reverse beeping which I realize I can get turned off, but that's just the beginning. I like how you just have to have the key on you. Until you actually need to find the key, which is usually during one of those times where my wife and I are out somewhere and I want to leave most of my purse in the car. Nope. Stop right there. Can't lock the door with a key inside. That's nice, but hey smart-thing can't you tell there's a key on the outside? So because we're late for our dinner reservations, we have to stop and search for which pocket (tm) the blasted Prius key has migrated to. Yes, it has a standard place in my purse, but it likes to travel like everything else.

I feel like I'm traumatizing the poor thing when it beeps back about that duplicate key, and refuses to lock the door and I start publically yelling "I hate this car." [Kick tire.] Or when I have the car on and running and I put it in Park to get out of the car to do something and it starts pathetically beeping because, horrors, its precious key has left the safety of the perimeter. There are other variations of this that get it upset. I think I should put it and I into therapy though it might try to have me arrested for being a bad, bad owner.

When driving it's usually fine except for all the times I drag it on the ground. If I could have another inch or two of clearance, our relationship would be all the easier. It's not like I'm going to stop trying to go all the places I need to go. Drag. Drag. Scrape.

The display is a little busy, but I've switched it to something more tolerable.
The vent placement is terrible for me but that's probably just me.
The rear window doesn't count as a window at all and why bother have a windshield wiper that can only cover half of the windshield?

And who put on contract out on this car? It's been hit three times. All brilliantly repaired, but what a horrible CarFax report. My Scion xB has only been hit once and when that happened they totaled it. No ding and swak sorry-about-that-didn't-see-you nonsense. Next hoity-toity ecologic car is going to be bright yellow or hot pink. Something that says "Don't touch me. I'm poisonous. ."

But this isn't meant as a car review--more like how a Toyota car designer and I need to have a long talk about usability and doing what's easier on the can it not necessarily easier on the person.

Tuesday, December 13, 2016

Python 3 Prime Number Checker

Doing basic math is good exercise when working out the details of a programming language.
This one is using Python to check for prime numbers from 2 up to whatever value we have chosen. In this example, it is up to 50, but you can choose whichever value you wish.

This is using Python 3.
If you're transitioning from Python 2 you can use this acronym to remember the basic differences.

DRIP
Division is true division 2/3 = 1.5
Range is a generator, and there is no more xrange.
Items will help you get to Dictionary elements, you do not need iteritems
Print() is a function and no longer a statement. you need those parens
   if you want to not print a newline, 
   instead of a comma, you need to use end="" You can put a character in the ""


Prime Number Checker

max = 51
print ("Prime numbers up to", max)
for i in range(2,max):
    #skip evens
    if i % 2 == 0:
        # 2 is our first prime number, print it out
        if i == 2:
            print (i, end=" ")
        continue
    # check each value is divisible by 3 up to the value being checked
    # we don't need to check using 2 because we already excluded the even numbers above
    evennum=False
    for k in range (3,i):
        if i % k == 0:
            evennum=True
            break
    if evennum==True:
        continue
    else:
        print(i,end=" ")

But wait~ There's more.
If a number is not prime then it has factors and for each two factors, one of them is below the square-root of the value you are checking. We only care if one of the factors exists (which will make the value not prime. As a result, we only have to check the values up to the "floor" (truncated integer) of the square-root of the value we're checking.

Example. Let's look at 36 which is not prime (we'll ignore that it's an even number and won't ever show up on our list.

  sqrt(36) = 6
36 has other factors
2x18
3x12
4x9

If we find even one of these factors we know it's not prime.
See how the factors distribute themselves around the squart-root
One is always lower and the other is always higher than 6.

So instead of for k in range (3, i)
we can do for k in range(3, math.floor(math.sqrt(i))
Since we're now doing math functions, we need to include the math module.

Here is a good reference (scroll down):
http://stackoverflow.com/questions/5811151/why-do-we-check-up-to-the-square-root-of-a-prime-number-to-determine-if-it-is-pr

Here's the full code:
import math
max = 51
print ("Prime numbers up to", max)
for i in range(2,max):
    #skip evens
    if i % 2 == 0:
        # 2 is our first prime number, print it out
        if i == 2:
            print (i, end=" ")
        continue
    # check each value is divisible by 3 up to the value being checked
    # we don't need to check using 2 because we already excluded the even numbers above
    # NOTE we only need to check if there's a factor up to the square-root of the series
    # (See the text for an explanation)
    endval = math.floor(math.sqrt(i))
    evennum=False
    for k in range (3,endval):
        if i % k == 0:
            evennum=True
            break
    if evennum==True:
        continue
    else:
        print(i,end=" ")



Thursday, October 20, 2016

Trump's Popularity Shows We Need Better Education in the US



The 2016 presidential campaign is nearing its end and for weeks, if not months, we've see how Trump can outright lie to his supporters. The many egregious moments (famous and too many to list) have cost him the election, but the number of moments were far above what would have cost another candidate the election. There is something that he is able to tap into that makes his fans mentally overlook his many flaws. Perhaps it is star power or just the pure chutzpah, but the fact that he can directly lie to his fans is disturbing.

Hillary says she wants to raise taxes on those making over $250,000.
Trump says to everyone: Hillary is going to raise your taxes.
And that's the most innocent example.

Bragging about sexual assault in general and then claiming that it never actually really happened (even if one incident has witnesses), is amazing.

You can say that that is a matter of opinion, but then he claims that he never said that climate change is a hoax perpetuated by the Chinese. Never mind that he tweeted about it more than once.

His most ardent supporters (there are fortunately fewer and fewer of them) are happy to ignore these shortcomings. No amount of facts seems to make any difference. His woeful ignorance on foreign policy and on basic things like how nuclear weapons work is just painful. His fans seem to have no filters. No inquisitive distance at all.

His presence in the election, and his popularity is casting a glaring light on the lack of education and educational opportunities in this country. Post-secondary education needs to be free, and the quality of the current free secondary education needs to be improved. Anyone with a high school diploma (even younger) should be able to discern that something is very wrong with Trump's many claims.

Sunday, August 14, 2016

The Fibonacci Sequence in Six (plus) Languages

The Fibonacci Sequence in Six (plus) Languages
Python, C, Java, Node.js, Javascript, Powershell

I wanted to write a blog post that shows how to generate the Fibonacci sequence (0;1;1;2;3;5;8;13;21;34;55;...) in ten languages. Then I realized I would have to relearn some older language's syntax and that would mess up my current knowledge. So this is now down to five languages.

You should see output like:
First 10 Fibonacci numbers
1
2
3
5
8
13
21
34
55

Some of the scripts put the numbers on one line.

I had to encode all the less than and greater than's to keep the browser from interpreting them.



Python 2
I ran this in my Mac terminal with: python fibo.py

# fibonacci series generator for the first 10 numbers

# Seeds 0 and 1

x=0
y=1

print "First 10 Fibonacci numbers"

for i in range(1,10):
  t = x + y
  x = y
  y = t
  print t






Python 3
Then I rewrote it all in Python 3, and it uses fancy tuple unpacking which avoids needing a temporary variable. Putting in the end=" " keeps the series all on one line.

# fibonacci series generator for the first 10 numbers
# using tuple unpacking
# for Python 3

# Seeds 0 and 1

x=0
y=1

print ("First 10 Fibonacci numbers")

for i in range(1,10):
  print (y, end=" ")
  x, y = y, (x+y)





C
You need to compile this with a C compiler.

#include <stdio.h>

int main () 
{
  int x=0;
  int y=1;
  int i,t;
  printf ("First 10 Fibonacci numbers\n");

  for (i=0;i<10;i++)
  {
    t = x + y;
    x = y;
    y = t;
    printf ("%d ",t); 
  }
  printf("\n");

  return (0);
}



Java
Probably should have it be more object oriented, but that doesn't save any lines in this case.
You do have to have the Java dev kit installed on your system.
#include <stdio.h>

int main () 

{
  int x=0;
  int y=1;
  int i,t;
  printf ("First 10 Fibonacci numbers\n");
  for (i=0;i<10;i++)
  {
    t = x + y;
    x = y;
    y = t;
    printf ("%d ",t); 
  }
  printf("\n");
  return (0);
}



Node.js
Node is kind of like Javascript without needing a browser. It's a nice, refreshing language.
You have to have Node locally installed and then run it in the terminal with 
node fibo.js.

fibo.js:

 x=0
 y=1
 console.log ("First 10 Fibonacci numbers.")
 for (i=0;i<10 font="" i="" nbsp="">
 {
     t = x + y
     x = y
     y = t
     console.log (t);
 } 



Javascript Load this one into a browser. Getting this to even show up in the browser was a pain. Had to remove all the html and script tags. Tag: means the tag inside of angle brackets. Close tag: means use the closing tag which is the tag proceeded with a forward slash.
Tag: html
Tag: body
Tag: script
 x=0
 y=1
 document.write("First 10 Fibonacci numbers.")
 for (i=0;i<10;i++) 
 {
     t = x + y
     x = y
     y = t
     document.write(t," ");
 } 

Close tag: script
Close tag: body
Close tag: html


Powershell
$x = 0
$y = 1

$enditer = 10

for ($i=0;$i -lt $enditer;$i++) 
{
  $t = $x + $y
  write-host $t " "
  $x = $y
  $y = $t
}

write-host "End of series"

Saturday, July 16, 2016

Redwood Park: Goats at Work

East Bay Regional Park is hiring cheap labor. Really cheap, but they do a job that few of us would want to do. Eat flammable underbrush. Lots of it. Enter the goats who will eat many things save for poison oak.




This is right beside the West Ridge Trail, near Moon Gate

They get to keep their horns. Hope they don't get hooked up on a tree.

Some sit down on the job.

Facial hair is ok.

But they're very clear about not eating poison oak.




Sunday, April 17, 2016

Wednesday, March 23, 2016

No Joy in the Writing Contest

Of course, I didn't get any placement in the previous writing contest and I will get used to it, but there is a free humor poetry writing contest called the Wergle Flomp Humor Poetry Contest so I entered Poetry Smokes because there wasn't a publishing restriction on the entry.


You can enter the contest here:
Deadline is April 1st, 2016 and winning entries announced Aug 15, 2016, so breath holding is not advised.

AND there another fiction and "very short" (300-3000 words) fiction contest put on by Glimmer Train. Here is the entry form: https://glimmertrainpressinc.submittable.com/submit
I guess I'll let "The Road, The Tree, and The Human" have a go at the very short one. there is a $21 or $16 "reading fee" for these contests. (The poetry one is free).

https://winningwriters.com/our-contests/wergle-flomp-humor-poetry-contest-free/wergle-flomp-humor-poetry-contest-confirmation
The publishing restriction is that it can't have appeared in a print form, so online is ok.


Wednesday, December 02, 2015

Another Blog - Oh no!

Publishers are encouraging authors to start blogging. Ok fine, no problem.
But for me there is a catch. The Non-Dog Blog is for everything that isn't about dogs. So what's the problem? Well... my book very much involves dogs, you really can't call it the "Non-Dog Blog" but it seems so unfair that after more that 500 posts, I have to start another one. Sigh. Well not yet. I think I can copy selected posts from the blog into the new one which is likely going to bear my name - how boring is that?


Baby's First Writing Contest Entry

So apart from trying to find a book agent, I noticed that Writer's Digest is having a short story contest. I keep thinking that I don't have a clue as to how to write a short story, but I look back at what I've written before and I'm such a liar. Sure enough, I have more than one short story. And one of them is actually not a bad one either, so I spent time cleaning up the punctuation, and submitted it. It is a $25 entry and I know that some say you should never pay to enter a writing contest, but I really like Writer's Digest and it seemed reasonable enough.

This is very much a long shot and I think, if anything, I can hope for coming in 30th place or whatever, but at least I've done it instead of just dreaming about it, so it's a good confidence builder if anything. I will hear on Feb 16, 2016, so I can forget all about it until them.

After that, maybe I can publish the story assuming that it didn't win anything.

Job hunting and Agent querying are nearly the same thing

I am currently looking for another day job as well as looking for a book agent for my novel, and I’m noticing that querying book agents and submitting job applications are remarkably similar.

You are asking a complete stranger for attention and the odds are likely that you will be either rejected or ignored. In a way, the rejections of book agents are more useful than the silence that you often get from prospective employers. At least from a book agent, you often get a response, sometimes even a useful one. It’s actually less demoralizing than it used to be. The problem with employers is that technology has made applying for jobs very easy, but this means that HR depts get overwhelmed with many, many resumes--many of them irrelevant as people have taken to scattershotting applications which doesn’t help anyone, and sometimes they completely overestimate their capabilities: sure I can be the CEO, no problem.

The best way is to be organized about what and who you applied to, be it employment or a book agent. Keep a document or a spreadsheet that notes the day, and who you applied to, and any special requirements like “first 5 pages in the body of the message” and any response that you got. I use Google Drive for this so I can get to it from anywhere.

To find agents who are looking for people you can get the list from

Wednesday, October 21, 2015

Reprint: When the Anti-Virus won't run: Manual Virus Removal

Briefly back to tech.
This is also available online but it bears repeating here.
It's also a bit dated since it was written in the days of XP and will work with Windows 7, but getting into Safe Mode for Windows 8 and 10 is another blog post entirely.



When the Anti-Virus Software Won't Run - 

Manually Disabling Viruses in Windows
by Ellen Clary

Note this was written for Windows XP (last edited Jan 2012)
Windows 7 is similar, but will vary
Many of us are now our family's and friends' designated "computer expert" despite whatever you have claimed.  If a computer owned by someone you know is misbehaving you will often get the phone call for help.  

If the computer is running erratically and slowly without the person having done "anything," then one possibility is that the computer has a virus or worm.  So you have them run Symantec (or other) Anti-Virus and you find that it is running very slowly or not at all, or it may run for a short while and then crash.  You are now in what my brother refers to as a chicken/egg situation where the cure for the virus is being hampered by the virus itself.

There are some strategies for manually disabling the virus(es) and thus allowing the Anti-Virus software to run.  These are often presented as last resort options, but I've found that you will save a lot of time if you opt to do them sooner rather than later as many viruses are surprisingly easy to disable (though not all).

Viruses often have two common features.
- they tend to take up a lot of the cpu.
    (which actually makes them a poor model of a virus as a virus should hide itself.)
- they often (though again, not always) use the same area in the registry to start up at boot time.

First try the Simple Solution
Before you embark on all this, first see if the Anti-Virus software will work in Safe Mode.
It's been my experience that while the AV software will run in Safe Mode it will not necessarily find all the viruses in that mode.

To boot into Safe Mode, press F8 while Windows is starting up, and select Safe Mode with Networking (which turns on some services).  The system should not be running slow at this point, if it is then you likely have a larger problem.

Run an Anti-Virus scan and see if it locates anything.

Reboot the system before the next section.

Killing the running virus
If a computer is running slowly, then it's possible that the system is being hampered by a virus or worm or spyware.  If you suspect this and the anti-virus software won't run or is running slowly enough to make it unusable, then first try to kill the viral process by using the Task Manager.  Press Control-Alt-Delete, and click on Task Manager.  You will likely see a list of processes.  First let's check the obvious.  Click on the Performance tab.  Is the graph maxed out at 100% and staying there?  Now, no offense to those users, but it is rare for someone who is asking you for help to run applications so CPU demanding to max out the computer (unless the computer is really, really old), so it is likely a virus or other unwelcome program.  Click on the Processes tab to get back the list of processes and then click on the "CPU" heading to sort the display by CPU load (not CPU time).  Look at the process list and see if there is a process besides the "System Idle Process" that has a high percentage (like over 80%) of the CPU.  If so, click on that process (this may take a few tries as the process list tends to change quickly) make a note of the name and the Data line and then select "End Process" (and click on Yes if it asks "Are you sure?").  You are not doing permanent damage as this is only affecting what's running on the system right now.

Now see how the computer is behaving.  First look at the Performance graph again by clicking on the Performance tab in the Task Manager and see if the graph is no longer stuck at 100%.  If it is looking more normal then try some basic things and see if the computer is behaving as expected.  If so, then run the Anti-Virus program (make sure the virus definitions are current) and it should find the virus and remove it.  If the Anti-Virus program didn't find it, then manually search for the program and rename it (or if it's something obvious like msblast.exe then just delete it.)  

If the computer is not working as expected then reboot it and you will be back to the same broken virus state as before.

If the suspect program is a part of Windows (e.g. explorer.exe) then you may have a program that has been "Trojaned" meaning it has been altered to misbehave.  Either that or you have a virus that is using a program of the same name, but located in a different place.  If it is explorer (the Windows File manager - aka "My Computer"), then to tell the difference, kill the explorer in the Task Manager (yes, you can do this) and see how the system behaves.  If it behaves better, then relaunch the explorer by double clicking My Computer and see if the poor performance returns.  If it does, then sorry, but you will have to reinstall or repair windows via the Windows installation CD (if you have a bootleg copy go to the store and buy a real copy and consider this your penance).  If it is still ok, then the original Windows program is fine, but you will need to find the viral one and delete it.  This is best left to an Anti-Virus program and, as they say, is beyond the scope of this article.  (We're here to cope, finessing is best left to the experts.)

Get it before it Starts - Editing the Registry
While editing the registry is generally not for the timid, it's often the best way to stop things from going awry at startup.  

[New] The faster way to find unwanted viruses is to use Start-run-msconfig while still in Safe Mode.
Click the Start Up tab and see if something looks amiss.  Unfortunately it does take an experienced eye to know what that is.  Google can help you identify well know, but strangely named programs.  If something doesn't look right it will tell you where in the registry or file system the program is located.


Start up the Registry Editor by clicking Start-Run and entering: regedit

First back up the registry in case you make a mistake (not likely, but it can happen).
Make sure "My Computer" at the top of the left window panel is highlighted (so you get a copy of the full registry and not just a part of it.)  Select Registry-Export Registry File, and give it a name that you'll recognize and put it in a location where you can find it if need be.

While viruses can and do use other start up areas, I'm going to list the most common ones, the first being where 70-80% or more of them start up.

Navigation note.  To open a subfolder click the + sign next to the name.
  • Find the area called HKEY_LOCAL_MACHINE
  • Navigate to: Software-Microsoft-Windows-CurrentVersion-Run
  • Make a list of what you see on the right hand window panel including the Data field of what you don't recognize. It's often a good idea to type this up in your favorite text editor as you can cut and paste from it and avoid typos.  Many of the items you'll recognize and don't worry about "Default" as that should be there.
  • Google (if you can get internet access to work) for the ones you don't.
  • If you find that certain programs are Spyware, Adware, Worms, or Viruses, delete them from the registry which prevents them from starting up at boot time.  This will not remove the virus, best to let an Anti-Virus program delete or you can search for it manually and rename or delete it.
  • Exit regedit and reboot the system.  Hopefully the computer will be running much better.
Another area to check (though much less commonly used) is:
HKEY_CURRENT_USER-Software-Microsoft-Windows-CurrentVersion-Run

Conclusion
Remember that this is just a way to cope.  Once the machine is running well enough, download new virus definitions for their Anti-Virus program (or make them go out and buy one as payment for your time - negotiate lunch out of the deal too) and run a full scan, or if they have a fast internet connection you can have the system scanned online via the Symantec site.  Likely the software will find inactive viruses as well and if you manually renamed the ones you found it should find those as well as well as the ones that you merely disabled.  A reputable spyware remover is a good investment too (I've just heard that one person tried Spybot and Pest Patrol and Spybot found many things that Pest Patrol did not).

Give them the usual lecture about not clicking on attachments that they don't expect even from people that they know.  And check on (via separate email or phone) ones that they received from people that they do know.  And never open a .pif or .scr attachment as I've never seen a legit program use them.  Viral emails often have a certain vague, generic look to them that over time they should be able to spot.  

If it was a worm that was causing the problem then consider helping them to install a personal firewall like Zone Alarm or if you're really feeling kind (to them and yourself), configure a screening router for them.

Good luck and know that even if this took some time you have spent a good deal less time on it that waiting for the Anti-Virus software to run on an infected system.  And you probably learned something in the process.  And there's always lunch.


In the Future

To prevent further mahem, some relatively simple things that you can do:
  • Demote yourself.  
    • Create another administrator account (and make sure you can log in as it)
    • Make yourself a regular user and not an administrator
  • Use a router (wireless or not) as they usually screen off traffic that you did not initiate

Wednesday, September 16, 2015

Autumn's Deadly Beauty

Autumn is a beautiful time where the leaves change color to yellows, reds, and browns, and then fall off to float gently to the ground or be carried off dancing with the wind.
We think of it as leaves at the end of their life.
But that’s not the case at all.
The leaves are happy, and secure in their life-giving connection to their tree.
Life is good.
But the tree, sensing the coming of Winter realizes that it can not support its leaf children and itself through the Winter.
Without introspection, it chooses its own life, and shuts off the leaves’ connection.
It has turned off life support for its 1000 children.
The tree has no knife, so the leaves hang on, slowly turning the ochres colors of plant death.
Until they can hang on no more and fall or are carried off by an uncaring wind.
Autumn is mass murder.
A silent one.

Monday, September 14, 2015

My sense of place is missing - have you seen it?

So I’ve been working on this novel (it was a dare, and a long story that’s actually quite a short story, about a novel, but not really part of the sentence, I think), and my “beta” readers (ooo, I feel so up-to-date) tell me that at the beginning it lacks a “sense of place.” This is the second time (or was it the third?) I’ve heard this, so telling them it must be their complete lack of imagination, is starting to look a little threadbare.

“Ok, what do you need? More description?” “No, that’s boring.” “Then what?” Silence. So instead I work on my excuses: It’s not dialog, I’m not good at that other stuff, unless it’s poetry and then it’s off in the android belt, or the asteroid belt.

I know now that it really does mean more description which involves the five senses, so the reader can not only see the dirt, but taste it too. so I go read an author that I love, who is a master at this, and the one section I pick has NO description, yet it still works. or maybe it doesn’t and no one has noticed yet all the way to the best-seller list. Sigh.

I love dialog, some people have told me I’m a humor writer, but they neglected to tell me that a while back, so I can’t see it. I mean, I don’t write jokes, “Why did the chicken cross the road?” “Tuesday.”

Liking dialog makes it hard to stay in the chair long enough to describe the pale, glistening, yellow-red-orange of the sunlight dancing over the green-ochre of the toad’s skin as his tongue erupts out of his mouth to snatch the unsuspecting, but nasty-tasting flying insect buzzing by in the autumn evening while the coots argue about odoriferous, algae-bloomed, pond politics.

Maybe it’s time for a beer, except I don’t drink-alcohol doesn’t like me, or, more correctly, my body likes alcohol for 20 minutes then it spends the next several hours trying to get a court order to get it to leave. Chocolate - a much better idea.

Saturday, July 25, 2015

Kearsarge Pinnacles Landslide 7-21-15

Hiking in the rugged, beautiful Sierra Nevada mountains is always a striking experience, but it's easy to forget that it's a work in progress, and not simply a sculpture for one to scramble over. If you climb up Kearsarge Pass from Onion Valley, the first thing you see on the other side is the dramatic Kearsarge Pinnacles, with the inviting Kearsarge Lakes beneath it.

This was the view on July 20. 2015. (Click for a larger version.)



We wound up camping that night at the Kearsarge Lake in the bottom of the photo--the first one you come to. It was a peaceful evening. The next day on July 21st, we went out on a lengthy day hike to try to see Glen Pass, and we turned around in once we realized we were facing an approaching thunderstorm that drenched us with hail as we raced back to our comfy tent. After stashing things out of the rain as best as we could, we retreated to the tent to plan how we would dry stuff out the next day. The rain let up and all was quiet, and we fell asleep only to be startled out of that peace at approximately 11pm by a huge cracking and tumbling sound, joined by many more. It was like an army throwing concrete down a long slope. Crash, boom, thunk, boom, boom, thunk, crash, tumble, shudder. The larger, very loud, impacts shook the ground. My wife, Terri said something unprintable about the status of our safety, but I remembered that we were further away and we just held on for a very long 30-45 seconds.

The next day, there was a suspiciously clean pile of stones above the lake closest to the Pinnacles and while it appears that the landslide didn't cross over to the area where people would have camped, given that it was plenty loud for those of us at the furthest lake, for those at the closest lakes, it was very likely a "We're gonna die." or "Come to Jesus." moment depending on the listener.

Here is the resulting photo. (Click to enlarge.)

And here is a closeup.




While we were approaching the Lakes, we had one hiking party recommend the lake closest to the Pinnacles as "the best." It may be, but you many pay the price of either a heart attack or having to replace your underwear, if the geology gods decide it's time to rearrange.


Friday, February 20, 2015

The Man Stood

The man stood
In the doorway
Insolence on his jowl
Eyes hooded
Shoulders slouched

Waiting
And not caring
But really just pretending
Not to care
That his lover was late

Why should he care?
The hours he spent
Waiting
Why should he wait?
He could walk away
Be free
Or not

Love is a trap
Or maybe it wasn’t love
More like need

The slouch became a bend
And a kneel
And a sit

He resisted lying down
The pavement both called to him
And threatened him
With its promise of rest and cold chill

Waiting
A dog approaches
Hello there
Company in the waiting
Feeling canine attention
A welcome break

Letting doggy wander on
Wonder if doggy is
Waiting too
Maybe they should set up
A life together.

Vigil continuing
Why here?
A corner
Not a cafe

Outside with the wind
The leaves
The birds
The birdshit
The bugs
Who buzz around his ears
Saying
No one cares
No one.

And then his lover appears
Excuses on the wind
Hugs and kisses
All is forgiven
The circle is full
To begin again.

Monday, February 02, 2015

Poetry Smokes

Because there’s no money in poetry
She sits on the back deck
Smoking a cigarette that
Can not kill her.

Wondering what bit jobs
Her sister Exposition
Will throw her way.

Exposition tries to be kind to her
Saying how she appreciates
Her insightfulness
That she knows
Exactly how to say
Something

But she doesn’t think that
Exposition really groks
What goes on in
Her own self.

That willingness to follow the smoke
Up into the sky and not be
Earthbound and not have to have
Subject, Verb, Object and not have to worry about
Mixed metaphors

She liked mixing metaphors
She liked swimming with the fish in the ocean
And then climbing a tree
With gusto and bravery.

And then falling into the sky
Winding up on Mars
And then flying
Into the earth
And digging
Her own grave

But she can’t stay in her grave
She can dig it
She can dig down
Commune with the worms
The bugs, the microbes, the dirt
Talk with the rocks

But then she will emerge
With the grass
With the people, with the horses, the dogs, the cats
The wildebeests
And run with the wolves
Because she can use cliche
Exposition can’t