Friday, March 29, 2024

Goodies to Go ™
September 8, 2003– Newsletter #249


Goodies to Go ™
September 8, 2003–Newsletter #249

This newsletter is part of the internet.com network.
http://www.internet.com
 


Featured this week:

* Goodies Thoughts – Solving The Dynamic
Dilemma

* Q & A Goodies
* News Goodies
* Goodies Peer Reviews

* Feedback Goodies  
* And Remember This

 


 

Goodies Announcement

Just in case you missed
it before, the new Beyond HTML Goodies book is now available!

 

Go beyond the basics
and learn how the pros add and use dynamic HTML features and advanced
JavaScript techniques. Beyond HTML Goodies demonstrates dozens of new and
different features readers can add to their existing Web pages using HTML and
JavaScript. The book starts with simple text and image tips, such as adding a
clock to a Web page or causing text to appear when the mouse moves over an
image. It gradually builds to more complex tricks, including manipulating forms
or working with cookies behind the scenes. Throughout the book, readers enjoy
Joe’s snappy style and “to the point” discussion of each “goody” in the book.

 

http://books.internet.com/books/0789727803

 

 


Goodies Thoughts – Solving The Dynamic Dilemma


In Goodies To Go #247 (See
http://www.htmlgoodies.com/letters/247.html
) I mentioned that DynDNS.org and
TZO.com both provide Dynamic DNS services. I want to clarify something which I
thing is confusing, maybe even a little misleading. The article concerned the
problems associated with the dynamic IP address usually provided by broadband
ISPs. The difficulties start when you want to have a website, an FTP or Game
Server or some other server system on your own computer that people on the
Internet can get to. When your IP address changes they have to wait for
notification from you before they can get to it again. Additionally, many of
these ISPs block port 80, the Web port, to prevent people from running web
servers behind their connections. Dynamic DNS provides a solution and "Port
Forwarding" rounds it out. For many, these solutions solve the problems, but I
want to clarify the limitations of the services I mentioned and suggest an
alternative. From here on I am going to assume that you have read the original
piece so that I don’t repeat myself.

First let me say that Broadband AOL works a little differently, and it may be
that none of these solutions will work for its subscribers.

The free service offered by dyndns.org may well be sufficient for your needs. If
this is the case, that’s great — you can’t beat the price! Let’s take a closer
look, however, at the premium services they each offer. If you’re not familiar
with DNS, check out the HTML Goodies home page (see
http://www.htmlgoodies.com) — there’s
a new article going up about DNS basics.

Dyndns.org offers "custom DNS" (sm of dyndns.org) which "allows you to control
an entire domain through an intuitive web-based interface" as they say on their
home page. Within this domain you can create any number of host records that are
updated dynamically. You can also (manually) create a variety of other DNS
records within your domain using either their "basic" (easy) or "advanced" (know
what you want) interfaces. They also offer an "account upgrade" to the free
service, which you can find by navigating through one of their product pages to
their pricing page. This allows for the addition of twenty hostnames to the five
already included in the free service. At less than 50 cents per year each, this
is not a bad deal. If I wanted a few hostnames within my own domain name to be
dynamic, I would set up an account with dynamic hostnames under their domain
names, and alias my hostnames to them (assuming that I already have DNS services
for my domain somewhere.) For more than twenty-five hosts, or for the
convenience of keeping all the DNS for my domain in the same place, I would use
the custom DNS offering. Thus the dyndns.org offering is quite attractive.

Tzolkin Corporation, a.k.a. tzo.com, offers their basic service for $24.95 and
their premium service for $59.95. Each of these only allows for the dynamic
direction of a single hostname within the domain. Yes, that also applies to the
$59.95 offering. That is their charge for redirecting one name to one IP address
using your domain name! I have to say that I was most surprised when their
technical support person told me this, and had to have them repeat it several
times. Maybe you can think of a reason to pay $59.95 rather than fifty cents or
less.

If you are looking for somebody to host your DNS for you, dozens of the DNS
registrars out there will be happy to provide you that service, though those
that I have looked at also want you to have the domain registered through their
or transferred to their service. If you transfer, you also get another year
added to your service so that it doesn’t hurt too much! I have mentioned
Directnic.com before — they charge $5/year for DNS hosting and provide an easy
to use interface.

One more thing…. I was speaking with Chris at Dyndns.org, who was telling me
that they have had problems with the dynamic DNS clients built in to the Linksys
and Netgear routers. I am going to experiment with them a little and will give
you a quick update in next week’s newsletter. You can still use one of the other
client programs available through their site (at no cost) which would run on
your PC behind the router. I will probably try out one or two of them also and
I’ll let you know how it goes.
 


Thanks for Reading!
 



– Vince Barnes


 

Top

Q & A Goodies


Questions are taken from submissions to our Community Mentors. You can ask a Mentor a question by going to

http://www.htmlgoodies.com/mentors
.



Q. I’ve been having trouble getting 2 image flips to work on the same
page. I took the script straight from htmlgoodies. I got one of the images to
work by itself but when I set up the other one the first one stopped working and
when I rolled over it the second image would rollover instead.

A. Here is a script example that works with multiple image flips:
<html>
<head>
<title>Image Flip</title>
<script language="JavaScript">
function flip(img,imgn)
{
document.images[imgn].src=img
}
</script>
</head>
<body>
<a href="somepage.html" onmouseover="flip(‘1.gif’,’pica’)"onmouseout="flip(‘0.gif’,’pica’)"><img
src="0.gif" name="pica" border="0"></a><br>
<a href="somepage.html" onmouseover="flip(‘3.gif’,’picb’)"onmouseout="flip(‘2.gif’,’picb’)"><img
src="2.gif" name="picb" border="0"></a>
</body></html>

(Ryan, who sent in this question, shared with us his work and so I have included
it in its entirety — entirely untested! Jim’s answer follows. This is quite an
interesting piece of work and I’m sure that many of you will be able to make
great things out of it. — Thanks, Ryan! — Ed.)

Q. I’ve created a drop-down menu on a geocities site using JavaScript.

The code for the menu is within a frame that we would like to keep in place. I
was wondering if there is anyway to allow the drop-down to
transcend frames because as it exists now the drop-downs cannot be fully
displayed. Thanks in advance for your help and time. The code
for the drop-down is as follows:
<center><script language="JavaScript" type="text/JavaScript"> var
isDHTML = 0; var isID = 0;
var isAll = 0;
var isLayers = 0;
<!–//
function leapto(form) {
var planlist=form.destination.selectedIndex;
parent.main.location.href=(form.destination.options[planlist].value);
planlist = 0;
// reset pulldown menu;
}
//–>
if (document.getElementById) {isID = 1; isDHTML = 1;}
else {
if (document.all) {isAll = 1; isDHTML = 1;}
else {
browserVersion = parseInt(navigator.appVersion);
if ((navigator.appName.indexOf(‘Netscape’) != -1) && (browserVersion
==
4)) {isLayers = 1; isDHTML = 1;}
}}
function findDOM(objectID,withStyle) {
if (withStyle == 1) {
if (isID) { return (document.getElementById(objectID).style) ; }
else {
if (isAll) { return (document.all[objectID].style); }
else {
if (isLayers) { return (document.layers[objectID]); }
};}
}
else {
if (isID) { return (document.getElementById(objectID)) ; }
else {
if (isAll) { return (document.all[objectID]); }
else {
if (isLayers) { return (document.layers[objectID]); }
};}
}
}
var menuTop = 45;
var menuLeft = 400;
var domSMenu = null;
var oldDomSMenu = null;
var t = 0;
var lDelay = 3;
var lCount = 0;
var pause = 400;
function popMenu(menuNum){
if (isDHTML) {
//// Sets the previous menus visibility to hidden
t = 2;
if (oldDomSMenu) {
oldDomSMenu.visibility = ‘hidden’;
oldDomSMenu.zIndex = ‘0’;
t = 2;
lCount = 0;
}
///// Defines the DOMs of the menu objects
var idMenu = ‘menuHead’;
var domMenu = findDOM(idMenu,0);
var idMenuOpt = ‘menuHead’ + menuNum;
var domMenuOpt = findDOM(idMenuOpt,0);
var idSMenu = ‘menu’ + menuNum;
var domSMenu = findDOM(idSMenu,1);
///// Defines the positions of the sub-menus
if (isID || isAll) {
var menuLeft = (domMenu.offsetLeft) + (domMenuOpt.offsetLeft) – 6;
var menuTop = (domMenu.offsetTop) + (domMenu.offsetHeight) – 1;
}
if (isLayers) {
var menuLeft = document.layers[idMenu].layers[idMenuOpt].pageX – 5;
var menuTop = domMenu.pageY + domMenu.clip.height – 5;
}
///// Positions and shows the menu
if (oldDomSMenu != domSMenu) {
domSMenu.left = menuLeft;
domSMenu.top = menuTop;
domSMenu.visibility = ‘visible’;
domSMenu.zIndex = ‘100’;
oldDomSMenu = domSMenu;
}
///// Resets oldDom if it is the same as the current DOM
else { oldDomSMenu = null; }
}
////// Returns a ‘null’ value for non-DHTML Browsers
else { return null; }
}
function delayHide() {
///// Checks to see if there is a menu showing and whether ///// the
global variable ‘t’ has been set to 0
if ((oldDomSMenu) && (t == 0)) {
///// Hides the old menu, resets menu conditions,
///// and stops the function running
oldDomSMenu.visibility = ‘hidden’;
oldDomSMenu.zIndex = ‘0’;
oldDomSMenu = null;
lCount = 0;
return false;
}
///// Interupts the function if another menu is opened
if (t == 2) { lCount = 0; return false; }
///// Repeats the function adding 1 to lCount each time until /////
lCount is equal to lDelay and then sets ‘t’ to 0 so that ///// the
menu will hide when it runs again
if (t == 1) {
lCount = lCount + 1;
if (lDelay <= lCount) { t = 0; }
if (lDelay >= lCount) { setTimeout(‘delayHide(‘ + t +
‘)’,pause); }
}
}
</script>
<br>
<div id="menuHead" class="menuStyleTop" style="position: relative;">
<span class="spacer"> | </span>
<a id="menuHead1" class="menuLink" href="" onMouseOut="t = 1;
delayHide(); return true" onMouseOver="popMenu(1); return
true">News</a> <span class="spacer"> | </span>
<a id="menuHead2" class="menuLink" href="" onMouseOut="t = 1;
delayHide(); return true" onMouseOver="popMenu(2); return true">Who We
Are</a> <span class="spacer"> | </span>
<a id="menuHead3" class="menuLink" href="" onMouseOut="t = 1;
delayHide(); return true" onMouseOver="popMenu(3); return
true">Media</a> <span class="spacer"> | </span>
<a id="menuHead4" class="menuLink" href="" onMouseOut="t = 1;
delayHide(); return true" onMouseOver="popMenu(4); return
true">Events</a> <span class="spacer"> | </span>
<a id="menuHead5" class="menuLink" href="" onMouseOut="t = 1;
delayHide(); return true" onMouseOver="popMenu(5); return
true">Links</a> <span class="spacer"> | </span>
<a id="menuHead6" class="menuLink" href="" onMouseOut="t = 1;
delayHide(); return true" onMouseOver="popMenu(6); return
true">Email</a> <span class="spacer"> | </span>
<a id="menuHead7" class="menuLink" href="" onMouseOut="t = 1;
delayHide(); return true" onMouseOver="popMenu(7); return
true">Guestbook</a> <span class="spacer"> | </span>
</div>
<div id="menu1" class="menuStyle">
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="news.html" target="unter">Current</a> <a class="menuLink"
onMouseOut="t = 1; delayHide(); return true" onMouseOver="t = 2;
return true" onClick="t = 0; delayHide();"
href="mayjunearchives.html" target="unter">May-June Archives</a> <a
class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="maraprarchives.html" target="unter">March-April Archives</a>
</div> <div id="menu2" class="menuStyle">
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="about.html" target="unter">Bio</a>
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="about.html" target="unter">Gear</a>
</div>
<div id="menu3" class="menuStyle">
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="sightsandsounds.html" target="unter">Pictures</a>
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="sightsandsounds.html" target="unter">MP3’s</a>
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="sightsandsounds.html" target="unter">Etc.</a>
</div>
<div id="menu4" class="menuStyle">
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="events.html" target="unter">Upcoming</a>
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="events.html" target="unter">Past</a>
</div>
<div id="menu5" class="menuStyle">
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="http://www.geocities.com/kevin_ikari15/index.htm" target=_new>Street
Team</a>
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="links.html" target="unter">Other Bands</a>
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="links.html" target="unter">Sweet Labels</a>
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="links.html" target="unter">Venues</a>
</div>
<div id="menu6" class="menuStyle">
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="mailto:drumboy011@yahoo.com">Andrew</a>
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="mailto:remmiws42@hotmail.com">Eric</a>
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="mailto:leonheart08@hotmail.com">Evan</a>
</div>
<div id="menu7" class="menuStyle">
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="http://geocities.yahoo.com/gb/sign?member=nopointsscored"
target=_new>Sign</a>
<a class="menuLink" onMouseOut="t = 1; delayHide(); return true"
onMouseOver="t = 2; return true" onClick="t = 0; delayHide();"
href="http://geocities.yahoo.com/gb/view?member=nopointsscored"
target=_new>View</a>
</div>
<style>
body { margin: 0px; }
#menuHead {
background-color: #000000;
top: 5px;
left: 0px;
z-index: 50;
margin-top: 5px;
margin-bottom: 5px;
font-family: Verdana;
font-size: 8pxpt;
font-weight: normal;
color: #FFFFFF;
width: 100%;
height: 22px;
border-top-style: solid;
border-bottom-style: solid;
border-width: 1px;
border-color: #000000;
padding-left: 5px;
}
#menu1,#menu2,#menu3,#menu4,#menu5,#menu6,#menu7
{
position: absolute;
z-index: 100;
visibility: hidden;
width: 150px;
}
.menuStyle {
font-family: Verdana;
font-size: 8pxpt;
font-weight: bold;
border: 1px solid #000000;
color: #FFFFFF;
background-color: #000000;
width:160px;
text-align: left;
}
.menuStyle a {
font-family: Verdana;
font-size: 8pxpt;
font-weight: normal;
color: #FFFFFF;
background-color: #000000;
display: block;
margin: 0;
padding: 3px;
padding-left: 8px;
}
.menuStyle a:link { color: #FFFFFF; background-color: transparent;
width: 150px; }
.menuStyle a:visited { color: #FFFFFF; background-color: transparent;
width: 150px; }
.menuStyle a:hover { color: #990033; background-color: #FFFFFF; width:
150px;}
#menuHead a:link { color: #FFFFFF; background-color: transparent; }
#menuHead a:visited { color: #FFFFFF; background-color: transparent; }
#menuHead a:hover { color: #990033; background-color: transparent; }
.spacer
{
color: #000000;
background: transparent;
padding-left: 2px;
padding-right: 2px;
}
</style>

A. If I understand you correctly you want to have the dropdown display across
frames. That cannot happen because the code for the dropdown is actually in a
separate window so to speak and will reside in that window within the main
window which holds the separate frames. You will have to make the frame that
holds the menu larger to display the whole menu or go without frames and use a
server side language such as Perl or PHP to include the code in each document.

Q. I am starting to design web-pages and wanted to know what would I need
to start a small e-commerce site. I want it to be database driven.

A. First you need to know if your server supports database driven sites
and if so, what type. If your host uses a UNIX server then it should support PHP
and PERL. If your server is a Windows server then it supports ASP. Once you
figure which one, you can then look for a shopping cart that will work on your
particular server. Your host may even offer a cart for you to use. Ask them
first. The next is to start testing cart available on the internet. Do a search
on Google and then test drive them. Make a list of what you might want in a cart
and see which ones offer what you need.
If you do not want host your own shopping cart, you can look into something like
Paypal (http://www.paypal.com). HTMLGoodies
has a tutorial about Paypal here:

http://www.htmlgoodies.com/beyond/paypal.html

They do all of the shopping cart work for you. You add some code to your site to
use their cart. They do get a percentage of the sale but I am not sure how much.

 

 

 

 

Top

News Goodies


Microsoft Debuts Office Online
[September 8, 2003] Replacement for Office Tools on the Web
site allows Office 2003 users to access user resources directly
from their applications.

Click
here to read the article


 

RIAA Files 261 Lawsuits Against Alleged Music Pirates
[September 8, 2003] Music trade group promises ‘subsequent waves of
litigation’ for those who ignore amnesty offer.

Click here to read the article

 

 

Apple Polishes Up iMac, iPod
[September 8, 2003] The computer maker opts for faster G4 chips in its
‘lamp-shaped’ desktop models as well as beefing up its music player to be
able to hold up to 10,000 songs.

Click here to read the article

 

 



Judge Says AdWare is Legal
[September 8, 2003] In a blow to Web site operators’ claims against
adware makers, a federal judge says WhenU’s pop-up ad-delivery method is
perfectly legal.

Click here to read the article

 



 

Broadcom and Philips Reduce Power & Size
[September 8, 2003] The two chip makers have each announced their own low
power 802.11b chipsets for use in handheld phones and PDAs, with Broadcom
offering one of the WLAN world’s Holy Grails: A completely single-chip
solution.

Click here to read the article

 

 

Researcher: IE Cumulative Patch Inadequate
[September 8, 2003] Secunia is warning that a variant of the ‘Object Data’
vulnerability is being actively exploited.

Click here to read the article

 

 

Intel Fawns Over Itanium ‘Deerfield’
[September 8, 2003] The chipmaker fills vendor’s requests to make processors
that could fit in with a customer’s two and four-way system low-power dual
processor plans.

Click here to read the article

 

 

Wireless Firm Files Follow-On, Eyes Acquisitions
[September 8, 2003] Wall Street may not be ready for new
telecom IPOs, but LCC Int’l believes there’s interest in
secondary offerings for proven companies.

Click here to read the article

 

Spoke Builds on Social Networking Patent Portfolio
[September 8, 2003] Rather than re-invent the wheel, the new company is
bolstering its sales productivity software with new technology that protects
user privacy.

Click
here to read the article

 

 



Microsoft Settles Anti-Trust Charges with Be
[September 8, 2003] Settlement reached, Microsoft agrees to pay Be more
than $23 million.

Click here to read the article

 

 

 

 

 

 

Top


Goodies Peer Reviews


 

Every week a site selected each week for review. Each week,
reviews of the previous week’s selected site are chosen for
publication on the HTML Goodies website.

 

The current week’s selected site is published in Goodies To
Go and in the Peer Reviews section of the website. 
Current contact email addresses for submitting your site and
for submitting reviews are published in Goodies To Go.

If you would like to have your site reviewed, sign up for
the Goodies To Go newsletter in the Navigation Bar on the
left side of this page. 

For full details about this program, see

http://www.htmlgoodies.com/peerreviews

 

 

 

Top

Feedback
Goodies


Did you ever wish your newsletter was an easy two way communications medium?
Ploof! It now is!
If you would like to comment on the newsletter or expand/improve on something
you have seen in here, you can now send your input to:

mailto:nlfeedback@htmlgoodies.com

We already receive a lot of email every day. This address will help us sort out
those relating specifically to this newsletter from all the rest. When you send
email to this address it may wind up being included in this section of the
newsletter, to be shared with your fellow readers.
Please don’t send your questions to this address.
They should be sent to our mentors: see
http://www.htmlgoodies.com/mentors/

From all the feedback it is very clear that almost everybody
has suffered from, as is pretty fed up with spam. Many
thanks to all of you who wrote in with suggestions for
techniques for dealing with it. Ideas ranged from software
offerings to methods for garnering internetional (that’s a
typo, but I kinda like it!) cooperation for legislative
controls. It is certainly a problem for every Internet user,
no matter where on the planet you are.

The Internet has grown up as a result of the cooperative
efforts of those who use it, however, and so I personally am
most in favor of solutions that are implemented by those
same users. This is why I really like these anti-spam
software solutions. The more these get implemented, the less
effective spam will become. The less effective it is, the
less incentive there will be to use it. That’s what I like
— a solution that we can bring about ourselves without
involving lawyers all over the place!

Thanks again for all your feedback!

 


Windows Tech Goodie of the Week:

Populating the TreeView Control from a Database

Populating the TreeView Web Control from a database allows
menu and input trees to change on the fly. Don Schlichting
provides an introduction to the TreeView and then provides
detailed steps for populating the tree from a database using
ADO.NET


http://www.15seconds.com/issue/030827.htm


** and **
 


A Script to Teach You About Using Forms with ASP

Here’s a script that was designed for no purpose other then
to teach new ASP users about using forms. If you’re new to
ASP or even if you just need a refresher course on form
handling, you’ve got to take a look at this script.


http://www.asp101.com/resources/visitors/index.asp#formtest

 


 

 

Top
And Remember This . . .

On this day in…

1664 New Amsterdam Surrenders


The Dutch East India Company had created the colony of New
Netherland in 1624. To make it legal, the land on which it
stood was purchased from the indigenous peoples for some
trinkets. In 1664 the Dutch Governor of the Colony, Peter
Styvesant, was hoping to resist the English who came to take
over. Because he was so unpopular, however, none of his
fellow colonists came to his aid and he was forced to
surrender. The English squadron of 300 soldiers, led by
Colonel Richard Nicolls, had been organized by the Duke of
York, after whom the colony was renamed as New York. When
the Manhattans realized what the Dutch had meant by
"property" that they had exchanged for about $24 in trinkets
they attempted to retake their land. The ensuing war, which
started in 1641, cost a thousand lives. The Netherlands
briefly regained the colony in 1673 and lost it again in
1674. In 1686 the city received a Royal Charter – the first
in the colonies. After the American Revolution it became the
first capitol of the United States.

Today was also the day that: in 1380 the Russians
defeated the Tatars at Kulikovo; 1858 Abraham Lincoln
explained who you can fool and how much of the time you can
fool them; 1900 6,000 people died when a hurricane
destroyed Galveston Texas; 1943 Italy surrendered to
the allies; 1944 the first German V-2 rocket – the
"Flying Bomb" – lands in England; 1966 "Star Trek"
premiers on NBC-TV; 1974 President Gerald Ford
pardoned former president Richard Nixon of all federal
crimes;

Born today were: in 1157, Richard I of England
(Richard the Lionheart); 1841 Czech composer Antonin
Dvorjak; 1921 Welsh actor/comedian Harry Secombe;
1922
comedian Sid Ceasar; 1925 actor comedian
Peter Sellers; 1932 country singer Patsy Cline;
1938
US Senator Samm Nunn; 1971 playmate Christy
Thom (?!)

 




Thanks for reading Goodies to Go!


 



Archive Home Page.


Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Popular Articles

Featured