Saturday, December 04, 2010

Is Homeopathy Satanic?

As a scientist, I am skeptical of grandiose claims, cure-alls, and magic potions that cannot be explained naturally. However, also as a scientist, I try to keep an open mind, as I know there are many things which we do not yet understand. I can tollerate homeopathy, as long as it's not killing people. If it works, great, if not, then it's probably not a big deal.

As a Christian, I must also look at homeopathy. Is homeopathy satanic? If homeopathy cannot be explained by science, then are its effects from nature? If these effects are not from nature, from where do they come? Even if homeopathy has no real effects, is this faith-based medicine a false god?



Homeopathy is based on a core axiom, commonly called the law of similars, namely, that preparations that cause certain symptoms in a healthy person should be given in diluted form to people with ailments that exhibit similar symptoms.

To explore these issues, and examine homeopathy, we listen in on a conversation between three people who are having a discussion on the merits of homeopathy.



"Hey John!", Mike and Jill motioned to him to come over.

John stepped over, "Hi Mike. Hello Jill."

"What are you two up to?", said John.

"Jill was just telling me about this new kind of medicine, something about homeopathy, right Jill?" John interrupted, "You mean telepathy?" he elbowed Mike. "No really, homeopathy, it's a natural approach to healing,", said Jill.

John slowly combed his beard, "Yeah, I've heard of it. It's some weird hippy 'new age' thing, right?"

"New age!? You didn't tell me that, Jill!", Mike exclaimed.

"It's not 'new age', in fact it has been around since the 1800's.", said Jill.

John retorted, "Yes, it has, but since then science has advanced, and the only ways people are convinced of the efficacy of these potions is by combining them with 'new age' rituals and speech."

"So you think herbal medicine is all a scam?", Jill said.

John slowly responded, "No, I don't think all herbal medicine is a scam, homeopathy is not about herbal medicine, it is about the theory of similars. A theory that has never been shown to be true. Much like the theory of blood-letting."

Jill gulped, "I see. Well we all know that the pharmaceutical companies are all trying to keep you sick, their business is to sell you medicine, not make you better!"

John sighed, "Yes, and all mechanics break another thing in your car when they fix something else, right? I'm sure there are some crooked pharmaceutical companies, but to make your blanket statement, you must also believe that the homeopathics are crooks. They are people just as the ones who work in the pharmaceutical companies, subject to the same vices, and since their profit margin is so much higher, they are far more likely to be scamming."

"My cousin took some homeopathic remedy, and it helped her recover right away!", Mike cut in.

"So, how does it work then?", responded John.

Jill took a breath, "You see, you take something that gives a healthy person the same symptoms as the sick one is experiencing, you potentize it using a striker. This gives the memory of the energy of the poison to the water. Thus, when the sick person takes the pill containing the water, their body uses this to recover from the ailment."

Mike cut in, "You mean you dilute it and shake it. No need to use your fancy 'potentize' and 'striker' terms here. "

"Yes, that is correct. But the energy remains, the life-force of the poison.", responded Jill.

"Ah, see, now we are getting to the new age and occult. Since it is not possible to show how this works in nature, it must be some unnatural thing. You know, some spiritual thing. And that brings me to the question, is homeopathy satanic?"

Mike looked at John, "Wow! What are you talking about, John?!"

"You can't be serious, " said Jill. "All sorts of things were considered satanic and crazy because people didn't understand them. I'm sure electricity must have been at one time."

Mike snapped, "Sure, but some things that were considered satanic still are, for example, Tarrot cards, Ouija boards, fortune tellers, et cetera. When I see people putting vials of potions in their socks and dancing around, when I see people reciting numbers to be cured, when I see people putting all their faith in the church of homeopathy, it makes me question the power behind it."

Jill took a deep breath, "Well I can see that I'm not going to convince you today. You have brought up some points, and I will be watching homeopathy more carefully now to make sure I don't accidentally start turning to some occult practices."

Mike cut in, "hey guys! I almost forgot to tell you. My cousin just started this company and he said he can get us a great deal on vacuum cleaners, insurance, and legal council!"

Monday, October 04, 2010

A Break


Two weeks ago it was a usual Wednesday morning. I woke up at 6am so that I could drive the kids to school in St. Marys. As often the case, we were rushing and rushing, and not all the kids were moving very fast at these early hours of the morning. Finally, I told one that if he wasn't ready, we were just going to leave him at home. As I said this, I started out the front door to the car. I was carrying my usual lunch (a sandwich) and two mugs, one with coffee, the other vegetable juice. This particular morning it had been raining, and the water was still pooled on the painted concrete steps in the front of our house. As I went marching down the stairs, my feet flew out from under me, my hands full, grasping my lunch and drinks. BANG! My elbow hit the concrete step. SNAP! My back hit the edge of the step. I continued sliding down.

Moving in pain, I forced myself up and in a haze I stumbled back up the stairs into our house. I could hardly breathe, I could not speak. The pain felt as if I had broken something. Lisa rushed over to me, frantically asking me what was wrong. I kept trying to tell her as I gasped for air, but could not force out the sound. Finally, I gasped, "I fell." I tried to lay on the couch, my back was in severe pain. Eventually, when I was able to breathe more normally, I told Lisa what happened. Later she told me that she thought I was having a heart attack.


Lisa told me we should go to the emergency room. I did not want to, however. I was breathing, was not shot nor stabbed, I thought, so I could wait. At this point I remembered that I was supposed to be taking the kids to school. If we left now, they would only be a little late. I told Lisa that we could drive to St. Marys and stop by the clinic there. So we drove the 30 miles as I sat in the van seat, feeling every motion, every bump.

When we got there, we dropped off the kids and then Lisa brought me to the doctor. At this point, moving was not something I enjoyed, but I went to the office room, then to the reception, then to x-ray, and then back to the office. The doctor came and exclaimed that I had two broken ribs. He gave me a brace and a prescription for pain medication. That afternoon I was back at work for a couple of hours. Two days later, we moved. I think I'm going to give them a bit of a rest now though so they can heal!

And that, folks, is why you never ask for a break!

Friday, July 16, 2010

Communicating from VBA to Java

I needed a way to communicate from VBA to Java, this is VBA in the Office 2000 runtime, so it's fairly old. I thought that the easiest way would be to use socket communications. However, there is no built in socket library for VBA 2000. VBA, does let you map functions from DLLs and this is what I did:

Module mSocket

Option Compare Database
Option Explicit

Private isSocketServerRunning As Boolean

Public Const AF_INET = 2
Public Const SOCK_STREAM = 1
Public Const SOCKET_ERROR = 1
Public Const FD_SETSIZE = 64
Public Const FIONBIO = 2147772030#
Public Const SOCKADDR_IN_SIZE = 16
Public Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000

Public Address As String
Public Port As Integer
Public SocketHandle As Long

Public Type WSADATA
wVersion As Integer
wHighVersion As Integer
szDescription As String * 257
szSystemStatus As String * 129
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As Long
End Type

Public Type SOCKADDR_IN
sin_family As Integer
sin_port As Integer
sin_addr As Long
sin_zero As String * 8
End Type

Public Type fd_set
fd_count As Long
fd_array(FD_SETSIZE) As Long
End Type

Public Type timeval
tv_sec As Long
tv_usec As Long
End Type

Public Declare Function WSAStartup Lib "wsock32.dll" (ByVal intVersionRequested As Integer, lpWSAData As WSADATA) As Long
Public Declare Function WSACleanup Lib "wsock32.dll" () As Long
Public Declare Function w_socket Lib "wsock32.dll" Alias "socket" (ByVal lngAf As Long, ByVal lngType As Long, ByVal lngProtocol As Long) As Long
Public Declare Function w_closesocket Lib "wsock32.dll" Alias "closesocket" (ByVal SocketHandle As Long) As Long
Public Declare Function w_bind Lib "wsock32.dll" Alias "bind" (ByVal socket As Long, Name As SOCKADDR_IN, ByVal namelen As Long) As Long
Public Declare Function w_connect Lib "wsock32.dll" Alias "connect" (ByVal socket As Long, Name As SOCKADDR_IN, ByVal namelen As Long) As Long
Public Declare Function w_send Lib "wsock32.dll" Alias "send" (ByVal socket As Long, buf As Any, ByVal Length As Long, ByVal Flags As Long) As Long
Public Declare Function w_recv Lib "wsock32.dll" Alias "recv" (ByVal socket As Long, buf As Any, ByVal Length As Long, ByVal Flags As Long) As Long
Public Declare Function w_select Lib "wsock32.dll" Alias "select" (ByVal nfds As Long, readfds As fd_set, writefds As fd_set, exceptfds As fd_set, timeout As timeval) As Long
Public Declare Function htons Lib "wsock32.dll" (ByVal hostshort As Integer) As Integer
Public Declare Function ntohl Lib "wsock32.dll" (ByVal netlong As Long) As Long
Public Declare Function inet_addr Lib "wsock32.dll" (ByVal Address As String) As Long
Public Declare Function ioctlsocket Lib "wsock32.dll" (ByVal socket As Long, ByVal cmd As Long, argp As Long) As Long
Public Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Long) As Long

Public Function sendMessage(message As String) As Integer
Dim wd As WSADATA
Dim socketHNDL As Long
Dim serverAddress As SOCKADDR_IN
Dim ret As Integer

WSAStartup &H101, wd
socketHNDL = w_socket(AF_INET, SOCK_STREAM, 0)

serverAddress.sin_family = AF_INET
serverAddress.sin_port = htons(9999) 'port number
serverAddress.sin_addr = inet_addr("127.0.0.1")

ret = w_connect(socketHNDL, serverAddress, SOCKADDR_IN_SIZE)
If (ret > -1) Then
ret = w_send(socketHNDL, ByVal message, Len(message), 0)
End If
w_closesocket socketHNDL
sendMessage = ret
End Function

Public Function startSocketServer()
On Error GoTo errorHandler:
Dim result As Double
If (sendMessage("ping") = -1) Then
result = Shell("javaws http://programs.onyxtop.com/JavaPrograms/WebStart/socketServer.jnlp", vbMaximizedFocus)
If (result = 0) Then
GoTo errorHandler:
Else
isSocketServerRunning = True
End If
Else
isSocketServerRunning = True
End If

Exit Function
errorHandler:
mError.recordError Err.Description, "mSocketServer.startSocketServer", _
"Starting Java Socket Server", mError.FATAL
MsgBox "Unable to start Java Socket Server. Functionality may be limited.", vbOKOnly, "Socket Error"
End Function

Public Function checkSocketServer()
If (Not isSocketServerRunning) Then
startSocketServer
iSleepy 5000
End If
End Function


The Java side is fairly simple. You basically start a ServerSocket listening on localhost and the port used in the VBA. Now, VBA can communicate with your Java program without the need for polling.

Saturday, July 10, 2010

Arizona Immigration Law

Copying from my Buzz post to allow for anonymous comments.

B. FOR ANY LAWFUL CONTACT MADE BY A LAW ENFORCEMENT OFFICIAL OR AGENCY OF THIS STATE OR A COUNTY, CITY, TOWN OR OTHER POLITICAL SUBDIVISION OF THIS STATE WHERE REASONABLE SUSPICION EXISTS THAT THE PERSON IS AN ALIEN WHO IS UNLAWFULLY PRESENT IN THE UNITED STATES, A REASONABLE ATTEMPT SHALL BE MADE, WHEN PRACTICABLE, TO DETERMINE THE IMMIGRATION STATUS OF THE PERSON. THE PERSON'S IMMIGRATION STATUS SHALL BE VERIFIED WITH THE FEDERAL GOVERNMENT PURSUANT TO 8 UNITED STATES CODE SECTION 1373(c).

'Those who would sacrifice freedom for security deserve neither' - Benjamin Franklin.




Wednesday, March 17, 2010

Gasoline on the candle

I have always worked fast. It's hard for me to see a job not done. In a few hours I have done things others have taken months. This, however, has taken its toll. I suspect that keeping up this level of intensity has negatively impacted my health. But I don't know how to stop. My mind runs a million miles per hour, playing out every path, my body used to be able to keep up.

If you've ever talked to me while I am working on a problem, you may have noticed that I struggle to slow down my speech, just so that you will be able to understand. A million perceptions, a million thoughts, but fewer actions. I am always looking at ways to improve my performance, often performing many tasks at once. Ambidextrous by force.

But I fear that this is not sustainable. I have others to worry about now. I have responsibilities toward my family. And thus, I am asking this advice: For all that can take 6 months to do something, how do you do it? How do you slow down? How can you slow thinking, stop thinking? How do you take the time to inhale?

Thursday, March 04, 2010

Thinking vs. Reacting

As computer scientists, we tend to try to get the computer to 'think' about problems using all sorts of complicated processes. The result is that often our programs are clumsy, slow, and not elegant. If you think about how humans tend to perform operations quickly, elegantly, and precisely, you will realize that we train for the operations. We perform them so many times, that we can do them without thinking about them. We have developed a complex series of reactions and are no longer thinking about the things we are doing.

Of course, as we are in our training mode, we will have to think about what we are doing. But when we master tasks, we will be able to do them without thinking. I think that computer scientists need to keep this in mind when they are designing complex systems. There is a time for thinking, and a time for reacting.

Saturday, February 27, 2010

Relaxation on the Cheap

So what has the best ROI (Relaxation on Investment)? Before we get to that, it is of course going to depend on the person. Different people receive differing amounts of relaxation from things. Now, I'm sure a few will argue that if you can't afford to relax, then you shouldn't. But that is a myopic point of view. We have to look at the larger picture, build up of stress will make us sicker, and this will most likely cause us to have trouble making a living. Thus, relaxation is more like taking a shower. Sure, can skip it and save money in the short term, but in the long term, it will stink.

Since I am a man, I know, at least for me, alcohol tends to have the highest ROI. Now this isn't the case for all men, it may induce more stress in some cases. But, generally, for men, alcohol tends to have the highest ROI. This is probably why more men have become alcoholics (although I have heard that the number of women becoming alcoholics is on the rise, is that due to the recession?)

What about for women? I don't know. I would like to hear your opinion on it. So, simply rate things by how much stress they relieve and then divide that by the cost of the thing. So, for instance, going on retreat: let's use a 0-100 scale for the stress relief. Maybe it has a 90 for stress relief, but it ends up costing 500$ for the plane ticket and 1 week of pay. Whereas, a date might have a 30 for stress relief, but only cost 50$.

What are your ideas for relaxation?

Friday, February 26, 2010

What is a living wage?

So I may have started some controversy when I claimed that I paid no Federal Income taxes last year (none was deducted from my paychecks). I have a simple and legal step by step method that can work for almost anyone1:
  1. Get two jobs.
  2. Have 25% inflation between the year 2000 and 2010.
  3. Receive a 7% pay decrease from one job over 10 years.
  4. Receive a 7% pay increase from the other job over 10 years.
  5. Increase your number of dependents by a factor of 8.
Now, having a drastic cut in effective income is not always a bad thing. I have learned and experienced a lot of generosity over the years. There are still many generous people in the world that will help out people in need. It also shows how it is possible for one to live on a meager income. As many people decrease their income due to the recession, there are some tips I think I can give:

Don't spend money! Ok, ok, you've heard it before, don't spend more than you can afford. This is not what I mean. I mean don't spend more than you absolutely need. Do you need to buy new furniture? No! I have not bought a single piece. What about new clothes? Nope. So many people buy new clothes, I am able to use what they toss. Also, you can wear the same clothes for 20 years. It is possible! I wear the same coat I got second hand more than 15 years ago. Vacation? Have a staycation---just kidding. But really, if you can't afford it, you should find a cheaper way to relax. There are many other things as well, but it seems these are ones that many people forget. Folks, it's time to learn to tighten your (used) belt---time to learn how to not spend money.

1 Possible side effects may include nausea, vomiting, diarrhea, high blood pressure, and alcoholism. Please talk to your tax accountant before considering this approach. This approach is known to the state of California to cause cancer.

Friday, February 12, 2010

Communications

First there was speech, but then someone said something bad, so speech was bad.
Then there was writing, but someone wrote something bad, so reading was bad.
Then there was smoke signaling, but someone burned down their house, so smoke signaling was bad.
Then there was the telegraph, but someone sent a bad telegram, so telegraphs were bad.
Then there was the telephone, but someone said something bad, so the telephone was bad.
Then there was the internet, but someone did something bad on it, so the internet was bad.
Then there was email, but someone sent something bad, so email was bad.
Then there was the blog, but someone posted something bad, so blogs were bad.
Then there was the social networks, but someone wrote something bad, so social networks were bad.

It is strange that as every new communication medium comes, some people snap to say that the medium is bad/evil. But, in a few years, they use it like they never said that.

It's not the medium that is bad, any medium can be abused. Only the naive use the logic above and, in the end, distract from the real evil.

Monday, February 08, 2010

Scripts

I've been doing some grading for a course and I wanted to automate somewhat sending feedback to the students. I am able to get a CSV file with the roster information and their submissions follow a particular format (Lastname_Firstname_...). So when I'm done grading and commenting, I want to be able to blast out the comments in emails. There are about 50 students in the course so sending an email to each one would take a long time.
Here is the first script:

#!/bin/bash
HW_DIR=$1
SUBJECT=$2
ROSTER=CIS_111_RosterExport.csv
C_DIR=$( pwd )
cd $HW_DIR
for file in *; do
LAST_NAME=$( echo $file | cut -d _ -f1 )
FIRST_NAME=$( echo $file | cut -d _ -f2 )
FOUND=0
while read line; do
RLAST_NAME=$( echo $line | cut -d "," -f2 | tr -d \" )
RFIRST_NAME=$( echo $line | cut -d "," -f3 | tr -d \" )
if [ "$LAST_NAME" == "$RLAST_NAME" -a "$FIRST_NAME" == "$RFIRST_NAME" ]; then
EMAIL=$(echo $line | cut -d , -f4 | tr -d \" )
$C_DIR/sendmail "$FIRST_NAME $LAST_NAME" $EMAIL "$SUBJECT" "Results: " $C_DIR/$HW_DIR/$file
FOUND=1
fi
done < $C_DIR/$ROSTER
if [ $FOUND -eq 0 ]; then
echo "Oh NO!"
echo $file
fi
done


It takes as input the directory with the files I want to send and a subject line for the email.

And here is my sendmail script:

#!/usr/bin/osascript
on run argv
set _name to (item 1 of argv)
set _to to (item 2 of argv)
set _subject to (item 3 of argv)
set _body to (item 4 of argv)
set _attachment to (item 5 of argv)
tell application "Mail"
set theMessage to make new outgoing message with properties {visible:true, subject:_subject, content:_body}
tell theMessage
make new to recipient at end of to recipients with properties {name:_name, address:_to}
end tell
tell content of theMessage
make new attachment with properties {file name:_attachment} at after last paragraph
end tell
send theMessage
end tell
end run

Saturday, January 23, 2010

Marriage Retreat

About a month ago, I went on a marriage retreat. This was the first time I had been on one, although I have been on several Ignatian retreats. I thought the retreat was very good and would recommend it to anyone married or thinking about getting married.

There were several interesting things that I learned, I will try not to bore you with all the details. However, I think there were two main things that really hit home for me. One has to do with differences between men and women. Growing up, I really didn't think there were any psychological differences between men and women. I think this was most likely due to the indoctrination that was everywhere present at the time. Men and women are equal became men and women are equivalent. More recently, however, there have been steps back to the realization that men and women are different, not just physically, but psychologically. Of course, this is a generalization, and as a generalization will not always hold true, but for the most part, women tend to depend more upon emotion, intuition, and feeling, while men tend to depend more on logic, reasoning, and rationality.

This does not mean that women are less than or more than men, it just means they are different and thus, will most likely respond differently in certain situations. It also does not mean that women do not have logic, nor does it mean that men do not have emotion. Many things fall from this. Women tend to want reassurance. For a man, this can seem that the women wants reassurance because they have reasoned that the man does not, for example, love them, even though the man just told them last week. ;-D Generally, for a man, facts hold until told otherwise. But intuition and emotions can change even though we cannot see them and without any apparent external cause.

Without knowing this, a relationship can easily start to spiral. For example, a wife innocently starts asking for reassurance. The husband wonders "what he did" or why his wife doesn't believe what he told her last week. The husband keeps trying to reason out why his wife doesn't believe him and starts to become irritated. The wife does not get the reassurance she needs at the moment, thus causing her to need yet more reassurance, which then feeds the cycle. And no one knows what them problem is with the other. There are many other things that can fall from this.

Another important thing I got from the retreat is that our hearts were made for God. This means that our partner cannot completely satisfy our heart. This could be one reason for some people to have a sense that something is not completely right with their relationship. Both men and women can have this sense. For men, however, we tend to rationalize it away. As for women, they generally depend more on intuition. Thus, for women, this can be a more dangerous sense---if they do not know from where it comes.