Bible Study Resources

You may not know this, but for the last 10 weeks or so, I have been teaching the 75+ age bible study group at my church. It’s an interesting challenge to come up with material that they are not already intimately familiar with. As a result I spend between 8-14 hours in preparation each week for that Sunday’s lesson. I’ve fond that they don’t often speak up, even when prompted with easy questions. So it’s turned out to be more or less a 45 minute sermons.

I am THOROUGHLY enjoying myself and the responsiblity has brought a bit of structure into my normally hap-hazard life. So many many things have improved since I started doing this. I cannot begin to list them all and it probably isn’t entirely appropriate on a mostly technical resource related site.

But, several people have recently spoken to me what resources I use for my lessons, and it seems appropriate that I might share them here. All most all of my resources come from the Blue Letter Bible site. I’ve found this site has more features than most affordable bible software, and it is free. I will probably post recorded audio of my lessons here sometime, because I find some of the knowlege is already fading and if I don’t get my notes and thoughts down somewhere, I’ll lose them. And that is after all one of the main reasons this site is called The Code Cave. It’s not code, but I still need to put this stuff into cold storage before it melts away.

So, here is a quick tour of the links that I’ve used for a recent lesson:
I use the KJV as a base for my research, because it enables all of the blue letter buttons to the left of the text. Here take a look at 1 Corinthians 7:
http://www.blueletterbible.org/kjv/1Cr/1Cr007.html#top

This of course includes the references to the Greek (click the C), including phrase searches and tense notification
http://www.blueletterbible.org/cgi-bin/c.pl?book=1Cr&chapter=7&verse=1&version=KJV#1

From which you can click on the Strong’s number and see the original sense of the word and see all of its uses
http://www.blueletterbible.org/cgi-bin/words.pl?book=1Cr&chapter=7&verse=1&strongs=680&page=

You can see all of the versions side by side
http://www.blueletterbible.org/cgi-bin/versions.pl?book=1Cr&chapter=7&verse=1&version=KJV#1

You can get the sections (in some versions like the NKJV) in paragraph form
http://www.blueletterbible.org/cgi-bin/tools/printer-friendly.pl?book=1Cr&chapter=7&translation=nkjvp&x=6&y=8

Or in verse/table form (this is what I copy into Open office in order to put notes below each verse)
http://www.blueletterbible.org/cgi-bin/tools/printer-friendly.pl?version=nkjv&book=1Cr&chapter=007&navigated=yes

And there’s an audio link at well so that you can hear the whole bible that way.

I’ve not used the K button for a lesson, but the “Treasury of Scripture [K]nowledge” shows related verses.

I mostly use the verse form of the NKJV, the Greek references from the KJV and the [L]ist of commentaries.

Additional helpful links include:
J Vernon McGee’s 5 year audio program in zipped MP3’s
http://throughthebible.ca/zip/
and his notes he spoke from when making the shows:
http://thruthebible.ca/notes/index.htm

He is a good balance to David Guzik
http://www.enduringword.com/1cor_audio.htm
And his notes
http://www.enduringword.com/commentaries/46.html

Sometimes my lessons land somewhere between the two of them, but on some points, I think they both have missed minor points Paul was making.

Anyway, maybe you’ll find those links useful…

December Mod of the Month: How to make a USB extension cable.

I got tired of fighting the poorly designed slanted USB ports on the front of the Dell GX260 computers.

So, inspired by a friend’s similar project, I created this:
Completed USB extension cable

The process is really pretty simple. First you start with a standard USB cable. Mine was about 4 feet long.

Then you also need one of those USB to PS2 converters that you have laying around from any of the USB mice you’ve bought in the last 5 years. On my first experiment, I pealed all of the outside off. I don’t recommend doing it that way anymore.
Two different USB/PS2 converters

In making my second cable, I’ve found that the BEST way to do this mod is to slice it along the glue line on the side of the wrapper. With this second converter, I fond it even had a couple of plastic pins that will hold it together nicely. Here is the second adapter stripped. With the “wrapper” in-tact, I will be able to make the final product look much more professional using glue instead of tape. You can see the insert naked beside it.
Two different USB/PS2 converters

The next bit of the process is to cut off the plastic and the PS2 connector. Discard this part. Be very careful as you get the connector to this point. Hidden in the final part of plastic are four very tiny pins, plus one on the side. You can see the one on the side in the picture. If you break off any of these pins, you’ll be starting over again. You can probably manage if you break the side pin, but you’ll end up having a harder time fitting it back into the “wrapper”.
Here's the stripped connector.

Then you need to do some soldering. The order to connect the pins from cable to the connector is, from left to right, red, white, green, black. The ground connects to the outside of the connector. In my two test cases, the ground connector was on the left, but there’s no reason that this must be so. When you cut the end off of the USB cable, just slice it off a short ways from the device end of the cable. Carefully strip the rubber insulation from around the outside. Then unwrap the shield wires from the inner cables. Then twist it into a single wire.

Here is how the pins should be connected:
USB connector pin out.

Once you have the wires on, it should look like this….
A wired connector

At the end of the day, if you don’t have any shorts, you should have a fully working extension cable that allows devices to be recognized by windows upon insert:
A completed product

Mod complete!

How to delete a printer from a command line or from Delphi

The command line for deleting a printer looks like this:

rundll32 printui.dll PrintUIEntry /dn /n\\machine\printer

I could not get that to work for my current situation. So I wrote a Delphi program that did the same.

You can down load it here.
PrinterManipulation.zip

You can use this next source code clip instead of downloading if you like. It assumes there are three buttons on the page and one listbox on a form named Form1. After creating those controls, select all of the pascal source text AFTER the “unit” line and paste this source code over top of it. After that, double click on all of the buttons, compile and you’ll have a peice of running code.

[delphi]
// ****************************************************************************
// u_PrinterManipulation.pas 12/Dec/2006
// Written by Brian Layman
// Visit him at http://www.TheCodeCave.com
//
// A quick program to demonstrate the deletion of a printer.
//
// Usage: PrinterManipulation.exe Just click on the button 1 to populate and
// select a printer off of the list. Use button2 or button3 for two
// different deletion methods. Double clicking the list is the same as
// clicking button3.
//
// History:
// 04/Dec/2006 – BL – Created
//
// ****************************************************************************
interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
Button2: TButton;
Label1: TLabel;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; // TForm1

var
Form1: TForm1;

implementation

{$R *.DFM}
uses
WinSpool, Printers;

type
{******************************************************************************
TPrinterDevice
******************************************************************************}
TPrinterDevice = class
Driver, Device, Port: String;
constructor Create(ADriver, ADevice, APort: PChar);
function IsEqual(ADriver, ADevice, APort: PChar): Boolean;
end; // TPrinterDevice

{******************************************************************************
Create
******************************************************************************}
constructor TPrinterDevice.Create(ADriver, ADevice, APort: PChar);
begin // Create
inherited Create;
Driver := ADriver;
Device := ADevice;
Port := APort;
end; // Create

{******************************************************************************
IsEqual
******************************************************************************}
function TPrinterDevice.IsEqual(ADriver, ADevice, APort: PChar): Boolean;
begin // IsEqual
Result := (Device = ADevice) and ((Port = ”) or (Port = APort));
end; // IsEqual

{******************************************************************************
TForm1
******************************************************************************}
{******************************************************************************
Button1Click
******************************************************************************}
procedure TForm1.Button1Click(Sender: TObject);
var
indx: Integer;
begin // Button1Click
ListBox1.Clear;
for indx := 0 to (Printer.Printers.Count – 1)
do ListBox1.Items.Add(Printer.Printers[indx]);
end; // Button1Click

{******************************************************************************
ListBox1Click
******************************************************************************}
procedure TForm1.ListBox1Click(Sender: TObject);
var
hPrinter : Cardinal;
PrinterDef: PRINTER_DEFAULTS;
pPrinterName: PChar;
begin // ListBox1Click
pPrinterName := PChar(ListBox1.Items[ListBox1.Itemindex]);
FillChar(PrinterDef, sizeof(PrinterDef), #0);
PrinterDef.DesiredAccess := PRINTER_ALL_ACCESS;

if (OpenPrinter(pPrinterName, hPrinter, @PrinterDef))
then begin
if DeletePrinter(hPrinter)
then ShowMessage(‘Deletion Succcesful’);
ClosePrinter(hPrinter);
end
else ShowMessage(‘Could not open’);
end; // ListBox1Click

{******************************************************************************
Button2Click
******************************************************************************}
procedure TForm1.Button2Click(Sender: TObject);
var
ADevice: PChar;
PrinterHandle: THandle;
begin // Button2Click
with TPrinterDevice(Printer.Printers.Objects[ListBox1.ItemIndex])
do begin
GetMem(ADevice, Length(Device));
StrCopy(ADevice, PChar(Device));
end;
OpenPrinter(ADevice, PrinterHandle, nil);
if DeletePrinter(PrinterHandle) then ShowMessage(‘Deletion Succcesful’);
ClosePrinter(PrinterHandle);
FreeMem(ADevice);
end; // Button2Click

end.
[/delphi]

Build your own spam filter with PHP and DNSBLs

Have you ever gotten an email asking if want certain parts of your body enlarged, parts that you might not even have? Was the next email you read one asking if you want to loose the inches you’ve recently gained? Did you ever notice how these emails are always from people that you are fairly certain have nothing to do with the contents of the email. Did MTeresa@Vatican.org really send that diet pill email? Have you ever gotten returned or rejected “can’t be delivered” emails from addressed you’ve never ever sent an email to?

I have.

SPAM. It’s HORRIBLE! My email box for Brian@TheCodeCave.com probably gets 3 to 1 spam over real email. I expected that. I put that address out everywhere and don’t protect it. It is meant to be my public address. But the FROM addresses on all that email never indicates who the email is really from. Even the company information inside the email header is faked. The spammers will grab someother name on their spam list and use it as their from address. I’ve had my name put into the from address of emails a few times. It’s an annoying problem, just ask the Nuclear Moose.

Why this can happen is a long story. It all relates back to the fact that SMTP and port 25 were never meant for submitting emails to email servers. SMTP was only meant for server to server communications. However, that’s for a different post. The long and short of it is that everything can be faked except for one thing: the IP address of the server that sent the email.

Because that IP address is accurate, you can use it to tell if the person that sent the email is a spammer. The post tells you a couple ways to do that. And because this is The Code Cave, you get a fully functional php routine to boot.
Continue reading Build your own spam filter with PHP and DNSBLs

Well, I’m feeling better…

Yeeesh, what a Thanksgiving, three glasses of gingerale and two soda crackers for the day…

Some of you may know that we have a moderately sized family with four kids. We live out here in Ohio, with no relatives within hailing distance. Usually when one of us gets sick, there more than enough helping hands. But when all of us get it… oh, it is horrible.

After having my wife moaning about stomach cramps for two hours and then her and daughter empty their stomachs emptying their stomachs twice (my daughter hitting 5 “rooms” on her way to the kitchen sink after ignoring the bucket that had been beside her on the couch) I sent everyone in the house to bed at 8:30.

And so began one of the longest nights of our lives.

I’ll spare you the goriest details, but I was on the underwear and bucket brigade. Literaly for three hours I got one 5 minute break. The three year old slept through but Jaxom fell to it at 9 and Julian at 9:30. Azia’s bedding officially bit the dust at 10. And so it went. Finally after I got the load emergency load of undies started in the washer, I succumbed to it at 11:30, but still was on emptying duty.

A neighbor called and invited us down to her place again for Thanksgiving around 9am. Everyone was asleep. I tried to walk around a bit and checked on everyone. Our neighbor was wonderful and went bought us some 7up, gingerale and saltine crackers. What a blessing! I can honestly say I’ve never been so thankful on Thanksgiving ever in my life.

I think the bigger kids each had a hot dog around 9pm that evening, but that was the limit of our thanksgiving. Saturday I did work on the leaves some (we have a lot and HAVE to work each chance we get before the snow comes.) and fixed the tailpipe on the truck and installed a new horn. But I was WIPED at the end of the day. Sunday, it took all I had in me to complete the Sunday school class (I’m teaching on 1 Corinthians).

Today, Monday, I am actually feeling normal again.

Yeah, that was fun.

RE:Help me keep a family out of a tent.

I was asked:

Good luck with this, but is this the right and fair way to solve this kind of problem? If the money is raised, one family gets a new home and others don’t. Surely $45000 could build a lot of inhabitable garages that could be used until people can do more for themselves.

I say this without knowing much about the situation, like why they don’t have access to insurance money, what kind of house you get for $45000, what kind of house they had before, what their income is now and what it was before the hurricane, what the FEMA is, what the FEMA is going to do with the trailer, how many other people are losing their trailers, how their current situation compares to others there, how much land they have, etc. Perhaps you can fill me in.

BTW, it wouldn’t be practical for me to contribute, having no access to credit cards or US banks. I’d have to pay many times that in Money Order fees.

To which I replied:

I think I can answer all of your questions Peter. It will just take some reading.

First of all, FEMA is the Federal Emergency Management agency. They provided, to the best of my knowledge, 31,400 travel trailers and 4,700 mobile homes as temporary living shelters in the wake of Hurricane Katrina. The trailers were provided free of charge for 18 months. In February 2007, that housing assistance will end and the trailers will in all likelihood be disposed of. They were always intended as temporary shelters and after being lived in for a year and a half, I suspect they have reached their safe life expectancy. The mobile homes (not the trailers) can be purchased by those occupying them. (http://www.clarionledger.com/apps/pbcs.dll/article?AID=/20061015/NEWS/610150388)

As of October 95% of those trailers were still occupied. With the need for housing, the price of residences has skyrocketed. (www.nlihc.org/press/101706pr.pdf)

I’ll admit I don’t know the exact Earl family income before Toby lost his fishing boat (well, not really lost – they can see it still up in a tree near them) and before the restaurant where Yvette worked was destroyed. However, the median household income was $31,224 in the year 2000 (http://www.city-data.com/city/Pearlington-Mississippi.html). Toby has since salvaged a flat boat which he can use to go out to reach a smaller number of traps. He’ll work to recover from there.

I also don’t know the specific value of their previous home. I can tell you that 6 years ago the median house value was $60,000 and most of the houses were between 20-30 years old. Right now there really is no median house value to speak of. The $45,000 for a new built house is not building them a luxury condo, but it will be safe, clean and livable. (http://www.city-data.com/housing/houses-Pearlington-Mississippi.html)

You are very correct in saying that a large number of heated enclosures could be built as a stop gap. However, I don’t believe that would be possible. It would not be allowed. One thing that everybody must remember, about the south, is that everything is about power. While it would logically make some sense to suspend zoning laws and some local building codes in this state of emergency, it will not be done. It would reduce the power of those in charge of such things. It would be declared that health concerns would prevent building structures that do not meet code, but there would be other reasons at play. Never mind that the daily low of 40 degree (F) and average daily temp of 50 has an effect on health. People garner power in the south and hold onto it with a death grip. Sometimes that literally involves death.

On one of her trips to Pearlington, Angela delivered supplies and donations from churches up north. A local pastor, Rev. Fred Fields of the Mount Zion AME Church, had agreed for the supplies to be unloaded. However there was a problem. Rev. Fields was also on the pay of the local distribution center – center that had grown a reputation for “mis-allocation” of supplies. It appears that when he reported to the distribution board the size of the donations and they realized the Angela’s actions were reaching a disturbing level compared with what the distribution center was achieving, he refused to let any more donations be delivered to the people of Pearlington from church property. Getting all of this second hand, I can’t be certain of Rev. Fields full motivation, but the end action is that he refused to assist in delivering goods and made a play to funnel all of that material through an operation for which he was on the payroll. The end result was that a neighbor opened up their private property and legal distribution of goods continued 50′ away from the original location. BTW that neighbor was the wife of the pastor that founded the AME church. This wasn’t a church matter. (http://www.pearlingtonproject.org/update3.htm)

So, in short, http://www.pearlingtonproject.org/ – the Pearlington Project is a group of people I am familiar with and that is outside of the corrupt influence of the local southern governmental association. (NOTE THIS IS THE .ORG SITE, I know little about the group running the .com site beyond it being a group of doctors from Colorado) There are many places in which people can make donations to general funds. I’m quite certain that if you were one who wished to help, you could make donations to the Red Cross and other foundations in amounts of $50, $100, $1000, or more compared to which money order fees would be negligible. And when that amount is spread amongst the 35,000 households in need of permanent shelter, it will help some.

My wife and I have chosen to take a different approach. The Pearlington project is working to build houses in general. As many as possible, one at a time. The houses will be prebuilt up north, shipped in pieces to Pearlington and assembled. The $45,000 covers not only all zoning permits, building materials, labor costs and supplies, carpets and internal fixtures for each house. Donations to the general Pearlington project will be spread amongst those efforts. My wife selected the Earl family as a specific target, a way to put distinct faces before those who might not have donated to a general fund. I think that is a very good idea and have taken up the cause. Our goal of reaching $45,000 is difficult, but it just might be achievable.

I certainly do encourage you to donate to a general fund if you think it is a better way for your money to be spent. I look forward to hearing about it. However, I think I can raise more funds through giving people a target goal and some faces to go with it. Additionally, if I can show those that donated, a family moving into a house, maybe people will enjoy the feeling of being a part of that. They will see exactly what their monies helped achieve and maybe – just maybe – we can move on to the next house, and the next one after that – hopefully with your help.

Bloggers Build a House

Allow me to introduce you to the Earl Family: Toby, Yvette, Brittany, and Michael. (Toby was not available for this photo.)

Nearly a year and a half ago, they lost their home when Hurricane Katrina hit the small town of Pearlington, MS. That trailer is where they’ve been living of late. That’s about to change.

For a couple years now, my wife and I (I mostly helped by providing tech support and online resources) have been working to help the residents of Pearlington, MS through her blog, and her Purls of Hope website. She’s been doing this to support the Pearlington Project Katrina Foundation, which was started by Angela Cole, shortly after Katrina hit. I’ve referred you to that site before; referencing some of the roadblocks faced by those that only one to help people in need.

For this project, I’m taking my help a step further because the need is great.
Continue reading Bloggers Build a House

Contaminated: 11M Bottles Of [Off-Brand Acetaminophen]

I this is not as big a deal as it sounds, but here ya go…. It sounds like a machine shredded itself and they are recalling all pill runs anywhere near when it desintigrated into the pills that were being made.

http://www.newsnet5.com/health/10280646/detail.html?treets=nn5&tml=nn5_natlbreak&ts=T&tmi=nn5_natlbreak_1_08350211092006 

Pills Contaminated With Metal Fragments

 

POSTED: 9:20 am EST November 9, 2006

 

A major manufacturer of store-brand acetaminophen recalled 11 million bottles of the pain-relieving pills Thursday after discovering some were contaminated with metal fragments. 

There were no immediate reports of injuries or illness. 

Perrigo Co. said it discovered the metal bits during quality-control checks. The company passed 70 million pills through a metal detector and discovered the metal in about 200 caplets, according to the Food and Drug Administration. The fragments ranged in size from “microdots” to portions of wire one-third of an inch long. 

The recall affects bottles containing various amounts of 500-milligram caplets. 

Perrigo bills itself as the world’s largest manufacturer of store-brand nonprescription drugs. The Allegan, Mich., company did not disclose the chains for which it manufactures the store-brand acetaminophen. A list of batch numbers and store brands affected by the recall was forthcoming, the FDA said. 

Wal-Mart Stores Inc., CVS Corp., Walgreen Co. and Costco Wholesale Corp. are among the companies Perrigo supplies with health care products, according to company Securities and Exchange Commission filings. 

Perrigo said the pills contained raw material purchased from a third-party supplier and affected 383 batches. 

Acetaminophen is best known as the drug in products sold under the Tylenol brand, but is widely available in generic versions. The recall does not affect Tylenol. The recall should not cause a shortage of acetaminophen, the FDA said. 

The voluntary recall is considered a Class II recall since it covers products that might cause a temporary health problem or pose only a slight threat of a serious nature, according to the FDA. 

Consumers with questions can call Perrigo toll free at (877) 546-0454. 

Consumers who swallow any of the contaminated pills could suffer minor stomach discomfort or possible cuts to the mouth and throat, the FDA said, adding that the risk of serious injury was remote. Anyone who suspects they have been injured should contact their doctor, the agency said. 

The FDA said Perrigo began investigating after realizing the equipment it uses to make pills was wearing down prematurely.