<?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-8392508371021961521</id><updated>2011-11-27T18:45:36.443-06:00</updated><category term='Flash'/><category term='reviews'/><category term='SQL'/><category term='CSS'/><category term='security'/><category term='development'/><category term='Amazon'/><category term='puzzles'/><category term='Flex'/><category term='ColdFusion'/><category term='patches'/><category term='USA'/><category term='humor'/><category term='life'/><title type='text'>ColdFusioned Security</title><subtitle type='html'>A bit about Web Development, ColdFusion, (Web) Security and promiscuous thoughts.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01761189954217808878</uri><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>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-6508550202216827498</id><published>2009-08-02T16:36:00.006-05:00</published><updated>2009-08-03T10:49:15.667-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='ColdFusion'/><title type='text'>Amazon HMAC with ColdFusion</title><content type='html'>I recently received a work request to update our calls that we were making against Amazon's Web Services with a new authentication signature. This proved to be more complicated that it should have been. I thought I would share my experience, in hope that it will help remove a headache for someone else out there.&lt;br /&gt;&lt;br /&gt;The purpose was to "sign" your requests with a secret key so Amazon could verify that the request had not been altered in transit (these are requests that are transmitted via REST calls (http). There have been questions about why this was needed. The biggest point of abuse that I can think of comes from the use of these webservices from a client side (AJAX) - or doing a DOS against another competitor since you can only make so many requests per minute. Of course, now AJAX calls will need to be designed so the secret key never ever ever get exposed to the client side.&lt;br /&gt;&lt;br /&gt;Here is the "&lt;a href="http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?HMACAuth_ItemsRequired.html"&gt;documentation&lt;/a&gt;" Amazon provided. They gave this Important note to us:&lt;br /&gt;"You have until August 15, 2009 to authenticate requests sent to the Product Advertising API. After August 15, 2009, messages that aren't authenticated will be denied."&lt;br /&gt;What they failed to mention was their "testing" schedule (aka planned outages) which was sent (and forwarded to me just a few days ago).&lt;br /&gt;Here is the full schedule:&lt;br /&gt;&lt;blockquote&gt;"These planned outages will help our        developers test their signed requests implementation and also discover        applications and code paths that they may have missed, giving them the        opportunity to address these gaps before signed requests become mandatory        on August 15."&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Monday, Aug 3 at 2PM (ET) through Tuesday, Aug 4 at 2PM, a  few requests (appx 20% of the requests) that do not implement this new  method correctly will be rejected. &lt;/li&gt;&lt;li&gt;Monday Aug 10 from 2PM (ET) through 4PM, all requests that do not  implement this new method correctly will be rejected. &lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;Uhh, sorry what? Planned production outage 2 weeks earlier?!! Needless to say this led to an elevated blood pressure for many. I looked at some of the &lt;a href="http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/rest-signature.html"&gt;Sample REST requests&lt;/a&gt;, found some HMAC code already available on RIA Forge in several "amazon" related projects and thought "This will be easy enough".&lt;br /&gt;&lt;br /&gt;Its not that it wasn't easy to reproduce the example they gave. That part WAS easy. The &lt;a href="http://developer.amazonwebservices.com/connect/thread.jspa?threadID=33028"&gt;difficult / frustrating&lt;/a&gt; part was getting the REAL requests signed and authenticated. The good news for many is that you can simply check the status code of your original request and make it again if it has failed during this first round that lasts 24 hours and you will likely be fine.&lt;br /&gt;&lt;br /&gt;Here is a checklist of what I would suggest looking at if you are having problems, this is from my own experiences and is bound to help someone. As I receive feedback, I'll update accordingly.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Make sure you are using your OWN secret key.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use http://ecs.amazonaws.com  - NOT http://webservices.amazon.com&lt;/li&gt;&lt;li&gt;Do NOT use a trailing slash at the end of /onca/xml?...&lt;/li&gt;&lt;li&gt;DO NOT put line breaks in your query string. Just use the normal &amp;amp; to separate your params.&lt;/li&gt;&lt;li&gt;Make sure you are only doing a line break chr(10) like the following:&lt;br /&gt;'GET' &amp;amp; chr(10) &amp;amp; 'ecs.amazonaws.com' &amp;amp; chr(10) &amp;amp; '/onca/xml' &amp;amp; chr(10) &amp;amp; '#YourQueryStringHERE#'&lt;/li&gt;&lt;/ol&gt;For me, the big epiphany was after using the webservices URL, one type of responseGroup would work, but another would not. The error was coming from ecs.amazonaws.com, even though I was making my calls to webservices.amazon.com, just like their example.&lt;br /&gt;&lt;br /&gt;Here is an &lt;a href="http://binarycss.com/samples/amazonhmac/amazon.zip" target="_blank"&gt;example of the code&lt;/a&gt; that I used.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-6508550202216827498?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/6508550202216827498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=6508550202216827498' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/6508550202216827498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/6508550202216827498'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2009/08/amazon-hmac-with-coldfusion.html' title='Amazon HMAC with ColdFusion'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-4475215147730455000</id><published>2009-05-19T10:52:00.003-05:00</published><updated>2009-06-05T15:43:53.033-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzles'/><title type='text'>Puzzler: Which way to the runway?</title><content type='html'>Here is a fun puzzle for those looking for a break from normalcy ...&lt;br /&gt;&lt;br /&gt;When visiting and looking at my route via a &lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;ll=33.174703,-96.802774&amp;amp;spn=0.001657,0.002993&amp;amp;t=k&amp;amp;z=19"&gt;popular map utility&lt;/a&gt; on my phone, I came across an &lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;ll=33.174703,-96.802774&amp;amp;spn=0.001657,0.002993&amp;amp;t=k&amp;amp;z=19"&gt;interesting artifact&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm curious if anyone can find the shadow of this, or for bonus points, the equation needed to calculate the height of said artifact, once the shadow is found!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-4475215147730455000?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/4475215147730455000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=4475215147730455000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/4475215147730455000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/4475215147730455000'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2009/05/puzzler-which-way-to-runway.html' title='Puzzler: Which way to the runway?'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01761189954217808878</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-7467274936625310482</id><published>2009-03-02T02:23:00.005-06:00</published><updated>2009-03-02T02:39:46.283-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Power of SQL: Update Replace()</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Sometimes you realize after the fact that there's an issue with the way your data is being stored. In this case, we had a field that was storing names. Originally intended to be able to show an admin / show on reports the full person's name without concatenating data together, here is what was being built.&lt;br /&gt;"firstname middlename lastname"&lt;br /&gt;Unfortunately, when the middlename was not filled out, it contained two spaces between the first and last names. In addition to fixing the way that the the data is being updated, there's an easy fix for existing data. &lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;update users&lt;br /&gt;set fullname = replace(fullname,'&amp;nbsp;&amp;nbsp;','&amp;nbsp;')&lt;br /&gt;where fullname like '%&amp;nbsp;&amp;nbsp;%'&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-family:trebuchet ms;"&gt;For clarity, this finds and replaces two spaces with one space. Its easy to adapt to your specific situation and yes, its really that easy. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-7467274936625310482?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/7467274936625310482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=7467274936625310482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/7467274936625310482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/7467274936625310482'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2009/03/power-of-sql-update-replace.html' title='Power of SQL: Update Replace()'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-1294410098783741389</id><published>2008-12-24T12:02:00.003-06:00</published><updated>2009-02-17T10:27:50.896-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ColdFusion'/><title type='text'>Tag Context</title><content type='html'>&lt;div class="gmail_quote"  style="font-family:trebuchet ms;"&gt;Update: I had a formatting issue in the code example.&lt;br /&gt;&lt;br /&gt;I found this method handy when trying to track down the tab Context of a page's execution. This throws an error, catches it and allows you to output (or email ... or post to a log) the needed information of where a page's execution is coming from.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;cftry&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;cfthrow&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;cfcatch&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;cfset e=duplicate(cfcatch)&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;cfdump var="#e.tagContext#"&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;/cfcatch&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;/cftry&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/blockquote&gt;One word of caution though, in my experience, it can over time (several days of try/throw/catching errors) lead to server instability. In my case, it was sending an email in the catch and was left in even after I fixed the issue to monitor / make sure it was fixed. The error you will see is:&lt;br /&gt;&lt;blockquote&gt;An exception occurred when setting up &lt;em&gt;mail&lt;/em&gt; server parameters.&lt;br /&gt;This exception was caused by: &lt;em&gt;coldfusion&lt;/em&gt;.&lt;em&gt;mail&lt;/em&gt;.&lt;em&gt;MailSessionException&lt;/em&gt;&lt;/blockquote&gt;For some reason it loses the connection to the mail server and ANY code that tries to send an email will fail. Not good. It was handy and served its purpose, but be warned on your method of implementation.&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/8392508371021961521-1294410098783741389?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/1294410098783741389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=1294410098783741389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/1294410098783741389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/1294410098783741389'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2008/12/tag-context.html' title='Tag Context'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01761189954217808878</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-5957287255722596211</id><published>2008-12-14T09:25:00.002-06:00</published><updated>2008-12-15T14:09:19.268-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Power of SQL: Update Join Tables</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;This is one of the most common update queries I do when dealing with multiple tables that needs data updated. &lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;update o&lt;br /&gt;set o.status = 'complete'&lt;br /&gt;from orders o&lt;br /&gt;join order_detail od&lt;br /&gt;on o.id = od.order_id&lt;br /&gt;where ... (criteria here)&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-family:trebuchet ms;"&gt;I often see code that will do a select and then update the subsequent table where id in (list_of_values). Remember that (almost?) anytime you see an IN clause, it can be replaced with a more efficient join statement.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-5957287255722596211?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/5957287255722596211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=5957287255722596211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/5957287255722596211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/5957287255722596211'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2008/12/power-of-sql-update-join-tables.html' title='Power of SQL: Update Join Tables'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-6891439321005239702</id><published>2008-10-08T06:14:00.011-05:00</published><updated>2009-09-03T06:12:23.450-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Power of SQL: Find and Delete Duplicates</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Most likely we have all had the situation, or will most likely encounter it, where we have duplicate data that needs to be removed from a system. For me this was experienced when moving data from a flat file / legacy system into SQL. This is the solution I came up with after getting it into SQL. Perhaps you have a more elegant way in dealing with this, if so, feel free to comment. The execution of this entire process against ~200,000 records took less than 15 seconds on my particular database. The creation of the index seems to be helpful if you are going to run several queries against the data while preparing the statement.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;First, the background: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;I have a table of notes. Those zero or more of those notes are related to a foreign key. If there is more than one note that is identical, for the same foreign key, it needs to be removed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;It is extremely difficult to compare a text field to another text field. With up to 2GB in length, it can be a daunting task. For my situation, most of the notes were less than a length of 8000, only a small number were longer. If they were longer, we could safely assume if they were not different for the first 8000 chars, they wouldn't be. You may choose to add additional constraints for your situation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Basic Table layout:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;noteId &lt;/span&gt;(identity field)&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;foreignId &lt;/span&gt;(integer / foreign key to other data)&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;noteText &lt;/span&gt;(text field)&lt;br /&gt;... other unimportant data&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;ALTER Statements Before Starting: This adds a checksum and length based on the note. FYI - I did find duplicate checksums with different lengths. If you need to be precise, I suggest using the binary checksum function which is more sensitive, but understand, a checksum CAN have a collision. That means you can have the same checksum for different data.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt; &lt;span style="font-family:courier new;"&gt;ALTER TABLE notes ADD len_notes AS len(CAST(notetext AS Varchar(8000)))&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;ALTER TABLE notes ADD cs_notes AS checksum(CAST(notetext AS Varchar(8000)))&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;CREATE INDEX temp_index ON notes (foreignId,cs_notes,len_notes)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Now we have just added a column that represents the length of a note and the checksum of a note. If your data is changing, new records will contain NULL values and updated records will NOT recalculate the checksum, so keep that in mind. You may want to put criteria on your select statement that will only update the non-null values if your data changes, or the data that has a length &lt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Select and Review part of your data that will be deleted: &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt; SELECT top 100 n2.noteId, n2.cs_notes, n2.len_notes, n2.notetext&lt;br /&gt;FROM notes n2&lt;br /&gt;WHERE noteId in (&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;SELECT n2.noteId&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;FROM notes n1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;JOIN notes n2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;ON (n1.foreignId = n2.foreignId&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;AND n1.cs_notes = n2.cs_notes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;AND n1.len_notes = n2.len_notes)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;GROUP BY n2.noteId&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;HAVING n2.noteId &gt; min(n1.noteId)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;) ORDER BY n2.noteId  &lt;/blockquote&gt;&lt;span style="font-family:trebuchet ms;"&gt;Delete your duplicates: To be clear here, this will preserve the lowest noteId and delete those with higher ids where the checksum AND length AND foreignId match.&lt;/span&gt;    &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;DELETE from notes where note_id in&lt;br /&gt;(&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;SELECT n2.noteId&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;FROM notes n1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;JOIN notes n2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;ON (n1.foreignId = n2.foreignId&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;AND n1.cs_notes = n2.cs_notes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;AND n1.len_notes = n2.len_notes)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;GROUP BY n2.noteId&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;HAVING n2.noteId &gt; min(n1.noteId)&lt;/span&gt;&lt;br /&gt;) &lt;/span&gt;          &lt;/blockquote&gt;&lt;span style="font-family:trebuchet ms;"&gt;Put the table back the way it was: &lt;/span&gt;&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt; &lt;span style="font-family:courier new;"&gt;DROP INDEX notes.temp_index&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;ALTER TABLE notes DROP column [len_notes]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ALTER TABLE notes DROP column [cs_notes] &lt;/span&gt;&lt;/blockquote&gt; &lt;span style="font-family:trebuchet ms;"&gt;I hope this helped. &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/8392508371021961521-6891439321005239702?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/6891439321005239702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=6891439321005239702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/6891439321005239702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/6891439321005239702'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2008/10/power-of-sql-find-and-delete-duplicates.html' title='Power of SQL: Find and Delete Duplicates'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-5984935575400990335</id><published>2008-09-09T06:29:00.009-05:00</published><updated>2008-10-09T07:43:49.129-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>We Need YOU!</title><content type='html'>&lt;p style="font-family: trebuchet ms;"&gt;As a friend or family member - or even a stranger if you are reading this here, we are are asking for your help. A relative of ours was recently diagnosed with a highly aggressive form of lymphoma at the ripe old age of 33. His doctors at Baylor are working aggressively to eliminate the cancer, and part of his treatment is a stem cell transplant to rebuild his immune system (think of it as a system reboot after that nasty blue screen).&lt;/p&gt;&lt;p style="font-family: trebuchet ms;"&gt;Unfortunately, we haven't been able to find a suitable donor yet. While there are millions of donors already registered, they have not found a "good enough" match. His doctors tell us that he's mostly likely to find a compatible donor in the area where we grew up, which happens to be in the Lincoln, NE area. Our family has set up a donor drive in conjunction with the the National Marrow Donor Program to get more on the donor registry and find a donor for him. Even if you suspect you are not a match for him, there are thousands of others who are also in his position (or will be).&lt;/p&gt;&lt;p style="font-family: trebuchet ms;"&gt;We would appreciate very much if you would consider participating in the donor drive - or by passing the word along to someone who may be able to participate.&lt;br /&gt;The drive will be Saturday, September 27, 2008 from 8am to noon&lt;br /&gt;at the Southwood Community Center (5000 Tipperary Trail).&lt;br /&gt;There is a small fee ($25) for the tissue typing. Minorities are currently free due to high demand and funding that is available.&lt;br /&gt;We need an appx. head count in advance, so please send an email to donordrive @ kottwitz.org if you're planning to come. There are some businesses and people who are donating to the cause by offering prizes for registering as a donor.&lt;br /&gt;&lt;/p&gt;&lt;p style="font-family: trebuchet ms;"&gt;You can get additional information about the drive, prizes, as well as all of those questions not already answered by visiting: &lt;a href="http://donordrive.kottwitz.org/"&gt;http://donordrive.kottwitz.org&lt;/a&gt; By the way, the organization heading the donation drive is a 501(c)(3) just in case there was any worry about that. If you cannot attend, you can order a "typing kit" online for $52 - all costs are tax deductible either way and they also accept monetary donations for those who do not meet the health requirements.&lt;/p&gt;&lt;p style="font-family: trebuchet ms;"&gt;Again, please share this information with others  who may be willing to help. An official flier is on the home page of the website that was setup. If anyone is interested in posting the information at their office or church, they can reference that image or I can send you a copy.&lt;/p&gt;&lt;p style="font-family: trebuchet ms;"&gt;Again, we are grateful to anyone willing to participate. Thank you and have a great day!&lt;/p&gt;&lt;p style="font-family: trebuchet ms;"&gt;If you have questions you can also contact me via Grand Central - located on the right. (Please leave a message though)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-5984935575400990335?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/5984935575400990335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=5984935575400990335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/5984935575400990335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/5984935575400990335'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2008/09/we-need-you.html' title='We Need YOU!'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01761189954217808878</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-8736229325622464884</id><published>2008-06-07T22:00:00.004-05:00</published><updated>2008-10-09T07:46:26.085-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Power of SQL: Indexing and sorting</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Coldfusion Muse recently made a couple of posts about &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://www.coldfusionmuse.com/index.cfm/2008/5/28/clustered.indexes"&gt;clustered indexes&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt; on SQL Server. I was commenting off the grid to the Muse that the timely post helped me in solving a data import issue.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;To protect the innocent, and make things less prone to narcoleptic episodes, I had the following scenario:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;- An Access Database with Categories and Products.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;- The First product listed in a category was a "special" product. Problem: There wasn't any information that would indicate that product was the first one.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Example Data:&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;category_id&lt;/th&gt;&lt;th&gt;product_id&lt;/th&gt;&lt;th&gt;product_name&lt;/th&gt;&lt;th&gt;...&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Red Jumbo Ball&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Green Jumbo Ball&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Blue Jumbo Ball&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Purple People Eater&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;Yellow Submarine&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;White Christmas&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;Once imported, I knew the data was at the whim of the database which meant that I needed to "preserve" the order prior to importing the data. I added another column "autonumber" on my products table in Access.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Once imported, I could set the clustered index to the "autoNum" column in SQL and know the sort order was correct! Of course, it never hurts to add an order by to your select statement. There are many factors that can affect sorting, clustered indexes are just one factor.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-8736229325622464884?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/8736229325622464884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=8736229325622464884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/8736229325622464884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/8736229325622464884'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2008/06/power-of-sql-indexing-and-sorting.html' title='Power of SQL: Indexing and sorting'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-4845496078619095370</id><published>2008-05-07T11:06:00.010-05:00</published><updated>2008-11-06T14:05:09.900-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><category scheme='http://www.blogger.com/atom/ns#' term='ColdFusion'/><title type='text'>FFF CSS Menus Over Flex, Flash and Flash Forms</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Recently I came across the issue where I needed to change from an old menu design to a CSS drop-down menu. (Similar to the way File, Edit .... Help works).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;The main application was Flash based content - which presented me with a problem. The issue is that the CSS content drops behind the flash content.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Fortunately, the solution is easier than I thought.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Add This to your Object tag:&lt;/span&gt;&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;&amp;lt;param name="wmode" value="transparent" /&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:trebuchet ms;"&gt;If you use version detection, make sure you add it in there. It will look something like this:&lt;/span&gt;&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;AC_FL_RunContent(&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;"wmode","transparent",&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;If you still have Flash Forms for ColdFusion laying around, just add the following to your CFFORM tag:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;wmode="transparent" (note that this goes in the tag, along with your format="flash" attribute.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;If others know of pitfalls or have a sexier solution, by all means - share. :)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-4845496078619095370?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/4845496078619095370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=4845496078619095370' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/4845496078619095370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/4845496078619095370'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2008/05/fff-css-menus-over-flex-flash-and-flash.html' title='FFF CSS Menus Over Flex, Flash and Flash Forms'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-788763848925750192</id><published>2008-04-12T18:15:00.002-05:00</published><updated>2008-04-14T09:19:07.454-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Prism: Bridging the gap ...</title><content type='html'>I've recently become aware of a desktop application called &lt;a href="http://labs.mozilla.com/2007/10/prism/"&gt;Prism&lt;/a&gt;. This application (6.66MB) in size installs as a desktop app, when you run it, it prompts you for the following information:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_apG3KGmOp-E/SAEaawN9SfI/AAAAAAAAAMI/2I9Kq9Xtv5s/s1600-h/prism.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_apG3KGmOp-E/SAEaawN9SfI/AAAAAAAAAMI/2I9Kq9Xtv5s/s400/prism.jpg" alt="" id="BLOGGER_PHOTO_ID_5188457292629887474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After you add the URL of the website, and give it a name you are good to go. From there, you have a shortcut icon that starts that site up every time - just like its a desktop application.&lt;br /&gt;&lt;br /&gt;Why is this useful? Let's backup a bit ...&lt;br /&gt;I have long been a fan of &lt;a href="http://www.meebo.com/"&gt;Meebo&lt;/a&gt; - as well as other sites like google documents. In fact, they are among the FIRST that I startup on any given day. Firfox Browser (with certain "startup" sites), Internet Exploer, Safari,  &lt;a href="http://www.mozilla.com/en-US/thunderbird/"&gt;Thunderbird&lt;/a&gt;, SQL Enterprise Manager, Query Analyzer, Eclipse ... but this also leads to an eventual problem. &lt;a href="http://www.mozilla.com/en-US/firefox/?from=sfx&amp;amp;aid=1785438"&gt;Firefox&lt;/a&gt; (my browser of choice) gets bloated and needs a restart every two or three days. While I love the fact that FF has so many &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/60"&gt;developer tools&lt;/a&gt;, from the ability to &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/573"&gt;add / edit cookies&lt;/a&gt;, to being able to inspect and modify the source code of a page using &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843"&gt;firebug&lt;/a&gt; - and even intercepting and tampering with page requests ... (we'll come back to this in a sec)&lt;br /&gt;&lt;br /&gt;When I found meebo, I fell in love with it for a couple reasons:&lt;br /&gt;1) I never have to update Trillian (or whatever software) again!&lt;br /&gt;2) It supported everything I used.&lt;br /&gt;3) I could use it at the library or on a friend's computer without hosing up his configuration.&lt;br /&gt;Okay, for those that care, that was three and there are more reasons to like it, but I don't really think you care right now - let's tie this back into Prism.&lt;br /&gt;&lt;br /&gt;What I didn't like about Meebo was the fact that when I closed my browser, it knocked me off the grid! It also hindered my development efforts when I was &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/966"&gt;tampering data&lt;/a&gt;. (Read more about that when I finish writing the entry) Meebo continuously sends requests back and forth with the server - hence the concept of "instant" messaging. Google Mail or reader is just as bad, even if you don't have chat enabled on it. This is because of the way AJAX works - but this hindered the ability to get meaningful tampering / inspection done.&lt;br /&gt;&lt;br /&gt;Moving these "web applications" off as Prism apps is the solution I've been looking for! I can close / reboot my browser (or even let it crash) without being annoyed that its dropping me from the grid, or interrupting that email to my Aunt. I can focus on developing applications without someone "pinging me" and interrupting me by having the tab flash their message (drawing valuable seconds away from my code). Speaking of rebooting the browser, at some point in the future ... I'm planning on featuring FFox and some tools I have found to be useful as a developer.&lt;br /&gt;&lt;br /&gt;A few random thoughts about this:&lt;br /&gt;- I don't like that there is only one icon for Prism, and it doesn't use the website icon (if there was one to begin with).&lt;br /&gt;- I don't like the fact that ads pop up in a new prism window, but then again, if I wanted a site to pop up in a new window, this is helpful.&lt;br /&gt;- There is a menu in the bottom-right corner to "Install to Desktop" - this puts the current page as an icon on your desktop, so if you were looking to "control" your kids browsing with this tool - forget it. They will just litter the desktop with thousands (or dozens) of shortcuts.&lt;br /&gt;- This doesn't replace Adobe AIR, which allows for more feature-rich use of apps - like the ability to use the application offline. Prism is an on-the-grid-only application.&lt;br /&gt;- If you setup the site as "https://" - it gives you the padlock in the bottom-right menu, but it doesn't allow you to inspect the security certificate. That's a bummer, but most people won't ever look at one, even though they should.&lt;br /&gt;- If you setup an icon for Gmail on one account and setup an icon for Gmail for another account, they will NOT share the same session.&lt;br /&gt;- Interestingly, if you setup an icon for Gmail and one for Google, they DO share the same session. If anyone knows how to make sure they do not share the same session on the same profile, fire away!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-788763848925750192?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/788763848925750192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=788763848925750192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/788763848925750192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/788763848925750192'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2008/04/prism-bridging-gap.html' title='Prism: Bridging the gap ...'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_apG3KGmOp-E/SAEaawN9SfI/AAAAAAAAAMI/2I9Kq9Xtv5s/s72-c/prism.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-4658078937755705974</id><published>2008-03-11T09:00:00.004-05:00</published><updated>2008-10-09T07:49:46.612-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ColdFusion'/><title type='text'>CFML to be Open Source (for Blue Dragon)</title><content type='html'>&lt;span style="font-family: trebuchet ms;"&gt;Blue Dragon (A CFML server similar to Adobe's ColdFusion Server) has announced a dual-license where the basic CFML based &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://blog.newatlanta.com/index.cfm?mode=entry&amp;amp;entry=EABF951D-453A-486E-9647E2825D1E6F39"&gt;Blue Dragon server&lt;/a&gt;&lt;span style="font-family: trebuchet ms;"&gt; will be open source. This is smilar to the way &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt;&lt;span style="font-family: trebuchet ms;"&gt; is! This means that for those who want to "pop the hood" and customize it (like Google did for their database) - they can.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;I'll let you read details there, but the first code drop will be released "near" June 2008 - same time as &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://cfunited.com/"&gt;CF United 2008&lt;/a&gt;&lt;span style="font-family: trebuchet ms;"&gt;!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;There is no word yet as to whether this changes anything for Adobe, but in my mind, choices are a GOOD thing. Since the source code has not been released yet, right now this doesn't mean much (IMHO) other than a PR move for New Atlanta / Blue Dragon. Still, I will certainly be downloading and popping that hood myself when the option comes. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Updated: 03/14/2008 - Clarify what this means for the CF Community.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-4658078937755705974?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/4658078937755705974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=4658078937755705974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/4658078937755705974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/4658078937755705974'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2008/03/cfml-to-be-open-source-for-blue-dragon.html' title='CFML to be Open Source (for Blue Dragon)'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-7078374625546645828</id><published>2008-03-07T16:14:00.005-06:00</published><updated>2008-10-09T07:49:07.935-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Power of SQL: Insert from Select</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;Continuing the discussion of the  &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://phillyun.blogspot.com/search?q=Power+of+SQL"&gt;Power of SQL&lt;/a&gt;&lt;span style="font-family: trebuchet ms;"&gt;. I came a situation where I wanted to move data from one table to another (without using DTS). How do you get the data moved over with just ONE SQL statement and no temp tables or complicated programming?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Consider the following example:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: courier new;"&gt;INSERT into foo2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;(col, col2,col3)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;select col,col2,col3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;from foo1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;where destination='foo2'&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;I hope that helps!&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/8392508371021961521-7078374625546645828?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/7078374625546645828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=7078374625546645828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/7078374625546645828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/7078374625546645828'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2008/03/power-of-sql-insert-from-select.html' title='Power of SQL: Insert from Select'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-8111579519370867641</id><published>2008-03-06T22:25:00.005-06:00</published><updated>2008-03-06T23:40:54.414-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ColdFusion'/><title type='text'>Excel file with CFcontent</title><content type='html'>It is extremely easy to give your customers access to an Excel file containing their data.&lt;br /&gt;&lt;br /&gt;The key is a nicely formatted HTML table, with correctly placed cfheader/cfcontent tags.&lt;br /&gt;Consider the following example:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;cfsetting showdebugoutput="no"&amp;gt;&lt;br /&gt;&amp;lt;cfheader name="Content-Disposition" value="attachment;filename=""My File Name.xls"""&amp;gt;&lt;br /&gt;&amp;lt;cfcontent type="application/msexcel;charset=utf-16"&amp;gt;&lt;br /&gt;&amp;lt;table&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;th&amp;gt;Color&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;lt;th&amp;gt;Code&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;red&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;#ff0000&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;green&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;#00ff00&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;blue&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;#0000ff&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;cfabort&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you have any other tips or ideas feel free to share them!&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/8392508371021961521-8111579519370867641?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/8111579519370867641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=8111579519370867641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/8111579519370867641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/8111579519370867641'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2008/03/excel-file-with-cfcontent.html' title='Excel file with CFcontent'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-6359634813049506630</id><published>2008-02-20T08:07:00.004-06:00</published><updated>2008-02-20T10:25:27.359-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='USA'/><title type='text'>Welcome Home Atlantis</title><content type='html'>Just a quick note to welcome home the Atlantis crew!&lt;br /&gt;&lt;b&gt;&lt;br /&gt;STS-122 Quick Stats...&lt;/b&gt;&lt;br /&gt;121st mission&lt;br /&gt;24th flight for Atlantis&lt;br /&gt;5.3Million miles&lt;br /&gt;&lt;br /&gt;... priceless!&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-6359634813049506630?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/6359634813049506630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=6359634813049506630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/6359634813049506630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/6359634813049506630'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2008/02/welcome-home-atlantis.html' title='Welcome Home Atlantis'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-479458735642253286</id><published>2007-12-19T08:33:00.001-06:00</published><updated>2008-03-14T14:22:57.410-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Power of SQL</title><content type='html'>Update: This is a part of a series now called "&lt;a href="http://phillyun.blogspot.com/search?q=Power+of+SQL"&gt;Power of SQL&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;As a former developer at an &lt;a href="http://www.nebraskaworkforce.com/"&gt;elite government organization&lt;/a&gt;, I had the opportunity to leverage some of this SQL functionality. I had the opportunity to work on a project where they had a text file dump of Driver's license information. They also had a file dump (Select * from all_employees_of_all_employers_in_the_state). These statistics could show that a certain age, sex, ethnicity or even height of a person could help determine the wage of a person for a certain industry. If there was a similar correlation that short people get paid less than tall people, in a similar way that &lt;a href="http://www.bls.gov/opub/ted/2004/oct/wk4/art01.htm"&gt;women get paid less than men&lt;/a&gt;, that could be a huge discovery to the &lt;a href="http://news.google.com/news?hl=en&amp;amp;um=1&amp;amp;tab=wn&amp;amp;q=growth+hormone+supplements&amp;amp;btnG=Search+News"&gt;HGH Industry&lt;/a&gt; - but I digress.&lt;br /&gt;&lt;br /&gt;This program was to tie some "statistical" driver's license information collected by the state DMV to the wage information already collected under existing labor laws by NWD-DOL. After the program ties this information together OIT was then supposed to make sure the program would remove the "identifying" information (the coveted SSN), and then pass it along to the appropriate department (LMI). The program was inefficient and needed to have it optimized.&lt;br /&gt;&lt;br /&gt;I opened the code up and like many programs I worked on, I was not terribly shocked by what I saw. Here is the pseudo-code:&lt;br /&gt;&lt;blockquote&gt;Select * from wage_info Into wages&lt;br /&gt;Select * from dmv_info into dmv&lt;br /&gt;BEGIN LOOP dmv&lt;br /&gt; -- The dmv clearly shows that SSNs are not unique and are recycled.&lt;br /&gt; IF dmv.deceased = 0&lt;br /&gt;     BEGIN LOOP wages&lt;br /&gt;         IF wages.ssn = dmv.ssn&lt;br /&gt;            insert into dmv_wage_match&lt;br /&gt;         /IF&lt;br /&gt;          END LOOP&lt;br /&gt;  /IF&lt;br /&gt;END LOOP&lt;br /&gt;Select * from dmv_wage_match into obfuscate&lt;br /&gt;Set id = 0&lt;br /&gt;BEGIN LOOP obfuscate&lt;br /&gt;  set id = id+1&lt;br /&gt;  update dmv_wage_match&lt;br /&gt;  set ssn = #id#&lt;br /&gt;  where ssn = #obfuscate.ssn#&lt;br /&gt;END LOOP&lt;br /&gt;&lt;/blockquote&gt;So let me break this down for you. If there are 1,200,000 DMV records and 900,000 wage records, with a 750,000 of them that match ... well, you get the idea, the program was bloated.&lt;br /&gt;&lt;br /&gt;Here's what I updated the code to:&lt;br /&gt;&lt;blockquote&gt;INSERT INTO dmv_wage_match&lt;br /&gt;select d.sex, d.height, d.weight, d.eye, d.hair, w.amount, w.industry_code ...&lt;br /&gt;from dmv_info d&lt;br /&gt;join wage_info w&lt;br /&gt;on d.ssn = w.ssn&lt;br /&gt;where d.deceased = 0&lt;br /&gt;&lt;/blockquote&gt;In this case, dmv_wage_match had an identity field that served to obfuscate the actual SSN. This also elegantly avoids the tedious insert / update that was being done in the previous version. This version ran in a few seconds as compared to the previous version that took almost an hour! Now that's an improvement.&lt;br /&gt;&lt;br /&gt;This is a VERY simple example, but I continue to be amazed by the power of SQL. The key in my opinion though is knowing what SQL can do and then asking the right question, for example, "How can SQL do some of the heavy lifting for me?".&lt;br /&gt;&lt;br /&gt;I hope this helps give some insight into those who are still using a spreadsheet or *tisk tisk* text files and then trying to do something meaningful with them. Yes, they hold data, but so does the phonebook. If you're not convinced yet, tell me, by glancing through the phonebook, what are all of your neighbor's names and phone numbers who share your street name? Please post back how long that took you, I'm sure the &lt;!-- smart --&gt; readers would be interested in knowing&lt;!-- who the really dumb readers are and where they live --&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-479458735642253286?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/479458735642253286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=479458735642253286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/479458735642253286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/479458735642253286'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2007/12/power-of-sql.html' title='Power of SQL'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-4745466315710405432</id><published>2007-12-17T08:20:00.000-06:00</published><updated>2007-12-17T08:32:36.033-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='ColdFusion'/><title type='text'>Barcodes in ColdFusion</title><content type='html'>One of the brilliant minds that I have the pleasure to work with at &lt;a href="http://www.cfwebtools.com/"&gt;CF WebTools&lt;/a&gt;, Ryan,  has just released information on &lt;a href="http://www.stillnetstudios.com/2007/12/15/2d-barcodes-coldfusion/"&gt;generating and reading 2D barcodes in ColdFusion&lt;/a&gt;. I won't steal his thunder by writing about it in too much detail her&lt;span style="font-size:100%;"&gt;e, &lt;/span&gt;&lt;span style="font-size:100%;"&gt;read about it at &lt;a href="http://www.stillnetstudios.com/"&gt;Stillnet Studios&lt;/a&gt;.&lt;br /&gt;I believe this example needs ColdFusion 8, but ple&lt;/span&gt;ase post back if anyone has accomplished this with earlier versions, we'd love to see the CFC extended!&lt;br /&gt;&lt;br /&gt;Thank you Ryan for sharing this with us!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-4745466315710405432?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/4745466315710405432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=4745466315710405432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/4745466315710405432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/4745466315710405432'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2007/12/barcodes-in-coldfusion.html' title='Barcodes in ColdFusion'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-2999937531834932508</id><published>2007-11-15T22:01:00.000-06:00</published><updated>2007-11-15T22:12:07.252-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Phishing - Part I</title><content type='html'>&lt;span style="font-family: trebuchet ms;"&gt;This is Part I in what I hope will be a muli-part series on phishing.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Here is a &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="https://www.paypal.com/fightphishing"&gt;brief quiz on phishing&lt;/a&gt;&lt;span style="font-family: trebuchet ms;"&gt; that I came across this evening.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;I'm happy to report I got 5 out of 5 correct and have been labeled as a "PayPal Anti-Phishing Champion" ... now why do I not feel all warm and fuzzy inside? The reality is that we are all at risk in some way or another, from a simple typo in the URL to clicking a link in email, because - well, lets face it - its easier that way! There's a lot more to cover here, stay tuned!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-2999937531834932508?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/2999937531834932508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=2999937531834932508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/2999937531834932508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/2999937531834932508'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2007/11/phishing-part-i.html' title='Phishing - Part I'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01761189954217808878</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-2613369227263430673</id><published>2007-11-15T16:55:00.002-06:00</published><updated>2007-11-15T16:59:36.773-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patches'/><category scheme='http://www.blogger.com/atom/ns#' term='ColdFusion'/><title type='text'>ColdFusion 8 hotfix 2</title><content type='html'>I just realized that &lt;a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402792&amp;amp;sliceId=1"&gt;ColdFusion 8 hotfix 2&lt;/a&gt; is now available! Details there.&lt;br /&gt;&lt;br /&gt;This is typical - I just did a new install of a download from Monday.&lt;br /&gt;&lt;br /&gt;Now back to your regularly scheduled development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-2613369227263430673?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/2613369227263430673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=2613369227263430673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/2613369227263430673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/2613369227263430673'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2007/11/coldfusion-8-hotfix-2.html' title='ColdFusion 8 hotfix 2'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8392508371021961521.post-9199601693272154956</id><published>2007-11-09T08:03:00.000-06:00</published><updated>2007-11-09T08:54:42.069-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Unintended Consequences</title><content type='html'>I have found in my meager and short development career that even the easy things may not be so easy or obvious. Simple "user experience enhancements" that Microsoft has added are not really enhancements when you believe your site is saying "Please dick here", that is clearly an unintended consequence.&lt;br /&gt;&lt;br /&gt;It all started when I turned on my machine and was alerted to the fact that Real Player has a &lt;a href="http://service.real.com/realplayer/security/191007_player/en/"&gt;security flaw&lt;/a&gt;. Okay, things happen and my hat tips to any company who fixes and alerts / nags the end-user to update.&lt;br /&gt;&lt;br /&gt;The unfortunate thing here (as I saw it) were the following two things:&lt;br /&gt;&lt;br /&gt;1) The patch tried to launch Real Player and initiate the update, but Real Player Froze. I personally was able to "patch" this flaw by uninstalling Real Player. HA! (Off-topic here, so I won't go any further with that).&lt;br /&gt;&lt;br /&gt;2) The text "PLEASE CLICK HERE" immediately grabbed my attention and I thought I must have hit a phishing site or some other malware site. (more on phishing and malware another day). It appeared that the site was saying "Please dick here ..."!!&lt;br /&gt;&lt;br /&gt;Here is what I saw in Internet Explorer:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_apG3KGmOp-E/RzRtTwXPvcI/AAAAAAAAALM/cnXMRryS9cw/s1600-h/real_IE.gif"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_apG3KGmOp-E/RzRtTwXPvcI/AAAAAAAAALM/cnXMRryS9cw/s400/real_IE.gif" alt="" id="BLOGGER_PHOTO_ID_5130846061649182146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;I was dumbfounded when seeing this and out of curiosity, I looked in Firefox to see if there was difference on the font, there was:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_apG3KGmOp-E/RzRtKAXPvbI/AAAAAAAAALE/TG3tjei0IaM/s1600-h/real_FF.gif"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_apG3KGmOp-E/RzRtKAXPvbI/AAAAAAAAALE/TG3tjei0IaM/s400/real_FF.gif" alt="" id="BLOGGER_PHOTO_ID_5130845894145457586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is subtle, but you can certainly see a space between the "c" and the "l" on "click" in Firefox. After looking into this, I determined this is because of Microsoft's anti-aliasing attempts to make text more readable. To tweak this you should and get the best "user experience" visit the &lt;a href="http://www.microsoft.com/typography/ClearTypeInfo.mspx"&gt;Windows ClearType Tuner page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Good luck and safe browsing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8392508371021961521-9199601693272154956?l=phillyun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phillyun.blogspot.com/feeds/9199601693272154956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8392508371021961521&amp;postID=9199601693272154956' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/9199601693272154956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8392508371021961521/posts/default/9199601693272154956'/><link rel='alternate' type='text/html' href='http://phillyun.blogspot.com/2007/11/unintended-consequences.html' title='Unintended Consequences'/><author><name>Phillyun</name><uri>http://www.blogger.com/profile/01128000798018366820</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_apG3KGmOp-E/RzRtTwXPvcI/AAAAAAAAALM/cnXMRryS9cw/s72-c/real_IE.gif' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
