<?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-13120931</id><updated>2011-04-21T19:26:21.775-07:00</updated><title type='text'>RattleBoard</title><subtitle type='html'>Tips, tricks, useful links, insightful and oddly humorous observations as well as helpful information for hybrid webmasters — who design, develop, implement, maintain and troubleshoot web applications and online solutions.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rattleboard.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>75</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13120931.post-115386307533551420</id><published>2006-07-25T14:31:00.000-07:00</published><updated>2006-07-26T06:48:25.343-07:00</updated><title type='text'>Ken Jennings Suspended</title><content type='html'>&lt;p&gt;After making some unkind remarks about the game show Jeopardy and its host Alex Trebek, Ken Jennings&amp;rsquo; web site has been suspended.&lt;/p&gt;&lt;p&gt;&lt;img alt="Ken_jennings_com_s" src="http://www.humdinger-media.com/rattleboard/ken_jennings_com_s.gif" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.ksl.com/?nid=148&amp;amp;sid=380756"&gt;Local TV station KSL posted an Associated Press story&lt;/a&gt; that indicated Ken Jennings (who allegedly won $2.5 million on Jeopard in 2004) was taking some cheap shots at Jeopardy. At the bottom of the story was a link to&amp;nbsp;&lt;a href="http://www.ken-jennings.com/"&gt;http://www.ken-jennings.com&lt;/a&gt;; however, attempting to link to Ken Jennings&amp;rsquo; web site (hosted on box 79 at &lt;a href="http://www.bluehost.com/"&gt;www.bluehost.com&lt;/a&gt;) resulted in the &amp;ldquo;This Account Has Exceeded Its CPU Quota&amp;rdquo; message.&lt;/p&gt;&lt;p&gt;And while Ken Jennings insinuated that Alex Trebek was either a robot or a cyborg, developed by engineers after the &amp;ldquo;real&amp;rdquo; Alex Trebek allegedly died in a fiery car crash, his web site might be consuming too many resources, possibly because of inefficiently running scripts (according to the message provided by Jennings&amp;rsquo; web hosting company). Not too big a deal &amp;mdash; unless of course, you a) are a software engineer, b) your site attracts a lot of web traffic and c) your name is Ken Jennings&amp;nbsp;.&lt;/p&gt;&lt;p&gt;Is it possible that the &amp;ldquo;real&amp;rdquo; Ken Jennings never really appeared on Jeopardy but instead sent his robot counterpart to Jeopardy?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-115386307533551420?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115386307533551420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115386307533551420'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/07/ken-jennigs-suspended.html' title='Ken Jennings Suspended'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-115383882765803042</id><published>2006-07-25T07:47:00.000-07:00</published><updated>2006-07-25T08:02:56.850-07:00</updated><title type='text'>SQL Server :: Profiler :: Open Traces</title><content type='html'>&lt;p&gt;Lately, I&amp;rsquo;ve been doing a lot of troubleshooting on some newly implemented reports in our web application. The problem (slow overall performance) was caused by some SQL queries, and in order to figure out what was taking up a lot of CPU power and execution time, I ran Profiler over a remote desktop connection.&lt;/p&gt;&lt;p&gt;Unfortunately, our Internet connection here in the office is not the most stable connection in the world. And since I have to connect by way of a Virtual Private Network (VPN), I run the risk of getting twice (remote desktop connection + VPN) as soon as we experience even the slightest connection hiccup. Of course, this happens to me on a regular basis.&lt;/p&gt;&lt;p&gt;So, a few days ago, I got disconnected again, leaving my Profiler session running (basically as an orphaned session). To make a long story short, when I finally regained consciousness, er,&amp;nbsp;access to the database server, the actual Profiler window had disappeared, but I was still getting new trace files (since I had been saving the trace output to file).&lt;/p&gt;&lt;p&gt;Task Manager was at a loss, too, as there was no sign of profiler.exe anywhere. And the excellent free &lt;a href="http://www.sysinternals.com/Utilities/ProcessExplorer.html"&gt;Process Explorer form SysInternals&lt;/a&gt; did not uncover any easily identifiable Profiler processes either. There had to be someone else who experienced something like this before, right? Yes.&lt;/p&gt;&lt;p&gt;Enter &lt;a href="http://codebetter.com/blogs/steve.hebert/archive/2006/06/15/146457.aspx"&gt;Steve Herbert&lt;/a&gt; who offered&amp;nbsp;the following solution (ideally executed by way of Query Analyzer):&lt;/p&gt;&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;p&gt;&lt;strong&gt;select * from :: fn_trace_getinfo(default)&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;If there are any running traces, this query will display a table with trace-related information. If all of the above fits your situation, take special note of the Trace ID(s), and then run the following command to first close and then stop each running trace:&lt;/p&gt;&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#009f00"&gt;-- STOP ALL RUNNING TRACES&lt;br /&gt;&lt;/font&gt;sp_trace_setstatus 1, 0&lt;br /&gt;sp_trace_setstatus 3, 0&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#009f00"&gt;-- CLOSE ALL RUNNING TRACES&lt;br /&gt;&lt;/font&gt;sp_trace_setstatus 1, 2&lt;br /&gt;sp_trace_setstatus 3, 2&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;In my example, the integer immediately following sp_trace_setstatus is the Trace ID. I should also add that&amp;nbsp;SQL Server 2005 apparently always has running trace available, unless you disable it (see the comments on Steve Herbert&amp;rsquo;s post for &lt;a href="http://codebetter.com/blogs/steve.hebert/archive/2006/06/15/146457.aspx"&gt;more links and information&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#9a9a9a"&gt;Tags:&lt;/font&gt;&lt;/strong&gt; SQL Server 2000, Profiler, profiler.exe, task manager, sp_trace_setstatus, fn_trace_getinfo, trace&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-115383882765803042?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115383882765803042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115383882765803042'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/07/sql-server-profiler-open-traces.html' title='SQL Server :: Profiler :: Open Traces'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-115351338064998185</id><published>2006-07-21T13:23:00.000-07:00</published><updated>2006-07-21T13:23:00.723-07:00</updated><title type='text'>RTF and DOC Files in IE</title><content type='html'>&lt;p&gt;Some time during the last few weeks, Microsoft must have released a Security Patch or Windows Update that tightened down security between Internet Explorer (IE) and MS Office documents.&lt;/p&gt;&lt;p&gt;We&amp;rsquo;ve been getting a lot of calls lately from clients who are using our web application to upload HR related forms, notes and other documents in PDF, RTF and DOC format. Those documents are then linked to the clients&amp;rsquo; customized web GUI and can be retrieved easily by clicking on the corresponding links.&lt;/p&gt;&lt;p&gt;However, it seems that quite a few people &amp;mdash; including some of our internal staff &amp;mdash; were no longer able to open RTF and DOC files in IE. Bummer in the summer. Of course, since IE displays an error message when that occurs, I was tasked with getting this fixed, because &amp;ldquo;it was working a week ago, and now it&amp;rsquo;s not working anymore, and we just don&amp;rsquo;t think that all of our users have been screwing up their systems at the same time. So it must be something on the server.&amp;rdquo;&lt;/p&gt;&lt;p&gt;Great. To make a long story short, I went off-site to log in as a client and witnessed first-hand that the RTF and DOC links were no longer working. (My problem is, I have to be able to see the problem myself and re-create an error scenario . . . just hearing someone else describe it to me doesn&amp;rsquo;t do the trick. Just the facts, m&amp;rsquo;am!)&lt;/p&gt;&lt;p&gt;However, as oon as I added the HTTPS web site to the Trusted Sites in IE, everything worked just fine again. On top of all of that, the links were working as expected in Firefox and Opera, so I&amp;rsquo;m 99.99&amp;nbsp;percent positive that Microsoft tightened security somewhere during the past few weeks.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-115351338064998185?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115351338064998185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115351338064998185'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/07/rtf-and-doc-files-in-ie.html' title='RTF and DOC Files in IE'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-115316585640049757</id><published>2006-07-17T12:50:00.000-07:00</published><updated>2006-07-17T12:50:56.446-07:00</updated><title type='text'>Determining the Data Type in Classic ASP</title><content type='html'>&lt;p&gt;When we implemented BrowserHawk into our web application, we were presented with an astonishing array of information, ranging from the end-user&amp;rsquo;s available color depth to&amp;nbsp;Java options and just about everything in between.&lt;/p&gt;&lt;p&gt;By and large, that information is easy to digest, evaluate and re-use throughout the web application. However, when I recently added another browser detection variable throughout the web application (does the user have Flash enabled in the browser, and if so, which version?), I ran into some issues that could have easily been prevented had I remembered the VBScript VarType() function.&lt;/p&gt;&lt;p&gt;Instead, I presumed I could grab the version number, convert it to an integer (just to make sure) and run with it. Well, it turns out that not everyone in this hemisphere has the Flash plug-in&amp;hellip;and some people happen to have astonishingly old versions of that plug-in installed. But who am I to criticize those people?&lt;/p&gt;&lt;p&gt;So, I think I&amp;rsquo;ve perfected the interpretation of all possible Flash version variables that BrowserHawk could throw at me, like so:&lt;/p&gt;&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;If NOT IsNull(bhObj.Plugin_FlashVerEx) OR NOT IsEmpty(bhObj.Plugin_FlashVerEx) Then&lt;br /&gt;&amp;nbsp;If VarType(bhObj.Plugin_FlashVerEx) = 8 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;Session("Flash") = CInt(Left(bhObj.Plugin_FlashVerEx, 1))&lt;br /&gt;&amp;nbsp;Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;Session("Flash") = Left(bhObj.Plugin_FlashVerEx, 1)&lt;br /&gt;&amp;nbsp;End If&lt;br /&gt;Else&lt;br /&gt;&amp;nbsp;Session("Flash") = 0&lt;br /&gt;End If&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;If NOT IsEmpty(Session("Flash")) AND NOT ISNull(Session("Flash")) Then&lt;br /&gt;&amp;nbsp;If VarType(Session("Flash")) &amp;lt;&amp;gt; 2 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;Session("Flash") = CInt(Session("Flash"))&lt;br /&gt;&amp;nbsp;End If&lt;br /&gt;Else&lt;br /&gt;&amp;nbsp;Session("Flash") = 0&lt;br /&gt;End If&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;FYI:&lt;/strong&gt; bhObj.Plugin_FlashVerEx returns the specific version of the Flash plug-in that&amp;rsquo;s available to the current web browser. If the end-user has more than one web browser installed, chances are that they are using various versions of the Flash plug-in.&lt;/p&gt;&lt;p&gt;Basically, this code snippet examines the variable that&amp;rsquo;s returned by BrowserHawk. If it&amp;rsquo;s empty or NULL, then we&amp;rsquo;ll set it to 0. If the VarType() function determines that the variable data type is 8 (string), then we&amp;rsquo;ll convert it to an integer. The LEFT() function makes sure we only get one character returned &amp;mdash; and I guess, I&amp;rsquo;ll have to re-address this issue when Flash Player 10 comes out. For the time being, however, this will do. (The bhObj.Plugin_FlashVerEx variable returns funky information, similar to 7,0,7,7.)&lt;/p&gt;&lt;p&gt;If I wanted to be extra careful, I could add an IsNumeric() check before converting the one character to an integer; however, at the present, BrowserHawk does always return an integer (albeit in string format) as the first character for this particular variable.&lt;/p&gt;&lt;p&gt;For what it&amp;rsquo;s worth.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-115316585640049757?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115316585640049757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115316585640049757'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/07/determining-data-type-in-classic-asp.html' title='Determining the Data Type in Classic ASP'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-115315918518474986</id><published>2006-07-17T10:59:00.000-07:00</published><updated>2006-07-17T11:11:35.716-07:00</updated><title type='text'>Use ALTER DATABASE to reduce FILEGROWTH . . .</title><content type='html'>&lt;p&gt;Since I did some (unpaid) upgrading and security patching on our production servers this last Saturday, I really thought Monday was going to be a breeze. Nonetheless, this morning right before 9:00 am, we received a ton of &amp;ldquo;timeout expired&amp;rdquo; errors from our web application.&lt;/p&gt;&lt;p&gt;When I remotely logged into the SQL Server 2000 database server, I noticed an intersting entry in the Event Viewer:&lt;/p&gt;&lt;p&gt;&lt;img alt="File_growth" src="http://www.humdinger-media.com/rattleboard/file_growth.gif" border="0" /&gt;&lt;/p&gt;&lt;p&gt;I found that mildly disturbing, since I had never seen that kind of issue before during the last three years. Of course, I immediately Google-d this issue to death and came to the conclusion that the Microsoft documentation was as helpful as always. NOT! The documentation does mention FILEGROWTH but does not provide clear information on how to implement it (other than when it comes to creating a database or adding files to an existing database).&lt;/p&gt;&lt;p&gt;Luckily, some others have noticed similar SQL Server FILEGROWTH issues and published their findings as well. So, I&amp;rsquo;m following suit, knowing very well that this article is merely provided to remind myself about this issue the next time it comes up &amp;mdash; rather than some kind of ingenious original discussion of FILEGROWTH.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;On to the good stuff&lt;br /&gt;&lt;/strong&gt;First of all, I wanted to know what the current FILEGROWTH settings were either for the data file or the log file. Here&amp;rsquo;s how I did that:&lt;/p&gt;&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;EXEC sp_helpdb NAME_OF_YOUR_DATABASE&lt;br /&gt;GO&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;That displayed some very basic but useful information about the database in question &amp;mdash; and included the current FILEGROWTH settings. With that information I was able to adjust the FILEGROWTH accordingly. Since I have plenty of available disk space on the server partition that holds the LOG file, I decided to &amp;ldquo;up&amp;rdquo; the FILEGROWTH from 1024KB to 5%, like so:&lt;/p&gt;&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;ALTER DATABASE your_database&lt;br /&gt;MODIFY FILE (NAME = your_database_Log, FILEGROWTH = 5%)&lt;br /&gt;GO&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;After that, I ran the sp_heldb command again to see if things had changed, and everything looked all right. However, some SQL Server 2005 users have reported that this setting might not stick after a reboot and actually turn into a ridiculously high value (such as 2160%). So next time I get to reboot the production database server (probably on Saturday), I&amp;rsquo;ll have to follow up on this and see what happens.&lt;/p&gt;&lt;p&gt;For now, everything seems to be working well again.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Event Viewer Message:&lt;/strong&gt; Autogrow of file 'database_log' in database 'database' cancelled or timed out after 15 ms. Use ALTER DATABASE to set a smaller FILEGROWTH or to set a new size.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Related Links:&lt;/strong&gt; &lt;a title="New KB Article on SQL Server 2005 File Growth Bug - MySQL, SQL Server, Microsoft Windows and related topics..." href="http://blogs.sqlservercentral.com/blogs/brian_kelley/archive/2006/07/13/665.aspx"&gt;Brian Kelley Blog&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; SQL SERVER 2000, FILEGROWTH, MSSQLSERVER, error, log file, ALTER DATABASE, autogrow, cancelled, timed out, Monday&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-115315918518474986?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115315918518474986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115315918518474986'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/07/use-alter-database-to-reduce.html' title='Use ALTER DATABASE to reduce FILEGROWTH . . .'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-115273832766036616</id><published>2006-07-12T14:05:00.000-07:00</published><updated>2006-07-12T14:05:27.700-07:00</updated><title type='text'>Web Application Security</title><content type='html'>&lt;p&gt;Last week, I had the opportunity to visit with the CEO of a successful web applications development company. He told me that &amp;mdash; in his system &amp;mdash;&amp;nbsp;users are authorized on every page throughout the entire web application.&lt;/p&gt;&lt;p&gt;Although I didn&amp;rsquo;t think the situation was appropriate to nail him down on the details, it made me think about security in my own web applications. Most of my web applications code is written in Classic ASP that I inherited from previous developers. And most of that code contains numerous SQL Server database calls.&lt;/p&gt;&lt;p&gt;Some of you may know what I&amp;rsquo;m talking about: &lt;/p&gt;&lt;p&gt;1) Issue a SQL statement that retrieves some basic information from the database.&lt;br /&gt;2) If there is a valid record, use the ID from the previously retrieved row and get some more information.&lt;br /&gt;3) If that worked out all right, do something else (an&amp;nbsp;UPDATE or an INSERT, for example).&lt;/p&gt;&lt;p&gt;And sometimes, this goes on an on for many lines of code. I still remember the &amp;ldquo;old developer&amp;rdquo; telling me that all of this performs lightning fast on his development system. Yeah, right, one user. Big deal. So, by the time I implemented Stored Procedures (to reduce bandwidth problems and query timeouts, among other things), the &amp;ldquo;old developer&amp;rdquo; started feeling a bit uneasy and eventually stopped working for us.&lt;/p&gt;&lt;p&gt;At any rate, here I am still trying to mildly refactor a web application, using Stored Procedures (SP) to spiff up things. Oh, you&amp;rsquo;re wondering where I&amp;rsquo;m going with this? The point is that SQL Server SPs are an excellent way to implement system security, too.&lt;/p&gt;&lt;p&gt;For the last little while, I have been rewriting some of the web application code, and while I was ripping out old and redundant ASP-based SQL, and replaced it with SPs, I started validating some basic things in every SP.&lt;/p&gt;&lt;p&gt;For example, in our human resources related web application, the logged in user can add and edit personnel information. And although there&amp;rsquo;s never been a great risk as far as &amp;ldquo;hackers&amp;rdquo; getting into the system to change somebody&amp;rsquo;s employment history and so forth, I started making sure that this won&amp;rsquo;t happen.&lt;/p&gt;&lt;p&gt;So, at the top of every SP, I now query the database to find out if the user who is logged in and the employee whose information is getting edited belong to the same company. If they don&amp;rsquo;t, the SP returns a custom error code. Next, I check the IDs of anything that needs to get updated. Sometimes, that means going to more than one table to &amp;ldquo;make the connection&amp;rdquo; and retrieve the needed information. If that ID matches up with the expected data, let&amp;rsquo;s go ahead and log everything &amp;ldquo;BEFORE&amp;rdquo; to the change table, then make the actual update. If there&amp;rsquo;s a mis-match, however, we&amp;rsquo;ll raise a custom error and exit the SP.&lt;/p&gt;&lt;p&gt;And so forth and so on. It&amp;rsquo;s about as mundane as it sounds, and sometimes it really gets to me to be coding this kind of security into every SP (even though I have my own macro tool and other keystroke-saving techniques). However, when a client calls and claims that he can&amp;rsquo;t do a certain thing because our &amp;ldquo;stupid&amp;rdquo; system won&amp;rsquo;t let him, it&amp;rsquo;s nice to be able to look up some information in the change table and in&amp;nbsp;our web application log table, and then tell the client that he&amp;rsquo;s not supposed to intercept HTTP-requests,&amp;nbsp;alter form values and then try to pass the information t our system, expecting it to work.&lt;/p&gt;&lt;p&gt;Another thing that&amp;rsquo;s neat is to watch a co-worker try to mess with all kinds of SQL injection (both manually and automated) and not get anywhere. Hey, I&amp;rsquo;m not saying I&amp;rsquo;m the sharpest knife in the kitchen drawer, and I&amp;rsquo;m always looking for ways to improve what I&amp;rsquo;m doing &amp;mdash; all I&amp;rsquo;m saying is that it&amp;rsquo;s nice when intentionally designed system security starts paying off.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-115273832766036616?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115273832766036616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115273832766036616'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/07/web-application-security.html' title='Web Application Security'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-115100057198532375</id><published>2006-06-22T11:22:00.000-07:00</published><updated>2006-06-22T11:29:34.526-07:00</updated><title type='text'>How interactive can you get for $1 million?</title><content type='html'>&lt;p&gt;Would you like to become an Interaction Designer for up to $1,000,000.00/year?&lt;/p&gt;&lt;p&gt;I know for sure that for that amount of money, I could design a heck of an interaction. &lt;a href="http://jobsearch.monster.com/getjob.asp?JobID=44672736&amp;amp;aid=36720554-2166&amp;amp;WT.mc_n=MKT000125&amp;amp;WT.mns_tc_jaint=control"&gt;Check out the jop posting&lt;/a&gt; before it disappears.&lt;/p&gt;&lt;p&gt;&lt;img alt="Milliondollarjob" src="http://www.humdinger-media.com/rattleboard/milliondollarjob.gif" border="0" /&gt;&lt;/p&gt;&lt;p&gt;The company looking for an Interaction Designer is &lt;a href="http://www.nextpage.com/"&gt;NextPage&lt;/a&gt;, a Utah-based company that has been fiddling around with document management for years. They re-thought their entire product line and future a few years ago and seem to know now what they want.&lt;/p&gt;&lt;p&gt;Several years ago, I used to work on some projects for NextPage as a consultant. They had a very nice and bright crew, and they were eager to get much accomplished. However, the management team basically reorganized and restructured the company and its product line, so it was difficult for some of those nice people to stay on. I think just about everyone I used to work with at NextPage has since jumped ship.&lt;/p&gt;&lt;p&gt;Still, $1 million per year is a nice chunk of change. Makes you think, doesn&amp;rsquo;t it?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.nextpage.com/about/employment/interaction-designer.htm"&gt;Alternate job posting on NextPage&amp;rsquo;s web site, without the dollar figure.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-115100057198532375?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115100057198532375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115100057198532375'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/06/how-interactive-can-you-get-for-1.html' title='How interactive can you get for $1 million?'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-115039651658890794</id><published>2006-06-15T11:35:00.000-07:00</published><updated>2006-06-15T11:35:16.666-07:00</updated><title type='text'>ASP 0138 Errors</title><content type='html'>&lt;p&gt;You just made a little tweak to your ASP page, tinkered around with some JavaScript, modified a little bit of CSS, and now you&amp;rsquo;re ready to test the revised page.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;KA-BOOM!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;All of a sudden, you&amp;rsquo;re getting 0138 errors, indicating that somehow you&amp;rsquo;ve nested one &lt;strong&gt;&lt;font face="couri"&gt;&amp;lt;script&amp;hellip;&amp;gt;&lt;/font&gt;&lt;/strong&gt; tag inside another.&lt;/p&gt;&lt;p&gt;The problem is: You didn&amp;rsquo;t!&lt;/p&gt;&lt;p&gt;Even after reviewing the generated source code and analyzing every &lt;strong&gt;&amp;lt;script&amp;hellip;&amp;gt;&lt;/strong&gt; tag, you can&amp;rsquo;t see anything wrong with your code. A quick trip to Google confirms that only careless coders will get this error, or something to that effct. And yet, you&amp;rsquo;ve taken great pains to make sure that everything is correct. Plus, the only thing you&amp;rsquo;ve changed has already been changed on many other pages . . . successfully.&lt;/p&gt;&lt;p&gt;Now what?&lt;/p&gt;&lt;p&gt;As ridiculous as it may seem, one way to solve this problem is the following:&lt;/p&gt;&lt;p&gt;1. Find the inline JavaScript, you know, the line that looks similar to this &lt;strong&gt;&lt;font face="cour"&gt;&amp;lt;script type=&amp;rdquo;text/javascript&amp;rdquo; language=&amp;rdquo;JavaScript&amp;rdquo;&amp;gt;&lt;/font&gt;&lt;/strong&gt;. &amp;ldquo;Inline&amp;rdquo; means that it shows up somewhere&amp;nbsp;else in your code than in the &lt;strong&gt;&lt;font face="cour"&gt;&amp;lt;head&amp;gt;&lt;/font&gt;&lt;/strong&gt; section.&lt;/p&gt;&lt;p&gt;2. Break it up. Classic ASP / VBScript gets &amp;ldquo;very nervous&amp;rdquo; when it encounters inline &lt;strong&gt;&lt;font face="cour"&gt;&amp;lt;script&amp;hellip;&amp;gt;&lt;/font&gt;&lt;/strong&gt; tags under certain conditions. Try something like this:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font face="cour"&gt;&amp;lt;%&lt;br /&gt;Response.Write("&amp;lt;scr" &amp;amp; "ipt type=""text/javascr" &amp;amp; "ipt""&amp;gt;")&lt;br /&gt;%&amp;gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;It sounds and looks ridiculous, right? However, the errors most likely go away unless, of course, you&amp;rsquo;ve actually nested one &lt;strong&gt;&amp;lt;script&amp;hellip;&amp;gt;&lt;/strong&gt; tag inside another.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Additional resources:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://forums.devx.com/showthread.php?t=10243&amp;amp;goto=nextoldest"&gt;Forum Discussion on DevX&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.aspfaq.com/show.asp?id=2294"&gt;SQL Server 200 &amp;amp; ASP&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.milonic.com/mfa/2004-September/005013.html"&gt;Milonic&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-115039651658890794?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115039651658890794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/115039651658890794'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/06/asp-0138-errors.html' title='ASP 0138 Errors'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-114987234733515106</id><published>2006-06-09T09:59:00.000-07:00</published><updated>2006-06-09T09:59:07.416-07:00</updated><title type='text'>IE7 CSS Hacks</title><content type='html'>&lt;p&gt;Just in case you were wondering what&amp;rsquo;s going to change and how much retro-fitting you&amp;rsquo;ll have to do for your clients when the masses (?) start upgrading and switching to IE7, here&amp;rsquo;s &lt;a href="http://nanobox.chipx86.com/blog/2006/04/easy-css-hacks-for-ie7.php"&gt;a very well written and documented article that outlines IE CSS hacks&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;As is common with any technical issue, there are evangelists and practicioners, there are Microsofties and OpenSourcerers and purists &amp;mdash; and all camps are represented in the article&amp;rsquo;s accompanying comment section.&lt;/p&gt;&lt;p&gt;Still, if you need IE7&amp;ndash;specific information, this article is a great read. Especially since one of my favorite CSS hacks might now no longer be supported in FireFox only:&lt;/p&gt;&lt;p&gt;&lt;font face="cour" color="#008000" size="2"&gt;&lt;strong&gt;/* FIREFOX */&lt;br /&gt;html&amp;gt;body #addToMaster {height: 20px;}&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;As the author Nanobot points out:&lt;/p&gt;&lt;p id="p2006.4.28.22.56:3"&gt;&lt;font face="Courier" color="#0000ff" size="2"&gt;If a simple selector is missing on either side of the child combinator (&lt;code&gt;&amp;gt;&lt;/code&gt;), Internet Explorer 7 incorrectly assumes that the missing simple selector is a universal selector. So &lt;code&gt;&amp;gt;body&lt;/code&gt; is treated by IE7 like &lt;code&gt;*&amp;gt;body&lt;/code&gt;, while other browsers ignore it because it's a parsing error. Similarly, IE7 treats &lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt; like &lt;code&gt;*&amp;gt;*&amp;gt;*&lt;/code&gt;. &lt;/font&gt;&lt;/p&gt;&lt;p id="p2006.4.28.22.56:4"&gt;&lt;font face="Courier" color="#0000ff" size="2"&gt;IE7 has the same quirk with other combinators. &lt;code&gt;+p&lt;/code&gt; is treated like &lt;code&gt;*+p&lt;/code&gt; and &lt;code&gt;~p&lt;/code&gt; is treated like &lt;code&gt;*~p&lt;/code&gt;. (Note: The &lt;code&gt;~&lt;/code&gt; combinator is an upcoming CSS 3 feature and is not valid CSS 2.1.)&lt;/font&gt;&lt;/p&gt;&lt;p id="p2006.4.28.22.56:5"&gt;&lt;font size="2"&gt;&lt;font face="Courier"&gt;&lt;font color="#0000ff"&gt;&lt;code&gt;&amp;gt;body {}&lt;/code&gt; selects the body element in &lt;strong&gt;IE 7 only&lt;/strong&gt;. It may or may not work in future versions. Warning: this uses &lt;strong&gt;invalid CSS&lt;/strong&gt;!&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-114987234733515106?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114987234733515106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114987234733515106'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/06/ie7-css-hacks.html' title='IE7 CSS Hacks'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-114778916238941328</id><published>2006-05-16T07:19:00.000-07:00</published><updated>2006-05-16T07:31:33.936-07:00</updated><title type='text'>North Carolina: Web Designer/Web Developer</title><content type='html'>&lt;p&gt;The family needs to relocate to North Carolina. My wife has elderly family members there and wants to be able to take care of them.&lt;/p&gt;&lt;p&gt;So, I&amp;rsquo;m looking for a career (not an 8 to 5 job) within approximately 30 to 45 minutes driving distance from Mount Airy, North Carolina. I love that part of the United States, and Winston-Salem seems to have a lot of high-tech industry happenings.&lt;/p&gt;&lt;p&gt;At any rate, if anyone knows of an opportunity, please let me know. I see myself designing, developing, executing and managing web applications, online solutions, multimedia tools and rich-media/e-mail/Internet campaigns for sales, marketing and eduction. Aside from front-end GUI design and development, I am also very proficient and experienced at developing middle-tier solutions in ASP, PHP and some C#. On the back-end of things, I feel very comfortable administering SQL Server 2000, writing T-SQL stored procedures and working with MySQL.&lt;/p&gt;&lt;p&gt;For what it&amp;rsquo;s worth, I also use Photoshop on an almost daily basis, do my fair share of video editing and am doing a lot of marketing related things (such as designing brochures, re-designing web sites and search engine optimization).&lt;/p&gt;&lt;p&gt;I&amp;rsquo;m fairly adept at maintaining servers and networks, and I am always ready, willing and able to learn new technologies, improve existing processes and think of ways to reduce technology related costs.&lt;/p&gt;&lt;p&gt;If you think you know of a good fit, please contact me at dee at humdinger-media dot com. Thanks much.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Tags: Mount Airy, Mt. Airy, NC, N.C., North Carolina, Surry County, Winston-Salem, Dobson, Eden, Reidsville, Boon, web design, web development, web site designer, web site developer, web application developer, ASP, IIS, SQL Server, Photoshop, Flash, video editing, HTML, XHTML, DHTML, CSS, ASP.NET, T-SQL, JavaScript, VBScript, Microsoft Access, Microsoft Office, audio editing, podcast, project manager, e-commerce, e-mail, server administrator, database administrator, DBA&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-114778916238941328?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114778916238941328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114778916238941328'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/05/north-carolina-web-designerweb.html' title='North Carolina: Web Designer/Web Developer'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-114778857631337534</id><published>2006-05-16T07:09:00.000-07:00</published><updated>2006-05-16T07:09:36.373-07:00</updated><title type='text'>Flash Video Streaming . . .</title><content type='html'>&lt;p&gt;&lt;strong&gt;Flash Professional 8: Lessons Learned&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;OK, so even if all of Marketing and the CEO think that streaming a product demonstration off the company web site at 700 pixels wide and 580 pixels high is a good idea, you must put your foot down and say, &amp;ldquo;Wait a minute!&amp;rdquo;&lt;/p&gt;&lt;p&gt;Nobody does quite that. The best and cleanest example of a decent size Flash and video presentation I&amp;rsquo;ve seen is &lt;a href="https://www.boardroomconnection.com/Default.asp"&gt;The Boardroom Connection&lt;/a&gt;. However, they have very cleverly divided their video stream and their Flash-animated stuff. So, even though at first glance it looks as though it&amp;rsquo;s one large video presentation, it&amp;rsquo;s not. Check out some of the CEO interviews they have posted (they are all available for free), and you&amp;rsquo;ll soon know what I mean.&lt;/p&gt;&lt;p&gt;Back to my conundrum. Even though I&amp;rsquo;ve signed up with a Flash streaming service, the delivery of the video segments is choppy and consequently, the audio stutters quite a bit, especially at the beginning of a stream. In my particular situation, I have two section that showcase six to seven individual segments. For example, section one explains how to use our web application in six simple steps; and section tow explains how to customize our web application in seven possible ways.&lt;/p&gt;&lt;p&gt;Just to rule out some of the basic streaming issues, I&amp;rsquo;ve used six small video segments to stream the content of section one. You can select any one segment by way of the navigation, or you can watch everything from start to finish.&lt;/p&gt;&lt;p&gt;Next, I&amp;rsquo;ve used one long streaming segment for all of the seven customization chapters. That makes for one large file, but using cue points and the corresponding ActionScript, it is quite simple to navigate back and forth or go to any desired point in the segment.&lt;/p&gt;&lt;p&gt;The result? Well, it&amp;rsquo;s about sixes. The smaller video segments stream nicely, but they are choppy at the beginning. Even simple video transitions (direct cuts from one scene to another) appear blurry, however, and there is a bit of an interruption between individual video streams. The long video segment is very choppy at first, but then smoothes out a bit; however, every now and then the audio begins to stutter and the same blurriness that I&amp;rsquo;ve encountered with the small video segments occurs throughout the long video segment as well.&lt;/p&gt;&lt;p&gt;Aside from having to hunt down code samples and ActionScript explanations for all kinds of streaming issues, this was almost fun. I&amp;rsquo;m disappointed, of course, that streaming is still quite limited when it comes to large video display sizes, however. Anything up to 320 x 240 seems to do quite well on the web. However, that&amp;rsquo;s not necessarily a practical size for all purposes. To demonstrate our web application, for example, we could show very little at a time in 320 x 240, or we&amp;rsquo;d have to reduce our screen captures to a ridiculous amount.&lt;/p&gt;&lt;p&gt;Sure, there&amp;rsquo;s always the 30&amp;ndash;day free trial, but you wouldn&amp;rsquo;t believe how many people need to see something before they even consider signing up for the free trial. Back to the re-designing board. We&amp;rsquo;ll just have to focus on key messages and a few highlights from the web application. That&amp;rsquo;s life in 2006.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-114778857631337534?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114778857631337534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114778857631337534'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/05/flash-video-streaming.html' title='Flash Video Streaming . . .'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-114563002546685248</id><published>2006-04-21T07:33:00.000-07:00</published><updated>2006-04-21T07:33:52.166-07:00</updated><title type='text'>Host Six (6) Domains on One Web Hosting Account...</title><content type='html'>&lt;p&gt;&lt;font face="Verdana" color="#808080" size="2"&gt;Now before you accuse me of being on the payroll of anyone that I&amp;rsquo;m writing about, let me make this clear: &lt;a href="http://www.bluehost.com/index.html"&gt;bluehost&lt;/a&gt; is NOT paying me or offering me any favors, discounts or anything else.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;However, this is an incredible deal. For $6.95 a month (if you pre-pay for a few months, otherwise, the month-to-month price is a little higher) you can get a web hosting account with 10GB of hosting space, and you are allowed to host up to six separate domains.&lt;/p&gt;&lt;p&gt;Nope, you don&amp;rsquo;t have to purchase the web domains through &lt;a href="http://www.bluehost.com/index.html"&gt;bluehost&lt;/a&gt;, you can bring your own. They also have free, shared SSL. For your own SSL, you need to pay for a dedicated IP (about $30 per year) and purchase the certificate (around $45 per year).&lt;/p&gt;&lt;p&gt;Monthly web traffic is set to 250GB, and you get all the usual PHP, MySQL, CGI, Ruby on Rails and Perl stuff &amp;mdash; as well as 2,500 POP/IMAP e-mail accounts.&lt;/p&gt;&lt;p&gt;This may or may not seem like a great deal to you, but it looks fantastic to me. &lt;a href="http://totalchoicehosting.com/"&gt;My current web hosting company&lt;/a&gt; (who charges me separately for four hosting accounts for the four domains I currently own and run) is great, too, but they obviously want to make as much money as possible, and I am ready to switch to bluehost. Not because I don&amp;rsquo;t like my old hosting company, but in this day and age, math matters.&lt;/p&gt;&lt;p&gt;Currently, I pay about $99 per domain for the web hosting. Times four equals almost $400. With bluehost, I could have all the services I already have (plus more) for about $84 per year. So I&amp;rsquo;d save approximately . . . carry the one&amp;nbsp;. . . $316. Hmmm, not bad. And everything would be under one roof, so to speak.&lt;/p&gt;&lt;p&gt;Check it out at &lt;a href="http://www.bluehost.com/index.html"&gt;bluehost.com&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-114563002546685248?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114563002546685248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114563002546685248'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/04/host-six-6-domains-on-one-web-hosting.html' title='Host Six (6) Domains on One Web Hosting Account...'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-114484813061028948</id><published>2006-04-12T06:22:00.000-07:00</published><updated>2006-04-12T06:24:21.486-07:00</updated><title type='text'>4GB USB Flash Memory Drive</title><content type='html'>&lt;p&gt;Can you believe this?&lt;/p&gt;&lt;p&gt;A 4GB USB Flash Drive for under $100?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.zipzoomfly.com/jsp/ProductDetail.jsp?ProductCode=84517&amp;amp;email=060411"&gt;&lt;img height="166" alt="4gbusbflashdrive" src="http://www.humdinger-media.com/rattleboard/4gbusbflashdrive.gif" width="204" border="1" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.zipzoomfly.com/jsp/ProductDetail.jsp?ProductCode=84517&amp;amp;email=060411"&gt;Get it a ZipZoomFly&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Hurry up, offer ends Nonday, April 17, 2006. You can put almost as much data on this USB drive as on a standard DVD. Unbelievable.&lt;/p&gt;&lt;p&gt;Remember back in 1993 when a 100MB (that&amp;rsquo;s MEGAbytes) external hard drive was all the rage? It was almost as big as a laptop, weighed a ton and cost an arm and a leg. And now, you can take home your entire project plus all the rich-media files and the software application on a USB drive.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-114484813061028948?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114484813061028948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114484813061028948'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/04/gb-usb-flash-memory-drive.html' title='4GB USB Flash Memory Drive'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-114235257247716895</id><published>2006-03-14T09:09:00.000-07:00</published><updated>2006-03-14T09:09:36.916-07:00</updated><title type='text'>E-Mail Issues</title><content type='html'>&lt;p&gt;So I got to switch the company e-mail services to a new provider.&lt;/p&gt;&lt;p&gt;The previous e-mail provider didn&amp;rsquo;t really want to have to deal with complex issues, and I would imagine, he&amp;rsquo;s probably doing his happy dance around the kitchen table. Every time we called with an issue (such as, &amp;ldquo;Hey, you&amp;rsquo;re blocking our company e-mail messages from getting to a client.&amp;rdquo;), he sounded very distressed on the phone &amp;mdash; probably because he had to stop playing Quake, get dressed and drive over to the data center where the servers were located.&lt;/p&gt;&lt;p&gt;After several weeks of lame excuses, poor results and downright ignorance, we decided to opt out of our contract (to which he did not object in the least) and move on to a more professional outfit.&lt;/p&gt;&lt;p&gt;Funny thing, all of a sudden I am getting my e-mail newsletters again, clients are receiving their e-mail notifications from our web-based application and SPAM is getting deleted off the server. Wow. What a difference a day makes.&lt;/p&gt;&lt;p&gt;All of this new-found joy, of course, came at a price. No matter how small or how large your organization, moving e-mail services is not really what it&amp;rsquo;s cracked up to be.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. Be prepared.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Just in case, we left our existing e-mail services alone and did not tell the current e-mail services provider to turn anything off. Additionally, since we switched over on a Friday evening, we asked everyone to leave their computers and Outlook e-mail clients running. Doing so allowed us to catch all of the e-mail messages that were trickling in while the new mail server was propagating its DNS changes throughout the Internet.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. Stay awake.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Since nobody wants to get interrupted during regular business hours, we planned on making the switch in e-mail providers over the weekend. Throughout Saturday, I was checking up on the transition as much as I could, and very early Monday morning, I went into the office to make sure things were working properly.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. Pay attention to details.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In our case, the only change that was required on the client desktops was to change the user name. This was actually a good thing (although we had to make sure everyone in our organization understood this and did it properly . . . no matter how much or how little technical understanding they had).&lt;/p&gt;&lt;p&gt;It was a good thing, because the existing e-mail service provider was still getting a few messages here and there, and by the time we made the switch, new e-mail messages were arriving properly with the new e-mail service provider. Once we rebooted everyone&amp;rsquo;s computer, the cached connections and so forth got flushed and re-eastablished properly, and life was good again (no kung-fu fighting anywhere).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;A day later, &lt;/strong&gt;I hear fabulous things about e-mail from all kinds of sources. The tech support people are happy, because now (all of a sudden), some clients who were not getting any e-mail from us are now receiving e-mail notifications as they should. Sales and management are happy because the odd e-mail messages with attachments that used to &amp;ldquo;get stuck&amp;rdquo; somehow are now working properly, too. I am happy . . . because everyone else is happy.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-114235257247716895?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114235257247716895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/114235257247716895'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/03/e-mail-issues.html' title='E-Mail Issues'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-113881963653180521</id><published>2006-02-01T11:47:00.000-07:00</published><updated>2006-02-01T11:47:16.646-07:00</updated><title type='text'>IIS 6 and "Response Buffer Limit Exceeded"</title><content type='html'>&lt;p&gt;If your web application has ever thrown one of those errors, you already know that you&amp;rsquo;re in for a treat. &lt;strong&gt;NOT!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;No, seriously, if the code that gets transmitted to the server is larger than IIS has been configured to allow, you&amp;rsquo;ll have to make some changes.&lt;/p&gt;&lt;p&gt;We&amp;rsquo;ve encountered this issue in a web application that was transmitting user information to a database, but it can also happen with attachments.&lt;/p&gt;&lt;p&gt;According to some relevant information from &lt;a href="http://www.fogcreek.com/FogBugz/KB/errors/ResponseBufferLimitExceed.html"&gt;another web development shop&lt;/a&gt;, &amp;ldquo;This change does not require stopping IIS, but to make the Metabase.xml file write-able, you need to go to the IIS control panel, right click the server, select properties, and check off the box that says &amp;lsquo;allow changes to MetaBase configuration while IIS is running&amp;rsquo;.&amp;rdquo;&lt;/p&gt;&lt;p&gt;Additionally, in ASP classic you can also use Response.Flush to send the data to the browser every now and then (for example, within a loop that processes the data), but you should be careful and &lt;a href="http://www.devx.com/vb2themax/Tip/18404"&gt;use Response.Flush judiciously&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.aspronline.com/learn/lessons/4/2.asp"&gt;Click here for an explanation of Response Buffer, Flush and Redirect.&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-113881963653180521?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113881963653180521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113881963653180521'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/02/iis-6-and-response-buffer-limit.html' title='IIS 6 and &quot;Response Buffer Limit Exceeded&quot;'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-113881852714163891</id><published>2006-02-01T11:28:00.000-07:00</published><updated>2006-02-01T11:28:47.563-07:00</updated><title type='text'>Time &amp; Fries</title><content type='html'>&lt;p&gt;Enough said about good intentions. We&amp;rsquo;ve finally pushed live the first 2006 update to &lt;a href="http://www.hrnonline.com/"&gt;Performance Pro&lt;/a&gt;, an excellent online tool for organizations who have realized that the annual performance review could be much less painful if you a) do it online and b) spread it out over the course of a year.&lt;/p&gt;&lt;p&gt;If anyone is interested in more details about Performance Pro, please let me know.&lt;/p&gt;&lt;p&gt;At any rate, as a result of too many hours on the job, a relentless cold that just won&amp;rsquo;t go away and the flu, and kids who have the cold and the flu, my BLOG suffered a little bit.&lt;/p&gt;&lt;p&gt;However, let&amp;rsquo;s move on to the good stuff!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.photoshopkillertips.com/"&gt;Photoshop CS2 Killer Tips&lt;/a&gt;: If you are a hybrid developer &amp;mdash; such as I am&amp;nbsp;&amp;mdash; who programs SQL databases and web applications for three months (and several nights) straight, then gets asked to produce a Flash product tour and a new company brochure . . . you might want to check out Matt Kloskowski&amp;rsquo;s web site.&lt;/p&gt;&lt;p&gt;Next to Scott Kelby, Mr. Kloskowski is an awesome Photoshop mechanic who seems to know more practical tricks about Photoshop than I had imagined. From the above mentioned web site, you can also access &lt;a href="http://www.photoshoptv.com/"&gt;Photoshop TV&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Photoshop TV contains online tutorials and classes for people whose livelihood sometimes depends on getting Photoshop to behave properly. At any rate, there is plenty of free content and extremely cool how-to stuff. Make sure you have a good Internet connection with plenty of bandwidth to stream the episodes &amp;mdash; it will be worth it.&lt;/p&gt;&lt;p&gt;For example, January&amp;rsquo;s episode contains tutorials and tricks pertaining to &amp;ldquo;scrubby sliders,&amp;rdquo; depth of field, using the lens flare filter for special effects and insider information on extraction.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-113881852714163891?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113881852714163891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113881852714163891'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/02/time-fries.html' title='Time &amp; Fries'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-113751558679723580</id><published>2006-01-17T09:33:00.000-07:00</published><updated>2006-01-17T09:33:06.843-07:00</updated><title type='text'>Form Architect</title><content type='html'>&lt;p&gt;OK, so you&amp;rsquo;ve embraced the whole web standards thing and read the Zeldman book. But if you&amp;rsquo;re working on deadline-driven web applications, it&amp;rsquo;s not always practical to spend hours, trying to make things work in CSS &amp;mdash; and dealing with cross-browser compatibility issues for hours on end &amp;mdash; when you could just get everything done and over with nicely, using HTML tables.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.formarchitect.com/"&gt;formArchitect&lt;/a&gt; to the rescue. This ingenious online tool &amp;ldquo;automates the most time-consuming and error prone aspects of form design, saving you not only design time but bug hunting time as well.&amp;rdquo;&lt;/p&gt;&lt;p&gt;Basically, they generate CSS-based code for you &amp;mdash; without using tables &amp;mdash; no matter how complex your HTML form.&lt;/p&gt;&lt;p&gt;Oh, and it&amp;rsquo;s free. It generates form code that will validate to HTML 4.01 Strict DTD. Additionally, you can create multi-column form layouts with unlimited nesting of form elements quickly and easily.&lt;/p&gt;&lt;p&gt;Other nice things about this online tool:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Automatically creates JavaScript validation for form fields&lt;/li&gt;&lt;li&gt;Cross-browser compatibile with all modern browsers including Opera, Firefox, Safari, Konqueror, and Internet Explorer&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Oh, and did I mention it&amp;rsquo;s free?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-113751558679723580?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113751558679723580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113751558679723580'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/01/form-architect.html' title='Form Architect'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-113716729787439301</id><published>2006-01-13T08:48:00.000-07:00</published><updated>2006-01-13T08:48:17.913-07:00</updated><title type='text'>Lessons Learned on Thursday the Twelfth</title><content type='html'>&lt;p&gt;&lt;strong&gt;1. Don&amp;rsquo;t trust advertising. Always check it out for yourself.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Especially when the product vendor claims something along the lines of, &amp;ldquo;Solve especially sticky SQL Server Transaction Log issues without any downtime.&amp;rdquo;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. Do not install a new SQL Server tool early in the morning when nobody else is up yet to help you get the database server rebooted at the remote location.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Just in case you were wondering, we found out that our remote data center is only staffed from 8 am to 5 pm, Monday through Friday. If you need anything at any other time, there is a 15 to 30 minute response time. Unless you call right around the time when they are leaving for work &amp;mdash; which takes them 45 minutes on a weekday morning (and that includes dropping off the kids at school).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. Always be courteous.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Even if you&amp;rsquo;re calling the data center for the 27th time in a row to get the database server rebooted. It will pay off later on when the bosses yell at each other.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4. Keep track of your achievements and update them frequently on your resume.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;You never know, y&amp;rsquo;know.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5. If you&amp;rsquo;re getting physically sick from the stress and the pressure of knowing that hundreds of clients cannot get to your web site for another 15 minutes, go take a break.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I&amp;rsquo;m not going to advise you to pick up any bad habits, but if there is anything that will help you feel better, by all means indulge yourself &amp;mdash; as long as it is moral, legal and not (too) fattening.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;6. Believe in and practice full disclosure.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I have made it a habit to explain any and all downtimes of our web site and web application. When something bad happens, I will send out an e-mail message to the boss, the technical support staff, my manager and my co-workers. I will explain as objectively as possible what happened, how long we were down, and what I intend to do about it to prevent such things from happening again. &lt;/p&gt;&lt;p&gt;If I&amp;rsquo;m to blame for the incident, I will make sure and state that, too. If it is something a co-worker caused, I won&amp;rsquo;t name that person but make some kind of general statement, such as &amp;ldquo;we&amp;rsquo;ve experienced a problem with the database code&amp;rdquo; &amp;mdash; instead of, &amp;ldquo;Max dropped a customer table &amp;lsquo;cause he thought he was on the test server.&amp;rdquo;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;7. Live well, laugh often and love much.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;At the risk of sounding like a babbling idiot, I do believe that work should be taken seriously. However, there is more to life than computers, databases, programming, managing projects and squeezing the most out of your 2006 IT budget.&lt;/p&gt;&lt;p&gt;Never forget the people who make your life worth living. Share the wealth during the good times and rest assured that you&amp;rsquo;ll have&amp;nbsp;their support during the good times.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-113716729787439301?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113716729787439301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113716729787439301'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/01/lessons-learned-on-thursday-twelfth.html' title='Lessons Learned on Thursday the Twelfth'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-113691446011204887</id><published>2006-01-10T10:34:00.000-07:00</published><updated>2006-01-10T10:34:20.223-07:00</updated><title type='text'>Someone drove into the Internet...</title><content type='html'>&lt;p&gt;It happened again: Someone ran a backhoe into the Internet, shutting down Internet access for thousands west of the Rockies.&lt;/p&gt;&lt;p&gt;Well, sort of, but I just had to think about that silly fake news story in which somebody described with great eloquence how an unsuspecting housewive accidentally deleted the Internet by dragging it into the Recycling Bin on her desktop. Then I worked for Authorize.Net and somebody actually ran a car into some kind of above-ground connector &amp;amp; distributor, successfully keeping all employees off their web browsers and e-mail clients for half a day.&lt;/p&gt;&lt;p&gt;After that, at my current job somewhere else, whenever something &amp;ldquo;bad&amp;rdquo; happened with our Internet connection at work, I would tell everyone who came by to ask whether I knew that the Internet was down (as if . . .) that somebody veered off the Information Super Highway and ran straight into the Internet.&lt;/p&gt;&lt;p&gt;It was kind of an inside joke for a while, but when the Sprint double-whammy happened yesterday, and everybody in the office asked me early this morning if somebody ran into the Internet again, I wasn&amp;rsquo;t laughing.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pcmag.com/article2/0,1895,1909528,00.asp"&gt;Sprint Service Knocked Out&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://engadget.com/2006/01/09/sprint-goes-down-across-the-west-coast-due-to-fiber-optics-cut/"&gt;Sprint goes down across the West Coast due to fiber-optics cut&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.klastv.com/Global/story.asp?S=4340329&amp;amp;nav=168Y"&gt;Sprint Long Distance And PCS Problems&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.baltimoresun.com/technology/ats-ap_technology16jan09,1,2469988.story?coll=sns-technology-headlines"&gt;Fiber-Optics Cut Affects Sprint Service&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-113691446011204887?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113691446011204887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113691446011204887'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/01/someone-drove-into-internet.html' title='Someone drove into the Internet...'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-113658261159570371</id><published>2006-01-06T14:23:00.000-07:00</published><updated>2006-01-06T14:26:25.860-07:00</updated><title type='text'>Playing IT Safe in 2006</title><content type='html'>&lt;p&gt;Most of the time, I run my SQL queries and Stored Procedures in Query Analyzer (QA), just because it&amp;rsquo;s cool to know how to do this stuff without too much of a GUI-laden tool (or in the VisualStudio.NET IDE).&lt;/p&gt;&lt;p&gt;Of course, I still consider myself a beginner when it comes to dealing with SQL code and all that. Two years of experiences is nothing compared to 20 years that some of the real gurus have under their belt buckles.&lt;/p&gt;&lt;p&gt;At any rate, one of the annoying things that happen to me from time to time is to forget that I need to select the code portion I want to execute &lt;strong&gt;BEFORE&lt;/strong&gt; I hit F5. Otherwise, of course, all of the SQL code gets executed from start to finish. And that&amp;rsquo;s not always a pretty thing.&lt;/p&gt;&lt;p&gt;Case in point: A few weeks ago, I was restoring a rather large database and did some follow-up testing. Rather than starting a new document in QA, I kept adding on and on and on and . . . well, you get the picture. By the time I was ready to show something to one of my co-workers, I was so fired up and excited about having solved a particular problem that I promptly forgot to&amp;nbsp;select the code before I hit F5 (which executes a query &amp;mdash; only the selected portion if there is any SQL code selected OR the entire contents of the SQL document if nothing has been selected).&lt;/p&gt;&lt;p&gt;So, 45 minutes later, I was finally able to get on with my show and tell. Not exactly what I had had in mind, but such is life sometimes. My new habit? Add the following code to the top of every (as in E-V-E-R-Y) SQL code document, you know, just in case:&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" color="#009f00" size="2"&gt;&lt;strong&gt;USE MYDATABASE&lt;br /&gt;GO&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="2"&gt;&lt;font color="#009f00"&gt;&lt;strong&gt;DECLARE @@DELAYLENGTH char(9)&lt;br /&gt;SET @@DELAYLENGTH = '000:50:00'&lt;br /&gt;WAITFOR DELAY @@DELAYLENGTH&lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-113658261159570371?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113658261159570371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/113658261159570371'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2006/01/playing-it-safe-in-2006.html' title='Playing IT Safe in 2006'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112990778935048830</id><published>2005-10-21T08:16:00.000-07:00</published><updated>2005-10-21T08:16:29.396-07:00</updated><title type='text'>Acrobat Updater 7.0.5 not ready for prime time . . .</title><content type='html'>&lt;p&gt;If you happen to have Adobe Acrobat 7 installed (whether that&amp;rsquo;s the Reader or the full product), and you get an update alert, be careful.&lt;/p&gt;&lt;p&gt;Having attempted to install the 7.0.5 Update myself, I can tell you it&amp;rsquo;s not working. At least not on Windows XP SP2. Perhaps there are too many other things installed on my machine, but even a cursory Google-search brought up numerous experiences from other individuals who seem to have similar problems.&lt;/p&gt;&lt;p&gt;In a nutshell: If you are trying to update to 7.0.5, things go sour. There will be error messages during and after the update process (something along the lines of &amp;ldquo;Adobe Acrobat Update. Internal Error 2711. Patch Extras.&amp;rdquo;).&lt;/p&gt;&lt;p&gt;To the best of my knowledge, the safest bet is to go to Adobe.com and download the &lt;a href="http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=2990&amp;amp;fileID=2816"&gt;Acrobat 7.0.3 Update&lt;/a&gt;. Then install that update, and if you&amp;rsquo;re prompted to roll back to a previous version and forego the current (or most recent) update, please say yes and go for it.&lt;/p&gt;&lt;p&gt;Aaah, life is good again.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112990778935048830?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112990778935048830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112990778935048830'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/10/acrobat-updater-705-not-ready-for.html' title='Acrobat Updater 7.0.5 not ready for prime time . . .'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112852989112806626</id><published>2005-10-05T09:31:00.000-07:00</published><updated>2005-10-05T09:31:31.136-07:00</updated><title type='text'>PHP &amp; MySQL Links</title><content type='html'>&lt;p&gt;There&amp;rsquo;s a book called &lt;strong&gt;How to Do Everything in PHP and MySQL&lt;/strong&gt;. Apparently, the book &amp;mdash; although quite a good read for the novice PHP/MySQL developer &amp;mdash; does not really teach you how to do EVERYTHING in PHP and MySQL, but the companion web site has a &lt;a href="http://www.everythingphpmysql.com/links/index.html"&gt;great collection of PHP/MySQL related links&lt;/a&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;reference material&lt;/li&gt;&lt;li&gt;discussion groups and mailing lists&lt;/li&gt;&lt;li&gt;PHP basics&lt;/li&gt;&lt;li&gt;PHP and Objects&lt;/li&gt;&lt;li&gt;PHP Tools and Techniques&lt;/li&gt;&lt;li&gt;MySQL basics&lt;/li&gt;&lt;li&gt;MySQL Tools and Techniques&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Keywords:&lt;/strong&gt; PHP, MySQL, programming, book&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112852989112806626?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112852989112806626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112852989112806626'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/10/php-mysql-links.html' title='PHP &amp; MySQL Links'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112852879326240969</id><published>2005-10-05T09:13:00.000-07:00</published><updated>2005-10-05T09:14:23.773-07:00</updated><title type='text'>IIS 6 on Windows XP SP2</title><content type='html'>&lt;p&gt;Just in case (and so that I don&amp;rsquo;t forget): &lt;/p&gt;&lt;p&gt;If you&amp;rsquo;re developing ASP.Net applications on your own computer (Windows XP SP2), testing and running everything locally will require you to set up an anonymous user through IIS (Properties | Directory Security).&lt;/p&gt;&lt;p&gt;The nice part about all of this is that IIS 6 will handle most everything for you, as far as creating the anonymous user account and handling the password. The not-so-nice part about all of this is that IIS 6 will handle most everything for you. You won&amp;rsquo;t really know what the password is or what specific access privileges the anonymous user has (although it&amp;rsquo;s most likely going to be &amp;ldquo;GUEST&amp;rdquo; access).&lt;/p&gt;&lt;p&gt;Typically, you won&amp;rsquo;t have to worry about most of this. Every now and then, however, you might get a call for help from another developer who suddenly needs to enter a user name and password to be able to load a style sheet into an ASPX page on her or his own computer. That&amp;rsquo;s usually a good sign that somewhere something is off with the IIS anonymous access privileges.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Go to the Users control panel in Windows XP and 1) change the password for the anonymous user to something that you can remember, then 2) give the anonymous user on your local computer administrator privileges.&lt;/p&gt;&lt;p&gt;Remember, that&amp;rsquo;s only to get around some annoyances when developing and testing on your local computer. In real life, you&amp;rsquo;ll never give the anonymous IIS Internet user administrator privileges to the production server.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Keywords:&lt;/strong&gt; IIS 6, anonymous access privileges, anonymous user, directory security, user name, pasword&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112852879326240969?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112852879326240969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112852879326240969'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/10/iis-6-on-windows-xp-sp2.html' title='IIS 6 on Windows XP SP2'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112845410197641036</id><published>2005-10-04T12:28:00.000-07:00</published><updated>2005-10-04T12:28:21.983-07:00</updated><title type='text'>More on Dynamic SQL . . .</title><content type='html'>&lt;p&gt;Recently, I&amp;rsquo;ve published a BLOG about dynamic SQL. As a follow-up, I would like to point out an excellent article on the subject by Erland Sommarskog, apparently a SQL Server MVP:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sommarskog.se/dynamic_sql.html"&gt;The Curse and Blessings of Dynamic SQL&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Sommarskog discusses the pros and cons of using dynamic SQL and makes some good and interesting points about the proper syntax and overall strategy. While admitting that dynamic SQL is a powerful feature, Sommerskag also warns that it should be used with care.&lt;/p&gt;&lt;p&gt;Most strikingly, Sommerskag has a large section of examples and explanations on &amp;ldquo;Common Cases when to (Not) Use Dynamic SQL&amp;rdquo; [sic]. Overall, the conclusion seems to be that many times sort-of-SQL-developers think they need to use tricky dynamic SQl to solve a real business need, when indeed a completely different and much better solution might be the real answer to the problem.&lt;/p&gt;&lt;p&gt;Heady stuff but well worth the time it takes to read this excellent article.&lt;/p&gt;&lt;p&gt;keywords: SQL, SQL Server, MSSQL, dynamic SQL, T-SQL&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112845410197641036?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112845410197641036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112845410197641036'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/10/more-on-dynamic-sql.html' title='More on Dynamic SQL . . .'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112845357367932084</id><published>2005-10-04T12:19:00.000-07:00</published><updated>2005-10-04T12:19:33.730-07:00</updated><title type='text'>Comments in FireFox Can Cause Errors</title><content type='html'>&lt;p&gt;And all of a sudden, the web application stopped working.&lt;/p&gt;&lt;p&gt;Yes, I know: There are many more web browsers out there than Internet Explorer. However, if&amp;nbsp; 99 percent of your web application users browse with IE, you&amp;rsquo;re most likely going to make sure things work in IE first, then worry about how it looks and behaves in all other web browsers.&lt;/p&gt;&lt;p&gt;So, after I got another milestone accomplished, I took a little time to see how everything would look (and whether it would work) in FireFox.&lt;/p&gt;&lt;p&gt;To my surprise, things were a bit screwed up in FireFox.&lt;/p&gt;&lt;p&gt;Don&amp;rsquo;t get me wrong, I am not one of those who ignorantly disobeys web standards and takes advantage of IE-only features and so forth. I consider myself quite reasonable and would much worker have everything I design and develop to look-and-work the same in IE, FireFox, Netscape, Mozilla and Opera (and on the Mac side was well as on the PC side). But sometimes, reality gets in the way.&lt;/p&gt;&lt;p&gt;One of my more annoying habits (according to some) is the tendency to separate portions of web pages by using comment separators. Perhaps something like this:&lt;/p&gt;&lt;p&gt;&amp;lt;!&amp;mdash; HEADER &amp;mdash; &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;lt;!&amp;mdash; FOOTER &amp;mdash; &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;gt;&lt;/p&gt;&lt;p&gt;It simply helps me to see, at a glance, what&amp;rsquo;s going on, especially when I have to use View Source sometimes to go after a tricky issue. However, there is something about this &amp;ldquo;creative commenting&amp;rdquo; approach that seems to send the wrong message to FireFox. Quite literally.&lt;/p&gt;&lt;p&gt;With the FireFox JavaScript window open, I would encounter all kinds of highly sophisticated error messages, indicating this and that serious event that would not be able to be either prevented or successfully executed due to some inexplicable on-something-or-other-event-handler.&lt;/p&gt;&lt;p&gt;It took me a few minutes to figure this out, especially since I was using a couple of DHTML scripts from third parties that might have been the cause of all this. However, everything worked fine, as soon as I changed the comments to:&lt;/p&gt;&lt;p&gt;&amp;lt;!&amp;mdash; HEADER &amp;mdash;&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;lt;!&amp;mdash; FOOTER &amp;mdash;&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Keywords: FireFox, HTML comments, errors&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112845357367932084?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112845357367932084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112845357367932084'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/10/comments-in-firefox-can-cause-errors.html' title='Comments in FireFox Can Cause Errors'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112681223289885235</id><published>2005-09-15T12:23:00.000-07:00</published><updated>2005-09-15T12:23:52.933-07:00</updated><title type='text'>Dynamically Assigning Values to T-SQL Variables (in SQL Server)</title><content type='html'>&lt;p&gt;For some reason, every now and then I need to assign specific values to a number of variables in T-SQL. Instead of hard-coding, say, 10 variables by hand, I would prefer to use a little bit of programming logic instead, and do it the easy way.&lt;/p&gt;&lt;p&gt;Let&amp;rsquo;s presume I have 10 sales managers in my database. For simplicity&amp;rsquo;s sake, I&amp;rsquo;m going to tell you that there is also a field in each row that&amp;rsquo;s numbered correspondingly. So, Sales Manager 1, has some kind of an id field that has a &amp;ldquo;1&amp;rdquo; in it, Sales Manager 2 has a &amp;ldquo;2&amp;rdquo; in that field, and so forth.&lt;/p&gt;&lt;p&gt;For lack of a better example, say&amp;nbsp;I wanted to assign every manager&amp;rsquo;s first name to a variable. (Yes, this is a lame example, but if you&amp;rsquo;ve ever worked &amp;amp; struggled with something similar, you probably appreciate the gist of all of this.)&lt;/p&gt;&lt;p&gt;First, I declare the variables for the 10 sales managers, like so:&lt;/p&gt;&lt;p&gt;&lt;font color="#800080" size="2"&gt;&lt;strong&gt;DECLARE @sm1 varchar(50), @sm2 varchar(50), @sm3 varchar(50), @sm4 varchar(50), @sm5 varchar(50), @sm6 varchar(50), @sm7 varchar(50), @sm8 varchar(50), @sm9 varchar(50), @sm10 varchar(50)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Let&amp;rsquo;s add an integer variable that we can use for looping:&lt;/p&gt;&lt;p&gt;&lt;font color="#800080" size="2"&gt;&lt;strong&gt;DECLARE @i int&lt;br /&gt;SET @i = 1&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Because we know that T-SQL statements are basically of the type VARCHAR, we&amp;rsquo;ll construct a VARCHAR variable to contain the final statement:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#800080" size="2"&gt;DECLARE @str varchar(400)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Next, we&amp;rsquo;ll use a WHILE loop:&lt;/p&gt;&lt;p&gt;&lt;font color="#800080" size="2"&gt;&lt;strong&gt;WHILE @i &amp;lt; 11&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp; SET @str = &amp;lsquo;SET @L&amp;rsquo; + CAST(@i AS VARCHAR) = &amp;lsquo;#&amp;rsquo; + CAST(@i AS VARCHAR) + &amp;lsquo;Sales Manager&amp;rsquo;&lt;br /&gt;&amp;nbsp; EXEC(@str)&lt;br /&gt;END&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Now, this won&amp;rsquo;t work. It&amp;rsquo;s pretty dang frustrating. When you &lt;font color="#800080" size="2"&gt;&lt;strong&gt;PRINT&lt;/strong&gt;&lt;/font&gt; the contents of &lt;font color="#800080" size="2"&gt;&lt;strong&gt;@str&lt;/strong&gt;&lt;/font&gt;, for example, you will see a perfectly well-formed SQL statement, assigning a dynamically changing value to the 10 &lt;font color="#800080" size="2"&gt;&lt;strong&gt;@L&lt;/strong&gt;&lt;/font&gt; variables.&lt;/p&gt;&lt;p&gt;The problem lies in the fact that &lt;font color="#800080" size="2"&gt;&lt;strong&gt;@L1&lt;/strong&gt;&lt;/font&gt; through &lt;font color="#800080" size="2"&gt;&lt;strong&gt;@L10&lt;/strong&gt;&lt;/font&gt; are not recognized as declared variables within the dynamically generated SQL. For something like this to work, you actually need to put all of the programming logic into the dynamically generated SQL. Yes, from start to finish, like so:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font color="#800080" size="2"&gt;&lt;strong&gt;DECLARE @i int, @str varchar(222)&lt;br /&gt;SET @i = 1&lt;br /&gt;WHILE @i &amp;lt; 11&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;SET @str = 'DECLARE @L1 varchar(40), @L2 varchar(40), @L3 varchar(40), @L4 varchar(40), @L5 varchar(40), @L6 varchar(40), @L7 varchar(40), @L8 varchar(40), @L9 varchar(40), @L10 varchar(40)'&lt;br /&gt;&amp;nbsp;SET @str = @str + 'SET @L' + CAST(@i AS VARCHAR) + ' = ''#' + CAST(@i AS VARCHAR) + ' sales manager'''&lt;br /&gt;&amp;nbsp;SET @str = @str + 'PRINT @L' + CAST(@i AS VARCHAR)&lt;br /&gt;&amp;nbsp;EXEC(@str)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#800080" size="2"&gt;&lt;strong&gt;&amp;nbsp;SET @str = ''&lt;br /&gt;&amp;nbsp;SET @i = (@i + 1)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#800080" size="2"&gt;&lt;strong&gt;&amp;nbsp;IF @i &amp;gt; 0 AND @i &amp;lt; 11&lt;br /&gt;&amp;nbsp;&amp;nbsp; CONTINUE&lt;br /&gt;&amp;nbsp;ELSE&lt;br /&gt;&amp;nbsp;&amp;nbsp; BREAK&lt;br /&gt;END&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;The result looks something like this:&lt;/p&gt;&lt;p&gt;#1 sales manager&lt;br /&gt;#2 sales manager&lt;br /&gt;#3 sales manager&lt;br /&gt;#4 sales manager&lt;br /&gt;#5 sales manager&lt;br /&gt;#6 sales manager&lt;br /&gt;#7 sales manager&lt;br /&gt;#8 sales manager&lt;br /&gt;#9 sales manager&lt;br /&gt;#10 sales manager&lt;/p&gt;&lt;p&gt;If you need to re-use the dynamically created values later on, I suggest using a TABLE VARIABLE or a TEMPORARY TABLE to store and retrieve the data. But that&amp;rsquo;s another discussion for another day.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112681223289885235?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112681223289885235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112681223289885235'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/09/dynamically-assigning-values-to-t-sql.html' title='Dynamically Assigning Values to T-SQL Variables (in SQL Server)'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112620246352358312</id><published>2005-09-08T11:01:00.000-07:00</published><updated>2005-09-08T11:01:03.593-07:00</updated><title type='text'>Design Patterns</title><content type='html'>&lt;p&gt;&lt;strong&gt;From &lt;/strong&gt;&lt;a href="http://www.dofactory.com/Patterns/Patterns.aspx"&gt;&lt;strong&gt;the Developer Training page&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; at data &amp;amp; object factory:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial" size="2"&gt;Design patterns are recurring solutions to software design problems you find again and again in real-world application development. Design patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial" size="2"&gt;The Gang of Four (GOF) patterns are generally considered the foundation for all other patterns. They are categorized in three groups: Creational, Structural, and Behavioral.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial" size="2"&gt;&lt;strong&gt;From &lt;/strong&gt;&lt;a href="http://www.martinfowler.com/eaaCatalog/"&gt;&lt;strong&gt;Martin Fowler&amp;rsquo;s web site&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;These pages are a brief overview of each of the patterns in P of EAA. They aren't intended to stand alone, but merely as a quick aide-memoire for those familiar with them, and a handy link if you want to refer to one online. In the future I may add some post-publication comments into the material here, but we'll see how that works out.&lt;/p&gt;&lt;p&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112620246352358312?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112620246352358312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112620246352358312'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/09/design-patterns.html' title='Design Patterns'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112567306064936599</id><published>2005-09-02T07:57:00.000-07:00</published><updated>2005-09-02T07:57:40.686-07:00</updated><title type='text'>Like-A-CSS-List-?</title><content type='html'>&lt;p&gt;Another one of those superb online time-savers: &lt;a href="http://www.listulike.com/generator/"&gt;List-u-Like CSS Generator&lt;/a&gt; creates cross-browser, list-based navigation bars with ease.&lt;/p&gt;&lt;p&gt;The orange-green GUI for this awesome and free online tool belies the fact that the end result from this online generator is an industry-strength CSS list (horizontal or vertical) that can be used for navigation or web application shortcuts alike.&lt;/p&gt;&lt;p&gt;Once you figure out that this online CSS generator consists of several sections (each with a SAVE and PREVIEW button) to tackle the task of generating a list in small chunks, you&amp;rsquo;re good to go.&lt;/p&gt;&lt;p&gt;There&amp;rsquo;s a sample of your list-based navigation bar on the same page as you&amp;rsquo;re building the navigation bar. Every time you change any of the parameters and attributes, you can click PREVIEW to see what it will look like. When you&amp;rsquo;re done, click GENERATE CSS and paste everything into your web page.&lt;/p&gt;&lt;p&gt;&lt;img height="374" alt="Css_list_nav_bar" src="http://www.humdinger-media.com/rattleboard/css_list_nav_bar_small.jpg" width="400" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112567306064936599?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112567306064936599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112567306064936599'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/09/like-css-list.html' title='Like-A-CSS-List-?'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112549471075483902</id><published>2005-08-31T06:25:00.000-07:00</published><updated>2005-08-31T06:25:12.993-07:00</updated><title type='text'>Do you like freeware?</title><content type='html'>&lt;p&gt;If you do, check out the &lt;a href="http://www.techsupportalert.com/best_46_free_utilities.htm"&gt;46 Best-ever Freeware Utilities&lt;/a&gt; for anti-virus software, adware/spyware/scumware removers, browser protection, firewall, anonymous surfing, clipboard, HTML editor, notepad, photo editor and many, many more freewares.&lt;/p&gt;&lt;p&gt;By the way, the same web site also offers a list of vendor-independent&amp;nbsp; &lt;a href="http://www.techsupportalert.com/best_free_tech_support_sites.htm"&gt;Best Free Technical Support Sites&lt;/a&gt;, ranging from &lt;a href="http://www.helponthe.net/"&gt;Tech Support Guy&lt;/a&gt; to &lt;a href="http://www.suggestafix.com/"&gt;Suggest A Fix&lt;/a&gt; and &lt;a href="http://www.5starsupport.com/"&gt;5 Star Support&lt;/a&gt;. Definitely worth checking out if you&amp;rsquo;re ever in a rut with a computer-related issue.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112549471075483902?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112549471075483902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112549471075483902'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/08/do-you-like-freeware.html' title='Do you like freeware?'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112489748447052840</id><published>2005-08-24T08:31:00.000-07:00</published><updated>2005-08-24T08:31:24.513-07:00</updated><title type='text'>Colour Contrast Check</title><content type='html'>&lt;p&gt;The &lt;a href="http://www.snook.ca/technical/colour_contrast/colour.html"&gt;Colour Contrast Check Tool&lt;/a&gt; allows to specify a foreground and a background colour and determine if they provide enough of a contrast "when viewed by someone having color deficits or when viewed on a black and white screen.&lt;/P&gt;&lt;P&gt;Nicely done with sliders and input boxes for numeric color codes. The results will be displayed in real time as you adjust the color values. Additionally, you get a read-out of both the Brightness Difference and the Color Difference.&lt;/P&gt;&lt;P&gt;Nicely done by &lt;A href="http://www.snook.ca/jonathan/"&gt;Jonathan Snook&lt;/A&gt;.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112489748447052840?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112489748447052840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112489748447052840'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/08/colour-contrast-check.html' title='Colour Contrast Check'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112482111848782627</id><published>2005-08-23T11:18:00.000-07:00</published><updated>2005-08-23T11:18:38.513-07:00</updated><title type='text'>GUInspiration...</title><content type='html'>&lt;p&gt;Next time I&amp;rsquo;m contemplating the design of &amp;ldquo;the next best thing,&amp;rdquo; which is the project that will start after the current one has been completed, I need to remember to swing by this site and take a few notes:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.guidebookgallery.org/"&gt;GUIdebook&lt;/a&gt;&lt;/p&gt;&lt;p&gt;It is a clean and up-to-date site, choke full with GUI-related information, including &lt;a href="http://www.guidebookgallery.org/articles/interviews"&gt;interviews&lt;/a&gt;, &lt;a href="http://www.guidebookgallery.org/splashes"&gt;splash screens&lt;/a&gt;, &lt;a href="http://www.guidebookgallery.org/guis/featured"&gt;featured GUIs&lt;/a&gt;, &lt;a href="http://www.guidebookgallery.org/icons"&gt;icons&lt;/a&gt;, &lt;a href="http://www.guidebookgallery.org/screenshots"&gt;screenshots&lt;/a&gt;, &lt;a href="http://www.guidebookgallery.org/books"&gt;book reviews&lt;/a&gt;, etc.&lt;/p&gt;&lt;p&gt;In other words, a great place to get a little inspiration. Or a lot, depends on your individual needs.&lt;/p&gt;&lt;p&gt;At GUIdebook, the term GUI refers to all aspects of graphical user interface design and development: operating systems, desktop environments, applications, settings, and so forth.&lt;/p&gt;&lt;p&gt;Definitely worth a visit if you&amp;rsquo;re somewhat interested in GUI design and development, and especially useful if you&amp;rsquo;re into learning more about the origins of various GUI trends.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112482111848782627?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112482111848782627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112482111848782627'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/08/guinspiration.html' title='GUInspiration...'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112420700908438660</id><published>2005-08-16T08:43:00.000-07:00</published><updated>2005-08-16T08:46:17.343-07:00</updated><title type='text'>JavaScript Custom Alert</title><content type='html'>&lt;p&gt;Ever wanted to override the web browser's built-in JavaScript window.alert method? &lt;/p&gt;&lt;p&gt;The folks over at slayeroffice.com published the source code (plus working example) to make this happen: &lt;a href="http://slayeroffice.com/code/custom_alert/"&gt;Custom Alert Demonstration&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;img height="249" alt="Custom_alert" src="http://www.humdinger-media.com/rattleboard/custom_alert.jpg" width="400" border="0" /&gt;&lt;/p&gt;&lt;p&gt;Basically, &amp;ldquo;[p]suedo-modality is achieved by using a 100% wide and 100% tall absolutely positioned DIV element that acts as the parent element of the custom alert. This DIV overlays everything on the page and prevents user interaction with elements other than the custom alert. Note that a 1x1 transparent png image is set as the background-image -- this prevents MSIE from allowing the parent DIV to be "hollow", which would defeat its purpose.&amp;rdquo;&lt;/p&gt;&lt;p&gt;Certainly a worthwhile endeavor if you are going to develop for the latest versions of IE, FireFox, Safari and Opera. Although the source code has been tested and verified in those browsers, the author(s) of said code warn that it might not be production-ready yet.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112420700908438660?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112420700908438660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112420700908438660'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/08/javascript-custom-alert.html' title='JavaScript Custom Alert'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112386279791358265</id><published>2005-08-12T09:06:00.000-07:00</published><updated>2005-08-12T09:10:05.553-07:00</updated><title type='text'>ASP/VBScript: Multiple Statements on One Line</title><content type='html'>&lt;p&gt;Note to myself: In ASP/VBScript, you can have multiple statements on one line. Yup.&lt;/p&gt;&lt;p&gt;In other words, several statements can be placed on the same line, as long as they are separated from each other with a column.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;For example, instead of:&lt;/strong&gt;&lt;/p&gt;&lt;p style="font-family:serif;font-size:10px;color:#008080;font-weight:700;"&gt;dim var1, var2, var3, var4, var5&lt;br /&gt;var1 = 12&lt;br /&gt;var2 = 17&lt;br /&gt;var3 = 21&lt;br /&gt;var4 = 39&lt;br /&gt;var5 = 55&lt;/p&gt;&lt;p&gt;&lt;strong&gt;We could write:&lt;/strong&gt;&lt;/p&gt;&lt;p style="font-family:serif;font-size:10px;color:#008080;font-weight:700;"&gt;dim var1, var2, var3, var4, var5&lt;br /&gt;var1 = 12 : var2 = 17 : var3 = 21 : var4 = 39 : var5 = 55&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Or even:&lt;/strong&gt;&lt;/p&gt;&lt;p style="font-family:serif;font-size:10px;color:#008080;font-weight:700;"&gt;dim var1, var2, var3, var4, var5 : var1 = 12 : var2 = 17 : var3 = 21 : var4 = 39 : var5 = 55&lt;/p&gt;&lt;p&gt;For what it&amp;rsquo;s worth.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112386279791358265?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112386279791358265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112386279791358265'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/08/aspvbscript-multiple-statements-on-one.html' title='ASP/VBScript: Multiple Statements on One Line'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112370046869799938</id><published>2005-08-10T12:01:00.000-07:00</published><updated>2005-08-10T12:07:26.480-07:00</updated><title type='text'>XHTML Templates . . . anyone?</title><content type='html'>&lt;p&gt;If you want to get started with XHTML but feel a little overwhelmed as far as, &amp;ldquo;Where do I begin?&amp;rdquo;, here&amp;rsquo;s a nice little web site by Kevin Hale that offers some starter templates for free: &lt;a href="http://particletree.com/features/quick-start-your-design-with-xhtml-templates"&gt;Quick Start Your Design with XHTML Templates&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The XHTML (and CSS) templates come with detailed explanations, and the whole approach is practically a mini tutorial that will have you up and running in no time. Why is Mr. Hale making those templates available?&lt;/p&gt;&lt;p&gt;&lt;!--StartFragment --&gt;&lt;font color="#0000ff"&gt;&amp;ldquo;Anyway, before I got smart and started using customized CSS and XHTML templates, I usually found myself opening up prior projects just to answer the same questions over and over again: How do I include an external JavaScript file? How do I properly form a meta tag? How do I make comments in a CSS file? What&amp;rsquo;s the best way to structure a form? My friends, it&amp;rsquo;s time to stop the inefficiency. Let&amp;rsquo;s get to it.&amp;rdquo;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;And if we all use web standards, everyone gets to enjoy a better Internet, right? Thank you very kindly, Mr. Hale.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;PS: If you want some more nitty-gritty details on XHTML, check out &amp;ldquo;&lt;a href="http://codylindley.com/Webdev/61/building-an-xhtml-webpage-steps-template--the-details"&gt;Building an xhtml webpage - Steps - Template - The Details&lt;/a&gt;&amp;rdquo; by &lt;a href="http://codylindley.com/"&gt;Cody Lindley&lt;/a&gt;. Very easy to follow and understand, yet powerful and industry-standard when it comes to the end result. Nicely done. And there is also &amp;ldquo;&lt;a href="http://codylindley.com/Webdev/76/building-a-style-sheet---steps---template---details"&gt;Building a Style Sheet - Steps - Template - Details&lt;/a&gt;&amp;rdquo; by Mr. Lindley. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112370046869799938?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112370046869799938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112370046869799938'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/08/xhtml-templates-anyone.html' title='XHTML Templates . . . anyone?'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112359713811624375</id><published>2005-08-09T07:18:00.000-07:00</published><updated>2005-08-09T07:18:58.136-07:00</updated><title type='text'>CSS Heaven...</title><content type='html'>&lt;p&gt;If you&amp;rsquo;re looking for a visually appealing and content-rich CSS resource, look no further and go to cssimport&amp;rsquo;s &lt;a href="http://www.cssimport.com/resources.htm"&gt;Resources page&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The CSS resources are divided into three categories:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1) Hacks&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In this context, &amp;ldquo;hacks&amp;rdquo; stands for work-arounds to make CSS work in all web browsers (just in case you were wondering). Some people might consider hacks the part of CSS that makes it all work in the real world, and I&amp;rsquo;m one of them. Theory is all nice and wonderful if you can preach it to those who will only use the browsers and the platform you specify, but if you develop for actual mortals, you&amp;rsquo;re better off knowing about &lt;a href="http://tantek.com/CSS/Examples/boxmodelhack.html"&gt;Tantek&amp;rsquo;s Box Model Hack&lt;/a&gt;, &lt;a href="http://www.dithered.com/css_filters/css_only/index.php"&gt;CSS Filters&lt;/a&gt;, &lt;a href="http://www.positioniseverything.net/explorer/threepxtest.html"&gt;The 3&amp;ndash;pixel Text Jog&lt;/a&gt;, &lt;a href="http://imfo.ru/csstest/css_hacks/import.php"&gt;Import Hacks&lt;/a&gt;, &lt;a href="http://www.tantek.com/CSS/Examples/highpass.html"&gt;High-Pass Filter&lt;/a&gt; and so forth.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2) Layouts&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This category contains links to sophisticated layout examples and source code from the likes of &lt;a href="http://glish.com/css/"&gt;Glish&lt;/a&gt;, &lt;a href="http://www.bluerobot.com/web/layouts/"&gt;Blue Robot&lt;/a&gt;, &lt;a href="http://www.saila.com/usage/layouts/"&gt;Saila&lt;/a&gt;, &lt;a href="http://www.thenoodleincident.com/tutorials/box_lesson/boxes.html"&gt;The Noodle Incident&lt;/a&gt; and many more.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3) Lists, floats, etc.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Links to some of the best CSS examples and CSS resources that I have painstakingly collected over the past year or so are all included here at a glance, including &lt;a href="http://css.maxdesign.com.au/listamatic/"&gt;Listamatic&lt;/a&gt; (numerous sample lists and navigational items), &lt;a href="http://www.alistapart.com/articles/taminglists/"&gt;A List Apart&lt;/a&gt; (if you need an explanation for this one, go visit the web site right now), &lt;a href="http://www.brainjar.com/css/positioning/"&gt;Brainjar&lt;/a&gt; (great information on CSS-positioning and other wonderful examples and scripts), &lt;a href="http://css.maxdesign.com.au/floatutorial/"&gt;Floatutorial&lt;/a&gt; (just in case you wondered about floats but didn&amp;rsquo;t know whom to ask), &lt;a href="http://juicystudio.com/article/div-mania.php"&gt;Div Mania&lt;/a&gt; (as the name suggests), etc.&lt;/p&gt;&lt;p&gt;Also noteworthy on the &lt;a href="http://www.cssimport.com/index.htm"&gt;cssimport web site&lt;/a&gt;, of course, is the gallery of real-world example web sites that are employing CSS (either in transitional or strict mode) to achieve a more web-standard-ish result. It&amp;rsquo;s very well organized and looks clean and appealing.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112359713811624375?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112359713811624375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112359713811624375'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/08/css-heaven.html' title='CSS Heaven...'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112327003438519890</id><published>2005-08-05T12:27:00.000-07:00</published><updated>2005-08-05T12:27:14.453-07:00</updated><title type='text'>Free Online Graph Paper / Grid Paper PDFs</title><content type='html'>&lt;p&gt;If you ever use paper to design &amp;ldquo;stuff&amp;rdquo; or write music or do graphs or take notes . . . or whatever, you have to check this out:&amp;nbsp;&lt;!--StartFragment --&gt; &lt;/p&gt;&lt;h2&gt;&lt;a href="http://www.incompetech.com/beta/plainGraphPaper/"&gt;Free Online Graph Paper / Grid Paper PDFs&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;This is by far one of the coolest web sites combined with useful services I have seen in recent years. In a nutshell, you&amp;nbsp;select the general kind of graph-or-grid paper&lt;!--StartFragment --&gt;&amp;nbsp;you want to create, fine-tune the settings, generate the PDF and then print it out. POOF! That&amp;rsquo;s it. No need to shell out oodles of money if you only need five sheets of graph paper, for example.&lt;/p&gt;&lt;p&gt;&lt;img height="311" alt="Graphorgridpaper" src="http://www.humdinger-media.com/rattleboard/graphorgridpaper.gif" width="400" border="1" /&gt;&lt;/p&gt;&lt;p&gt;Typical fine-tuning options includedocument size, margin width, line weight, and line colors. Dependent upon the type of graph-or-grid paper you selected, you can also adjust the number of lines, the grid spacing, and line weight.&lt;/p&gt;&lt;p&gt;Oh, and did I mention that all of that is free? Can&amp;rsquo;t beat that, can you, and if you have the full version of Acrobat, you can easily save the generated graph-or-grid and make some additional print adjustments.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112327003438519890?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112327003438519890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112327003438519890'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/08/free-online-graph-paper-grid-paper.html' title='Free Online Graph Paper / Grid Paper PDFs'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112326417027232839</id><published>2005-08-05T10:49:00.000-07:00</published><updated>2005-08-05T10:49:30.306-07:00</updated><title type='text'>CSS Drive</title><content type='html'>&lt;p&gt;If you&amp;rsquo;ve been implementing DHTML solutions into your web applications, you&amp;rsquo;ve probably heard of &lt;a href="http://www.dynamicdrive.com/"&gt;Dynamic Drive&lt;/a&gt;, right? It&amp;rsquo;s a snazzy site with tons of user-submitted as well as staff-developed DHTML solutions, yours free for the asking, eh, browsing. They also have a few online generators and special tools that are well worth repeat visits to their site.&lt;/p&gt;&lt;p&gt;Additionally, they have just cleaned up their look-and-feel, and it is now easier than ever to find what you&amp;rsquo;re looking for from a number of well-defined categories.&lt;/p&gt;&lt;p&gt;It&amp;rsquo;s great, it&amp;rsquo;s free and it&amp;rsquo;s a fantastic source of inspiration . . . but did you know that a similar web site exists for CSS? Enter CSS Drive.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cssdrive.com/"&gt;&lt;img height="15" alt="CSS Drive" src="http://www.humdinger-media.com/rattleboard/cssdrive.png" width="80" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This site is awesome, too. It features galleries of examples (neatly categorized), forums and even an &lt;a href="http://www.cssdrive.com/index.php/main/csscompressor/"&gt;online CSS compressor&lt;/a&gt;. Wowzer! That thing alone is worth a visit. Basically, all you have to do is paste your stylesheet into a large text area, tweak the compression options and click &amp;ldquo;Compress-it!&amp;rdquo; &amp;mdash; and of you go. Well, your CSS, to be more precise.&lt;/p&gt;&lt;p&gt;&lt;img height="543" alt="Css_compressor" src="http://www.humdinger-media.com/rattleboard/css_compressor.gif" width="429" border="1" /&gt;&lt;/p&gt;&lt;p&gt;Hats off to the proprietors at CSS Drive.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;a href="http://www.cssdrive.com/"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112326417027232839?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112326417027232839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112326417027232839'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/08/css-drive.html' title='CSS Drive'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112317553513232584</id><published>2005-08-04T10:12:00.000-07:00</published><updated>2005-08-04T10:16:37.273-07:00</updated><title type='text'>Google Cheat Sheet</title><content type='html'>&lt;p&gt;So you&amp;rsquo;re the one guy in the company who can find anything online, right? And given some specifics as well as a general theme, you can most likely beat anyone else at finding the right piece of information quicker than you can say &amp;ldquo;Spongebob Squarepants.&amp;rdquo;&lt;/p&gt;&lt;p&gt;However, if your memory banks aren&amp;rsquo;t what they used to be &amp;mdash; or if they are occupied with useful music-related trivia from the 1900s &amp;mdash; you might want to resort to the &lt;a href="http://www.googleguide.com/advanced_operators_reference.html"&gt;Google Guide Quick Reference: Google Advanced Operators (Cheat Sheet)&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;That&amp;rsquo;ll help you to get the syntax down if you remember that there was a way to find information from a particular web site but you&amp;rsquo;re not sure anymore what the Google operator was. It&amp;rsquo;s &lt;strong&gt;&lt;font color="#0000ff"&gt;site&lt;/font&gt;&lt;/strong&gt;, of course, and in addition to the name of the operator, the cheat sheet gives you a basic definition of the operator&amp;rsquo;s meaning as well as an actual example. I love it.&lt;/p&gt;&lt;p align="center"&gt;&lt;img height="696" alt="Google_cheat_sheet" src="http://www.humdinger-media.com/rattleboard/google_cheat_sheet.gif" width="253" border="0" /&gt;&lt;/p&gt;&lt;p&gt;This cheat sheet includes some of the more obscure (and possibly still in beta) search operators, such as &lt;strong&gt;&lt;font color="#0000ff"&gt;filetype&lt;/font&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;font color="#0000ff"&gt;safesearch&lt;/font&gt;&lt;/strong&gt;. Then again, it also covers the basics (complete with examples and brief explanations) and the goodies, such as &lt;strong&gt;&lt;font color="#0000ff"&gt;link&lt;/font&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;font color="#0000ff"&gt;phonebook&lt;/font&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;font color="#0000ff"&gt;define&lt;/font&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;In all fairness, &lt;a href="http://www.google.com/help/cheatsheet.html"&gt;Google already has a cheat sheet published&lt;/a&gt;, but it&amp;rsquo;s a watered down version at best. If you&amp;rsquo;ve read &lt;a href="http://www.researchbuzz.com/"&gt;Tara Calishain&lt;/a&gt;&amp;rsquo;s &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0596008570/qid=1123175455/sr=1-1/ref=sr_1_1/103-2054456-6052616?v=glance&amp;amp;s=books"&gt;Google Hacks&lt;/a&gt; (not to confuse with &lt;a href="http://douweosinga.com/projects/googlehacks"&gt;Google Hacks&lt;/a&gt;), then you already know that there&amp;rsquo;s much more to Google-ing than Google will ever tell you. That&amp;rsquo;s my opinion anyways.&lt;/p&gt;&lt;p align="center"&gt;&lt;img height="240" alt="Google_hacks" src="http://www.humdinger-media.com/rattleboard/google_hacks.jpg" width="240" border="0" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112317553513232584?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112317553513232584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112317553513232584'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/08/google-cheat-sheet.html' title='Google Cheat Sheet'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112299387320846375</id><published>2005-08-02T07:44:00.000-07:00</published><updated>2005-08-02T07:44:33.220-07:00</updated><title type='text'>Trojan: Delf-LB</title><content type='html'>&lt;p align="left"&gt;Just recovered from this virus. &lt;a href="http://www.sophos.com/virusinfo/analyses/trojdelflb.html"&gt;According to the folks at SOPHOS&lt;/a&gt;, &amp;ldquo;&lt;!--StartFragment --&gt; Troj/Delf-LB is a browser hijacking Trojan for the Windows platform.&amp;rdquo;&lt;/p&gt;&lt;p align="left"&gt;When I first noticed that my hosts file was getting changed and that some odd things got added to my Startup directory, I had a feeling that someone and/or something was trying to mess with my system.&lt;/p&gt;&lt;p align="left"&gt;Thanks to Scotty the Watchdog from &lt;a href="http://www.winpatrol.com/"&gt;WinPatrol&lt;/a&gt;, I was alerted in real-time to the following issues:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;battlenet.exe wanted to run every time the computer would start&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;DirectX.exe wanted to run every time the computer would start&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;commonaccess.exe wanted to run every time the computer would start&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;msfirewall.exe wanted to run every time the computer would start&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;the host file was being modified to redirect my web browser in case I wanted to access a specific list of sites&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="left"&gt;At any rate, being a hybrid geek/mortal, I started Google-ing&amp;nbsp;some of those file names, combinations thereof, and variations of those file names, including &amp;ldquo;trojan&amp;rdquo; and &amp;ldquo;virus&amp;rdquo; &amp;mdash; but the results were disappointing. A couple of entries in some outdated bulletin boards referred to a specific virus, but the details did not match up with my situation.&lt;/p&gt;&lt;p align="left"&gt;So, I fired up every available virus scanner, spyware detection and removal tool I could find (including Microsoft&amp;rsquo;s beta version of its AntySpyware tool). Some of the tools detected and removed some cookies and adware-related registry entries, but none of the tools detected the virus in question.&lt;/p&gt;&lt;p align="left"&gt;Now, before you accuse me of being an ignorant knowledge worker, let me explain. I do have avast! professional version installed and running on my machine, and it has saved me from many malicious attempts in terms of viruses and so forth. I also run some adware detection tools on a regular basis, just to make sure, although I don&amp;rsquo;t like real-time protection (it sometimes interferes with testing and developing of web applications).&lt;/p&gt;&lt;p align="left"&gt;The cause of my virus,&amp;nbsp;I determined, was a file I downloaded using a P2P tool. If I had not been in such a hurry, I would have probably been more cautious, and I would have let avast! check the downloaded file before blindly unzipping and attempting to install it. But, I had never encountered any problems with any files I downloaded with that P2P tool before . . . so my defense mechanism was down. AND THAT&amp;rsquo;S ALWAYS WHEN BAD THINGS HAPPEN!&lt;/p&gt;&lt;p align="left"&gt;The solution, by the way, was provided to me by the good folks from SOPHOS. If you have any issues that resemble what I have described thus far but can&amp;rsquo;t find a good solution anywhere else,&amp;nbsp;go to &lt;a href="http://www.sophos.com/virusinfo/analyses/trojdelflb.html"&gt;the Troj/Delf-LB page&lt;/a&gt; on SOPHOS&amp;rsquo; web site. Click the Advanced tab.&lt;/p&gt;&lt;p align="left"&gt;There, you will find detailed information as to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;a) which files are actually hidden Trojans (and you will, of course, delete those files in Safe Mode), and &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;b) which registry entries are being created to make sure the Trojan will be re-created every time you reboot your machine (and, of course, you will hunt down every single registry entry and delete them one-by-one in Safe mode).&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="left"&gt;Why do I embarrass myself in public by telling you about this faux-pas of mine? Simple: If you run into a problem with this old (yet still circulating virus), you shouldn&amp;rsquo;t have to waste half a day getting rid of it. And that&amp;rsquo;s all.&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112299387320846375?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112299387320846375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112299387320846375'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/08/trojan-delf-lb.html' title='Trojan: Delf-LB'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112204421237546799</id><published>2005-07-22T07:56:00.000-07:00</published><updated>2005-07-22T07:56:52.400-07:00</updated><title type='text'>Do you let clients revise revisions?</title><content type='html'>&lt;p&gt;And is the client always right?&lt;/p&gt;&lt;p&gt;Here&amp;rsquo;s the main reason I have been so terribly busy the last two days: Two separate clients and two totally separate projects. One is a heavy-duty web application, and the other one is a product web site with a shopping cart and some database functionality (basically a web application but I do make a distinction between the two due to their overall purpose).&lt;/p&gt;&lt;p&gt;At any rate, in both instances, the clients have nickel-and-dimed me to inertia with requests for revisions &amp;mdash; after requests for revisions were completed (which were requested after the previous requests for revisions were completed).&lt;/p&gt;&lt;p&gt;Sure, I could specifiy in the contract that the final design and copy will get reviewed and revised and that&amp;rsquo;s it &amp;mdash; and then have the client sign off on everything. End of discussion. End of pain. But that wouldn&amp;rsquo;t earn me very good marks in the customer service department. And to be honest, I do care about that, what with high school students advertising their services for the same type of work I do for $10/hour. (Unfortunately, not every client will be able to tell the difference between the quality of work from me versus that of a high school student when they call you up, discuss the project over the phone and want a rough estimate. Sure, if you could compare end results and long-term benefits, that would be a different story, but back here on Planet Earth where I live, most small business owners decide they want a web site on a Wednesday afternoon, make a few calls, and by Friday afternoon, they will award the project to the lowest bidder &amp;mdash; as long as that low bidder can do the talk.)&lt;/p&gt;&lt;p&gt;But I digress, back to my quandary. If I let the clients revise their own revisions until the clients&amp;nbsp;AND I are blue in the face, the client will eventually be happy. Of course, I try to exercise common sense and interject objective-sounding statements such as, &amp;ldquo;Based on my understanding of your expertise in this field, I tend to agree with your gut instincts. I say we&amp;rsquo;ll go with the current design, and get everything done so we can launch. If you receive specific feedback from a majority of your clients, we can make any changes you like later on.&amp;rdquo;&lt;/p&gt;&lt;p&gt;Of course, I also make sure I get paid for my time. Nonetheless, I am always somewhat lost when I discuss this with other designers/developers, since they seem to get away with NOT giving in to their clients&amp;rsquo; requests for revision after revision. Or do they just tell me that to make me feel silly?&lt;/p&gt;&lt;p&gt;In the end, I am always grateful for word-of-mouth advertising, and I cannot even begin to tell you how often I&amp;rsquo;ve heard the phrase &amp;ldquo;and he&amp;rsquo;s so great to work with and so patient&amp;rdquo; attached to my introduction. Not that I necessarily thrive on that, but it does translate into spendable income, and that again makes me feel good. So, what the heck am I complaining about?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112204421237546799?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112204421237546799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112204421237546799'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/07/do-you-let-clients-revise-revisions.html' title='Do you let clients revise revisions?'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112179621537113546</id><published>2005-07-19T11:03:00.000-07:00</published><updated>2005-07-19T11:03:35.386-07:00</updated><title type='text'>Astonishing Web Design</title><content type='html'>&lt;p&gt;&lt;strong&gt;Every now and then, you come across something that just lifts you off your seat.&lt;/strong&gt; In my case, I looked at the portfolio of &amp;ldquo;another web &amp;amp; design company&amp;rdquo; and found some truly outstanding samples of their work. Inspiring. Definitely not something you see very often. So, please allow me to share a few samples and ideas with you.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.galnaftogas.com/en/"&gt;GALNAFTOGAZ&lt;/a&gt;&lt;br /&gt;This is a web site for an Ukrainian petrochemicals company. However, the design focus was on people and very unusual ways in which actual gas pipelines are being displayed. (Well, the gas pipelines that have been formed into &amp;ldquo;bretzel&amp;rdquo; and heart shapes might only exist in Photoshop (or some other tool), but nonetheless, they look real.)&lt;/p&gt;&lt;p&gt;&lt;img height="262" alt="" src="http://www.humdinger-media.com/rattleboard/gas_heart.jpg.gif" width="260" border="0" /&gt;&lt;/p&gt;&lt;p&gt;Anyone who recently had to come up with a design &amp;mdash; either print or online &amp;mdash; for a client who deals with stuff that needs to be referred to in terms of abstract and metaphorical imagery, take a good look at those examples. The designs are slightly different for the &lt;a href="http://www.galnaftogas.com/en/"&gt;English&lt;/a&gt; and the &lt;a href="http://www.galnaftogas.com/"&gt;Ukrainian&lt;/a&gt; web sites, so make sure you look at both.&lt;/p&gt;&lt;p&gt;The proprietor(s) of the Art Lebedev studio also have an amazing collection of posters which are actually wallpapers that come in five resolutions each.&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://www.artlebedev.com/posters/shadows/preview.jpg" border="0" /&gt;&lt;/p&gt;&lt;p&gt;Some of you may recognize the web site as that of the originator of &lt;a href="http://www.artlebedev.com/portfolio/optimus/"&gt;the OPTIMUS keyboard&lt;/a&gt; (which has shown up frequently on the front pages of &lt;a href="http://del.icio.us/"&gt;del.icio.us&lt;/a&gt;). Although most of the work of this outfit is for Russian clients (please forgive me if I&amp;rsquo;m lumping other independent nations into one category and call it all Russian &amp;mdash; I&amp;rsquo;m just an ignorant dweeb from the Western United States), the underlying concepts and the dedication with which &lt;a href="http://www.artlebedev.com/"&gt;this team of artists&lt;/a&gt; have approached their work is truly inspiring. Check it out!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112179621537113546?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112179621537113546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112179621537113546'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/07/astonishing-web-design.html' title='Astonishing Web Design'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112170841664359507</id><published>2005-07-18T10:40:00.000-07:00</published><updated>2005-07-18T10:40:16.666-07:00</updated><title type='text'>Find data with underscores in SQL Server...</title><content type='html'>&lt;p&gt;Probably not a major league big deal, but what if you do need to find SQL Server data that contains an underscore?&lt;/p&gt;&lt;p&gt;When my trusted assistant came to me this morning and showed me the frustrating results of her latest database query, I decided to jot this down&amp;hellip;just in case.&lt;/p&gt;&lt;p&gt;For some strange reason, the folks in our Customer Support department added a bunch of new users into our web application. To make sure that none of those users would get mixed up with &amp;ldquo;real&amp;rdquo; users, the suffixes &amp;ldquo;_pr&amp;rdquo; and &amp;ldquo;_up&amp;rdquo; were used to identify those new users. That was somebody&amp;rsquo;s brilliant idea on a late Friday afternoon.&lt;/p&gt;&lt;p&gt;On Monday morning, my assistant &amp;mdash; who primary deals with SQL Server queries that aren&amp;rsquo;t addresed (yet) by the administrative user interface &amp;mdash; wanted to find all those new users. So, she figured, let&amp;rsquo;s search for underscore characters (&amp;ldquo;_&amp;rdquo;) followed by either &amp;ldquo;pr&amp;rdquo; or &amp;ldquo;up.&amp;rdquo; Here&amp;rsquo;s&amp;nbsp;her slightly&amp;nbsp;paraphrased query:&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" color="#009f00" size="2"&gt;&lt;strong&gt;SELECT * FROM UserTable WHERE UserName LIKE &amp;lsquo;%_pr%&amp;rsquo;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" color="#009f00" size="2"&gt;&lt;strong&gt;SELECT * FROM UserTable WHERE UserName LIKE &amp;lsquo;%_up%&amp;rsquo;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;When that returned just about everyone and anyone who had &amp;ldquo;pr&amp;rdquo; and &amp;ldquo;up&amp;rdquo; in their user name, but not necessarily an underscore character, she got a little frustrated. And, of course, waltzed into my office, &lt;font color="#0000ff"&gt;&amp;lt;sarcasm&amp;gt;&lt;/font&gt;interrupting me and my very important work&lt;font color="#0000ff"&gt;&amp;lt;/sarcasm&amp;gt;&lt;/font&gt;.&lt;/p&gt;&lt;p&gt;To make a long story short, I asked her to escape the underscore character and revisit her query afterwards. Because, in SQL Server&amp;rsquo;s T-SQL lingo, an underscore character in a LIKE expression will match any single character. Wow! In other words,&amp;nbsp;LIKE '%_pr%' would match &amp;lsquo;oppressed&amp;rsquo; as well as &amp;lsquo;my5presents&amp;rsquo; and so forth. &lt;/p&gt;&lt;p&gt;The simplest way to escape the underscore and make this query work would be to write the following:&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" color="#009f00" size="2"&gt;&lt;strong&gt;SELECT * FROM UserTable WHERE UserName LIKE &amp;lsquo;%_pr&amp;rsquo;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;The percentage sign (%) before the escaped underscore character ([_]) indicates that we will accept anything before the underscore, followed by &amp;ldquo;pr&amp;rdquo; &amp;mdash; and removing the percentage sign at the end makes sure we only get results that actually do end in &amp;ldquo;pr.&amp;rdquo;&lt;/p&gt;&lt;p&gt;Similarly, you might want to exercise special care when dealing with percentage signs in your queries.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112170841664359507?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112170841664359507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112170841664359507'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/07/find-data-with-underscores-in-sql.html' title='Find data with underscores in SQL Server...'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112144652428749688</id><published>2005-07-15T09:55:00.000-07:00</published><updated>2005-07-15T09:55:24.313-07:00</updated><title type='text'>Free FLASH Tool . . .</title><content type='html'>&lt;p&gt;Before anyone starts accusing me of blogging product advertisements, consider this: A free tool to create Flash-like presentations for the web or to run on your PC.&lt;/p&gt;&lt;p&gt;Too good to be true, you say, and there must be a catch, you think. Not really. You can actually purchase a Plus&amp;nbsp; upgrade to the free version (for $19.95) and get some bonus features, but the basic software program does a pretty good job (minus the Flash learning curve) and is yours to keep for free.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.powerbullet.com/info.html"&gt;Powerbullet Presenter - Create animated Flash-Presentations&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Here&amp;rsquo;s what the developers&amp;nbsp;say about Powerbullet: &amp;ldquo;Powerbullet is available in both a Freeware and a Plus version. The Freeware version is a complete, self-contained program that has been in popular use in both commercial and hobby projects.&amp;rdquo;&lt;/p&gt;&lt;p&gt;The Plus version offers some extra features, including: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Advanced click actions - call JavaScript functions in the browser &lt;/li&gt;&lt;li&gt;Local files - call other Flash or media files in the local web or PC folder &lt;/li&gt;&lt;li&gt;Fullscreen executables - specify auto-fullscreen mode &lt;/li&gt;&lt;li&gt;Call other files or applications from your executable &lt;/li&gt;&lt;li&gt;Precisely-timed animations - call any existing animation and override default timings &lt;/li&gt;&lt;li&gt;Custom navigation buttons - use your own image files to replace the default navigation buttons &lt;/li&gt;&lt;li&gt;Rollover effects - supply your own "over" and "down" images for rollover buttons &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Not bad for someone who wants to crank out a nice sales brochure or a feature tutorial for a web application.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112144652428749688?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112144652428749688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112144652428749688'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/07/free-flash-tool.html' title='Free FLASH Tool . . .'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112136824874517203</id><published>2005-07-14T12:10:00.000-07:00</published><updated>2005-07-14T12:10:48.766-07:00</updated><title type='text'>Create PDF for free, online . . . </title><content type='html'>&lt;p&gt;If you&amp;rsquo;re running around from one client&amp;rsquo;s office to the next, carrying your project updates on an USB memory stick, you sometimes miss the goodies that you have on your home computer. Like Adobe Acrobat (as in the full-blown PDF creator). And chances are, your clients only have Acrobat Reader installed on most of their machines &amp;mdash; if even that much.&lt;/p&gt;&lt;p&gt;Still, the demand for PDFs is ubiquitous. Many clients want this-and-that-and-the-other in PDF, so what do you do?&lt;/p&gt;&lt;p&gt;Go online, of course, and convert your documents to PDFs for free at:&lt;br /&gt;&lt;a href="http://www.pdfonline.com/"&gt;PDF Online : Create PDF for free&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This is not an ad for their service; this is simply a &amp;ldquo;shortcut&amp;rdquo; of sorts, if you will, for those among us who can&amp;rsquo;t always lug around a laptop and be prepared for the random requests that fly in your face as you&amp;rsquo;re out and about meeting with &amp;ldquo;real people.&amp;rdquo;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112136824874517203?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112136824874517203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112136824874517203'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/07/create-pdf-for-free-online.html' title='Create PDF for free, online . . . '/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112126501398140261</id><published>2005-07-13T07:30:00.000-07:00</published><updated>2005-07-13T07:30:14.003-07:00</updated><title type='text'>Clean up your web act with AJAX</title><content type='html'>&lt;p&gt;Heard of AJAX? No, not the scratchy kitchen cleanser that used to come in a can (might still exist, but I haven&amp;rsquo;t used it since I graduated from college back in the 1900&amp;rsquo;s).&lt;/p&gt;&lt;p&gt;According to Christopher Harrison, a developer who posted &lt;a href="http://www.builderau.com.au/program/0,39024614,39195723,00.htm"&gt;a related article at builderau.com&lt;/a&gt;, &amp;ldquo;AJAX or Asynchronous JavaScript and XML is not a server platform or markup language. AJAX is not even a technology per se, rather a group of technologies for mature Web interface design and development.&amp;rdquo;&lt;/p&gt;&lt;p&gt;Some of us may have used AJAX before, although we didn&amp;rsquo;t know it. For example, if you were doing web payment processing, using Authirze.Net AIM (advanced integration method), and did a little bit of DHTML along with that, you may already be an AJAX veteran.&lt;/p&gt;&lt;p&gt;Likewise, if you ever had to update information on a web page, using remote server JavaScript, you already know a little something about the power of the type of dynamic and interactive information updating that AJAX enables you to apply.&lt;/p&gt;&lt;p&gt;One of the more interesting articles I stumbled across, complete with explanations and a live demo, is:&lt;br /&gt;&lt;a href="http://www.baekdal.com/articles/usability/usable-XMLHttpRequest/"&gt;Usable XMLHttpRequest in Practice&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Another great article for those of you who want to get into AJAX but were afraid to ask &amp;mdash; or simply didn&amp;rsquo;t have the time to research:&lt;br /&gt;&lt;a href="http://www.adaptivepath.com/publications/essays/archives/000385.php"&gt;http://www.adaptivepath.com/publications/essays/archives/000385.php&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Finally, the WIKIPEDIA definition of AJAX, along with a number of related articles:&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/AJAX"&gt;http://en.wikipedia.org/wiki/AJAX&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112126501398140261?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112126501398140261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112126501398140261'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/07/clean-up-your-web-act-with-ajax.html' title='Clean up your web act with AJAX'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112108843587384319</id><published>2005-07-11T06:27:00.000-07:00</published><updated>2005-07-11T06:27:15.900-07:00</updated><title type='text'>Regular Expressions</title><content type='html'>&lt;p&gt;For a &amp;ldquo;learn as you go&amp;rdquo; kind of programmer like myself, regular expressions have always been a little bit of a mystery to me. No longer. &lt;/p&gt;&lt;p&gt;Here are some excellent resources that provide some truly usable information concerning regular expressions:&lt;/p&gt;&lt;p&gt;&lt;!--StartFragment --&gt;&lt;span class="clsTitle"&gt;&lt;a href="http://zez.org/article/articleview/11/"&gt;Regular Expressions explained&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="clsTitle"&gt;&lt;a href="http://www.15seconds.com/issue/010301.htm"&gt;Server-Side Validations Using Regular Expressions&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="clsTitle"&gt;&lt;/span&gt;&lt;a href="http://www.4guysfromrolla.com/webtech/042501-1.shtml"&gt;Stripping HTML Tags using Regular Expressions&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The fascinating thing about regular expressions &amp;mdash; for me &amp;mdash; is that you learn how to use them once and then apply that knowledge in a number of scripting and programming languages. The efficieny of regular expressions is, well for lack of a better description, powerful! Having a good command of regular expressions in your arsenal of programming tricks is the equivalent of what it means to have fire to a cave man.&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112108843587384319?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112108843587384319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112108843587384319'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/07/regular-expressions.html' title='Regular Expressions'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112082927665917003</id><published>2005-07-08T06:27:00.000-07:00</published><updated>2005-07-08T06:27:56.663-07:00</updated><title type='text'>Free Programming and Computer Science Books</title><content type='html'>&lt;p&gt;You get what you pay for, generally, but it might be worth your time looking through this list of freely available online books:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.techbooksforfree.com/"&gt;Free Programming and Computer Science Books&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Among the list of offerings:&lt;/p&gt;&lt;p&gt;&lt;a href="http://cvsbook.red-bean.com/"&gt;&lt;strong&gt;Open Source Development with CVS&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.gotmono.com/docs/"&gt;&lt;strong&gt;The Mono Handbook&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.apress.com/book/supplementDisplay.html?bID=3&amp;amp;sID=10"&gt;&lt;strong&gt;Programmer's Introduction to PHP 4.0&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.hudzilla.org/php/"&gt;&lt;strong&gt;Practical PHP Programming&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;But you better check it out for yourself; chances are, you&amp;rsquo;ll find at least one or two interesting reads.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112082927665917003?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112082927665917003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112082927665917003'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/07/free-programming-and-computer-science.html' title='Free Programming and Computer Science Books'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112082885303218454</id><published>2005-07-08T06:20:00.000-07:00</published><updated>2005-07-08T06:20:53.050-07:00</updated><title type='text'>Webnote - an online tool for taking notes</title><content type='html'>&lt;p&gt;Remember stickies? The desktop versions that people use to keep track of this and that and the other?&lt;/p&gt;&lt;p&gt;Now think of stickies on the web. Accessible from anywhere with a web browser and an Internet connection. &lt;strong&gt;And&lt;/strong&gt; you can share them with others. Need I say more?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.aypwip.org/webnote/"&gt;Webnote - an online tool for taking notes&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112082885303218454?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112082885303218454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112082885303218454'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/07/webnote-online-tool-for-taking-notes.html' title='Webnote - an online tool for taking notes'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112014828207814381</id><published>2005-06-30T09:18:00.000-07:00</published><updated>2005-06-30T09:18:02.080-07:00</updated><title type='text'>DHTML Tool Tips . . . anyone?</title><content type='html'>&lt;p&gt;Simply too good to pass up and keep all to myself:&lt;/p&gt;&lt;p&gt;&lt;a href="http://migoicons.tripod.com/dhtips.htm"&gt;MigoIcons ::.&amp;nbsp;DHTML Tip Message&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This DHTML author has put a lot of time and efort into coming up with a truly unique tool tip script. You can &lt;a href="http://migoicons.tripod.com/dhtips.htm"&gt;download it for free&lt;/a&gt;, and it comes complete with a generator. There are about a dozen or so configurations possible, and one of my favorites is the transparent background tooltip.&lt;/p&gt;&lt;p&gt;There is also &lt;a href="http://migoicons.tripod.com/demo.htm"&gt;a comprehensive demo page&lt;/a&gt; that you can visit with your various web browsers to see what&amp;rsquo;s going on and how compatible everything is. When I tested this script, everything worked fine in FireFox and IE 6. According to the DHTML developer, Opera (beginning with version 7.x) should be cooperating as well.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112014828207814381?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112014828207814381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112014828207814381'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/dhtml-tool-tips-anyone.html' title='DHTML Tool Tips . . . anyone?'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-112014638019600792</id><published>2005-06-30T08:46:00.000-07:00</published><updated>2005-06-30T08:46:20.226-07:00</updated><title type='text'>Free Online File Storage / File Uploads</title><content type='html'>&lt;p&gt;We&amp;rsquo;ve all been there at one time or another: You have a large file that cannot be practically e-mailed to everyone who needs it but you want it to be available online.&lt;/p&gt;&lt;p&gt;Or you have a good little solution for something (say, a MS Excel macro that converts a list of links into a Google Sitemap) and want to make it available to others without running into bandwidth debt with your web hosting service.&lt;/p&gt;&lt;p&gt;Whatever the reason, online file storage has become fairly popular. It is convenient and takes the hassle out of carrying CDs, USB memory sticks and perhaps even floppies around at all times to make files available to clients, co-workers, friends and family.&lt;/p&gt;&lt;p&gt;To help you get started with some free online file storage possibilities, here are a few links (they were all 1) working and 2) offered free accounts &amp;mdash; not time-limited trials &amp;mdash; at the time of this writing):&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.rapidshare.de/"&gt;www.rapidshare.de&lt;/a&gt;&lt;br /&gt;&amp;ldquo;RapidShare is an absolutely free web-hosting service for providing webspace on our servers without the need to sign-up. Just select a file and upload it. You will get your download-link and a secret delete-link immediately.&amp;rdquo; Check out their &lt;a href="http://rapidshare.de/en/faq.html"&gt;FAQ&lt;/a&gt; for more details.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.filefront.com/"&gt;www.filefront.com&lt;/a&gt;&lt;br /&gt;They offer unlimited file uploads, unlimited file downloads, unlimited bandwidth, unlimited space, public access, no file size restrictions. Oh, and they say they&amp;rsquo;re free.&lt;a href="http://freespace.filefront.com/1"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.megaupload.com/"&gt;www.megaupload.com&lt;/a&gt;&lt;br /&gt;Here&amp;rsquo;s what they say: &amp;ldquo;There is no registration and no fees. There is nothing to install and no special software required. All you need is the browser you are using right now. A file can be up to for 500MB (wow that's half a gigabyte). We will host your file forever for free, until it is unused for 30 days. If nobody downloads your file for 30 days, it is automatically deleted. Your file is available for download here at Megaupload.com 24 hours a day and seven days a week.&amp;rdquo;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.znail.com/"&gt;http://www.znail.com/&lt;/a&gt;&lt;br /&gt;Free online file and bookmarks storage. They appreciate donations via PayPal and will award you points for each donation. Accounts with points &amp;ldquo;will receive better service in the future.&amp;rdquo;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sendthisfile.com/index.jsp"&gt;http://www.sendthisfile.com/index.jsp&lt;/a&gt;&lt;br /&gt;Actually an e-mail-related service that enables you to send a large file to anyone, anywhere.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;If anyone else knows of any reliable and free online file storage sites, please send me a brief message with the link. Thanks much.&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.swiftdesk.com/"&gt;http://www.swiftdesk.com/&lt;/a&gt;&lt;br /&gt;Free 30MB file storage, bookmarks, e-mail, planner (calendar, reminders, to-do lists, notes and a calculator) and web site space. CHECK TO SEE IF THIS IS WORKING AGAIN. When I tried to register today, I got a server error.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-112014638019600792?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112014638019600792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/112014638019600792'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/free-online-file-storage-file-uploads.html' title='Free Online File Storage / File Uploads'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111997366106295988</id><published>2005-06-28T08:47:00.000-07:00</published><updated>2005-06-28T08:50:57.513-07:00</updated><title type='text'>Making sure SQLSERVERAGENT will be running</title><content type='html'>&lt;p&gt;Among SQL Server DBAs, you frequently hear horror stories about this-and-that stored procedure suddenly ceasing to function, reliable processes to stop performing as scheduled and so forth.&lt;/p&gt;&lt;p&gt;About 90&amp;ndash;plus percent of the time, it&amp;rsquo;s all being caused by the SQLSERVERAGENT Service having been stopped but not restarted. The SQLSERVERAGENT Service is responsible for all kinds of SQL Server related tasks &amp;mdash; if you want to know which tasks that would be on your database server, simply turn it off and wait for the phone to ring. (Just kidding, don&amp;rsquo;t do that on your production server.)&lt;/p&gt;&lt;p&gt;At any rate, typically when you turn off SQL Server for maintenance or upgrades and the like, you also turn off SQLSERVERAGENT. And although you can take a number of precautions to make sure SQLSERVERAGENT will start automatically, the best approach is to verify that it is running by looking up its current status &amp;mdash; either in the Services panel or from within Enterprise Manager.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1) Check up on SQLSERVERAGENT in the Services panel&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Control Panel | Administrative Tools | Services&lt;/p&gt;&lt;p&gt;&lt;img height="441" alt="Sqlagent_06" src="http://www.humdinger-media.com/rattleboard/sqlagent_06_small.jpg" width="415" border="0" /&gt;&lt;/p&gt;&lt;p&gt;If it doesn&amp;rsquo;t say &amp;ldquo;Started&amp;rdquo; in the Status column, it&amp;rsquo;s not running. Simply right-click SQLSERVERAGENT and select Start. (Of course, the MSSQLSERVER Service needs to be running first for SQLSERVERAGENT to be able to start, but then again, you already knew that, right?)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2) Check up on SQLSERVERAGENT through Enterprise Manager&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Start Enterprise Manager and access the appropriate instance of SQL Server. Then expand the &amp;ldquo;Management&amp;rdquo;&amp;nbsp;section and look at the SQL Server Agent node.&lt;/p&gt;&lt;p&gt;&lt;img height="375" alt="Sqlagent_02" src="http://www.humdinger-media.com/rattleboard/sqlagent_02.gif" width="302" border="0" /&gt;&lt;/p&gt;&lt;p&gt;If SQL Server Agent does not have a green arrow on its icon, it&amp;rsquo;s not running. In that case, right-click and select Start. (Of course, this has to be done on the machine on which SQL Server is running; remote connections in Enterprise Manager neither reliably display the SQL Server Agent status nor will they always allow you to start the service.) Ideally, you&amp;rsquo;ll see something like this:&lt;/p&gt;&lt;p&gt;&lt;img height="98" alt="Sqlagent_03" src="http://www.humdinger-media.com/rattleboard/sqlagent_03.gif" width="272" border="0" /&gt;&lt;/p&gt;&lt;p&gt;By the way, you can right-click on the SQL Server Agent node and select Properties to display the corresponding dialog box. On the Advanced tab, you should see a section called &amp;ldquo;Restart services.&amp;rdquo; Make sure both options are checked, and you&amp;rsquo;ll have fewer problems later on when somebody &amp;mdash; or something &amp;mdash; messes with either SQL Server or SQL Server Agent.&lt;/p&gt;&lt;p&gt;&lt;img height="455" alt="Sqlagent_07" src="http://www.humdinger-media.com/rattleboard/sqlagent_07.gif" width="404" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Finally&amp;hellip;&lt;br /&gt;&lt;/strong&gt;In addition to manual configurations and double-checking, you can also enable SQLSERVERAGENT to start automatically when the Operating System gets restarted.&lt;/p&gt;&lt;p&gt;Go to Enterprise Manager, expand the instance of SQL Server, then right-click the name of the SQL Server instance and select &amp;ldquo;Properties&amp;rdquo; to see something like:&lt;/p&gt;&lt;p&gt;&lt;img height="494" alt="Sqlagent_01" src="http://www.humdinger-media.com/rattleboard/sqlagent_01.gif" width="404" border="0" /&gt;&lt;/p&gt;&lt;p&gt;Check all available options in the &amp;ldquo;Autostart policies&amp;hellip;&amp;rdquo; section, and you&amp;rsquo;re set.&lt;/p&gt;&lt;p&gt;For good measure, you also want to make sure that the SQLSERVERAGENT Service has been set to a &amp;ldquo;Startup type&amp;rdquo; of Automatic, which will prevent a number of problems when it comes to this and that issue having to do with stored procedures, database jobs&amp;nbsp;and scheduled tasks.&lt;/p&gt;&lt;p&gt;&lt;img height="468" alt="Sqlagent_04" src="http://www.humdinger-media.com/rattleboard/sqlagent_04.gif" width="410" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial" size="1"&gt;If you have any additional insights, tips and information, please let me know. All references to SQL Server in this article refer to SQL Server 2000. Screen captures were taken on Windows XP.&lt;/font&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111997366106295988?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111997366106295988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111997366106295988'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/making-sure-sqlserveragent-will-be.html' title='Making sure SQLSERVERAGENT will be running'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111963811199877326</id><published>2005-06-24T11:35:00.000-07:00</published><updated>2005-06-24T11:35:12.036-07:00</updated><title type='text'>ByVal versus ByRef (ASP/VBScript)</title><content type='html'>&lt;p&gt;Typically, ASP developers pass parameters to VBScript FUNCTIONs and SUBs all the time. After all, creating custom functions is one of the strengths of this development environment. But did you know that the default way for passing parameters to a SUB or a FUNCTION is by reference (ByRef)?&lt;/p&gt;&lt;p&gt;Well, I wasn&amp;rsquo;t fully aware of that until I came across some sample code that was using ByVal to allow parameters to be passed &amp;ldquo;by value&amp;rdquo; to a function. What&amp;rsquo;s the big deal? When you pass a variable ByVal, a new instance of the variable is created and given to the routine being called (which&amp;nbsp;requires more memory).&amp;nbsp;&lt;/p&gt;&lt;p&gt;As the good folks at ASP101 observe: &amp;ldquo;Any changes made to the value of this variable have no effect on the value of the original variable that was passed in. If you instead pass in a variable ByRef, any changes you make to this variable also change it's value outside the routine.&amp;rdquo;&lt;/p&gt;&lt;p&gt;Consider this &lt;a href="http://www.aspemporium.com/codelib.aspx?pid=117&amp;amp;cid=11"&gt;example function&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;&lt;font face="Georgia" color="#009f00" size="2"&gt;&lt;strong&gt;Function IsWhole(ByVal n)&lt;br /&gt;&amp;nbsp; dim i&lt;br /&gt;&amp;nbsp; i = cdbl(n)&lt;br /&gt;&amp;nbsp; IsWhole = (cdbl(round(i)) = i)&lt;br /&gt;End Function&lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;A brief discussion on the subject at ASP101.com:&lt;br /&gt;&lt;a href="http://www.asp101.com/tips/index.asp?id=68"&gt;ByVal Vs. ByRef&lt;/a&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111963811199877326?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111963811199877326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111963811199877326'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/byval-versus-byref-aspvbscript.html' title='ByVal versus ByRef (ASP/VBScript)'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111954616715795926</id><published>2005-06-23T10:02:00.000-07:00</published><updated>2005-06-23T10:02:47.186-07:00</updated><title type='text'>Photoshop Grunge Brushes</title><content type='html'>&lt;p&gt;Ever needed to make a photograph look &amp;ldquo;grunge-y&amp;rdquo;? You know, take a perfect photograph and add cracks, spots, lines and other visual debris so that it looks as though it had been passed around to everyone during highschool chemistry lab?&lt;/p&gt;&lt;p&gt;There are a number of ways in which you can accomplish this kind of grunge look-and-feel, but one of the slickest and fastest, in my opinion, is to use brushes in &lt;a href="http://www.adobe.com/products/photoshop/main.html"&gt;Photoshop&lt;/a&gt;. Brushes can have all kinds of shapes and don&amp;rsquo;t actually have to be used as a brush in the traditional sense. Custom brushes, for example, can be used to &amp;ldquo;paint&amp;rdquo; a specific image onto a photograph. Such as bar codes, butterflies, nails or barbed wire, for example.&lt;/p&gt;&lt;p&gt;And with a little bit of experimenting, you soon find out how to adjust the opacity of a layer that contains grunge material, add layer effects and use the right layer blending mode. If all of that sounds fascinating but out of reach, try &lt;a href="http://www.photoshopbrushes.com/"&gt;Photoshopbrushes.com&lt;/a&gt;. (Nope, they are not paying me off to write about this. I wish.)&lt;/p&gt;&lt;p&gt;Among the brushes that are free for download, you can find grunge-specific ones, for example: &lt;a href="http://www.photoshopbrushes.com/brushes/20.htm"&gt;Photoshop Grunge brushes - set 2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Additionally, &lt;a href="http://www.photoshopbrushes.com/tutorials.htm"&gt;they also have a number of tutorials&lt;/a&gt;, dealing with brush basics all the way up to some very sophisticated techniques that should make you an expert grunge-inator in no time.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111954616715795926?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111954616715795926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111954616715795926'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/photoshop-grunge-brushes.html' title='Photoshop Grunge Brushes'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111945282464966510</id><published>2005-06-22T08:07:00.000-07:00</published><updated>2005-06-22T08:07:04.680-07:00</updated><title type='text'>CSS Color Blender</title><content type='html'>&lt;p&gt;Not sure how often you need to do this as a web master, but it sure is a lot of fun to create a number of color blends using &lt;a href="http://www.meyerweb.com/"&gt;Eric Meyer&amp;rsquo;s&lt;/a&gt; online tool at:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.meyerweb.com/eric/tools/color-blend/"&gt;http://www.meyerweb.com/eric/tools/color-blend/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In case you&amp;rsquo;ve never heard of Eric Meyer . . . well, I guess you never really needed to deal with CSS in-depth. At any rate, one of &lt;a href="http://www.meyerweb.com/eric/tools/"&gt;the tools Eric has created&lt;/a&gt; over the years includes the Color Blender. Basically, you &amp;ldquo;&lt;!--StartFragment --&gt; Supply two color values in either hex, short hex, RGB percentages, or RGB decimals and get as many as ten colors shades between the two you supplied. Great for finding a color halfway between two shades you like, or mixing two colors together in various proportions.&amp;rdquo;&lt;/p&gt;&lt;p&gt;And that&amp;rsquo;s it. Seeing is believing. Give it a try!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111945282464966510?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111945282464966510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111945282464966510'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/css-color-blender.html' title='CSS Color Blender'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111936539297992381</id><published>2005-06-21T07:49:00.000-07:00</published><updated>2005-06-21T07:49:53.910-07:00</updated><title type='text'>Converting &amp; Installing PostScript and Type 1 Fonts</title><content type='html'>&lt;p&gt;So, say you&amp;rsquo;re working on the high resolution, slick full-color brochure that will announce your web site. Your client gives you the basic outline, a few design ideas of her own . . .&amp;nbsp;and a bunch of high-quality, commercial fonts that she thinks would look and purchased for the occasion.&lt;/p&gt;&lt;p&gt;You take a look at the fonts. The preview image looks great, and you immediately fall in love with those fonts. There&amp;rsquo;s just one tiny problem: They are all in .AFM and .PFB format. You would like to convert them to TTF, because that&amp;rsquo;s the way you (and Photoshop) work.&lt;/p&gt;&lt;p&gt;No problemo!&lt;/p&gt;&lt;p&gt;No need to go hunting down a &amp;ldquo;AFM to TTF&amp;rdquo; or &amp;ldquo;PFB to TTF&amp;rdquo; converter. If you&amp;rsquo;re running on a modestly up-to-date Windows operating system, everything you need is built-in. &lt;/p&gt;&lt;p&gt;Just go to &lt;strong&gt;Control Panel | Fonts&lt;/strong&gt; to open the Windows Fonts directory that way. (Yes, you could just browse to Windows\Fonts, but doing is this way will enable you to open the Fonts directory exclusively in a new window.) Then click &lt;strong&gt;File | Install New Font&amp;hellip;&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;img height="232" alt="Fonts_01" src="http://www.humdinger-media.com/rattleboard/fonts_01.gif" width="293" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Next, browse to the directory containing your font file(s).&lt;/p&gt;&lt;p&gt;&lt;img height="321" alt="Fonts_02" src="http://www.humdinger-media.com/rattleboard/fonts_02.gif" width="402" border="0" /&gt;&lt;/p&gt;&lt;p&gt;The Add Fonts dialog box will automatically scan the selected directory for any available fonts and display them in the List of fonts.&lt;/p&gt;&lt;p&gt;Typically, you would click Select All to install the entire font set, but if you know what you&amp;rsquo;re doing and understand the implications of leaving one or more font variants unselected, go ahead and select only those font variants you wish to install at this time.&lt;/p&gt;&lt;p&gt;Ta-dah . . . all done. Even if you had Photoshop running when you installed the font, the font is now available for selection. Which is a big deal, because in the past, when I simply moved the fonts into the Fonts directory by dragging them from their original location into the Fonts directory, the fonts would not even show up in the Photoshop font list. Or I had to go back to the Fonts directory and double-click the font I just installed to preview it (and sort of initialize it and introduce it to the system).&lt;/p&gt;&lt;p&gt;At any rate, one more useful feature in the Fonts directory is the View | List Fonts By Similarity command. Selecting this command will display the contents of your Fonts directory by how close they are to each other in relation to their font attributes. Give it a try and see how you like it.&lt;/p&gt;&lt;p&gt;If you are curious about the various font formats, try this primer on fonts:&lt;br /&gt;&lt;a href="http://linux.about.com/library/howto/font/blfont0.htm"&gt;http://linux.about.com/library/howto/font/blfont0.htm&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you are looking for a free tool that allows you to look through your fonts collection, check out &lt;a href="http://www.snapfiles.com/get/ampfont.html"&gt;AMP Font Viewer&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111936539297992381?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111936539297992381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111936539297992381'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/converting-installing-postscript-and.html' title='Converting &amp; Installing PostScript and Type 1 Fonts'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111902943375652671</id><published>2005-06-17T10:30:00.000-07:00</published><updated>2005-06-17T10:31:20.020-07:00</updated><title type='text'>Stock Photos: Do you get what you pay for?</title><content type='html'>&lt;p&gt;Typically, when I put together a design mock-ip for a client, I grab &amp;ldquo;placeholder&amp;rdquo; images from such places as &lt;a href="http://www.masterfile.com/"&gt;MasterFile&lt;/a&gt;,&amp;nbsp;&lt;a href="http://creative.gettyimages.com/"&gt;Getty Images&lt;/a&gt;&amp;nbsp;and so forth. Then, when the client likes the concept and the art work, I let them decide where to purchase it. Usually, that turns out pretty well, but some clients would like to have this-and-that-and-the-other tweaked (e.g., cropped, colorized, blurred, etc.), and in the end, the art work we purchased gets turned into something quite differently than the original. Yet, the client had to shell out $500 to use the photo on one-eighth of the first page of a double-sided letter-size brochure.&lt;/p&gt;&lt;p&gt;Annoying, ain&amp;rsquo;t it? (Especially, if the client&amp;rsquo;s purchase of the art work means less of a budget for your portion of the project.)&lt;/p&gt;&lt;p&gt;Good thing there is &lt;a href="http://www.sxc.hu/index.phtml"&gt;stock.xchng&lt;/a&gt;! Basically an open-source approach towards stock photography. You take what you need and respect the photographer&amp;rsquo;s licensing restrictions. Common courtesy is to send an e-mail message to the photographer, telling her or him how you are using the photo(s) and providing a link to (or a free copy of) the end product.&lt;/p&gt;&lt;p&gt;Most licensing restrictions are so lenient that I had no difficulty finding and using photos to put together a full-color, bleeding-edge brochure for a software company. As a matter of fact, the photographer whose work I chose had no licensing restrictions whatsoever. And since the photos are free for commercial and personal use, we saved a bundle, too.&lt;/p&gt;&lt;p&gt;Of course, not all photos are as high in quality as something you see on most established stock photography sites. However, with a little patience and a knack for entering the kind of search phrase that might lead you to the photo you&amp;rsquo;re looking for, you can probably find what you need at a decent enough quality that will be sufficient for &amp;ldquo;tweaking&amp;rdquo; in &lt;a href="http://www.adobe.com/products/photoshop/main.html"&gt;Adobe Photoshop&lt;/a&gt; or another professional image editing tool.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111902943375652671?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111902943375652671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111902943375652671'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/stock-photos-do-you-get-what-you-pay.html' title='Stock Photos: Do you get what you pay for?'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111884820963933357</id><published>2005-06-15T08:10:00.000-07:00</published><updated>2005-06-15T08:11:25.173-07:00</updated><title type='text'>EFF: Legal Guide for Bloggers</title><content type='html'>&lt;p&gt;Now that more and more individuals are resorting to BLOGs to share useful (and sometimes useless) information as well as their opinions with the rest of the world, the &lt;a href="http://www.eff.org/bloggers/lg/"&gt;Electronic Frontier Foundation&lt;/a&gt; has published an excellent resource:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.eff.org/bloggers/lg/"&gt;EFF: Legal Guide for Bloggers&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Why would you need such a guide?&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;font face="Verdana" color="#009f00"&gt;Freedom of speech is the foundation of a functioning democracy, and Internet bullies shouldn't use the law to stifle legitimate free expression. That's why EFF created this guide, compiling a number of FAQs designed to help you understand your rights and, if necessary, defend your freedom.&lt;/font&gt;&lt;/strong&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Aside from covering the most relevant legal aspects, the EFF guide is also interspersed with common sense advice.&lt;/p&gt;&lt;p&gt;&lt;font face="Verdana" color="#009f00" size="2"&gt;&lt;strong&gt;Whether you're a newly minted blogger or a relative old-timer, you've been seeing more and more stories pop up every day about bloggers getting in trouble for what they post. &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Verdana" color="#009f00" size="2"&gt;&lt;strong&gt;Like all journalists and publishers, bloggers sometimes publish information that other people don't want published. You might, for example, publish something that someone considers defamatory, republish an AP news story that's under copyright, or write a lengthy piece detailing the alleged crimes of a candidate for public office.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Good reading and an invaluable resource for anyone who publishes a BLOG.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111884820963933357?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111884820963933357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111884820963933357'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/eff-legal-guide-for-bloggers.html' title='EFF: Legal Guide for Bloggers'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111869163515115753</id><published>2005-06-13T12:40:00.000-07:00</published><updated>2005-06-13T12:40:35.176-07:00</updated><title type='text'>CSS Rounded Box Generator</title><content type='html'>&lt;p&gt;Here&amp;rsquo;s a handy link for those who need to create quick-and-dirty CSS boxes with rounded corners:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.neuroticweb.com/recursos/css-rounded-box/index.php?idioma=en"&gt;CSS Rounded Box Generator&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This nice online generator allows you to pick solid colors for 1) the rounded CSS box and 2) the background. Hit the button (&amp;ldquo;enviar&amp;rdquo;) and POOF! You get all the necessary background images, the CSS code and the HTML code. Requires very little tweaking to make it work the way you need it. Based on the awesome work by Douglas Livingstone:&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;font color="#800080"&gt;&lt;a href="http://www.redmelon.net/tstme/"&gt;http://www.redmelon.net/tstme/&lt;/a&gt;&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111869163515115753?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111869163515115753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111869163515115753'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/css-rounded-box-generator.html' title='CSS Rounded Box Generator'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111867132663542607</id><published>2005-06-13T07:02:00.000-07:00</published><updated>2005-06-13T07:04:53.013-07:00</updated><title type='text'>Google Sitemaps (BETA)</title><content type='html'>&lt;p&gt;&lt;strong&gt;Once again, Google has added a new feature, and this time it is: Google Sitemaps.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Currently, you do not need to have a Google account to participate, and Google has posted a very informative help file about its sitemaps feature at:&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.google.com/webmasters/sitemaps/docs/en/faq.html"&gt;Google Sitemaps (BETA) Help&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Basically, Google states that the reason for doing sitemaps is to &amp;ldquo;organize the world's information and make it universally accessible&amp;rdquo; and that &amp;ldquo;this collaborative crawling system will allow our crawlers to optimize the usefulness of Google's index for users by improving its coverage and freshness.&amp;rdquo;&lt;/p&gt;&lt;p&gt;Apparently, page ranking will not be influenced by the inclusion of a sitemap. Or not yet? Consider the following: A sitemap, in the way in which Google uses it,&amp;nbsp;is simply an XML document, detailing the structure of your web site. However, one of the XML tags listed in the &lt;a href="https://www.google.com/webmasters/sitemaps/docs/en/protocol.html"&gt;Google Sitemap Protocol&lt;/a&gt; used in this document is called &lt;strong&gt;&lt;font color="#0000ff"&gt;priority&lt;/font&gt;&lt;/strong&gt; and another one is called &lt;strong&gt;&lt;font color="#0000ff"&gt;changefreq&lt;/font&gt;&lt;/strong&gt; (and there are several others). So, it is conceivable (and very likely) that those XML tags will aid Google&amp;rsquo;s crawlers in indexing as well as in ranking a web site&amp;rsquo;s pages &amp;mdash; even if it only does so indirectly.&lt;/p&gt;&lt;p&gt;If, for instance, I give a certain web page on my web site a high priority and indicate that it be crawled &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;em&gt;always&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;, I would speculate that I may indeed optimize my web site by encouraging the Google crawlers to pay special attention to a certain web page. Of course, this hypothesis is neither officially supported nor alluded to by Google, and all of this is still in BETA. &lt;strong&gt;However, it seems to me that adding a Google sitemap to your web site and registering it with Google would have some SEO-related benefits in the long run.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Even if it &amp;ldquo;only&amp;rdquo; helps Google index your web site better and more accurately, chances are you are at least one step ahead of those web sites who do not take the time to do so. &lt;/p&gt;&lt;p&gt;Finally, Google&amp;rsquo;s sitemap allows for the inclusion of dynamically generated content, as long as it is encoded properly. This is a great feature, since your ordinary search engine crawler does not usually grab such URLs. Here is an example:&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" color="#009f00" size="2"&gt;&lt;strong&gt;&amp;lt;loc&amp;gt;http://www.yoursite.com/&lt;br /&gt;catalog?item=1&amp;amp;amp;desc=vacation_hawaii&amp;lt;/loc&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Google has a simple example of a sitemap available, and if you prefer to modify the XML by hand, you can do so. And if you&amp;rsquo;re running Python on your web server, you can even download Google&amp;rsquo;s sitemap generator and let it do all the work for you.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111867132663542607?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111867132663542607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111867132663542607'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/google-sitemaps-beta.html' title='Google Sitemaps (BETA)'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111841303461732513</id><published>2005-06-10T07:17:00.000-07:00</published><updated>2005-06-10T07:18:23.960-07:00</updated><title type='text'>JSWITCH  ::  Updated Toolbar Script...</title><content type='html'>&lt;p&gt;Just wanted to let y&amp;rsquo;all know that the good folks at &lt;a href="http://www.jswitch.com/index.php?page=js/tooljs/toolbar&amp;amp;css=js/tooljs/tbar"&gt;JSWITCH&lt;/a&gt; have updated their Toolbar (or Toolbox) JavaScript.&lt;/p&gt;&lt;p&gt;&lt;a href="http://rattleboard.blogspot.com/2005/06/excellent-javascript-resource.html"&gt;We wrote about it last week&lt;/a&gt;, and Eric from JSWITCH contacted me later that day to let me know that he had fixed some issues with the drag behavior of the toolbox. Awesome.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111841303461732513?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111841303461732513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111841303461732513'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/jswitch-updated-toolbar-script.html' title='JSWITCH  ::  Updated Toolbar Script...'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111841282957992405</id><published>2005-06-10T07:13:00.000-07:00</published><updated>2005-06-10T07:13:49.586-07:00</updated><title type='text'>SQL Server :: Insufficient System Memory</title><content type='html'>&lt;p&gt;Every now and then, odd things happen.&lt;/p&gt;&lt;p&gt;Then again, if you&amp;rsquo;re running SQL Server for your web applications, you already knew that. (Consider this &amp;ldquo;tongue in cheek&amp;rdquo; humor.) Doing a routine check-up on my web and database servers, I noticed that one of my database servers, running SQL Server 2000/SP4 on a Windows 2000 machine, had failed at backing up databases.&lt;/p&gt;&lt;p&gt;Oh well, I thought, just do it manually. POOF! No workee. Enterprise Manager, which I used because it usally does back-ups pretty fast, presented me with a message that stated:&lt;/p&gt;&lt;p&gt;Microsoft SQL-DMO (ODBC SQL State 42000)&lt;br /&gt;Error 701: There is insufficient system memory.&lt;/p&gt;&lt;p&gt;Bummer! After thinking it was a glitch and attempting the backup procedure again . . . and again, I decided it was time to open the hood and see what was going on. We have 3GB of RAM on that machine, and SQL Server dynamically grabs what it needs, up to the maximum amount of 3071 MB. The system itself showed very little activity and in terms of CPU usage and RAM availability, there was no indication of any kind of problem.&lt;/p&gt;&lt;p&gt;Just to be on the safe side, I tried &lt;a href="http://www.sci.fi/~borg/rambooster/index.htm"&gt;RAMBooster&lt;/a&gt;, a free memory optimization tool with somewhat of a cult following. To no avail. As I mentioned previously, we have plenty of memory and plenty of free memory. So, the problem must be somewhere within the web application, probably poorly formed and executed queries (&lt;a href="http://support.microsoft.com/?id=243588"&gt;here is Microsoft&amp;rsquo;s approach towards resolving such issues&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;After spending a little bit of time considering the pros and cons of the various approaches that experienced DBAs are suggesting throughout the web, I came to the conclusion that the only solution would be to restart SQL Server itself on the database server. After looking up the number of currently logged in users (under 50 on a Friday morning before 8 AM), I decided it was going to be more efficient to interrupt their sessions and kick them off than wait until the problem grew completely out of control a few hours later when, say, 300 users were using the system simultaneously.&lt;/p&gt;&lt;p&gt;So, putting on my safety goggles and hard hat, I did just that. After I shut down and started SQL Server again, I went into the Services tool and made sure SQLSERVERAGENT was up and running again as well. And when I returned to Enterprise Manager to do a backup, everything worked wonderfully.&lt;/p&gt;&lt;p align="center"&gt;&lt;img height="119" alt="Backup_completed" src="http://www.humdinger-media.com/rattleboard/backup_completed.gif" width="345" border="0" /&gt;&lt;/p&gt;&lt;p&gt;Of course, you already know what&amp;rsquo;s coming on a Friday when it starts out like that, don&amp;rsquo;t&amp;rsquo;cha?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111841282957992405?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111841282957992405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111841282957992405'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/sql-server-insufficient-system-memory.html' title='SQL Server :: Insufficient System Memory'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111826617860543523</id><published>2005-06-08T14:29:00.000-07:00</published><updated>2005-06-08T14:29:38.616-07:00</updated><title type='text'>CSS Boxes with Rounded Corners</title><content type='html'>&lt;p&gt;Looking for a way to spruce up my &amp;ldquo;scroll-all-the-way-down-until-you-get-a-cramp&amp;rdquo; report for a HR web application, I decided to look around for some standards-compliant CSS examples.&lt;/p&gt;&lt;p&gt;One of the better examples I found is located at:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.vertexwerks.com/tests/sidebox/"&gt;The ThrashBox&amp;trade;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Ryan Thrash has come up with a nice example that uses images for both the rounded corners and the drop-shadow. He even makes the original Photoshop file available, so if you don&amp;rsquo;t like his colors and shadow settings, have at it yourself.&lt;/p&gt;&lt;p&gt;Other resources on the web tell me that we&amp;rsquo;ll have to wait until CSS 3 is implemented in web browsers to receive CSS-native support of such features. However, there is a nifty example at the following link that manages to produce a CSS-box with rounded corners &lt;strong&gt;without &lt;/strong&gt;images:&lt;/p&gt;&lt;p&gt;&lt;a href="http://pro.html.it/esempio/nifty/"&gt;http://pro.html.it/esempio/nifty/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Actually, there are oodles of nifty examples, free with source code and all. The only drawback is that &amp;ldquo;nifty corners&amp;rdquo; depends on JavaScript to do the final rendering &amp;mdash; which may not bother everyone, but if you develop based on the possibility of users turning off JavaScript, this idea might not seem so appealing.&lt;/p&gt;&lt;p&gt;Similarly, the good folks from down-under at SitePoint had a similar idea:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sitepoint.com/article/rounded-corners-css-javascript"&gt;http://www.sitepoint.com/article/rounded-corners-css-javascript&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;For the ultimate experience with rounded corners and drop shadows, head on over to A LIST APART:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.alistapart.com/articles/customcorners/"&gt;http://www.alistapart.com/articles/customcorners/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The article that describes their technique is well worth the read, and although it may seem somewhat intimidating at first, I believe this to be the most solid implementation of rounded corners and drop shadows (requires images and image-editing software).&lt;/p&gt;&lt;p&gt;Examples are at:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.alistapart.com/d/customcorners/step6.html"&gt;http://www.alistapart.com/d/customcorners/step6.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;That&amp;rsquo;s all for now,&lt;br /&gt;dpb&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111826617860543523?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111826617860543523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111826617860543523'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/css-boxes-with-rounded-corners.html' title='CSS Boxes with Rounded Corners'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111817091867064210</id><published>2005-06-07T12:01:00.000-07:00</published><updated>2005-06-07T12:01:58.683-07:00</updated><title type='text'>Working With Columns That Contain Null Values</title><content type='html'>&lt;p&gt;Here&amp;rsquo;s another one of those occasionally confusing SQL Server topics:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.databasejournal.com/features/mssql/article.php/3399931"&gt;Working With Columns That Contain Null Values&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Gregory A Larsen addresses some of the nuances involved in dealing with NULLs and what this means to&amp;nbsp;a database programmer (or a web programmer who deals with databases, either way).&lt;/p&gt;&lt;p&gt;So what is a NULL? Is a NULL value a zero, space, or something else? From a SQL Server perspective a NULL is not a value, it only means that a value was not provided when the row was created. Special considerations need to be taken into account when dealing with nulls in SQL Server. This article will discuss some programming issues to be aware of when working with nulls, and some different techniques that can be used when dealing with nulls.&lt;/p&gt;&lt;p&gt;Noteworthy reading, even if you think you already know everything there is to know about NULLs.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111817091867064210?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111817091867064210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111817091867064210'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/working-with-columns-that-contain-null.html' title='Working With Columns That Contain Null Values'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111808044377189639</id><published>2005-06-06T10:54:00.000-07:00</published><updated>2005-06-06T10:57:06.016-07:00</updated><title type='text'>Operation Cleanout - Unobtrusive Javascript</title><content type='html'>&lt;p&gt;If it comes across as though I am favoring JavaScript-related topics&amp;nbsp;as of late, you are absolutely correct, of course.&lt;/p&gt;&lt;p&gt;Motivated by a series of annoying security warnings in IE 6 (on XP SP2) that popped up on my own web site*, I started looking around for ways in which I could improve the user experience for everyone.&amp;nbsp;The most intriguing&amp;nbsp;web site that I have discovered is:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.onlinetools.org/articles/unobtrusivejavascript/chapter1.html"&gt;Operation Cleanout - Unobtrusive Javascript&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Full of examples and solid evidence of their proposed changes to the way in which web masters and web developers employ JavaScript, this part of a five chapter (and three appendices) collection focuses on the basics, such as:&lt;/p&gt;&lt;p&gt;1) Never, under any circumstances add Javascript directly to the document&lt;br /&gt;2) Javascript is an enhancement, not a secure functionality&lt;br /&gt;3) Check the availability of an object before accessing it&lt;br /&gt;4) Create Javascript, not browser specific dialects&lt;br /&gt;5) Don't hijack other script's variables&lt;br /&gt;6) Keep effects mouse independent&lt;/p&gt;&lt;p&gt;Although I have been enamored with JavaScript for a good decade, I must say that the points raised by this particular installment of the JavaScript re-education project are real and make sense. If we are serious about web standards, Section 508 and user-friendly usability in general, some of us (including me)&amp;nbsp;need to make changes to the way JavaScript is being used on web sites and in web applications.&lt;/p&gt;&lt;p&gt;That&amp;rsquo;s all for now.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial" size="1"&gt;*My own web site suffers from neglect. Too busy with other people&amp;rsquo;s projects, I did not even have time to think about spiffing up my old static web site for&amp;hellip;well, I&amp;rsquo;d rather not say. So, this weekend, I spent almost all of Saturday, designing and developing something that comes close to an up-to-date version of a web site that would do my skills justice. Sort of. Then again, who has the time? No, really, half-way into this little web site renovation project, I started feeling guilty because I was neglecting clients and other work. It&amp;rsquo;s crazy, but if you want to take a look at the work-in-progress, go to &lt;/font&gt;&lt;a href="http://www.humdinger-media.com/"&gt;&lt;font face="Arial" size="1"&gt;www.humdinger-media.com&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial" size="1"&gt; and look around a bit. If you feel so inclined, leave me a comment and tell me what you would do differently. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial" size="1"&gt;By the way, the &amp;ldquo;offending&amp;rdquo; JavaScript was simply adjusting the height of two DIV containers on my web page&amp;mdash;not really a risk to any web surfer&amp;rsquo;s security, if you ask me.&lt;/font&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111808044377189639?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111808044377189639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111808044377189639'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/operation-cleanout-unobtrusive.html' title='Operation Cleanout - Unobtrusive Javascript'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111783210559661778</id><published>2005-06-03T13:55:00.000-07:00</published><updated>2005-06-03T13:55:05.603-07:00</updated><title type='text'>NicheBOT.com - Google Keyword Ranking Tool</title><content type='html'>&lt;p&gt;&lt;a href="http://www.nichebot.com/ranking/?terms=web%2C+design%2C+development&amp;amp;address=humdinger-media.com&amp;amp;search_version=com&amp;amp;search_phrase=noquotes&amp;amp;maxresults=1000"&gt;NicheBOT.com - Google Keyword Ranking Tool&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Ever wanted to find out if a certain web site is included in any of Google&amp;rsquo;s rankings? Check out this free online tool and see if you&amp;rsquo;re anywhere among the first 1,000, 500 or 100 search results.&lt;/p&gt;&lt;p&gt;This is not for the faint of heart! Especially if your web site does not show up at all. At least, you&amp;rsquo;ll know what to focus on for the next few weeks. ;-)&lt;/p&gt;&lt;p&gt;For what it&amp;rsquo;s worth,&lt;br /&gt;dpb&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111783210559661778?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111783210559661778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111783210559661778'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/nichebotcom-google-keyword-ranking.html' title='NicheBOT.com - Google Keyword Ranking Tool'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111781564410623515</id><published>2005-06-03T09:20:00.000-07:00</published><updated>2005-06-03T09:25:53.273-07:00</updated><title type='text'>Dynamic Drive  ::  FavIcon Generator</title><content type='html'>&lt;p&gt;&lt;a href="http://tools.dynamicdrive.com/favicon/"&gt;Dynamic Drive- FavIcon Generator&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This is an awesome online icon generator if you have 1) a square image that you want to convert to a favicon and 2) know what a favicon is and does.&lt;/p&gt;&lt;p&gt;Just for the heck of it, I tested it on a close-up of my face and got some stunning results (better and way faster than &lt;a href="http://www.adobe.com/products/photoshop/main.html"&gt;Photoshop&lt;/a&gt;, &lt;a href="http://www.irfanview.com/"&gt;IrfanView&lt;/a&gt; or any other graphics tool could have done it).&lt;/p&gt;&lt;p&gt;&lt;img height="25" alt="FavIcon Preview..." src="http://www.humdinger-media.com/rattleboard/faviconprvw_small.jpg" width="188" border="0" /&gt;&lt;/p&gt;&lt;p&gt;It does an especially nice job at keeping the original image&amp;rsquo;s clarity and overall &amp;ldquo;legibility&amp;rdquo; (if you know what I mean). The online favicon generator accepts original images in .gif, .jpg, .png and .bmp format and can handle transparency (.gif or .png) as well as file sizes up to 150 KB.&lt;/p&gt;&lt;p&gt;The output is a 16x16 .ico file, and&amp;nbsp;you can generate additional output simultaneously (either&amp;nbsp;a 32x32 desktop icon or a 48x48 XP icon). When you&amp;rsquo;re done generating the icon, the generator provides you with the basic instructions and HTML code necessary to make it all work.&lt;/p&gt;&lt;p&gt;A real time-saver and an excellently executed online tool . . . in my opinion.&lt;/p&gt;&lt;p&gt;For what it&amp;rsquo;s worth,&lt;br /&gt;dpb&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111781564410623515?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111781564410623515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111781564410623515'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/dynamic-drive-favicon-generator.html' title='Dynamic Drive  ::  FavIcon Generator'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111772772991271287</id><published>2005-06-02T08:55:00.000-07:00</published><updated>2005-06-02T08:55:29.920-07:00</updated><title type='text'>Excellent JavaScript Resource</title><content type='html'>&lt;p&gt;After a good decade of doing the web thing, it&amp;rsquo;s hard to get excited about most of the come-and-go web sites that offer this, that and the other JavaScript library and gadget.&lt;/p&gt;&lt;p&gt;However, this web site caught my attention:&lt;br /&gt;&lt;a href="http://www.jswitch.com/"&gt;http://www.jswitch.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;There aren&amp;rsquo;t that many JavaScript goodies on the web site, but the handful or so that I looked at are useful, practical and low-cost (in terms of acquiring them &amp;mdash; they are free &amp;mdash; and running them on your web pages).&lt;/p&gt;&lt;p&gt;There is&amp;nbsp;a script that highlights form fields as they receive input, very useful in my opinion, especially if you&amp;rsquo;re dealing with web sites that target &amp;ldquo;older&amp;rdquo; audiences;&amp;nbsp;another script creates XP-style &amp;ldquo;stackable&amp;rdquo; menus&amp;nbsp;that slide-drop down to reveal the menu links; a basic slide-drop-down menu; a JavaScript color picker that resembles the &lt;a href="http://www.gimp.org/windows/"&gt;GIMP&lt;/a&gt; color picker; and a nice little toolbox that can be moved around and minimized (seems to be still in Beta, however).&lt;/p&gt;&lt;p&gt;At any rate, sometimes less is more, and anyone looking for quality rather than quantity as far as practical JavaScript gadgets are concerned should appreciate this web site.&lt;/p&gt;&lt;p&gt;For what it&amp;rsquo;s worth,&lt;br /&gt;dpb&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111772772991271287?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111772772991271287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111772772991271287'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/excellent-javascript-resource.html' title='Excellent JavaScript Resource'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111763790909680811</id><published>2005-06-01T07:58:00.000-07:00</published><updated>2005-06-01T09:44:14.906-07:00</updated><title type='text'>Quotation Marks in Classic ASP, SQL Server &amp; JavaScript</title><content type='html'>&lt;p&gt;&lt;strong&gt;Ever had to deal with (classic) ASP and quotes in SQL Server 2000?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If you happen to process the &amp;ldquo;quote containing&amp;rdquo; information from SQL Server in an ASP script that mingles with JavaScript, you can run into serious problems, to the point of JavaScript and HTML quitting the display of the remainder of the web page.&lt;/p&gt;&lt;p&gt;If that ever happens to you, take precautions. Before you allow the quotes to infiltrate SQL Server, replace them with the HTML-equivalent of either &lt;font color="#009f00"&gt;&lt;strong&gt;&amp;amp;quot;&lt;/strong&gt;&lt;/font&gt; or &lt;font color="#009f00"&gt;&lt;strong&gt;&amp;amp;#34;&lt;/strong&gt;&lt;font color="#000000"&gt;, like so:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#009f00"&gt;Replace(ItemName, &amp;rdquo;&amp;rdquo;&amp;rdquo;&amp;rdquo;, &amp;rdquo;&amp;amp;#34;&amp;rdquo;)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;That will insert the data with the necessary code for quotes without wreaking havoc when you pull it out of the database. However, if you&amp;rsquo;re a troubleshooter and web application consultant like me, you typically get called in to fix problems like those &amp;ldquo;after the fact.&amp;rdquo;&lt;/p&gt;&lt;p&gt;So, do the same when you need to retrofit web applications: On every page that pulls potentially quote-containing information from the database, replace the quotes (and yes, that&amp;rsquo;s four quote symbols in a row: one to introduce the value to be replaced, the next two because that&amp;rsquo;s the way ASP refers to a single quote, and the fourth one to end the to-be-replaced expression.&lt;/p&gt;&lt;p&gt;Even though I can hear many developers groan and moan already, consider this: You&amp;rsquo;ve added the fix to avoid the problem in the future, and you have now implemented a way to get quote-containing data from SQL Server without breaking the web page(s). Sometimes, this is as good as it gets in the real world. And as long as the web application behaves as ideally as possible without requiring a complete code rewrite, your client will be happy as well.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;TIP OF THE DAY: &lt;br /&gt;&lt;/strong&gt;Do not pick up your 1-year-old before going to work&lt;/p&gt;&lt;p&gt;Unless you want to walk around with funny stains on your shirt, especially around the shoulders and sometimes even on your back.&lt;/p&gt;&lt;p&gt;For what it&amp;rsquo;s worth,&lt;br /&gt;dpb&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111763790909680811?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111763790909680811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111763790909680811'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/06/do-not-pick-up-your-1-year-old-before.html' title='Quotation Marks in Classic ASP, SQL Server &amp; JavaScript'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111749943703300113</id><published>2005-05-30T17:30:00.000-07:00</published><updated>2005-05-30T17:32:17.723-07:00</updated><title type='text'>Thank You for not passing gas.</title><content type='html'>&lt;p&gt;&lt;a href="http://www.dontpassgas.com/"&gt;Thank You for not passing gas.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Just when you thought it was safe to get back into the living room or the SUV, the AdCouncil comes along and produces a number of mildly disturbing PSAs.&lt;/p&gt;&lt;p&gt;&lt;img height="162" alt="Don't Pass Gas . . . in our SUV" src="http://www.humdinger-media.com/rattleboard/dpg_01.gif" width="182" border="0" /&gt;&amp;nbsp;&lt;img height="162" alt="Don't Pass Gas . . . in our house" src="http://www.humdinger-media.com/rattleboard/dpg_02.gif" width="182" border="0" /&gt;&lt;/p&gt;&lt;p&gt;Nonetheless, if you like &lt;a href="http://www.nydailynews.com/news/col/barryd/"&gt;Dave Barry &lt;/a&gt;and flatulence-related topics&amp;nbsp;in general, you might want to stop by and see what this is all about. The point, of course, is a tad more serious than simply cutting the cheese, if you catch my drift.&lt;/p&gt;&lt;p&gt;For what it&amp;rsquo;s worth,&lt;/p&gt;&lt;p&gt;dpb&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111749943703300113?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111749943703300113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111749943703300113'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/05/thank-you-for-not-passing-gas.html' title='Thank You for not passing gas.'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111747596495528614</id><published>2005-05-30T09:13:00.000-07:00</published><updated>2005-05-30T17:33:01.070-07:00</updated><title type='text'>Non-words defined by Webster's</title><content type='html'>&lt;p&gt;This old ex-journalist just couldn't pass up the opportunity when Webster published the &lt;strong&gt;Top Ten Favorite Words (Not in the Dictionary)&lt;/strong&gt; at: &lt;a href="http://m-w.com/info/favorite.htm"&gt;http://m-w.com/info/favorite.htm&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Tipped off by an entry from &lt;a href="http://www.blogger.com/boingboing.net"&gt;BoingBoing&lt;/a&gt;, this list of non-words and the accompanying introduction are very readworthy. &lt;/p&gt;&lt;p style="MARGIN-BOTTOM: 1px; MARGIN-LEFT: 10px"&gt;1. &lt;strong style="COLOR: rgb(0,0,102)"&gt;ginormous&lt;/strong&gt; (adj): bigger than gigantic and bigger than enormous&lt;/p&gt;&lt;p style="MARGIN-BOTTOM: 1px; MARGIN-LEFT: 10px"&gt;2. &lt;strong style="COLOR: rgb(0,0,102)"&gt;confuzzled&lt;/strong&gt; (adj): confused and puzzled at the same time&lt;/p&gt;&lt;p style="MARGIN-BOTTOM: 1px; MARGIN-LEFT: 10px"&gt;3. &lt;strong style="COLOR: rgb(0,0,102)"&gt;woot&lt;/strong&gt; (interj): an exclamation of joy or excitement&lt;/p&gt;&lt;p style="MARGIN-BOTTOM: 1px; MARGIN-LEFT: 10px"&gt;4. &lt;strong style="COLOR: rgb(0,0,102)"&gt;chillax&lt;/strong&gt; (v): chill out/relax, hang out with friends&lt;/p&gt;&lt;p style="MARGIN-BOTTOM: 1px; MARGIN-LEFT: 10px"&gt;5. &lt;strong style="COLOR: rgb(0,0,102)"&gt;cognitive displaysia&lt;/strong&gt; (n): the feeling you have before you even leave the house that you are going to forget something and not remember it until you're on the highway&lt;/p&gt;&lt;p style="MARGIN-BOTTOM: 1px; MARGIN-LEFT: 10px"&gt;6. &lt;strong style="COLOR: rgb(0,0,102)"&gt;gription&lt;/strong&gt; (n): the purchase gained by friction: "My car needs new tires because the old ones have lost their &lt;EM&gt;gription&lt;/EM&gt;."&lt;/p&gt;&lt;p style="MARGIN-BOTTOM: 1px; MARGIN-LEFT: 10px"&gt;7. &lt;strong style="COLOR: rgb(0,0,102)"&gt;phonecrastinate&lt;/strong&gt; (v): to put off answering the phone until caller ID displays the incoming name and number&lt;/p&gt;&lt;p style="MARGIN-BOTTOM: 1px; MARGIN-LEFT: 10px"&gt;8. &lt;strong style="COLOR: rgb(0,0,102)"&gt;slickery&lt;/strong&gt; (adj): having a surface that is wet and icy&lt;/p&gt;&lt;p style="MARGIN-BOTTOM: 1px; MARGIN-LEFT: 10px"&gt;9. &lt;strong style="COLOR: rgb(0,0,102)"&gt;snirt&lt;/strong&gt; (n): snow that is dirty, often seen by the side of roads and parking lots that have been plowed&lt;/p&gt;&lt;p style="MARGIN-BOTTOM: 1px; MARGIN-LEFT: 10px"&gt;10. &lt;strong style="COLOR: rgb(0,0,102)"&gt;lingweenie&lt;/strong&gt; (n): a person incapable of producing neologisms&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;If you can't get enough of words that didn't make it into the dictionary, here's a link to previously published words that did not make it into Webster's: &lt;a href="http://m-w.com/info/favorite_not_prev.htm"&gt;http://m-w.com/info/favorite_not_prev.htm&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For what it's worth,&lt;br /&gt;dpb&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111747596495528614?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111747596495528614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111747596495528614'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/05/non-words-defined-by-websters.html' title='Non-words defined by Webster&apos;s'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111720725423108461</id><published>2005-05-27T08:17:00.000-07:00</published><updated>2005-05-27T08:40:11.540-07:00</updated><title type='text'>Web Standards Templates &amp; Resources, anyone?</title><content type='html'>If you know about the Web Standards movement and the ramifications it will have on a "cleaner" web, then check out the following two resources:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://webstandardsgroup.org/resources/#cat9"&gt;http://webstandardsgroup.org/resources/#cat9&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This web site is run by the Web Standards Group, and the above link will take you directly to the CSS Example Sites. There are over 30 links available in this category, most of them are somewhat annotated, and all of them are well worth a visit.&lt;br /&gt;&lt;br /&gt;The idea behind listing example web sites that conform with CSS and HTML or XHTML should be obvious: To see what others have done in terms of adopting web standards.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When you're ready to start working on your own web standards compliant web site, check out:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.websitetips.com/css/#templates"&gt;http://www.websitetips.com/css/#templates&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this section of the Web Site Tips web site, you can find a number of links to web sites that offer free CSS templates which you can use to build your own web site (or at least use those templates as a starting point).&lt;br /&gt;&lt;br /&gt;Some of those links lead to other collections of links and templates, and that's just fine. The more people start implementing and considering web standards, the sooner we all will be better off . . . in my opinion.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Be well, do good work, and keep in touch,&lt;br /&gt;dpb&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111720725423108461?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111720725423108461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111720725423108461'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/05/web-standards-templates-resources.html' title='Web Standards Templates &amp; Resources, anyone?'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111712655837167676</id><published>2005-05-26T09:47:00.000-07:00</published><updated>2005-05-26T09:59:22.390-07:00</updated><title type='text'>UMD :: Accessible Website Menu (DHTML)</title><content type='html'>Stumbled across this interesting DHTML drop-down menu web site when I looked at Authorize.Net's re-designed web site (just to see what my predecessors were doing and how they did not care about web standards but favored nested tables instead):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.udm4.com/"&gt;http://www.udm4.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is their marketing blurb:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;"UDM is a fully-featured and accessible DHTML menu, that provides useable content to all browsers - including screenreaders, search-engines and text-only browsers. But accessibility shouldn't mean compromise, and so &lt;a title="About UDM" tabindex="6" href="http://www.udm4.com/menu/"&gt;UDM&lt;/a&gt; includes a sophisticated range of design and usability controls, to give you a tool with unique capabilities - no other professional menu system even comes close..."&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://www.udm4.com/licensing/download/"&gt;download&lt;/a&gt; a free version for non-commercial use. Among other things, Brothercake (the people who make this Ultimate Drop Down Menu) state that the menu is:&lt;br /&gt;&lt;br /&gt;&lt;ul style="PADDING-RIGHT: 1px; MARGIN-TOP: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px"&gt;&lt;br /&gt;&lt;li&gt;Visible to search-engines&lt;/li&gt;&lt;br /&gt;&lt;li&gt;WAI and Section 508 compliant&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Navbar looks the same without JavaScript&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Advanced usability features including keyboard navigation&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Horizontal, vertical, popup or expanding menus&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rich design palette with infinite variations&lt;/li&gt;&lt;br /&gt;&lt;li&gt;UDM is the world's first fully-featured and accessible DHTML menu!&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Take it or leave it, but in my biased opinion (nope, they are not paying me anything for saying that), it's a good solution for certain web applications and web sites.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Be well, do good work, and keep in touch,&lt;br /&gt;&lt;br /&gt;dpb&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111712655837167676?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111712655837167676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111712655837167676'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/05/umd-accessible-website-menu-dhtml.html' title='UMD :: Accessible Website Menu (DHTML)'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111702919509728562</id><published>2005-05-25T06:45:00.000-07:00</published><updated>2005-05-25T07:00:11.663-07:00</updated><title type='text'>Choosing SQL Server 2000 Data Types</title><content type='html'>Sure, you could just claim ignorance and say something like, "It's always worked like this before." and keep using INT, DATETIME and NTEXT data types in your SQL code.&lt;br /&gt;&lt;br /&gt;Or you could take a closer look at the 27 available data types in SQL Server 2000 and choose more wisely when creating tables, declaring variables and so forth.&lt;br /&gt;&lt;br /&gt;While debating whether to use a SMALLINT or INT, for example, I came across this basic but helpful article by Alexander Chigrik (published in Database Journal):&lt;br /&gt;&lt;a href="http://snipurl.com/f4yd" target="_blank"&gt;http://snipurl.com/f4yd&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Perhaps it's just me, but almost always, the information Microsoft offers on MSDN about its products is hard to read. So I appreciate the easy-to-read data type chart and the other information presented in the above mentioned article from Database Journal. (Again, could just be that I lack the sophisticated mindset that is required to absorb the MSDN information.)&lt;br /&gt;&lt;br /&gt;The one thing that always makes me cringe, though, is the description of data types. Admittedly, it is useless to write out large numbers to describe the BIGINT data type, for example, but sometimes (or at least one time) it would be nice to see the actual numbers rather than something like -2^63 TO 2^63 -1.&lt;br /&gt;&lt;br /&gt;Then again, I guess I should have just paid more attention in high school math class 200 years ago when I had that first-rate window seat.&lt;br /&gt;&lt;br /&gt;Be well, do good work, and keep in touch,&lt;br /&gt;dpb&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111702919509728562?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111702919509728562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111702919509728562'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/05/choosing-sql-server-2000-data-types.html' title='Choosing SQL Server 2000 Data Types'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111694160728738141</id><published>2005-05-24T06:08:00.000-07:00</published><updated>2005-05-24T06:47:47.696-07:00</updated><title type='text'>Freebies . . . anyone?</title><content type='html'>Nope, I'm not talking about "free" e-mail newsletters, bumper stickers, T-shirts or pens. The kind of freebies I do get excited about nowadays relate to "things" that make my life as a webmaster easier.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.snipurl.com"&gt;www.snipurl.com&lt;/a&gt;&lt;br /&gt;Website URLs are long and difficult to remember. SnipURL allows you to "snip" your long URLs into small, friendly and persistent links for sharing and remembering. Free!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://search.yahoo.com/cc"&gt;http://search.yahoo.com/cc&lt;/a&gt;&lt;br /&gt;Creative Commons Search at Yahoo. Type in a search term such as "icons" and check "Find content I can modify, adapt, or build upon." Then see what happens. Last time I needed some inspiration for a handful of icons to one of my web applications, I was lucky enough to find a few web sites that offered free high-quality icons that were in and of itself suitable for the web.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gmail.com"&gt;http://www.gmail.com&lt;/a&gt;&lt;br /&gt;THE BEST free web-based e-mail offering ever, in my opinion. Listen, if you don't believe me, send me an e-mail message to dee dot philipp at gmail dot com, and I'll send you a free invitation to join and sign up for Gmail (it's free and offers tons of storage space). Offer valid as long as I have free invitations left.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.snapfiles.com/freeware/freeware.html"&gt;http://www.snapfiles.com/freeware/freeware.html&lt;/a&gt;&lt;br /&gt;Don't know how often I needed a "special" software tool in the past year or so, but nine out of 10 times, I can find what I need at snapfiles. Great categories and almost always great free solutions.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tadalist.com/"&gt;http://www.tadalist.com/&lt;/a&gt;&lt;br /&gt;Ta-da makes it easy to . . . keep track of all the little things you need to get done; make lists for other people (co-workers, friends, family); share lists with the world ("My favorite movies of 2004"); subscribe to your lists in RSS so you're always on track . . . and more. Oh, did I mention that you can use it for free?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.inknoise.com/experimental/layoutomatic.php"&gt;http://www.inknoise.com/experimental/layoutomatic.php&lt;/a&gt;&lt;br /&gt;Ahem, ever been in a hurry, trying to comp up a web page or two? Don't tell the boss, but the folks at inknoise help you get a fully working, CSS-enabled web page template in less time than it takes to say SUPERCALIFRAGALISTICEXPIALADOCIOUS. Plus, they have links to the flicker-free non-JavaScript CSS Rollover generator and a CSS-based list generator.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.basecamphq.com/?ref=free"&gt;http://www.basecamphq.com/?ref=free&lt;/a&gt;&lt;br /&gt;Free web-based project management. Takes about 10 seconds to set up your project. It's very basic but powerful enough to share with clients when you're working on a small project. Done by the folks from 37 Signals (&lt;a href="http://www.37signals.com"&gt;http://www.37signals.com&lt;/a&gt;), so you know it's been crafted wisely.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.goodpassword.com/"&gt;http://www.goodpassword.com/&lt;/a&gt;&lt;br /&gt;Need a good random password on a Friday afternoon around 5:05 PM?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's enough for now. I'll post some more of those freebie links later. And if you know of any great webmaster freebies that are a) ad free and b) not just one of those weird directory pages with links that lead to pages with nothing but more links, then please let me know.&lt;br /&gt;&lt;br /&gt;Be well, do good work, and keep in touch,&lt;br /&gt;dpb&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111694160728738141?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111694160728738141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111694160728738141'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/05/freebies-anyone.html' title='Freebies . . . anyone?'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-13120931.post-111688402141705056</id><published>2005-05-23T14:22:00.000-07:00</published><updated>2005-05-24T06:07:41.156-07:00</updated><title type='text'>Exporting XML from SQL Server 2000</title><content type='html'>Hey, have you ever used a technology or a tool for so long, doing pretty much the same things with it every day, without realizing that there is much more to it than that?&lt;br /&gt;&lt;br /&gt;That's pretty much how I felt about SQL Server's export features today when I finally discovered a) that they exist and b) how handy they can be. Well, I did know that they existed, but here in our two-man development shop, we don't get a lot of time to experiment with this-and-that feature . . . just for the heck of it.&lt;br /&gt;&lt;br /&gt;If you're in a similar situation, putting out fires all day long (thanks to previous developers whose code still constitutes more than 50 percent of a significant web and database application) and typically look for bug fixes by perusing web forums and FAQs, you might appreciate the detailed information that Darshan Singh has published at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.perfectxml.com/articles/XML/exportsqlxml.asp?p=on"&gt;http://www.perfectxml.com/articles/XML/exportsqlxml.asp?p=on&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The article details various methods you can use to export relational SQL data to the XML format. This article cuts to the point and has you producing XML files right away.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Likewise, if you're interested in exporting SQL data to your own HTML template, take a look at Roy Carlson's article, &lt;a href="http://www.sqlservercentral.com/columnists/rcarlson/youwanttodowhatwithmydatabase.asp"&gt;&lt;strong&gt;You want to do what with my database?&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://snipurl.com/f3x0"&gt;http://snipurl.com/f3x0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Similar in approach, this article demonstrates how to format a simple yet powerful built-in Stored Procedure to populate an HTML table with query results. Pretty nifty, especially if you find yourself creating reports from your SQL Server database.&lt;br /&gt;&lt;br /&gt;Don't forget to look up SQL Server's help file for more detailed information.&lt;br /&gt;&lt;br /&gt;Be well, do good work, and keep in touch,&lt;br /&gt;dpb&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13120931-111688402141705056?l=rattleboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111688402141705056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13120931/posts/default/111688402141705056'/><link rel='alternate' type='text/html' href='http://rattleboard.blogspot.com/2005/05/exporting-xml-from-sql-server-2000.html' title='Exporting XML from SQL Server 2000'/><author><name>Dee Philipp</name><uri>http://www.blogger.com/profile/05375707797332542835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.humdinger-media.com/images/dpb_49x49.jpg'/></author></entry></feed>
