<?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"
	>

<channel>
	<title>acatalept/blog</title>
	<atom:link href="http://acatalept.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://acatalept.com/blog</link>
	<description></description>
	<pubDate>Fri, 06 May 2011 03:48:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Simple Security: Viruses and Malware</title>
		<link>http://acatalept.com/blog/2011/05/05/simple-security-viruses-and-malware/</link>
		<comments>http://acatalept.com/blog/2011/05/05/simple-security-viruses-and-malware/#comments</comments>
		<pubDate>Fri, 06 May 2011 03:19:57 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
		
		<category><![CDATA[Security]]></category>

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

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

		<guid isPermaLink="false">http://acatalept.com/blog/?p=99</guid>
		<description><![CDATA[Malware, viruses, trojans, rootkits, worms (what's the difference: http://en.wikipedia.org/wiki/Malware)... once upon a time they would simply wipe out your hard drive.  Now there's "scareware" which extorts your money using fake virus scanners (telling you you're infected when you're not); or even worse, you can be infected and not even know it (your real virus [...]]]></description>
			<content:encoded><![CDATA[<p>Malware, viruses, trojans, rootkits, worms (what's the difference: <a href="http://en.wikipedia.org/wiki/Malware" target="_blank">http://en.wikipedia.org/wiki/Malware</a>)... once upon a time they would simply wipe out your hard drive.  Now there's "scareware" which extorts your money using fake virus scanners (telling you you're infected when you're not); or even worse, you can be infected and not even know it (your real virus scanner may tell you you're "clean"), meanwhile a rootkit may be hiding the presence of malware which could be watching your internet activity, stealing your passwords and financial information, and even using your computer as part of a botnet to perpetrate other crimes.</p>
<p>Here's some advice on avoiding these malicious programs, and what to do if you suspect you're infected.<br />
<span id="more-99"></span></p>
<div class="toc">
<span class="smallCaps">Contents</span>
<ol>
<li><a href="#install-updates">Apply All Patches And Updates</a></li>
<li><a href="#bad-software">Avoid Fake/Malicious Software</a></li>
<li><a href="#good-software">Install Good Antivirus Software</a></li>
<li><a href="#infection-removal">What To Do If You Suspect You're Infected</a></li>
</ol>
</div>
<h1><a name="install-updates"></a><strong>1.</strong> Apply All Patches And Updates</h1>
<p>It's easy to ignore the prompts ("Updates are available - Click here to install").  But <strong>these updates are created in direct response to the discovery of security holes and bugs that can be exploited by malware creators to infect your system</strong>.  Even Adobe Reader and Flash Player need to be updated regularly, as they are common conduits for malicious software to enter your computer.</p>
<p>Usually running the updates will take less than a minute of your time, and can often be run in the background while you continue to work (although it may slow your system down).</p>
<blockquote><h4>Windows Service Packs</h4>
<p>Don't neglect installing Windows Service Packs, which are large bundles of patches, many of which you can't receive otherwise.  However, these service packs are hundreds of megabytes, and can take hours to download and install.  Plan to start them at the end of your workday or before going to bed.</p>
<p>Don't delay installing service packs based on anecdotal evidence of people experiencing issues after installing a given service pack - these issues, while they can occur, are incredibly rare.  And if you do experience issues, you can usually uninstall service packs (or any other Windows update) until a fix is issued.
</p></blockquote>
<p>Additionally, ensure you are using the latest version of your web browser, since older versions (especially Internet Explorer) might not be receiving the latest security updates.</p>
<blockquote><h4>Get The Latest Version Of Your Web Browser</h4>
<ul>
<li><a href="http://windows.microsoft.com/en-US/internet-explorer/products/ie/home" target="_blank">Internet Explorer</a></li>
<li><a href="http://www.mozilla.com/en-US/firefox/new/" target="_blank">Mozilla Firefox</a></li>
<li><a href="http://www.google.com/chrome/intl/en/make/download.html" target="_blank">Google Chrome</a></li>
<li><a href="http://www.apple.com/safari/" target="_blank">Apple Safari</a></li>
<li><a href="http://www.opera.com/browser/download/" target="_blank">Opera</a></li>
</ul>
</blockquote>
<h1><a name="bad-software"></a><strong>2.</strong> Avoid Fake/Malicious Software</h1>
<p>You have probably had the experience of searching the internet, and suddenly being confronted with <strong>a scary-looking popup warning you that you're infected, or that you're computer is running slow</strong>, prompting you to click to clean up the infection or optimize your registry.  These often look like a legitimate program running on your computer, but they are really just a script running on the webpage you're viewing.  Be familiar with your installed software, and know what to look for (color schemes, logos, etc. that identify the known program) - if it's not a program you recognize, don't trust what it says.</p>
<p><strong>At this point, you probably are NOT infected</strong> - most modern web browsers are secure enough to require you to click the OK button in the popup, or otherwise agree to install the malicious program, before it can do any harm.  If in doubt, <strong>close your web browser</strong> and see if the warning disappears.</p>
<blockquote><h4>If you are unable to close the browser</h4>
<p>Hit Ctrl-Alt-Del (hold down the Ctrl and Alt keys on your keyboard and press the Delete key), then click "Task Manager" - then in the Applications tab, find your web browser in the list (look for the matching icon: a blue E for Internet Explorer, an orange and blue ball for Firefox, etc.) and click "End Task".
</p></blockquote>
<p>Once these fake programs (usually with a generic name like "Vista Antivirus 2011") get onto your system, not only will they make you believe you are "infected" with a long list of malware and try to trick you into paying for them to "clean" the nonexistent malware, but they can often be trojans acting to facilitate infection by worse malware, or may even be bundled with other real malware (which of course isn't displayed in their list of "infections").  Be especially wary if you do accidentally install one of these rogue antivirus programs, as they can look and act very similar to the windows and popups that are a part of the Windows operating system, fooling you into thinking they're genuine.</p>
<p>Most of the better proactive antivirus programs (such as the free Prevx SafeOnline, see below) are pretty effective at protecting you from this sort of infection, but education is the best prevention - know what to look for, and stop your browser dead in its tracks if you suspect something is wrong.</p>
<h1><a name="good-software"></a><strong>3.</strong> Install Good Antivirus Software</h1>
<h2>(or preferably several that play nicely together)</h2>
<p>"Good" and "several" are both equally important here.  There is a huge assortment of software advertised as "antivirus" or "antimalware" or even comprehensive "security suites" - many of which are quite effective, but all of which have different strengths and weaknesses.  There is NO one silver bullet that offers complete protection.  And chances are that the recognizable names with big advertising budgets (such as Norton and McAfee) will offer less protection, and slow down your system more, than some of the lesser-known programs.  I suspect there is a reason why they pay Dell, HP, and other computer manufacturers to include free trial versions on new computers - once you have it installed, chances are you'll pay for a renewal and be a customer for life.</p>
<p>(For clarity's sake, I'll refer to all these types of programs as the familiar "antivirus" even though the playing field covers significantly more than simple viruses these days.)</p>
<p>I recommend using more than one program (a multi-pronged approach) so that they may overlap each other's weak areas.  Not all programs of this type play nicely with each other: sometimes they may flag each other as malware, or slow down your system significantly more than either one running alone.  This has been less of a problem in the past few years as companies realize people often need to use more than one antivirus program at the same time, but it's something to be aware of when installing multiple programs.</p>
<p>First, I recommend installing one of the best (and free!) on-demand scanning and cleaning tools:</p>
<blockquote><h4>Malwarebytes Anti-Malware <span class="smallCaps">(Free)</span></h4>
<p><span class="smallCaps"><a href="http://www.malwarebytes.org/" target="_blank">Website</a> - <a href="http://download.cnet.com/3001-8022_4-10804572.html" target="_blank">Download from CNET</a></span></p>
<p>The free version doesn't stay active in memory, but only runs when you want it to.  You can run a quick system scan (just critical system areas, usually takes 10-20 minutes), a full system scan (virtually every file on the computer, usually takes more than an hour), or you can right-click any file or folder in Windows Explorer to scan just that item.  You can also pay a one-time fee of $25 for lifetime usage of the "Pro" version on all your computers, which runs in the background all the time to try to prevent infections, or at least catch them before they do much damage.</p></blockquote>
<p>Next, install the free Prevx SafeOnline to help protect your information while using the internet:</p>
<blockquote><h4>Prevx SafeOnline <span class="smallCaps">(Free)</span></h4>
<p><span class="smallCaps"><a href="http://www.prevx.com/safebook.asp" target="_blank">Website</a></span></p>
<p>This free promotional version of Prevx SafeOnline runs in the background, integrating with your web browsers to protect you from malicious or infected websites, and protecting your confidential data from being intercepted by keyloggers or other malware that may reside on your computer.  It will also notify you if it detects malware on your computer, and although the free version won't clean up infections, this alerts you to run an on-demand scan and clean up with Malwarebytes Anti-Malware.
</p></blockquote>
<p>If you have a relatively recent computer, I highly recommend installing a more comprehensive antivirus "suite" that will quietly run in the background and offer additional protection beyond the two above programs.  These more general-purpose programs may slow your system down slightly versus having no antivirus installed, but the impact should be minimal on a newer computer, and should be worth the tradeoff to constantly monitor your system and protect you from infections as soon as (or even before) they occur.</p>
<p>An excellent free option is Avast! Free Antivirus (despite the silly name):</p>
<blockquote><h4>Avast! Free Antivirus <span class="smallCaps">(Free)</span></h4>
<p><span class="smallCaps"><a href="http://www.avast.com/free-antivirus-download" target="_blank">Website</a> - <a href="http://download.cnet.com/3000-2239_4-10019223.html" target="_blank">Download from CNET</a></span></p>
<p>Avast has long been one of the most highly regarded (free or otherwise) and best scoring antivirus products in the industry.  It and <a href="http://www.avira.com/en/avira-free-antivirus" target="_blank">Avira</a> are roughly neck-and-neck at the top of the free antivirus heap, though Avira tends to be a little more aggressive in "upselling" you to their paid product, and only <strong>Avast has the ability to completely hide all nags and popups by enabling "Silent/Gaming Mode"</strong>.</p>
<p>Avast goes beyond the free versions of Malwarebytes and Prevx by always running quietly in the background, scanning your system (including any files you open, programs you run, and websites you visit), catching and cleaning infections as needed.
</p></blockquote>
<p>If you don't mind spending a little money, like to have toll-free phone support, and/or want the most comprehensive package, one of the best non-free antivirus "suites" is Kaspersky:</p>
<blockquote><h4>Kaspersky Antivirus <span class="smallCaps">($40+)</span></h4>
<p><span class="smallCaps"><a href="http://usa.kaspersky.com/products-services/home-computer-security/anti-virus" target="_blank">Website</a> - <a href="http://usa.kaspersky.com/downloads/free-home-trials/anti-virus">Free Trial</a></span></p>
<p>Kaspersky has long been one of the best products in the antivirus realm.  They don't have the massive marketing push of Norton or McAfee, but it's (arguably) a better product: minimal system slowdown, and some of the best detection and cleaning rates in the industry.</p>
<p>See the above link for the differences between their three products (Antivirus, Internet Security, and PURE Total Security).  I'd argue that the additional upgrades above the basic Antivirus may cause more confusion than they're worth, but I'd recommend their <a href="http://usa.kaspersky.com/downloads/free-home-trials/anti-virus">30-day free trial</a> to ensure you like the program and that it doesn't interfere with your system.  If you do decide to purchase, <strong>consider searching for promotional discounts - they come around quite often, and can knock off more than half the cost</strong>.  The most recent round of Newegg.com rebates were $50 off - see <a href="http://slickdeals.net/sdsearch.php?forumchoice%5B%5D=9&#038;search=kaspersky&#038;mode=forum&#038;firstpost=1" target="_blank">these recent posts at SlickDeals</a>.</p>
<p>Note: <strong>to prevent any popups or annoying messages and reduce the performance impact of Kaspersky, be sure to turn on "Gamer Mode"</strong> (even if you don't play games).  This tells Kaspersky to be completely non-intrusive and use as little of your system's resources as possible, while still providing maximum protection.
</p></blockquote>
<h1><a name="infection-removal"></a><strong>4.</strong> What To Do If You Suspect You're Infected</h1>
<p>A (paranoid) word of warning: <strong>all antivirus programs completely miss a small percentage of malware.</strong>  Even though your antivirus program tells you you're clean and protected, it's still possible you may have an active infection, especially if you experience unusual system slowness, buggy behavior, or crashes.  Deeper layers such as rootkits may remain undetected and active even after cleaning if any pieces are left behind.  And some of the worst malware currently out there (especially rootkits such as <a href="http://www.google.com/search?q=tdl4" target="_blank">TDSS/TDL4</a>) require specialized tools to detect and remove completely, and may keep coming back if simply left to your everyday antivirus program to clean up.</p>
<p>1. First off, <strong>stop doing anything on the suspect computer that may compromise your confidential data</strong>: don't shop online, don't do any banking online, don't use any sensitive passwords.  There's a possibility that any of this information could be intercepted and used without your knowledge.  If possible, disconnect your internet connection entirely (unplug the cable or disable the wifi connection) to prevent any stolen data from being transmitted.</p>
<p>2. Next, <strong>run an in-depth scan with Malwarebytes Anti-Malware</strong>.  First click the "Update" tab and make sure you have the latest definitions, then go back to the "Scanner" tab, select the "Perform Full Scan" option, then click the "Scan" button.  This may take more than an hour to perform, but it will ensure no stone is left unturned.  When the scan finishes, click "Show Results" and <strong>make sure there is a check next to all items in the list</strong>, then click "Remove Selected" to clean up any found malware.  If it asks you to reboot to perform the clean up, do so immediately.</p>
<p>3. After cleanup, if you still see obvious signs of infection, you may need to resort to specialized tools and expert guidance.  The following websites are an excellent place to find helpful malware removal experts who will carefully walk you through diagnosing and cleaning your specific infection.  It will take some time and patience to step through the process, but <strong>remember these experts are helping you for free</strong> (no strings attached) on their own free time:</p>
<blockquote><h4>Malware Removal Help Forums <span class="smallCaps">(Free)</span><br /><span class="light">Personal Assistance From A Malware Removal Expert</span></h4>
<ul>
<li><a href="http://www.bleepingcomputer.com/forums/topic34773.html" target="_blank">Bleeping Computer</a></li>
<li><a href="http://forums.malwarebytes.org/index.php?showtopic=9573" target="_blank">Malwarebytes <span class="smallCaps">Community Forum</span></a></li>
<li><a href="http://forums.techguy.org/virus-other-malware-removal/943214-everyone-must-read-before-posting.html" target="_blank">Tech Support Guy</a></li>
<li><a href="http://www.techsupportforum.com/forums/f50/new-instructions-read-this-before-posting-for-malware-removal-help-305963.html" target="_blank">Tech Support Forum</a></li>
</ul>
<p>All of these sites follow a similar protocol: follow their instructions to use a special scanning tool on your system, post the results to the forum, and wait for their assessment and further instructions.  You may go back and forth a number of times over the course of several days before the problem is tracked down and eliminated, but <strong>if you are patient and follow their instructions to the letter, you will almost definitely get your system cleaned</strong> and working again (and learn a lot in the process).</p>
<p>Note: <strong>beware of the ads on these sites</strong> - the people who run the forums show Google Ads to help pay the bills, but many of the ads are for potentially useless or even malicious software that's targeted at people in your situation (malware problems, system performance problems, etc.).  Don't let that distract you from the quality help you'll receive from the community members on the forums themselves.
</p></blockquote>
<p><!--<br />
<blockquote>
<h4>BleepingComputer.com Forums</h4>
<p><span class="smallCaps"><a href="http://www.bleepingcomputer.com/forums/topic34773.html" target="_blank">Website</a></span></p>
<h4>Malwarebytes.org Forums</h4>
<p><span class="smallCaps"><a href="http://forums.malwarebytes.org/index.php?showtopic=9573" target="_blank">Website</a></span></p>
<h4>TechSupportForum.com Forums</h4>
<p><span class="smallCaps"><a href="http://www.techsupportforum.com/forums/f50/new-instructions-read-this-before-posting-for-malware-removal-help-305963.html" target="_blank">Website</a></span></p>
<h4>TechSupportGuy.org Forums</h4>
<p><span class="smallCaps"><a href="http://forums.techguy.org/virus-other-malware-removal/943214-everyone-must-read-before-posting.html" target="_blank">Website</a></span></p>
<p>All of these sites follow a similar protocol: follow their instructions to use a special scanning tool on your system, post the results to the forum, and wait for their assessment and further instructions.  You may go back and forth a number of times over the course of several days before the problem is tracked down and eliminated, but <strong>if you are patient and follow their instructions to the letter, you will almost definitely get your system cleaned</strong> and working again (and learn a lot in the process).
</p></blockquote>
<p>--></p>
]]></content:encoded>
			<wfw:commentRss>http://acatalept.com/blog/2011/05/05/simple-security-viruses-and-malware/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Private Browsing Mode selector in Firefox&#8217;s userChrome.css</title>
		<link>http://acatalept.com/blog/2010/10/27/private-browsing-mode-selector-in-firefoxs-userchromecss/</link>
		<comments>http://acatalept.com/blog/2010/10/27/private-browsing-mode-selector-in-firefoxs-userchromecss/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 04:07:29 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
		
		<category><![CDATA[Fixes / Hacks / Tweaks]]></category>

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

		<guid isPermaLink="false">http://acatalept.com/blog/?p=73</guid>
		<description><![CDATA[To modify Firefox 3 &#038; 4's window UI chrome using userChrome.css, based on whether the window is in Private Browsing Mode, just prepend [browsingmode=private] before a given css selector.
For example, to change the color of Firefox 4's appmenu button (the orange button at the top left of the window that reveals the newly arranged application [...]]]></description>
			<content:encoded><![CDATA[<p>To modify Firefox 3 &#038; 4's window UI chrome using <code>userChrome.css</code>, based on whether the window is in Private Browsing Mode, just prepend <code>[browsingmode=private]</code> before a given css selector.</p>
<p>For example, to change the color of Firefox 4's appmenu button (the orange button at the top left of the window that reveals the newly arranged application menu), add the following to your <code>userChrome.css</code> file:</p>
<pre>/* this first line is required for userChrome.css to work */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

/* example of changing the appmenu button color from
   the default orange to a transparent black */

#appmenu-button {
  background-color: rgba(0,0,0,0.2) !important;
}

/* here we prepend [browsingmode=private] to the above
   selector to change the appmenu button color to
   transparent red only when in Private Browsing Mode */

[browsingmode=private] #appmenu-button {
  background-color: rgba(255,0,0,0.5) !important;
}</pre>
<p>FYI, this file is typically located at:</p>
<pre>C:\Users\{yourname}\AppData\Roaming\Mozilla\Firefox\Profiles\{random}.default\chrome\userChrome.css</pre>
<p>If the file doesn't already exist, you should see an existing <code>userChrome-example.css</code> in that same location which you can use as a basis for creating your own new file.</p>
]]></content:encoded>
			<wfw:commentRss>http://acatalept.com/blog/2010/10/27/private-browsing-mode-selector-in-firefoxs-userchromecss/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Compare objects recursively in Javascript</title>
		<link>http://acatalept.com/blog/2009/10/09/compare-objects-recursively-in-javascript/</link>
		<comments>http://acatalept.com/blog/2009/10/09/compare-objects-recursively-in-javascript/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 17:23:52 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://acatalept.com/blog/?p=60</guid>
		<description><![CDATA[This is a need I've run into more than once, yet there doesn't seem to be an elegant off-the-shelf solution that can handle a wide range of use cases, including simple (flat) objects, linear (one-dimensional) arrays, arrays of objects, and complex objects (objects within objects).
So here's a [relatively] straightforward recursive object comparison function that features [...]]]></description>
			<content:encoded><![CDATA[<p>This is a need I've run into more than once, yet there doesn't seem to be an elegant off-the-shelf solution that can handle a wide range of use cases, including simple (flat) objects, linear (one-dimensional) arrays, arrays of objects, and complex objects (objects within objects).</p>
<p>So here's a [relatively] straightforward recursive object comparison function that features <strong>optional loose type comparison</strong> (strict by default) for those times when you're working with data from different sources, (e.g., which give you quoted numbers (<code>"3" == 3</code>) or empty strings (<code>"" == null == undefined == 0 == "0"</code>)), but your task at hand doesn't distinguish among these semantic differences.<br />
<span id="more-60"></span></p>
<p>Note that performance on huge objects has not been tested, but should be acceptable.  Of course, there's likely room for improvement ;)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
</pre></td><td class="code"><pre class="javascript"><span style="color: #ccc">// compare two objects recursively</span>
<span style="color: #ccc">// doesn't rely on specifics of object creation or property order</span>
<span style="color: #ccc">// performs strict type comparison on values by default, unless loose is set to TRUE</span>
&nbsp;
<span style="color: #ccc">// USAGE</span>
&nbsp;
<span style="color: #ccc">// obj1 = {'key1': 1, 'key2': 2};</span>
<span style="color: #ccc">// obj2 = {'key2': 2, 'key1': 1};</span>
<span style="color: #ccc">// objectCompare(obj1, obj2); // returns true</span>
&nbsp;
<span style="color: #ccc">// obj1 = {'a': 0, 'b': ''};</span>
<span style="color: #ccc">// obj2 = {'b': null}; // don't even declare an 'a' property, so it will be undefined - note that number of properties is ignored when doing loose comparison</span>
<span style="color: #ccc">// objectCompare(obj1, obj2, true); // returns true... for 'a', 0 == undefined, and for 'b', '' == null</span>
&nbsp;
<span style="color: #ccc">// will even compare arrays:</span>
<span style="color: #ccc">// obj1 = [0, 1];</span>
<span style="color: #ccc">// obj2 = [null, '1'];</span>
<span style="color: #ccc">// objectCompare(obj1, obj2, true); // returns true</span>
&nbsp;
<span style="color: #ccc">// or even arrays of objects:</span>
<span style="color: #ccc">// obj1 = [{'a': 1}, {'b': '0'}];</span>
<span style="color: #ccc">// obj2 = [{'a': '1'}, {'b': null}];</span>
<span style="color: #ccc">// objectCompare(obj1, obj2, true); // returns true</span>
&nbsp;
<span style="color: #ccc">// note that arrays are compared by index, so out-of-sequence arrays should be sorted before comparing</span>
&nbsp;
<span style="color: #000;">function</span> objectCompare<span style="color: #666;">&#40;</span>obj1<span style="color: #666;">,</span> obj2<span style="color: #666;">,</span> loose<span style="color: #666;">&#41;</span> <span style="color: #666;">&#123;</span>
&nbsp;
  <span style="color: #ccc">// if loose is NOT TRUE, first do a quick comparison of lengths</span>
  <span style="color: #ccc">// quick &amp; dirty attempt to avoid comparing all property values on large or complex objects</span>
  <span style="color: #000;">var</span> count1 <span style="color: #666;">=</span> <span style="color: #B4C24B;">0</span><span style="color: #666;">,</span> count2 <span style="color: #666;">=</span> <span style="color: #B4C24B;">0</span><span style="color: #666;">;</span>
  <span style="color: #000;">if</span> <span style="color: #666;">&#40;</span><span style="color: #666;">!</span>loose<span style="color: #666;">&#41;</span><span style="color: #666;">&#123;</span>
    <span style="color: #000;">for</span> <span style="color: #666;">&#40;</span>i <span style="color: #000;">in</span> obj1<span style="color: #666;">&#41;</span><span style="color: #666;">&#123;</span>
      count1<span style="color: #666;">++;</span>
    <span style="color: #666;">&#125;</span>
    <span style="color: #000;">for</span> <span style="color: #666;">&#40;</span>i <span style="color: #000;">in</span> obj2<span style="color: #666;">&#41;</span><span style="color: #666;">&#123;</span>
      count2<span style="color: #666;">++;</span>
    <span style="color: #666;">&#125;</span>
  <span style="color: #666;">&#125;</span>
&nbsp;
  <span style="color: #000;">if</span> <span style="color: #666;">&#40;</span>count1 <span style="color: #666;">!=</span> count2<span style="color: #666;">&#41;</span><span style="color: #666;">&#123;</span> <span style="color: #ccc">// lengths are different, so no need to compare values</span>
    <span style="color: #000;">return</span> <span style="color: #000;">false</span><span style="color: #666;">;</span>
  <span style="color: #666;">&#125;</span>
  <span style="color: #000;">else</span> <span style="color: #666;">&#123;</span> <span style="color: #ccc">// lengths are the same (or loose is TRUE), so continue to compare individual property values</span>
    <span style="color: #000;">for</span> <span style="color: #666;">&#40;</span>i <span style="color: #000;">in</span> obj1<span style="color: #666;">&#41;</span> <span style="color: #666;">&#123;</span>
      <span style="color: #000;">if</span> <span style="color: #666;">&#40;</span><span style="color: #000;">typeof</span> obj1<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span> <span style="color: #666;">==</span> <span style="color: #B4C24B;">'object'</span> <span style="color: #666;">&amp;&amp;</span> <span style="color: #000;">typeof</span> obj2<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span> <span style="color: #666;">==</span> <span style="color: #B4C24B;">'object'</span><span style="color: #666;">&#41;</span> <span style="color: #666;">&#123;</span> <span style="color: #ccc">// both items are objects</span>
        <span style="color: #000;">if</span> <span style="color: #666;">&#40;</span><span style="color: #666;">!</span>objectCompare<span style="color: #666;">&#40;</span>obj1<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span><span style="color: #666;">,</span> obj2<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span><span style="color: #666;">,</span> loose<span style="color: #666;">&#41;</span><span style="color: #666;">&#41;</span><span style="color: #666;">&#123;</span> <span style="color: #ccc">// see if objects match</span>
          <span style="color: #000;">return</span> <span style="color: #000;">false</span><span style="color: #666;">;</span>
        <span style="color: #666;">&#125;</span>
      <span style="color: #666;">&#125;</span>
      <span style="color: #000;">else</span> <span style="color: #000;">if</span> <span style="color: #666;">&#40;</span>
        loose <span style="color: #ccc">// loose comparison, 42 == &quot;42&quot;, null == '' == undefined</span>
        <span style="color: #666;">&amp;&amp;</span>
        <span style="color: #666;">!</span><span style="color: #666;">&#40;</span>
          <span style="color: #666;">&#40;</span>obj1<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span> <span style="color: #666;">||</span> <span style="color: #B4C24B;">''</span><span style="color: #666;">&#41;</span> <span style="color: #666;">==</span> <span style="color: #666;">&#40;</span>obj2<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span> <span style="color: #666;">||</span> <span style="color: #B4C24B;">''</span><span style="color: #666;">&#41;</span> <span style="color: #ccc">// this will work in all cases EXCEPT (&quot;0&quot; ?= 0|null|undefined), which will evaluate to (&quot;0&quot; ?= &quot;&quot;), which is of course FALSE</span>
          <span style="color: #666;">||</span>
          <span style="color: #666;">&#40;</span> <span style="color: #ccc">// if either value is a number, try to convert both to numbers and compare - this will work around above exception</span>
            <span style="color: #666;">&#40;</span><span style="color: #000;">typeof</span> obj1<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span> <span style="color: #666;">==</span> <span style="color: #B4C24B;">'number'</span> <span style="color: #666;">||</span> <span style="color: #000;">typeof</span> obj2<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span> <span style="color: #666;">==</span> <span style="color: #B4C24B;">'number'</span><span style="color: #666;">&#41;</span>
            <span style="color: #666;">&amp;&amp;</span>
            Number<span style="color: #666;">&#40;</span>obj1<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span><span style="color: #666;">&#41;</span> <span style="color: #666;">==</span> Number<span style="color: #666;">&#40;</span>obj2<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span><span style="color: #666;">&#41;</span>
          <span style="color: #666;">&#41;</span>
        <span style="color: #666;">&#41;</span>
      <span style="color: #666;">&#41;</span><span style="color: #666;">&#123;</span> <span style="color: #ccc">// only one item is an object, or objects don't match</span>
        <span style="color: #000;">return</span> <span style="color: #000;">false</span><span style="color: #666;">;</span>
      <span style="color: #666;">&#125;</span>
      <span style="color: #000;">else</span> <span style="color: #000;">if</span> <span style="color: #666;">&#40;</span>
        <span style="color: #666;">!</span>loose <span style="color: #ccc">// strict comparison, 42 != &quot;42&quot;, null != '' != undefined</span>
        <span style="color: #666;">&amp;&amp;</span>
        <span style="color: #666;">!</span><span style="color: #666;">&#40;</span>obj1<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span> <span style="color: #666;">===</span> obj2<span style="color: #666;">&#91;</span>i<span style="color: #666;">&#93;</span><span style="color: #666;">&#41;</span>
      <span style="color: #666;">&#41;</span><span style="color: #666;">&#123;</span>
        <span style="color: #000;">return</span> <span style="color: #000;">false</span><span style="color: #666;">;</span>
      <span style="color: #666;">&#125;</span>
    <span style="color: #666;">&#125;</span>
  <span style="color: #666;">&#125;</span>
&nbsp;
  <span style="color: #000;">return</span> <span style="color: #000;">true</span><span style="color: #666;">;</span> <span style="color: #ccc">// all tests passed, objects are equivalent</span>
<span style="color: #666;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://acatalept.com/blog/2009/10/09/compare-objects-recursively-in-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gmail POP/IMAP access with Outlook: keeps asking for password</title>
		<link>http://acatalept.com/blog/2009/10/07/gmail-popimap-access-with-outlook-keeps-asking-for-password/</link>
		<comments>http://acatalept.com/blog/2009/10/07/gmail-popimap-access-with-outlook-keeps-asking-for-password/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 19:23:20 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
		
		<category><![CDATA[Fixes / Hacks / Tweaks]]></category>

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

		<guid isPermaLink="false">http://acatalept.com/blog/?p=55</guid>
		<description><![CDATA[Quick solution: RTFM (yes, it was right there on Google's help page) - clear the captcha by going to:
http://www.google.com/accounts/DisplayUnlockCaptcha
or if you use Google Apps:
https://www.google.com/a/yourdomain.com/UnlockCaptcha

I've had a number of issues with Outlook over the years, and it's always proven to be an uphill battle when something goes wrong.  In this case, I was trying to [...]]]></description>
			<content:encoded><![CDATA[<p>Quick solution: <a href="http://mail.google.com/support/bin/answer.py?answer=75289">RTFM</a> (yes, it was right there on Google's help page) - clear the captcha by going to:</p>
<pre>http://www.google.com/accounts/DisplayUnlockCaptcha</pre>
<p>or if you use Google Apps:</p>
<pre>https://www.google.com/a/yourdomain.com/UnlockCaptcha</pre>
<p><span id="more-55"></span></p>
<p>I've had a number of issues with Outlook over the years, and it's always proven to be an uphill battle when something goes wrong.  In this case, I was trying to setup POP access in Outlook 2003 (this same solution should apply to other Outlook versions as well), and Outlook would repeatedly pop up an "Invalid credentials" window when trying to send/receive, even though the "Test Settings" procedure during account setup was successful.</p>
<p>This wasn't a case of mistyping the password, or forgetting to check the Save Password box, or a corrupt profile, or missing registry settings, etc. (been there, done that, none of those solutions worked).  What finally worked was the answer to the Top Most Common Error on, of all places, <a href="http://mail.google.com/support/bin/answer.py?answer=75289">Google's own Gmail help website</a>: clear the captcha.</p>
<p>Yes, I am that dense.  I'm just glad I found this solution before completely wiping out and reinstalling Office.</p>
<p>In any case, not sure why the captcha was being triggered - I'm guessing this is usually only a result of too many invalid login attempts, so maybe something was tripped while doing the initial account setup in Outlook.</p>
<p>YMMV.  Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://acatalept.com/blog/2009/10/07/gmail-popimap-access-with-outlook-keeps-asking-for-password/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Chrome slow under Sandboxie?</title>
		<link>http://acatalept.com/blog/2009/09/29/google-chrome-slow-under-sandboxie/</link>
		<comments>http://acatalept.com/blog/2009/09/29/google-chrome-slow-under-sandboxie/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 03:19:57 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
		
		<category><![CDATA[Fixes / Hacks / Tweaks]]></category>

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

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

		<guid isPermaLink="false">http://acatalept.com/blog/?p=45</guid>
		<description><![CDATA[I was having trouble getting Chrome to play nicely with Sandboxie - it loads and runs, but it was slow to show the "New Tab" page (with thumbnails of your most visited sites), the History page, and, well, most websites in general - so it appeared as though Chrome was trying to copy some needed [...]]]></description>
			<content:encoded><![CDATA[<p>I was having trouble getting Chrome to play nicely with <a href="http://www.sandboxie.com">Sandboxie</a> - it loads and runs, but it was slow to show the "New Tab" page (with thumbnails of your most visited sites), the History page, and, well, most websites in general - so it appeared as though Chrome was trying to copy some needed files into the sandbox every time it loaded a page...  Note that I have my sandbox set to automatically delete when the last sandboxed program ends to ensure I'm cleaning up after myself.</p>
<p>I couldn't find any specifics elsewhere, but after a little tweaking I solved the problem:<br />
<span id="more-45"></span></p>
<ol>
<li>Go into the Sandbox Settings for the sandbox in question.</li>
<li>Make sure you check the checkbox at the bottom left of the window labeled "Apply changes when switching to another page".</li>
<li>Under the Resource Access section, go into File Access, then Direct Access.</li>
<li>Next to the dropdown labeled "The list above applies to", click the Add Pgm button, and find your Chrome executable, e.g. for Windows XP:
<pre>C:\Documents and Settings\[Your User Name]\Local Settings\Application Data\Google\Chrome\Application\chrome.exe</pre>
</li>
<li>Make sure "chrome.exe" is selected next to "The list above applies to", then click the Add button, and find your Chrome User Data folder, e.g. for Windows XP:
<pre>C:\Documents and Settings\[Your User Name]\Local Settings\Application Data\Google\Chrome\User Data</pre>
</li>
<li>Now highlight the User Data entry you just added, click the Edit/Add button, and put an asterisk (*) at the end of the line, e.g. for Windows XP:e.g. for Windows XP:
<pre>C:\Documents and Settings\[Your User Name]\Local Settings\Application Data\Google\Chrome\User Data\*</pre>
<p>Tthis will include all files and folders within the User Data folder.</li>
<li>Next, back under the Sandbox Settings configuration tree, go to Resource Access -> File Access -> Read-Only Access, and follow the above steps to add the Chrome Application folder - when you are done, your entry should read (again, for Windows XP):
<pre>C:\Documents and Settings\[Your User Name]\Local Settings\Application Data\Google\Chrome\Application\*</pre>
</li>
</ol>
<p>Now click OK to get back out of the Sandbox Settings, close all your sandboxed programs and delete the contents.  Now every time you run Chrome in this sandbox, it should be as fast as (or at most only fractionally slower than) Chrome outside the sandbox.</p>
<p>I haven't tested this thoroughly, but so far it seems a good compromise between allowing Chrome access to all of its own files (though it may stumble when trying to update to a new version - more testing needed), while preventing any possible drive-by downloads or other executables from entering and running on my system.</p>
]]></content:encoded>
			<wfw:commentRss>http://acatalept.com/blog/2009/09/29/google-chrome-slow-under-sandboxie/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Make Firefox Location Bar search work like Google Chrome&#8217;s address bar</title>
		<link>http://acatalept.com/blog/2009/06/09/make-firefox-location-bar-search-work-like-google-chromes-address-bar/</link>
		<comments>http://acatalept.com/blog/2009/06/09/make-firefox-location-bar-search-work-like-google-chromes-address-bar/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 20:57:19 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
		
		<category><![CDATA[Fixes / Hacks / Tweaks]]></category>

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

		<guid isPermaLink="false">http://acatalept.com/blog/?p=43</guid>
		<description><![CDATA[The new Location bar in Firefox 3.x will, by default, take any non-URL input and:

If it's a single word (no spaces): first attempt to prepend "www.", and/or append ".com", then lookup in OpenDNS to see if this makes a valid server name - if so, you are automatically redirected to this found server
If there is [...]]]></description>
			<content:encoded><![CDATA[<p>The new Location bar in Firefox 3.x will, by default, take any non-URL input and:</p>
<ol>
<li>If it's a single word (no spaces): first attempt to prepend "www.", and/or append ".com", then lookup in OpenDNS to see if this makes a valid server name - if so, you are automatically redirected to this found server</li>
<li>If there is a space: it is assumed this is a search phrase, so the the input is passed (by default) to Google's Browse By Name service.  This works similarly to a standard Google web search, however if the search phrase is associated with an "authoritative" server (as deemed by Google), you are automatically redirected to this server (similar to an I'm Feeling Lucky search).</li>
</ol>
<p>To disable these behaviors, resulting in similar functionality to Google Chrome's address bar, just make a couple changes in Firefox's hidden <strong>about:config</strong> settings (that is, type "about:config" in the address bar and hit Enter):</p>
<ol>
<li>Change the value of "browser.fixup.alternate.enabled" to <strong>false</strong></li>
<li>Change the value of "keyword.URL" to
<pre>http://www.google.com/search?q=</pre>
<p>Note that there is nothing after the equal sign.</li>
</ol>
<p>This appears to work up through Firefox 3.5b4.</p>
]]></content:encoded>
			<wfw:commentRss>http://acatalept.com/blog/2009/06/09/make-firefox-location-bar-search-work-like-google-chromes-address-bar/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quick workaround for slow network printer (Windows XP SP2 and Vista)</title>
		<link>http://acatalept.com/blog/2009/05/04/quick-workaround-for-slow-network-printer-windows-xp-sp2-and-vista/</link>
		<comments>http://acatalept.com/blog/2009/05/04/quick-workaround-for-slow-network-printer-windows-xp-sp2-and-vista/#comments</comments>
		<pubDate>Mon, 04 May 2009 18:03:29 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

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

		<guid isPermaLink="false">http://acatalept.com/blog/?p=41</guid>
		<description><![CDATA[I've had one particular network printer (installed on a local TCP/IP port) that has been incredibly slow since we've had it installed: it seems to be some bottleneck with the process of communicating with the printer in general, since even opening the printer properties window (or switching tabs within that window) can take 5-10 seconds, [...]]]></description>
			<content:encoded><![CDATA[<p>I've had one particular network printer (installed on a local TCP/IP port) that has been incredibly slow since we've had it installed: it seems to be some bottleneck with the process of communicating with the printer in general, since even opening the printer properties window (or switching tabs within that window) can take 5-10 seconds, and sending over a print job generally hangs the sending application for a similar amount of time.  However, pings are fine (<1ms), and two other network printers configured similarly work just fine, and I've exhausted most other possibilities (cabling, network hardware, port settings) for solving the issue.</p>
<p>However, it appears to be an odd bug in Windows, the workaround for which may not work in all cases, but seems to fix this issue.  I had the printer installed on a local TCP/IP port (it has a built-in print server with a static IP), but by following <a href="http://weblog.bergersen.net/archives/2005/01/why_is_network.html">this advice</a>, I assigned the NetBIOS name for the printer to an unused LPT port at a command prompt:</p>
<pre>net use LPT2 \\printserver\printername</pre>
<p>And then, in the printer's Properties window, under the Ports tab, I changed the port from the TCP/IP port I had originally used to LPT2.</p>
<p>Voila - instant fix.</p>
]]></content:encoded>
			<wfw:commentRss>http://acatalept.com/blog/2009/05/04/quick-workaround-for-slow-network-printer-windows-xp-sp2-and-vista/feed/</wfw:commentRss>
		</item>
		<item>
		<title>View Rendered Source in Internet Explorer</title>
		<link>http://acatalept.com/blog/2009/04/20/view-rendered-source-in-ie/</link>
		<comments>http://acatalept.com/blog/2009/04/20/view-rendered-source-in-ie/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 15:02:43 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Web design &amp; hosting]]></category>

		<guid isPermaLink="false">http://acatalept.com/blog/?p=39</guid>
		<description><![CDATA[IE 6 and 7 can be a nightmare for debugging Javascript, especially after working with the quality tools available for other browsers such as Firebug for Firefox.  However, one small step in the right direction would be the ability to View Source for the currently rendered page, after Javascript has been executed (since typically [...]]]></description>
			<content:encoded><![CDATA[<p>IE 6 and 7 can be a nightmare for debugging Javascript, especially after working with the quality tools available for other browsers such as <a href="http://getfirebug.com/">Firebug</a> for Firefox.  However, one small step in the right direction would be the ability to View Source for the currently rendered page, <em>after</em> Javascript has been executed (since typically the View Source command displays the source code as it was sent by the server, prior to any script execution).<br />
<span id="more-39"></span><br />
To do this, you need to create a small Javascript bookmarklet: <a href="javascript:(function(){c=unescape(document.documentElement.innerHTML);c=c.replace(/&amp;/g,'&amp;amp;');c=c.replace(/%3C/g,'&amp;lt;');c=c.replace(/%3E/g,'&amp;gt;');x=window.open();x.document.write('&lt;html&gt;&lt;head&gt;&lt;title&gt;Rendered Source&lt;/title&gt;&lt;/head&gt;&lt;body bgcolor=&quot;#ffffcc&quot;&gt;&lt;pre&gt;'+c+'&lt;/pre&gt;&lt;/body&gt;&lt;/html&gt;');x.document.close();})();">View Rendered Source</a> (right-click this link and Add To Favorites), that will take the current page's HTML source, in its current state (even if modified by scripts, AJAX calls, etc.), and display it in a popup window.  This source for this bookmarklet is the following:</p>
<pre>
javascript:(

function(){
  var c = unescape(document.documentElement.innerHTML);
  c=c.replace(/&#038;/g,'&amp;amp;');
  c=c.replace(/%3C/g,'&amp;lt;');
  c=c.replace(/%3E/g,'&amp;gt;');
  var x = window.open();
  x.document.write('&lt;html>&lt;head>&lt;title>Rendered Source&lt;/title>&lt;/head>&lt;body bgcolor="#ffffcc">&lt;pre>' + c + '&lt;/pre>&lt;/body>&lt;/html>');
  x.document.close();
}

)();
</pre>
<p>Looking at the above, we can see that we're getting the document's innerHTML, replacing <a href="http://www.w3schools.com/HTML/html_entities.asp">HTML Entities</a> with safe substitutes, opening a new popup window, and writing the source code to the popup.</p>
<p>Now you can at least see what your script is up to, as IE sees it.</p>
]]></content:encoded>
			<wfw:commentRss>http://acatalept.com/blog/2009/04/20/view-rendered-source-in-ie/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Create an empty (zero-length) text file in Windows</title>
		<link>http://acatalept.com/blog/2009/01/19/create-an-empty-zero-length-text-file-in-windows/</link>
		<comments>http://acatalept.com/blog/2009/01/19/create-an-empty-zero-length-text-file-in-windows/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 15:09:11 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
		
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://acatalept.com/blog/?p=35</guid>
		<description><![CDATA[Run the following from a command prompt or batch file:
@echo&#124;find /I /V "echo" > file.txt
Most other, more straightforward techniques will result in a file size greater than zero bytes (usually containing spaces, linefeeds, or other less-than-obvious text).
]]></description>
			<content:encoded><![CDATA[<p>Run the following from a command prompt or batch file:</p>
<pre>@echo|find /I /V "echo" > file.txt</pre>
<p>Most other, more straightforward techniques will result in a file size greater than zero bytes (usually containing spaces, linefeeds, or other less-than-obvious text).</p>
]]></content:encoded>
			<wfw:commentRss>http://acatalept.com/blog/2009/01/19/create-an-empty-zero-length-text-file-in-windows/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dead Space (PC) tweaks</title>
		<link>http://acatalept.com/blog/2008/11/14/dead-space-pc-tweaks/</link>
		<comments>http://acatalept.com/blog/2008/11/14/dead-space-pc-tweaks/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 05:55:49 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
		
		<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://acatalept.com/blog/?p=23</guid>
		<description><![CDATA[Since I've found this game is frustrating many users (myself included) with its tendency to force your mouse to work like a console game controller, among other things, I did some digging to overcome some of the issues I was having.

Very sluggish mouse input: Disable v-sync in the game options.  You might still be [...]]]></description>
			<content:encoded><![CDATA[<p>Since I've found this game is frustrating many users (myself included) with its tendency to force your mouse to work like a console game controller, among other things, I did some digging to overcome some of the issues I was having.</p>
<ul>
<li><strong>Very sluggish mouse input:</strong> Disable <a href="http://www.tweakguides.com/Graphics_9.html">v-sync</a> in the game options.  You might still be able to force v-sync in your video driver configuration (<a href="http://www.tweakguides.com/NVFORCE_6.html">see here for Nvidia driver</a>) to eliminate tearing.</li>
<li><strong>Mouse input too slow / "swimmy":</strong> You can only increase the mouse sensitivity so far in the game options, but if that's still not sensitive enough for you, try editing the setting manually in the config file.  Open the file called <code>config.txt</code> in this folder under Windows XP:
<pre>C:\Documents and Settings\&lt;YOUR USER NAME&gt;\Local Settings\Application Data\Electronic Arts\Dead Space</pre>
<p>or this folder under Vista:</p>
<pre>C:\Users\&lt;YOUR USER NAME&gt;\Local Settings\Application Data\Electronic Arts\Dead Space</pre>
<p>Look for a setting for <code>Control.MouseSensitivity</code> - this only goes up to 1.0 from the in-game options menu, but you can theoretically set it quite a bit higher.  I currently have it set to 2.0, which is a pretty decent improvement.  <strong>Note:</strong> setting this too high will make the mouse <em>much</em> too sensitive in the in-game menus, so turn it up slowly and experiment.</li>
<li><strong>Brightness too high even at lowest setting:</strong> this one can also be tweaked in the config file above.  The setting is called <code>Window.Gamma</code> - the in-game brightness adjustment only sets this as low as 0.0, but apparently it can go negative.  Currently I have it set to -0.5, and it looks much more creepy and atmospheric.</li>
</ul>
<p>Hopefully EA will patch the claustrophobic, controller-esque feeling of the mouse at some point in the future, but otherwise these settings make a huge improvement over the out-of-the-box experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://acatalept.com/blog/2008/11/14/dead-space-pc-tweaks/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

