<?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-4971464997548672211</id><updated>2012-02-16T19:54:37.172-05:00</updated><category term='Interests'/><category term='dropdownlist'/><category term='SQL'/><category term='javascript'/><category term='CSS3'/><category term='stored procedure'/><category term='databinding'/><category term='Software'/><category term='Hardware'/><category term='numeric'/><category term='validation'/><category term='vb.net'/><category term='HTML 5'/><title type='text'>Technology and such...</title><subtitle type='html'>braindump.technology.development.things</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://multi-slacker.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://multi-slacker.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Brad</name><uri>http://www.blogger.com/profile/01059492887288889911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://4.bp.blogspot.com/_E_bJF4bf2pU/St8eOypLqWI/AAAAAAAAA94/z7IGuKOTMQg/S220/Me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4971464997548672211.post-1813639389700060729</id><published>2010-04-05T15:22:00.010-04:00</published><updated>2010-04-05T16:37:26.667-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS3'/><category scheme='http://www.blogger.com/atom/ns#' term='Interests'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML 5'/><title type='text'>Internet Explorer and HTML 5... working it out...</title><content type='html'>I've been trying to stay up to speed with all of the newer HTML 5, CSS3, and jQuery plugins out there.  My neighbor recently asked me to work on his site.  It hasn't actually been published yet, but I figured this was a good opportunity to deploy some HTML 5 and CSS 3 techniques for a live site.  &lt;a href="http://html5doctor.com/youtube-and-vimeo-support-html5-video/"&gt;Everybody's doing it&lt;/a&gt;... I think.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First off... IE (any version up to&lt;a href="http://gizmodo.com/5494574/internet-explorer-9-a-fresh-start-with-html5"&gt; ie9...which has yet to be released&lt;/a&gt;), does not support the new CSS3 or HTML 5 standards (which are also for the most part, incomplete and undecided upon).  Even when IE9 DOES finally become available to the general public, you can count on it's predecessors not having the ability to support the new standards.  We still have several people using IE6 here at work, as this is the default browser of Windows XP... which seems to be the default operating system of choice for businesses...for now.  IE 8 is the Windows Millenium of browsers.... but we're hoping IE9 will be at least the Windows 7 equivalent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To &lt;b&gt;work around the HTML 5 issues with IE&lt;/b&gt;, I came across some javascript written by a 3rd party (see &lt;a href="http://remysharp.com/2009/01/07/html5-enabling-script/"&gt;here&lt;/a&gt;).  I've read several other posts referring to this same shiv, and it has been promoted to Google's online code repository.  Basically it provides support for some of the new elements in IE via javascript.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I downloaded the js into a local document to avoid extra http calls ... and inserted the code into the heading.  The above link provides more info on using the HTML 5 shiv ...and blogger won't let me save this article with the js embedded in this post... &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next... I like having a bit of validation and intellisense in my environment, so I downloaded a schema I came across for Visual Studio.  See &lt;a href="http://blogs.msdn.com/webdevtools/archive/2009/11/18/html-5-intellisense-and-validation-schema-for-visual-studio-2008-and-visual-web-developer.aspx"&gt;here for download and instructions&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I won't bore you too much with the HTML 5 elements that were used, but you can see for yourself in the source if you would like.  See &lt;a href="http://concettollc.com/geoff/"&gt;&lt;b&gt;Here&lt;/b&gt;&lt;/a&gt;&lt;b&gt;.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;To summarize, I've used some of the new layout elements provided by the new spec to try and organize HTML into&lt;b&gt; "sections" such as header, nav, content (section), and footer&lt;/b&gt;.  Nothing too exciting, but it's a step in the right direction.  If you're looking at the source and thinking ...man... there's a lot of extra mark-up.  You're right.  I used visual studio and master pages ...and I THINK I used a little ajax in with it too...so it's looking a bit bloated.  Some of the articles I've posted below offer up some clean implementations of straight up HTML not using an editor.  I plan on moving beyond the design phase to some server side code, so I opted to start this project in Visual Studio.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The main difference between what you will see in the above site between IE and other browsers, still, will be in how shadows were deployed to certain elements, and the fact that IE doesn't offer a non-hack way to provide rounded edges to box elements.  Not so important... but still sad.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For&lt;b&gt;&lt;i&gt; text shadow&lt;/i&gt;&lt;/b&gt; stylings... I did this.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;.txtHeader  {font-size:22px;color:#001C80; &lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;/* this is the css3 version */&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFF00;"&gt;text-shadow: 1px 2px 3px #333;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;/* this is the IE version */&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFF00;"&gt;                zoom: 1;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFF00;"&gt;                filter: progid:DXImageTransform.Microsoft.dropshadow(color='#999999',offX=2,offY=2);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For &lt;b&gt;&lt;i&gt;box elements&lt;/i&gt;&lt;/b&gt;... I wanted to use the new "box-shadow" css properties.  This was the work around similar to the above example... I attempted to use some jquery to drop shadows on IEs version of the page, but it performed really poor...and was all sorts of out of wack when the browser was re-sized... so I opted to go with MS' filters instead... which I had avoided for some time...because they ONLY worked in IE...but now seems fitting as a hack.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;.divBody&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;    width: 88%;&lt;/div&gt;&lt;div&gt;    left: 6%;&lt;/div&gt;&lt;div&gt;    top:4px;&lt;/div&gt;&lt;div&gt;    height: 97%;&lt;/div&gt;&lt;div&gt;    position: absolute;&lt;/div&gt;&lt;div&gt;    border: solid 1px black;&lt;/div&gt;&lt;div&gt;    background-color: #E6E1D0;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;    /* CSS3 version for rounded corners ...*/&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFF00;"&gt;    -moz-border-radius: 5px; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFF00;"&gt;    -webkit-border-radius: 5px;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;    /* CSS3 version for shadows ...*/&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFF00;"&gt;    -moz-box-shadow: 0px 3px 20px #969696;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFF00;"&gt;    -webkit-box-shadow: 0px 3px 20px #969696;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;    /* IE's shadow version which isn't quite as pretty when all rendered */&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFF00;"&gt;  zoom: 1;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FFFF00;"&gt;  filter: progid:DXImageTransform.Microsoft.Shadow(color='#969696', Direction=135, Strength=8);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some pretty good resources on writing in HTML 5 and CSS3.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Awesome resource for CSS3&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.css3.info/"&gt;http://www.css3.info/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Your basic HTML 5 tag reference.. &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.w3schools.com/html5/html5_reference.asp"&gt;http://www.w3schools.com/html5/html5_reference.asp&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;A pretty good article in writing a site from ground up using both...&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://net.tutsplus.com/tutorials/html-css-techniques/html-5-and-css-3-the-techniques-youll-soon-be-using/"&gt;http://net.tutsplus.com/tutorials/html-css-techniques/html-5-and-css-3-the-techniques-youll-soon-be-using/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;I have no idea what this site's about?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://html5tutorial.net/"&gt;http://html5tutorial.net/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;A website ...with lots of links to good websites ...that teach you things about websites.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.webappers.com/2009/08/10/70-must-have-css3-and-html5-tutorials-and-resources/"&gt;http://www.webappers.com/2009/08/10/70-must-have-css3-and-html5-tutorials-and-resources/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;If you're getting into animation / graphics using the new canvas elements... &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://developer.mozilla.org/en/Canvas_tutorial"&gt;https://developer.mozilla.org/en/Canvas_tutorial&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;This is the site as it exists today.  It's not much to look at... It's getting an upgrade in functionality as well as it's new facelift from the old site (&lt;a href="http://allsportsprinting.com/"&gt;http://allsportsprinting.com/&lt;/a&gt;).  Currently, it's in a sub folder of my playground site... soon to be deployed to his own host.   &lt;a href="http://concettollc.com/geoff/"&gt;http://concettollc.com/geoff/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4971464997548672211-1813639389700060729?l=multi-slacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://multi-slacker.blogspot.com/feeds/1813639389700060729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://multi-slacker.blogspot.com/2010/04/more-html-5-and-things.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/1813639389700060729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/1813639389700060729'/><link rel='alternate' type='text/html' href='http://multi-slacker.blogspot.com/2010/04/more-html-5-and-things.html' title='Internet Explorer and HTML 5... working it out...'/><author><name>Brad</name><uri>http://www.blogger.com/profile/01059492887288889911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://4.bp.blogspot.com/_E_bJF4bf2pU/St8eOypLqWI/AAAAAAAAA94/z7IGuKOTMQg/S220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4971464997548672211.post-1898885049380910622</id><published>2009-11-02T10:30:00.005-05:00</published><updated>2009-11-02T10:37:29.077-05:00</updated><title type='text'>Google Wave</title><content type='html'>So I finally got my invite to Google Wave.  It's pretty neat, but really not that fun considering I've got no one to talk to yet.&lt;br /&gt;&lt;br /&gt;I've sent the majority of my invites (or nominations?) out.  As of right now, nobody's gotten them and it's been about 3 days for most. &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_E_bJF4bf2pU/Su77Kd_Si4I/AAAAAAAABAM/ugFz8pgsKpc/s1600-h/wave.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 259px;" src="http://4.bp.blogspot.com/_E_bJF4bf2pU/Su77Kd_Si4I/AAAAAAAABAM/ugFz8pgsKpc/s400/wave.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5399529160531151746" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's the &lt;a href="http://www.youtube.com/watch?v=Itc4253kjhw"&gt;shortened version (10 mins)&lt;/a&gt; of the 80 min. video Google posted on Wave.&lt;br /&gt;&lt;br /&gt;and here's the &lt;a href="http://completewaveguide.com/"&gt;unofficial manual...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4971464997548672211-1898885049380910622?l=multi-slacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://multi-slacker.blogspot.com/feeds/1898885049380910622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://multi-slacker.blogspot.com/2009/11/google-wave.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/1898885049380910622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/1898885049380910622'/><link rel='alternate' type='text/html' href='http://multi-slacker.blogspot.com/2009/11/google-wave.html' title='Google Wave'/><author><name>Brad</name><uri>http://www.blogger.com/profile/01059492887288889911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://4.bp.blogspot.com/_E_bJF4bf2pU/St8eOypLqWI/AAAAAAAAA94/z7IGuKOTMQg/S220/Me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_E_bJF4bf2pU/Su77Kd_Si4I/AAAAAAAABAM/ugFz8pgsKpc/s72-c/wave.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4971464997548672211.post-7439032477942819543</id><published>2009-10-29T08:45:00.002-04:00</published><updated>2009-10-29T08:54:28.593-04:00</updated><title type='text'>Preventing keyboard actions in browser w/ JS</title><content type='html'>This function prevents users from hosing your page / logic with key strokes.  For instance... hitting the backspace key while focus is not set on a form field takes you back 1 page in the history.  F5 refreshes the page... F11 min/max the browser window.... &lt;br /&gt;&lt;br /&gt;In this function, I've also rejected ' and % for input into fields.  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&lt;br /&gt;function onKeyDown()&lt;br /&gt;    {&lt;br /&gt;        if ((event.keyCode == 8)&lt;br /&gt;            &amp;&amp; &lt;br /&gt;           (event.srcElement.form == null || event.srcElement.isTextEdit == false)&lt;br /&gt;          )&lt;br /&gt;        {&lt;br /&gt;            event.cancelBubble = true;&lt;br /&gt;            event.returnValue = false;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if ((event.keyCode == 37 &amp;&amp; event.altKey) || &lt;br /&gt;           (event.keyCode == 39 &amp;&amp; event.altKey))&lt;br /&gt;        {&lt;br /&gt;            event.cancelBubble = true;&lt;br /&gt;            event.returnValue = false;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;if (document.all){   &lt;br /&gt; document.onkeydown = function (){&lt;br /&gt;         var key_f5 = 116; // 116 = F5 &lt;br /&gt;         var key_f6 = 117; &lt;br /&gt;         var key_f11 = 122&lt;br /&gt;  if (key_f5==event.keyCode){&lt;br /&gt;          event.keyCode = 0;&lt;br /&gt;          event.cancelBubble = true;&lt;br /&gt;    event.returnValue = false;&lt;br /&gt;  }&lt;br /&gt;  if (key_f6==event.keyCode){&lt;br /&gt;          event.keyCode = 0;&lt;br /&gt;          event.cancelBubble = true;&lt;br /&gt;    event.returnValue = false;&lt;br /&gt;  }&lt;br /&gt;  if (key_f11==event.keyCode){&lt;br /&gt;          event.keyCode = 0;&lt;br /&gt;          event.cancelBubble = true;&lt;br /&gt;    event.returnValue = false;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then you can attach the function to the body or form element on the page.  Note that I am also reject context menu (right click) through the body tag.... &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:html"&gt;&lt;br /&gt;body onkeydown="onKeyDown();" oncontextmenu="return false;"&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4971464997548672211-7439032477942819543?l=multi-slacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://multi-slacker.blogspot.com/feeds/7439032477942819543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/preventing-keyboard-actions-in-browser.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/7439032477942819543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/7439032477942819543'/><link rel='alternate' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/preventing-keyboard-actions-in-browser.html' title='Preventing keyboard actions in browser w/ JS'/><author><name>Brad</name><uri>http://www.blogger.com/profile/01059492887288889911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://4.bp.blogspot.com/_E_bJF4bf2pU/St8eOypLqWI/AAAAAAAAA94/z7IGuKOTMQg/S220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4971464997548672211.post-8823798082473065524</id><published>2009-10-23T16:10:00.005-04:00</published><updated>2009-10-23T16:19:53.420-04:00</updated><title type='text'>Playing w/ HTML 5.</title><content type='html'>I did some reading on the HTML 5 Shiv for IE.  Supposedly it makes IE HTML 5 compatible, but I haven't had any luck with it.  &lt;br /&gt;&lt;br /&gt;I think at one point I even had the Chrome Frame working for IE, but now it doesn't. &lt;br /&gt;&lt;br /&gt;This is what I was able to do:  (You will need Firefox 3.5 or higher... or Google Chrome to view this page). &lt;br /&gt;&lt;br /&gt;&lt;a href="http://concettollc.com/"&gt;http://concettollc.com/&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;I basically modified the files from &lt;a href="http://www.chromeexperiments.com/detail/google-sphere/"&gt;Chrome Experiments&lt;/a&gt; to do what I wanted.  Not exactly breaking new ground, but I really wanted to peak under the hood.  &lt;br /&gt;&lt;br /&gt;If everything works out right, you should see letters revolving around the bomb like you see below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_E_bJF4bf2pU/SuIPwG9BKtI/AAAAAAAABAE/fNHqAejuQ64/s1600-h/Screenshot.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 363px;" src="http://2.bp.blogspot.com/_E_bJF4bf2pU/SuIPwG9BKtI/AAAAAAAABAE/fNHqAejuQ64/s400/Screenshot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5395892622717954770" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4971464997548672211-8823798082473065524?l=multi-slacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://multi-slacker.blogspot.com/feeds/8823798082473065524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/playing-w-html-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/8823798082473065524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/8823798082473065524'/><link rel='alternate' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/playing-w-html-5.html' title='Playing w/ HTML 5.'/><author><name>Brad</name><uri>http://www.blogger.com/profile/01059492887288889911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://4.bp.blogspot.com/_E_bJF4bf2pU/St8eOypLqWI/AAAAAAAAA94/z7IGuKOTMQg/S220/Me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_E_bJF4bf2pU/SuIPwG9BKtI/AAAAAAAABAE/fNHqAejuQ64/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4971464997548672211.post-7849978783048958048</id><published>2009-10-23T08:08:00.007-04:00</published><updated>2009-10-23T09:15:19.717-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Table / Field naming convention...</title><content type='html'>I've been working in several platforms, using dozens of 3rd party databases, or those developed by co-workers for years.  One thing I've found to be really obnoxious is the lack of standards (or poor standards) in naming convention.  I've worked with a vendor that actually had a table named "&lt;b&gt;Order Details&lt;/b&gt;" (Order "space" Details) ...with Order being a SQL keyword, and a space driven through the name.  This lead to the need for a the stupid brackets [Order Details] when writing a query.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then there's the whole standard where people think it's important to preface the field name with the datatype like "iCompanyId" or "vchPhoneNumber".  It's not a completely bad idea, but it leads up to the next thing that drives me nuts.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We have a huge database with several tables using similar field names across the entire database.  For instance, this &lt;b&gt;iCompanyId&lt;/b&gt; exists in several tables.  When you need to do any sort of join, you're stuck with having to create table aliases to avoid conflicts with the field name.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class="brush:sql"&gt;Select c.CompanyName, i.Firstname, i.Lastname&lt;br /&gt;from Company c&lt;br /&gt;Inner Join Individual i on i.iCompanyId = c.iCompanyId&lt;br /&gt;&lt;br /&gt;--Or how about something more obnoxious like using a field name like iSystemId in multiple tables that refer to different primary key values depending on the table.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;One thing I picked up at one of my previous employers was a naming convention that seemed to act as a solution to both problems.  Check it out:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:sql"&gt;&lt;br /&gt;&lt;br /&gt;--Let say you have a table called Requests, and a table called RequestType&lt;br /&gt;-- here are your fields for each&lt;br /&gt;--Your Request Table....&lt;br /&gt;--Req_PK&lt;br /&gt;--Req_ReqTypeFK&lt;br /&gt;--Req_Subject&lt;br /&gt;--Req_SeverityFK&lt;br /&gt;--Req_CreateDate&lt;br /&gt;--Req_CreateUserFK&lt;br /&gt;--Req_ModifiedDate&lt;br /&gt;--Req_ModifiedUserFK&lt;br /&gt;--Req_Inactive&lt;br /&gt;&lt;br /&gt;--Your RequestType Table....&lt;br /&gt;--ReqType_PK&lt;br /&gt;--ReqType_Name&lt;br /&gt;--ReqType_Data&lt;br /&gt;--ReqType_Ordinal&lt;br /&gt;--ReqType_Inactive&lt;br /&gt;&lt;br /&gt;--And an AppUser table&lt;br /&gt;--User_PK&lt;br /&gt;--User_Display&lt;br /&gt;--User_FirstName&lt;br /&gt;--User_LastName&lt;br /&gt;--User_Email&lt;br /&gt;--User_CreateDate&lt;br /&gt;--User_ModifiedDate&lt;br /&gt;--User_LastLogonDate&lt;br /&gt;--User_Inactive&lt;br /&gt;&lt;br /&gt;--The gist is... Truncate the name of the table in the field names.  This ensures that you know what particular table that field comes from in a query.  In addition, you have the PK and FK indicator making you aware that there is a relationship to that particular table. &lt;br /&gt;&lt;br /&gt;--See Example:&lt;br /&gt;&lt;br /&gt;Select Req_Subject, User_Name, ReqType_Name&lt;br /&gt;From Request&lt;br /&gt;Inner Join RequestType on ReqType_PK = Req_ReqTypeFK&lt;br /&gt;Inner Join AppUser on User_PK = Req_CreateUserFK&lt;br /&gt;&lt;br /&gt;--With this naming convention:&lt;br /&gt;--It ensures that all field names are unique:&lt;br /&gt;--Relationships are implied by the name&lt;br /&gt;--People working with your SQL understand all of the relationships and tables when reviewing the SQL code.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I'm not claiming that this was my idea, but it was one of the best SQL environments that I had the experience to work with.  They didn't deviate much from the standard within each table either.  For Instance, I could count on knowing that there was a&lt;br /&gt;[table]_Inactive or a [table]_ModifiedDate in each table without having to review what columns were available in the table. &lt;br /&gt;&lt;br /&gt;Just sayin...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4971464997548672211-7849978783048958048?l=multi-slacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://multi-slacker.blogspot.com/feeds/7849978783048958048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/table-field-naming-convention.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/7849978783048958048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/7849978783048958048'/><link rel='alternate' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/table-field-naming-convention.html' title='Table / Field naming convention...'/><author><name>Brad</name><uri>http://www.blogger.com/profile/01059492887288889911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://4.bp.blogspot.com/_E_bJF4bf2pU/St8eOypLqWI/AAAAAAAAA94/z7IGuKOTMQg/S220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4971464997548672211.post-5703251824905241390</id><published>2009-10-21T14:07:00.020-04:00</published><updated>2009-10-22T12:30:10.464-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Interests'/><title type='text'>Home Theater PC</title><content type='html'>I've had a few people ask me about my setup at home for a home theater PC.&lt;br /&gt;&lt;br /&gt;This is my current setup:&lt;br /&gt;&lt;br /&gt;&lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img style="float:left;" width="90px" src="http://4.bp.blogspot.com/_E_bJF4bf2pU/St9PZALORmI/AAAAAAAAA-k/Lry2Y_RlFd4/s200/dell-dimension-9150_v3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5395118169575540322" /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Dell Dimension 9150&lt;/b&gt; with 3 GB of memory.  I've got 1 40GB drive for the OS, and a 500GB drive to store media.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img style="float:left;" width="90px" src="http://2.bp.blogspot.com/_E_bJF4bf2pU/St9QdskixDI/AAAAAAAAA-s/0pbhWdvew_A/s200/ati-all-in-wonderhd.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5395119349724005426" /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;ATI All-In-Wonder HD&lt;/b&gt; Video card.  This has one built in tuner input, and an HDMI or DVI out to the TV.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img style="float:left;" width="90px" src="http://3.bp.blogspot.com/_E_bJF4bf2pU/St9RwKiRiEI/AAAAAAAAA-0/-tWrX2S9Th0/s200/HDMI-35-BLK_extra5.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5395120766516824130" /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;35 foot HDMI cable&lt;/b&gt; from &lt;a href="http://www.firefold.com/"&gt;FireFold.com&lt;/a&gt;, which was surprisingly cheap (and works well).  The TV itself is mounted on the wall, and the HDMI cable goes from one side of the room,  from the PC, under the floor, and up into the wall behind the TV.  &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img style="float:left;" width="90px" src="http://4.bp.blogspot.com/_E_bJF4bf2pU/St9S8PgGCXI/AAAAAAAAA-8/DJXRFBwlhGM/s200/rocketfish-wireless-keyboard-laser-mouse.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5395122073519917426" /&gt;&lt;/td&gt;&lt;td&gt;I recently found that my &lt;b&gt;Rocketfish Bluetooth Keyboard and Mouse&lt;/b&gt; don't work well with Windows 7 RTM (or the final release).  You may find that there are better drivers by the time you read this, but it worked like a champ prior to the other day.  &lt;b style="color:red;"&gt;You don't want to go with a standard wireless (IR) keyboard and mouse combo.  You will find that it does not communicate well from more than 5-7 feet.&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_E_bJF4bf2pU/St9UWsBejOI/AAAAAAAAA_E/veS2OyLWCY4/s1600-h/tiny-wless-key.jpg"&gt;&lt;img style="float:left;cursor:pointer; cursor:hand;" width="90px" src="http://2.bp.blogspot.com/_E_bJF4bf2pU/St9UWsBejOI/AAAAAAAAA_E/veS2OyLWCY4/s200/tiny-wless-key.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5395123627364355298" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;I've been considering moving to a mini RF (radio frequency) keyboard with a built in trackball mouse.  RF has a better range, and is more reliable than a bluetooth device.  I'm also sick of the "Where's the mouse" game, and trying to use my knee as a mousepad.  The &lt;a href="http://usb.brando.com/prod_detail.php?prod_id=00678/"&gt;USB 2.4Ghz RF Wireless Multimedia Tiny Keyboard &lt;/a&gt; device looks very promising as a replacement solution to my keyboard and mouse dislikes.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_E_bJF4bf2pU/St9Xo4aWxgI/AAAAAAAAA_M/97BBkvCSz1s/s1600-h/Windows-Media-Center3.jpg"&gt;&lt;img style="float:left;" width="90px" src="http://3.bp.blogspot.com/_E_bJF4bf2pU/St9Xo4aWxgI/AAAAAAAAA_M/97BBkvCSz1s/s200/Windows-Media-Center3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5395127238462457346" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;I use Windows Media Center to record TV.  With 2 tuner ports, you can record and watch TV at the same time (add more... get more).  It downloads the guide based on the zipcode you feed it, and it gets the descriptions etc.  Very handy alternative to waiting 20 minutes for the channel you want to see cycle back through the list of shit on the guide channel.  The recordings take up a considerable amount of disk space by the way.  You can also get your weather, internet TV, and some other content through Media Center, although I've found that the free content is usually lacking...or not worth the time to click through it.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img style="float:left;" width="90px" src="http://2.bp.blogspot.com/_E_bJF4bf2pU/St9Zgt0OhxI/AAAAAAAAA_U/_ZLmjLaA7MQ/s200/boxee.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5395129297202480914" /&gt;&lt;/td&gt;&lt;td&gt;Boxee is a really cool media player and manager for your downloaded content.  It will download all of the album covers and data possible for all of your movies and music.  This will even mount your ISOs like DVDs and play them.  Really cool.  It catalogs all of the media by genre.  In addition, it can link to your Pandora, Hulu, Youtube, or other online accounts for media.  If it could stream media or play media from a tuner card, it would be the only thing I ever used on my PC.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img style="float:left;" width="90px" src="http://4.bp.blogspot.com/_E_bJF4bf2pU/St9aaehh8eI/AAAAAAAAA_c/mCmcxtGTWUk/s200/hulu.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5395130289529942498" /&gt;&lt;/td&gt;&lt;td&gt;Hulu  as most of you probably already know, is a great resource to watch TV shows (previously aired).  This is where I catch up if I didn't record, or I wanted to check out something new.  They generally only store up to the last 5 episodes per show, so after that... you have to turn on your anti-virus, open a safer browser, and search the internet for it. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img style="float:left;" width="90px" src="http://3.bp.blogspot.com/_E_bJF4bf2pU/St9bgyA-IDI/AAAAAAAAA_k/dpTI7bXdwuc/s200/379_big.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5395131497352929330" /&gt;&lt;/td&gt;&lt;td&gt;I use &lt;b&gt;VLC Media Player&lt;/b&gt; to watch all of the content that I download if not through Boxee.  It will play Blue Ray formats (MKV files etc).  It won't mount an ISO, so I generally run a DVD emulator (MagicDisc works well, and it's free). &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Some other things to consider are a &lt;span style="font-weight:bold;"&gt;secondary tuner card&lt;/span&gt;.  You can get one with 2 outputs on them if that's what you're into.  Also, there are a few newer &lt;span style="font-weight:bold;"&gt;Media Center remote&lt;/span&gt;s that work on RF signal.  If you'd prefer to use a remote control with your media center, that is a very good option.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I recently hosed my machine being stupid... and I think when I have some money, this would be the desired setup for me:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;A case that looks more like home entertainment hardware, such as &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16811129054&amp;amp;nm_mc=OTC-Froogle&amp;amp;cm_mmc=OTC-Froogle-_-Cases+(+HTPC/Media+Center+Cases)-_-Antec-_-11129054"&gt;this guy here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;A better motherboard with a few quad core processors (or better... just because) (64-bit)&lt;/li&gt;&lt;li&gt;Raid 10 (or Raid 5) array of 1TB-2TB discs for speed and redundancy&lt;/li&gt;&lt;li&gt;5+ Gb of Ram&lt;/li&gt;&lt;li&gt;3 Digital HD tuners&lt;/li&gt;&lt;li&gt;HDMI 1.4 compatible video card (when 1.4 devices are released)&lt;/li&gt;&lt;li&gt;RF Media Center Remote and Keyboard/Trackball&lt;/li&gt;&lt;li&gt;A nice sound card&lt;/li&gt;&lt;li&gt;A better TV ;)&lt;/li&gt;&lt;li&gt;I'll never be satisfied with what I have so don't bother reading any further&lt;/li&gt;&lt;li&gt;The ability to control all of this stuff with my iPhone&lt;/li&gt;&lt;li&gt;An iPhone&lt;/li&gt;&lt;li&gt;A web based UI to access my media and schedule recordings (which is also tied into my smart home and security system dashboard)&lt;/li&gt;&lt;li&gt;A smarthome and security system setup&lt;/li&gt;&lt;li&gt;A small touch screen (15"-19") in the kitchen that I can add notes, make lists, and access my other stuff with.&lt;/li&gt;&lt;li&gt;I'm sure there's more... just consider everything up to "RF Media Center Remote"... a reasonable scenario&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4971464997548672211-5703251824905241390?l=multi-slacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://multi-slacker.blogspot.com/feeds/5703251824905241390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/home-theatre-pc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/5703251824905241390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/5703251824905241390'/><link rel='alternate' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/home-theatre-pc.html' title='Home Theater PC'/><author><name>Brad</name><uri>http://www.blogger.com/profile/01059492887288889911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://4.bp.blogspot.com/_E_bJF4bf2pU/St8eOypLqWI/AAAAAAAAA94/z7IGuKOTMQg/S220/Me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_E_bJF4bf2pU/St9PZALORmI/AAAAAAAAA-k/Lry2Y_RlFd4/s72-c/dell-dimension-9150_v3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4971464997548672211.post-1821734116685847146</id><published>2009-10-21T13:09:00.004-04:00</published><updated>2009-10-21T13:48:09.030-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='numeric'/><category scheme='http://www.blogger.com/atom/ns#' term='validation'/><title type='text'>Javascript Numbers Only</title><content type='html'>I use this script to reject input into text fields that isn't numeric.  It also allows for a decimal.&lt;br /&gt;The javascript.... &lt;br /&gt;&lt;pre class="brush:jscript"&gt;&lt;br /&gt;function IsNumeric(expression) {&lt;br /&gt;    var nums = "0123456789.";&lt;br /&gt;    if (expression.length==0)return(false);&lt;br /&gt;    for (var n=0; n &lt; expression.length; n++){&lt;br /&gt;        if(nums.indexOf(expression.charAt(n))==-1)return(false);&lt;br /&gt;    }&lt;br /&gt;    return(true);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And the HTML field&lt;br /&gt;&lt;pre class="brush:html"&gt;&lt;br /&gt;&lt;asp:TextBox ID="txtPrice" onkeypress="return IsNumeric(event);" onpaste="return IsNumeric(event);" runat="server" Width="50" MaxLength="8" /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Or&lt;br /&gt;&lt;pre class="brush:html"&gt;&lt;br /&gt;&lt;input maxlength="8" style="width:50;" type="text" onkeypress="return IsNumeric(event);" onpaste="return IsNumeric(event);" /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;...and since we're on the javascript topic... I did one of these last week:&lt;br /&gt;&lt;br /&gt;I needed to validate whether or not a checkbox was checked on the parent form from the child (within VB.Net code).  I had a scriptmanager element on the page, so I was able to do this:&lt;br /&gt;&lt;pre class="brush:vbnet"&gt;&lt;br /&gt;ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType, "updForm", "try {if (opener.document.getElementById(""chkServices_" &amp; chProductNumber.SelectedValue &amp; "_Q"").checked == true) {updateQuote(0);}}catch(e){};", True)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4971464997548672211-1821734116685847146?l=multi-slacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://multi-slacker.blogspot.com/feeds/1821734116685847146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/javascript-numbers-only.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/1821734116685847146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/1821734116685847146'/><link rel='alternate' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/javascript-numbers-only.html' title='Javascript Numbers Only'/><author><name>Brad</name><uri>http://www.blogger.com/profile/01059492887288889911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://4.bp.blogspot.com/_E_bJF4bf2pU/St8eOypLqWI/AAAAAAAAA94/z7IGuKOTMQg/S220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4971464997548672211.post-4833070464899394932</id><published>2009-10-21T10:56:00.002-04:00</published><updated>2009-10-21T10:58:14.782-04:00</updated><title type='text'>IE8 Issue with frames and pop ups...</title><content type='html'>&lt;div class="MsoNormal"&gt;Most of the errors that I’ve come across in IE 8 have been related to frames and javascript trying to reference other windows and frames.&amp;nbsp; I did some reading and found that IE 8 uses a different processing model than IE7 when it comes to separate windows, pop-ups, or frames. &amp;nbsp;Javascript references these windows by ID or by opener, parent, etc, but the value may no longer be available due to the window being run in a separate process. This broke several functional areas in the CRM application that we are using. &amp;nbsp;With users running Windows 7, there really isn't really any easy option for rolling back to IE 7, and compatibility mode appears to be a gag. &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;I updated my registry to add a DWord value of &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;TabProcGrowth = 0 &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;under&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Times New Roman', serif; font-size: 10pt;"&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;See Section #4 regarding the process model, and for information on differences between the two browsers.&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://blog.httpwatch.com/2009/04/07/seven-things-you-should-known-about-ie-8/" target="_blank"&gt;http://blog.httpwatch.com/2009/04/07/seven-things-you-should-known-about-ie-8/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4971464997548672211-4833070464899394932?l=multi-slacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://multi-slacker.blogspot.com/feeds/4833070464899394932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/ie8-issue-with-frames-and-pop-ups.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/4833070464899394932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/4833070464899394932'/><link rel='alternate' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/ie8-issue-with-frames-and-pop-ups.html' title='IE8 Issue with frames and pop ups...'/><author><name>Brad</name><uri>http://www.blogger.com/profile/01059492887288889911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://4.bp.blogspot.com/_E_bJF4bf2pU/St8eOypLqWI/AAAAAAAAA94/z7IGuKOTMQg/S220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4971464997548672211.post-5535414244147549747</id><published>2009-10-21T09:07:00.020-04:00</published><updated>2009-10-21T13:37:10.305-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vb.net'/><category scheme='http://www.blogger.com/atom/ns#' term='databinding'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='dropdownlist'/><title type='text'>VB.Net DataTable from SProc</title><content type='html'>I use this function regularly, or a modified version of it.  It accepts a stored procedure name, a collection of Parameters, and then optionally a cache key and expiration time if you want to store or retrieve it from the cache.  The cache (in this version) works on a sliding expiration, so the time value you pass is the time to live while not being used.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:vbnet"&gt;&lt;br /&gt;Public Shared Function GetDataTable_SP(ByVal spName As String, Optional ByVal Params As Collection = Nothing, Optional ByVal Key As String = "", Optional ByVal ExpireSeconds As Integer = 0) As DataTable&lt;br /&gt;            Try&lt;br /&gt;                Dim cnDT As New SqlConnection(ConnStr)&lt;br /&gt;                Dim adpDT As New SqlDataAdapter&lt;br /&gt;                Dim cmdDT As New SqlCommand(spName, cnDT)&lt;br /&gt;                Dim dt As New DataTable&lt;br /&gt;                If Len(Key) &gt; 0 Then&lt;br /&gt;'check to see if this key already exists in the cache.  If so, we simply return the datatable from the cache.&lt;br /&gt;                    If HttpRuntime.Cache(Key) Is Nothing Then&lt;br /&gt;                        cmdDT.CommandType = CommandType.StoredProcedure&lt;br /&gt; 'Loop through each parameter name and value and add them to the SProc call.&lt;br /&gt;                        If Not Params Is Nothing Then&lt;br /&gt;                            For i As Integer = 0 To Params.Count&lt;br /&gt;                                If i Mod 2 Then&lt;br /&gt;                                 Dim ParamName As String = Params.Item(i)&lt;br /&gt;                                 Dim ParamVal As Object = Params.Item(i + 1).ToString&lt;br /&gt;                                 cmdDT.Parameters.Add(New SqlParameter(ParamName, ParamVal.GetType)).Value = ParamVal&lt;br /&gt;                                End If&lt;br /&gt;                            Next&lt;br /&gt;                        End If&lt;br /&gt;                        adpDT.SelectCommand = cmdDT&lt;br /&gt;                        adpDT.SelectCommand.Connection.Open()&lt;br /&gt;                        adpDT.Fill(dt)&lt;br /&gt;                        cnDT.Close()&lt;br /&gt;'Add the result to the cache&lt;br /&gt;                        HttpRuntime.Cache.Insert(Key, dt, Nothing, DateTime.Now.AddSeconds(ExpireSeconds), TimeSpan.Zero)&lt;br /&gt;                    End If&lt;br /&gt;                    'Return the result from the cache&lt;br /&gt;                    Return CType(HttpRuntime.Cache(Key), DataTable)&lt;br /&gt;                Else&lt;br /&gt;'Not using the cache key at all... simply get the value from the database.&lt;br /&gt;                    cmdDT.CommandType = CommandType.StoredProcedure&lt;br /&gt;                    If Not Params Is Nothing Then&lt;br /&gt;                        For i As Integer = 0 To Params.Count&lt;br /&gt;                            If i Mod 2 Then&lt;br /&gt;                                Dim ParamName As String = Params.Item(i)&lt;br /&gt;                                Dim ParamVal As Object = Params.Item(i + 1).ToString&lt;br /&gt;                                cmdDT.Parameters.Add(New SqlParameter(ParamName, ParamVal.GetType)).Value = ParamVal&lt;br /&gt;&lt;br /&gt;                            End If&lt;br /&gt;                        Next&lt;br /&gt;                    End If&lt;br /&gt;                    adpDT.SelectCommand = cmdDT&lt;br /&gt;                    adpDT.SelectCommand.Connection.Open()&lt;br /&gt;                    adpDT.Fill(dt)&lt;br /&gt;                    cnDT.Close()&lt;br /&gt;                    Return dt&lt;br /&gt;                End If&lt;br /&gt;            Catch ex As Exception&lt;br /&gt;                Return Nothing&lt;br /&gt;            End Try&lt;br /&gt;        End Function&lt;/pre&gt;&lt;br /&gt;The AddParameter function simply adds items to a collection.  You pass the object (the collection) to the function, along with the parameter name and value.  It appends the new values to the collection.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:vbnet"&gt;        &lt;br /&gt;Public Shared Function AddParameter(ByVal pList As Collection, ByVal Name As String, ByVal value As Object) As Object&lt;br /&gt;            Try&lt;br /&gt;                pList.Add(Name, "Name_" &amp; Name)&lt;br /&gt;                pList.Add(value, "Val_" &amp; Name)&lt;br /&gt;                Return pList&lt;br /&gt;            Catch&lt;br /&gt;                Return pList&lt;br /&gt;            End Try&lt;br /&gt;        End Function&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In this example, I'm filling a dropdownlist with values from a stored procedure.  The function will return a datatable as it's datasource.  I've added a few parameters, and have specified a cache key "Key_RES", and a time to live "300" (as in 5 minutes).  After the items are databound, I add a default item to the list so that we have something with a default selectedIndex of 0 to trap on.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:vb"&gt;&lt;br /&gt;    Public Sub LoadDropDown()&lt;br /&gt;        Dim par As New Collection&lt;br /&gt;        par = AddParameter(par, "@Dt_Type", ddlDateType.SelectedIndex)&lt;br /&gt;        par = AddParameter(par, "@Dt_Start", dt1.SelectedDate.ToString("MM/dd/yyyy"))&lt;br /&gt;        par = AddParameter(par, "@Dt_End", dt2.SelectedDate.ToString("MM/dd/yyyy"))&lt;br /&gt;        ReqResCode.DataSource = GetDataTable_SP("ResCode_Sel", par, "ReqResCode", 10)&lt;br /&gt;        ReqResCode.DataValueField = "ResCode_PK"&lt;br /&gt;        ReqResCode.DataTextField = "ResCode_Name"&lt;br /&gt;        ReqResCode.DataBind()&lt;br /&gt;        ReqResCode.Items.Insert(0, "--Select Resolution Code--")&lt;br /&gt;    End Sub&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4971464997548672211-5535414244147549747?l=multi-slacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://multi-slacker.blogspot.com/feeds/5535414244147549747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/testing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/5535414244147549747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/5535414244147549747'/><link rel='alternate' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/testing.html' title='VB.Net DataTable from SProc'/><author><name>Brad</name><uri>http://www.blogger.com/profile/01059492887288889911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://4.bp.blogspot.com/_E_bJF4bf2pU/St8eOypLqWI/AAAAAAAAA94/z7IGuKOTMQg/S220/Me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4971464997548672211.post-3886415632994113086</id><published>2009-10-20T11:30:00.002-04:00</published><updated>2009-10-26T13:52:34.490-04:00</updated><title type='text'>Not so much the beginning...</title><content type='html'>So when I was a kid I liked to draw.  I excelled in art class and didn't so much in gym.  When I got my first job as a dishwasher (because I don't count the first job at Pretzel Time for a whopping 4 hours), I instantly had the desire to be a cook.  I was under the impression that working for a restaurant meant a degree of creativity.  My parents finally guilted me into doing something more with myself than being a recreational drug user and professional skateboarder at 17.  I went to Job Corps for 2 years and enrolled in the culinary program.  There I completed all of the materials for becoming a line cook and then some.  I was then selected as one of the fancier culinary students (out of all of the fancy people at Job Corp... I know), and began working in the bakery.  From there, the instructor took me on as an ice carving apprentice.  That was probably the closest I ever got to the level of creativity that I desired.  After absorbing all of the free government funded culinary training I could possibly handle, I moved on to the employment world.  I started out as a cook for UMO's catering division (Wells Commons).  It was pretty neat stuff, and we served some pretty interesting guests (Hillary Clinton, Al Gore, Adam Sandler, Norm McDonald, some sports people I don't know, and others.).  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After having my 2 year commitment to Job Corps expire, I moved back to Portland.  I worked in several fancy restaurants, and a few other interesting venues.  I went through a ton of these jobs. I then ended up working for the catering division at USM (Aramark) working my ass off.  There were several instances where it would be a 21+ hour day on my feet preparing and serving an event.  I finally got the fact that there is nothing creative about repeating the same menu day in and day out.  The only way that I would ever enjoy this stuff was if I were the head chef, or the owner...and neither was ever going to make me rich or happy.  Finally, my girlfriend at the time was fed up with the hours and being poor and told me to do something else with myself.  At the time we had a cheesy Compaq computer that her grandparents had bought her, and I basically made it my own.   &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In 1999 I tried applying at Andover College, and the financial aid fella basically told me I had no shot and put almost zero effort into our conversation.  I figured I'd give it one more try at SMTC talking to their financial aid guy (Scott?).  He was way more helpful in figuring out grants and loans.  Lou McNally (local weather guy who I lived with for awhile via friendship with his daughter...long story) wrote them a letter certifying that I had been living on my own for several years, and that my parent's income should not be a factor in deciding loan eligibility.  I was accepted and funded.  Like any kid offered up loan money (most likely an assumption to excuse my stupidity), I maxed out my loans to buy a laptop, PC, a car, and pay rent.  While I was attending school full-time, I was also working full-time.  I found that jobs in security were the most excellent type of job for someone in school with homework.  I worked from 11pm-7am, went to school, and then went home to sleep.  This continued for all of year 1.  Year 2, I was able to land a job at Envisionet as a tech support representative for MSN's rockin' dial-up internet solution.  I was able to complete most of my homework assignments in between calls.  Nearing the end of my time at SMTC, I was offered an internship at a call center, doing what at the time was exactly what I wanted to be doing.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was working at a satellite location in Topsham doing some basic support level stuff for the call center.  At about 3 weeks, the on-site manager for IT was feeling insecure about having another person helping him out, and found a new job.  I was offered his position as the sole technical person on-site at a 90 seat call center.  Being straight out of school and thrown right into a job like this was intimidating.  I was quickly introduced to all of the issues people had with Office 97, email, NT 4.0, and connectivity.  This was just the beginning.  There were a ton of software applications and hardware that I had no experience with.  I quickly became familiar with these things, as well as Exchange, back-ups, user management, policies, and all of that other boring stuff.   This was one of the most unstable companies I had ever worked for.  They went through chapter 11 3 times while employed there, with 3 different name changes.   The first chapter 11 involved us closing the Topsham branch.  With there only being 1 person handling hardware related tasks onsite, can you guess who's job it was to pack the entire 90+ seat call center up and deliver the goods back to Portland?  I packed every PC, and CRT monitor, server, phone, and any other device you can imagin in a van (about 15+ trips total...over 2 weeks.) and drove them to Portland.  Then I had to find a place for them in Portland while taking inventory of these devices.  During one of my trips to Portland in the van, was the 9/11 attacks... so this was in September of 2001.  The politics at this place were unreal.  Immediately after moving all of the equipment, I was let go for 1 month (but told to hang in there) so that they could keep my pay off the books while selling to another buyer.  The onsite hardware guy for Portland got laid off for good, and I ended up being the support for the that location.  The odd part was... he was friends with the HR supervisor, so the HR supervisor got him a job as a janitor.  Here we have the guy with the biggest chip on his shoulder, with full access to the building, knowing all administrator passwords, and other user account logins....coming in while nobody's watching him.  They eventually started asking me to watch what he's doing during off hours on his PC.  I came across the Anarchists Cookbook, some Army Field manuals, and a few other materials regarding how to kill off your co-workers that fired you.  They decided to let him go.  Management had me spying on people's emails and computers.  Executives were asking me to spy on other executives.  Almost everyone knew the company's administrator password.  Most of my team were planning on jumping ship to work with another co-worker who was starting up a rival call center.  The owners of my company started asking me to spy on them and that was a really tough position to be in.  I decided that I should go to my direct boss about these things because I felt that she had a great deal of integrity and would do the right thing. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In 2003 after shadowing the network administrator, and getting my feet wet with several different technologies, I was offered an excellent opportunity.  The company was getting ready to circle the drain for the 4th time. The product manager and phone system admin at the time approached me about a new call center they were opening in up-state NY.  They wanted me to design, coordinate, and execute on a new network, phone system, and order entry system from ground up.  I accepted the position and began putting together diagrams and quotes for equipment immediately.  The company I left had gone through 1 more name change, and then closed for good about 6 months later.   I moved to NY 3 weeks after accepting the position.  They bought an old school house that was in the process of being renovated to our needs.  Once the walls were constructed, I began cabling tasks and placing the orders for equipment.  In April 2003 we received our servers with Windows 2003 Server media.  I was excited to be getting the installation media with our servers about 5 days before 2003 Server's official release.  The sales manager for the company used to come visit me in the empty building with a 12 pack and we'd sit in my office with a huge pile of boxes and enjoy a few beers while I was configuring equipment.  It was pretty neat, and the only time I can say that I drank in the office.  We officially opened in June 2003.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Shortly after opening, we found that we were faced with the dilemma of having lots of orders, and no official order export procedures or format.  At the time, I wasn't really a programmer or even really well versed in SQL (or Oracle).  I started out trying to churn orders into CSV files via ODBC and Access 2003.  As we took on more clients, and these clients wanted more complex information, and at a faster pace.  At about week 3 I took the initiative to research this new .Net thing that our new 2003 servers supported.  It took me about 2 days to figure out how to create a basic datagrid with call data loaded in real-time.  At first, management was reluctant to simply just put our information un-scrubbed out on the web for our clients.  We tried it with a select few, while I continued to write new reports for our sales team on the intranet.  We found that our clients loved the concept, and began requesting specific reports and were giving us report formulas and models that they would like to see.  Eventually we found a good medium and stuck with a particular format that seemed to work for most of them.  We also managed to get all orders into a conformed spec (MOM) for the time being.  In 2004 we hired another programmer that handled all order exports.  They wanted me to direct his workload and oversee / coordinate projects running through our department.  He eventually became the new order export expert, while I continued developing the website and intranet.  This was mostly a part time job for me, as I was also the network administrator (and everything else but the order export programmer).  In 2005, we had exhausted all of the local talent, and were stuck with the option of re-hiring people that we had let go.  Management decided that they wanted to relocate the call center to the big city (Plattsburgh).  This would be the second call center that I would be responsible for getting set up.  I had our programmer helping me pull cable this time around.  It was a lot of work getting the building ready.  Management wanted to try and have minimal down time between the move without having anything new set up in the new location.  Basically cubicles and a few new PCs were set up.  Cables were run, T-1s were run from the DMarc to the PBX room.  The equipment showed up one night, and we had 8 hours to have it all plugged in.  We grabbed a bunch of sales agents to handle plugging the PC's in and setting up workstations.  I spent the entire night in the PBX room re-provisioning channels to new DNs, configuring new IP addresses, cabling patch panels and switches, and coordinating a cut-over with AT&amp;amp;T...or MCI... or was it Qwest... who cares I guess.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In November 2005, I needed to move back to Portland as my girlfriend and I were having a baby.  I offered up my resignation, and was offered to keep my position and work remotely with bi-monthly week long on-site visits.  I maintained this scenario for about 1 more year, and decided that I would much prefer to be a full-time web developer.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In October 2006, I landed a job as a web developer with First Advantage HMS.  They were a small division of a large company, selling an applicant tracking system.  Most of my time here was spent re-branding our application to fit the look and feel of the client's website (and sometimes intranet).  The other big chunk of time was spend trying to extend the functionality of the application through code in headers and footers.  I wrote an entire Personnel Action Form wizard for Trump Taj Mahal, using XML, SQL, and some core classes using vb.net.  It was a really good introduction into CSS, and some best practices in design elements.  I was introduced to many SQL Server best practices with regard to performance tuning, naming convention, and debugging stored procedures.  This was a great company to work for at one point.  Shortly before I began my employment with them, they were bought by First Advantage.  They were previously known as Projectix.  The original owners jumped ship a few months before a massive reorganization occurred.  I believe 16 people (out of about 40) were let go.  The 16 people consisted of the top paid employees, which were also the history and only knowledge base that we newer people relied upon.  Eventually, corporate decided that they were going to begin evaluating our product against another similar product (company) that they had acquired, and free themselves of one of them.  I could read the writing on the wall, and decided to start negotiating my return to the New York call center as a work from home position.  We worked out a deal, and I gave my notice.  About 9 months later, the HMS division closed its doors.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of the first items on the agenda upon my return, was to prepare the company for another move (building number 3).  This time, they decided that they were going to purchase a new phone system and wanted a new order management solution.  My previous replacement, and newer programmer were not pleased to see me come back, due to the fact that they wanted to essentially demote my replacement and make me his boss.  It was a pretty toxic environment for awhile.  I offered to come back and write a new order entry solution for them.  They agreed and purchased a new server and SQL license for me to develop on at my home.  I spent all of the first 3 months writing the new order management application in ASP.Net 2.0 with some of the newer AJAX controls.  It was really quite fancy, and I was excited to implement some of the new SQL skills that I had acquired, since the company was primarily an Oracle shop.  Nearing the end of month 3, the other programmer quit, and they wanted me to fill his shoes.  This meant that the deadline that I had previously committed to would never be met.  They decided to scrap the order management solution (which was more than 2/3 complete), and opted to go with a 3rd party option.  We had all agreed that my former replacement (we'll just call him #2) would communicate our needs, and facilitate the setup of the phone system with Mitel and the local vendor.  I would be going to the company that owned the new order management solution to coordinate data migration efforts, and learn how to build export modules via their application.  This was all decided in late October or early November.  Our deadline for moving and having all of these things ready to roll was January 1st.  This meant... all new equipment ordered, cabling to be completed, new equipment to be configured, phone system and software to be installed, data migration tasks to be completed, order management system to be deployed, and full CTI integration between the two implemented, and re-written web reporting ... all in about 3 months with an army of 2.  I spent a ridiculous amount of time trying to conform to this XML import spec for the new OMS.  The export application that I wrote made it to about 95% completion before we had a severe database crash.  We lost 3 out of 4 discs in a Raid 5 array due to corruption from the controller.  #2 and I had a severe miscommunication issue over who was handling the backups.  We also had an issue with the storage location in which these backups were going to, and a really lame band-aid was applied to the problem awhile back, that wasn't sufficient enough for the Oracle backups to complete correctly.  Basically, we had whatever data that I had managed to collect during my data migration dry runs, and that was it.  Luckily, that data included all active subscriptions and current orders up to 8 days prior.  The remaining 8 days was meticulously put back together by sales management using call recordings.  The phone system setup, and integration didn't go much smoother.  We were riddled with issues and found that were served with lots of empty promises during our planning phase (which was quite short).  Neither #2, nor I felt good about the results of our hard work, aside from the physical setup and equipment that we had configured and installed.  After all of the dust had settled, and we had worked out all of the issues stemming from our move to the new building and new systems, I decided that I was no longer interested in IT, or at least at that capacity.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In 2008 I left the company and accepted a position at Tyler Technologies as a CRM developer (Onyx 5.5).  I've been here for almost 1 full year, and so far, I can honestly say that I like the company and my job.  I would like to be working with some newer technologies, but I've managed to fulfill those wants during my spare time here.  I'm just wrapping up a replacement help desk solution written in .Net 3.5.  There are some a few other developers here working in Silverlight.  I recently installed Silverlight 3.0 and tools and experimented a bit with that.  The more I read about the latest technology, the more I'm feeling like Silverlight is not going to be the next big thing.  HTML 5 and the new CSS appear to be where it's at.  There are still a few things hindering it's release (like Microsoft and a few other organizations arguing over standards for browsers and the web).  Google Chrome, and the latest Firefox release appear to be fully compliant with the standard as it exists today, and I've been dabbling and reading up on some of it.  I've also been trying to steer away from .Net and VB a bit.  Javascript has had it's roots in internet development for a long time, and it proves to be one of those technologies that isn't going away anytime soon (especially with the addition of jQuery).  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lately my interests have been more in design and UI enhancements.  We'll see where motivation takes me.  Stay tuned.   &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4971464997548672211-3886415632994113086?l=multi-slacker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://multi-slacker.blogspot.com/feeds/3886415632994113086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/not-so-much-beginning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/3886415632994113086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4971464997548672211/posts/default/3886415632994113086'/><link rel='alternate' type='text/html' href='http://multi-slacker.blogspot.com/2009/10/not-so-much-beginning.html' title='Not so much the beginning...'/><author><name>Brad</name><uri>http://www.blogger.com/profile/01059492887288889911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://4.bp.blogspot.com/_E_bJF4bf2pU/St8eOypLqWI/AAAAAAAAA94/z7IGuKOTMQg/S220/Me.jpg'/></author><thr:total>0</thr:total></entry></feed>
