<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>use strict;</title>
	<link>http://www.joelango.com</link>
	<description>Life is too short to write bad SQL.</description>
	<pubDate>Fri, 26 Oct 2007 01:45:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1</generator>
	<language>en</language>
			<item>
		<title>File Systems and Fun</title>
		<link>http://www.joelango.com/2007/10/25/file-systems-and-fun/</link>
		<comments>http://www.joelango.com/2007/10/25/file-systems-and-fun/#comments</comments>
		<pubDate>Fri, 26 Oct 2007 01:45:29 +0000</pubDate>
		<dc:creator>jlango</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Flamebait]]></category>

		<category><![CDATA[My Month of Mac]]></category>

		<guid isPermaLink="false">http://www.joelango.com/2007/10/25/file-systems-and-fun/</guid>
		<description><![CDATA[Cross-platform file copying is fun
Last week, my Windows partition on my MacBook Pro died.
During my restore (yes I had back ups), I realized that my backup drive is formatted in HFS+, which means I could not copy the files to my new Windows partition.
Whoops
Luckily, I am not the only one with the desire to read [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Cross-platform file copying is fun</strong></p>
<p>Last week, my Windows partition on my MacBook Pro died.<br />
During my restore (yes I had back ups), I realized that my backup drive is formatted in <a target="_blank" href="http://en.wikipedia.org/wiki/HFS_Plus">HFS+</a>, which means I could not copy the files to my new Windows partition.<br />
Whoops</p>
<p>Luckily, I am not the only one with the desire to read HFS+ from Windows.<br />
I found someone who wrote a <a target="_blank" href="http://hem.bredband.net/catacombae/hfsx.html">nice program</a> that lets you do this.<br />
It really made my day. check it out if you ever need to read OS X shares.</p>
<p><strong>Code Monkey likes TAB and Mountain Dew</strong></p>
<p>If you are a programmer, I bet you&#8217;ll enjoy <a target="_blank" href="http://www.jonathanblock.com/?p=116">this video</a>.<br />
You might have heard the song before, it&#8217;s the theme song for the <a target="_blank" href="http://www.g4tv.com/codemonkeys/index.html">Codemonkeys</a> cartoon on G4.</p>
<p>Okay, so no one watches G4, but like me, you might have seen the commercial for the show.<br />
I still love the song and this video though.</p>
<p><em>Thanks for the video JB</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelango.com/2007/10/25/file-systems-and-fun/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The first 10 Days in the Macintosh Wilderness</title>
		<link>http://www.joelango.com/2007/06/11/the-first-10-days-in-the-macintosh-wilderness/</link>
		<comments>http://www.joelango.com/2007/06/11/the-first-10-days-in-the-macintosh-wilderness/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 02:18:15 +0000</pubDate>
		<dc:creator>jlango</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[My Month of Mac]]></category>

		<guid isPermaLink="false">http://www.joelango.com/2007/06/11/the-first-10-days-in-the-macintosh-wilderness/</guid>
		<description><![CDATA[Well, I am 10 days into my Month of Macintosh, and I have some things to report.
Renaming files in Finder is easy, but not very intuitive.  Thanks to these folks for showing me the way.
Macs have some interesting screen capture options, but to execute them you need flexible fingers.
A client sent me an MS [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I am 10 days into my Month of Macintosh, and I have some things to report.</p>
<p>Renaming files in Finder is easy, but not very intuitive.  Thanks to <a href="http://ocaoimh.ie/2007/01/07/how-to-rename-a-file-in-mac-os-x/" target="_blank">these folks</a> for showing me the way.</p>
<p>Macs have some interesting screen capture options, but to execute them you need flexible fingers.</p>
<p>A client sent me an MS Word doument.  This client likes to do very &#8216;fancy&#8217; things in MS Word, such as overlaying text fields on top of images.  As a result, I spent a good amount of time searching for a Mac/UNIX friendly program that would read this file correctly.  Purchasing Office for Mac was not an option; I think giving Microsoft more money defeats the purpose of this game.  Besides, I already have a Windows copy of Office, and I refuse to buy another one.</p>
<p>After trying a <a href="http://www.winfield.demon.nl/#Mac%20OS%20X" target="_blank">couple</a> <a href="http://www.icword.com/" target="_blank">programs</a>, I came across <a href="http://neooffice.org" target="_blank">NeoOffice</a>, a port of <a href="http://www.openoffice.org/" target="_blank">OpenOffice</a> to the Mac&#8217;s Cocoa GUI.  It rocks!</p>
<p>I have a lot of new keyboard shortcuts to learn.  Some of the Mac shortcuts make more sense than their Windows counterparts, though.  At this point, I am comfortable using COMMAND-[ and ] to go Back and Forward in Mac Firefox.</p>
<p><a href="http://cyberduck.ch/" target="_blank">Cyberduck</a> is a great FTP client.</p>
<p>I waste too much time staring at and configuring my Dashboard. <a href="http://www.apple.com/downloads/dashboard/status/istatpro.html" target="_blank">iStat Pro</a> is one hot widget!</p>
<p>I am enjoying my time in Macintosh world so far.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelango.com/2007/06/11/the-first-10-days-in-the-macintosh-wilderness/feed/</wfw:commentRss>
		</item>
		<item>
		<title>My Month of Macintosh</title>
		<link>http://www.joelango.com/2007/06/04/my-month-of-macintosh/</link>
		<comments>http://www.joelango.com/2007/06/04/my-month-of-macintosh/#comments</comments>
		<pubDate>Mon, 04 Jun 2007 21:01:02 +0000</pubDate>
		<dc:creator>jlango</dc:creator>
		
		<category><![CDATA[Computing]]></category>

		<category><![CDATA[Flamebait]]></category>

		<category><![CDATA[My Month of Mac]]></category>

		<guid isPermaLink="false">http://www.joelango.com/2007/06/04/my-month-of-macintosh/</guid>
		<description><![CDATA[I bought a 15&#8243; Intel MacBook Pro last November, and I set it up to dual-boot Win XP and OS X.
It is my primary workstation, but I hardly ever use the OS X partition (okay, stop booing).
I aim to change this practice, or at least to give OS X a fair shot.
So, until the end [...]]]></description>
			<content:encoded><![CDATA[<p>I bought a 15&#8243; <a href="http://www.apple.com/macbookpro/" target="_blank">Intel MacBook Pro</a> last November, and I set it up to dual-boot Win XP and OS X.</p>
<p>It is my primary workstation, but I hardly ever use the OS X partition (okay, stop booing).</p>
<p>I aim to change this practice, or at least to give OS X a fair shot.</p>
<p>So, until the end of this month, I will use my OS X installation exclusively.  When I need to do something and I don&#8217;t know the Mac way, I will research it and post about it here.</p>
<p>I was going to title this &#8220;30 Days of Mac&#8221;, but I&#8217;m a big fan of alliteration.</p>
<p>I kicked this off last weekend.  I will post my first impressions later.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelango.com/2007/06/04/my-month-of-macintosh/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MY First Look at ColdFusion 8 (Scorpio)</title>
		<link>http://www.joelango.com/2007/06/01/my-first-look-at-coldfusion-8-scorpio/</link>
		<comments>http://www.joelango.com/2007/06/01/my-first-look-at-coldfusion-8-scorpio/#comments</comments>
		<pubDate>Fri, 01 Jun 2007 20:55:18 +0000</pubDate>
		<dc:creator>jlango</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.joelango.com/2007/06/01/my-first-look-at-coldfusion-8-scorpio/</guid>
		<description><![CDATA[

Last week, I saw a 2-hour demonstration of the newest version of ColdFusion.
The CF development team showed off all the new bells and whistles, and I liked quite a few of them.
Here is a rundown of a few things I saw during my formal introduction to Scorpio.



Implicit Array and Structure creation
At last, ColdFusion developers can [...]]]></description>
			<content:encoded><![CDATA[<table border="0" cellPadding="3" cellSpacing="3">
<tr>
<td>Last week, I saw a 2-hour demonstration of the newest version of ColdFusion.<br />
The CF development team showed off all the new bells and whistles, and I liked quite a few of them.</p>
<p>Here is a rundown of a few things I saw during my formal introduction to Scorpio.</td>
<td><a href="http://www.joelango.com/wp-content/uploads/2007/06/scorpio1.gif" title="scorpio1.gif"><img src="http://www.joelango.com/wp-content/uploads/2007/06/scorpio1.gif" alt="scorpio1.gif" /></a></td>
</tr>
</table>
<p><strong>Implicit Array and Structure creation</strong><br />
At last, ColdFusion developers can create arrays like other languages!<br />
Well, sort of&#8230;<br />
Here is how to implicitly create an array.<br />
<code><br />
&lt;cfset arAwesome="['one','2','three']"/&gt;<br />
</code><br />
You can create implicit structures in a similar fashion.<br />
<code><br />
&lt;cfset structWicked = {flea = 'germaine',arch='Roman',lucky=5}/&gt;<br />
</code></p>
<p><strong>Support for JavaScript/C-style operators</strong><br />
You can increment/decrement counter variables and perform other functions using ++, +=, and others.<br />
The support isn&#8217;t 100%, but it presents a nice alternative to the classic CF/VB 6 &#8220;myCounter = myCounter + 1&#8243; syntax.</p>
<p>Scorpio also will introduce new comparison operators.<br />
However, you still can&#8217;t use &gt; or &lt; because they are CF tag boundaries.<br />
Please note that the old comparison operators (gt, greaterthan, gte) work the same as ever.</p>
<p><strong>CFSTOREDPROC and CFQUERYPARAM work with the &#8216;cachedWithin&#8217; attribute!</strong><br />
What more can I say about this? How about SWEET! Get out there and cache some queries!</p>
<p><strong>Thread Management Tools</strong><br />
You can use the new CFCACHE tag to create multiple concurrant threads in your ColdFusion applications. Hot!</p>
<p><strong>Built-In Server Monitoring Tool</strong><br />
I use <a target="_blank" href="http://www.seefusion.com">SeeFusion</a> to monitor my ColdFusion MX 7 servers.<br />
Scorpio will have a built-in monitoring tool that looks even better. It tracks <em>everything</em>for your application server!</p>
<p><strong>Microsoft Exchange Hooks</strong><br />
Scorpio will let your code interact with a Microsoft Exchange server.<br />
At long last, I can write a web application to replace Outlook!</p>
<p><strong>Better Image Manipulation</strong><br />
Use the CFIMAGE tag to crop, rotate, and skew your images from within ColdFusion.</p>
<p><strong>Built-In AJAX/Web 2.0 Support</strong><br />
Scorpio comes with Yahoo&#8217;s <a target="_blank" href="http://developer.yahoo.com/yui/">YUI framework</a> built in. You can use this for all your Web 2.0 needs. This does not prevent you from using a different JavaScript framework, though.</p>
<p><strong>PDF Support</strong><br />
Since Adobe bought Macromedia, most of us have been waiting for PDF integration for ColdFusion. Here it is!<br />
With the new CFPDF tag you can do a lot more PDF manipulation.<br />
You also will have the ability to use a PDF form as a front-end for a CF application.</p>
<p>There are a few other new features, like reporting changes, on-the-fly Adobe Breeze presentations, and the ability to invoke Microsoft .NET components.</p>
<p>I don&#8217;t know about you all, but I am looking forward to the release of Scorpio!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelango.com/2007/06/01/my-first-look-at-coldfusion-8-scorpio/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why You Should Never Use SELECT Star (*)</title>
		<link>http://www.joelango.com/2007/04/30/why-you-should-never-use-select-star/</link>
		<comments>http://www.joelango.com/2007/04/30/why-you-should-never-use-select-star/#comments</comments>
		<pubDate>Mon, 30 Apr 2007 19:27:03 +0000</pubDate>
		<dc:creator>jlango</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Database]]></category>

		<guid isPermaLink="false">http://www.joelango.com/2007/04/30/why-you-should-never-use-select-star/</guid>
		<description><![CDATA[I think that nearly everyone who does database programming writes a statement like this at some point:

SELECT *
FROM tblFoo F
WHERE F.pah = 791

Most database programmers should (and do) know not to do this. However, at my job I am constantly finding old SELECT * queries, usually because they broke something.
This aggravates me. As a public [...]]]></description>
			<content:encoded><![CDATA[<p>I think that nearly everyone who does database programming writes a statement like this at some point:<br />
<code><br />
SELECT *<br />
FROM tblFoo F<br />
WHERE F.pah = 791<br />
</code></p>
<p>Most database programmers should (and do) know not to do this. However, at my job I am constantly finding old SELECT * queries, usually because they broke something.<br />
This aggravates me. As a public service, I will discuss my reasons why you should never use SELECT *.</p>
<p><strong>It makes adding fields a pain.</strong><br />
When you run a SELECT *, most databases will cache which fields are returned from this. This means that if you add a field to a table, an existing SELECT * query will not return the field!.<br />
For example, let&#8217;s consider the following table and query:<br />
<code><br />
CREATE TABLE dbo.user_table (<br />
user_id int IDENTITY (1, 1) NOT NULL ,<br />
user_name varchar (50) NOT NULL ,<br />
password varchar(50) NULL ,<br />
email varchar(100) NOT NULL ,<br />
date_time_created smalldatetime NOT NULL<br />
)<br />
</code><code><br />
SELECT *<br />
FROM user_table<br />
</code></p>
<p>If we add a field, &#8216;vchMajor&#8217; to this table, our query will not retrieve it. This is generally considered a bad thing.<br />
It&#8217;s better to write the query like this:<br />
<code><br />
SELECT<br />
user_id,<br />
user_name,<br />
password,<br />
email,<br />
date_time_created<br />
FROM user_table<br />
</code><br />
You have to add new fields by hand either way, but this way is a lot less misleading.</p>
<p><strong>It wastes database resources.</strong><br />
If I need to join across 5 tables to retrieve a set of 5 fields, why the heck would I want to return every field in all 5 tables?<br />
That is potentially a huge waste of memory, for no reason! I would much rather type field names out than waste memory on the database server. When querying a database, I am always looking for a result set with a defined set of fields.<br />
Honestly, if you find it necessary to pull an undefined set of fields (or whole tables), you should revisit your application design.</p>
<p><strong>It can break your application.</strong><br />
Here is a problem I found at work recently.<br />
Here is the meat of a stored procedure in our app:<br />
<code><br />
IF EXISTS(<br />
SELECT U.*<br />
FROM User_Table U WITH(NOLOCK)<br />
WHERE U.user_id = @iUser_ID<br />
AND U.Paper_ID = @iPaper_ID)<br />
SELECT @isOK = 1<br />
ELSE<br />
SELECT @isOK = 0<br />
</code></p>
<p>This procedure generated the following error:<br />
<em>&#8220;The text, ntext, and image data types are invalid in this subquery or aggregate expression.&#8221;</em><br />
This error occurred because SELECT * brought back an ntext field. Why would you ever use a SELECT * in an EXISTS block? This is a very bad practice, even if it did not break the application.</p>
<p>A few weeks ago, I received a flood of error emails from my search application.<br />
The problem revolved around a ColdFusion query of queries which UNIONs two queries together. The source queries used SELECT *. SELECT * and ColdFusion&#8217;s query of query duck typing caused my app to go boom. The solution was to defined the fields in the source queries, and explicitly cast them as the datatypes I expect.<br />
While SELECT * was not the entire problem, it was part of it. I could have debugged it in half the time if the fields were defined explicitly in the source query.</p>
<p><strong>The Exception That Proves the Rule?</strong><br />
Okay, I know that this is contrary to my entire argument, but I do use SELECT * under one condition.<br />
I will occasionally run something like this in Query Analyzer<br />
<code><br />
SELECT TOP 1 *<br />
FROM User_Table<br />
ORDER By dtCreated DESC<br />
</code><br />
I will use this while testing certain conditions in a development server, but I never use it to drive an application. I guess I should have titled this post &#8220;Why You Should (Almost) Never Use SELECT *&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelango.com/2007/04/30/why-you-should-never-use-select-star/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The  times, they are a&#8217; changin&#8217;&#8230;you, me, and the new DST</title>
		<link>http://www.joelango.com/2007/03/09/the-times-they-are-a-changinyou-me-and-the-new-dst/</link>
		<comments>http://www.joelango.com/2007/03/09/the-times-they-are-a-changinyou-me-and-the-new-dst/#comments</comments>
		<pubDate>Fri, 09 Mar 2007 16:50:14 +0000</pubDate>
		<dc:creator>jlango</dc:creator>
		
		<category><![CDATA[Administration]]></category>

		<guid isPermaLink="false">http://www.joelango.com/?p=7</guid>
		<description><![CDATA[The new Daylights Saving Time (DST) begins on March 11.  Most people will barely notice the change, but we technology folks get to go patch crazy.
I work in a ColdFusion shop, so today we are upgrading the Java Virtual Machine (JVM) for about 30 web servers.  Fun stuff!
Sometimes, Adobe documentation is pretty crappy. [...]]]></description>
			<content:encoded><![CDATA[<p>The new Daylights Saving Time (DST) begins on March 11.  Most people will barely notice the change, but we technology folks get to go patch crazy.</p>
<p>I work in a <a href="http://www.adobe.com/products/coldfusion/" target="_blank">ColdFusion</a> shop, so today we are upgrading the Java Virtual Machine (JVM) for about 30 web servers.  Fun stuff!</p>
<p>Sometimes, Adobe documentation is pretty crappy.  Here is their <a href="http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=d2ab4470" target="_blank">Technote</a> on the DST change and ColdFusion.  The Technote tells you to upgrade ColdFusion&#8217;s JVM, but doesn&#8217;t tell you how!  Thanks, Adobe!<br />
I did some digging, and eventually found this <a href="http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=2d547983" target="_blank">Technote</a> on how to upgrade the JVM, but what a waste of my time!</p>
<p>Luckily, there was a discussion on <a href="http://www.houseoffusion.com/groups/CF-Talk/" target="_blank">CF-Talk</a> about the DST patch, and the people there hooked me up with some great resources.</p>
<p>So far, the score is CF-Talk: 1, Adobe: 0.  ColdFusion developers, if you&#8217;re not on the CF-Talk mailing list, what are you thinking??</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelango.com/2007/03/09/the-times-they-are-a-changinyou-me-and-the-new-dst/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Shout Out</title>
		<link>http://www.joelango.com/2007/02/02/shout-out/</link>
		<comments>http://www.joelango.com/2007/02/02/shout-out/#comments</comments>
		<pubDate>Fri, 02 Feb 2007 17:30:54 +0000</pubDate>
		<dc:creator>jlango</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[/dev/random]]></category>

		<guid isPermaLink="false">http://www.joelango.com/?p=5</guid>
		<description><![CDATA[<img src="http://www.joelango.com/wp-content/uploads/2007/02/asterisk.JPG" alt="asterisk.JPG" /><br/>
I just wanted to give a shout out to one of my favorite characters: the asterisk.
]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.joelango.com/wp-content/uploads/2007/02/asterisk.JPG" alt="asterisk.JPG" /><br />
I just wanted to give  a shout out to one of my favorite characters: the asterisk.</p>
<p>The asterisk is awesome!  It looks great in a code page, <span style="font-style: italic">and</span> it can multiply, too!  Lets see you top that, pound sign (#)!  Ha, you can&#8217;t do it!</p>
<p>So, whether I am calculating compound interest or documenting some killer source code, I can always count on the asterisk.</p>
<p>Here&#8217;s to you, buddy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelango.com/2007/02/02/shout-out/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
