<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2471026321807147160</id><updated>2012-01-21T13:01:09.801-08:00</updated><category term='Mailing'/><category term='SQL'/><category term='Study Technology'/><category term='Postal'/><category term='Matching Algorithms'/><category term='Hibernate'/><category term='UML'/><category term='Data Governance'/><category term='NCOA'/><category term='Jlist'/><category term='Java'/><category term='Blogger'/><category term='Swing'/><category term='Psychiatry Kills'/><category term='ISAL'/><category term='Artificial Intelligence'/><category term='Maps'/><category term='General'/><category term='Dianetics'/><category term='plugin'/><category term='Scientology'/><category term='Data Stewards'/><category term='Record Linkage'/><category term='CDI'/><category term='eclipse'/><category term='Awk'/><category term='Downloads'/><category term='velocity'/><category term='L. Ron Hubbard'/><category term='Jtable'/><title type='text'>Record Linkage</title><subtitle type='html'>A developer's guide to Record Linkage, List Hygiene, Database Marketing and Customer Data Integration.  Tips and Tricks from Java, SQL, Awk and other programming languages that are useful in achieving an accurate customer database.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mycodeblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default?start-index=101&amp;max-results=100'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>105</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-7330081825432349852</id><published>2012-01-21T12:59:00.000-08:00</published><updated>2012-01-21T13:01:09.818-08:00</updated><title type='text'>The big switch</title><content type='html'>Well I am in the process of switching over to Mac.  I know I know, but after the iPod, the iPad, and then seeing the new Mac Book Air, I couldn't resist.  So I've started coding using the Xcode environment and getting used to the differences.  Lets see how far this goes...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-7330081825432349852?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7330081825432349852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7330081825432349852'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2012/01/big-switch.html' title='The big switch'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6628414352513715112</id><published>2008-03-16T12:03:00.000-07:00</published><updated>2008-03-16T12:19:43.594-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scientology'/><title type='text'>Scientology Video Channel</title><content type='html'>Check out the new Scientology Video Channel at www.scientology.org. This new site has 82 videos, nearly three hours of audiovisual presentations on Scientology. It answers any questions one might have on What is Scientology, What are the beliefs of Scientology and what it is doing around the world.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.scientology.net"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://photos-d.ak.facebook.com/photos-ak-sf2p/v182/123/93/682574383/n682574383_740247_1001.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6628414352513715112?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.scientology.org/' title='Scientology Video Channel'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6628414352513715112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6628414352513715112'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2008/03/scientology-video-channel.html' title='Scientology Video Channel'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-5190116340073884048</id><published>2008-01-06T18:03:00.000-08:00</published><updated>2008-01-06T18:03:42.405-08:00</updated><title type='text'>ISAL Rates and Country Listing</title><content type='html'>I always have a hard time finding this when searching the USPS website.  So here is a link to the ISAL rates and country listing: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://pe.usps.com/text/imm/immc2_040.htm#ep2056404"&gt;293 International Surface Air Lift (ISAL) Service&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-5190116340073884048?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://pe.usps.com/text/imm/immc2_040.htm#ep2056404' title='ISAL Rates and Country Listing'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/5190116340073884048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/5190116340073884048'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2008/01/isal-rates-and-country-listing.html' title='ISAL Rates and Country Listing'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6490295052822232917</id><published>2007-12-23T22:09:00.000-08:00</published><updated>2007-12-23T22:35:31.425-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Record Linkage'/><title type='text'>Record Linkage Resources</title><content type='html'>Download whitepaper on &lt;a href="http://www.sigmod.org/disc/disc01/out/websites/deb_december/monge.pdf"&gt;"Approximate Duplicate Detection"&lt;/a&gt; which opens with the following: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Detecting database records that are approximate duplicates, but not exact duplicates, is an important task. Databases may contain duplicate records concerning the same real-world entity because of data entry errors, unstandardized  abbreviations, or differences in the detailed schemas of records from multiple&lt;br /&gt;databases – such as what happens in data warehousing where records from multiple data sources are integrated into a single source of information – among other reasons. In this paper we review a system to detect approximate duplicate records in a database and provide properties that a pair-wise record matching algorithm must have in order to have a successful duplicate detection system.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cedeplar.ufmg.br/pesquisas/td/TD%20198.pdf"&gt;Download paper&lt;/a&gt; on probabilistic record linkage and an automated procedure to minimize the undecided-matched pair problem.  Here is an introduction to this paper: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Probabilistic record linkage allows the assembling of information from different data  sources. In this article, we present a procedure in case a one-to-one relationship between records in different files is expected but is not found only by applying the probabilistic record linkage methodology. Our data were births and infant deaths from the 1998-birth cohort whose mother’s place of residence was the City of São Paulo at the time of birth. Our assumption was that pairs for which a one-to-one relationship was obtained, and a best-link was found with the highest combined weight would be considered as uniquevocally matched pairs or gold-standard and should then provide information in order to decide about pairs in which such a relationship could not be established. For example, we observed that the for the unequivocally matched pairs a clear and expected relationship between differences in dates of death and birth registration could be assessed. As a result, such a relationship was used to help solving the remaining pairs for which a one-to-one relationship could not be found. Indeed, we reduced the number of non-uniquely matched records and even though we could not establish a one-to-one relationship for every single death we reduced the number of uncertain. We suggest that future research using record linkage should use combined strategies from results from first record linkage runs before a full clerical review (the standard procedure under uncertainty) in order to most efficiently (and less costly), retrieve record matches.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.soa.org/news-and-publications/publications/magazines/the-actuary-magazine/february-2007/link2007feb.aspx"&gt;Applications of Record Linkage Techniques&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;Here is an excerpt: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Record linkage is simply the bringing together of information from two or more records that is believed to relate to the same entity, e.g., the same individual, the same family or the same business. This may entail the linking of records within a single computer file to identify duplicate records. Alternatively, record linkage may entail the linking of records across two or more files. The challenge lies in bringing together the records for the same individual entities. Such a linkage is known as an exact match. The task is easiest when 1) the files have nearly unique identification numbers (e.g., social security numbers), 2) information is recorded in standardized formats and 3) the files are small. In the absence of nearly unique identifiers, names, addresses, dates-of-birth or other indirect identifiers are frequently used in the matching process.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6490295052822232917?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6490295052822232917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6490295052822232917'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/12/record-linkage-resources.html' title='Record Linkage Resources'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-7022731302144037479</id><published>2007-12-23T21:41:00.000-08:00</published><updated>2007-12-23T22:05:43.567-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Record Linkage'/><title type='text'>record linkage description</title><content type='html'>Here is a good description of "Record Linkage" from the &lt;a href="http://www.umanitoba.ca/centres/mchp/concept/dict/record_linkage.html"&gt;University of Manitoba website:&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Record linkage is simply the integration of information from two independent sources. Records from the two sources that are believed to relate to the same individual are matched in such a way that they may then be treated as a single record for that individual. Records brought together in this way are said to be linked. The principles of record linkage may be applied to any field in which it is necessary to bring together information recorded about persons in different places or at different times.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-7022731302144037479?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7022731302144037479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7022731302144037479'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/12/record-linkage-description.html' title='record linkage description'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-8163712012263106494</id><published>2007-12-20T11:42:00.000-08:00</published><updated>2007-12-20T17:02:20.262-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='L. Ron Hubbard'/><category scheme='http://www.blogger.com/atom/ns#' term='Dianetics'/><category scheme='http://www.blogger.com/atom/ns#' term='Scientology'/><title type='text'>What is the Perfect Computer?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://jamie.fsm.org/items/dmsmh_oak.html"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://bpi.goldenageofknowledge.net/images/items/grouped/flier-small/dmsmh_oak.jpg" alt="" border="0" /&gt;&lt;/a&gt;As a computer programmer, I was intrigued by the opening chapters of Dianetics, the Modern Science of Mental Health, by L. Ron Hubbard claiming that man how the "Analytical Mind" is in fact a perfect computer.  It makes calculations based on the data it has.  It is ALWAYS RIGHT.&lt;br /&gt;&lt;br /&gt;But like a computer program with unfortunate bugs, the calculation may come out with a wrong conclusion, but based on data it has, the program is still "right".&lt;br /&gt;&lt;br /&gt;There are two parts to one's mind.  The Analytical and the Reactive Mind.  Dianetics says that the Analytical Mind IS the Perfect Computer.&lt;br /&gt;&lt;blockquote&gt;"What would you want in a computing machine? The action of the analytical mind—or analyzer—is everything anyone could want from the best computer available. It can and does do all the tricks of a computer. And over and above that, it directs the building of computers. And it is as thoroughly right as any computer ever was. The analytical mind is not just a &lt;i&gt;good&lt;/i&gt; computer, it is a &lt;i&gt;perfect&lt;/i&gt; computer. It never makes a mistake. It cannot err in any way so long as a human being is reasonably intact (unless something has carried away a piece of his mental equipment).&lt;p&gt;      "The analytical mind is incapable of error, and it is so certain that it is incapable of error that it works out everything on the basis that it cannot make an error. If a person says, “I cannot add,” he either means that he has never been taught to add or that he has an aberration about adding. It does not mean that there is anything wrong with the analytical mind." &lt;br /&gt;- &lt;a href="http://jamie.fsm.org/items/dmsmh_oak.html"&gt;L. Ron Hubbard, Dianetics, The Modern Science of Mental Health&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;    If this were true, how is it possible that people make mistakes, wrong decisions and don't live "perfect" lives?  Or more to the point, how does one prevent writing buggy computer software?  The answer lies in &lt;a href="http://jamie.fsm.org/store/cart/addtocart.html?id=dmsmh-2007.en.hc"&gt;Dianetics&lt;/a&gt; and specifically in the chapter on the Reactive Mind.  Dianetics should be required reading for any software developer.  It would not only result in less buggy software being developed, it would make for a world of less stressed out programmers!&lt;br /&gt;&lt;/p&gt;&lt;a href="http://jamie.fsm.org/store/cart/addtocart.html?id=dmsmh-2007.en.hc"&gt;Anyone interested in Dianetics can get a copy of this book here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-8163712012263106494?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8163712012263106494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8163712012263106494'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/12/what-is-perfect-computer.html' title='What is the Perfect Computer?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-8748412683487475594</id><published>2007-10-30T17:18:00.000-07:00</published><updated>2007-10-30T17:30:34.335-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Format your Code for Blogger</title><content type='html'>Finally, I found a solution of how to easily format my Source Code examples for Blogger.  I've seen many examples of how other blog services handle this, such as Wordpress, but I don't use Wordpress...&lt;br /&gt;&lt;br /&gt;Here is how to easily do this, until Blogger comes up with an easier way:&lt;br /&gt;&lt;br /&gt;Copy your source code example and paste it into this page: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://formatmysourcecode.blogspot.com/"&gt;Source Code Formatter for Blogger&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on the "Format Code" button and copy the results. &lt;br /&gt;&lt;br /&gt;Switch to "Edit Html" view in your Blogger Edit Post page and paste in the formatted code example.  &lt;br /&gt;&lt;br /&gt;Here is what a sample PL/SQL example would looks like: &lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;BEGIN&lt;br /&gt;   FOR cur IN (select id from test)&lt;br /&gt;   LOOP&lt;br /&gt;      UPDATE table SET column = "DONE" WHERE id = cur.id where;&lt;br /&gt;      COMMIT;&lt;br /&gt;   END LOOP;&lt;br /&gt;END:&lt;br /&gt;/&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Thanks to Greg Houston for this simple solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-8748412683487475594?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8748412683487475594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8748412683487475594'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/10/format-your-code-for-blogger.html' title='Format your Code for Blogger'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2496160386372967918</id><published>2007-10-26T10:44:00.000-07:00</published><updated>2007-10-29T21:26:13.369-07:00</updated><title type='text'>How to Use JList - for Dummies</title><content type='html'>I've built a few Java programs and am still not proficient with my tools, so I am laying out a series of simple instructions for learning and using the basic Java Swing tools.  This will reference the websites where I go for direction as well as examples that I've found useful.  &lt;br /&gt;&lt;br /&gt;The first place I always start is the Java tutorials on using Swing:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://webdia.cem.itesm.mx:8005/web/java/tutorial/uiswing/components/list.html"&gt;How to Use Lists&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I ran into a situation where I had to remove multiple elements from a JList.  Here is the exact trick on how to do that.  It worked perfectly: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://stoken-tips-and-tricks.blogspot.com/2007/06/howto-remove-multiple-items-from-java.html"&gt;Remove Multiple Items from a List&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2496160386372967918?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2496160386372967918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2496160386372967918'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/10/how-to-use-jlist-for-dummies.html' title='How to Use JList - for Dummies'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-996712459057117978</id><published>2007-10-25T12:12:00.000-07:00</published><updated>2007-10-25T12:28:14.067-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mailing'/><category scheme='http://www.blogger.com/atom/ns#' term='NCOA'/><title type='text'>Percentage of Americans who do not fill out a Change of Address with USPS</title><content type='html'>Here is an excerpt giving an estimate of how many Americans move each year that do not fill out a change of address request with the post office.  These address changes would not be returned with NCOA and would require other means of address recovery such as a "Deluxe" NCOA service that utilizes other address change databases such as magazine subscription lists, utility company databases and even the "Pizza Hut" database they maintain of deliveries they've made and address changes they've maintained.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;a href="http://www2.kbm1.com/leadership.aspx?pgID=900&amp;newsID=13&amp;exCompID=153"&gt;One of the fallacies surrounding consumer list compilation is that the U. S. Postal Service’s National Change of Address file is the answer to this problem. The fact is, however, that NCOA, while helpful, falls far short of the accuracy that most of us would prefer. An estimated 30 percent of the people who move in the United States never file a change-of-address form with the postal service. And even when they do, it is sometimes weeks or even months before that information is made available to list compilers or the direct marketers who use the lists.&lt;br /&gt;&lt;br /&gt;Competent list managers have created routines that address this problem. For example, if there is a change of address on a current, reliable source (such as new billing addresses for a charge account or new utility hookups) the new address might be placed in the consumer record. This type of effort can significantly improve address quality on a mailing list – but it cannot ever be perfect.&lt;br /&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-996712459057117978?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/996712459057117978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/996712459057117978'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/10/percentage-of-americans-who-do-not-fill.html' title='Percentage of Americans who do not fill out a Change of Address with USPS'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6498597156398789462</id><published>2007-10-24T16:37:00.000-07:00</published><updated>2007-10-24T17:13:56.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Jtable'/><category scheme='http://www.blogger.com/atom/ns#' term='Jlist'/><title type='text'>Jlist or Jtable - I need a multi-column display</title><content type='html'>I'm gradually coming to grips with programming user interfaces in Java.  Read a bit on the MVC (Model View Control)  concept and while I see its value, it is a bit too steep a gradient at this point.  I am starting off getting the basics of the Swing GUI and have been using Jgoodies with the Jigloo Windows builder.  Even that is a bit steep as I want to know how to build  these from the ground up and using the drag and drop tools resulted in skipping some of the basics that left me hanging, when trying to modify and customize what Jigloo provide.d&lt;br /&gt;&lt;br /&gt;What has helped learn this the fastest has been to work out some simple application that will be useful and then laying out a UML diagram including Use Case for the requirements,  Activity Diagrams and Class Diagrams.  A programmer is lost in the woods without these design tools.   Then I've taken one element at a time, the JDBC database access, pulling up a list and displaying this, etc.&lt;br /&gt;&lt;br /&gt;I am up to a point where I need to display a simple list of entries from a database.  The list should have 3 columns.   I've only been able to get this to work with one column so far.  So what I am looking into is whether it would be better to just use the JTable or figure out a "multi-column" JList. &lt;br /&gt;&lt;br /&gt;Here are some resources to figure this out:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeguru.com/java/Swing/JTable/index.shtml"&gt;Code Guru&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/j2se/1.3/docs/api/javax/swing/JTable.html"&gt;Java Sun&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.dreamincode.net/snippet396.htm"&gt;Dream In Code&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/docs/books/tutorial/uiswing/components/list.html"&gt;Jlist Tutorial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One simple method of doing this would be to select your multi-column data from your data source and return this resultset to a String array.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6498597156398789462?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6498597156398789462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6498597156398789462'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/10/jlist-or-jtable-i-need-multi-column.html' title='Jlist or Jtable - I need a multi-column display'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2045022121812101569</id><published>2007-10-24T16:34:00.000-07:00</published><updated>2007-10-24T16:36:45.615-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Jtable'/><title type='text'>Refresh a JTable from a JDBC connection</title><content type='html'>I have a Swing application that uses a JTable and JScrollPane to display data from an Access database via a JDBC connection. &lt;br /&gt;&lt;br /&gt;Even though I had properly coded the SQL INSERT statement and the data was loading into my database, the JTable was not refreshing with the new record.   I tried the .revalidate() and the .repaint() methods to no avail.&lt;br /&gt;&lt;br /&gt;Finally, after reading Ben Hendry's &lt;a href="http://wbt.sys-con.com/read/36190.htm"&gt;Mastering JTable&lt;/a&gt; I was able to sort this out.&lt;br /&gt;&lt;br /&gt;In my JButton ActionListener I added the TableModel.addRow method and inserted the newly inserted records into the JTable as well.  Followed by a .revalidate() and the data properly displayed without even a flicker in my application.&lt;br /&gt;&lt;br /&gt;Moral of the story - always use Model-View-Control (MVC) architecture and separate your view from your data and controls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2045022121812101569?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2045022121812101569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2045022121812101569'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/10/refresh-jtable-from-jdbc-connection.html' title='Refresh a JTable from a JDBC connection'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2856115367907114205</id><published>2007-08-04T17:59:00.000-07:00</published><updated>2007-08-04T21:27:51.663-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mailing'/><category scheme='http://www.blogger.com/atom/ns#' term='Maps'/><title type='text'>Switzerland Language Assignment by Postal Code</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.rollintl.com/roll/swisslang.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px;" src="http://www.rollintl.com/roll/swisslang.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Map of Switzerland showing language areas.&lt;br /&gt;&lt;br /&gt;Language assignment by postal code:&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Postal code&lt;/th&gt;&lt;th&gt;Area&lt;/th&gt;&lt;th&gt;Language &lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;1000     &lt;/td&gt;&lt;td&gt;Lausanne&lt;/td&gt;&lt;td&gt;French     &lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;2000&lt;/td&gt;&lt;td&gt;Neuchatel&lt;/td&gt;&lt;td&gt;French and German&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;3000&lt;/td&gt;&lt;td&gt;Bern&lt;/td&gt;&lt;td&gt;French and German&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;4000&lt;/td&gt;&lt;td&gt;Basel&lt;/td&gt;&lt;td&gt;German&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;5000&lt;/td&gt;&lt;td&gt;Aarau&lt;/td&gt;&lt;td&gt;German&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;6000&lt;/td&gt;&lt;td&gt;Luzern&lt;/td&gt;&lt;td&gt;German&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;6500..6999&lt;/td&gt;&lt;td&gt;Ticino&lt;/td&gt;&lt;td&gt;Italian&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;7000&lt;/td&gt;&lt;td&gt;Chur&lt;/td&gt;&lt;td&gt;German&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;8000&lt;/td&gt;&lt;td&gt;Zurich&lt;/td&gt;&lt;td&gt;German&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;9000&lt;/td&gt;&lt;td&gt;St. Gallen&lt;/td&gt;&lt;td&gt;German&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2856115367907114205?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2856115367907114205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2856115367907114205'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/08/switzerland-language-assignment-by.html' title='Switzerland Language Assignment by Postal Code'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-3358302053525774410</id><published>2007-07-26T20:23:00.000-07:00</published><updated>2007-08-04T18:00:38.374-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mailing'/><category scheme='http://www.blogger.com/atom/ns#' term='Maps'/><title type='text'>Language Assignment By Postal Code</title><content type='html'>Every so often I run across a need to assign languages by postal code.  Currently I need to assign languages by the Belgium postal codes.  The following table shows the prominent language for each postal code of Belgium:&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;/table&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Capital &lt;/th&gt;&lt;th&gt;Language&lt;/th&gt;&lt;th&gt;Postal codes        &lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Antwerp &lt;/td&gt;&lt;td&gt;DUTCH&lt;/td&gt;&lt;td&gt;2000-2999           &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Brussels&lt;/td&gt;&lt;td&gt;BOTH&lt;/td&gt;&lt;td&gt;1000-1299           &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ghent   &lt;/td&gt;&lt;td&gt;DUTCH&lt;/td&gt;&lt;td&gt;9000-9999           &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Leuven  &lt;/td&gt;&lt;td&gt;DUTCH&lt;/td&gt;&lt;td&gt;1500-1999, 3000-3499&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mons    &lt;/td&gt;&lt;td&gt;FRENCH&lt;/td&gt;&lt;td&gt;6000-6599, 7000-7999&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Liege   &lt;/td&gt;&lt;td&gt;FRENCH&lt;/td&gt;&lt;td&gt;4000-4999           &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hasselt &lt;/td&gt;&lt;td&gt;DUTCH&lt;/td&gt;&lt;td&gt;3500-3999           &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Arlon   &lt;/td&gt;&lt;td&gt;FRENCH&lt;/td&gt;&lt;td&gt;6600-6900           &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Namur   &lt;/td&gt;&lt;td&gt;FRENCH&lt;/td&gt;&lt;td&gt;5000-5999           &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Wavre   &lt;/td&gt;&lt;td&gt;FRENCH&lt;/td&gt;&lt;td&gt;1300-1499           &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Brugge  &lt;/td&gt;&lt;td&gt;DUTCH&lt;/td&gt;&lt;td&gt;8000-8999           &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Here is a map showing the language breakdown of Belgium:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ned.univie.ac.at/publicaties/taalgeschiedenis/en/belgie.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://www.ned.univie.ac.at/publicaties/taalgeschiedenis/en/belgie.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/08/switzerland-language-assignment-by.html"&gt;Here is a language assignment by postal code for Switzerland.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-3358302053525774410?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/3358302053525774410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/3358302053525774410'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/07/language-assignment-by-postal-code.html' title='Language Assignment By Postal Code'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-7189607375965237933</id><published>2007-07-23T23:30:00.000-07:00</published><updated>2007-07-23T23:38:58.764-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mailing'/><title type='text'>Salutations Used in Direct Mail</title><content type='html'>I am working on a direct mail project that requires personalized letters addressed to all manner of people from around the world - from members of Congress to Doctors, lawyers, members of parliament, etc. and these letters are being translated into multiple languages.  I am searching for an already existing table of translated titles of address or salutations.  &lt;br /&gt;&lt;br /&gt;The following pages include fairly complete lists of salutations but I am hunting around for more complete and then translated tables like this.  If anyone out there knows of such a table, please let me know.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://home.kabelfoon.nl/~macdanie/misc/titel-am.htm"&gt;Table with Forms of Address&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ita.doc.gov/ita_sec/Address%20and%20Salutation.htm"&gt;Official Forms of Address&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-7189607375965237933?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7189607375965237933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7189607375965237933'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/07/salutations-used-in-direct-mail.html' title='Salutations Used in Direct Mail'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2912519525296132337</id><published>2007-06-17T00:06:00.001-07:00</published><updated>2007-06-17T14:46:21.435-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Record Linkage'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Matching Algorithms'/><title type='text'>Char_Instr - Another Matching Algorithm</title><content type='html'>I've using Soundex, Double Metaphone, Levenshtein Distance and other string matching algorithms, but somethings it is the simple things that work best.&lt;br /&gt;&lt;br /&gt;Here is a function I wrote in PL/SQL utilizing the INSTR() function to traverse through one string, checking each character as to whether or not it exists in the another string. &lt;br /&gt;&lt;br /&gt;This has been useful in checking for duplicates in mailing lists as well as identifying potential duplicates that should be reviewed.  The function returns the number of characters from the second string that are the same as the first string.&lt;br /&gt;&lt;br /&gt;I've found the use of the Soundex to be too loose and the Levenshtein Distance algorithm to be lacking in its handling of transposed characters.  Use of this function will give you a count of how many chars are the same regardless of position in the string.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;/*==========================================================&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;   Function: char_instr (str1, str2) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;   Purpose: To check how many characters from one string &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   exist in another string.  The return value is the number &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   of characters &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;that exist in the in both strings.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ==========================================================*/&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FUNCTION char_instr&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   str1 IN VARCHAR2,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   str2 IN VARCHAR2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;RETURN NUMBER &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   v_exists NUMBER := 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   v_occurs NUMBER := 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   v_length NUMBER;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;/*==========================================================&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;     Get the length of the str2 &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;  ==========================================================*/&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt; v_length := LENGTH(str2);&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;/*==========================================================&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;  Loop through str2 and check if char exists in str1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    =========================================================*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   IF( v_length &gt; 0 ) THEN   &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;   &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;FOR x IN  1..v_length LOOP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;v_exists := INSTR(UPPER(str1), SUBSTR(UPPER(str2), x, 1)); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;IF(v_exists&gt;0) THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;v_occurs := v_occurs + 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   RETURN v_occurs;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;END char_instr;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2912519525296132337?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2912519525296132337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2912519525296132337'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/06/charinstr-another-matching-algorithm.html' title='Char_Instr - Another Matching Algorithm'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1687447391104895154</id><published>2007-06-14T20:53:00.000-07:00</published><updated>2007-06-17T14:48:21.128-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQL Cheat Sheet</title><content type='html'>I've put together this page to give quick links to all the Oracle SQL tricks that I find myself continuing to search for on the net.  This is a quick reference guide and will be expanded regularly.&lt;br /&gt;&lt;br /&gt;Oracle SQL Cheat Sheet&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html"&gt;SQL Introduction and Definitions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2006/12/oracle-sql-function-instr.html"&gt;INSTR()&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2006/12/sql-plus-delimited-output-file.html"&gt;Create a Delimited Output in SQL Plus&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2006/09/rename-column-in-oracle-sql-plsql.html"&gt;How to Rename a Column in Oracle SQL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2006/11/how-to-delete-column-from-table-in.html"&gt;How to Delete a Column from a Table&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2006/10/how-to-use-variables-in-plsql-or.html"&gt;Use of Variables in SQL Plus or PL/SQL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2006/10/formatting-query-results.html"&gt;Format Query Results to Display Currency&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-tochar-function.html"&gt;Display Seconds Past Midnight&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2006/11/how-to-select-top-results-in-group-by.html"&gt;Select Only Top Results in a Query&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2006/11/oracle-wildcards.html"&gt;Use of Wildcards in Oracle SQL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2006/11/nvl-oracle-sql-null-field-handling.html"&gt;What is NVL and how does it work?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/02/oracle-sql-decode.html"&gt;How to Use Decode in Oracle SQL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/05/how-to-round-up-in-oracle-sql.html"&gt;How to Round Off a Number in Oracle SQL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/03/oracle-thin-client-jdbc.html"&gt;Debug JDBC Connectivity with Oracle Thin Client&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/06/charinstr-another-matching-algorithm.html"&gt;Oracle String Matching Algorithm - CHAR_INSTR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you have any other tips or suggested entries, let me know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1687447391104895154?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1687447391104895154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1687447391104895154'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/06/sql-cheat-sheet.html' title='SQL Cheat Sheet'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6705844587851754019</id><published>2007-06-02T00:56:00.000-07:00</published><updated>2007-06-02T01:11:06.411-07:00</updated><title type='text'>Nice Bike Tom!</title><content type='html'>Check out these shots of Tom Cruise's new bike.  I hear it has a Ducati engine and was custom built for him, sized to fit.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.visordown.com/i/a/830/vyrus_03.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://www.visordown.com/i/a/830/vyrus_03.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.product-reviews.net/wp-content/userimages/2007/05/vyrusmotorcycle.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.product-reviews.net/wp-content/userimages/2007/05/vyrusmotorcycle.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6705844587851754019?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6705844587851754019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6705844587851754019'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/06/nice-bike-tom.html' title='Nice Bike Tom!'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4645682136524289035</id><published>2007-05-29T10:04:00.000-07:00</published><updated>2007-05-29T11:58:15.274-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mailing'/><category scheme='http://www.blogger.com/atom/ns#' term='Postal'/><title type='text'>Standard Mail $.02-$.03 rate reduction proposed by PRC</title><content type='html'>NOTE: THIS IS ONLY PROPOSED AT THIS POINT - NOT YET APPROVED&lt;br /&gt;&lt;br /&gt;This morning I received the following pleasant news update from the DMA regarding a temporary rate reduction proposed on all Standard USPS mail:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The Postal Regulatory Commission May 25 offered interim rate relief for Standard Regular flats and catalog mailers in response to the U.S. Postal Service Governors’ request to reconsider the recommended rates in March.&lt;br /&gt;&lt;br /&gt;The PRC’s decision grants a temporary rate reduction of 3 cents for all Standard Mail regular flats and 2 cents for Standard Regular nonprofit flats. The temporary transitional rate relief for Standard Regular flats mailers would end Sept. 29. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dmnews.com/cms/dm-news/direct-mail/41255.html"&gt;click to read full story...&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;They would not require any software change be made but simply a blanket 3 cents per Standard Mail Flat and 2 cents per Non-Profit Standard Mail Flat to be deducted from the overall postage statement.  &lt;br /&gt;&lt;br /&gt;Mailers concerned should contact their USPS postal reps and support this PRC recommendation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4645682136524289035?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4645682136524289035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4645682136524289035'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/05/standard-mail-02-03-rate-reduction.html' title='Standard Mail $.02-$.03 rate reduction proposed by PRC'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6704552675775129159</id><published>2007-05-24T10:53:00.000-07:00</published><updated>2007-05-24T11:15:25.444-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>How to Round Up in Oracle SQL</title><content type='html'>Recently I needed to provide a report that had numbers  rounded to the nearest thousand.  I found the ROUND command but this appeared to be only rounding off decimal points to a specified number of spaces.   The syntax for this is:&lt;br /&gt;&lt;blockquote&gt;SELECT ROUND(&lt;span style="font-weight:bold;"&gt;number&lt;/span&gt;, &lt;span style="font-weight:bold;"&gt;decimals&lt;/span&gt;)&lt;br /&gt;FROM table;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;If you use 2 for the &lt;span style="font-weight:bold;"&gt;decimals &lt;/span&gt;your result would look like this: &lt;br /&gt;&lt;blockquote&gt;SELECT ROUND(2.123,2) FROM DUAL;&lt;br /&gt;Result: 2.12&lt;br /&gt;SELECT ROUND(2.129,2) FROM DUAL;&lt;br /&gt;Result: 2.13&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;However, I needed something that would round to the nearest thousandth. So I tried a negative number for the &lt;span style="font-weight:bold;"&gt;decimals&lt;/span&gt; like this and found it did exactly what I wanted:&lt;br /&gt;&lt;blockquote&gt;SELECT ROUND(10234,-3) FROM DUAL;&lt;br /&gt;Result: 10000&lt;br /&gt;SELECT ROUND(10567,-3) FROM DUAL;&lt;br /&gt;Result: 11000&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;While this is a basic Oracle SQL function, it is not clear that you can do this, hence this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6704552675775129159?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6704552675775129159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6704552675775129159'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/05/how-to-round-up-in-oracle-sql.html' title='How to Round Up in Oracle SQL'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1807003758121769383</id><published>2007-05-17T10:08:00.000-07:00</published><updated>2007-05-17T10:54:34.909-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mailing'/><category scheme='http://www.blogger.com/atom/ns#' term='Postal'/><title type='text'>USPS Rate Change - What do you think?</title><content type='html'>May 14th, 2006 will go down in history as the most confusing day in mailers history.  Unfortunately many people did not install the new presorting software on development machines and get them fully tested before the big date and tried to frantically switch over on May 14th.  The tech support team at Firstlogic was overwhelmed with calls - specifically in their Presort support dept.  Complaints regarding the post office rejecting their mail, confusing new requirements and general upset due to the increase in postage as a result of the new rate case.  Mailers are experiencing anywhere upwards of $.10 per piece increase - the highest increase in standard mail that I can remember.&lt;br /&gt;&lt;br /&gt;I saw a post on the &lt;a href="http://www.dmnews.com/cms/dm-news/direct-mail/41137.html"&gt;DM News website&lt;/a&gt; that the USPS claimed the new rate case implementation was going smooth - however it is quite different on the ground in speaking to mailers and software support technicians.&lt;br /&gt;&lt;br /&gt;Per the below excerpt from DM News page, it looks as though the Postal Regulation Committee is considering reverting the Standard Flat Mail rate change due to the "rate shock" occurring:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The Governors of the USPS asked that the rates for this category of mail be reconsidered because the price increases recommended by the PRC may impose an unnecessary degree of “rate shock” on the catalog industry and small businesses particularly. The recommended increase for some catalog mailers is as much as 40 percent, which is more than double what the Postal Service had proposed.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Here is a poll to find out your opinion of the new rate case.  Please vote and let me know your comments on this.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;iframe src="http://polls.blogflux.com/poll.php?poll=11584&amp;width=200&amp;amp;fontsize=11&amp;height=200&amp;amp;amp;fontface=Verdana&amp;padding=10&amp;amp;textcolor=%23000000&amp;bgcolor=%23FFFFFF&amp;amp;doublespace=0&amp;borderwidth=1&amp;amp;linkmap=1&amp;bordercolor=%23cccccc" marginwidth="0" marginheight="0" frameborder="0" height="222" scrolling="no" width="222"&gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;a href="http://polls.blogflux.com/poll-11584.html"&amp;amp;amp;amp;amp;amp;amp;gt;Take the poll&amp;amp;amp;amp;amp;amp;lt;/a&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;lt;br /&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;lt;br /&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;lt;a href="http://polls.blogflux.com/"&amp;amp;amp;amp;amp;amp;amp;gt;Free Poll by Blog Flux&amp;amp;amp;amp;amp;amp;lt;/a&amp;amp;amp;amp;amp;amp;gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1807003758121769383?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1807003758121769383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1807003758121769383'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/05/usps-rate-change-what-do-you-think.html' title='USPS Rate Change - What do you think?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4822094704450911554</id><published>2007-04-24T11:56:00.000-07:00</published><updated>2007-04-24T14:25:30.487-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='L. Ron Hubbard'/><title type='text'>Is anyone teaching us Morals anymore?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.twth.org"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px;" src="http://www.twth.org/images/psa_page_p17.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Back in the day, religion had its place in society of instilling moral values in our youth.  With the separation of Church and State and the resulting exclusion of any religious material from the classrooms, a void was unintentionally forged - or should I say a chasm.  &lt;br /&gt;&lt;br /&gt;In the last few years, we've heard more horrific stories of youth violence and their apparent lack of any moral sense.  Look at the Columbine shootings or more recently the Virginia Tech rampage.  Cho certainly had no sense of morals.  Maybe this was the result of the psychiatric - mind-altering drugs he was on.  He certainly would have been schooled in the generation where morals were stripped from our classrooms.  &lt;br /&gt;&lt;br /&gt;Who is teaching our children morals these days anyway?  &lt;br /&gt;&lt;br /&gt;There is a organization paving the way towards getting Moral values back into society.  &lt;a href="http://www.twth.org/"&gt;The Way to Happiness&lt;/a&gt; is an organization that promotes "Moral Values for a Modern World.  This is a non-religious moral code that anyone can follow. &lt;br /&gt;&lt;br /&gt;They have recently launched a campaign of Public Service Announcements that promote this moral code in terms anyone can understand.  &lt;br /&gt;&lt;br /&gt;Here is a link to a video where you can watch one of these PSAs promoting one of these precepts, &lt;a href="http://www.twth.org/get-involved/public-service-announcements/view/?id=17"&gt;Be Competent&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4822094704450911554?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.twth.org/get-involved/public-service-announcements/view/?id=17' title='Is anyone teaching us Morals anymore?'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4822094704450911554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4822094704450911554'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/04/is-anyone-teaching-us-morals-anymore.html' title='Is anyone teaching us Morals anymore?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-570168681010075231</id><published>2007-04-03T22:27:00.000-07:00</published><updated>2007-04-03T22:27:26.948-07:00</updated><title type='text'>Why Global Data Integrity is Important</title><content type='html'>&lt;a href="http://www.melissadata.com/enews/articles/0407/1.htm"&gt;Why Global Data Integrity is Important&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-570168681010075231?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.melissadata.com/enews/articles/0407/1.htm' title='Why Global Data Integrity is Important'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/570168681010075231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/570168681010075231'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/04/why-global-data-integrity-is-important.html' title='Why Global Data Integrity is Important'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-3537147349794956219</id><published>2007-03-24T13:37:00.000-07:00</published><updated>2007-03-24T13:37:22.377-07:00</updated><title type='text'>Various Matching Algorithims</title><content type='html'>&lt;a href="http://www.codeproject.com/string/dmetaphone6.asp?df=100&amp;amp;forumid=16309&amp;amp;exp=0&amp;amp;select=564081"&gt;Implement Phonetic ("Sounds-like") Name Searches with Double Metaphone Part VI: Other Methods &amp; Additional Resources - The Code Project - String&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have only experimented with Levenshtein Distance and Soundex algorithms.  This page gives a free download of the Double Metaphone algorithm implementations as well as several other samples that are very useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-3537147349794956219?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codeproject.com/string/dmetaphone6.asp?df=100&amp;forumid=16309&amp;exp=0&amp;select=564081' title='Various Matching Algorithims'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/3537147349794956219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/3537147349794956219'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/03/various-matching-algorithims.html' title='Various Matching Algorithims'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2490025825063208352</id><published>2007-03-19T16:41:00.000-07:00</published><updated>2007-03-19T21:23:06.711-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Oracle Thin Client JDBC</title><content type='html'>I've had problems setting connections to an Oracle DB using the thin client JDBC.  This post is to track how this was solved.  &lt;br /&gt;&lt;br /&gt;First you must have the oracle.jar file in your build path.  &lt;br /&gt;&lt;br /&gt;Next I used the following for the actual connection: &lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;public static Connection  getConnection() {&lt;br /&gt;&lt;br /&gt;Connection con = null; &lt;br /&gt;try{&lt;br /&gt;   Class.forName("oracle.jdbc.OracleDriver");&lt;br /&gt;} catch (Exception e) {&lt;br /&gt;   System.out.println("Failed to load driver.");&lt;br /&gt;   return con;&lt;br /&gt;}&lt;br /&gt;try {&lt;br /&gt;   con = DriverManger.getConnection(&lt;br /&gt;       "jdbc:oracle:thin:username/pw@hostname:port:SID"&lt;br /&gt;       );&lt;br /&gt;} catch (SQLException ee) {&lt;br /&gt;       ee.printStackTrace();&lt;br /&gt;}&lt;br /&gt;return con;&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I also had imported java.sql.*;&lt;br /&gt;&lt;br /&gt;The thing that was causing a problem with this before was that I did not have the host name, port or SID listed out.  This was easily located in the tnsnames.ora file in the oracle installation folder.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2490025825063208352?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2490025825063208352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2490025825063208352'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/03/oracle-thin-client-jdbc.html' title='Oracle Thin Client JDBC'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-8641699509006496580</id><published>2007-03-14T17:59:00.000-07:00</published><updated>2007-03-14T18:44:41.854-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Psychiatry Kills'/><title type='text'>Kelly Preston, Kirstie Alley and Priscilla Presley at CCHR Awards Banquet</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.cchr.org/files/19577/Kelly_Preston_Kirstie_Alley_Priscilla_Presley_360w.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.cchr.org/files/19577/Kelly_Preston_Kirstie_Alley_Priscilla_Presley_360w.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Citizens Commission on Human Rights acknowledged leaders in the field of human rights last month and awards were presented by Kelly Preston (John Travolta's wife), Priscilla Presley (Elvis Presley's wife) along with Kirstie Alley and Marisol Nichols.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Celebrities present human rights awards to individuals who risked their careers to warn the public about psychiatric drug risks, and urge parents to get informed.&lt;br /&gt;&lt;br /&gt;LOS ANGELES: On Saturday, February 17th, at the annual awards banquet of the psychiatric watchdog Citizens Commission on Human Rights (CCHR), actors Kirstie Alley, Kelly Preston, Priscilla Presley, Marisol Nichols (24) and Anne Archer (Patriot Games, Fatal Attraction) awarded mental health industry whistleblowers who have risked their professional careers to warn the public about the dangers and fraudulent marketing of psychiatric drugs. Exemplifying the effort to inform parents and consumers, former pharmaceutical sales representative Gwen Olsen, and former Pennsylvania government investigator Allen Jones, were presented with CCHR’s annual Human Rights Awards for their courageous contributions to mental health reform.&lt;br /&gt;&lt;br /&gt;Like Russell Crowe’s character in the film The Insider, Allen Jones reluctantly stepped forward as a whistleblower. Kirstie Alley presented Jones with his Human Rights Award for exposing several pharmaceutical companies who bribed Texas government officials to implement mental health treatment laws requiring the use of their brand name drugs.&lt;br /&gt;&lt;br /&gt;Kelly Preston, Kirstie Alley and Priscilla Presley Colin and Marisol Friedberg with Anne Archer&lt;br /&gt;&lt;p align="center"&gt;&lt;a class="" href="http://www.cchr.org/index.cfm/19596"&gt;&lt;img alt="Kelly Preston, Kirstie Alley and Priscilla Presley" src="http://www.cchr.org/files/19604/Kelly_Preston_Kirstie_Alley_Priscilla_Presley_90w.jpg" border="0" /&gt;&lt;/a&gt; &lt;a class="" href="http://www.cchr.org/index.cfm/19596"&gt;&lt;img alt="Colin and Marisol" src="http://www.cchr.org/files/19611/Colin_and_Marisol_90w.jpg" border="0" /&gt;&lt;/a&gt; &lt;a class="" href="http://www.cchr.org/index.cfm/19596"&gt;&lt;img alt="Friedberg with Anne Archer" src="http://www.cchr.org/files/19617/Friedberg_with_Anne_Archer_90w.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(Click to enlarge)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Recently, a four-year-old Massachusetts girl died from a deadly cocktail of psychiatric drugs, calling into question the psychiatric practice of drugging small children with powerful anti-psychotic drugs. Last week, the story ran on the front page of The New York Times and was featured on Fox National News, drawing national attention to the culpability of the prescribing psychiatrist, and the growing controversy over psychiatrists drugging children and toddlers with powerful drugs.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-8641699509006496580?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.cchr.org/index.cfm/19596' title='Kelly Preston, Kirstie Alley and Priscilla Presley at CCHR Awards Banquet'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8641699509006496580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8641699509006496580'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/03/kelly-preston-kirstie-alley-and.html' title='Kelly Preston, Kirstie Alley and Priscilla Presley at CCHR Awards Banquet'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-9059198047049419571</id><published>2007-03-14T15:37:00.000-07:00</published><updated>2007-03-14T15:51:10.219-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Magnetic Card Reader Parsing of Track Data</title><content type='html'>I've been working on developing an application that will read a driver's license and parse the information and populate a data entry screen.  This is useful for rapidly collecting name and address information when you have drivers licenses available.  &lt;br /&gt;&lt;br /&gt;To work out the exact format of drivers license magnetic strips, the following links were very helpful: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://209.85.165.104/search?q=cache:zJYZpYk_Y_QJ:www.pgc.state.pa.us/pgc/lib/pgc/rfp/drivers_license.doc+drivers+license+start+sentinel&amp;hl=en&amp;ct=clnk&amp;cd=13&amp;gl=us&amp;client=firefox-a"&gt;Drivers license format&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abacus21.com/fw/main/Magnetic_Strip_Encoding-1586.html"&gt;Magnetic Strip Encoding Standards&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tech-faq.com/mag-stripe-cards.shtml"&gt;Mag Stripe Cards&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tech-faq.com/mag-stripe-cards.shtml"&gt;Java Magnetic Card Parser&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.exeba.com/comm40/usadriverlisc.htm"&gt;Exeeba AAMVA Drivers License Format&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.exeba.com/comm40/califdriverlic.htm"&gt;CA DL Format&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Many states do not conform to the above standards but generally these will work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-9059198047049419571?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/9059198047049419571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/9059198047049419571'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/03/magnetic-card-reader-parsing-of-track.html' title='Magnetic Card Reader Parsing of Track Data'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-7971849603039615427</id><published>2007-02-28T11:46:00.000-08:00</published><updated>2007-02-28T11:54:52.040-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Case or Switch Example</title><content type='html'>How do you use the CASE function in Java?&lt;br /&gt;&lt;br /&gt;The Switch or Case function in Java is useful for branching off to different actions based on a conditional expression.  For example if you have a series of categories that can be selected and depending on which category was selected, you want the program to do a different action, the Case function is the best way to do this. &lt;br /&gt;&lt;br /&gt;Here is the syntax&lt;br /&gt;&lt;pre class="code"&gt;&lt;/pre&gt;&lt;blockquote&gt;&lt;pre class="code"&gt;    switch( expression ) {&lt;br /&gt;       case value1:&lt;br /&gt;           statement1;&lt;br /&gt;           break;&lt;br /&gt;       case value2:&lt;br /&gt;           statement2;&lt;br /&gt;           break;&lt;br /&gt;       case value3:&lt;br /&gt;           statement3;&lt;br /&gt;           break;&lt;br /&gt;       ...&lt;br /&gt;       case valuen:&lt;br /&gt;           statement n;&lt;br /&gt;           break;&lt;br /&gt;       default:&lt;br /&gt;           statements;&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;A real example of this from the &lt;a href="http://java.sun.com/docs/books/tutorial/java/nutsandbolts/switch.html"&gt;Sun website&lt;/a&gt;: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;        int month = 8;&lt;br /&gt;        switch (month) {&lt;br /&gt;            case 1:  System.out.println("January"); break;&lt;br /&gt;            case 2:  System.out.println("February"); break;&lt;br /&gt;            case 3:  System.out.println("March"); break;&lt;br /&gt;            case 4:  System.out.println("April"); break;&lt;br /&gt;            case 5:  System.out.println("May"); break;&lt;br /&gt;            case 6:  System.out.println("June"); break;&lt;br /&gt;            case 7:  System.out.println("July"); break;&lt;br /&gt;            case 8:  System.out.println("August"); break;&lt;br /&gt;            case 9:  System.out.println("September"); break;&lt;br /&gt;            case 10: System.out.println("October"); break;&lt;br /&gt;            case 11: System.out.println("November"); break;&lt;br /&gt;            case 12: System.out.println("December"); break;&lt;br /&gt;            default: System.out.println("Invalid month.");break;&lt;br /&gt;        }&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-7971849603039615427?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7971849603039615427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7971849603039615427'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/java-case-or-switch-example.html' title='Java Case or Switch Example'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-8988858481728367789</id><published>2007-02-27T19:20:00.000-08:00</published><updated>2007-02-27T20:29:01.953-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Awk'/><title type='text'>String Parsing in Java</title><content type='html'>In Awk you can easily find the position of a delimiter and then take all characters up to that point by using the index() and substr() functions.  But how does that work in Java?  Is there an easy way to parse a String and carry out these type of routine actions?&lt;br /&gt;&lt;br /&gt;Here you go:&lt;br /&gt;&lt;br /&gt;subtring method:&lt;br /&gt;&lt;blockquote&gt;int start = 1;&lt;br /&gt;int end = 4;&lt;br /&gt;String substr = "aString".substring(start, end);   // Str&lt;/blockquote&gt;index method:&lt;br /&gt;&lt;blockquote&gt;String string = "madam, i am Adam";&lt;br /&gt;// First occurrence of a c&lt;br /&gt;int index = string.indexOf('a');    // 1&lt;br /&gt;&lt;/blockquote&gt;Here is a live example I am working with where I need to parse the String into two variables as my webpage is passing me a parameter that is pipe-delimited:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;String str = "YES|12345";&lt;br /&gt;&lt;br /&gt;int pipe = str.indexOf('|');   //4&lt;br /&gt;&lt;br /&gt;String firstPart = str.substring(1,pipe-1);&lt;br /&gt;String lastPart = str.substring(pipe+1);&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-8988858481728367789?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8988858481728367789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8988858481728367789'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/string-parsing-in-java.html' title='String Parsing in Java'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-8080103655306600615</id><published>2007-02-27T14:40:00.000-08:00</published><updated>2007-02-27T14:49:34.255-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Oracle SQL DECODE</title><content type='html'>The DECODE function in Oracle SQL is used for if-then-else statements.  A very handy tool for powerful queries. &lt;br /&gt;&lt;br /&gt;The syntax for the DECODE function is as follows: &lt;br /&gt;&lt;br /&gt;DECODE(value, if1, then1, if2, then2,  if3, then3, etc., else)&lt;br /&gt;&lt;br /&gt;Here is a good example of this from the devx.com website: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Consider the following example in which the Viewable column can have values of 1, 2, and 3:&lt;br /&gt;&lt;br /&gt; SELECT FirstName, Viewable&lt;br /&gt;FROM   employee;&lt;br /&gt;&lt;br /&gt;Results:&lt;br /&gt;&lt;br /&gt;FIRSTNAME  Viewable&lt;br /&gt;===========================&lt;br /&gt;John   1&lt;br /&gt;Tim   2&lt;br /&gt;Julie   2&lt;br /&gt;Stacy   1&lt;br /&gt;Rahul   3&lt;br /&gt;Leena   4&lt;br /&gt;Amy   1&lt;br /&gt;Bill   3&lt;br /&gt;Teri   3&lt;br /&gt;&lt;br /&gt;Now, we can use Decode to display different things in a report based on the values in Viewable.&lt;br /&gt;&lt;br /&gt; SELECT Firstname, &lt;br /&gt;     Decode(Viewable, 1,'VISIBLE', 2,'INVISIBLE', &lt;br /&gt;3,'UNKNOWN', 'OTHER')&lt;br /&gt;FROM   employee;&lt;br /&gt;&lt;br /&gt;Results:&lt;br /&gt;&lt;br /&gt;FIRSTNAME  Viewable&lt;br /&gt;===========================&lt;br /&gt;John   VISIBLE&lt;br /&gt;Tim   INVISIBLE&lt;br /&gt;Julie   INVISIBLE&lt;br /&gt;Stacy   VISIBLE&lt;br /&gt;Rahul   UNKNOWN&lt;br /&gt;Leena   OTHER&lt;br /&gt;Amy   VISIBLE&lt;br /&gt;Bill   UNKNOWN&lt;br /&gt;Teri   UNKNOWN&lt;br /&gt;&lt;br /&gt;Decode checks the column values and interprets the provided values in pairs. This is how it works:&lt;br /&gt;&lt;br /&gt; Switch viewable:&lt;br /&gt;&lt;br /&gt;Case 1:&lt;br /&gt;    Result = VISIBLE&lt;br /&gt;Case 2:&lt;br /&gt;    Result = INVISIBLE&lt;br /&gt;Case 3:&lt;br /&gt;    Result = UNKNOWN&lt;br /&gt;Default:&lt;br /&gt;    Result = OTHER&lt;br /&gt;End Case&lt;br /&gt;&lt;br /&gt;OR&lt;br /&gt;====================&lt;br /&gt;&lt;br /&gt;If Viewable = 1 Then&lt;br /&gt;    Result = VISIBLE&lt;br /&gt;Elsif Viewable = 2 Then&lt;br /&gt;    Result = INVISIBLE&lt;br /&gt;Elsif Viewable = 3 Then&lt;br /&gt;    Result = UNKNOWN&lt;br /&gt;Else&lt;br /&gt;    Result = OTHER&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;One can use Decode in Updates as well. For example, instead of writing 50 different updates to change state names, we can do it in one Update using Decode as follows:&lt;br /&gt;&lt;br /&gt; Update employee&lt;br /&gt;set    homestate = decode(homestate, &lt;br /&gt;                        'AL', 'Alabama',&lt;br /&gt;                        'AK', 'Alaska',&lt;br /&gt;                        'AS', 'American Samoa',&lt;br /&gt;                        'AZ', 'Arizona',&lt;br /&gt;    . . . . . . . .&lt;br /&gt;                        . . . . . . . . &lt;br /&gt;                        'WA', 'Washington',&lt;br /&gt;                        'WV', 'West Virginia',&lt;br /&gt;                        'WI', 'Wisconsin',&lt;br /&gt;                        'WY', 'Wyoming' , homestate)&lt;br /&gt; where homecountry = 'UNITED STATES'&lt;br /&gt;&lt;br /&gt;This will replace state abbreviations with state names. And it leaves the abbreviations alone in case it doesn't match any of the values, such as AL, AK, etc.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Most Oracle SQL users do not realize the power of this function.  Hopefully this post will enlighten some on it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-8080103655306600615?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8080103655306600615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8080103655306600615'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/oracle-sql-decode.html' title='Oracle SQL DECODE'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6521090469668946771</id><published>2007-02-25T17:55:00.000-08:00</published><updated>2007-02-25T18:01:04.389-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scientology'/><title type='text'>Scientology Edinburgh</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://queundo.files.wordpress.com/2007/02/train1.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px;" src="http://queundo.files.wordpress.com/2007/02/train1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;A new website was just put up for the &lt;a href="http://www.scientology-edinburgh.org/"&gt;Church of Scientology in Scotland&lt;/a&gt;.  The Volunteer Ministers are really needed there right now with the recent train wreck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6521090469668946771?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.scientology-edinburgh.org/' title='Scientology Edinburgh'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6521090469668946771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6521090469668946771'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/scientology-edinburgh.html' title='Scientology Edinburgh'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2149242115160312691</id><published>2007-02-20T10:57:00.000-08:00</published><updated>2007-02-22T10:52:20.752-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Google Directory - Computers &gt; Data Formats &gt; Markup Languages &gt; HTML &gt; Tutorials</title><content type='html'>I figured its about time I learned HTML.  Here is a great starting point with a plethora of tutorials, examples, etc.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://directory.google.com/Top/Computers/Data_Formats/Markup_Languages/HTML/Tutorials/"&gt;Google Directory - Computers &gt; Data Formats &gt; Markup Languages &gt; HTML &gt; Tutorials&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.submitlinks.org"&gt;Submit Links Directory&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2149242115160312691?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://directory.google.com/Top/Computers/Data_Formats/Markup_Languages/HTML/Tutorials/' title='Google Directory - Computers &gt; Data Formats &gt; Markup Languages &gt; HTML &gt; Tutorials'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2149242115160312691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2149242115160312691'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/google-directory-computers-data-formats.html' title='Google Directory - Computers &gt; Data Formats &gt; Markup Languages &gt; HTML &gt; Tutorials'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-7376621193950157403</id><published>2007-02-14T20:34:00.000-08:00</published><updated>2007-02-14T21:34:41.587-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Moving Data around HTML pages with JSP</title><content type='html'>Ok, I admit I never programmed a web site before.  But I've recently realized the potential in  using an internal website to handle administrative tasks such as tracking jobs, etc.  Previously I tried doing such with a Swing based approach as this is what I was familiar with, but after consulting with a fellow programmer I chose to set up a webpage with hibernate on top of a MySql db.  So far so good, however, I am looking for a crash course in HTML and JSP to get me going.&lt;br /&gt;&lt;br /&gt;An excellent guide for this is on IBMs site under &lt;a href="http://www-128.ibm.com/developerworks/java/library/j-jsp05133.html"&gt;JSP Best practices&lt;/a&gt;.  I am going through this and hopefully it will answer all my questions...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-7376621193950157403?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7376621193950157403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7376621193950157403'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/moving-data-around-html-pages-with-jsp.html' title='Moving Data around HTML pages with JSP'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-3038274918999843728</id><published>2007-02-14T19:57:00.000-08:00</published><updated>2007-02-14T20:05:47.323-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Event Viewer not showing up</title><content type='html'>What to do if the alerts in your Event Viewer do not show up?  Try the refresh button in the Event Viewer.  Usually this means there are too many events logged and your Event Viewer is jammed. &lt;br /&gt;&lt;br /&gt;This happened to me after installing some new software that bunged up my machine. &lt;br /&gt;Events were being logged like every minute or so and it shortly was overstuffed.  I searched the net and found this suggestion in a &lt;a href="http://techrepublic.com.com/5208-6230-0.html?forumID=39&amp;threadID=163263&amp;amp;messageID=1675072"&gt;TechRepublic&lt;/a&gt; forum and it worked.  After refreshing I could see the events, delete the log if needed and carry on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-3038274918999843728?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/3038274918999843728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/3038274918999843728'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/event-viewer-not-showing-up.html' title='Event Viewer not showing up'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-8082421053489464933</id><published>2007-02-09T10:46:00.000-08:00</published><updated>2007-03-08T11:38:06.882-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java isDate Date Checker</title><content type='html'>Here is an earlier post, showing what what proposed as one solution to the Java isDate() problem:&lt;br /&gt;&lt;blockquote&gt;Below is a method that simulates the Visual Basic isDate() method and is configurable so you can set what you consider are the valid date formats.&lt;br /&gt;I modifed this and added the "Jan|Feb|Mar|Apr..." and "JAN|FEB|MAR|APR|..." to the regex so that the method now validates the formats I needed to check.&lt;br /&gt;I am now implementing this in my application.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:78%;"&gt;&lt;pattern&gt;&lt;pattern&gt;&lt;string&gt;&lt;string&gt;&lt;/string&gt;&lt;/string&gt;&lt;/pattern&gt;&lt;/pattern&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;a href="http://mycodepage.blogspot.com/2006/09/java-isdate-solved.html"&gt;See this code in my earlier blog post.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However, since that time, I worked out the below which has worked wonders and I am posting it here for any others who may need such a simple tool as to convert a text string to a Date object or check if a string is a valid Date, etc.  Let me know if anyone found this useful:&lt;br /&gt;&lt;br /&gt;First load the different type of date formats that you consider valid formats:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;blockquote  style="font-family:arial;"&gt;&lt;span style="font-size:78%;"&gt;    public static ArrayList loadFormats() {&lt;br /&gt;&lt;br /&gt;ArrayList dateFormats = new ArrayList();&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy-MM-dd"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy MM dd"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy.MM.dd"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy-MMM-dd"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy MMM dd"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy.MMM.dd"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd-MM-yyyy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd MM yyyy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd.MM.yyyy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd/MM/yyyy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd-MM-yy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd MM yy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd.MM.yy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd/MM/yy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd-MMM-yy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd MMM yy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd.MMM.yy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd/MMM/yy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd-MMM-yyyy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd MMM yyyy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd.MMM.yyyy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd/MMM/yyyy"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy MM dd hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy.MM.dd hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy-MMM-dd hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy MMM dd hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy.MMM.dd hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("yyyy/MMM/dd hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd-MM-yyyy hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd MM yyyy hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd.MM.yyyy hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd MMM yyyy hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd.MMM.yyyy hh:mm:ss"));&lt;br /&gt;dateFormats.add(new SimpleDateFormat("dd/MMM/yyyy hh:mm:ss"));&lt;br /&gt;&lt;br /&gt;return dateFormats;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Next create your isDate method:&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:78%;"&gt;public static boolean isDate(String date) {&lt;br /&gt;&lt;br /&gt;// Load formats&lt;br /&gt;ArrayList dateFormats = loadFormats();&lt;br /&gt;&lt;br /&gt;boolean validDate = false;&lt;br /&gt;Date myDate = null;&lt;br /&gt;&lt;br /&gt;Object[] myDateFormats = dateFormats.toArray();&lt;br /&gt;for (int i = 0; i &lt;myDateFormats.length; i++) {&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:78%;"&gt;SimpleDateFormat myFormat = (SimpleDateFormat) myDateFormats[i];&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:78%;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:78%;"&gt;try {&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:78%;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:78%;"&gt;myFormat.setLenient(false);&lt;br /&gt; myDate = myFormat.parse(date);&lt;br /&gt; validDate = true;&lt;br /&gt; break;&lt;br /&gt; }&lt;br /&gt;catch (Exception e) {&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:78%;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:78%;"&gt;validDate = false;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;return validDate;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Here is a converter from String to Date to ensures it is a valid format:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;blockquote&gt;&lt;span style="font-family:arial;"&gt;    public static Date convertStringToDate(String date) {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;// Load formats&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ArrayList dateFormats = loadFormats();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;boolean validDate = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Date myDate = null;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Object[] myDateFormats = dateFormats.toArray();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;for (int i = 0; i &lt; myformat =" (SimpleDateFormat)" mydate =" myFormat.parse(date);" validdate =" true;" validdate =" false;"&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;span&gt;&lt;span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;There you go!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-8082421053489464933?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8082421053489464933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8082421053489464933'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/java-isdate-solved-again.html' title='Java isDate Date Checker'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-9176609898779816996</id><published>2007-02-09T10:42:00.000-08:00</published><updated>2007-02-09T10:38:41.113-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java isDate() Function Anyone?</title><content type='html'>From my earlier "pre-category" blog,  this post was written when deep into the lack of a Java isDate() function:&lt;br /&gt;&lt;blockquote&gt;New to Java, but learning fast and definitely experiencing the "Paradigm Shift", however  I find  it odd that there is no isDate() function like there is in Visual Basic.&lt;br /&gt;&lt;br /&gt;As mentioned in an earlier post, I ran into a &lt;a href="http://mycodepage.blogspot.com/2006/08/java-date-conversion.html"&gt;Java Date Conversion&lt;/a&gt; issue where the date format that I was expecting and turned out in the live data tests, to be a different format.  This was after building over 500 test cases that test each of the business rules programmed into a &lt;a href="http://www.jboss.com/products/rules"&gt;Drools Rules&lt;/a&gt; (now Jboss)  processor.&lt;br /&gt;&lt;br /&gt;So obviously, I want to have all possible date formats accounted for so the solution is to have a function that loops through each of the possible date formats and check if the string parses into a valid Date object using that particular SimpleDateFormat.&lt;br /&gt;&lt;br /&gt;I know this can be done using try-catch blocks, but I want to create a more elegant approach calling my custom isDate() function.&lt;br /&gt;&lt;br /&gt;Checking aroung Javalobby and other places to see if anyone has already solved this, or if I need to create from scratch.&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-9176609898779816996?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/9176609898779816996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/9176609898779816996'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/java-isdate-function-anyone.html' title='Java isDate() Function Anyone?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2105749855546745870</id><published>2007-02-09T10:31:00.000-08:00</published><updated>2007-02-10T10:38:55.580-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Swing'/><title type='text'>Jigloo Eclipse Windows Builder?</title><content type='html'>Building GUIs for rich client apps in Eclipse is not the easiest thing in the world.  I'm looking for windows builders comparable to the Net Beans Matisse GUI builder.&lt;br /&gt;&lt;br /&gt;I've downloaded the &lt;a href="http://www.cloudgarden.com/jigloo/index.html"&gt;Jigloo GUI builder&lt;/a&gt; which sounds pretty good but that is coming from company who made it. &lt;br /&gt;&lt;br /&gt;What about &lt;a href="http://www.instantiations.com/windowbuilderpro/default.htm"&gt;WindowsBuilderPro?&lt;/a&gt;   Both Jigloo and WindowsBuilder are commercial products that offer free trial editions.  I've generally heard that WindowsBuilderPro is the better product.&lt;br /&gt;&lt;br /&gt;I'll try both and see for myself...&lt;br /&gt;&lt;br /&gt;On the install, Jigloo is very simple and is just like any other Eclipse plugins.  Just copy to the features and plugins directories and your done.   WindowBuilder on the other hand has you walk through a install wizard which took only a couple minutes to run through.  (Make sure you don't have Eclipse running during the install).&lt;br /&gt;&lt;br /&gt;WindowsBuilder has several example apps you can try.  In 5 minutes of testing this builder I found it very user friendly.  I liked the "quick view" feature where without even compiling you can get a feel for how your app will look during runtime.  Now on to Jigloo.&lt;br /&gt;&lt;br /&gt;After the few minutes I found it easy to create a basic app.  Nothing difficult.  I liked the two screen (code/app) view that shows the two-way changes so if you edit the GUI the code changes or you edit the code and the GUI changes.&lt;br /&gt;&lt;br /&gt;So far they are both comparable products and I'll spend a bit more time using each on an actual application to see which is the better product. ...&lt;br /&gt;&lt;br /&gt;After spending several hours using Jigloo and writing over 1,000 lines of Java using GUI parts from Jigloo I've come to the conclusion that the best use of a GUI builder is for the initial creation of your form and widgets.  The size, arrangement of widgets and placement of your GUI can be very much sped up using Jigloo.&lt;br /&gt;&lt;br /&gt;However, once you understand what a GUI builder is doing and have your basic form created, continued use of any GUI builder is more annoying than anything.  I'd recommend using one to get started, get your basic form created and then drop kick it for any later modifications or additions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2105749855546745870?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2105749855546745870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2105749855546745870'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/jigloo-eclipse-windows-builder.html' title='Jigloo Eclipse Windows Builder?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-27194906744648503</id><published>2007-02-09T10:18:00.000-08:00</published><updated>2007-02-09T10:17:43.112-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><title type='text'>Star UML Design Tool</title><content type='html'>Ok, I downloaded the &lt;a href="http://staruml.sourceforge.net/en/"&gt;Star UML Design tool&lt;/a&gt;.  Looks like an open source UML tool.  Sounds promising.   I'll give it a review in a bit.&lt;br /&gt;&lt;br /&gt;As far as basic modeling  tools go, this is the most easy to work with, simple to understand and fastest startup time.  I've used this to generate a myriad of Use Case Diagrams, Activity Diagrams and Sequence Diagrams.   Not  reviewed yet is Star UML's Code Generation capabilities which look pretty straightforward. &lt;br /&gt;&lt;br /&gt;One thing a bit  confusing to a UML/MDA beginner is the "New Project By Approach" window where you have to select which UML approach you want to use.  This basically means how the different types of diagrams will be organized.  You have the option of selecting the 4+1 View Model, the Rational Approach, the UML  Components Approach or the Default Approach. &lt;br /&gt;&lt;br /&gt;I recommend just using the Default Approach unless you are familiar other standard UML approaches.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-27194906744648503?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/27194906744648503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/27194906744648503'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/star-uml-design-tool.html' title='Star UML Design Tool'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4817254015987209621</id><published>2007-02-09T10:14:00.000-08:00</published><updated>2007-02-09T10:14:04.569-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Swing'/><title type='text'>Eclipse Visual Editor vs. Jigloo</title><content type='html'>Ok, I've been using the Eclipse Visual Editor for all of 15 minutes and I am sold.  Up until now, I've been using Cloudgarden's Jigloo free version, yet after getting constantly annoyed by Jigloo's constant modifications to my code, prevention of using builders and the incessant warnings about how you are using the free version and that this can not be used for commercial use, I had it.&lt;br /&gt;&lt;br /&gt;It is much easier to build with the Model View Control (MVC) architecture using the VE tool as opposed to the Jigloo builder.&lt;br /&gt;&lt;br /&gt;Here are some comparisons and reviews of these GUI builder tools:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.eclipse-plugins.info/eclipse/plugin_comments.jsp?id=472&amp;pager.offset=70&amp;amp;firstItem=71"&gt;Jigloo Review&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.fullspan.com/articles/java-gui-builders.html"&gt;Comparison of Java GUI Builders&lt;/a&gt;&lt;br /&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101936"&gt;Comparison with Matisse&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.infoworld.com/article/03/11/18/HNeclipse_1.html"&gt;IBM Giving Away VE Source Code to Eclipse&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4817254015987209621?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4817254015987209621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4817254015987209621'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/eclipse-visual-editor-vs-jigloo.html' title='Eclipse Visual Editor vs. Jigloo'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-217152163808518435</id><published>2007-02-09T10:13:00.000-08:00</published><updated>2007-02-09T10:12:26.619-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Swing'/><title type='text'>Refresh a JTable from a JDBC connection</title><content type='html'>I have a Swing application that uses a JTable and JScrollPane to display data from an Access database via a JDBC connection.&lt;br /&gt;&lt;br /&gt;Even though I had properly coded the SQL INSERT statement and the data was loading into my database, the JTable was not refreshing with the new record.   I tried the .revalidate() and the .repaint() methods to no avail.&lt;br /&gt;&lt;br /&gt;Finally, after reading Ben Hendry's &lt;a href="http://wbt.sys-con.com/read/36190.htm"&gt;Mastering JTable&lt;/a&gt; I was able to sort this out.&lt;br /&gt;&lt;br /&gt;In my JButton ActionListener I added the TableModel.addRow method and inserted the newly inserted records into the JTable as well.  Followed by a .revalidate() and the data properly displayed without even a flicker in my application.&lt;br /&gt;&lt;br /&gt;Moral of the story - always use Model-View-Control (MVC) architecture and separate your view from your data and controls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-217152163808518435?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/217152163808518435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/217152163808518435'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/refresh-jtable-from-jdbc-connection.html' title='Refresh a JTable from a JDBC connection'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-650724252734766195</id><published>2007-02-09T10:10:00.000-08:00</published><updated>2007-02-09T10:05:52.260-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scientology'/><title type='text'>Tom Cruise, Baby Suri, Photos Released</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://newsimg.bbc.co.uk/media/images/42056000/jpg/_42056916_surivanityfair_203.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px;" src="http://newsimg.bbc.co.uk/media/images/42056000/jpg/_42056916_surivanityfair_203.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see, Suri is absolutely a beautiful child.   Vanity Fair has a major feature on Tom Cruise, Katie Holmes and Suri Cruise.  This article dispels the rumors that have been generated by the media over the last several months.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-650724252734766195?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://news.bbc.co.uk/2/hi/entertainment/5318984.stm' title='Tom Cruise, Baby Suri, Photos Released'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/650724252734766195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/650724252734766195'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/tom-cruise-baby-suri-photos-released.html' title='Tom Cruise, Baby Suri, Photos Released'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1407513813224709040</id><published>2007-02-09T10:04:00.000-08:00</published><updated>2007-02-07T09:59:57.132-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Psychiatry Kills'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Marilyn Monroe - Death By Psychiatry?</title><content type='html'>On the CCHR website there is a section devoted to artists.  As I am an artist this was struck home to me.  Artists and successful people are often found surrounded by "professionals" in the field of mental health.&lt;br /&gt;&lt;br /&gt;I've heard many stories about what  happened to Marilyn Monroe but this, from CCHR's website makes the most sense.  Here is an excerpt:&lt;br /&gt;&lt;blockquote&gt;"In 1960, Monroe saw psychiatrist Ralph Greenson, whose control over her was swift, severing all her close relationships. By 1962, she realized—too late—that she must "disconnect from Greenson." After spending six hours with him, she was found dead of a drug overdose. In the seven years prior to psychiatry’s influence, Monroe had made 23 movies. In the seven years of her psychiatric "care," she only made six films."&lt;br /&gt;&lt;/blockquote&gt;Check out the &lt;a href="http://www.cchr.org/index.cfm/5304"&gt;Citizen's Commission on Human Rights&lt;/a&gt; for more information on other famous artists whose lives have been destroyed by Psychiatry in the name of help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1407513813224709040?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.cchr.org/index.cfm/5324' title='Marilyn Monroe - Death By Psychiatry?'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1407513813224709040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1407513813224709040'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/marilyn-monroe-death-by-psychiatry.html' title='Marilyn Monroe - Death By Psychiatry?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6280358736574337794</id><published>2007-02-07T09:50:00.000-08:00</published><updated>2007-02-07T09:53:03.167-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Study Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><category scheme='http://www.blogger.com/atom/ns#' term='Matching Algorithms'/><title type='text'>Probabilistic Matching</title><content type='html'>Probabilistic matching uses likelihood ratio theory to assign comparison outcomes to the correct, or more likely decision.&lt;br /&gt;&lt;br /&gt;Probabilistic matching enables one to use match scores and percentages on a field by field comparison to determine a match. There are three categories output from probabilistic matching and are set by the user based on the overall probability percentage:&lt;br /&gt;&lt;br /&gt;1) Match - that can be automatically merged&lt;br /&gt;2) Candidate Match - requiring manual review&lt;br /&gt;3) Non Match&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/machine-learning-and-artificial.html"&gt;Artificial Intelligence and Machine Learning&lt;/a&gt; utilize probabilistic matching.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6280358736574337794?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6280358736574337794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6280358736574337794'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/probabilistic-matching.html' title='Probabilistic Matching'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-607575008101675749</id><published>2007-02-06T11:06:00.000-08:00</published><updated>2007-02-06T11:07:29.905-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Study Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>Service Oriented Architecture (SOA)</title><content type='html'>A service-oriented architecture is a collection of services that communicate with each other. The services are self-contained and do not depend on the context or state of the other service. They work within a distributed systems architecture.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-607575008101675749?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/607575008101675749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/607575008101675749'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/service-oriented-architecture-soa.html' title='Service Oriented Architecture (SOA)'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1304990721496744459</id><published>2007-02-06T10:55:00.000-08:00</published><updated>2007-02-06T11:06:09.567-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Record Linkage'/><category scheme='http://www.blogger.com/atom/ns#' term='Study Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>Record Linkage</title><content type='html'>Record linkage is the act of detecting and linking duplicate records within a database. It is also called match/merge, deduplication, match/consolidate, etc.&lt;br /&gt;&lt;br /&gt;Some record linkage software tools include:&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/febrl"&gt;Febrl (Freely Extensible Biomedical Record Linkage)&lt;/a&gt; - Open Source&lt;br /&gt;&lt;a aiotitle="TAILOR" href="http://mycodeblog.blogspot.com/2007/01/record-linkage-graphical-user.html"&gt;TAILOR&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/record-linkage-graphical-user.html"&gt;TheLinkKing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/record-linkage-graphical-user.html"&gt;MatchIT - Commercial&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.businessobjects.com/"&gt;Business Objects - Commercial&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.g1.com/"&gt;Group1 - Commercial&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1304990721496744459?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1304990721496744459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1304990721496744459'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/record-linkage.html' title='Record Linkage'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1250039243898166279</id><published>2007-02-06T10:54:00.000-08:00</published><updated>2007-02-06T10:55:02.086-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Study Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>Fuzzy Matching Logic</title><content type='html'>A method of matching where algorithms are used to compare character strings and detect recurring patterns within these strings. Common algorithms are Soundex, Levenshtein Distance and Double Metaphone which find similarities based on patterns and similarities. It is called a "fuzzy match" because the match is not exact, like if you were looking at the two records out of focus, they would look the same, but would be a bit fuzzy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1250039243898166279?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1250039243898166279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1250039243898166279'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/fuzzy-matching-logic.html' title='Fuzzy Matching Logic'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-7647642872141973201</id><published>2007-02-06T10:53:00.002-08:00</published><updated>2007-02-06T10:54:19.448-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Study Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>Enterprise Resource Planning (ERP)</title><content type='html'>Software that integrates departments and functions across a company into one computer system. ERP runs off a single database, enabling various departments to share information and communicate with each other. It helps a manufacturer or other business manage the important parts of its business, including product planning, parts purchasing, maintaining inventories, interacting with suppliers, providing customer service, and tracking orders.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-7647642872141973201?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7647642872141973201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7647642872141973201'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/enterprise-resource-planning-erp.html' title='Enterprise Resource Planning (ERP)'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-3224242353130309503</id><published>2007-02-06T10:53:00.001-08:00</published><updated>2007-02-06T10:53:42.622-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Study Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>Customer Data Integration (CDI)</title><content type='html'>Customer Data Integration (CDI) is the consolidation and management of customer data from all available sources. This customer data typically includes contact details, value data, and other information collected across multiple channels and through various interactions. The purpose of CDI is to keep source data systems and the central database in synch with each other to provide an accurate central view of each customer&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-3224242353130309503?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/3224242353130309503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/3224242353130309503'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/customer-data-integration-cdi.html' title='Customer Data Integration (CDI)'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1611613170128534139</id><published>2007-02-06T10:51:00.000-08:00</published><updated>2007-02-06T10:53:03.711-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Study Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>Customer Relationship Management (CRM)</title><content type='html'>The functions and programs a company uses to connect with its customers - typically divided into Operational CRM (call centers, sales force automation, supply chain management) and Analytic CRM (customer analysis, database marketing). It allows an individual approach to marketing to and servicing customers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1611613170128534139?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1611613170128534139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1611613170128534139'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/customer-relationship-management-crm.html' title='Customer Relationship Management (CRM)'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2532821350356922159</id><published>2007-02-04T20:26:00.000-08:00</published><updated>2007-02-07T09:59:57.189-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='L. Ron Hubbard'/><category scheme='http://www.blogger.com/atom/ns#' term='Record Linkage'/><category scheme='http://www.blogger.com/atom/ns#' term='Study Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>CDI - Glossary of Terms</title><content type='html'>As I've mentioned before, a primary barrier to studying any subject is the misunderstood word.  Per Hubbard's &lt;a href="http://www.studytechnology.org/"&gt;study technology site&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.studytechnology.org/special/img/barr3.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 124px; height: 128px;" src="http://www.studytechnology.org/special/img/barr3.gif" alt="" border="0" /&gt;&lt;/a&gt;"To clear a word, one looks it up in a good dictionary.&lt;br /&gt;&lt;br /&gt;"The first step is to look rapidly over the definitions to find the one which applies to the context in which the word was misunderstood. One reads the definition and uses it in sentences until one has a clear concept of that meaning of the word. This could require ten or more sentences.&lt;br /&gt;&lt;br /&gt;"Then one clears each of the other definitions of that word, using each in sentences until one has a conceptual understanding of each definition.&lt;br /&gt;&lt;br /&gt;"The next thing to do is to clear the derivation – which is the explanation of where the word came from originally. This will help gain a basic understanding of the word." ...&lt;br /&gt;- &lt;a href="http://www.lronhubbard.org/"&gt;L. Ron Hubbard&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;Therefore I've started putting together simple to understand definitions for the most common terms in the field of Customer Data Integration.&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/02/customer-relationship-management-crm.html"&gt;&lt;b&gt;Customer Relationship Management (CRM)&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/02/customer-data-integration-cdi.html"&gt;&lt;b&gt;Customer Data Integration (CDI)&lt;/b&gt;&lt;/a&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;b&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/02/enterprise-resource-planning-erp.html"&gt;Enterprise Resource Planning (ERP)&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;b&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/02/fuzzy-matching-logic.html"&gt;Fuzzy Matching Logic&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/02/probabilistic-matching.html"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;Probabilistic Matching&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;b&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/02/probabilistic-matching.html"&gt;&lt;span style="text-decoration: underline;"&gt; Logic&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;&lt;dl&gt;&lt;dt&gt;&lt;b&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/02/record-linkage.html"&gt;Record Linkage&lt;/a&gt;&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;b&gt;&lt;a aiotitle="Service Oriented Architecture (SOA)" href="http://mycodeblog.blogspot.com/2007/02/service-oriented-architecture-soa.html"&gt;Service Oriented Architecture (SOA)&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;&lt;/dt&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2532821350356922159?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2532821350356922159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2532821350356922159'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/02/cdi-glossary-of-terms.html' title='CDI - Glossary of Terms'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4292721092356971605</id><published>2007-01-29T10:11:00.000-08:00</published><updated>2007-01-29T12:10:31.105-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Stewards'/><category scheme='http://www.blogger.com/atom/ns#' term='Record Linkage'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><category scheme='http://www.blogger.com/atom/ns#' term='Matching Algorithms'/><title type='text'>Record Linkage Graphical User Interfaces</title><content type='html'>Manual handling of duplicates in a database can be quite time consuming.  It is important to find the right tool to help you speed this process.  Or if you are building your own record linkage tool, it is always good to see what is out there, how GUIs are laid out and what the common features are.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.the-link-king.com/"&gt;The Link King:&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a aiotarget="false" aiotitle="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.the-link-king.com/screen_shots.html"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 398px; height: 234px;" src="http://www.the-link-king.com/sitebuilder/images/v6screenshot-840x494.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="text"&gt;&lt;span style="line-height: 17px;font-size:14;" &gt;&lt;blockquote&gt;The Link King’s graphical user interface (GUI) makes record linkage and unduplication easy for beginning and advanced users.  The data linking neophyte will appreciate the easy-to-follow instructions.  The Link King's artificial intelligence will assist in the selection of the most appropriate linkage/unduplication protocol. &lt;/blockquote&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.linkagewiz.com/"&gt;Linkage Wiz:&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 401px; height: 89px;" src="http://www.linkagewiz.com/index_files/image002.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;LinkageWiz&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size:85%;"&gt; is a powerful data matching and record de-duplication  software program used by businesses, government agencies, hospitals and other  organisations in the USA, Canada, UK, Australia and France. It makes it easy to link records across multiple databases and to  identify and remove duplicate records within databases&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;TAILOR -&lt;br /&gt;&lt;blockquote&gt;TAILOR is extensible, and hence any proposed searching method, comparison function, decision model, or measurement tool can be easily plugged into the system. We have proposed three machine learning record linkage models that raise the limitations of the existing record linkage models. Our extensive experimental study, using both synthetic and real data, shows that the machine learning record linkage models outperform the probabilistic record linkage model with respect to the accuracy and the completeness metrics, the probabilistic record linkage model identifies a lesser percentage of possibly matched record pairs, both the clustering and the hybrid record linkage models are very useful, especially in the case of real applications where training sets are not available or are very expensive to obtain, and Jaro's algorithm performs better than the other comparison functions.&lt;br /&gt;&lt;br /&gt;The following three screen snapshots are the basic screens of TAILOR graphical user interface. The first screen allows the user to either generate a synthetic experiment using DBGen, perform a real experiment on a database, or repeat a previous experiment knowing its data files. The user then uses the second screen in order to select a searching method and a comparison function and tune their required parameters. Finally, the third screen allows the user to select the decision model he would like to apply and outputs the values of the measures if the experiment is on synthetic data.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.purdue.edu/homes/mgelfeky/Papers/tech1.pdf"&gt;Download PDF for screenshots of TAILOR here.&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://helpit.com/folders/software_solutions/batch_data_quality_us/"&gt;MatchIT -&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;matchIT incorporates our proprietary matching algorithms to ensure phonetic, miskeyed and abbreviated variations of data are detected.  Results can be verified using comprehensive data auditing functions, drilling down to suspect data, identifying data anomalies, and filtering garbage and salacious words.&lt;br /&gt;&lt;/blockquote&gt;&lt;span&gt;&lt;span  lang="EN-AU" style="font-family:Arial;"&gt;&lt;span&gt;&lt;span&gt;&lt;span class="text"&gt;&lt;span style="line-height: 17px;font-size:14;" &gt;&lt;span&gt;&lt;span&gt;&lt;span class="text"&gt;&lt;span style="line-height: 17px;font-size:14;" &gt;&lt;a aiotitle="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://helpit.com/assets/system.image_vault/bizpair_us3.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://helpit.com/assets/system.image_vault/bizpair_us3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kroll-software.de/index_e.asp"&gt;Fuzzy Dupes 2007&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Did you know that your contact database typically contains 3-10% duplicates ?&lt;/p&gt;  &lt;p&gt;These duplicate records result in unnecessary costs when sending out printed catalogs, are aggravating to your customers, create problems in the controlling, etc. With classical methods you have no possibility to locate these duplicates in your database.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.kroll-software.de/images/fuzzydupes.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 401px; height: 331px;" src="http://www.kroll-software.de/images/fuzzydupes.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;script&gt;reddit_url='http://mycodeblog.blogspot.com/2007/01/record-linkage-graphical-user.html'&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://reddit.com/button.js?t=1"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4292721092356971605?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4292721092356971605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4292721092356971605'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/record-linkage-graphical-user.html' title='Record Linkage Graphical User Interfaces'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1397438933554949658</id><published>2007-01-28T21:20:00.000-08:00</published><updated>2007-01-28T21:59:11.456-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Artificial Intelligence'/><category scheme='http://www.blogger.com/atom/ns#' term='Matching Algorithms'/><title type='text'>Machine Learning and the Hidden Markov Models (HMM)</title><content type='html'>What is a Hidden Markov Model?  &lt;a href="http://www.answers.com/topic/hidden-markov-model"&gt;(from Answers.com)&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;A hidden Markov model (HMM) is a statistical model where the system being modeled is assumed to be a Markov process with unknown parameters, and the challenge is to determine the hidden parameters from the observable parameters. The extracted model parameters can then be used to perform further analysis, for example for pattern recognition applications. A HMM can be considered as the simplest dynamic Bayesian network.&lt;br /&gt;&lt;br /&gt;In a regular Markov model, the state is directly visible to the observer, and therefore the state transition probabilities are the only parameters. In a hidden Markov model, the state is not directly visible, but variables influenced by the state are visible. Each state has a probability distribution over the possible output tokens. Therefore the sequence of tokens generated by an HMM gives some information about the sequence of states.&lt;br /&gt;&lt;br /&gt;Hidden Markov models are especially known for their application in temporal pattern recognition such as speech, handwriting, gesture recognition and bioinformatics.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div class="thumb tright"&gt;&lt;div style="width: 302px; text-align: left;"&gt;&lt;a href="http://www.answers.com/topic/markovmodel-png" class="ilnk" target="_top" onclick="assignParam('navinfo','method|4'+getLinkTextForCookie(this));"&gt;&lt;img src="http://content.answers.com/main/content/wp/en/thumb/6/6e/300px-MarkovModel.png" alt=" State transitions in a hidden Markov model (example) x — hidden states y — observable outputs a — transition probabilities b — output probabilities" height="226" width="300" /&gt;&lt;/a&gt;&lt;br /&gt;State transitions in a hidden Markov model (example)&lt;br /&gt;&lt;i&gt;x&lt;/i&gt; — hidden states&lt;br /&gt;&lt;i&gt;y&lt;/i&gt; — observable outputs&lt;br /&gt;&lt;i&gt;a&lt;/i&gt; — transition probabilities&lt;br /&gt;&lt;i&gt;b&lt;/i&gt; — output probabilities&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;Resources:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.cmu.edu/%7Eawm/"&gt;Machine Learning Links&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1397438933554949658?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1397438933554949658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1397438933554949658'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/machine-learning-and-hidden-markov.html' title='Machine Learning and the Hidden Markov Models (HMM)'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2081164011119726221</id><published>2007-01-28T20:41:00.000-08:00</published><updated>2007-01-28T21:20:15.213-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Record Linkage'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><category scheme='http://www.blogger.com/atom/ns#' term='Matching Algorithms'/><title type='text'>Record Linkage and List Quality</title><content type='html'>&lt;a href="http://datamining.csiro.au"&gt;What is Record Linkage: &lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;Record linkage is the task of quickly and accurately identifying records corresponding to the same entity from one or more data sources. Record linkage is also known as data cleaning, entity reconciliation or identification and the merge/purge problem. This paper presents the “standard” probabilistic record linkage model and the associated algorithm. Recent work in information retrieval, federated database systems and data mining have proposed alternatives to key components of the standard algorithm. The impact of these alternatives on the standard approach are assessed. The key question is whether and how these new alternatives are better in terms of time, accuracy and degree of automation for a particular record linkage application.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Other names that mean the same thing: entity heterogeneity, entity identification, object isomerism, instance identification, merge/purge, entity reconciliation,&lt;br /&gt;list washing, match/consolidate and data cleaning.  I like the term "record linkage" and will refer to it as such from this point forward in this blog.&lt;br /&gt;&lt;br /&gt;Seems clear that if you want to be thorough in your record linkage efforts you would implement a combination of deterministic and probabilistic matching methodologies.  Using a straightforward name and address match such as the Firstlogic (now Business Objects) approach will usually be sufficient if you are a list vendor or mailhouse.  But if you are at all serious about identity management you will step into the deep end and implement a probabilistic matching method.  I've downloaded the Ferbl open source probablistic matching tool, but have yet to experiment with it.  &lt;br /&gt;&lt;br /&gt;But whatever method you use or software package you buy, the quality of your record linkage always ends up in how good you have configured your rules.  This is not an off-the-shelf solution - it requires work.  &lt;br /&gt;&lt;br /&gt;I bet most organizations "record linkage problems" could have been avoided if enough forsight and initiative had been put on the original database systems, in establishing that unique key.  &lt;br /&gt;&lt;br /&gt;Well, I guess hindsight is in fact - 20/20.&lt;br /&gt;&lt;br /&gt;One product that definitely contributes to an increased percentage of record linkage is the &lt;a href="http://www.identitysystems.com/products/name3T.htm"&gt;SSA-NAME3&lt;/a&gt;   product. As you'll see from their site, they have developed this name search tool which uses probabilistic matching but factors in how common or uncommon the name is.  For example matching two Jose Garcia's in the city of Los Angeles is not the same as matching two Jose Garcia's in Iceland.  They are probably the same person in Iceland and most likely not, in LA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2081164011119726221?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2081164011119726221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2081164011119726221'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/record-linkage-and-list-quality.html' title='Record Linkage and List Quality'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4063792084959813657</id><published>2007-01-28T20:11:00.000-08:00</published><updated>2007-01-28T20:38:05.923-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Stewards'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>What is a Data Steward?</title><content type='html'>&lt;a aiotitle="Data Steward defined:" href="http://www.fws.gov/stand/standards/defterms.html"&gt;Data Steward defined:&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;The person responsible for a data standard. In this role, a Data Steward is charged by     his/her Management to develop and maintain the data standard and to counsel Service     personnel on the proper use of the data. He/she must: have a thorough knowledge of the     subject matter of the standard, provide accurate and current electronic copies of data     relevant to the standard, and weigh the pros and cons of comments received during review     of the standard. He/she is authorized to defend or modify the standard as necessary in     order to ensure its proper use.&lt;/blockquote&gt;&lt;a href="http://www.tdan.com/i002fe03.htm"&gt;Claudio Imhoff's definition and description of duties:&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;Steward - from Old English for "keeper of the sty", a sty ward.&lt;br /&gt;&lt;br /&gt;Data Steward - Person responsible for managing the data in a corporation in terms of integrated, consistent definitions, structures, calculations, derivations, and so on.&lt;br /&gt;&lt;br /&gt;Corporations are demanding better and better sources of data. The explosive growth of data warehousing and sophistication of the access tools are proof that data is one of the most critical assets any company possesses. Data, in the form of information, must be delivered to decision-makers quickly, concisely and more importantly, accurately.&lt;br /&gt;&lt;br /&gt;The data warehouse is an excellent mechanism for getting information into the hands of decision-makers. However, it is only as good as the data that goes into it. Problems occur when we attempt to acquire and deliver this information. A major effort must be made in defining, integrating and synchronizing the data coming from the myriad operational systems producing data throughout the corporation. Who should be responsible for this important task? The answer for a growing number of companies is a new business function called Data Stewardship.&lt;br /&gt;&lt;br /&gt;What is Data Stewardship?&lt;br /&gt;&lt;br /&gt;Data Stewardship has, as its main objective, the management of the corporation's data assets in order to improve their reusability, accessibility, and quality. It is the Data Stewards' responsibility to approve business naming standards, develop consistent data definitions, determine data aliases, develop standard calculations and derivations, document the business rules of the corporation, monitor the quality of the data in the data warehouse, define security requirements, and so forth (see Table 1 for a list of the data integration issues determined by Data Stewards).&lt;br /&gt;&lt;br /&gt;This data about data, or meta data, developed by Data Stewards can then be used by the corporation's knowledge workers in their everyday analyses to determine what comparisons should be made, which trends are significant, that apples have indeed been compared to apples, etc.&lt;br /&gt;&lt;br /&gt;Just as the demand for a data warehouse with good data has grown, the need for a Data Stewardship function has likewise grown. More and more companies are recognizing the critical role this function serves in the overall quest for high quality, available data. Such an integrated, corporate-wide view of the data provides the foundation for the shared data so critical in the data warehouse. ...&lt;br /&gt;&lt;br /&gt;Data Stewards are responsible for the following:&lt;br /&gt;   * Standard Business Naming Standards&lt;br /&gt;   * Standard Entity Definitions&lt;br /&gt;   * Standard Attribute Definitions&lt;br /&gt;   * Business Rules Specification&lt;br /&gt;   * Standard Calculation and Summarization Definitions&lt;br /&gt;   * Entity and Attribute Aliases&lt;br /&gt;   * Data Quality Analyses&lt;br /&gt;   * Sources of Data for the Data Warehouse&lt;br /&gt;   * Data Security Specification&lt;br /&gt;   * Data Retention Criteria&lt;br /&gt;&lt;/blockquote&gt;&lt;a href="http://www.debtechint.com/Our_Services/Seminar_Offerings/Data_Steward_Program/data_steward_program.html"&gt;Crash Course on Data Stewardship:&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Data Stewardship programs are implemented to reduce information technology costs and improve the value companies gain from their data assets. Stewardship programs focus on improving data quality, reducing data duplication, formalizing accountability for data, and improving business and IT productivity.  An effective Data Stewardship program will rapidly improve the ROI from data warehousing and business intelligence efforts&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4063792084959813657?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4063792084959813657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4063792084959813657'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/what-is-data-steward.html' title='What is a Data Steward?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1116658128639536660</id><published>2007-01-28T18:52:00.000-08:00</published><updated>2007-01-28T18:53:20.075-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>Data Governance - IT or Business?</title><content type='html'>&lt;blockquote&gt;&lt;p style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 102);font-family:Arial;" &gt;     "Where does Data Governance fit into the Organization?"&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;     &lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;This question appears to have two answers.      &lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;"In Business"&lt;/span&gt;&lt;/b&gt; or &lt;b&gt;     &lt;span style="color: rgb(0, 0, 128);"&gt;"In IT"&lt;/span&gt;&lt;/b&gt;.  The answer I get most often      when I ask the question is ... "In Business".  Or "Business should own      Data Governance".&lt;/span&gt;&lt;/p&gt;     &lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;I wish it was that simple.&lt;/span&gt;&lt;/p&gt;     &lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;What exactly does it mean for Data Governance      to fit "In Business"? &lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;This article seemed to take up the questions posed in my last post.  The last paragraph sums it up and answers this question.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;     &lt;o:p&gt;     &lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;o:p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;The best answer to the question "Where does Data      Governance fit into the Organization?" is "It doesn't matter".  Data      Governance can be successful when managed by a business area or by an IT      area.&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;     &lt;p&gt;     &lt;span style=";font-family:Arial;font-size:85%;"  &gt;The decision of who will manage the Data      Governance program can be very important to the success of the program.       However, it will not necessarily make or break a well-defined Data      Governance program's likelihood of success.  As long as the business      areas and IT areas coordinate  their efforts, use a Data Governance      Council as a strategic resource, cooperate in strategic data management      activities, and  act in the best interests of the organization      (data-wise), the placement of the management of the Data Governance program      is not nearly the most important question that needs to be answered. &lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/p&gt;                   &lt;span style="font-style: italic;font-family:Arial;font-size:9;"  &gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1116658128639536660?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.tdan.com/i039fe01.htm' title='Data Governance - IT or Business?'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1116658128639536660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1116658128639536660'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/tdan-seiner-stewardship-approach-to.html' title='Data Governance - IT or Business?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4892217506860161428</id><published>2007-01-24T10:29:00.000-08:00</published><updated>2007-01-24T10:44:49.821-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Stewards'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>IT Departments Role in CDI</title><content type='html'>Introducing Customer Data Integration into an organization can be a bit daunting.   A recommendation to anyone doing this is Jill Dyche / Evan Levy's book:  &lt;span style="font-style: italic;"&gt;Customer Data Integration&lt;/span&gt; which definitely builds the needed foundation for anyone's understanding of this subject.   However, there are still aspects that need to be understood and certain functions clearly delineated.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;What is the role of IT in CDI (Customer Data Integration)?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First a definition of IT:&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;b&gt;information technology&lt;/b&gt;   &lt;br /&gt;&lt;!--BOF_HEAD--&gt;&lt;!--EOF_HEAD--&gt;&lt;!--BOF_SUBHEAD--&gt; n.    &lt;i&gt; Abbr. &lt;/i&gt;&lt;b&gt;IT&lt;/b&gt;&lt;br /&gt;&lt;!--EOF_SUBHEAD--&gt;&lt;!--BOF_DEF--&gt;  The development, installation, and implementation of computer systems and applications.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;"IT." &lt;i&gt;The American Heritage® Dictionary of the English Language, Fourth Edition&lt;/i&gt;. Houghton Mifflin Company, 2004. 24 Jan. 2007. &lt;dictionary.com href="http://dictionary.reference.com/browse/IT"&gt;http://dictionary.reference.com/browse/IT&gt;&lt;/dictionary.com&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;The development, installation and implementation of the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;CDI&lt;/span&gt; system is the responsibility of IT - Not the day-to-day upkeep of the data.  As a Data Steward you must have the needed access to the data in order to uphold your responsibilities.&lt;br /&gt;&lt;br /&gt;Tight coordination is needed between the Data Stewards and the IT Dept when the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CDI&lt;/span&gt; project is in its early stages.  Clear definitions should be established for the roles needed, responsibilities assigned and the needed functionality and access levels built into the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;CDI&lt;/span&gt; project.&lt;br /&gt;&lt;br /&gt;Getting this established and clearly delineated at the onset is critical to a &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;successful&lt;/span&gt; &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;CDI&lt;/span&gt; implementation and will increase the mileage and speed of progress in achieving your goals with &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;CDI&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4892217506860161428?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4892217506860161428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4892217506860161428'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/it-departments-role-in-cdi.html' title='IT Departments Role in CDI'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1269823329327821556</id><published>2007-01-19T17:46:00.000-08:00</published><updated>2007-01-19T17:46:53.997-08:00</updated><title type='text'>Postalsoft Mailing Software: Compare Solutions</title><content type='html'>Here is a good comparison of the Firstlogic mailing products.  I thought I had the professional suite but in looking at these it seems I am only getting the Business Edition options.  I better call my account rep...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.businessobjects.com/products/postalsoft/compare.asp"&gt;Postalsoft Mailing Software: Compare Solutions&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1269823329327821556?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.businessobjects.com/products/postalsoft/compare.asp' title='Postalsoft Mailing Software: Compare Solutions'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1269823329327821556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1269823329327821556'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/postalsoft-mailing-software-compare.html' title='Postalsoft Mailing Software: Compare Solutions'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4403418593337358081</id><published>2007-01-18T10:48:00.000-08:00</published><updated>2007-01-18T17:14:52.176-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Oracle TO_CHAR function</title><content type='html'>The oracle TO_CHAR function can display seconds past midnight with the following syntax:&lt;br /&gt;&lt;blockquote&gt;SELECT TO_CHAR(sysdate, 'SSSSS') FROM dual;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.techonthenet.com/oracle/index.php"&gt;Further Oracle SQL/PLSQL topics&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4403418593337358081?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4403418593337358081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4403418593337358081'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/oracle-tochar-function.html' title='Oracle TO_CHAR function'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-156488214686153589</id><published>2007-01-15T11:04:00.000-08:00</published><updated>2007-01-15T11:40:04.203-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Artificial Intelligence'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><category scheme='http://www.blogger.com/atom/ns#' term='Matching Algorithms'/><title type='text'>Machine Learning and Artificial Intelligence</title><content type='html'>Machine Learning is a topic that has come up a lot during my CDI (Customer Data Integration) research.  Specifically when diving into the domain of Probabilistic Matching.  &lt;a href="http://www.initiatesystems.com/web/solutions/what_is_cdi/matching.aspx"&gt;From the Initiate website:&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Probabilistic matching&lt;br /&gt;&lt;br /&gt;Probabilistic matching uses likelihood ratio theory to assign comparison outcomes to the correct, or more likely decision. This method leverages statistical theory and data analysis and, thus, can establish more accurate links than deterministic systems between records that have more complex typographical errors and error patterns.&lt;br /&gt;&lt;br /&gt;Typically, probabilistic systems assign a percentage (such as 75 percent) indicating the probability of a match. Because these systems pinpoint variation and nuances to a much finer degree than a deterministic approach, they are better suited for businesses that have complex data systems with multiple databases. Due to the size of these data systems, the potential for duplicates, human error and discrepancies is far greater, making a system designed to establish links between records with complex error patterns much more effective.&lt;/blockquote&gt;Probabilistic matching enables one to use match scores and percentages on a field by field comparison to determine a match.  There are three categories output from probabilistic matching and are set by the user based on the overall probability percentage:&lt;br /&gt;&lt;br /&gt;1) Match - that can be automatically merged&lt;br /&gt;2) Candidate Match - requiring manual review&lt;br /&gt;3) Non Match&lt;br /&gt;&lt;br /&gt;The topic of Machine Learning and artificial intelligence enters in with the manual review process of the candidate matches.  The idea is that computer can learn from the users decisions of what was manually determined to be a match or non-match and build these into its future decisions and probability scores.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If an expert system--brilliantly designed, engineered and implemented--cannot learn not to repeat its mistakes, it is not as intelligent as a worm or a sea anemone or a kitten.&lt;br /&gt;-Oliver G. Selfridge, from The Gardens of Learning.&lt;br /&gt;&lt;br /&gt;"Find a bug in a program, and fix it, and the program will work today. Show the program how to find and fix a bug, and the program will work forever."&lt;br /&gt;- Oliver G. Selfridge, in AI's Greatest Trends and Controversies&lt;br /&gt;&lt;br /&gt;Machine learning refers to a system capable of the autonomous acquisition and integration of knowledge. This capacity to learn from experience, analytical observation, and other means, results in a system that can continuously self-improve and thereby offer increased efficiency and effectiveness.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.aaai.org/AITopics/html/machine.html"&gt;(read full article on Machine Learning here)&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Companies like Purisma and Siperian offer machine learning techniques built into their software.  &lt;br /&gt;&lt;br /&gt;A primary goal of machine learning would be to reduce the amount of manual review needed to determine matches and continuously improve the software's ability to accurately detect and consolidate duplicate records.  &lt;br /&gt;&lt;br /&gt;An open source tool that can be used for probabilistic record matching is &lt;a href="http://sourceforge.net/projects/febrl"&gt;Febrl (Freely Extensible Biomedical Record Linkage)&lt;/a&gt;.  Written in Python anyone can download this from &lt;a href="http://sourceforge.net/projects/febrl"&gt;sourceforge.net&lt;/a&gt; and get your feet wet with probabilistic matching.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-156488214686153589?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/156488214686153589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/156488214686153589'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/machine-learning-and-artificial.html' title='Machine Learning and Artificial Intelligence'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-7627231476003625339</id><published>2007-01-09T14:25:00.000-08:00</published><updated>2007-01-15T10:31:20.736-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Study Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>An SQL Introduction and Tutorial</title><content type='html'>If you need to freshen up your basics on SQL or if you need to train a new employee on a gradient approach to SQL, the following is a suggested training line-up:&lt;br /&gt;&lt;br /&gt;First, clear up each of the following terms:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#sql"&gt;SQL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#select"&gt;SELECT&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#from"&gt;FROM&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#as"&gt;AS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#where"&gt;WHERE&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#like"&gt;LIKE&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#in"&gt;IN&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#between"&gt;BETWEEN&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#and"&gt;AND&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#or"&gt;OR&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#into"&gt;INTO&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#groupby"&gt;GROUP BY&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#orderby"&gt;ORDER BY&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#having"&gt;HAVING&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html#count"&gt;COUNT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next, go through this online interactive tutorial.  This has the student walk through real examples using an online SQL tool so you can practice what you learn online without having to go to another computer where your database is.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sqlcourse.com/"&gt;An Interactive SQL Tutorial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In learning any new subject it is extremely important to start with the key words and to have these cleared up first, before carrying on with the material.  This is covered in Hubbard's, &lt;a href="http://mycodeblog.blogspot.com/search/label/Study%20Technology"&gt;Study Technology&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here are good basic definitions for each of these SQL terms:&lt;br /&gt;&lt;dl&gt;&lt;dt&gt; &lt;a name="sql"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;SQL&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;SQL stands for Structured Query Language and is a computer language that allows you to ask questions (query) or interact with your database in a structured manner.&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt; &lt;a name="select"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;SELECT&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The SELECT statement indicates that you wish to query and retrieve information from a database. The select_list specifies the type of information (or column names) to retrieve.  The keyword ALL or the wildcard character asterisk (*) could be used to signify all columns in the table. Also, the keyword DISTINCT could be used to discard duplicate records and retrieve only the unique records for the specified columns.&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="into"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;INTO&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The INTO keyword indicates that you are inserting records into another table.  For example in Microsoft Access you can create a new table and insert all records from another table by using the following:  SELECT * INTO &lt;new table="" name=""&gt; &lt;/new&gt;newtablename &lt;new table="" name=""&gt;FROM tablename&lt;old table="" name=""&gt;&lt;br /&gt;&lt;br /&gt;&lt;/old&gt;&lt;/new&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="from"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;FROM&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The FROM clause is required in any SELECT statement. The FROM clause specifies the specific tables to retrieve data from.&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="as"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The AS keyword is used in the SELECT or the FROM clause when you want to refer to a table or column as something else.  This is very handy if you have long table or column names and you want to use a shorter name to refer to them.  This is commonly used when you are joining multiple tables together and do not want to rewrite the full table name each time you are referring to that table.  For example:&lt;br /&gt;&lt;br /&gt;SELECT a.column, b.column&lt;br /&gt;FROM table_name_a AS a, table_name_b AS b&lt;br /&gt;WHERE a.ID = b.ID&lt;br /&gt;&lt;br /&gt;This is also commonly used to have a nicer display of your results.  For example if you have a column called "field17" and you want to display it as "COUNTRY" you can use the following:&lt;br /&gt;&lt;br /&gt;SELECT field17 as COUNTRY&lt;br /&gt;FROM table_name&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="where"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;WHERE&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The WHERE clause limits the results to those records (or rows) that meet some particular conditions (optional).&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="like"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;LIKE&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;LIKE is another SQL keyword that is used in the WHERE clause. LIKE allows you to search based on a pattern rather than specifying exactly what is desired The syntax for it is as follows:  SELECT * FROM table WHERE column LIKE 'abc%'&lt;br /&gt;The wildcard '%' (in Microsoft SQL and Oracle SQL) or '*' (in Access SQL) indicates any character and can be used in any location within the quotes.  This will return any records that match 'abc' as the first three letters and then anything else after that such as 'abc123', 'abcdef', etc.&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="in"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;IN&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The IN keyword is used in the WHERE clause when you want to select all records that have specific values such as if you wanted all customers that have either blue, green or hazel eyes you would use the following:&lt;br /&gt;&lt;br /&gt;SELECT *&lt;br /&gt;FROM customers&lt;br /&gt;WHERE eye_color IN ('blue', 'green', 'hazel')&lt;br /&gt;&lt;br /&gt;You can not use wildcards with the IN keyword.&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="between"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;BETWEEN&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt; If you want to specify a range of values you can use the BETWEEN keyword.  This will give you anything between value &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;b&lt;/span&gt; values.  For example, if you wanted any zip codes that were between '90210' and '91420' you would use the following:&lt;br /&gt;&lt;br /&gt;SELECT *&lt;br /&gt;FROM address_list&lt;br /&gt;WHERE zip_code BETWEEN '90210' AND '91420'&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="and"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;AND&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The AND keyword is used when you want to add additional criteria to your WHERE clause or as part of the BETWEEN clause.&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="or"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;OR&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The OR keyword is used when you want either one criteria or another, but not both.  Be very careful when using the OR keyword as if you have AND and OR in the same WHERE clause your result will probably not be what you expect, unless you use parentheses ().  For example, if you want all people who with blue or hazel eyes that live in California, you would use the following:&lt;br /&gt;&lt;br /&gt;SELECT *&lt;br /&gt;FROM address_list&lt;br /&gt;WHERE &lt;span name="intelliTxt" id="intelliTxt"&gt;(eye_color = 'blue' OR eye_color = 'hazel') AND state = 'CA'&lt;br /&gt;&lt;/span&gt;&lt;/dd&gt;&lt;dd&gt;&lt;span name="intelliTxt" id="intelliTxt"&gt;&lt;/span&gt;&lt;br /&gt;If you don't use the parentheses your query will return people in California, people with blue eyes or people with hazel eyes. So remember your math class where you learned to group parts of the equation to avoid confusion (a * b) + y ...&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="groupby"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;GROUP BY&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The GROUP BY clause specifies if you are grouping (or aggregating) any of the columns in your SELECT statement.  For example if you want to display a count of all addresses by city you would use the GROUP BY clause to group the results by City. This following example will give you a breakdown by city and sort it by most to least:&lt;br /&gt;&lt;/dd&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dd&gt;SELECT city, COUNT(*)&lt;/dd&gt;&lt;dd&gt;FROM table&lt;/dd&gt;&lt;dd&gt;GROUP BY city&lt;/dd&gt;&lt;dd&gt;ORDER BY COUNT(*) DESC&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="having"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;HAVING&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The HAVING clause specifies the specific conditions to group by (optional).  For example you may want to group your results by City but only display those Cities that have more than 10 matches.  You would do this by saying "HAVING COUNT(*) &gt; 10".  HAVING always comes after the GROUP BY clause.&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="orderby"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;ORDER BY&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The ORDER BY clause specifies whether to output the query result in ascending or descending order.  This is often used to sort your results in alphabetical or numerical sequence.&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt;&lt;a name="count"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;COUNT&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;The COUNT keyword is used in the SELECT or HAVING clauses.  This allows you to give a total count of something.  This is also referred to as an "aggregate".  This means you are grouping things together and displaying aggregated data on the group instead of listing each individual record.  Other aggregate keywords are SUM, MIN, MAX, etc.  COUNT gives you the count of records, SUM gives you the SUM of the values in a column, MIN gives you the minimum value, MAX gives you the maximum value.  Here is an example of the COUNT usage:&lt;br /&gt;&lt;br /&gt;SELECT COUNT(*)&lt;br /&gt;FROM table_name&lt;br /&gt;WHERE last_name = 'SMITH'&lt;br /&gt;&lt;br /&gt;This will give you a count of all records with the last name of 'SMITH'. Notice the (*) after the keyword.  This means you want to give a count of all records meeting the criteria in your WHERE clause.   But you may also see COUNT(1) which also means give a total number of the records.  The COUNT keyword is very useful in giving reports or breakdowns of various columns.  For example if you want a breakdown of all records you have for each eye_color (if you have this column in your table) you could use the following:&lt;br /&gt;&lt;br /&gt;SELECT eye_color, COUNT(1)&lt;br /&gt;FROM table_name&lt;br /&gt;GROUP BY eye_color&lt;br /&gt;ORDER BY COUNT(1) desc&lt;br /&gt;&lt;br /&gt;Notice the GROUP BY and ORDER BY keywords used as well.  This will show you the count by eye_color and will sort it by the the highest number to the lowest.&lt;br /&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;a href="http://www.w3schools.com/sql/sql_intro.asp"&gt;Here is another simple introduction to SQL.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;script&gt;reddit_url='http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html'&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://reddit.com/button.js?t=1"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-7627231476003625339?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7627231476003625339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7627231476003625339'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/oracle-sql-script-tutorial.html' title='An SQL Introduction and Tutorial'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1981049854370670839</id><published>2007-01-05T11:44:00.000-08:00</published><updated>2007-01-08T10:34:14.897-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='L. Ron Hubbard'/><category scheme='http://www.blogger.com/atom/ns#' term='Scientology'/><title type='text'>Filmed Interview with L. Ron Hubbard</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.scientology.org/interview/index.htm"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://lrh-books.com/TIS/img/dvd_shot.gif" alt="" border="0" /&gt;&lt;/a&gt;The &lt;a href="http://www.scientology.org/"&gt;Church of Scientology&lt;/a&gt; just released the only video interview with the founder of Scientology, L. Ron Hubbard.  This answers all common questions on Scientology:&lt;br /&gt;&lt;br /&gt;"What is Scientology?"&lt;br /&gt;   "What is the Mind?"&lt;br /&gt;      "How did L. Ron Hubbard come to develop Scientology?"&lt;br /&gt;      "How did he make these discoveries?"&lt;br /&gt;      "What is an auditor?"&lt;br /&gt;      "Why is Man on this planet and what is his purpose here?"&lt;br /&gt;      "Why is Man basically good?"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.scientology.org/interview/index.htm"&gt;This site&lt;/a&gt; also has a running tally of how many of these DVDs are now in circulation - over 100,000 in the first week after its release!&lt;br /&gt;&lt;script&gt;reddit_url='http://mycodeblog.blogspot.com/2007/01/filmed-interview-with-l-ron-hubbard.html'&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://reddit.com/button.js?t=1"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1981049854370670839?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1981049854370670839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1981049854370670839'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/filmed-interview-with-l-ron-hubbard.html' title='Filmed Interview with L. Ron Hubbard'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-418474841256488285</id><published>2007-01-05T10:30:00.000-08:00</published><updated>2007-01-05T10:34:06.510-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Stewards'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><category scheme='http://www.blogger.com/atom/ns#' term='Matching Algorithms'/><title type='text'>CDI - Matching Engines</title><content type='html'>&lt;a href="http://searchdatamanagement.techtarget.com/originalContent/0,289142,sid91_gci1215575,00.html"&gt;Another tip&lt;/a&gt;&lt;a href="http://searchdatamanagement.techtarget.com/originalContent/0,289142,sid91_gci1215575,00.html"&gt; from CDI expert Jill Dyche&lt;/a&gt; on the subject of matching engines and whether or not to base your CDI software decision entirely on the quality of the match engine:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Here are some other things to keep in mind when assessing matching engines: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Test with lots of real data; compare and benchmark results. Organizations testing CDI hubs should test with as much data as possible to get a more real-world test of the system, Levy said. DataFlux's Gidley also recommends profiling data sources to assess the accuracy and completeness of data. This can help with tuning the matching engine's business rules. For example, if 50% of the phone number fields in a database are empty, it might not be a good matching attribute.&lt;/li&gt;&lt;li&gt;Consider the interface. When a system isn't sure whether records match, it generally refers the matter to a human data steward to make the call. So the interface for data stewards is an important part of a tool decision, Gidley said. &lt;/li&gt;&lt;li&gt;Think globally and futuristically. Language differences, industry-specific requirements, and future infrastructure plans -- such as moving to a service-oriented architecture -- can also affect matching engine choices, according to Dyche. &lt;/li&gt;&lt;/ul&gt;Overall, Dyche said, the matching engine should be only a part of the overall CDI tool choice.  &lt;p&gt;"Matching is one of many decisions to make," Dyche said. "When we see these vendor bake-offs and companies get down to [which CDI vendor] has the most accurate match, that's still only one component of the decision." &lt;/p&gt;So, in some cases, the CDI tool with the most accurate matching engine might not be the final choice. Companies must consider the big picture, including data volumes, processing speed and functional requirements, Dyche said.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-418474841256488285?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/418474841256488285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/418474841256488285'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/cdi-matching-engines.html' title='CDI - Matching Engines'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6127734359885387956</id><published>2007-01-05T10:21:00.000-08:00</published><updated>2007-01-07T22:27:49.948-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Stewards'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><category scheme='http://www.blogger.com/atom/ns#' term='Matching Algorithms'/><title type='text'>CDI - Project Research</title><content type='html'>A great post about CDI project research and what you should ask yourself before diving too deep into the CDI pool covers the following:&lt;br /&gt;&lt;blockquote&gt;What is the "need, pain or problem" that we're trying to solve?&lt;br /&gt;What are our requirements, both from a business as well as a functional perspective?&lt;br /&gt;What data sources have critical customer information in them?&lt;br /&gt;What's the current system of record for customer data?&lt;br /&gt;Who are the current de facto data owners in the company?&lt;br /&gt;What are the ideal matching algorithms for our particular data?&lt;br /&gt;What is the potential impact on existing technology architecture and systems?&lt;br /&gt;How and when will data stewardship be addressed?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://searchdatamanagement.techtarget.com/originalContent/0,289142,sid91_gci1168278,00.html"&gt;"Eight must-ask questions for CDI projects by Jill Dyche &lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;script&gt;reddit_url='http://mycodeblog.blogspot.com/2007/01/cdi-project-research.html'&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://reddit.com/button.js?t=1"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6127734359885387956?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6127734359885387956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6127734359885387956'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/cdi-project-research.html' title='CDI - Project Research'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4291833680313769826</id><published>2007-01-04T19:44:00.000-08:00</published><updated>2007-07-26T19:24:33.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mailing'/><category scheme='http://www.blogger.com/atom/ns#' term='ISAL'/><category scheme='http://www.blogger.com/atom/ns#' term='Downloads'/><title type='text'>ISAL Rate Calculator - Download it here</title><content type='html'>If you are a mailer who has ever sent out ISAL (International Surface to Air Lift) mailings you know the postal form can be quite a pain to fill out.  To simplify this for myself and for anyone else who is interested, I've made an Excel spreadsheet that contains the latest ISAL rates for each ISAL Zone as well as the calculations for the per piece and per pound costs.  This is set up so all you have to do is enter the weight of the mailpiece (in ounces) and enter how many pieces are going to each ISAL Zone.   Here is a view of this tool that you can download below and use:&lt;br /&gt;&lt;iframe src="http://spreadsheets.google.com/pub?key=pV9A9Mu1eGpbEU0RZCvQ0Iw&amp;output=html&amp;amp;gid=0&amp;single=true&amp;amp;widget=true" frameborder="0" height="500" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://spreadsheets.google.com/pub?key=pV9A9Mu1eGpbEU0RZCvQ0Iw&amp;amp;output=xls"&gt;Download the ISAL Rate Calculator here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just enter the weight and pieces for each ISAL Zone in yellow.  If you get an ISAL Discount you can edit this cell as well.  Your final ISAL cost will show up in the blue cell. &lt;br /&gt;&lt;br /&gt;This can be used to help you fill in the USPS Postal Form for International mail (&lt;a href="http://www.usps.com/forms/_pdf/ps3650.pdf"&gt;PS FORM 3650&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;If you downloaded this ISAL Rate Calculator and it worked for you, let me know.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.usps.com/ratecase/intlrates/imm_rates.1.9.html"&gt;Here is the current link&lt;/a&gt; to the USPS ISAL Page where the latest rates for each ZONE can be found.  Note there is a new ISAL Zone for Australia as of May 14th, 2007.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4291833680313769826?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4291833680313769826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4291833680313769826'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/isal-rate-calculator-download-it-here.html' title='ISAL Rate Calculator - Download it here'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-5241507426206256823</id><published>2007-01-02T09:54:00.000-08:00</published><updated>2007-01-07T22:28:29.476-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Stewards'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><category scheme='http://www.blogger.com/atom/ns#' term='Matching Algorithms'/><title type='text'>Matching Algorithms for CDI</title><content type='html'>It generally understood that between 2%-5% of a customer database will contain undetected duplicates after a standard merge/merge routine is run.  As stated in &lt;a href="http://www.crm2day.com/library/50048.php"&gt;CRM Today&lt;/a&gt;, most merge-purge algorithms are 20 years old...&lt;br /&gt;&lt;blockquote&gt;Most merge/purge processes were developed over 20 years ago and were never conceived to recognize the fluidity of movement, name change, and channels in which customers interact today. Even the most advanced de-duplication processes use character based logic and look up tables that are ill-equipped to assess the totality of a customers’ name and address permutations that accumulate through multiple customer interaction channels. These processes are easily deceived by minor variations in the name and address elements such as married/maiden, nick names, typos, and mis-keys. A typical file will contain 2 to 5% unidentified duplicate customers after a standard merge/purge process.&lt;/blockquote&gt;Instead of the common approach of only using one matching algorithm (I am guilty of this one) modern approaches are utilizing many algorithms to isolate duplicate records.&lt;br /&gt;&lt;blockquote&gt;No single algorithm can efficiently and effectively power a matching technology due to the multiple culprits of customer identity and data quality error. Advanced solutions incorporate not one, but several advanced matching algorithms, each designed to group records into temporal data sets for the purpose of bringing visibility to distinct patterns of repetitious error. Once patterns of error are identified, the records can be referenced to consumer data sources, allowing for the remediation of the error and recognition of the true identity of the customer.&lt;/blockquote&gt;An integral part of any CDI product is its matching capability.  Match rules will vary from organization to organization so using a standard template or built-in rules usually will not suffice if you want thorough duplicate detection and handling.&lt;br /&gt;&lt;br /&gt;Firstlogic (now Business Objects) has a sophisticated match engine and beyond the standard match capabilities are "Extended Matching" which allows the user to set up custom rules for different match scenarios.  I believe that simply using rule based matching you can solve 80% of your data consolidation issues.&lt;br /&gt;&lt;br /&gt;Companies like Purisma or Siperian offer much more sophisticated match engines that utilize match clusters and larger "match footprints" which ease the process, but for the most part, if you know what you are trying to do, any rule based matching engine will do.  And remember:&lt;br /&gt;&lt;blockquote&gt;"The computer is no better than the organization that feeds it." - &lt;a href="http://www.scientologytoday.org/press/701012300081_scn-int.html"&gt;L. Ron Hubbard&lt;/a&gt;&lt;/blockquote&gt;The moral is first work out all your match rules and then see if you can solve your problems  using your existing match engine software before looking elsewhere to solve these match related problems.&lt;br /&gt;&lt;script&gt;reddit_url='http://mycodeblog.blogspot.com/2007/01/matching-algorithms-for-cdi.html'&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://reddit.com/button.js?t=1"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-5241507426206256823?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/5241507426206256823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/5241507426206256823'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2007/01/matching-algorithms-for-cdi.html' title='Matching Algorithms for CDI'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-8997378005392443435</id><published>2006-12-31T17:34:00.000-08:00</published><updated>2006-12-31T17:37:48.217-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Awk'/><title type='text'>Awk Tab Delimiter (FS="\t")</title><content type='html'>Quick guide to Awk Field Separators (FS):&lt;br /&gt;&lt;br /&gt;Tab Delimited:    FS="\t"&lt;br /&gt;Comma Delimited:    FS="," (Beware of CSV files.  &lt;a href="http://mycodeblog.blogspot.com/2006/12/how-to-parse-csv-file-in-awk.html"&gt;See earlier post on this.&lt;/a&gt;)&lt;br /&gt;Pipe Delimited:      FS="|"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-8997378005392443435?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8997378005392443435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8997378005392443435'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/awk-tab-delimiter-fst.html' title='Awk Tab Delimiter (FS=&quot;\t&quot;)'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2863284633841425121</id><published>2006-12-29T18:04:00.000-08:00</published><updated>2007-01-07T22:31:02.776-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>CDI - Build or Buy?</title><content type='html'>Organizations with a central HQ and regional offices, must have some form of CDI in order to accurately understand their customer base.  Otherwise you are left with disparate sets of disrelated data, unlinked and unconsolidated, making analysis and effective marketing nearly impossible.  So once CDI as a topic is understood, the next question becomes - Build or Buy?  After travelling down the "build" path for 2 years I wish I had researched and implemented a commercial product just to avoid the headaches alone...&lt;br /&gt;&lt;br /&gt;However, with all that water under the bridge, it would be nice to be able to simply "plug-in" the missing parts to make my CDI solution complete. &lt;br /&gt;&lt;br /&gt;I recommend buying a solution outright, even though the cost may be overwhelming at first, it will pay off if your organization is doing any volume of mailing - and will probably pay itself back in postage saved alone.&lt;br /&gt;&lt;br /&gt;Here are the  key questions that should be asked of a CDI vendor if you are looking to buy:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;    * Since systems rarely share identifiers, does the solution score and match data taking advantage of all attributes that aid in the matching process using likelihood statistical theory for the highest levels of accuracy? State-of-the-art systems use "probabilistic algorithms" to compare attributes one by one and produce a weighted score for each pair of records. The higher the score, the more likely the records represent the same person. This method improves matching accuracy by using weights that are specific to an organization's data.&lt;br /&gt;&lt;br /&gt;   * Does the vendor provide analysis based on your own real-world data? Premier providers conduct frequency-based file analysis to provide weighting and thresholds specific to a customer's data. By using your own data, a better match is possible than by using generic criteria and arbitrary weights for each attribute. The data can be studied and tuned to recognize that a match on John Smith in the Bronx, NY, contains a more trusted matching value than a match on John Smith in Minnesota.&lt;br /&gt;&lt;br /&gt;   * Does the provider offer a way to capture and maintain a complete history of changes to attribute values? Such a method of "complete versioning" improves accuracy and has the ability to make the correct decisions on linking data even as it constantly changes due to marriage, divorce, new address, new phone number, etc.&lt;br /&gt;&lt;br /&gt;   * Does the solution enable you to establish the right accuracy and identification levels for your application and budget? Managing data quality is a business decision, so consider whether you need automated identification of results to ensure faster customer service, for example, or a solution that allows manual review of data to capture fraudulent customer activity, such as duplicate insurance claims.&lt;br /&gt;&lt;br /&gt;   * Can the solution overcome multiple identifications and data discrepancies across sources? Common obstacles to customer identity include transpositions, misspellings, nicknames, aliases, address inconsistencies and identity misrepresentations, all of which can occur when customer data flows into the company through multiple touchpoints. A strong CDI product should be able to keep data up to date and synchronized across the enterprise.&lt;br /&gt;&lt;br /&gt;   * Can you use the same matching technology in order to maintain all your relationships: for example, individuals, households and companies?&lt;br /&gt;&lt;a href="http://www.dmreview.com/article_sub.cfm?articleID=1034821"&gt;(read rest of article here)&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;script&gt;reddit_url='http://mycodeblog.blogspot.com/2006/12/cdi-build-or-buy.html'&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://reddit.com/button.js?t=1"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2863284633841425121?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2863284633841425121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2863284633841425121'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/cdi-build-or-buy.html' title='CDI - Build or Buy?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4185572476847739878</id><published>2006-12-29T14:38:00.000-08:00</published><updated>2006-12-29T15:39:56.431-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Stewards'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>How to create that Golden Master</title><content type='html'>The concept of a centralized view or 360 degree view of a customer is often strived for but the "name, want and get" is not always figured out.  Most companies will name what they are looking for, some fall short in getting the board to want the solution and many lose it on figuring out how to get it done.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.iw.com/node/364"&gt;VP of Siperian&lt;/a&gt;&lt;a href="http://www.iw.com/node/364"&gt; describes&lt;/a&gt; the need for assigning reliability factors to the different sources of data as some sources may have more accurate data:&lt;br /&gt;&lt;blockquote&gt;In order to deliver a “golden” or master record for each customer and its various affiliations, a system must dynamically assess reliability across all data sources – based on user-defined parameters and intrinsic data properties – and ensure that only the most reliable content survives at the cell-level of the master record. For instance, if the call center begins collecting email addresses when confirming orders, this data attribute may be more reliable than the email addresses submitted by customers at the website. The ability to rapidly adjust the system to survive the call center email address over the website email address is a critical architectural component of any CDI system. Moreover, such cell-level survivorship for data reliability must be built into the core product architecture and should not be sacrificed as the customer hub scales to millions of customers. Ultimately, how well the end-users accept a customer data hub depends on sustaining high level of data reliability, even as the hub grows in volume or as new data sources are added.&lt;br /&gt;&lt;/blockquote&gt;In looking into different CDI solutions, you must look into how the data hub is structured, if they have configurable rules for loading and merging and if they have a robust Data Steward.  Realize that data stewardship is the way all 'exceptions' get handled.  If you do not separate out the confident updates from the questionable ones, you will have a poor foundation that will eventually lead to a polluted database.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;A business cannot implement an operational customer hub in the absence of data stewardship ― as soon as data begins to flow through the supported business processes, exceptions and errors begin to flow as well. Therefore, any customer hub acting as a data integration platform must offer business capabilities to monitor and handle such exceptions either by business analysts and end-users or by anyone designated as a data steward.&lt;br /&gt;...&lt;br /&gt;Often managing such exceptions requires full user interfaces for complex data stewardship tasks such as investigating the history and lineage of certain master records in question. This may be the only way to ensure that the user acceptance and data hub reliability remains high. In other circumstances, an enterprise may choose to build a specific user interface against the programming interfaces of the master hub in order to suit its needs. In either case, an adaptive solution must deliver rules-based configurability with best-in-class data stewardship consoles as well as programming interfaces to handle all data exception and reliability needs.&lt;br /&gt;&lt;/blockquote&gt;I've worked on custom CDI projects before CDI was called CDI and can attest that the Data Stewardship interface will make or break your CDI project.  This should not be underestimated.&lt;br /&gt;&lt;br /&gt;The last point data export back to original sources.  This is where you exchange your centralized view with the sources and provide them with your expanded view to assist them in better understanding your customers.  If you have done a good  job, they will love you, if you haven't you will be public enemy number one.  They think their data is "better than yours", "why did you change my address", "you merged two customers into the same one!" and other rantings will be sent your way if you have not done a good job.&lt;br /&gt;&lt;br /&gt;You should have a well  thought out strategy including what data elements you will send back to sources and you should allow them to decide whether or not they want your data.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Often, certain data attributes (such as privacy preferences) need central control and exception handling whereas other attributes are best left under local management. In addition, security and access to data attributes in the hub will vary by individual roles within each organization and by organization at large. In fact, to support the broad range of business requirements across business lines, there may be multiple data governance regimes required for different data attributes, all within a single enterprise.&lt;br /&gt; &lt;p&gt;An adaptive approach must be based on a distributed architecture whereby multiple hubs can be deployed to integrate different data sources and support different processes, yet be able to share data across one another based on any number of hub-and-spoke or peer-to-peer governance regimes. This offers a line of business yet another dimension of flexibility to share some but not all data – each based on its own data reliability and governance policies. With full rules-based configurability and data stewardship interfaces, a broad range of data governance regimes can be supported.&lt;/p&gt;&lt;p&gt;In summary, data must be the central focus of any CDI project, and data reliability, stewardship and governance regime must never be an after-thought of a comprehensive CDI solution. Enterprises must closely review the details of a vendor’s offering in this area to reduce their risk of project failure and the total cost of CDI implementation.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;script&gt;reddit_url='http://mycodeblog.blogspot.com/2006/12/how-to-create-that-golden-master.html'&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://reddit.com/button.js?t=3"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4185572476847739878?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4185572476847739878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4185572476847739878'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/how-to-create-that-golden-master.html' title='How to create that Golden Master'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4085972264587707974</id><published>2006-12-22T12:01:00.001-08:00</published><updated>2006-12-29T12:50:59.721-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CDI'/><title type='text'>Customer Data Integration (CDI) Can't Decipher It</title><content type='html'>I'm drowning in the sea of Customer Data Integration solutions, Data Librarians, Data Stewards, Registry hubs, Persistant hubs or Hybirds. Above is a good review of the basics of the problem domain. Key players are the Oracle Customer Data Hub, Siperian, Purisma and possibly the recent Sun aquisition - SeeBeyond.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;blockquote&gt;&lt;img src="http://www.oracle.com/data_hub/cdh_central_data.gif" height="136" width="274" /&gt;&lt;br /&gt;&lt;br /&gt;"Oracle leads in customer data integration. Oracle has assembled the broadest set of components, from data quality, to matching, to customer key management, to process integration, to ongoing monitoring and management."—Forrester Research&lt;br /&gt;&lt;br /&gt;Customer knowledge is the lifeblood of the enterprise. And customer knowledge begins with a unified, reconciled source of high-quality customer data—provided only by the Oracle Customer Data Hub. &lt;div id="collateral"&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;Internet seminar:&lt;/b&gt; &lt;a href="http://www.oracle.com/goto/singleview"&gt;Get A Single View of Your Customers&lt;/a&gt; &lt;a ref="http://www.oracle.com/goto/singleview"&gt;&lt;img alt="Play" src="http://oracleimg.com/admin/images/play_red.gif" align="bottom" border="0" height="11" width="14" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;Internet seminar:&lt;/b&gt; &lt;a href="http://www.oracle.com/goto/customerdatapolitics"&gt;Practical Guide to Customer Data Politics&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Oracle Customer Data Hub is a fully integrated customer data management solution that centralizes, de-duplicates, and enriches your customer data, continuously synchronizing with all your data sources, to give you a single view of your customers. As new data comes in, reporting accuracy grows, analytics become more valuable, employee productivity increases, and day-to-day customer relationships improve. &lt;/blockquote&gt;&lt;/div&gt;Reading Jill Dyche's new book, &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0471916978/ref=nosim/datawarehousec0e/"&gt;&lt;i&gt;Customer Data Integration&lt;/i&gt;&lt;/a&gt; is my life preserver. Talking to salespeople has led to further confusion and contradictory statements about each others products.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.destinationcrm.com/articles/default.asp?ArticleID=6106"&gt;Gartner's findings&lt;/a&gt; of May 2006 on CDI may already be outdated with the fastly evolving market.&lt;br /&gt;&lt;br /&gt;&lt;script&gt;reddit_url='http://mycodeblog.blogspot.com/2006/12/oracle-customer-data-hub.html'&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://reddit.com/button.js?t=1"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4085972264587707974?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4085972264587707974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4085972264587707974'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/oracle-customer-data-hub.html' title='Customer Data Integration (CDI) Can&apos;t Decipher It'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-5029951917302874974</id><published>2006-12-21T14:59:00.000-08:00</published><updated>2006-12-21T15:32:13.155-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>World's Oldest Computer - Antikythera Mechanism</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.grand-illusions.com/images/antik2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 165px; height: 213px;" src="http://www.grand-illusions.com/images/antik2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ancient computer found off the coast of Antikythera, Greece is estimated to have been built over 2000 years ago.   This makes it the world's oldest known computing device.&lt;br /&gt;&lt;br /&gt;Above is a reconstruction of this device is believed to look like.  There are over two thousand greek characters inscribed on this machine which helped archeologists decipher what it did and how it worked.&lt;br /&gt;&lt;br /&gt;From a recent article in &lt;a href="http://www.allheadlinenews.com/articles/7005903980"&gt;All Headlines News&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;p&gt;"...a device known as the Antikythera (an-tee-KITH-air-uh) mechanism, a device consisting of thirty bronze gears with approximately two-hundred-twenty-five teeth, was discovered off the Greek Island of Antikythera. &lt;/p&gt;&lt;p&gt;The Antikythera mechanism, which was made in Greece, is the earliest known computer, though research has shown that the mechanism was not unique for its time. Other instruments similar to the Antikythera have been mentioned in historical documents written in first-century B.C. by Cicero and Posidonius, the teacher of Cicero.&lt;/p&gt;&lt;p&gt;Scientists believe the Antikythera mechanism may have been used in the field of astronomy, showing the motion of the planets and computing eclipses of the sun and moon."&lt;/p&gt;&lt;/span&gt;&lt;/blockquote&gt;Here is a photo of what one of the pieces of this computer actually look like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.wired.com/gadgets/images/antikythera_main_fragment.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 166px; height: 176px;" src="http://blog.wired.com/gadgets/images/antikythera_main_fragment.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Other Antikythera links:&lt;br /&gt;&lt;br /&gt;&lt;a aiotitle="Reconstuction of Antikythera Mechanism" href="http://www.grand-illusions.com/antikyth.htm"&gt;Reconstuction of Antikythera Mechanism&lt;/a&gt;&lt;br /&gt;&lt;a aiotitle="Antikythera Animation of gears" href="http://www.etl.uom.gr/mr/index.php?mypage=antikythera_ani"&gt;Antikythera Animation of gears&lt;/a&gt;&lt;br /&gt;&lt;a aiotitle="Pictures of mechanism" href="http://www.math.sunysb.edu/%7Etony/whatsnew/column/antikytheraI-0400/kyth6.html"&gt;Pictures of mechanism&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.giant.net.au/users/rupert/kythera/kythera4.htm"&gt;An Ancient Greek Computer&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.wired.com/gadgets/2006/11/imaging_the_ant.html"&gt;Oldest Known Computer&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-5029951917302874974?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/5029951917302874974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/5029951917302874974'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/worlds-oldest-computer-antikythera.html' title='World&apos;s Oldest Computer - Antikythera Mechanism'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-3508809570262381578</id><published>2006-12-18T19:31:00.000-08:00</published><updated>2006-12-18T19:41:08.619-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Awk'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Oracle SQL Function - INSTR()</title><content type='html'>I found it.  The use of INSTR() simulates the AWK Function INDEX() and does a search of the first argument to see if the second argument exists and then returns the position where this is first found.   Here is the syntax:&lt;br /&gt;&lt;blockquote&gt;   &lt;pre&gt;INSTR(str, chars[,s[,n]])&lt;br /&gt;Find the 'n'th occurence of 'chars' in 'str'&lt;br /&gt;Starting at position 's'&lt;br /&gt;n and s default to 1&lt;/pre&gt;  &lt;/blockquote&gt;This was decribed in the following page which lists out all the Oracle SQL Functions and is a very useful link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ss64.com/orasyntax/functions.html"&gt;Oracle SQL Functions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To see a full listing of all Oracle SQL Functions you can run the following query:&lt;br /&gt;&lt;span class="body"&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;SELECT distinct object_name &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; FROM &lt;/span&gt;&lt;a style="font-family: courier new;" href="http://www.ss64.com/orad/ALL_ARGUMENTS.html"&gt;all_arguments&lt;/a&gt;&lt;span style="font-family: courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; WHERE package_name = 'STANDARD'; &lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-3508809570262381578?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/3508809570262381578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/3508809570262381578'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/oracle-sql-function-instr.html' title='Oracle SQL Function - INSTR()'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6347161298781134384</id><published>2006-12-18T18:51:00.000-08:00</published><updated>2006-12-18T19:42:59.974-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Awk'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Looking for Index() function in Oracle SQL</title><content type='html'>From my blog you probably can tell I have an infatuation with &lt;a href="http://mycodeblog.blogspot.com/search/label/Awk"&gt;Awk&lt;/a&gt;.  Well today I was trying to work out a problem in Oracle SQL where the index() function would have worked perfectly.  I'm checking around to find if there is any built in function that searches an existing column for a string and returns the starting point if it exists.  Oracle SQL does have the substr() function which I've found quite useful...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6347161298781134384?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6347161298781134384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6347161298781134384'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/looking-for-index-function-in-oracle.html' title='Looking for Index() function in Oracle SQL'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4309508669627158458</id><published>2006-12-06T12:18:00.000-08:00</published><updated>2006-12-06T12:19:17.471-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Awk'/><title type='text'>Download Free Awk Book</title><content type='html'>H&lt;a href="http://www.computer-books.us/downloads/gawk.zip"&gt;ere is a link to download a free copy of the Gawk - Effective Programming Language book. &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4309508669627158458?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4309508669627158458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4309508669627158458'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/download-free-awk-book.html' title='Download Free Awk Book'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2527977468245600190</id><published>2006-12-06T11:51:00.000-08:00</published><updated>2006-12-06T12:00:40.666-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Awk'/><title type='text'>Awk Executables for Windows</title><content type='html'>Here are some free downloads of AWK that you can install on a windows machine&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe"&gt;AT&amp;amp;T Original Awk&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.klabaster.com/freeware.htm"&gt;Other Awk Downloads&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2527977468245600190?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2527977468245600190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2527977468245600190'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/awk-executables-for-windows.html' title='Awk Executables for Windows'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1481230846022371441</id><published>2006-12-06T11:28:00.001-08:00</published><updated>2006-12-29T13:00:35.940-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Awk'/><title type='text'>What is AWK?</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;code&gt;Now that I am writing about AWK I thought I should start off with a descriptive definition of this language. &lt;a href="http://www.softpanorama.org/Tools/awk.shtml"&gt;(See full description here)&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;awk&lt;/code&gt; is a simple and elegant pattern scanning and processing language. It was created in late 70th of the last century. The name was composed from the initial letters of three original authors Alfred V. Aho, Brian W. Kernighan, and Peter J. Weinberger. It is commonly used as a command-line filter in pipes to reformat the output of other commands. It's the precursor and the main inspiration of Perl.  Although originated in Unix it is available and widely used in Windows environment too. It takes two inputs: data file and command file. The command file can be absent and necessary commands can be passed as augments. As Ronald P. Loui aptly noted &lt;i&gt;&lt;b&gt;awk is very underappreciated language:&lt;br /&gt;&lt;/b&gt;&lt;/i&gt; &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  what language we use in our undergraduate AI programming class. That's understandable. We use GAWK. GAWK, Gnu's version of Aho, Weinberger, and Kernighan's old pattern scanning language isn't even viewed as a programming language by most people. Like PERL and TCL, most prefer to view it as a "scripting language." It has no objects; it is&lt;br /&gt; not functional; it does no built-in logic programming. Their surprise turns to puzzlement when I confide that (a) while the students are allowed to use any language they want; (b) with a single exception, the best work consistently results from those working in GAWK. (footnote: The exception was a PASCAL programmer who is now an NSF graduate fellow getting a Ph.D. in mathematics at Harvard.) Programmers in C, C++, and LISP haven't&lt;br /&gt; even been close (we have not seen work in PROLOG or JAVA).&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The main advantage of AWK is that unlike Perl and other "scripting monsters" that it is very slim without feature creep so characteristic of Perl and thus it can be very efficiently used with pipes. Also it has rather simple, clean syntax and like much heavier TCL can be used with C for "dual-language" implementions.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;&lt;script&gt;reddit_url='http://mycodeblog.blogspot.com/2006/12/what-is-awk.html'&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://reddit.com/button.js?t=3"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1481230846022371441?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1481230846022371441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1481230846022371441'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/what-is-awk.html' title='What is AWK?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2822848904755999292</id><published>2006-12-06T11:26:00.001-08:00</published><updated>2006-12-06T11:47:20.928-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Awk'/><title type='text'>How to parse a CSV file in AWK</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Okay, so I am not new to Awk - been using it for 3 years. One delimeter type I tend to stay away from is .csv files. I deal with a lot of address data so if you try to do the obvious thing and set the FS = "," you are going to run into a lot of incorrectly parsed fields as address data sometimes includes commas in the street address.&lt;br /&gt;&lt;br /&gt;So when I am dealing with a .csv file it is going to have quotes around each field and then a comma between each field.&lt;br /&gt;&lt;br /&gt;So then you might say, why not set up the Field Separator like this: FS = "/",/"" which translates into the delimiter looking like ",".&lt;br /&gt;&lt;br /&gt;Great, but the first field $1 will be left with a quote in the beginning as awk was not programmed to understand anything differently.&lt;br /&gt;&lt;br /&gt;So I am looking for a simple way to parse .csv files using awk.&lt;br /&gt;&lt;br /&gt;Here is all I've found so far:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://web.sfc.keio.ac.jp/%7Emasudako/edu/computer/awkward/csv.html"&gt;Handling CSV data&lt;/a&gt; and a &lt;a href="http://web.sfc.keio.ac.jp/%7Emasudako/edu/computer/awkward/readcsv1.awk"&gt;complicated example&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://groups.google.com/group/comp.lang.awk/browse_thread/thread/d5a305d59dd31bb9/86961514b570fff9%2386961514b570fff9"&gt;Google Group on AWK CSV parsing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/comp.lang.awk/browse_thread/thread/42bc6ed3893bd6bf/f93f1876c264f3dd%23f93f1876c264f3dd"&gt;Another Thread related to AWK CSV parsing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From all of this the most workable solution so far is:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="fixed_width"  style="font-family:Courier, Monospaced;"&gt;function setcsv(str, sep) {&lt;br /&gt;  gsub(/[\\"]"/, "\035", str)&lt;br /&gt;  while (match(str, /"[^"]*"/)) {&lt;br /&gt;      middle = substr(str, RSTART+1, RLENGTH-2)&lt;br /&gt;      gsub(sep,"\036", middle)&lt;br /&gt;      str = substr(str, 1, RSTART-1) middle substr(str, RSTART+RLENGTH)&lt;br /&gt;  }&lt;br /&gt;  if (index(str, "\"")) {&lt;br /&gt;     if ((getline) &lt;= 0)&lt;br /&gt;       return 0&lt;br /&gt;     setcsv(str "\n" $0, sep)&lt;br /&gt;  }&lt;br /&gt;  else {&lt;br /&gt;    gsub("\035", "\"", str)&lt;br /&gt;    gsub(sep, "\034", str)&lt;br /&gt;    gsub("\036", sep, str)&lt;br /&gt;    $0 = str&lt;br /&gt;    return 1&lt;br /&gt;  }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="fixed_width"  style="font-family:Courier, Monospaced;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2822848904755999292?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2822848904755999292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2822848904755999292'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/how-to-parse-csv-file-in-awk.html' title='How to parse a CSV file in AWK'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6567974625168343611</id><published>2006-12-06T11:10:00.001-08:00</published><updated>2006-12-06T11:48:04.236-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Awk'/><title type='text'>Introduction to Awk</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I'll be posting a bit more on AWK as this is a language I use all the time and I am constantly referring back to my MKS Toolkit manual for that certain syntax or to see how exactly that index command works again. Below are some useful links of AWK manuals or tutorials to get started using AWK.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.vectorsite.net/tsawk.html"&gt;An Awk Primer&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.hmc.edu/qref/awk.html"&gt;Getting Started with Awk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gnu.org/software/gawk/manual/gawk.html"&gt;The GNU Awk User's Guide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linuxlaboratory.org/index.php?title=Awk_is_your_friend"&gt;Awk is your friend&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'll get more into the FS command and try to overcome some of the annoyances I've had with it in my next posts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="poweredbyperformancing"&gt;powered by &lt;a href="http://performancing.com/firefox"&gt;performancing firefox&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6567974625168343611?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6567974625168343611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6567974625168343611'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/introduction-to-awk.html' title='Introduction to Awk'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6415108445553851522</id><published>2006-12-05T00:38:00.001-08:00</published><updated>2006-12-05T09:41:08.786-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scientology'/><title type='text'>Scientology Disaster Response Team Asking for Volunteers</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Typhoon Durian struck the coast of the Philippines this past Thursday and already as many as 1,000 are presumed dead in the aftermath. The Scientology Disaster Response Team is activating any and all volunteers who wish to help aid those in need in the Philippines.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.volunteerministers.org/news/articles/9.html"&gt;Here is a link to the Scientology Disaster Response website&lt;/a&gt; which gives directions on how to help whether this is through donations or volunteering yourself.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6415108445553851522?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6415108445553851522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6415108445553851522'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/scientology-disaster-response-team.html' title='Scientology Disaster Response Team Asking for Volunteers'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-6483521272441700584</id><published>2006-12-01T01:39:00.000-08:00</published><updated>2006-12-01T01:57:20.078-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQL Plus Delimited Output File</title><content type='html'>Ad hoc queries anyone? &lt;br /&gt;&lt;br /&gt;Something that has always been a pain is when you need a fast report generated from your latest SQL script.   You probably just resort to executing the query in TOAD or another query tool, and then saving it off to a file.   That is about 5 mouse clicks too many and you just wish you could click a button to run your script and dump out the results to a nicely formatted text file.  Using SQL Plus and a batch script, you can set up an ad hoc query tool for yourself that dumps out the results to a delimited output.  This is actually quite simple:&lt;br /&gt;&lt;br /&gt;You need three files, a) the SQL  query you want to run, b) the  SQLPlus script that will run your query and c) a batch program to run your SQLPlus script.&lt;br /&gt;&lt;br /&gt;Here is how I did it:&lt;br /&gt;&lt;br /&gt;a) queryOut.sql - This contains a query set up for  pipe-delimited output.  You can change the delimiter to whatever you wish.  Here is a sample query - &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;SELECT field1    || '|' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       field2   &lt;/span&gt;&lt;span style="font-family: courier new;"&gt;|| '|' ||&lt;br /&gt;        field3    &lt;/span&gt;&lt;span style="font-family: courier new;"&gt;|| '|' ||&lt;br /&gt;        field4&lt;br /&gt;  FROM {table}&lt;br /&gt; WHERE {criteria};&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;b)  queryToFile.sql - This contains the SQL Plus script including formatting options so you can dump out a file with your results and no other fluff.  Here are the settings I used -&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;set termout off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;set feedback off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;set verify off&lt;br /&gt;set echo off&lt;br /&gt;set pagesize 0&lt;br /&gt;set linesize 200&lt;br /&gt;set trimspool on&lt;br /&gt;column dt new_Value mydate noprint&lt;br /&gt;select to_char(sysdate, 'YYYYMMDD') dt from dual;&lt;br /&gt;&lt;br /&gt;spool rpt&amp;mydate..txt&lt;br /&gt;@queryOut.sql;&lt;br /&gt;spool off&lt;br /&gt;exit;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;c) runQuery.bat - This is the simple batch program that calls SQLPLUS with your username and password and the script to run.  Here is what this would look like -&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;SQLPLUS &lt;user&gt;/&lt;pw&gt;@&lt;dbname&gt; @queryToFile.sql&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;I set up the above in a directory for these ad hoc queries and then edit my queryOut.sql file and click on the runQuery.bat which I added to a toolbar.   Try it out and let me know if you found this useful or if you have any  better ideas...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-6483521272441700584?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6483521272441700584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/6483521272441700584'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/12/sql-plus-delimited-output-file.html' title='SQL Plus Delimited Output File'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-82112477716996686</id><published>2006-11-24T23:38:00.000-08:00</published><updated>2007-11-01T23:54:40.850-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>How to use Decode in Oracle SQL</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span style="font-family:monospace;"&gt;The use of the decode function in Oracle &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SQL&lt;/span&gt; is pretty straightforward.  You simply specify the column that you need conditional logic on and then specify the conditions as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;SELECT DECODE (value,&lt;br /&gt;   &amp;lt;if this value&amp;gt;, &amp;lt;return this value&amp;gt;,&lt;br /&gt;   &amp;lt; if this value&amp;gt;, &amp;lt;return this value&amp;gt;,&lt;br /&gt;   ....)&lt;br /&gt;FROM dual;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you have a default value that you want to display if any of the conditions are not met, you can add another comma and specify the default value like this:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;SELECT DECODE (value,&lt;br /&gt;    if this value, return this value,&lt;br /&gt;    if this value, return this value,&lt;br /&gt;    otherwise this value&lt;br /&gt;FROM dual;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;For a thorough description of all features of this DECODE function, see the &lt;a href="http://www.psoug.org/reference/decode_case.html"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Puget&lt;/span&gt; Sound Oracle User's Group description&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are some further examples from &lt;a href="http://mycodeblog.blogspot.com/2007/02/oracle-sql-decode.html"&gt;another post on my blog&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;Most Oracle SQL users do not realize the power of this function.  Hopefully this post will enlighten some on it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-82112477716996686?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/82112477716996686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/82112477716996686'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/how-to-use-decode-in-oracle-sql.html' title='How to use Decode in Oracle SQL'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1777719742955824789</id><published>2006-11-21T19:39:00.001-08:00</published><updated>2006-11-22T03:40:58.172-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Postal'/><title type='text'>What is DPV (Delivery Point Validation)?</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Mailers today who do not use a DPV service are either really out of the loop or they don't really care whether their mail actually arrives or not.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've been in the category of "really out of the loop" until recently when I became aware of the pitfalls of not using a DPV service to ensure your mailing address is deliverable.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let's say you process your mailing list through a standardization service without DPV and then try to merge all duplicates together in your database. If you do not validate down to DPV level, you may be losing address data and names from your list . DPV validation will tell you that the mail will actually get delivered to a delivery POINT which other validation levels can not do. ZIP4 encoding can only give you the general range of zip codes and tell you whether or not these are valid ranges, but for all you know you may be mailing to an empty lot or a torn down building, not to mention the high rises that won't deliver your mail without that apartment number.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So mailers who are interested in keeping their lists in good shape should choose some form of DPV solution. I am looking into the PostalSoft validation which is described on their website:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Delivery Point Validation (DPV)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;By adding delivery point&lt;br /&gt;validation to your data cleansing process, you can bring data&lt;br /&gt;validation to finer precision. A DPV solution:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Determines whether a particular address — a specific house number,&lt;br /&gt;apartment number, or suite number — is known to the USPS (United States&lt;br /&gt;Postal Service) as a valid point for delivering mail, which helps&lt;br /&gt;reduce mail-order fraud.&lt;/li&gt;&lt;li&gt;Identifies whether an address is a Commercial Mail Receiving Agency&lt;br /&gt;(CMRA), such as The UPS Store, which can reduce fraudulent credit card&lt;br /&gt;orders.&lt;/li&gt;&lt;li&gt;Increases the accuracy of matched records and helps create a more&lt;br /&gt;accurate view of each customer, resulting in more sophisticated&lt;br /&gt;marketing campaigns, such as loyalty programs, or more highly&lt;br /&gt;personalized offers.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="poweredbyperformancing"&gt;powered by &lt;a href="http://performancing.com/firefox"&gt;performancing firefox&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1777719742955824789?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1777719742955824789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1777719742955824789'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/what-is-dpv-delivery-point-validation.html' title='What is DPV (Delivery Point Validation)?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1042043306518377042</id><published>2006-11-21T16:27:00.001-08:00</published><updated>2006-11-22T03:42:20.470-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maps'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>ZIP Code Maps</title><content type='html'>Here is a basic ZIP Code map showing the different state ZIP codes and ranges. I've been looking for a good ZIP Code map for a while now and the above is pretty straightforward. While this doesn't give you much in terms of detail, it is a good overview.&lt;br /&gt;&lt;br /&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.answers.com/topic/list-of-zip-codes-in-the-united-states"&gt;&lt;blockquote&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 345px; height: 243px;" src="http://content.answers.com/main/content/wp/en-commons/thumb/2/28/400px-ZIP_code_zones.png" alt="" border="0" /&gt;&lt;/blockquote&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next is a great link to a ZIP code distribution map which is an interactive Java applet where you can see the exact location of each ZIP Code range or down to the specific zip code itself.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://acg.media.mit.edu/people/fry/zipdecode/"&gt;&lt;blockquote&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://photos1.blogger.com/blogger/4217/401/400/zipcode.jpg" alt="" border="0" /&gt;&lt;/blockquote&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://acg.media.mit.edu/people/fry/zipdecode/"&gt;zipdecode | ben fry&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.prefuse.org/gallery/zipdecode/ZipDecode.java"&gt;Source Code&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1042043306518377042?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1042043306518377042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1042043306518377042'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/zip-code-maps.html' title='ZIP Code Maps'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-7755102077990748429</id><published>2006-11-15T01:01:00.000-08:00</published><updated>2006-11-15T01:06:01.910-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Jigloo for Eclipse?</title><content type='html'>I've been using Eclipse now for a few months.  Originally I started out with the Jigloo form builder tool which I found quite useful.  From an earlier post:&lt;br /&gt;&lt;blockquote&gt;Building GUIs for rich client apps in Eclipse is not the easiest thing in the world. I'm looking for windows builders comparable to the Net Beans GUI builder.&lt;br /&gt;&lt;br /&gt;I am downloading the &lt;a href="http://www.cloudgarden.com/jigloo/index.html"&gt;Jigloo GUI builder&lt;/a&gt; which sounds pretty good but that is coming from company who made it.&lt;br /&gt;&lt;br /&gt;What about &lt;a href="http://www.instantiations.com/windowbuilderpro/default.htm"&gt;WindowsBuilderPro?&lt;/a&gt;  This is a commercial product, not free like Jigloo.  How is it better?&lt;br /&gt;&lt;br /&gt;I'll try both and see for myself...&lt;br /&gt;&lt;br /&gt;On the install, Jigloo is very simple and is just like any other Eclipse plugins. Just copy to the features and plugins directories and your done. WindowBuilder on the other hand has you walk through a install wizard which took only a couple minutes to run through. (Make sure you don't have Eclipse running during the install).&lt;br /&gt;&lt;br /&gt;WindowsBuilder has several example apps you can try. In 5 minutes of testing this builder I found it very user friendly. I liked the "quick view" feature where without even compiling you can get a feel for how your app will look during runtime. Now on to Jigloo.&lt;br /&gt;&lt;br /&gt;After the few minutes I found it easy to create a basic app. Nothing difficult. I liked the two screen (code/app) view that shows the two-way changes so if you edit the GUI the code changes or you edit the code and the GUI changes.&lt;br /&gt;&lt;br /&gt;So far they are both comparable products and I'll spend a bit more time using each on an actual application to see which is the better product.&lt;/blockquote&gt;However, once I found my feet in making Swing applications, I found using a GUI builder to be more of a pain in the neck than a help.   I see these GUI builders like training wheels when learning to ride your bike.  It is really not that difficult once you get the hang of it, and those training wheels sure get annoying when trying to speed down that big hill...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-7755102077990748429?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7755102077990748429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7755102077990748429'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/jigloo-for-eclipse.html' title='Jigloo for Eclipse?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2243850529281248135</id><published>2006-11-15T00:18:00.000-08:00</published><updated>2006-11-15T00:54:52.070-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scientology'/><title type='text'>My Scientology Wedding</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.scientologywedding.org/images/feature-2-lrg.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.scientologywedding.org/images/feature-2-lrg.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I was glad to hear that Tom Cruise picked the same &lt;a href="http://www.scientologywedding.org/"&gt;Scientology Wedding&lt;/a&gt; ceremony that my wife and I chose when we got married 5 years ago.  This was the Double Ring ceremony and during this the minister holds up two rings and asks you to picture the ARC Triangle in the middle as this represents Affinity, Reality and Communication - a vital part of a lasting marraige.  A secret to a &lt;a href="http://www.scientologywedding.org/marriage-in-scientology.html"&gt;succesful Scientology marraige&lt;/a&gt; is that you have continuously create it.  From the Scientology website on weddings:&lt;br /&gt;&lt;blockquote&gt;"When someone begins on that arrangement called marriage, he is getting into something which is, to say the least, adventurous. When a couple get married, they are doing something they know nothing about. And, from all indications, when they have tried it more than once, they know no more about it the second time than they did the first." ...&lt;br /&gt;&lt;/blockquote&gt;&lt;blockquote&gt;"Where people are having trouble with marriage, it is because they are expecting it to run on automatic. They think it will hang together through no effort of their own; unfortunately, it won’t. It has to be created."&lt;/blockquote&gt;One part of the wedding vows is that you agree not to let a day dawn if there is a break in that ARC, in other words, if you have an upset, don't let it sit, but instead bring it up with the spouse and resolve the break in Affinity, Reality or Communication before closing out the day.&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;"Scientology founder L. Ron Hubbard isolated the three elements that make up Understanding: A is Affinity—which is the degree of closeness, liking or affection one has for something or someone; R is Reality—which is what we agree on; and C is Communication—which is of course the interchange of ideas between two people.&lt;/p&gt;          &lt;p&gt;If you increase any one of these points in your dealing with another person you will have greater understanding with that person. Understanding is, of course, everything in a successful relationship.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2243850529281248135?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2243850529281248135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2243850529281248135'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/my-scientology-wedding.html' title='My Scientology Wedding'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4058380367337566919</id><published>2006-11-09T21:31:00.000-08:00</published><updated>2006-11-09T21:36:42.838-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>NVL - Oracle SQL Null Field Handling</title><content type='html'>An often overlooked function that comes in very handy is the NVL function in Oracle.  This allows you to replace a query  result that returned NULL, with a value, such as 0.  Here is the syntax:&lt;br /&gt;&lt;br /&gt;SELECT NVL(fielda, 0) FROM table;&lt;br /&gt;&lt;br /&gt;This will always give you either a value or a "0".  This will never return a NULL.&lt;br /&gt;&lt;br /&gt;Here is a link for further details on this function:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.techonthenet.com/oracle/functions/nvl.php"&gt;NVL Function&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4058380367337566919?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4058380367337566919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4058380367337566919'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/nvl-oracle-sql-null-field-handling.html' title='NVL - Oracle SQL Null Field Handling'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1451918513871222285</id><published>2006-11-09T16:21:00.000-08:00</published><updated>2006-11-09T16:33:43.418-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Oracle Wildcards</title><content type='html'>When searching using wildcards in Oracle SQL the most common use is the "%" character which searches for any number of characters.  However a useful but less used wildcard is the "_" character which searches for any single character.   These can be used in combination to form complex querying.&lt;br /&gt;&lt;br /&gt;If you need to query for something that has a wildcard character in it, use the ESCAPE syntax as follows:&lt;br /&gt;&lt;br /&gt;SELECT * FROM table WHERE field LIKE '%\%%' ESCAPE '\'&lt;br /&gt;&lt;br /&gt;This will treat the '%' as a literal instead of as a wildcard. &lt;br /&gt;&lt;br /&gt;Here is another good oracle sql resource:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.psoug.org/library.html"&gt;Puget Sound Oracle Users Group&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1451918513871222285?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1451918513871222285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1451918513871222285'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/oracle-wildcards.html' title='Oracle Wildcards'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-8847087028355732049</id><published>2006-11-06T16:56:00.000-08:00</published><updated>2006-11-07T10:54:51.384-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Blogger Sitemap for Google</title><content type='html'>If you are trying to create a sitemap of one of your blogs for google here is how you can do it:&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Step # 6&lt;/span&gt;: You can add a Sitemap to your account to provide Google additional information about about your blog. Google will process your Sitemap and provide information on any errors in the Sitemaps tab as well your sitemap will be downloaded everyday to index your blog fast.&lt;br /&gt;Select type as : Add General Web sitemap&lt;/p&gt; &lt;p&gt;Now you need to add Atom 0.3 feeds. Generally, you would use this format only if your site already has a syndication feed and this is the only way to add sitemap to your blogger.com account. &lt;/p&gt; &lt;p&gt;Paste url of your Atom feed: For example &lt;strong&gt;http://cyberciti.blogspot.com/atom.xml&lt;/strong&gt; and click on Add Web sitemap:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; If you are using a new blogger beta system, use &lt;strong&gt;http://yourblogname.blogspot.com/rss.xml&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;img alt="sitemap" src="http://blogs.cyberciti.biz/hm/wp-content/uploads/2006/04/sitemap-step6.png" align="middle" /&gt;&lt;/p&gt; &lt;p&gt;You will get confirmation:&lt;br /&gt;&lt;span style="font-style: italic;"&gt; You have added a Sitemap to http://cyberciti.blogspot.com/. Reports may take several hours to update. Thank you for your patience!&lt;/span&gt;&lt;/p&gt;And you are done and your blog will be now index very fast (depend upon your posting and content).&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-8847087028355732049?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8847087028355732049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8847087028355732049'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/blogger-sitemap-for-google.html' title='Blogger Sitemap for Google'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2070562338325884917</id><published>2006-11-05T22:04:00.000-08:00</published><updated>2006-11-05T22:49:35.452-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>How to Rebuild Java from Class File?  Use a Decompiler!</title><content type='html'>I ran into a situation where I couldn't find the latest source for a project I was working on.  All I had was the executable jar file which was the latest version.  I searched through my computer for the source code but couldn't find it anywhere.  I must not have saved the last version or it get accidentally deleted.  Then I discovered Java Decompilers and after searching for a few seconds on the web I found jad.exe - a simple decompiler that reads a compiled CLASS file and converts this into a java source file.  Granted it is not perfect but through using this I was able to recover the work done and recreate my source file (through using jad as well as winmerge).&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://www.kpdus.com/jad.html"&gt;download jad here&lt;/a&gt;.&lt;br /&gt;You can &lt;a href="http://winmerge.org/"&gt;download winmerge here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2070562338325884917?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2070562338325884917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2070562338325884917'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/how-to-rebuild-java-from-class-file-use.html' title='How to Rebuild Java from Class File?  Use a Decompiler!'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-8318402013469729816</id><published>2006-11-03T18:07:00.000-08:00</published><updated>2006-11-03T20:16:46.218-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scientology'/><title type='text'>Grand Opening of Scientology London</title><content type='html'>A fellow coder from United Kingdom couldn't be reached last week as he was attending the grand opening of London's new Church of Scientology building.  He is an old school programmer working mainly in Fox-Pro!?!  He attended the opening and I heard it that even the rain couldn't stop the people from flooding into the place.  See the photo below with the umbrella's!&lt;br /&gt;&lt;br /&gt;Scientology restored two famous buildings in London recently and just held the grand opening of these two new beautiful buildings.&lt;br /&gt;&lt;blockquote&gt;               LONDON — More than 3,000 members and friends of the &lt;a href="http://www.scientology-london.org/"&gt;Church of Scientology of London&lt;/a&gt; packed Queen Victoria Street in the heart of London for the sensational grand opening of the new home of the UK’s oldest Scientology church.&lt;br /&gt;&lt;br /&gt;&lt;table class="rss_body_imageTable" align="default" border="0" cellpadding="0" cellspacing="0" width="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.scientologytoday.org/article_images/5009_400x240.jpg" border="0" height="240" width="400" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p class="rss_body_main"&gt;Steps away from the Tate Gallery and St. Paul’s Cathedral, the beautifully restored historic building at 146 Queen Victoria Street now serves the growing membership of London-area Scientologists. Its opening marks the largest expansion for Scientology in the Church’s 50-year history in London.&lt;br /&gt;...&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="rss_body_main"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="rss_body_main"&gt;“This new church packs the full body of L Ron Hubbard’s technologies as derived from the greater well of Scientology knowledge,” said Mr. Miscavige, “and, as such, it provides the full gamut of Scientology activities for the betterment of mankind.” &lt;/p&gt;&lt;table class="rss_body_imageTable" align="default" border="0" cellpadding="0" cellspacing="0" width="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.scientologytoday.org/article_images/4998_400x250.jpg" border="0" height="250" width="400" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="rss_body_caption" align="default" valign="top"&gt;Fanfare and umbrellas at the opening of the new Church of Scientology of London.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;b&gt;&lt;/b&gt;- &lt;a href="http://www.scientology-london.org/feature/gallery/index.html"&gt;Photos of the Grand Opening on the Scientology London site&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;At the grand opening Mr. David Miscavige spoke and gave the opening address.&lt;br /&gt;&lt;blockquote&gt;- &lt;a href="http://www.rtc.org/david-miscavige.htm"&gt;Mr. David Miscavige, Official Biography&lt;/a&gt;&lt;/blockquote&gt;&lt;a href="http://www.rtc.org/david-miscavige.htm"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-8318402013469729816?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.scientologytoday.org/press/610222259261_scn-int.html' title='Grand Opening of Scientology London'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8318402013469729816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8318402013469729816'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/grand-opening-of-scientology-london.html' title='Grand Opening of Scientology London'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2126032818672764879</id><published>2006-11-02T09:40:00.000-08:00</published><updated>2006-11-02T09:49:02.749-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>How to Delete a Column from a Table in Oracle SQL</title><content type='html'>Here is the syntax to delete one column from an existing table in Oracle SQL.  As this is not used very often I am noting it here for quick reference.&lt;br /&gt;&lt;pre&gt;     &lt;span style="font-family: courier new; font-weight: bold;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ALTER TABLE&lt;/span&gt; employee&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DROP COLUMN&lt;/span&gt; vacationPay;&lt;/span&gt;&lt;/pre&gt;Pretty simple.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2126032818672764879?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2126032818672764879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2126032818672764879'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/how-to-delete-column-from-table-in.html' title='How to Delete a Column from a Table in Oracle SQL'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-2425503433398587158</id><published>2006-11-01T23:20:00.000-08:00</published><updated>2007-01-28T18:59:53.404-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>How to Select Top Results in a Group By</title><content type='html'>The other day I ran into an interesting problem with Oracle SQL.  I used to use Microsoft SQL Server and last year switched over to Oracle and had to adjust to the peculiarities of Oracle SQL.  I had a report that gave the top 10 results of an aggregate query.  In SQL this was simple and looked something like this:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SET ROWCOUNT&lt;/span&gt; 10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; field1, field2, &lt;span style="color: rgb(51, 51, 255);"&gt;COUNT&lt;/span&gt;(*)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;FROM&lt;/span&gt; table&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;GROUP BY&lt;/span&gt; field1, field2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;ORDER BY&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;COUNT&lt;/span&gt;(*) &lt;span style="color: rgb(51, 51, 255);"&gt;DESC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;But when trying to do this in Oracle SQL with no "ROWCOUNT" feature, I was stumped at first.  Then I came up with the following which is a bit of a hack, but works:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;SELECT &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;field1, field2, CNT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;FROM &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;( &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;SELECT &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;field1, field2, &lt;span style="color: rgb(51, 51, 255);"&gt;COUNT&lt;/span&gt;(*) &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;AS&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; CNT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;FROM &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;table&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;GROUP BY &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;field1, field2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;ORDER BY&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;COUNT&lt;/span&gt;(*)&lt;span style="color: rgb(51, 51, 255);"&gt; DESC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;WHERE ROWNUM&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;= 10;&lt;/span&gt; &lt;/blockquote&gt;If anyone knows of a more standard approach, let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-2425503433398587158?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2425503433398587158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/2425503433398587158'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/11/how-to-select-top-results-in-group-by.html' title='How to Select Top Results in a Group By'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-1384444798206931082</id><published>2006-10-26T18:43:00.000-07:00</published><updated>2006-10-26T19:00:27.860-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Oracle SQL Tips</title><content type='html'>I often am in the middle of some off-the-cuff query and run into one of those technical "gotchas" like a failed compare between two text strings due to trailing spaces or that alter table syntax to modify a column name.  &lt;br /&gt;&lt;br /&gt;Instead of googling for the answer each time, I've consolidated the websites that I use to find the answers to these common SQL questions and have listed these below for my own and others reference. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.orafaq.com/faq/sql"&gt;Oracle FAQ&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikibooks.org/wiki/Oracle_SQL_Cheatsheet"&gt;Oracle Cheat Sheet&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cs.wisc.edu/~dbbook/openAccess/thirdEdition/Oracle/user_guide/oracle_guide.html#at"&gt;Oracle User Guide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These are the most frequently used resources.  I may add to this later but the above will solve most all of your Oracle SQL questions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-1384444798206931082?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1384444798206931082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/1384444798206931082'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/10/oracle-sql-tips.html' title='Oracle SQL Tips'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-5911022710680116150</id><published>2006-10-25T16:58:00.000-07:00</published><updated>2006-10-25T17:02:30.441-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Formatting Query Results</title><content type='html'>I wanted to format a query result so it displayed as currency.  To do this you need to use the TO_CHAR function with the following syntax:&lt;br /&gt;&lt;br /&gt;SELECT TO_CHAR(A_NUMBER, 'L999,999,999.99')&lt;br /&gt;FROM TABLE;&lt;br /&gt;&lt;br /&gt;This gives you a formatted output in the local currency format.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-5911022710680116150?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/5911022710680116150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/5911022710680116150'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/10/formatting-query-results.html' title='Formatting Query Results'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-5817650355370744476</id><published>2006-10-25T15:19:00.000-07:00</published><updated>2007-10-30T17:27:34.215-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>How to Use Variables in PL/SQL or SQLPlus Scripts</title><content type='html'>I am researching how to set up my SQLPlus script to be able to output a text report using a generic script that reads in a variable.&lt;br /&gt;&lt;br /&gt;I want to set variable on the command line and then have the script reference this throughout, giving me customized counts based on the variable entered.  The results should output to a text file that can then be used as the actual report.  I am familiar with how to do this in a PL/SQL script but not in a regular SQL script that I would use in SQL Plus. &lt;br /&gt;&lt;br /&gt;The following link helped me with the setting up of my variable.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/support/tech/sql_plus/htdocs/sub_var9.html"&gt;Detail on how to use variables in SQLPlus&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Specifically here were the instructions: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;9.1 Setting a Substitution Variable's Value&lt;br /&gt;&lt;br /&gt;A substitution variable can be set in several ways. The common ways are given below.&lt;br /&gt;&lt;br /&gt;   1. The DEFINE command sets an explicit value:&lt;br /&gt;&lt;br /&gt;          define myv = 'King'&lt;br /&gt;&lt;br /&gt;      This creates a character variable "myv" set to the value "King".&lt;br /&gt;&lt;br /&gt;   2. The ACCEPT command:&lt;br /&gt;&lt;br /&gt;          accept myv char prompt 'Enter a last name: '&lt;br /&gt;&lt;br /&gt;      prompts you for a value and creates a character variable "myv" set to the text you enter.&lt;br /&gt;&lt;br /&gt;   3. Using "&amp;&amp;" before an undefined variable prompts you for a value and uses that value in the statement:&lt;br /&gt;&lt;br /&gt;          select first_name from employees where last_name = '&amp;&amp;myuser';&lt;br /&gt;&lt;br /&gt;      If the substitution variable "myuser" is not already defined then this statement creates "myuser" and sets it to the value you enter.&lt;br /&gt;&lt;br /&gt;   4. Using COLUMN NEW_VALUE to set a substitution variable to a value stored in the database:&lt;br /&gt;&lt;br /&gt;          column last_name new_value mynv&lt;br /&gt;          select last_name from employees where employee_id = 100;&lt;br /&gt;&lt;br /&gt;      This creates a substitution variable "mynv" set to the value in the "last_name" column.&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;When outputting to a file, I like to use include the date in the file name:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Using SYSDATE you can query the current date and put it in a substitution variable. The substitution variable can then be used in a SPOOL command:&lt;br /&gt;&lt;br /&gt;    column dcol new_value mydate noprint&lt;br /&gt;    select to_char(sysdate,'YYYYMMDD') dcol from dual;&lt;br /&gt;&lt;br /&gt;    spool &amp;mydate.report.txt&lt;br /&gt;    -- my report goes here&lt;br /&gt;    select last_name from employees;&lt;br /&gt;    spool off&lt;br /&gt;&lt;/blockquote&gt; &lt;br /&gt;&lt;br /&gt;Be sure to use the double period after the variable name in your file name: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If SET CONCAT is a period (.) and you want to append a period immediately after a substitution variable then use two periods together. For example:&lt;br /&gt;&lt;br /&gt;    define mycity = Melbourne&lt;br /&gt;    spool &amp;mycity..log&lt;br /&gt;&lt;br /&gt;is the same as:&lt;br /&gt;&lt;br /&gt;    spool Melbourne.log&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Use the variable that you set like this: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;    define dept = '60'&lt;br /&gt;    ttitle left 'Salaries for department &amp;dept'&lt;br /&gt;    select last_name, salary from employees where department_id = &amp;dept;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Or pass in the variable on the command line like this: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;You can pass parameters on the command line to a SQL*Plus script:&lt;br /&gt;&lt;br /&gt;    sqlplus hr/my_password @myscript.html employees "De Haan"&lt;br /&gt;&lt;br /&gt;They can be referenced in the script using "&amp;1" and "&amp;2". For example, myscript.sql could be:&lt;br /&gt;&lt;br /&gt;    set verify off&lt;br /&gt;    select employee_id from &amp;1 where last_name = '&amp;2';&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That handled my main concern and gives me a nice text output file that uses my generic script with a variable. &lt;br /&gt;&lt;br /&gt;The next point I sought to resolve was how to have my text output be in a delimited format as I plan to read this from an Excel file.&lt;br /&gt;&lt;br /&gt;Here is what I found to do this: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;--sets sqlplus so output will be tab-delimited&lt;br /&gt;set colsep ' ' /* that's a tab */&lt;br /&gt;SET LINESIZE 3000&lt;br /&gt;SET PAGESIZE 50000&lt;br /&gt;SET ECHO OFF&lt;br /&gt;SET FEEDBACK OFF&lt;br /&gt;--SET HEADING OFF&lt;br /&gt;set trimspool on&lt;br /&gt;set newpage none&lt;br /&gt;set underline off &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Here is someone else's point of view on how this should be done. &lt;br /&gt;&lt;a href="http://digiassn.blogspot.com/2005/12/export-oracle-delimeted-text-files.html"&gt;Digital Voice&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Instead of either of the above a simple handling would be to hard code into the generic script "|" between the columns.  This would give me a standard pipe-delimited output.  &lt;br /&gt;&lt;br /&gt;That sounds like the easiest method and is what I commonly use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-5817650355370744476?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/5817650355370744476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/5817650355370744476'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/10/how-to-use-variables-in-plsql-or.html' title='How to Use Variables in PL/SQL or SQLPlus Scripts'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-181175251779839965</id><published>2006-10-24T18:01:00.000-07:00</published><updated>2006-10-24T22:23:05.590-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scientology'/><title type='text'>Scientology Public Service Announcements</title><content type='html'>There are a number of public service announcements that have recently been shown on TV stations around the world.  These PSAs are about Human Rights and the basic rights that all men have as based on the International Declaration of Human Rights first put forth over 50 years ago.  &lt;a href="http://www.youthforhumanrights.org/watchads/index.html"&gt;Watch these and see what your human rights are.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-181175251779839965?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/181175251779839965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/181175251779839965'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/10/scientology-public-service.html' title='Scientology Public Service Announcements'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-7371540867403518191</id><published>2006-10-06T11:14:00.000-07:00</published><updated>2006-10-06T11:16:27.932-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maps'/><title type='text'>Area Code Maps</title><content type='html'>I have recently been looking into how to track phone numbers and the constantly changing area codes.  A great resource was found called NANPA.  Still not sure what this stands for but these guys are the ones who set the phone numbers, so I would say it is a reliable source.  This is the best area code map site I have seen as well.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nanpa.com/area_code_maps/ac_map_static.html"&gt;Area Code Map&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-7371540867403518191?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.nanpa.com/area_code_maps/ac_map_static.html' title='Area Code Maps'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7371540867403518191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7371540867403518191'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/10/area-code-maps.html' title='Area Code Maps'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-7268801787454765402</id><published>2006-10-03T11:32:00.000-07:00</published><updated>2006-10-03T11:33:57.565-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Free Java Books</title><content type='html'>Here is a link to a massive resource of free on-line Java books.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kickjava.com/freeBooks.html"&gt;Free On-Line Java Books&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-7268801787454765402?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.kickjava.com/freeBooks.html' title='Free Java Books'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7268801787454765402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/7268801787454765402'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/10/free-java-books.html' title='Free Java Books'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-605451351151364331</id><published>2006-10-02T19:48:00.000-07:00</published><updated>2006-10-02T19:51:31.135-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Eclipse Plugins</title><content type='html'>I am diving head first into the world of Eclipse plugins.  The first breakthrough was to clear up the concept of what a Plug-in really was.  I went through the cheat sheets in Eclipse to get somewhat familiar with them and then realized this is exactly what I need.  &lt;br /&gt;&lt;br /&gt;The Eclipse Plugin headquarters can be found &lt;a href="http://www.eclipseplugincentral.com/Web_Links+main.html"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-605451351151364331?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.eclipseplugincentral.com/Web_Links+main.html' title='Eclipse Plugins'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/605451351151364331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/605451351151364331'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/10/eclipse-plugins.html' title='Eclipse Plugins'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-8266921420585775009</id><published>2006-09-29T20:08:00.000-07:00</published><updated>2007-02-19T10:43:22.437-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Hibernate Tutorials</title><content type='html'>In my first Java database application I used straight JDBC calls to a simple Access database.  This was good for practice but now I need a more Object related database approach and Hibernate seems like the way to go.&lt;br /&gt;&lt;br /&gt;Here are some recommended Hibernate Tutorials that explain the basics of setting up a Hibernate project.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hibernate.org/152.html"&gt;Hibernate Introduction&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.roseindia.net/hibernate/"&gt;Hibernate Tutorial&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.hibernate.org/118.html"&gt;Hibernate Tips &amp;amp; Tricks&lt;/a&gt;&lt;br /&gt;&lt;a href="http://developer.spikesource.com/wiki/index.php/Getting_started_with_hibernate"&gt;Getting Started with Hibernate&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you are subscribed with ACM (Association of Computing Machinery) or have a Safari account there are some good Hibernate books that can be read online as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-8266921420585775009?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8266921420585775009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/8266921420585775009'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/09/hibernate-tutorials.html' title='Hibernate Tutorials'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-349390725360572379</id><published>2006-09-27T18:01:00.000-07:00</published><updated>2006-09-27T18:02:08.781-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Eclipse vs Netbeans?</title><content type='html'>NetBeans 6.0M3 vs. Eclipse 3.3M2 by &lt;a href="http://zdnet.com/"&gt;ZDNet&lt;/a&gt;'s Ed Burnette -- Last week Sun and the Eclipse Foundation both released milestone versions of their flagship Java IDE/rich client platforms. This planetary alignment provides a unique opportunity to compare the state of development of these two open source projects....&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-349390725360572379?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.zdnet.com/Burnette/?p=177' title='Eclipse vs Netbeans?'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/349390725360572379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/349390725360572379'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/09/eclipse-vs-netbeans.html' title='Eclipse vs Netbeans?'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2471026321807147160.post-4859357454564689782</id><published>2006-09-27T16:38:00.000-07:00</published><updated>2006-09-27T16:45:55.681-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='velocity'/><title type='text'>Velocity in Java</title><content type='html'>Velocity is a very useful template tool.  I use it with my mailing list software to prepare the jobfiles based on user input through a GUI.  Each of the variables are set through the GUI and then the text jobfile is created using Velocity. &lt;br /&gt;&lt;br /&gt;Here are some good links to get going with Velocity:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-12-2001/jw-1228-velocity.html"&gt;Java World - Velocity&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jakarta.apache.org/velocity/getting-started.html"&gt;Apache Jakarta - Velocity&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2471026321807147160-4859357454564689782?l=mycodeblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4859357454564689782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2471026321807147160/posts/default/4859357454564689782'/><link rel='alternate' type='text/html' href='http://mycodeblog.blogspot.com/2006/09/velocity-in-java.html' title='Velocity in Java'/><author><name>Blackfoot</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
