<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cale Dunlap</title>
	<atom:link href="http://www.caledunlap.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.caledunlap.com</link>
	<description>Programmer and Hobbyist Game Developer</description>
	<lastBuildDate>Mon, 11 Jan 2010 04:18:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Impact of the microchip on industry over the last 30 years</title>
		<link>http://www.caledunlap.com/2010/01/impact-of-the-microchip-on-industry-over-the-last-30-years/</link>
		<comments>http://www.caledunlap.com/2010/01/impact-of-the-microchip-on-industry-over-the-last-30-years/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 04:18:41 +0000</pubDate>
		<dc:creator>Cale</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[microchip]]></category>
		<category><![CDATA[stock]]></category>

		<guid isPermaLink="false">http://www.caledunlap.com/2010/01/impact-of-the-microchip-on-industry-over-the-last-30-years/</guid>
		<description><![CDATA[I recently was involved in a discussion for my current humanities class. This specific class is all about technology and how it has impacted society and culture. The instructor asked the class about what impact the microchip has made to society. I actually was rather proud of my response so I figured I would share <a href="http://www.caledunlap.com/2010/01/impact-of-the-microchip-on-industry-over-the-last-30-years/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>I recently was involved in a discussion for my current humanities class. This specific class is all about technology and how it has impacted society and culture. The instructor asked the class about what impact the microchip has made to society. I actually was rather proud of my response so I figured I would share it:</p>
<blockquote><p>I think the microchip had a much deeper impact than that of a direct impact on society specifically. How many different things has the microchip ushered in that allowed more and more businesses to flourish and &#8216;pop up&#8217; around that technology and do more and more things with it?     <br />One thing that makes this evident is a graph of stock prices over the last 40 years:      <br /><a href="http://stockcharts.com/charts/historical/">http://stockcharts.com/charts/historical/</a>      <br />Look at the DJIA, see how rapidly it began to climb in the mid 80&#8217;s when Microsoft and Apple were just unveiling their products? And then another market sprung up around technology specifically: the NASDAQ. In mathematical terms you can sort of think of the NASDAQ as the technological derivative of the DJIA. The growth rate of the NASDAQ after its conception could essentially have contributed to the exponential growth of the DJIA. Sort of like how acceleration relates to velocity in terms of physics. If acceleration (NASDAQ, technology) grows linearly then velocity (DJIA, industry in general) will grow exponentially.</p>
</blockquote>
<p>I’m more technically, mathematically, and physically savvy than I am business savvy so my bit at the end relating the graphs to math and physics was my way of making sense of the data <img src='http://www.caledunlap.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.caledunlap.com/2010/01/impact-of-the-microchip-on-industry-over-the-last-30-years/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LINQ Audit Trail v2 &#8211; DoddleAudit</title>
		<link>http://www.caledunlap.com/2009/12/linq-audit-trail-v2-doddleaudit/</link>
		<comments>http://www.caledunlap.com/2009/12/linq-audit-trail-v2-doddleaudit/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 04:29:17 +0000</pubDate>
		<dc:creator>Cale</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[c#]]></category>

		<guid isPermaLink="false">http://www.caledunlap.com/?p=562</guid>
		<description><![CDATA[This looked like a link that was fairly re-post worthy. This is practically a must for any .NET + LINQ + MSSQL developer out there. Very neat way of doing audit trails in MSSQL with LINQ and C#.
A couple months ago I wrote a basic set of extension methods to handle automatic auditing in LINQ <a href="http://www.caledunlap.com/2009/12/linq-audit-trail-v2-doddleaudit/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>This looked like a link that was fairly re-post worthy. This is practically a must for any .NET + LINQ + MSSQL developer out there. Very neat way of doing audit trails in MSSQL with LINQ and C#.</p>
<blockquote><p>A couple months ago I wrote a basic set of extension methods to handle automatic auditing in LINQ to SQL. Well I have received a large number of emails regarding this particular project so I have decided to focus on cleaning up my v2 API and releasing it on CodePlex. There was a lot of room for improvement from version 1 and today I am going to post the all new LINQ Audit Trail code. This new version is significantly enhanced in the previous version.</p>
</blockquote>
<p>via <a href="http://www.matthidinger.com/archive/2009/01/12/linq-audit-trail-v2.aspx">LINQ Audit Trail v2 &#8211; DoddleAudit</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.caledunlap.com/2009/12/linq-audit-trail-v2-doddleaudit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I&#8217;m not shopping at Best Buy anymore</title>
		<link>http://www.caledunlap.com/2009/12/why-im-not-shopping-at-best-buy-anymore/</link>
		<comments>http://www.caledunlap.com/2009/12/why-im-not-shopping-at-best-buy-anymore/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 04:15:42 +0000</pubDate>
		<dc:creator>Cale</dc:creator>
				<category><![CDATA[Rants]]></category>
		<category><![CDATA[rant bestbuy incompetent business]]></category>

		<guid isPermaLink="false">http://www.caledunlap.com/2009/12/why-im-not-shopping-at-best-buy-anymore/</guid>
		<description><![CDATA[Ok, well I’m not cutting Best Buy out completely…. I still need a local place to find a decent price on things like TV’s and appliances. But when it comes to computer parts and most other technology accessories… here’s why I’m done shopping at Best Buy.

Incompetent Staff
High Prices on EVERYTHING
Unhelpful Staff
Never have what I’m looking <a href="http://www.caledunlap.com/2009/12/why-im-not-shopping-at-best-buy-anymore/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Ok, well I’m not cutting Best Buy out completely…. I still need a local place to find a decent price on things like TV’s and appliances. But when it comes to computer parts and most other technology accessories… here’s why I’m done shopping at Best Buy.</p>
<ol>
<li>Incompetent Staff</li>
<li>High Prices on EVERYTHING</li>
<li>Unhelpful Staff</li>
<li>Never have what I’m looking for</li>
<li>Don’t sell the complementary goods to what I’m buying in the first place</li>
<li>Incompetent Staff</li>
<li>Incompetent Staff</li>
<li>Unhelpful Staff</li>
<li>The Staff is retarded</li>
<li>Seriously, the staff doesn’t know shit about shit</li>
</ol>
<p>Regarding numbers 1, 3, 6, 7, 8, 9, and 10. I was at Best Buy a few times within the last month and 2 out of those 3 times have been terrible experiences. The only reason the other experience wasn’t a bad one was because I knew what I was looking for, I knew how to find it, and I never had any questions about it. The other two times were horrible because I had simple questions but they were too under-staffed to handle my simple question quickly. Then when I FINALLY tracked down an associate, I asked him if he sold the wireless adapter for the Netgear home theatre thingy I was looking at buying for almost $200—streams media to your TV from your home network. He immediately said no I’ll have to go online. Alright… fair answer. But then this supplements my point about #5; if I’m going to buy something to put near my TV in my entertainment center… which doesn’t have hard-wired Ethernet (and I don’t know many people that have CAT5 in their home theatre setup), I’d want to buy the wireless adapter. Good going Worst Buy… cost yourself a sale simply by not stocking a complementary good. I didn’t buy it.</p>
<p>Now the second time I went into Best Buy looking for a media center that streams media from my home network to my TV (since I had some money to burn), I asked about the wireless adapter for the Seagate HD Theatre+. Again…. after walking around trying to find an associate who wasn’t being a tool, I came across one who was a tool… because apparently “non-tool” associates don’t exist at Best Buy. So I asked him the same question “Do you sell the wireless adapter for this?” Keep in mind, it says right on the box that Seagate makes a wireless adapter for that unit but it is sold separately, though it doesn’t tell you any model information. What immediately tipped me off that he had no freaking clue what he was about to babble about was the fact that he looked at the back of the box and hunted for the “obvious” answer with his index finger… which is exactly what I did (sans the index finger thing). Then he handed the box back to me and told me to go to Home Theatre and ask for a USB Adapter for TiVo.</p>
<p>Ok, fine… I’ll play dumb consumer and follow his directions—big mistake, I forgot about my #1 reason for not shopping at Best Buy anymore. Luckily reason #2 kicked in when I saw the price on the TiVo wireless adapter. Seventy (70) dollars for a USB wireless G adapter for a freaking TiVo. Who in their right (and wrong) mind would even consider spending that much on a wireless G adapter for anything? Not I said the Cale. I put the adapter and the Seagate Home Theatre system back and promptly left the store.</p>
<p>So lets re-cap… Reasons #1, #2, #3, and #4 all cost Best Buy a few sales. In the business scheme of things if you think about it, how many times per day does that happen? How many times does Best Buy lose sales because they: have stupid associates; don’t have the complimentary item to something; don’t have what someone is looking for; and have something but the price is so high the customer just puts it back and leaves? They could have racked up about $300 in sales just on a single customer. So according to Wikipedia, there’s ~1,400 Best Buy stores in the US in 2007… probably more now, but lets use 2007’s numbers. Lets say my little fiasco happens in every one of those 1400 stores a total of ONE time per day (which imho is a fair number). That’s missed revenue of $420,000 per day. If you extrapolate that out to one year, that’s $153 million in missed revenue per YEAR! I know that pales in comparison to the company’s &gt; $4 billion in annual revenue, but still if I were a business owner, I’d love to see $153 million more on the books every year.</p>
<p>Think about it Best Buy… think about it. In the mean time, I’m shopping at Fry’s, NewEgg, or Amazon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.caledunlap.com/2009/12/why-im-not-shopping-at-best-buy-anymore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gripes about Torque Game Engine on Windows 7</title>
		<link>http://www.caledunlap.com/2009/12/gripes-about-torque-game-engine-on-windows-7/</link>
		<comments>http://www.caledunlap.com/2009/12/gripes-about-torque-game-engine-on-windows-7/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 21:15:09 +0000</pubDate>
		<dc:creator>Cale</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[rant code torque windows7 unity udk]]></category>

		<guid isPermaLink="false">http://www.caledunlap.com/2009/12/gripes-about-torque-game-engine-on-windows-7/</guid>
		<description><![CDATA[So for my Bachelors degree, we’re using the Torque Game Engine to learn how to create assets and write basic scripts for a game engine… effectively creating a whole game. I’ve used Torque lightly in the past, on Windows XP but never on Vista. Now that I’ve gone Windows 7 I’ve had nothing but problems <a href="http://www.caledunlap.com/2009/12/gripes-about-torque-game-engine-on-windows-7/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>So for my Bachelors degree, we’re using the Torque Game Engine to learn how to create assets and write basic scripts for a game engine… effectively creating a whole game. I’ve used Torque lightly in the past, on Windows XP but never on Vista. Now that I’ve gone Windows 7 I’ve had nothing but problems with Torque. So far, just today, in the last 4 hours, it crashed on me 6 times. No pattern to it either, it usually happens when I just simply try to do something. In one case it crashed when I removed a dynamic property, another case it crashed when I placed an entity inside of a sim group. I’ve also experienced crashes in map2dif.exe as well. So far the Torque Constructor has been fairly solid, though I don’t like the interface at all, but the Torque engine itself has been absolutely terrible.</p>
<p>I really wish my college would use Unity or even UDK for teaching game development, Torque seems like an absolute joke. Of course, they haven’t tried out the new Torque 3D engine yet… they’re still on the archaic “Torque Game Engine” which is probably part of the problem.</p>
<p>Anyway, just felt like bitching there for a second about my Torque woes… its been a total nightmare trying to get this assignment done before the end of the 7th week of class (which is next week).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.caledunlap.com/2009/12/gripes-about-torque-game-engine-on-windows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A few web host reviews</title>
		<link>http://www.caledunlap.com/2009/11/a-few-web-host-reviews/</link>
		<comments>http://www.caledunlap.com/2009/11/a-few-web-host-reviews/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 11:41:26 +0000</pubDate>
		<dc:creator>Cale</dc:creator>
				<category><![CDATA[Rants]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[arvixe]]></category>
		<category><![CDATA[fatcow]]></category>
		<category><![CDATA[hostdime]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[netfirms]]></category>
		<category><![CDATA[reviews]]></category>
		<category><![CDATA[site5]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webfusion]]></category>

		<guid isPermaLink="false">http://www.caledunlap.com/2009/11/a-few-web-host-reviews/</guid>
		<description><![CDATA[You may have noticed my tweets there on the left about web hosts. I recently experimented with a few different hosts and griped about one of them (WebFusion). First off, if anybody tells you to use http://10bestwebhost2009.com, especially via Twitter, don’t bother, its spam and a total joke. This is a site that is written/funded/created <a href="http://www.caledunlap.com/2009/11/a-few-web-host-reviews/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>You may have noticed my tweets there on the left about web hosts. I recently experimented with a few different hosts and griped about one of them (WebFusion). First off, if anybody tells you to use <a href="http://10bestwebhost2009.com">http://10bestwebhost2009.com</a>, especially via Twitter, don’t bother, its spam and a total joke. This is a site that is written/funded/created by the hosts that just want to take your money. </p>
</p>
<p>Anyway, here I go (I’m starting with the ‘bad’ ones first)…</p>
<h4>1) <a href="http://www.fatcow.com" target="_blank">FatCow</a></h4>
<p>This company is alright if you don’t need a really fast website with tons of uptime. It would make a good personal web host, especially at the price, but I definitely don’t recommend it for business hosting. When I used them, they worked out good for a few months, then went to total crap. My database driven websites started having trouble connecting to the database back-ends and my sites were down what seemed like more than they were up. I attempted to get my remaining balance refunded but apparently there is something in their fine print that doesn’t allow this. </p>
<p><strong>Pros:</strong> Cheap (don’t expect a refund if you cancel). Probably good for a static site. They offer unlimited space and bandwidth which is nice. Customer support was knowledgeable as well. They also do some cross-business promotions with Google. Their control panel is pretty good too.</p>
<p><strong>Cons:</strong> Not good for business websites or ones that require database backends. Performance is terrible.</p>
<h4>2) <a href="http://www.webfusion.com/" target="_blank">WebFusion</a></h4>
<p>I purchased an account with WebFusion just to see what it was all about. They offer ASP.NET (Windows-based) and PHP (Linux-based) hosting on their lower-tier plans and even offer Ruby on their higher-tier plans. I went the Windows route because their Windows hosting was actually cheaper than my current Windows host so I wanted to try em out. <strong>Do NOT bother with these folks.</strong>Their customer service is terrible. I had a problem getting a database imported using their control panel, so I asked if/how I could do it with SQL Management Studio (they don’t give out the FQDN of their DB server). I’m STILL waiting for a response. And since they boast a “24/7/365” support all over their site, I figured I’d get a nice snappy response. No, I did not. Then I submitted another request to have my account canceled because they are obviously not helpful and I’m stuck until I get a response. I’m STILL waiting for a response for this one too. So they effectively took my payment, gave me a bucket, then left me out to dry. How nice.</p>
<p><strong>Update:</strong> They finally responded and promptly closed my account and refunded my money. It took several days for them to do that though. They they tried to get me to release my contact details over Twitter… lol. Pathetic.</p>
<p><strong>Pros:</strong> Their control panel is almost stupidly simple to use. I had trouble with it because I’m a power-user. If you’re a basic user, have at it. Their price is also very nice.</p>
<p><strong>Cons: </strong>They don’t know what customer service means and if you buy a Windows plan, expect to deal with the pains of not being able to use management studio—and their web interface for the database(s) sucks. I couldn’t even import a basic schema to it because it had problems with comments in the SQL. That&#8217;s pretty bad.</p>
<h4>3) <a href="http://www.netfirms.com/" target="_blank">NetFirms</a></h4>
<p>Netfirms is one of the larger hosts that I’ve worked with in the past. For the price, it isn’t bad. They’ve definitely got some cheap domains, even if you don’t buy a hosting plan from them. If you buy a domain from them, you get free hosting anyway. The hosting you get for free is VERY basic and will usually host a personal website just fine. That’s actually where I ran this one for a while (back when it was static content). I quickly realized how nasty their performance was when I put WordPress on their hosting space. I got a bunch of database timeouts and whatnot. Just all around not a very good place to stick anything mission critical. Otherwise not a bad host, especially for the price.</p>
<p><strong>Pros:</strong> Cheap, especially when buying a domain. Don’t have to pay a higher premium for your domain if you choose not to host with them. Even if you buy JUST a domain from them, you’ll get a little bit of hosting no matter what; but it isn’t very good hosting.</p>
<p><strong>Cons:</strong> Poor performance. That’s about all I can say about them. Their control panel isn’t bad though, for a custom written one.</p>
<p><strong>Now on to the good hosts…</strong></p>
<h4>4) <a href="http://www.hostdime.com/" target="_blank">HostDime</a></h4>
<p>These guys rock. The price is right, though still a bit higher than your bargain basement hosts. But these guys run on great hardware and don’t use crap control panels. Their staff is pretty knowledgeable as well. I’ve been back and forth with these guys but have never had a bad experience with them at all. I’ve been with them since around 2002 or so—though I am probably going to be canceling my current hosting with them soon. Not for any performance reason or anything, I just like hosting with a few more features (namely Ruby).</p>
<p><strong>Pros:</strong> Good price, awesome features, they use cPanel, fast hardware, almost always up and available, good customer support, get a lot of space, bandwidth, and databases, also has quite a few stock scripts that can be installed with a few simple clicks. Makes a good business host.</p>
<p><strong>Cons: </strong>No Ruby or Ruby on Rails support <img src='http://www.caledunlap.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Otherwise there are no cons.</p>
<h4>5) <a href="http://www.arvixe.com/" target="_blank">Arvixe</a></h4>
<p>These guys are pretty good too. The price is fair, the staff is knowledgeable, the performance is great, and I have yet to experience any pro-longed downtime (if any at all, I haven’t noticed yet). I’ve been using Arvixe to support my ASP.NET development on top of SQL Server 2008 since around June 2009. Their control panel is a .NET standard control panel for web hosts (can’t remember the name off the top of my head). They also have a Linux facet of hosting too that I haven’t experienced but if it is anything like their Windows side, it is probably pretty damn good.</p>
<p><strong>Pros:</strong> Decent price, plenty of features, unlimited space and bandiwdth, good performance, standard control panel, and they let you manage your database with SQL Server Management Studio!!!!!11oneoneone. Makes a good small business host.</p>
<p><strong>Cons:</strong> Haven’t really found anything worth listing. Maybe price, but you get what you pay for in the hosting business usually. If you want good stuff, you pay a little more than basement prices.</p>
<h4>6) <a href="http://www.site5.com" target="_blank">Site5</a></h4>
<p>I could spend the rest of my life with this host, unless they REALLY screw up. I’ve been with them since November 2009 and have no complaints at all. They’ll host practically anything that can run on Linux including Perl/CGI, PHP, Ruby (+Rails), and even SSH!!! The price is pretty good too and I have no quarrels about performance. I moved from HostDime to Site5 ONLY because of the Ruby and Rails hosting. Plus the SSH access to my account gives me a lot of control over what I can do with it. Their control panel (the non-Backstage one) doesn’t LOOK like cPanel, but it is definitely cPanel. It takes a little getting used to but it isn’t too hard if you’re a cPanel user.</p>
<p><strong>Pros:</strong> Fast, very smart and friendly staff, great performance, SSH access, Ruby hosting, they’ll host about anything under the sun, and the price isn’t too bad.</p>
<p><strong>Cons: </strong>None.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.caledunlap.com/2009/11/a-few-web-host-reviews/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A few handy Javascript Methods</title>
		<link>http://www.caledunlap.com/2009/11/a-few-handy-javascript-methods/</link>
		<comments>http://www.caledunlap.com/2009/11/a-few-handy-javascript-methods/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 17:30:24 +0000</pubDate>
		<dc:creator>Cale</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Development Journal]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://caledunlap.com/2009/11/a-few-handy-javascript-methods/</guid>
		<description><![CDATA[So I’ve been doing a LOT of Javascript programming in the last few days and I ran into a few limitations of the language or constructs within the language. For example, certain versions of IE do not support the Array.indexOf() method. Another problem I ran into is that the Javascript language does not contain a <a href="http://www.caledunlap.com/2009/11/a-few-handy-javascript-methods/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>So I’ve been doing a LOT of Javascript programming in the last few days and I ran into a few limitations of the language or constructs within the language. For example, certain versions of IE do not support the Array.indexOf() method. Another problem I ran into is that the Javascript language does not contain a method for performing deep copies on objects. So after some Googling I found a few ways around the aforementioned problems. The first one (indexOf) is as follows:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:26771b21-04fc-42a4-8226-2a6c06ce403e" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px; white-space: nowrap">Array.prototype.findObject = (<br /> &#160;&#160;&#160;&#160;!Array.indexOf ? <span style="color:#0000ff">function</span> (o) {<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">var</span> l = <span style="color:#0000ff">this</span>.length + 1;<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">while</span> (l&#8211;) {<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">if</span> (<span style="color:#0000ff">this</span>[l - 1] === o) <span style="color:#0000ff">return</span> l &#8211; 1;<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">return</span> -1;<br /> &#160;&#160;&#160;&#160;} : <span style="color:#0000ff">function</span> (o) { <span style="color:#0000ff">return</span> (<span style="color:#0000ff">this</span>.indexOf(o) !== -1); }<br /> );</div>
</p></div>
</p></div>
<p>The above code will add the ‘findObject’ method to your Array objects. Then you can use that instead of indexOf() and be guaranteed that it will work regardless if the browser supports indexOf or not.</p>
<p>The second one (deep copying) can be circumvented by creating a helper method which will perform the copy for you: </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5f811a2f-8dd1-4896-a377-da22dd65ef42" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; overflow: auto; padding: 2px 5px; white-space: nowrap"><span style="color:#0000ff">var</span> ObjectHandler = {<br /> &#160;&#160;&#160;&#160;<span style="color:#006400">//public method</span><br /> &#160;&#160;&#160;&#160;getCloneOfObject: <span style="color:#0000ff">function</span>(oldObject) {<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">var</span> tempClone = {};</p>
<p> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">if</span> (<span style="color:#0000ff">typeof</span>(oldObject) == <span style="color:#800000">&quot;object&quot;</span>)<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">for</span> (prop <span style="color:#0000ff">in</span> oldObject)<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#006400">// for array use private method getCloneOfArray</span><br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">if</span> ((<span style="color:#0000ff">typeof</span>(oldObject[prop]) == <span style="color:#800000">&quot;object&quot;</span>) &amp;&amp;<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(oldObject[prop]).__isArray)<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempClone[prop] = <span style="color:#0000ff">this</span>.getCloneOfArray(oldObject[prop]);<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#006400">// for object make recursive call to getCloneOfObject</span><br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">else</span> <span style="color:#0000ff">if</span> (<span style="color:#0000ff">typeof</span>(oldObject[prop]) == <span style="color:#800000">&quot;object&quot;</span>)<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempClone[prop] = <span style="color:#0000ff">this</span>.getCloneOfObject(oldObject[prop]);<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#006400">// normal (non-object type) members</span><br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">else</span><br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempClone[prop] = oldObject[prop];</p>
<p> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">return</span> tempClone;<br /> &#160;&#160;&#160;&#160;},</p>
<p> &#160;&#160;&#160;&#160;<span style="color:#006400">//private method (to copy array of objects) &#8211; getCloneOfObject will use this internally</span><br /> &#160;&#160;&#160;&#160;getCloneOfArray: <span style="color:#0000ff">function</span>(oldArray) {<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">var</span> tempClone = [];</p>
<p> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">for</span> (<span style="color:#0000ff">var</span> arrIndex = 0; arrIndex &lt;= oldArray.length; arrIndex++)<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">if</span> (<span style="color:#0000ff">typeof</span>(oldArray[arrIndex]) == <span style="color:#800000">&quot;object&quot;</span>)<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempClone.push(<span style="color:#0000ff">this</span>.getCloneOfObject(oldArray[arrIndex]));<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">else</span><br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tempClone.push(oldArray[arrIndex]);</p>
<p> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">return</span> tempClone;<br /> &#160;&#160;&#160;&#160;}<br /> };</div>
</p></div>
</p></div>
</p>
</p>
<p>Just thought I’d share those with everyone. Credit for the majority of the deep copy code goes to <a href="http://blog.pramatiservices.com/deep-copy-in-javascript/">http://blog.pramatiservices.com/deep-copy-in-javascript/</a> and credit for the findObject code goes to someone other than me, but I didn’t bookmark the link so I can’t find it again. Sorry <img src='http://www.caledunlap.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.caledunlap.com/2009/11/a-few-handy-javascript-methods/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FIX: When you undock some windows or change the window layout in the Visual Studio 2008 Service Pack 1 IDE, the IDE crashes</title>
		<link>http://www.caledunlap.com/2009/10/fix-when-you-undock-some-windows-or-change-the-window-layout-in-the-visual-studio-2008-service-pack-1-ide-the-ide-crashes/</link>
		<comments>http://www.caledunlap.com/2009/10/fix-when-you-undock-some-windows-or-change-the-window-layout-in-the-visual-studio-2008-service-pack-1-ide-the-ide-crashes/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 22:16:11 +0000</pubDate>
		<dc:creator>Cale</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Development Journal]]></category>

		<guid isPermaLink="false">http://caledunlap.com/?p=545</guid>
		<description><![CDATA[FIX: When you undock some windows or change the window layout in the Visual Studio 2008 Service Pack 1 IDE, the IDE crashes.
I just thought I re-post this incase anybody stumbled upon my blog before they landed on the Microsoft page that had the fix for IDE crashes. I experienced this only one time when <a href="http://www.caledunlap.com/2009/10/fix-when-you-undock-some-windows-or-change-the-window-layout-in-the-visual-studio-2008-service-pack-1-ide-the-ide-crashes/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://support.microsoft.com/kb/960075">FIX: When you undock some windows or change the window layout in the Visual Studio 2008 Service Pack 1 IDE, the IDE crashes</a>.</p>
<p>I just thought I re-post this incase anybody stumbled upon my blog before they landed on the Microsoft page that had the fix for IDE crashes. I experienced this only one time when I was moving/undocking windows.</p>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.caledunlap.com/2009/10/fix-when-you-undock-some-windows-or-change-the-window-layout-in-the-visual-studio-2008-service-pack-1-ide-the-ide-crashes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Helpful Extension Methods to the System.String Class in C#</title>
		<link>http://www.caledunlap.com/2009/10/helpful-extension-methods-to-the-system-string-class-in-c/</link>
		<comments>http://www.caledunlap.com/2009/10/helpful-extension-methods-to-the-system-string-class-in-c/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 10:20:03 +0000</pubDate>
		<dc:creator>Cale</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[extension methods]]></category>

		<guid isPermaLink="false">http://caledunlap.com/blog/2009/10/helpful-extension-methods-to-the-system-string-class-in-c/</guid>
		<description><![CDATA[I&#8217;ve been doing a decent amount of string manipulation lately and decided to combine that with my newfound knowledge about .NET extension methods. If you don&#8217;t know what extension methods are, they&#8217;re basically a way to extend a class without needing the source code to that particular class&#8211;hence why I can extend the System.String type <a href="http://www.caledunlap.com/2009/10/helpful-extension-methods-to-the-system-string-class-in-c/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing a decent amount of string manipulation lately and decided to combine that with my newfound knowledge about .NET extension methods. If you don&#8217;t know what extension methods are, they&#8217;re basically a way to extend a class without needing the source code to that particular class&#8211;hence why I can extend the System.String type by simply writing another class. The key is with the parameters of your methods. Here&#8217;s the basic gist of it:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:050e6608-4d1a-4fda-8b59-b3cc677f09bd" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px; white-space: nowrap"><span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> {Your Return Type} {Your Method Name} ( <span style="color:#0000ff">this</span> {Type/Class you want to extend} {Parameter Name} )<br /> {<br /> &#160;&#160;&#160;&#160;&#160;<span style="color:#008000">/* Your method body */</span><br /> }</div>
</p></div>
</p></div>
<pre class="code">&nbsp;</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>So the key here is the &#8220;this&#8221; keyword before the type identifier in the parameter list of the method.</p>
<p>I&#8217;ve wrapped all of my extension methods into a single class simply called &#8220;ExtensionMethods&#8221; and added it to my project. The namespace doesn&#8217;t matter, so I haven&#8217;t included it in this example. You can either use the global namespace (though I don&#8217;t recommend it) or just create your own namespace called whatever you want.</p>
<p>Without further adue, here&#8217;s the code:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0271f875-eb62-41fe-a74b-7958d98dab65" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px; white-space: nowrap"><span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">ExtensionMethods</span><br />
{<br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;summary&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> Includes the trailing path delimiter.</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;/summary&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;param name=&quot;InputPath&quot;&gt;</span><span style="color:#008000">The input path.</span><span style="color:#808080">&lt;/param&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;returns&gt;</span><span style="color:#008000">The input path including a trailing path delimiter if it doesn&#39;t have one</span><span style="color:#808080">&lt;/returns&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">string</span> IncludeTrailingPathDelimiter(<span style="color:#0000ff">this</span> <span style="color:#0000ff">string</span> InputPath)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">if</span> (!InputPath.EndsWith(Path.DirectorySeparatorChar.ToString()) &amp;&amp;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;!InputPath.EndsWith(Path.AltDirectorySeparatorChar.ToString()))<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">return</span> InputPath + Path.DirectorySeparatorChar;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">return</span> InputPath;<br />
&#160;&#160;&#160;&#160;}</p>
<p>&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;summary&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> Asserts the trailing path delimiter.</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;/summary&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;param name=&quot;InputPath&quot;&gt;</span><span style="color:#008000">The input path.</span><span style="color:#808080">&lt;/param&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">void</span> AssertTrailingPathDelimiter(<span style="color:#0000ff">this</span> <span style="color:#0000ff">string</span> InputPath)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InputPath = InputPath.IncludeTrailingPathDelimiter();<br />
&#160;&#160;&#160;&#160;}</p>
<p>&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;summary&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> Trims the extension from a file name.</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;/summary&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;param name=&quot;InputFile&quot;&gt;</span><span style="color:#008000">The input file.</span><span style="color:#808080">&lt;/param&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">void</span> TrimExtension(<span style="color:#0000ff">this</span> <span style="color:#0000ff">string</span> InputFile)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">int</span> start, count;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">if</span> ((start = InputFile.LastIndexOf(<span style="color:#a31515">&quot;.&quot;</span>)) &gt; 0)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;count = InputFile.Length &#8211; start;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;InputFile = InputFile.Remove(start, count);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;}</p>
<p>&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;summary&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> Gets a file extension of a filename.</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;/summary&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;param name=&quot;InputFile&quot;&gt;</span><span style="color:#008000">The input file.</span><span style="color:#808080">&lt;/param&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#808080">///</span><span style="color:#008000"> </span><span style="color:#808080">&lt;returns&gt;</span><span style="color:#008000">The file extension</span><span style="color:#808080">&lt;/returns&gt;</span><br />
&#160;&#160;&#160;&#160;<span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">string</span> FileExtension(<span style="color:#0000ff">this</span> <span style="color:#0000ff">string</span> InputFile)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">int</span> start, count;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">if</span> ((start = InputFile.LastIndexOf(<span style="color:#a31515">&quot;.&quot;</span>)) &gt; 0)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;count = InputFile.Length &#8211; start;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">return</span> InputFile.Substring(start, count);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="color:#0000ff">return</span> <span style="color:#0000ff">string</span>.Empty;<br />
&#160;&#160;&#160;&#160;}</p>
<p>}</p></div>
</div>
</div>
<pre class="code">&nbsp;</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>Now whenever you use a System.String object, you&#8217;ll be able to simply call these methods as if they were part of the System.String class. IE: string MyFileExtension = MyFilePath.FileExtension();</p>
<p>I&#8217;m sure I&#8217;ll add on to this as I go along.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.caledunlap.com/2009/10/helpful-extension-methods-to-the-system-string-class-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Now I really hate AT&amp;T</title>
		<link>http://www.caledunlap.com/2009/10/now-i-really-hate-att/</link>
		<comments>http://www.caledunlap.com/2009/10/now-i-really-hate-att/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 08:47:40 +0000</pubDate>
		<dc:creator>Cale</dc:creator>
				<category><![CDATA[Rants]]></category>
		<category><![CDATA[att]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://caledunlap.com/blog/?p=373</guid>
		<description><![CDATA[So, as a continuation of my last post about how much I hate AT&#38;T&#8230; the line tech finally come on site when they said he would. He apparently found a bad ring ground at the neighborhood&#8217;s equipment. He replaced it and my ringtone is now nice and clear and I consistently test at 6Mbps&#8230;. yay.
Well <a href="http://www.caledunlap.com/2009/10/now-i-really-hate-att/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>So, as a continuation of my last post about how much I hate AT&amp;T&#8230; the line tech finally come on site when they said he would. He apparently found a bad ring ground at the neighborhood&#8217;s equipment. He replaced it and my ringtone is now nice and clear and I consistently test at 6Mbps&#8230;. yay.</p>
<p>Well that lasted for a month or so. Now I&#8217;m down again. I replaced my modem entirely after the last occurrence of problems so that I could be better &#8220;supported&#8221;&#8230;. yes I put supported in quotes, because AT&amp;T&#8217;s &#8220;support&#8221; is a joke to begin with. Now that I&#8217;m down again, the modem is giving some pretty good indicators as to why: &#8220;Could not find an ATM circuit.&#8221; Cute.</p>
<p>I call in and an automated message tells me that they&#8217;re &#8220;working to resolve a network outage in my area. The estimated resolution time is 12am.&#8221; I called at 3:30am. So, 3 1/2 hours have passed since their estimated resolution time. I know that this is an &#8220;estimate&#8221;, but seriously&#8230; 3 1/2 hours off? Some estimate, they might as well have simply said &#8220;We&#8217;ll be down for a while. In the mean time, play boardgames and jerk it to Playboy like the good ol&#8217; days.&#8221;</p>
<p>I pressed zero and got to a support tech&#8230; we&#8217;ll call him &#8220;Albert&#8221; (real name was probably something closer to Habeeb Mohammednirishnikahnapali). I told him that I&#8217;m aware there&#8217;s a network outage, but the estimated time was midnight, it is now 3:30&#8230;. is my issue related to something else? He went through the motions like a good little AT&amp;T drone&#8230;. ran the line test and attempted to get more information about the outage for me. He came back with the results of the line test: Line is good, but my area is still affected by an outage. And unfortunately the NEW estimated resolution time is &#8220;Monday.&#8221;</p>
<p>MONDAY!?!?! What the hell! I&#8217;ve been down since Thursday! I guess it will be pretty difficult to do things like pay my bills, turn in my school work, and perform my job functions. This is terrific. I should sue for lost wages or something&#8230; if any lawyers out there are planning to issue a class action lawsuit against AT&amp;T, count me in. I don&#8217;t care what its for, count me in. I want to hit AT&amp;T where it hurts. They only thing they value is money and I&#8217;d love to get mine back.</p>
<p>Luckily for me, I have T-Mobile cell phone service (because I dropped Cingular before the AT&amp;T buy-out). I also have a Google Android phone with a tiny app called PdaNet. I&#8217;m forced to use the 2G internet connection that I have through my cell phone in order to do any online stuff. At least I have something, but I still can&#8217;t do any work-related stuff over this connection. I need a broadband connection for that.</p>
<p>Anyway, I&#8217;ll be calling AT&amp;T and asking for a credit. I will only be paying AT MOST 87% of my bill if I am indeed down until Monday. I&#8217;m sick of paying for a full month of service, when I&#8217;m actually only getting about 20 days or so. This is a great way to start off the month of October&#8230; 4 day outage without a single notice to their customers.</p>
<p>Please somebody save me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.caledunlap.com/2009/10/now-i-really-hate-att/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wpToGo is freakin sweet!</title>
		<link>http://www.caledunlap.com/2009/08/wptogo-is-freakin-sweet/</link>
		<comments>http://www.caledunlap.com/2009/08/wptogo-is-freakin-sweet/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 17:11:21 +0000</pubDate>
		<dc:creator>Cale</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://caledunlap.com/blog/2009/08/wptogo-is-freakin-sweet/</guid>
		<description><![CDATA[If you feel compelled to blog from your Android-based phone, take a look at wpToGo grom the Android market place. It is a free app that uses xml-rpc to post directly to Word Press blogs that have it enabled. It is pretty neat, I&#8217;m using it right now.
]]></description>
			<content:encoded><![CDATA[<p>If you feel compelled to blog from your Android-based phone, take a look at wpToGo grom the Android market place. It is a free app that uses xml-rpc to post directly to Word Press blogs that have it enabled. It is pretty neat, I&#8217;m using it right now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.caledunlap.com/2009/08/wptogo-is-freakin-sweet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
