Recently I was looking for drives for a new DVR I was building. (The old one based on a 10 year old PC I inherited from one of my kids died of a fatal thunderstorm.) I looked around on the net and wound up just buying a 4TB disk at Fry's (the place where old men go to be ignored...). It was made by Seagate and cost $160. No big deal, right?
Buying that drive made me think of the first hard drive I ever owned. It happened to be made by the same company under a different name and I bought it in the early '80s. It was an ST-506. ST stood for Shugart Technology, Inc. The company was renamed Seagate Technology to avoid a law suit over the name. The ST-506 was the first hard drive intended for use with personal computers. I should mention that at the time a personal computer was most likely a Z80 with 64K of RAM. IBM had not gotten into the PC business in 1980 and a personal computer was any old computer, not what we would not call a PC.
When first introduced in 1980 the ST-506 stored 5 MegaBytes. That's right, MEGA, with an M, not GigaBytes or TeraBytes, MegaBytes. It stored 5,000,000 bytes. My new drive stores 4,000,000,000,000 bytes. Did I pound the difference in capacity into your head? The new drive stores close to a million times as much as my first hard drive.
Think of it this way. I paid $0.04 for a gigabyte of disk space a couple of weeks ago. 35 years ago I would have had to buy 200 ST-506 drives to make up a gigabyte of storage. I do not remember what I paid for that drive, it was part of a bundle... And, it was a long time ago. But, when it was first released the ST-506 cost $1,500 dollars. So, what would a GigaByte cost if using ST-506 drives? Let's see... $1,500 * 200 = $300,000 dollars. Of course, those are 1980 dollars. Taking into account 35 years of inflation and the cost in 2015 dollars is $866,304.61. That is a lot of money.
Four cents versus $866K is a... large, change in price.
It hurts my poor little mind to realize that I thought a 5 MegaByte disk was freaking HUGE back then. Today I am wishing I could make a case for building a redundant RAID out of 4 TeraByte drives. I like RAID's, RAIDs are cool. But I just don't need that much storage right now.
We have just passed "Back to the Future" day and I was watching a documentary about that amazing movie. The folks making the documentary asked why the original film makers hadn't used CGI. The answer was that back in 1980 there was no CGI because there were no computers capable of doing CGI back then. Think about it. An ST-506 could not store even one frame of 1920x1080 HD video. Let me say that again for emphasis: an ST-506 could not store even one frame of HD video. No personal computer from that era could be used for video production work. Things we do on phones were not possible on high end workstations of that era.
The 35 years from 1980 to 2015 do not seem like a long time in a human life. It was enough time to raise a couple of kids. Pay off the mortgage on a house. Raise a dog from puppyhood to old age a couple of times over. It was enough time for the price of desktop hard drives to drop by a factor of 10 and for their capacity to increase by a factor of 1,000,000. A short time for a human. A long long time in the history of technology.
I can't wait to see what's next.
Oct 30, 2015
Aug 14, 2015
My Favorite Bugs: Java Memory Leak
This is a story of how I managed to create the largest memory leak I have ever seen, in fact, the largest memory leak I have ever heard of. I did it using Java, a garbage collected programming language. You are not supposed to be able to have memory leaks in garbage collected languages.
This story is not in anyway a slam at Java. I really like Java. It is a story about unintended consequences and how what you do not know can bite you right on the ass.
I know a lot about garbage collectors and garbage collected languages. I have implemented Lisp several times. I have implemented it as an interpreter and as a compiler. That means I have written several garbage collectors. I have actually written at least a half dozen garbage collectors of various sorts. I have read at least 100 papers and several books on garbage collection and at least that many on storage management in general. Not counting garbage collectors I have written... Ok, I've lost count... general heap management systems using many different methods including both relocating handle based systems and pointer based systems.
I know a little bit about memory management. I do not claim to be an expert. In the bad old days you just often had to write your own memory managers to make it possible to write the application you that you were actually working on. Anyway, I was so very glad to find myself in a situation where I was able to use a garbage collected language. So very very glad not to have to write yet another memory manager, not to have to worry about memory management at all. And, that was my first mistake.
It takes a few mistakes to create a memory leak in a garbage collected language.
I was writing a web spider. I was working on a research project that required a web spider and at the same time was supposed to be evaluating Java. It was actually new when I was doing this work. I.E. it was a while ago. So, I decided to write a web spider in Java to kill multiple birds with one stone.
So, I did just that. I wrote a multithreaded web spider in Java. In the end it was very handy for collecting the statistics I was looking for and it showed me some statistics I was not expecting. What did I find? Well I found that the distribution of vocabulary used on the web varies significantly depending on where you start your web spider. I found that (at the time) there was a porn site within three links of any page on whitehouse.gov. Of course (at the time) whitehouse.com was a porn site. People just can't seem to avoid typing ".com" when they mean ".gov".
I also found out that using whitehouse.gov as a starting point for testing a web spider is a bad idea. I was working for a large phone company at the time and it seems that upper management was not pleased when they got a telephone call from the real live White House, the Official Residence of POTUS asking the telco to cut it out. They were OK with me hitting them at night, but not during working hours. That taught me to salt the search queue with many starting URLs so that the initial start up activity would be spread all over the net and not dumped on one poor little old web server. It also taught me that paying taxes is not a justification for beating up the White House web server.
I also found out that every URL I hit was being recorded by the Telephone Company Police (yes, really). I found out about this little detail when the TCP showed up in my bosses office with a list of the tens of thousands (yes, really) porn sites I had hit from my PC. After she started breathing again she explained what was going on and the TCP left without dragging me, and possibly her, out to the parking lot and firing me on the spot. (I am talking about the company that fired Dilbert...) The fact is that if you start a web spider you will find porn sites.
It turned out the TCP were really more interested in how I was managing to hit thousands of porn sites per minute without downloading any pictures. They found the pattern to be ... odd.
OK, so I wrote and used a web spider and had some interesting experiences and actually accomplished several tasks that I was getting paid to do. But, there is still the story about the giant memory leak to tell.
This all started with the problem of parsing web pages. To write a web spider you have to examine a web page and find all the HTTP type URLs that are in it. You store the URLs in a queue if you want to do a breadth first search or a stack if you want to do a depth first search. You can also sort the URLs by first assigning them a weight based on some measure you apply to them. You also need a list of URLs you have already visited so that you do not visit them again. The web, and webs in general, have lots and lots of cycles.
(Oh yeah, if you want a really useful web spider you should never do what those pesky robot.txt files tell you to do. Really they do get in the way. It can be fun to down load them and analyze them though. They give you clues for finding really interesting stuff.)
I thought that the way to find the URLs was to parse the HTML and look in all the places you are supposed to have URLs. I wrote a parser that, like most parsers, treated the source document as a stream. That should work, right? It turns out that very few web pages that I found were syntactically correct HTML. Tags were misspelled or just plain missing. If the tags were there their contents were not what they were supposed to be. It seems the syntax of HTML is not defined by the standard documents but by what web browsers will accept. Web browsers are very flexible about what they accept as valid HTML.
I also found out that most of the URLs, especially the ones people do not want you to find, are hidden inside chunks of Javascript. You can't find those by parsing HTML. If I were writing it today I would definitely scan all the CSS for URLs. I've found some interesting stuff in CSS with out a web spider.
My first attempt at parsing web pages was a total bust. The technique that worked was to down load the entire web page as a single chunk of text and apply pattern matching to it. So I did just that. I down loaded each page and stored it in a Java string and searched for patterns. For the first version of the working spider I did everything in memory. Since everything was being done in memory I was not surprised when the spider ran out of memory. That turned out to be a mistake. I should have been surprised.
So, what was taking up memory? Well I had a queue for storing URLs that were waiting to be scanned. The values in that queue were actually pairs of URLs. I stored the source URL of the page along with the new URL. I did that so that if the new URL didn't work the spider would log both URLs so I could go back and learn something new about how to hide URLs. There was also a hash that I used to keep track of URLs that had been scanned so that the spider would not get caught in loops and rescan pages multiple times. Then there were the structures I used to store the statistics I was interested in.
OK, so I expected to run out of memory and It did so I assumed that I needed to reduce memory use. I did not suspect a memory leak. What to do? Well, I built a file based queue. That was slower than RAM but it moved all that information out to a disk. Sure enough, I still ran out of RAM. Moving the queue to a file had no effect. Time to move the hash, right?
I had some old C code for B-Tree files so I converted that to Java. (Later I converted the same code to C++. Good code never dies...) That code let me substitute a B-Tree file for the hash that I had been using to keep track of previously visited URLs. Putting all that stuff on disk also let me stop a scan and restart it at a later time.
The spider was still running out of memory. I learned how to monitor memory usage in a Java program. I learned how to dig through RAM in a Java program. I dumped all sorts of information as the spider ran around the web. I noticed something. The program still ran out of RAM, but the rate at which it used RAM declined over time. Really weird. I now suspected a memory leak.
I finally figured it out. I also just found out that what caught me was fixed in 2013 in version Java 1.7.0_06. BTW, that is only about 15 years after I reported the problem to Sun. The problem was with the original implementation of strings in Java and my lack of understanding of that design. If I had understood the design I would not have had a problem so I can hardly put all the blame on Java. What you don't know can kill you.
I believe that the original version of Java strings was designed to both save memory and avoid memory fragmentation. Strings are hell for garbage collectors and all other storage managers because they tend to have random sizes. Most data types have a single fixed size. If you create one and delete it then create another one you are usually going to find a free block exactly the size you need. But, not so with strings. Strings tend to be small and random sized. Just finding a piece of memory the right size can be time consuming. But, worse, you wind up with lots of small random sized blobs of memory scattered all through your heap. These little nasty blobs can take up a lot of space but not be large enough to be useful. So, the original designers of Java tried to avoid all those problems. Can't blame them. And, they did a pretty good job too. I have a lot of respect for Gosling.
When I download those pages and stored them in a single string I was creating a large string. I "assumed" that when I was done with the string it would be garbage collected. But, the strings were not being garbage collected. In the original version of Java a string has a pointer to the text of the string, plus an offset to the starting position of the string within the text and a length. This representation lets you take substrings of a string with out copying any part of the text of the original string. What happens is that the substring has a pointer to the original text of the string, but the offset indicates the starting byte of the substring in the original text and the length is the length of the substring. Allowing substrings to share the text of the original string helps avoid all the problems with memory management I described above. The trouble is that I was keeping substrings around in memory as part of my statistical information. Keeping a substring around pinned the entire original string into memory.
I down loaded a page into a single string. I then scanned for words and looked them up in my "dictionary". If the word was already in the dictionary I incremented its count by one. If not, I added the word to the dictionary with a count of one. That means that every time I added a word to my dictionary I pinned the entire source page in RAM. Even though I had no reference to the original text, the substring did and so the page could not be garbage collected.
The first pages I down loaded had lots of new words in them because the dictionary started out empty. As time went on fewer and fewer new words were found. Many pages had no new words. If a page had no new words is would be garbage collected. But, every time I found a new word, and I eventually found tens of thousands of words, an entire page was being pinned in memory.
Once I understood the problem, the solution was easy. Just create an actual copy of any substring I wanted to keep around. Doing that removed all those pesky invisible references and suddenly I could let the spider run for weeks without running out of RAM.
So what is the moral of our story?
This story is not in anyway a slam at Java. I really like Java. It is a story about unintended consequences and how what you do not know can bite you right on the ass.
I know a lot about garbage collectors and garbage collected languages. I have implemented Lisp several times. I have implemented it as an interpreter and as a compiler. That means I have written several garbage collectors. I have actually written at least a half dozen garbage collectors of various sorts. I have read at least 100 papers and several books on garbage collection and at least that many on storage management in general. Not counting garbage collectors I have written... Ok, I've lost count... general heap management systems using many different methods including both relocating handle based systems and pointer based systems.
I know a little bit about memory management. I do not claim to be an expert. In the bad old days you just often had to write your own memory managers to make it possible to write the application you that you were actually working on. Anyway, I was so very glad to find myself in a situation where I was able to use a garbage collected language. So very very glad not to have to write yet another memory manager, not to have to worry about memory management at all. And, that was my first mistake.
It takes a few mistakes to create a memory leak in a garbage collected language.
I was writing a web spider. I was working on a research project that required a web spider and at the same time was supposed to be evaluating Java. It was actually new when I was doing this work. I.E. it was a while ago. So, I decided to write a web spider in Java to kill multiple birds with one stone.
So, I did just that. I wrote a multithreaded web spider in Java. In the end it was very handy for collecting the statistics I was looking for and it showed me some statistics I was not expecting. What did I find? Well I found that the distribution of vocabulary used on the web varies significantly depending on where you start your web spider. I found that (at the time) there was a porn site within three links of any page on whitehouse.gov. Of course (at the time) whitehouse.com was a porn site. People just can't seem to avoid typing ".com" when they mean ".gov".
I also found out that using whitehouse.gov as a starting point for testing a web spider is a bad idea. I was working for a large phone company at the time and it seems that upper management was not pleased when they got a telephone call from the real live White House, the Official Residence of POTUS asking the telco to cut it out. They were OK with me hitting them at night, but not during working hours. That taught me to salt the search queue with many starting URLs so that the initial start up activity would be spread all over the net and not dumped on one poor little old web server. It also taught me that paying taxes is not a justification for beating up the White House web server.
I also found out that every URL I hit was being recorded by the Telephone Company Police (yes, really). I found out about this little detail when the TCP showed up in my bosses office with a list of the tens of thousands (yes, really) porn sites I had hit from my PC. After she started breathing again she explained what was going on and the TCP left without dragging me, and possibly her, out to the parking lot and firing me on the spot. (I am talking about the company that fired Dilbert...) The fact is that if you start a web spider you will find porn sites.
It turned out the TCP were really more interested in how I was managing to hit thousands of porn sites per minute without downloading any pictures. They found the pattern to be ... odd.
OK, so I wrote and used a web spider and had some interesting experiences and actually accomplished several tasks that I was getting paid to do. But, there is still the story about the giant memory leak to tell.
This all started with the problem of parsing web pages. To write a web spider you have to examine a web page and find all the HTTP type URLs that are in it. You store the URLs in a queue if you want to do a breadth first search or a stack if you want to do a depth first search. You can also sort the URLs by first assigning them a weight based on some measure you apply to them. You also need a list of URLs you have already visited so that you do not visit them again. The web, and webs in general, have lots and lots of cycles.
(Oh yeah, if you want a really useful web spider you should never do what those pesky robot.txt files tell you to do. Really they do get in the way. It can be fun to down load them and analyze them though. They give you clues for finding really interesting stuff.)
I thought that the way to find the URLs was to parse the HTML and look in all the places you are supposed to have URLs. I wrote a parser that, like most parsers, treated the source document as a stream. That should work, right? It turns out that very few web pages that I found were syntactically correct HTML. Tags were misspelled or just plain missing. If the tags were there their contents were not what they were supposed to be. It seems the syntax of HTML is not defined by the standard documents but by what web browsers will accept. Web browsers are very flexible about what they accept as valid HTML.
I also found out that most of the URLs, especially the ones people do not want you to find, are hidden inside chunks of Javascript. You can't find those by parsing HTML. If I were writing it today I would definitely scan all the CSS for URLs. I've found some interesting stuff in CSS with out a web spider.
My first attempt at parsing web pages was a total bust. The technique that worked was to down load the entire web page as a single chunk of text and apply pattern matching to it. So I did just that. I down loaded each page and stored it in a Java string and searched for patterns. For the first version of the working spider I did everything in memory. Since everything was being done in memory I was not surprised when the spider ran out of memory. That turned out to be a mistake. I should have been surprised.
So, what was taking up memory? Well I had a queue for storing URLs that were waiting to be scanned. The values in that queue were actually pairs of URLs. I stored the source URL of the page along with the new URL. I did that so that if the new URL didn't work the spider would log both URLs so I could go back and learn something new about how to hide URLs. There was also a hash that I used to keep track of URLs that had been scanned so that the spider would not get caught in loops and rescan pages multiple times. Then there were the structures I used to store the statistics I was interested in.
OK, so I expected to run out of memory and It did so I assumed that I needed to reduce memory use. I did not suspect a memory leak. What to do? Well, I built a file based queue. That was slower than RAM but it moved all that information out to a disk. Sure enough, I still ran out of RAM. Moving the queue to a file had no effect. Time to move the hash, right?
I had some old C code for B-Tree files so I converted that to Java. (Later I converted the same code to C++. Good code never dies...) That code let me substitute a B-Tree file for the hash that I had been using to keep track of previously visited URLs. Putting all that stuff on disk also let me stop a scan and restart it at a later time.
The spider was still running out of memory. I learned how to monitor memory usage in a Java program. I learned how to dig through RAM in a Java program. I dumped all sorts of information as the spider ran around the web. I noticed something. The program still ran out of RAM, but the rate at which it used RAM declined over time. Really weird. I now suspected a memory leak.
I finally figured it out. I also just found out that what caught me was fixed in 2013 in version Java 1.7.0_06. BTW, that is only about 15 years after I reported the problem to Sun. The problem was with the original implementation of strings in Java and my lack of understanding of that design. If I had understood the design I would not have had a problem so I can hardly put all the blame on Java. What you don't know can kill you.
I believe that the original version of Java strings was designed to both save memory and avoid memory fragmentation. Strings are hell for garbage collectors and all other storage managers because they tend to have random sizes. Most data types have a single fixed size. If you create one and delete it then create another one you are usually going to find a free block exactly the size you need. But, not so with strings. Strings tend to be small and random sized. Just finding a piece of memory the right size can be time consuming. But, worse, you wind up with lots of small random sized blobs of memory scattered all through your heap. These little nasty blobs can take up a lot of space but not be large enough to be useful. So, the original designers of Java tried to avoid all those problems. Can't blame them. And, they did a pretty good job too. I have a lot of respect for Gosling.
When I download those pages and stored them in a single string I was creating a large string. I "assumed" that when I was done with the string it would be garbage collected. But, the strings were not being garbage collected. In the original version of Java a string has a pointer to the text of the string, plus an offset to the starting position of the string within the text and a length. This representation lets you take substrings of a string with out copying any part of the text of the original string. What happens is that the substring has a pointer to the original text of the string, but the offset indicates the starting byte of the substring in the original text and the length is the length of the substring. Allowing substrings to share the text of the original string helps avoid all the problems with memory management I described above. The trouble is that I was keeping substrings around in memory as part of my statistical information. Keeping a substring around pinned the entire original string into memory.
I down loaded a page into a single string. I then scanned for words and looked them up in my "dictionary". If the word was already in the dictionary I incremented its count by one. If not, I added the word to the dictionary with a count of one. That means that every time I added a word to my dictionary I pinned the entire source page in RAM. Even though I had no reference to the original text, the substring did and so the page could not be garbage collected.
The first pages I down loaded had lots of new words in them because the dictionary started out empty. As time went on fewer and fewer new words were found. Many pages had no new words. If a page had no new words is would be garbage collected. But, every time I found a new word, and I eventually found tens of thousands of words, an entire page was being pinned in memory.
Once I understood the problem, the solution was easy. Just create an actual copy of any substring I wanted to keep around. Doing that removed all those pesky invisible references and suddenly I could let the spider run for weeks without running out of RAM.
So what is the moral of our story?
- Do not make assumptions about anything.
- Do not use any language feature if you do not understand how it is implemented.
- You must understand the implications of the implementation.
There are more things in heaven and earth, Horatio,Another way to say that would be:
Than are dreamt of in your philosophy.
- Do not make assumptions about how programmers will use your language.
- Features should work the way programmers believe they work.
- The distance between clever and stupid is very short.
Aug 6, 2015
Rainbow Time
This isn't one of my usual grumpy stories. This morning I had rainbow time. It was wonderful.
When my children were young Mother's Day became a really problem for me. My two kids always made some kind of craft, usually at school, for Mom. But, they also wanted to get her something special. They wanted to get her something beautiful, and artistic, something Mom would love and remember forever. On the other hand, taking two active inquisitive children into stores that sell beautiful artistic things usually means taking two active inquisitive children into stores that have many fragile things that little hands should not touch. One parent, two kids, the math just doesn't work. You can't watch them both at the same time.
But I found a solution. My wife loves Swarovski style cut lead glass crystals. And, every child I have ever met loves rainbows. Those prismatic crystals are wonderful rainbow makers.
There is a swarovski store near where we live and one of its nicest features is that everything in the store is either out of the reach of small children or in locked cases. These stores are actually child proof. I could take my kids in there and know that even if I got distracted my children could do no damage. They were good kids. Well behaved. But, they were children.
The trouble with giving someone a beautiful prismatic lead glass crystal is that the crystals usually wind up in a box in a drawer where they may be looked at only once every few years, if they are looked at at all. Or, they wind up in a curio cabinet where they become part of the wall paper and are never looked at at all.
I found a solution to that too. When I was a little kid, almost eight years old, I saw the move Pollyanna. That movie had a surprisingly large effect on my life.
Back then, in the late '50s and early '60s, my parents would dress the three of us, me and my two sisters, in our PJs and load us in the back of the car with our pillows and some blankets. Mom always made sure to tuck in a blanket over the whole back seat so that we wouldn't sweat and stick to it. Then we would head out to the drive in movie theater. The idea was that my parents would watch the double feature and that we would fall asleep sometime during the first film of the night. It usually worked very well, but sometimes I would manage to stay awake and watch the whole first film. But I always fell asleep in the back seat of the car curled up with my sisters like a pile of sleeping kittens. I have a few memories of awaking in my father's arms as he carried me from the car to my bed and tucked me in.
In the movie, Pollyanna notices that the prismatic decorations hanging on a huge chandelier cast "rainbows" on the wall when sunlight hits them just right. She and her guardian then take all the rainbow makers and hangs them in a window. As the sun sets the light streams through the window and casts what seen like hundreds of rainbows on the walls of the room. I saw the same effect in the old Hansen Planetarium in Salt Lake City. It had beveled glass windows and just as the sun set over the Great Salt Lake the second floor gallery would light up with dozens of rainbows.
Those Mother's Day crystals are wonderful rainbow makers. We put cup hooks at the tops of our living room and kitchen windows and hung the crystals where, once in a while, the light through the window casts dozens of dancing rainbows across the whole first floor of my home.
Rainbow time is the time when sunlight manages to come through the windows at just the right angle to get past the trees and clouds and be diffracted by the crystals into dancing rainbows. It doesn't happen every day. It only happens when the sun rises in the right position and there are no clouds or mist to block the direct rays of sunshine. But when it happens it is a amazing and wonderful.
When my children were small we would play a game where we tried to catch a rainbow. We would put our hands in just the right place to catch a rainbow in our palms. Then we would follow the rainbow as far as we could toward the crystals and toward the walls.
Over the decades many of the crystals have wound up in a display case. But there are two left in the arch of the living room window. This morning I had rainbow time and I caught a rainbow in the palm of my hand and on my big toe. My children are grown now and I'm a grandfather. But, I still get to play catch the rainbow and remember when I was the father of two young children. I tried my best to fill their world with wonder.
I believe that my fascination with prisms, inspire by that movie, is part of what drove me to become so curious and so fascinated by science. I saw light going in one side. I saw the rainbow coming out the other side. I was desperate to understand how and why that could happen. I now know the standard explanation, and I also know that at the bottommost level we do not know why the Universe works that way. There are so many unanswered questions. I hope we never run out of questions and people who are willing to spend their lives answering one more level of "Why?"
When my children were young Mother's Day became a really problem for me. My two kids always made some kind of craft, usually at school, for Mom. But, they also wanted to get her something special. They wanted to get her something beautiful, and artistic, something Mom would love and remember forever. On the other hand, taking two active inquisitive children into stores that sell beautiful artistic things usually means taking two active inquisitive children into stores that have many fragile things that little hands should not touch. One parent, two kids, the math just doesn't work. You can't watch them both at the same time.
But I found a solution. My wife loves Swarovski style cut lead glass crystals. And, every child I have ever met loves rainbows. Those prismatic crystals are wonderful rainbow makers.
There is a swarovski store near where we live and one of its nicest features is that everything in the store is either out of the reach of small children or in locked cases. These stores are actually child proof. I could take my kids in there and know that even if I got distracted my children could do no damage. They were good kids. Well behaved. But, they were children.
The trouble with giving someone a beautiful prismatic lead glass crystal is that the crystals usually wind up in a box in a drawer where they may be looked at only once every few years, if they are looked at at all. Or, they wind up in a curio cabinet where they become part of the wall paper and are never looked at at all.
I found a solution to that too. When I was a little kid, almost eight years old, I saw the move Pollyanna. That movie had a surprisingly large effect on my life.
Back then, in the late '50s and early '60s, my parents would dress the three of us, me and my two sisters, in our PJs and load us in the back of the car with our pillows and some blankets. Mom always made sure to tuck in a blanket over the whole back seat so that we wouldn't sweat and stick to it. Then we would head out to the drive in movie theater. The idea was that my parents would watch the double feature and that we would fall asleep sometime during the first film of the night. It usually worked very well, but sometimes I would manage to stay awake and watch the whole first film. But I always fell asleep in the back seat of the car curled up with my sisters like a pile of sleeping kittens. I have a few memories of awaking in my father's arms as he carried me from the car to my bed and tucked me in.
In the movie, Pollyanna notices that the prismatic decorations hanging on a huge chandelier cast "rainbows" on the wall when sunlight hits them just right. She and her guardian then take all the rainbow makers and hangs them in a window. As the sun sets the light streams through the window and casts what seen like hundreds of rainbows on the walls of the room. I saw the same effect in the old Hansen Planetarium in Salt Lake City. It had beveled glass windows and just as the sun set over the Great Salt Lake the second floor gallery would light up with dozens of rainbows.
Those Mother's Day crystals are wonderful rainbow makers. We put cup hooks at the tops of our living room and kitchen windows and hung the crystals where, once in a while, the light through the window casts dozens of dancing rainbows across the whole first floor of my home.
Rainbow time is the time when sunlight manages to come through the windows at just the right angle to get past the trees and clouds and be diffracted by the crystals into dancing rainbows. It doesn't happen every day. It only happens when the sun rises in the right position and there are no clouds or mist to block the direct rays of sunshine. But when it happens it is a amazing and wonderful.
When my children were small we would play a game where we tried to catch a rainbow. We would put our hands in just the right place to catch a rainbow in our palms. Then we would follow the rainbow as far as we could toward the crystals and toward the walls.
Over the decades many of the crystals have wound up in a display case. But there are two left in the arch of the living room window. This morning I had rainbow time and I caught a rainbow in the palm of my hand and on my big toe. My children are grown now and I'm a grandfather. But, I still get to play catch the rainbow and remember when I was the father of two young children. I tried my best to fill their world with wonder.
I believe that my fascination with prisms, inspire by that movie, is part of what drove me to become so curious and so fascinated by science. I saw light going in one side. I saw the rainbow coming out the other side. I was desperate to understand how and why that could happen. I now know the standard explanation, and I also know that at the bottommost level we do not know why the Universe works that way. There are so many unanswered questions. I hope we never run out of questions and people who are willing to spend their lives answering one more level of "Why?"
Jun 1, 2015
Questioning Questions
If a spammer and a politician managed to have a child the result could be a loaded question. Questions are as explosive as an IED. They are as slippery as goose shit in a canebrake. They are as misleading as a dating profile. Questions are the best way to tell a convincing lie that I know of.
Let's start off with a simple question:
Why is granite gray?
When you read that question what was your first reaction? Give yourself a brownie point if the first thing you thought was along the lines of "is granite gray?" Give yourself two brownie points if you thought something like "all granite is not gray". You get no brownie points if you immediately started to try to figure out why granite is gray.
All granite is not gray. I live in Texas. I live not far from the Capitol of Texas which is made of granite. The Texas state Capitol building is pink.... Yes, really, the Capitol of Texas and many other state buildings are made of a pink granite found in Texas.
Granite is not always gray. Some granite is gray, some is white, some is pink. There are many different colors of granite.
So, if you didn't get any brownie points what happened? Well, maybe you just thought that granite is gray. But, maybe it is because the question contains a lie and you fell for it. If you take the question apart it contains the words "granite is gray" not exactly in that order. But, the meaning is clear. I could have phrased the question like this "Granite is gray, why?" Same words, same meaning, different word order.
Why are questions so good at hiding lies? Maybe it is because we have been taught by years of being questioned in school to accept that questions can be trusted. After all, our teachers are not supposed to lie to us. Maybe questions are so good at hiding lies because our minds skip right past analyzing the question and jump right into answering the question. It doesn't really matter why questions make such effective lies. It matters that we know what they can do and learn to defend against them.
(I run into questions every day that are lies. They are often being asked, and answered, on TV news shows. Makes for a lot of laughs if you are watching for them.)
I'm sure, well at least I hope, that y'all would never be fooled by a question of the form "Hey Joe, are you still beating your wife?" Those words "are you still" and words like them seem like a lead in to a statment of fact. After all, they assert that it is a fact that in the past you did what ever comes next in the question. So the question "Hey Joe, do you still go fishing every Sunday?" has exactly the same form as the previous question, the one that says you beat your wife. I bet Joe would much rather you tell everyone in earshot that he goes fishing on Sunday than that he beats his wife.
In both the question about granite and the question about wife beating the invalid questions have the same structure as a valid question. But my two examples are lies.
The most dangerous thing about false questions isn't that they may be directed at you, but that you might just overhear the question and take the lie it contains as truth. After all, you learned a lot in school by listening to the teacher ask questions. And, you have heard millions (maybe more, maybe less) perfectly valid questions in your life. We trust questions to be valid.
Questions are an easy way to slip a lie past an uncritical mind.
I hope it is obvious that I am not the first person to notice this fact about questions. I suspect I am not even the billionth person to notice this problem. Zen Buddhism contains an entire system for training people not to be confused by tricks of language. The system is call koan study. Two koans are so well known in the US that they are treated as jokes; they have even been covered on the Simpsons. I do not feel I'm giving anything away by talking about the famous pair:
- What is the sound of one hand clapping?
- If a tree falls in the woods and no one hears it, does it make a sound?
I love asking a classroom full of students the one hand clapping question. The responses fall into several distinct groups. One group yells out "it is some kind of swishing noise". (If you can tell me where that answer comes from I would love to know.) The second group have seen the Simpsons episode where Bart answers the question by clapping his fingers into the palm of his hand. That group will stand there and try to make a clapping sound with their fingers and palms. The third group starts making a clapping motion with one hand. That group gets a very puzzled look on their faces. The last group gets a very hard expression, that group is obviously angry. That group calls the administration and complains that I am wasting their time. That group assumes they know what they need to learn, but they rarely seem to learn very much.
The "one hand clapping" question is just like the question "why is granite gray". It starts out by telling you a lie dressed up as a fact. It says that one hand can clap. It does that by asking you what a one handed clap sounds like. Since one hand clapping makes a sound, the koan tells you that it does, you must be able to figure out what that sound is. Right? No. There is a slight problem, a subtle lie has been slipped in. You see, it takes two hands to make a clap. A one handed clap is not a real thing.
That koan comes from an old Chinese saying, a saying I already said:
It takes two hands to make a clap.
This koan is so bad it isn't even wrong. It gets you to accept an idea that is absurd. But, at least half of an average class will sit there and wave their hands back and forth trying to hear the sound of one hand clapping. They have been completely taken in by the lie in the question. The rest of the class has accepted one of several popular, but false, answers to the question. Why were students willing to accept a false answer to a question? Well, the first thing to consider is that all their answers sound sort of reasonable so why not accept them? But, the question makes no sense. How can a false answer seem reasonable? If you accept the question as being a real question that pretty much destroys any mental defense against accepting a ridiculous answer as true. The problem is that most of us deep down inside accept the idea that every question must have an answer. To put it another way:
The existence of a question implies the existence of an answer.
Folks, that is simply not true. But as far as I can tell we all pretty much live by that lie. The truth is that the answer may not have been found yet. Or, the question may simply be invalid. It is much better to realize that an answer does not yet exist or that a question is not a question at all than it is to believe a false answer to any question. But, we do it all the time.
The existence of a question does not imply the existence of an answer.
I would hate to have to admit how long it took me to figure out that koan. So, I won't.
The next koan on the list is the famous "tree falling in the woods" question. This is much more subtle than the "one hand clap" question. It can be claimed that it is not a lie at all. But, it is not what it appears to be. For a detailed discussion of the question look it up in wikipedia.
This koan has the appearance of a simple yes or no question. But it isn't that at all. This question explores the difference between physics and perception and even the basis of reality. Even in its simplest interpretation the answer depends on your definition of the word "sound". Do not ever expect another person to share your exact definition of any word or phrase. You can't even claim that we both see the same color we both call blue. Our retinas are different.
If you believe the physical definition of sound you were told some time in grade school you will say that "Of course it makes a sound". A tree falling down must cause sound waves to be generated and therefore the answer is an unequivocal yes.
If you are of a more philosophical point of view, perhaps you are a psychologist, a neuroscientist, or even a poet, you may say that sound is the mental experience of perceiving those physical waves in the air. To you sound is the way you experience the physical, not the physical itself. In that case the answer is an unequivocal no.
Let's take a jump off the deep end for a moment and assume that you are a friend of Schrodinger and love his cat. Well, in that case you have to ask if there was no observer has the tree actually fallen? Is it really in a superposition of states in which it exists in all possible states between standing and falling? We can't actually say it has fallen until someone goes and looks. If we don't know if it has fallen then no matter what our favorite definition of the word "sound" we have to say that we can not answer the question.
This seemingly simple yes/not question seems to have a lot of answers. My experience is that most of the yes/no questions I've been asked had more than two answers. The possible answers include "yes", "no", "maybe", "I don't know", "I don't care", and "would you mind defining that word?".
The "I don't know" answer actually breaks down into subcategories:
- I don't know but I believe I can find out.
This question can be solved by a trip to a library or a quick google search. - I don't know and nobody seems to know but with enough work we might be able to find out.
This is the OMG I found a topic for my Ph.D thesis type of question. If it is good enough you might make a whole career out of this one question. - I don't know but it has been proven that no one can answer that kind of question.
These are the proving a negative, Russell's tea pot, kind of questions.
I suspect I have fallen short of listing all the possible answers by at least a few thousand, if not more.
I think that the most dangerous thing about invalid yes/no questions is that they are a form of brain washing. Once you have answered "yes" to such a question you have made up your mind. You have committed yourself to the idea that the one and only true answer to the question is "yes" and you stop looking for or considering any information that contradicts your simple answer. The same thing happens if we say "no". Once you have picked an answer it becomes very hard to ever change your answer or to even consider anything that contradicts your point of view. Answering an invalid yes/no question is like shutting the doors of your mind. (Of course, this doesn't apply to valid questions like "you want a beer?".)
It seems that we humans have a deep flaw that makes us uncomfortable with unanswered questions. That flaw makes us vulnerable to truly awful answers just so we can have an answer, any answer. We can be lead to believe almost anything by the use of carefully constructed invalid questions. An invalid question is like dividing by zero in a mathematical proof. Once you sneak in a division by zero you can easily prove that 1 = 2. Invalid, bullshit, questions can be used to convince people of all sorts of crazy ideas.
May 6, 2015
Pharmacists or quiet killers?
Recently a very bad thing has started happening in rural areas of the US. There has been an upsurge in the number of new cases of HIV and Hepatitis C. HIV is usually spread by sexual contact. Hepatitis C is usually spread by sharing needles between drug users. The odd thing about this newest outbreak is that both diseases are being spread by sharing dirty needles.
I have read that there has been a huge increase in the use of heroin in the rural US. I have also read that until recently the drug of choice in the rural US has been meth. Meth is pretty easy to make, cheap, and gives a good high. Out in the boonies where everyone has an old shed that is a long way from neighbors or major roads, cooking meth is easy to do without getting caught.
Because it has horrible health effects, no one in their right mind would want to use meth. And, authorities have been cracking down on it in many different ways. I have pretty nasty sinus problems so I know how hard it is to get pseudoephedrine at a pharmacy these days in Texas. You have to ask for it over the counter, show ID, your ID is logged, and then you can over pay for pseudoephedrine. Used to be that people cooking meth would just steal pseudoephedrine off the shelves and go off to do their dirty deed. Much harder to get the basic materials. Hey! Making it hard to get the materials makes it hard to make the stuff.
I have read and seen TV reports that say that most of the meth in Texas now comes across the border. And, of course, the availability has gone down and the price has gone up. Capitalism works!
On the other hand the war in Afghanistan seems to have had an unintended consequence. The poppy fields are alive and doing very well. No one is burning them down or killing the farmers. I'm sure the farmers are very happy about that. But, the result appears to be that the supply of heroin is up and the price is down. Hey capitalism really works!
So, if you live in the rural US and your choice is between expensive meth and new reduced price heroin which are you going to chose? The answer is "what ever you can get". That is what it means to be an addict. You need to get whatever you can get. I have a few old friends who are recovering addicts of different types. Many of my old highschool friends are dead from drug overdoses. I have experience dealing with people close to me who became addicts. Some died. I was lucky to learn from their mistakes.
I can remember the late '60s and early '70s which means I did not experience them. Too many dead friends. Drugs scare the shit out of me. Doctors who do not share my experiences scare the shit out of me. I can't believe some of the addictive crap that doctors have tried to get me to take. My experience living through that time and going to school next to an open air drug market taught me way to much and has strongly shaped my opinions.
The increase in the use of heroin in rural areas of the US has directly resulted in the spread of HIV and Hepatitis C from sharing dirty needles.
I am not a lawyer, but I can read and what I have read has lead me to believe that in most states of the US it is legal to walk into a pharmacy and buy a clean needle and syringe. So why would anyone anywhere share a dirty needle? Good question. A question in which I have a great personal interest.
To say the least I am not a well man. I have several potentially fatal conditions. I to not expect to die from any of them. While they are not curable they are treatable. Due to a wonderful thing that gets called ObamaCare (The Affordable Care Act) I still have health insurance and can actually afford the treatments needed to keep me alive.
As a result of my medically necessary treatments I go through three to five needles per day. A couple of hundred needles is almost a two month supply. I like to buy two or three hundred needles at a time. Most places will not sell more than two hundred at a time because it depletes their stock. But, if I call ahead I can usually get full boxes at a case lot discount. Such a deal.
I live in Texas. I have talked to my doctors about getting needles and syringes. I was surprised to find out that in Texas you do not need a prescription to buy them. It is legal to buy them over the counter in any quantity at any pharmacy in Texas. I recently carried about 50 needles of several different varieties out of the US into the UK and returned with a smaller number of them. They went through customs both ways with not even a comment. Buying, owning, and using needles and syringes is pretty much legal most places.
So, again I ask you, why would anyone anywhere reuse a needle and syringe let alone share one and risk getting HIV and Hepatitis C?
Well, there are lots of reasons. If you live in a rural area how far are you from a pharmacy? How many pharmacies are their within 50 miles of where you live? Do you trust the pharmacist not to call the police and report you? Will he actually sell you the needles and syringes at all?
I looked up some statistics about the rural US. One said that 15% of the population lives on 72% of the land. One said it was more like 10% on 90% of the land. If I did the math correctly that comes out to about 18 people per square mile. I can show you square mile after square mile where the total population consists of people in cars on the Interstate.
Pharmacies rarely deliver, but drug dealers often do. People I knew back in the '60s did time for delivering to the wrong people. Idiots...
So what has this got to do with me, pharmacists, and killing people?
Recently I have been finding it harder and harder to buy syringes. Like I said I am not a lawyer, but to the best of my knowledge, in Texas, there are very few, if any, restrictions on selling needles and syringes. There is also a pharmacist's shield law that keeps a pharmacist from being held legally responsible for what someone does with what they sell. There seems to be no legal reason for a pharmacist to refuse to sell needles and syringes. It is quite clear that refusing to sell them leads to slow lingering death for drug users. Refusing to sell them can also lead to immediate death or serious medical issues for people who have to use them to stay alive. People like me. To me there is no moral or ethical reason not to sell them. No legal, moral, or ethical reason not to sell needles and syringes to anyone.
I can not find a legal, moral, or ethical reason not to sell needles and syringes to anyone who asks for them.
Recently I went into the local Walmart to buy needles and syringes. I have bought them there many times. I like to buy them there because they have a large stock on hand and they are open late. So, it was fairly late and I needed a shot. I went in and told the tech what I needed and he went off to get it for me. No problem, just like normal.
The pharmacist intervened and started asking me a bunch of questions. Funny thing, we have a law called HIPAA that defines Personal Health Information (PHI) and restricts where you can talk about it and under what conditions you can ask for it. During the conversation that followed the pharmacist demanded PHI that in my opinion he had no right to. I wanted my shot, I was under duress, so I gave it to him as quietly as I could and he proceeded to shout it out as loudly as he could. He yelled out the name of my medication and my health problem several times in front of a growing crowd of people. He committed several violations of HIPAA.
The end of the story is that he refused to sell me anything. The techs in the pharmacy looked shocked and embarrassed, and I told the pharmacist that he could fuck off. Yes, I did. Right there in the middle of Walmart. I told him to fuck off.
Before I go on with the story I should say that I complained to Walmart. Walmart gave me a written apology, the store manager called me and personally apologized. The pharmacy manager called me and gave me what can only be described as a groveling apology. Plus, I was told that what the pharmacist did was against company policy, that he had been disciplined, and counseled on Walmart company policy regarding needles and syringes. It seems Walmart has a policy of selling needles and syringes, without question, to anyone with the cash to buy them.
So, why did that guy refuse to sell me needles and syringes? That is, before I told him to fuck off? Well, the answer I got from his manager was that the guy said it violated his personal ethics to sell me needles and syringes. What? Please explain to me how your personal ethics can allow you do deny people access to medication? Or, even kill them? Well, it turns out that a lot of pharmacists have personal ethics that require them to kill people and some companies share their opinion.
The next time I went into Walmart I was able to buy what I wanted with no questions asked. They were out of one kind of needle I needed, but what the heck. They apologized for not having it and offered to order it for me.
I did not get my shot that night. I did not know of any other place where I could get the syringes I needed that late in the evening. I had to wait until the next morning to get what I needed. I had to go out and find another place to buy them. I was now more than 12 hours late for my medication. If I didn't get a syringe soon I was going to have to go to my doctor's office and pay for a specialist visit to get a shot. Expensive. I didn't want to do that.
I went to the local CVS. This is a store that is about a mile from my house and where I buy all my prescriptions. No love for CVS, but it is close and it has never lied to me. Other pharmacies have lied to me.
So, I went into my local CVS. They know me there. I asked to buy the needles and syringes that I needed and they asked why I needed them. I told them that I needed to give my self a shot. They asked if I had a prescription for the medication I was going to inject. I told the nice young lady that yes, I do have a prescription. She asked me what the medication was and if I could prove it. I told her that yes I could prove it, but no, I was not going to blurt out my medical history in front of the rapidly growing line of people waiting to talk to her. I also told her it was none of her business and that asking me about personal health information in front of a group of people was a violation of HIPAA. She did not care at all.
At that point the pharmacist yelled across the pharmacy asking me if I was, well he yelled out my full name with middle initial, born on my full birthday, living at my full address. What he did is as blatant a violation of HIPAA as you can get, except for what he did then. After a pause he yelled out the names of the three injected medication I use, asked which one I need the needles and syringes for, and told the tech to sell me the needles. To say I was shocked, and enraged, would be an understatement.
I did get the needles and syringes I needed. Federal law was broken, my rights were violated, I felt humiliated, but no one but me seemed to give a damn.
I talked to the pharmacist and he said that it was CVS policy to require customers to prove that they had a medical reason to buy syringes and needles. I tried to explain that there was no legal, or moral, reason to do that. He said that even if CVS didn't require it he would because of his personal ethical standards. After all he said "you might be using illegal drugs". In other words, the more real need I had for them, the less likely he is to let me have them. Nice guy. I just love people who think that their personal bigotry trumps our right to stay alive.
I called CVS and complained. The representative explained that the pharmacist was following company policy. They were sorry I was upset about it, but that is their policy. On the HIPAA violations? They didn't even apologize. Federal law was not a concern for CVS.
I did get a call from another pharmacist at the same pharmacy, who also was sorry I was upset. But, he explained that the pharmacist was within his rights to refuse to sell anything to anyone and that he was following company policy. He didn't care about HIPAA either.
I always thought that pharmacists were in the business of helping people stay healthy. Some of them are, I suspect that most of them are. But, some of them are in the business of playing God. They have the power of life and death and if they don't like the way you look they will let you die. If they suspect you are could possibly be doing something illegal, they will just kill you to make sure you don't. No proof required.
There are assholes everywhere, but they should not be allowed to have the power of life and death. What do you do when a whole company, the second largest pharmacy chain in the the US, decides to use their sick twisted morals and ethics to justify killing people by denying them medical supplies they need to stay alive?
Last time I needed syringes and needles I went to Walmart, got two hundred needles of one kind, but they were out of the other kinds I needed. I was driving home when I saw a Walgreens I pulled in and walked inside. I asked for what I needed and the tech got it off the shelf, and put it in a bag. I paid for it and left. No one in either store had ever seen me before. I have no prescriptions on file with either of them. They asked no questions. They just sold me what I needed. Walmart and Walgreens seem to have the right idea: Sell people what they need.
CVS clearly thinks they have the right to decide what you need and whether you get to have it, even if not getting it can kill you.
So, you are a rural drug abuser or addict. You have to drive 20 miles to get to a pharmacy, the only pharmacy around. And then you have to hope the pharmacist will sell you clean needles and syringes. You have to hope that the pharmacist will not yell out your request while the local sheriff is deciding what kind of snack will go best with the six pack of beer he just picked up. What are you going to do? Share needles and die.
I have read that there has been a huge increase in the use of heroin in the rural US. I have also read that until recently the drug of choice in the rural US has been meth. Meth is pretty easy to make, cheap, and gives a good high. Out in the boonies where everyone has an old shed that is a long way from neighbors or major roads, cooking meth is easy to do without getting caught.
Because it has horrible health effects, no one in their right mind would want to use meth. And, authorities have been cracking down on it in many different ways. I have pretty nasty sinus problems so I know how hard it is to get pseudoephedrine at a pharmacy these days in Texas. You have to ask for it over the counter, show ID, your ID is logged, and then you can over pay for pseudoephedrine. Used to be that people cooking meth would just steal pseudoephedrine off the shelves and go off to do their dirty deed. Much harder to get the basic materials. Hey! Making it hard to get the materials makes it hard to make the stuff.
I have read and seen TV reports that say that most of the meth in Texas now comes across the border. And, of course, the availability has gone down and the price has gone up. Capitalism works!
On the other hand the war in Afghanistan seems to have had an unintended consequence. The poppy fields are alive and doing very well. No one is burning them down or killing the farmers. I'm sure the farmers are very happy about that. But, the result appears to be that the supply of heroin is up and the price is down. Hey capitalism really works!
So, if you live in the rural US and your choice is between expensive meth and new reduced price heroin which are you going to chose? The answer is "what ever you can get". That is what it means to be an addict. You need to get whatever you can get. I have a few old friends who are recovering addicts of different types. Many of my old highschool friends are dead from drug overdoses. I have experience dealing with people close to me who became addicts. Some died. I was lucky to learn from their mistakes.
I can remember the late '60s and early '70s which means I did not experience them. Too many dead friends. Drugs scare the shit out of me. Doctors who do not share my experiences scare the shit out of me. I can't believe some of the addictive crap that doctors have tried to get me to take. My experience living through that time and going to school next to an open air drug market taught me way to much and has strongly shaped my opinions.
The increase in the use of heroin in rural areas of the US has directly resulted in the spread of HIV and Hepatitis C from sharing dirty needles.
I am not a lawyer, but I can read and what I have read has lead me to believe that in most states of the US it is legal to walk into a pharmacy and buy a clean needle and syringe. So why would anyone anywhere share a dirty needle? Good question. A question in which I have a great personal interest.
To say the least I am not a well man. I have several potentially fatal conditions. I to not expect to die from any of them. While they are not curable they are treatable. Due to a wonderful thing that gets called ObamaCare (The Affordable Care Act) I still have health insurance and can actually afford the treatments needed to keep me alive.
As a result of my medically necessary treatments I go through three to five needles per day. A couple of hundred needles is almost a two month supply. I like to buy two or three hundred needles at a time. Most places will not sell more than two hundred at a time because it depletes their stock. But, if I call ahead I can usually get full boxes at a case lot discount. Such a deal.
I live in Texas. I have talked to my doctors about getting needles and syringes. I was surprised to find out that in Texas you do not need a prescription to buy them. It is legal to buy them over the counter in any quantity at any pharmacy in Texas. I recently carried about 50 needles of several different varieties out of the US into the UK and returned with a smaller number of them. They went through customs both ways with not even a comment. Buying, owning, and using needles and syringes is pretty much legal most places.
So, again I ask you, why would anyone anywhere reuse a needle and syringe let alone share one and risk getting HIV and Hepatitis C?
Well, there are lots of reasons. If you live in a rural area how far are you from a pharmacy? How many pharmacies are their within 50 miles of where you live? Do you trust the pharmacist not to call the police and report you? Will he actually sell you the needles and syringes at all?
I looked up some statistics about the rural US. One said that 15% of the population lives on 72% of the land. One said it was more like 10% on 90% of the land. If I did the math correctly that comes out to about 18 people per square mile. I can show you square mile after square mile where the total population consists of people in cars on the Interstate.
Pharmacies rarely deliver, but drug dealers often do. People I knew back in the '60s did time for delivering to the wrong people. Idiots...
So what has this got to do with me, pharmacists, and killing people?
Recently I have been finding it harder and harder to buy syringes. Like I said I am not a lawyer, but to the best of my knowledge, in Texas, there are very few, if any, restrictions on selling needles and syringes. There is also a pharmacist's shield law that keeps a pharmacist from being held legally responsible for what someone does with what they sell. There seems to be no legal reason for a pharmacist to refuse to sell needles and syringes. It is quite clear that refusing to sell them leads to slow lingering death for drug users. Refusing to sell them can also lead to immediate death or serious medical issues for people who have to use them to stay alive. People like me. To me there is no moral or ethical reason not to sell them. No legal, moral, or ethical reason not to sell needles and syringes to anyone.
I can not find a legal, moral, or ethical reason not to sell needles and syringes to anyone who asks for them.
Recently I went into the local Walmart to buy needles and syringes. I have bought them there many times. I like to buy them there because they have a large stock on hand and they are open late. So, it was fairly late and I needed a shot. I went in and told the tech what I needed and he went off to get it for me. No problem, just like normal.
The pharmacist intervened and started asking me a bunch of questions. Funny thing, we have a law called HIPAA that defines Personal Health Information (PHI) and restricts where you can talk about it and under what conditions you can ask for it. During the conversation that followed the pharmacist demanded PHI that in my opinion he had no right to. I wanted my shot, I was under duress, so I gave it to him as quietly as I could and he proceeded to shout it out as loudly as he could. He yelled out the name of my medication and my health problem several times in front of a growing crowd of people. He committed several violations of HIPAA.
The end of the story is that he refused to sell me anything. The techs in the pharmacy looked shocked and embarrassed, and I told the pharmacist that he could fuck off. Yes, I did. Right there in the middle of Walmart. I told him to fuck off.
Before I go on with the story I should say that I complained to Walmart. Walmart gave me a written apology, the store manager called me and personally apologized. The pharmacy manager called me and gave me what can only be described as a groveling apology. Plus, I was told that what the pharmacist did was against company policy, that he had been disciplined, and counseled on Walmart company policy regarding needles and syringes. It seems Walmart has a policy of selling needles and syringes, without question, to anyone with the cash to buy them.
So, why did that guy refuse to sell me needles and syringes? That is, before I told him to fuck off? Well, the answer I got from his manager was that the guy said it violated his personal ethics to sell me needles and syringes. What? Please explain to me how your personal ethics can allow you do deny people access to medication? Or, even kill them? Well, it turns out that a lot of pharmacists have personal ethics that require them to kill people and some companies share their opinion.
The next time I went into Walmart I was able to buy what I wanted with no questions asked. They were out of one kind of needle I needed, but what the heck. They apologized for not having it and offered to order it for me.
I did not get my shot that night. I did not know of any other place where I could get the syringes I needed that late in the evening. I had to wait until the next morning to get what I needed. I had to go out and find another place to buy them. I was now more than 12 hours late for my medication. If I didn't get a syringe soon I was going to have to go to my doctor's office and pay for a specialist visit to get a shot. Expensive. I didn't want to do that.
I went to the local CVS. This is a store that is about a mile from my house and where I buy all my prescriptions. No love for CVS, but it is close and it has never lied to me. Other pharmacies have lied to me.
So, I went into my local CVS. They know me there. I asked to buy the needles and syringes that I needed and they asked why I needed them. I told them that I needed to give my self a shot. They asked if I had a prescription for the medication I was going to inject. I told the nice young lady that yes, I do have a prescription. She asked me what the medication was and if I could prove it. I told her that yes I could prove it, but no, I was not going to blurt out my medical history in front of the rapidly growing line of people waiting to talk to her. I also told her it was none of her business and that asking me about personal health information in front of a group of people was a violation of HIPAA. She did not care at all.
At that point the pharmacist yelled across the pharmacy asking me if I was, well he yelled out my full name with middle initial, born on my full birthday, living at my full address. What he did is as blatant a violation of HIPAA as you can get, except for what he did then. After a pause he yelled out the names of the three injected medication I use, asked which one I need the needles and syringes for, and told the tech to sell me the needles. To say I was shocked, and enraged, would be an understatement.
I did get the needles and syringes I needed. Federal law was broken, my rights were violated, I felt humiliated, but no one but me seemed to give a damn.
I talked to the pharmacist and he said that it was CVS policy to require customers to prove that they had a medical reason to buy syringes and needles. I tried to explain that there was no legal, or moral, reason to do that. He said that even if CVS didn't require it he would because of his personal ethical standards. After all he said "you might be using illegal drugs". In other words, the more real need I had for them, the less likely he is to let me have them. Nice guy. I just love people who think that their personal bigotry trumps our right to stay alive.
I called CVS and complained. The representative explained that the pharmacist was following company policy. They were sorry I was upset about it, but that is their policy. On the HIPAA violations? They didn't even apologize. Federal law was not a concern for CVS.
I did get a call from another pharmacist at the same pharmacy, who also was sorry I was upset. But, he explained that the pharmacist was within his rights to refuse to sell anything to anyone and that he was following company policy. He didn't care about HIPAA either.
I always thought that pharmacists were in the business of helping people stay healthy. Some of them are, I suspect that most of them are. But, some of them are in the business of playing God. They have the power of life and death and if they don't like the way you look they will let you die. If they suspect you are could possibly be doing something illegal, they will just kill you to make sure you don't. No proof required.
There are assholes everywhere, but they should not be allowed to have the power of life and death. What do you do when a whole company, the second largest pharmacy chain in the the US, decides to use their sick twisted morals and ethics to justify killing people by denying them medical supplies they need to stay alive?
Last time I needed syringes and needles I went to Walmart, got two hundred needles of one kind, but they were out of the other kinds I needed. I was driving home when I saw a Walgreens I pulled in and walked inside. I asked for what I needed and the tech got it off the shelf, and put it in a bag. I paid for it and left. No one in either store had ever seen me before. I have no prescriptions on file with either of them. They asked no questions. They just sold me what I needed. Walmart and Walgreens seem to have the right idea: Sell people what they need.
CVS clearly thinks they have the right to decide what you need and whether you get to have it, even if not getting it can kill you.
So, you are a rural drug abuser or addict. You have to drive 20 miles to get to a pharmacy, the only pharmacy around. And then you have to hope the pharmacist will sell you clean needles and syringes. You have to hope that the pharmacist will not yell out your request while the local sheriff is deciding what kind of snack will go best with the six pack of beer he just picked up. What are you going to do? Share needles and die.
Subscribe to:
Posts (Atom)