<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>Dan Tohatan</title>
  <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/" />
  <link rel="self" href="http://www.dacris.com/blog/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2010-08-24T12:02:23.9871407-04:00</updated>
  <author>
    <name>Dan Tohatan</name>
  </author>
  <subtitle>Real News. Real Commentary. Real Life.</subtitle>
  <id>http://www.dacris.com/blog/</id>
  <generator uri="http://dasblog.info/" version="2.1.8102.813">DasBlog</generator>
  <entry>
    <title>Performance - Why Not to Upgrade</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/08/24/PerformanceWhyNotToUpgrade.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,e3afc2b4-ae50-4d3b-9633-8c2cf63e5aa3.aspx</id>
    <published>2010-08-24T12:02:23.9871407-04:00</published>
    <updated>2010-08-24T12:02:23.9871407-04:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Business" label="Business" scheme="http://www.dacris.com/blog/CategoryView,category,Business.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Are you a developer thinking of upgrading your PC? I have a very good reason for you
not to upgrade.
</p>
        <p>
It boils down to one thing: testing.
</p>
        <p>
If you want to test your application from the user's perspective, especially from
the lowest common denominator user's perspective, then your PC configuration needs
to match those specs. If you have a top-notch PC that only 2% of your users have,
guess what: 98% of your users will perceive your application as being "slow."
</p>
        <p>
          <strong>Rule of Thumb: 90th Percentile</strong>
        </p>
        <p>
Since you don't want to give your users the perception that your apps are slow,
always match the 90th percentile of what your users are likely to have. So for example,
if 90% or more of your users have at least 256 MB of RAM, then your development machine
should have only 256 MB of RAM.
</p>
        <p>
It turns out that about 90% of my users have dual-core CPUs (not quad core or single
core) and at least 2 GB of RAM. They also have a video card that generally gets at
least 30 TTP/s in the 3D test. My current dev PC is about twice those specs. It is
a dual-core Intel Core 2 Duo E8400 with 4 GB RAM, and it gets around 70 TTP/s in the
3D test. It is a bit more powerful than I want it to be, and I will certainly not
be upgrading it for a while.
</p>
        <p>
When I developed Dacris Benchmarks 5.0, in late 2001, I did so on an Athlon 1 GHz
machine with only 256 MB of RAM. That became roughly the 90th percentile PC spec in
early 2002 (for power users). I also had to target Windows 98 and Windows 2000 at
the time. I had to set up virtual machines in VMWare to test those OSes, since I was
already running Windows XP.
</p>
        <p>
I have basically been following the 90% rule for at least 9 years, mostly not by choice
- since I did not have the lavish budget to spend on the latest &amp; greatest hardware.
However, in the past 2 years I have been consciously following this rule and if anything
it has given me a great excuse not to spend too much money on upgrades.
</p>
        <p>
          <strong>Going Against the Rule: Windows Vista, .NET</strong>
        </p>
        <p>
An infamous example of not designing for the 90th percentile can be seen with Windows
Vista. In early 2007, the 90th percentile configuration was quite out of reach of
the system requirements imposed by Vista. Keep in mind that Windows has to run on
all kinds of PCs. Also, Vista is not like Dacris Benchmarks where users are knowledgeable
about hardware and usually have more powerful hardware than your average PC user.
Bottom line - the jump from XP's basic 64 MB RAM requirement to Vista's 1
GB was too much for mainstream PC users. The result - Vista never reached more than
19% market share!
</p>
        <p>
And if you still doubt that performance matters, take a look at how slow the adoption
of .NET has been. .NET is much more resource-hungry than "raw" C++. It requires
lots of memory to do JIT compilation. You can hardly run a .NET app without major
disk thrashing on less than 512 MB of RAM. That is part of the reason why .NET adoption
did not really begin until late 2004. I remember the JVM (Java Virtual Machine) being
extremely slow (again due to insufficient RAM) even as late as 2005.
</p>
        <p>
          <strong>Stick to a $2000 Budget</strong>
        </p>
        <p>
My advice to those thinking of building a super-ultimate beast for a development box:
don't. Try to spend less than $2000 on your beast. Otherwise, you'll be living
in an elite fantasy world, isolated from the real world inhabited by most PC users.
Note - if your users are super-power users, then the $2000 budget is trumped by the
90th percentile rule. Always try to match the 90th percentile.
</p>
        <p>
If, on the other hand, you want to do R&amp;D, by all means go for the latest &amp;
greatest hardware. It is the best way to stay ahead of the game and develop ideas
for software that will only be commercially viable in 3+ years. It is a great idea
as part of a larger R&amp;D strategy to have at least one "R&amp;D beast"
machine. However, you should never do real "production" development on your
R&amp;D beast.
</p>
        <p>
          <strong>Conclusions</strong>
        </p>
        <p>
Development (for your products) should always be confined to your 90th percentile
configuration, so that performance is accurately modeled for 90% of your users. Otherwise,
you may have a surprise when your users start complaining about performance issues.
</p>
        <p>
It is far too easy to become tempted to write slow code if, on your PC, the slow code
isn't really slow. Even if you plan to test your software on other (slower) PCs,
the time you spend during that testing may not be enough to give you a solid feel
for how your users will perceive your software. And even if you do spend enough time
testing your software on slower PCs, if you catch performance issues at that late
a stage in development, the effort necessary to correct them is much greater than
if you simply designed your software for that PC configuration in the first place.
</p>
        <img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=e3afc2b4-ae50-4d3b-9633-8c2cf63e5aa3" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Notes on SEO and Online Marketing</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/08/23/NotesOnSEOAndOnlineMarketing.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,83e0f677-94c0-40b4-9712-d0b1f9b52b4a.aspx</id>
    <published>2010-08-23T03:16:51.7016608-04:00</published>
    <updated>2010-08-23T03:16:51.7016608-04:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Internet" label="Internet" scheme="http://www.dacris.com/blog/CategoryView,category,Internet.aspx" />
    <category term="Marketing" label="Marketing" scheme="http://www.dacris.com/blog/CategoryView,category,Marketing.aspx" />
    <category term="SEO" label="SEO" scheme="http://www.dacris.com/blog/CategoryView,category,SEO.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I have been doing a lot of research into
SEO and Internet marketing lately and I've developed quite a library of notes that
others may find useful. I know these notes are extremely useful to me as a reference.<br /><br />
Here we go...<br /><br /><b>Sources of Good Backlinks (for higher PageRank)</b><br />
- DMOZ.org<br />
- Press releases<br />
- Download sites<br />
- Specialized Directories (e.g. appdeploy.com)<br />
- Forum Posts<br />
- Linkedin<br />
- Twitter<br />
- Blog Posts (own)<br />
- Blog / Article Comments (other blogs)<br />
- Own articles posted on other sites (e.g. codeproject.com)<br /><br /><b>Blogging</b><br />
- CRITICALLY important for SEO<br />
- Post roughly twice per day<br />
- Roughly linear correlation between # of pages and # of visitors<br />
- Use a URL that you control (e.g. yourdomain.com/blog)<br /><b><br />
Tip:</b> To track visitors (and where they came from), set up <a href="http://www.google.com/analytics/">Google
Analytics</a> on your blog.<br /><br /><b>Required Blog Features</b><br />
- Subscription support via email &amp; RSS<br />
- Integration with Facebook, Twitter, and Digg<br />
- Automated newsletter support<br /><b><br />
Tip:</b> If your blog engine only supports RSS, use <a href="http://www.feedburner.com/">FeedBurner</a> to
get an automated email newsletter for your blog.<br /><br /><b>Writing Blog Articles</b><br />
- Put the most important keywords in your post title<br />
- How-to / "tips" posts should be the most frequent type of post<br />
- Post length should be 500 - 1000 words<br />
- Stick to one idea per post<br /><br /><b>Blogging - Sources of Inspiration</b><br />
- Recent discoveries<br />
- List links / tips / resources<br />
- Internal notes / research data<br />
- Respond to other blog articles<br />
- Answer recent questions<br /><br /><b>Improving Conversion Rate</b><br />
- Best CTA: "Get started"<br />
- Use clean buttons with large text (rather than plain hyperlinks)<br />
- Use the word "easy" in one of your headings<br />
- Run A/B tests using Google Website Optimizer<br /><br /><b>Understanding Your Audience</b><br />
- Use <a href="http://www.clicktale.com/">ClickTale</a> to get heat maps and track
actual clicks<br />
- Find out what keywords your competitors advertise on (<a href="http://www.keywordspy.com">KeywordSpy.com</a>)<br /><br /><b>Ways to Facilitate Customer Acquisition</b><br />
- Offering a free product or a free trial/demo is essential<br />
- For SaaS products, ask for credit card information on trial sign-up and use opt-out
automated billing to make transition from trial to full version seamless<br />
- Provide plenty of self-help material and how-to guides for your product<br /><br /><b>Tracking SEO Results</b><br />
- Full results can only be seen 5 months (or more) after SEO effort began<br />
- Benchmark your site before SEO effort begins<br /><br /><b>Key Factors Influencing Organic Search Traffic:</b><br />
- Content quantity (higher = better)<br />
- Content variety (higher = better)<br />
- Keyword popularity (higher = better)<br />
- Keyword competition (lower = better)<br /><br /><b>Price Points (Levels)</b><br />
- <b>Lead gen</b> - Free to $10.00 - attracts prospects, does not generate profit<br />
- <b>Mainstream</b> - $50.00 to $200.00 - low maintenance source of profit<br />
- <b>Big ticket</b> - $400.00 to $10,000.00 - inside sales necessary, high maintenance<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=83e0f677-94c0-40b4-9712-d0b1f9b52b4a" /></div>
    </content>
  </entry>
  <entry>
    <title>Announcing Vmana Beta Program</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/08/18/AnnouncingVmanaBetaProgram.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,da9d0ac3-5de8-4040-8bb8-169a25b199a8.aspx</id>
    <published>2010-08-18T03:43:45.916-04:00</published>
    <updated>2010-08-18T03:45:22.4369387-04:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Business" label="Business" scheme="http://www.dacris.com/blog/CategoryView,category,Business.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Search" label="Search" scheme="http://www.dacris.com/blog/CategoryView,category,Search.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <b>Today, the world of search is one step
closer to revolution.</b>
        <br />
        <br />
        <b>Vmana</b> - the <a href="http://www.dacris.com/blog/2010/07/16/ProjectVmanaLuceneNETInTheCloud.aspx">cloud-based
commerce search engine</a> - is entering beta on September 1, 2010. Starting today,
we are accepting requests from users who wish to participate in the beta program.<br /><br />
The Vmana <a href="http://www.vmana.com/">beta program</a> is expected to run for
at least two months. We plan to accept up to 200 beta testers; no more.<br /><br /><h4>What is Vmana?
</h4>
In a nutshell, Vmana is a hosted e-commerce search engine.<br /><br />
It supports filtering, facets, XML feeds, and all of the other bells &amp; whistles
of a top notch search engine.<br /><br />
It is fully managed, with a 100% up-time SLA (service level agreement).<br /><br />
Being a hosted solution, performance never suffers. We always grow capacity behind
the scenes to meet demand.<br /><br /><h4>Why is it a revolution?
</h4>
Quite simply, this has never been done before. Especially not on the scale that it
is about to be done.<br /><br />
As the cost of computing continues to decline exponentially (at a rate of ~40% per
year), the time for providing high-level software APIs in the cloud is growing ever
closer to the present. Vmana is one such example: a high-level search API sitting
in the cloud.<br /><br />
Up until now, cloud computing has centered around the idea of providing low-level
services (such as queues, storage, or CPU) to the user. This is akin to the days of
time-sharing computers and dumb terminals.<br /><br />
The key to the future of cloud computing lies in the ability to provide high-level
services (such as search). This is only recently becoming possible. Just as the evolution
from the command line to the GUI required a certain critical performance level to
be reached, we are now on the cusp of a major transition in cloud computing, from
low-level "dumb" APIs to high-level "smart" APIs.<br /><br />
Vmana is a high-level API, which is why it is called "intelligent" search. That's
why it's a revolution.<br /><br /><h4>How is it being done?
</h4>
Behind the scenes lies <a href="http://lucene.apache.org/">Lucene</a> - a powerful
open-source search engine. However, Lucene is just a tiny fraction of Vmana.<br /><br />
Vmana consists of a crawler, a search engine, and a management &amp; administration
dashboard.<br /><br />
Key features include: on-demand and automatic crawling, comprehensive logging, XML
feed support (for input), XML search results, REST-style API, <a href="http://www.vmana.com/search/search/features.aspx">and
more</a>.<br /><br /><h4>Why cloud?
</h4>
There are several key advantages to cloud computing in general:<br /><ul><li>
Guaranteed performance.</li><li>
Guaranteed reliability.</li><li>
You only pay for what you use.</li><li>
Easy setup and deployment.</li></ul>
These are the advantages of Vmana over, say, an enterprise search appliance like the
GSA (Google Search Appliance).<br /><br /><h4>Why not a "bare bones" search engine like Lucene?
</h4>
There are several disadvantages to doing that:<br /><ul><li>
Steep learning curve.</li><li>
Integration effort is costly.</li><li>
Maintenance is difficult (often requires dedicated staff).</li><li>
No analytics or reporting features.</li></ul>
The better question is - why live with those disadvantages?<br /><br /><h4>Conclusion
</h4>
A hosted search solution really makes sense when you take into account all of the
disadvantages of the alternative solutions.<br /><br />
For those willing to try something new, it may be worthwhile to <a href="http://www.vmana.com/">sign
up for the Vmana beta program</a> or <a href="http://www.vmana.com/">learn more</a> about
Vmana.<br /><br />
Note - we are only accepting 200 beta testers in total.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=da9d0ac3-5de8-4040-8bb8-169a25b199a8" /></div>
    </content>
  </entry>
  <entry>
    <title>Ray Tracing to Replace Rasterization by 2020</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/08/08/RayTracingToReplaceRasterizationBy2020.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,fd1a6b5b-a06e-4af7-9ce1-491f85aa3e5d.aspx</id>
    <published>2010-08-08T02:19:47.661-04:00</published>
    <updated>2010-08-08T02:24:51.0106952-04:00</updated>
    <category term="Business" label="Business" scheme="http://www.dacris.com/blog/CategoryView,category,Business.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Science" label="Science" scheme="http://www.dacris.com/blog/CategoryView,category,Science.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Say goodbye to polygons and shaders. Say
goodbye to OpenGL and DirectX. The future, from this point on, is all ray tracing.<br /><br />
One chart - one image - shows it perfectly:<br /><br /><img src="/images/rt.png" /><br /><br />
(Source: <a href="http://www.pcper.com/article.php?aid=506&amp;type=expert&amp;pid=3">PC
Perspective</a>)<br /><br />
Ray tracing outperforms rasterization for large numbers of polygons.<br /><br />
There are many disadvantages to rasterization:<br /><ul><li>
It is slow (linear in time) for large numbers of polygons.</li><li>
It does not produce reflections very efficiently or accurately.</li><li>
It cannot dynamically produce effects like refraction or shadows.</li><li>
It relies heavily on textures (which use up tons of space!) to produce lighting effects.</li><li>
Coding rasterized games is difficult because of the requirement to approximate every
single lighting effect that would be calculated automatically using ray tracing.<br /></li></ul>
Of course, rasterization does have one advantage (and one only), and that is that
on <i>present-day</i> PCs, it can render scenes in real time at higher quality than
ray tracing.<br /><br />
Throughout computing history, it has always been the case that temporary approximation
techniques were phased out when enough computing power was available to do away with
them. For example, the use of color palettes in the 1990s (i.e. 256 colors) disappeared
as soon as there was enough GPU memory to store 32-bit pixel values. When resolutions
rose to 800x600 and beyond, bitmap fonts could finally be replaced by True Type fonts.
Pixels were gradually phased out of the graphics world in favor of ems or inches.<br /><br />
Notice that rasterization has dominated the PC gaming industry since the 1990s. Currently,
ray tracing cannot produce scenes at 1080p resolution in real time without sacrificing
quality severely. However, this will soon change.<br /><br />
The amount of increase in CPU power (from present levels) needed to allow rendering
of ray-traced images at 1080p resolution at 24 fps is only about 10X. This will almost
certainly happen before 2020.<br /><br />
There is a <a href="http://www.youtube.com/watch?v=v3tttKdhCYw">movie coming out</a> (in
2012) that is supposedly rendered entirely in real time using ray tracing.<br /><br />
To close off, here is a ray traced image using a ray tracer that I built recently:<br /><br /><img src="http://www.dacris.com/images/area2.png" /><br /><br />
Notice the accuracy of the reflections and shadows, and how they come at no extra
cost - virtually no performance penalty and no extra code required!<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=fd1a6b5b-a06e-4af7-9ce1-491f85aa3e5d" /></div>
    </content>
  </entry>
  <entry>
    <title>Comment Spam and Other Black-Hat SEO Techniques</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/08/07/CommentSpamAndOtherBlackHatSEOTechniques.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,3d85dc0c-ec03-4456-9359-918137aedf9f.aspx</id>
    <published>2010-08-07T16:49:02.5170575-04:00</published>
    <updated>2010-08-07T16:49:02.5170575-04:00</updated>
    <category term="Business" label="Business" scheme="http://www.dacris.com/blog/CategoryView,category,Business.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Internet" label="Internet" scheme="http://www.dacris.com/blog/CategoryView,category,Internet.aspx" />
    <category term="Marketing" label="Marketing" scheme="http://www.dacris.com/blog/CategoryView,category,Marketing.aspx" />
    <category term="SEO" label="SEO" scheme="http://www.dacris.com/blog/CategoryView,category,SEO.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Today, comment spam made a triumphant return
to my blog, which is a blessing in one sense (I am getting more visitors!) and a curse
at the same time.<br /><br />
I think it's time to discuss some of the "black hat" SEO strategies and how to spot
them and prevent them...<br /><br /><b>1. Comment Spam</b><br /><br />
Comment spam can occur in many forms. In all cases, the comment will contain a hyperlink
somewhere. This is because the whole goal of the comment spammer is to generate backlinks
from high-PageRank sites to his/her own site.<br /><br />
What does comment spam do if left unchecked? Well, other than polluting your content,
it also lowers your own page's PageRank! So it is critical that you stop and prevent
comment spam.<br /><br />
Typically, the comment will contain a hyperlink either in the user's name (most blogs
allow users to specify their website URL when they post) or in the comment body itself.<br /><br />
To prevent comment links from being crawled, you must mark those links with the attribute
rel="nofollow". This will tell the search engine to completely ignore that link. Most
blogs do this automatically for username links, but they can still allow links in
the comment body (as my current blog engine does).<br /><br />
A great way to stop comment spam is to not provide a way to post links in the comment
body, or mark all links in the comment as "no-follow".<br /><br /><b>2. Link Exchanges</b><br /><br />
Link exchanges are black-hat? Well, unless you just came out of a 5-year hibernation,
yes. They are. Let me explain.<br /><br />
Google will progressively reduce the PageRank of a page depending on how many outbound
links it has. Google recommends that a page contain no more than 100 links. Basically,
the more links you have on your page, the lower your PageRank will be.<br /><br />
You can also get penalized and even excluded from online directories if your site
has a page with many unrelated links. Now granted, it's sometimes hard to differentiate
between a legitimate directory and a link exchange. But generally, the link exchange
consists mainly of external links (links that point to other domain names).<br /><br />
So as a rule of thumb, try to limit your links to external domain names and keep them
relevant to your website's content.<br /><br />
I've managed to find an <a href="http://www.backlinkwatch.com">excellent backlink
checking tool</a> that shows you every single site that is linking to you and what
that site's authority is (based on the number of outbound links on the page that is
linking to you). If you see a page with lots of outbound links and low PageRank, it
may actually be contributing to <i>lower</i> your own PageRank!<br /><br /><b>3. Keyword Stuffing</b><br /><br />
Believe it or not, keyword stuffing is NOT dead! I've seen it live, in action, on
a high-profile website just a few months ago whose name I unfortunately no longer
recall. There are many high-profile sites that still do it, and to some extent it
still works: the high-profile website I found was ranked very near the #1 spot on
Google.<br /><br />
So what is keyword stuffing? It is the addition of keywords not found on your page
into your title/meta tags (description, keywords, and title). For the website that
I found doing this, it was stuffing all three. The title of the site was literally
thousands of words long!<br /><br />
Why should you not do it? I mean, clearly it appears to work. There is a risk that
your site will be removed and possibly banned if found out. I cannot quantify the
risk, but the potential impact is so severe that I would not be willing to try it.<br /><br />
There is a tool that allows you to <a href="http://tool.motoricerca.info/spam-detector/">check
for keyword stuffing</a>. There are probably more tools available out there with a
simple Google search.<br /><br /><b>4. Cloaking</b><br /><br />
This is an amazingly deceptive technique where the page detects the user agent string
of the crawler (in this case Googlebot) and actually offers it different content than
what it would offer a real human. Obviously this is a really deceptive technique.<br /><br />
There is actually a tool that can be used to <a href="http://www.cloakingdetector.com/">detect
cloaking</a>. Use it on your own website just to be safe, or to verify that your SEO
consultant is not a crook.<br /><br /><b>Summary<br /><br /></b>So there you have it. These are just some of the many black-hat SEO techniques
out there. I've given you the knowledge &amp; the tools now to avoid these techniques
and do SEO the proper way!<br /><br />
To get some SEO tips, be sure to check out <a href="http://www.dacris.com/blog/CategoryView,category,SEO.aspx">my
other SEO articles</a>.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=3d85dc0c-ec03-4456-9359-918137aedf9f" /></div>
    </content>
  </entry>
  <entry>
    <title>Technorati Inclusion</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/08/05/TechnoratiInclusion.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,4b3fa760-21cd-4a7c-946c-f5f5e648bdad.aspx</id>
    <published>2010-08-05T16:53:38.6911102-04:00</published>
    <updated>2010-08-05T16:53:38.6911102-04:00</updated>
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Here is my claim code - 
<br /><pre>KP4VFDRPWQ9T<br /></pre>If you're wondering what this is, I am submitting my blog to Technorati and
they require that I post something on my blog in order to verify that I am the author
of the blog.<br /><br />
The Technorati claim process is how you submit your blog to Technorati.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=4b3fa760-21cd-4a7c-946c-f5f5e648bdad" /></div>
    </content>
  </entry>
  <entry>
    <title>C# Serializable Dictionary - a Working Example</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/31/CSerializableDictionaryAWorkingExample.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,166cff0b-3441-4024-9e8a-c972c3b7a949.aspx</id>
    <published>2010-07-31T02:42:38.751-04:00</published>
    <updated>2010-07-31T02:50:57.3492643-04:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here is the example:
</p>
        <div style="width: 540px; height: 400px; background-color: rgb(255, 255, 255); overflow: auto;">
          <pre>
            <span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;">
              <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System; <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System.Runtime.Serialization; <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System.Xml; <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System.Xml.Serialization; <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System.Collections.Generic; <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System.Text;
[Serializable()] <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">class</span> SerializableDictionary&lt;TKey,
TVal&gt; : Dictionary&lt;TKey, TVal&gt;, IXmlSerializable, ISerializable {         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#region</span> Constants
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">private</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">const</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">string</span> DictionaryNodeName <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Dictionary"</span>;
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">private</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">const</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">string</span> ItemNodeName <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Item"</span>;
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">private</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">const</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">string</span> KeyNodeName <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Key"</span>;
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">private</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">const</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">string</span> ValueNodeName <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Value"</span>;
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#endregion</span>         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#region</span> Constructors
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span> SerializableDictionary()
        {         }
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span> SerializableDictionary(IDictionary&lt;TKey,
TVal&gt; dictionary)             : <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">base</span>(dictionary)
        {         }
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span> SerializableDictionary(IEqualityComparer&lt;TKey&gt;
comparer)             : <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">base</span>(comparer)
        {         }
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span> SerializableDictionary(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">int</span> capacity)
            : <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">base</span>(capacity)
        {         }
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span> SerializableDictionary(IDictionary&lt;TKey,
TVal&gt; dictionary, IEqualityComparer&lt;TKey&gt; comparer)             : <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">base</span>(dictionary,
comparer)         {         }
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span> SerializableDictionary(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">int</span> capacity,
IEqualityComparer&lt;TKey&gt; comparer)             : <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">base</span>(capacity,
comparer)         {         }
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#endregion</span>         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#region</span> ISerializable
Members         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">protected</span> SerializableDictionary(SerializationInfo
info, StreamingContext context)         {
            <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">int</span> itemCount <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> info.GetInt32(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"ItemCount"</span>);
            <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">for</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">int</span> i <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> 0;
i &lt; itemCount; i++)             {
                KeyValuePair&lt;TKey,
TVal&gt; kvp <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> (KeyValuePair&lt;TKey,
TVal&gt;)info.GetValue(String.Format(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Item{0}"</span>,
i), <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">typeof</span>(KeyValuePair&lt;TKey,
TVal&gt;));                 <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">this</span>.Add(kvp.Key,
kvp.Value);             }
        }         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">void</span> ISerializable.GetObjectData(SerializationInfo
info, StreamingContext context)         {
            info.AddValue(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"ItemCount"</span>, <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">this</span>.Count);
            <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">int</span> itemIdx <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> 0;
            <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">foreach</span> (KeyValuePair&lt;TKey,
TVal&gt; kvp <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">in</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">this</span>)
            {                 info.AddValue(String.Format(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Item{0}"</span>,
itemIdx), kvp, <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">typeof</span>(KeyValuePair&lt;TKey,
TVal&gt;));                 itemIdx++;
            }         }
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#endregion</span>         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#region</span> IXmlSerializable
Members         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">void</span> IXmlSerializable.WriteXml(System.Xml.XmlWriter
writer)         {             <span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//writer.WriteStartElement(DictionaryNodeName);</span>             <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">foreach</span> (KeyValuePair&lt;TKey,
TVal&gt; kvp <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">in</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">this</span>)
            {                 writer.WriteStartElement(ItemNodeName);
                writer.WriteStartElement(KeyNodeName);
                KeySerializer.Serialize(writer,
kvp.Key);                 writer.WriteEndElement();
                writer.WriteStartElement(ValueNodeName);
                ValueSerializer.Serialize(writer,
kvp.Value);                 writer.WriteEndElement();
                writer.WriteEndElement();
            }             <span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//writer.WriteEndElement();</span>         }
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">void</span> IXmlSerializable.ReadXml(System.Xml.XmlReader
reader)         {             <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">if</span> (reader.IsEmptyElement)
            {                 <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">return</span>;
            }             <span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//
Move past container</span>             <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">if</span> (!reader.Read())
            {                 <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">throw</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">new</span> XmlException(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Error
in Deserialization of Dictionary"</span>);             }
            <span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//reader.ReadStartElement(DictionaryNodeName);</span>             <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">while</span> (reader.NodeType
!<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> XmlNodeType.EndElement)
            {                 reader.ReadStartElement(ItemNodeName);
                reader.ReadStartElement(KeyNodeName);
                TKey
key <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> (TKey)KeySerializer.Deserialize(reader);
                reader.ReadEndElement();
                reader.ReadStartElement(ValueNodeName);
                TVal
value <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> (TVal)ValueSerializer.Deserialize(reader);
                reader.ReadEndElement();
                reader.ReadEndElement();
                <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">this</span>.Add(key,
value);                 reader.MoveToContent();
            }             <span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//reader.ReadEndElement();</span>             reader.ReadEndElement(); <span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//
Read End Element to close Read of containing node</span>         }
        System.Xml.Schema.XmlSchema IXmlSerializable.GetSchema()
        {             <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">return</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">null</span>;
        }         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#endregion</span>         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#region</span> Private
Properties         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">protected</span> XmlSerializer
ValueSerializer         {             get
            {                 <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">if</span> (valueSerializer
== <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">null</span>)
                {
                    valueSerializer <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">new</span> XmlSerializer(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">typeof</span>(TVal));
                }
                <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">return</span> valueSerializer;
            }         }
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">private</span> XmlSerializer
KeySerializer         {             get
            {                 <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">if</span> (keySerializer
== <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">null</span>)
                {
                    keySerializer <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">new</span> XmlSerializer(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">typeof</span>(TKey));
                }
                <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">return</span> keySerializer;
            }         }
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#endregion</span>         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#region</span> Private
Members         <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">private</span> XmlSerializer
keySerializer <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">null</span>;
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">private</span> XmlSerializer
valueSerializer <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">null</span>;
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">#endregion</span> }</span>
          </pre>
        </div>
        <p>
          <br />
The full C# file can be downloaded here: <a href="http://app.dacris.com/temp/SerializableDictionary.cs.txt">SerializableDictionary.cs</a></p>
        <p>
This class is both XML-serializable and binary-serializable. It is hard to find examples
out there that do both.
</p>
        <img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=166cff0b-3441-4024-9e8a-c972c3b7a949" />
      </div>
    </content>
  </entry>
  <entry>
    <title>10000 vs. 7200 RPM - Which is Faster?</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/27/10000Vs7200RPMWhichIsFaster.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,d920fcf9-37a6-4029-b3de-bc911a771645.aspx</id>
    <published>2010-07-27T03:31:06.587-04:00</published>
    <updated>2010-07-27T03:36:13.134243-04:00</updated>
    <category term="Business" label="Business" scheme="http://www.dacris.com/blog/CategoryView,category,Business.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Does RPM matter?</strong> It appears not. Read on to view the shocking
results!
</p>
        <h4>Tools Used
</h4>
        <ul>
          <li>
            <a href="http://www.dacris.com/benchmarks/">
              <strong>Dacris Benchmarks, version 8.0</strong>
            </a>
          </li>
          <li>
Windows Calculator</li>
          <li>
Notepad</li>
        </ul>
        <h4>Hard Drives Compared
</h4>
        <ul>
          <li>
Western Digital VelociRaptor 150 GB - WD1500HLFS -- 10,000 RPM</li>
          <li>
Seagate 7200.12 1 TB - ST31000528AS -- 7,200 RPM</li>
          <li>
Samsung Spinpoint F3 500 GB - HD501LJ -- 7,200 RPM</li>
        </ul>
        <p>
Both of the 7200 RPM drives have 500 GB per platter density. The 10,000 RPM VelociRaptor
has a density of 150 GB per platter. 
</p>
        <h4>The Showdown
</h4>
        <p>
Here are the hard drive benchmark scores for the drives tested: 
</p>
        <table cellpadding="8" style="border-collapse: collapse; border: 1px solid rgb(204, 204, 204);">
          <tbody>
            <tr>
              <th>Drive</th>
              <th>Average Score (MB/s)</th>
              <th># of Samples</th>
            </tr>
            <tr>
              <td>
VelociRaptor</td>
              <td>
60.6</td>
              <td>
1</td>
            </tr>
            <tr>
              <td>
Seagate</td>
              <td>
54.0</td>
              <td>
4</td>
            </tr>
            <tr>
              <td>
Samsung</td>
              <td>
44.4</td>
              <td>
3</td>
            </tr>
          </tbody>
        </table>
        <br />
        <br />
        <p>
The results have been taken from the available reference results in Dacris Benchmarks.
</p>
        <p>
It appears that the 10,000 RPM VelociRaptor is slightly faster (12%) than its closest
7200 RPM rival. 
</p>
        <p>
The 12% difference does not seem like much, given how much more the VelociRaptor costs,
and how much less capacity you get. 
</p>
        <h4>Conclusions
</h4>
        <p>
As of this moment, you would do better to save your money and go for a large 7200
RPM drive rather than a small 10,000 RPM drive. It seems that the lower areal density
of the VelociRaptor counteracts any positive effect that might be had from the higher
spindle speed. 
</p>
        <p>
While the VelociRaptor is the fastest conventional drive out there (SSDs are faster),
it is not significantly faster than a traditional 7200 RPM drive.
</p>
        <img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=d920fcf9-37a6-4029-b3de-bc911a771645" />
      </div>
    </content>
  </entry>
  <entry>
    <title>CPU Upgrade - The YouTube Test</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/27/CPUUpgradeTheYouTubeTest.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,31f8ed63-ad03-463a-9660-b31fc23a55d2.aspx</id>
    <published>2010-07-27T02:59:48.837-04:00</published>
    <updated>2010-07-27T03:04:56.821743-04:00</updated>
    <category term="Business" label="Business" scheme="http://www.dacris.com/blog/CategoryView,category,Business.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <h4>The Role of the CPU
</h4>
        <p>
In general, the CPU is very rarely a bottleneck when it comes to performance. It is
rarely noticed by most users because the tasks they perform are rarely CPU-intensive.
Games generally use the video card heavily but not the CPU. The operations in which
the CPU matters most are: video playback, file conversion, and compression. Most of
us rarely care about file conversion or compression performance, since we generally
tend to do those things in the background. However, there is one operation where the
CPU is becoming more and more essential: <strong>video playback</strong>. 
</p>
        <h4>The YouTube Test
</h4>
        <p>
Since smooth video playback is very important to most users, there is actually a very
easy test that can be done to see if the CPU is fast enough for typical usage. It's
called the YouTube test. 
</p>
        <ol>
          <li>
Go to YouTube and search for some videos.</li>
          <li>
Pick one that is available in HD (720p) format and play it. (Example: <a href="http://www.youtube.com/watch?v=twuScTcDP_Q">"Moon"
HD Trailer</a>)<br /></li>
          <li>
If it plays at a low frame rate or lags occasionally, there is a chance the CPU may
be too slow.</li>
          <li>
Open Task Manager (right-click the task bar and choose Start Task Manager).</li>
          <li>
Go to the Performance tab.</li>
          <li>
From the Options menu, choose Always On Top.</li>
          <li>
Now go to YouTube and start playing the video.</li>
          <li>
Watch the CPU usage carefully. If it spikes up to 90% or more, that is not good news.
It means that your CPU is too slow.</li>
        </ol>
        <p>
If your CPU usage goes to 90% or more while playing a YouTube video, your CPU is a
significant bottleneck. Unless you're happy with choppy video, you should upgrade
your CPU. 
</p>
        <h4>What Should I Upgrade To?
</h4>
        <p>
This is where <a href="http://www.dacris.com/benchmarks/">Dacris Benchmarks</a> comes
in. Open Dacris Benchmarks and run the CPU test. You can run the other tests too but
it is not necessary. Save your results (File - Save Results). Now, go to File - Compare
Results and select a system with a CPU you'd be willing (and able) to upgrade to (e.g.
Core 2 Duo E8400). Now you can see on the main screen what your CPU score would be
with the new CPU. If the score is at least 5000 (the current YouTube threshold), it
would be a good upgrade. 
</p>
        <h4>Summary
</h4>
        <p>
Try the YouTube test to see if your CPU can handle HD video. A CPU with a score of
5000 or more in Dacris Benchmarks can handle HD video at a smooth frame rate. So if
your CPU scores less than 5000, it is likely that it cannot handle HD video on YouTube.
</p>
        <img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=31f8ed63-ad03-463a-9660-b31fc23a55d2" />
      </div>
    </content>
  </entry>
  <entry>
    <title>How to Tell if You Need More RAM</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/27/HowToTellIfYouNeedMoreRAM.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,9f7b5498-d328-4e18-a352-f57df9136212.aspx</id>
    <published>2010-07-27T02:38:16.743618-04:00</published>
    <updated>2010-07-27T02:38:16.743618-04:00</updated>
    <category term="Business" label="Business" scheme="http://www.dacris.com/blog/CategoryView,category,Business.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <h4>Why Having Free RAM is Important
</h4>
        <p>
RAM is faster than your hard drive, by a factor of 100 at least. If your computer
runs out of RAM, it will start using the hard drive instead of RAM, causing it to
slow down dramatically.
</p>
        <p>
Have you ever noticed, when you exit a game that you've been playing for a long time,
how sometimes your desktop redraws very slowly and it takes several seconds just for
your windows reappear? Well, that was caused by your computer <strong>swapping out</strong> (i.e.
moving) data from RAM to your hard drive in order to make room for that game you were
playing. That is why when you exit the game, everything reloads slowly. It is because
now everything must be read back into RAM from your hard drive.
</p>
        <h4>How Much Free RAM Should I Have?
</h4>
        <p>
Generally, you should make sure your RAM usage never exceeds 70%. That means, you
should at all times have at least 30% unused RAM. Otherwise, what ends up happening
is, as your RAM usage increases past 70%, your computer has to swap out old data in
order to keep running properly. The problem is, once you need that data back (and
you probably will), it will have to be reloaded from the hard drive, causing your
PC to slow down. To prevent swapping, it is best that you maintain a level of 30%
free RAM or higher.
</p>
        <h4>How to Check the Free RAM Amount
</h4>
        <p>
You can use Task Manager to see your free RAM amount (in MB) at any time. Right-click
the task bar and choose Start Task Manager. Go to the Performance tab and under "Physical
Memory", look at the "Available" amount. Then divide that by the "Total" amount shown
and you will know how much RAM you have free at that point.
</p>
        <p>
If you want to track your RAM usage over time - to see when the used memory percentage
goes over 70% - use <a href="http://www.dacris.com/benchmarks/" target="_blank">Dacris
Benchmarks</a>' System Monitor feature (go to <strong>Tools - Monitoring</strong>).
Click Start Logging and then use your PC as you regularly would for a few hours. Make
sure you do not close Dacris Benchmarks (System Monitor) and do not restart your PC
during this time. Then, go back to System Monitor, click Stop Logging and then expand
the Highlights item in the tree view. Expand the RAM Usage item and see what percentage
the first item says. If it is over 70%, you need more RAM.
</p>
        <h4>How Much RAM Should I Get?
</h4>
        <p>
If you've determined that you need a RAM upgrade, you can probably benefit greatly
from even a 50% increase in your total RAM amount. For example, you could upgrade
from 2 GB to 3 GB by adding a 1 GB module.
</p>
        <p>
Make sure you check your PC's memory slots first to see if you have room. To do this,
in Dacris Benchmarks, go to the System Information tab, expand the Hardware category,
then expand the RAM category. This will show you all modules installed along with
each module's capacity. To see if you have room for more modules, you can go to the
motherboard manufacturer's website and look up your motherboard model (from System
Information, Hardware, Motherboard) to see how many total RAM slots it has. Alternatively,
if you want to be 100% sure you have available RAM slots, just open up the case and
look inside.
</p>
        <h4>Summary
</h4>
        <p>
Free RAM is essential for smooth PC operation. If your PC has less than 30% free RAM
at any given time, it is at risk of slowing down significantly when switching between
programs. To maintain smooth operation, make sure you always have at least 30% free
RAM. You can check (and track) RAM usage with Dacris Benchmarks' System Monitor tool.
Even as little as 50% more RAM can dramatically improve performance when RAM usage
routinely exceeds 70%.
</p>
        <img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=9f7b5498-d328-4e18-a352-f57df9136212" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Dacris Benchmarks 8.0 Reviewed on Download3000</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/24/DacrisBenchmarks80ReviewedOnDownload3000.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,463a27df-ed3b-4a49-ba84-610fd30198e3.aspx</id>
    <published>2010-07-23T20:13:03.3426838-04:00</published>
    <updated>2010-07-23T20:13:03.3426838-04:00</updated>
    <category term="Business" label="Business" scheme="http://www.dacris.com/blog/CategoryView,category,Business.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">While randomly surfing the web (actually,
I was searching for 'pc monitoring'), I stumbled upon an <a href="http://www.download3000.com/dacris-benchmarks-8.0-review-2691.html">excellent
review of Dacris Benchmarks 8.0</a>, by Codrut Nistor of Download3000.com. It has
only been up since June, so it is definitely newsworthy, especially since Dacris Benchmarks
received the "<b>editor's pick</b>" award!<br /><br />
Here is a brief excerpt:<br /><br />
"<b>Final Thoughts</b><br /><br />
I really love Dacris Benchmarks, and I guess that should be all of it. This program
gets my pick and it should also get all your attention. I'll surely keep an eye on
it in the future, since I know all this can be done even better. Excellent work guys,
congratz!"<br /><br />
It is important to note that the reviewer ran Dacris Benchmarks on a not-so-recent
machine, running Windows XP.<br /><br /><a href="http://www.download3000.com/dacris-benchmarks-8.0-review-2691.html">Read
the full review</a> to get a good idea of what the program can do. It's a lot more
than you might initially think!<br /><br />
We plan to take the feedback we got from the review in order to make the next version
of Dacris Benchmarks even better.<br /><br />
Also, to all who have submitted their results so far - thank you! We appreciate every
submission we receive. Keep them coming!<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=463a27df-ed3b-4a49-ba84-610fd30198e3" /></div>
    </content>
  </entry>
  <entry>
    <title>WCF – A Gigantic Monstrosity from the Depths of Hell</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/23/WCFAGiganticMonstrosityFromTheDepthsOfHell.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,1c77984c-04f4-464a-9025-bdc978172c8d.aspx</id>
    <published>2010-07-23T18:37:52.654-04:00</published>
    <updated>2010-07-23T18:41:44.8083884-04:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Internet" label="Internet" scheme="http://www.dacris.com/blog/CategoryView,category,Internet.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">So it seems everyone out there who wants
to create REST services is using WCF to do it. I don’t know how this trend got started,
but it’s wrong. You see, WCF was never made for the web. It was made to replace inter-process
communication which used to be done through RPC. Then, it grew into a bloated Swiss-army-knife
solution trying to solve all of the world’s problems, including (as it happens) REST.
Sure it solves the problem, but not very well. Only if you accept the gigantic limitations
that WCF imposes on you.<br /><br />
Trying to build a REST service with WCF is like trying to open a beer bottle with
explosives. It will open, but then you’ve got a whole mess on your hands.<br /><br />
This week I’ve been struggling to do exactly that – set up a REST service with WCF.
Given that I have shared web hosting (I know, poor old me) and have multiple sub domains
hosted on the same IIS service, it proved to be impossible. The error: “This collection
already contains an address with scheme http.”<br /><br />
Looking around on the web for a solution proved to be futile. It appears that unless
you have a dedicated IIS instance just for your WCF REST service, it ain’t gonna happen.<br /><br />
Another thing that really makes my blood boil with WCF is the fact that tracing is
so difficult. You have to use a proprietary tool to view a proprietary trace format
– and that’s when you finally get it to work right. If you can’t get it to work (I
couldn’t), the result is that you try to access one of your service methods and, if
there's something wrong with the method, you only get a blank browser screen. No debug
output, no exception message, nothing.<br /><br />
I then realized there’s a much easier way to make it happen. The answer is so staggeringly
simple you will laugh…<br /><br /><b>Global.asax</b><br /><br />
Here’s how you do it:<br /><ol><li>
Take out all the WCF junk from the web.config. God knows WCF likes to flood you with
configuration.<br /><br /></li><li>
Add one line to Global.asax.cs, in Application_BeginRequest:<br />
MyService.ProcessRequest(HttpContext.Current);<br /><br /></li><li>
Then, create a class called MyService, with a bit of reflection to figure out which
service method to call (based on your URL and query string parameters), and a call
to XmlSerializer to convert the return value to XML. One example (in my case, called
SearchService), <a href="http://app.dacris.com/temp/SearchService.cs.txt">can be found
here</a>.<br /></li></ol>
That’s it. Three easy steps! Now you have a REST service. No changes to your WCF service
contract. Your interface can stay intact – even with the WCF attributes still on it!<br /><br />
So to those who want to implement a simple REST service without the hassle of WCF,
here you go. From now on, I prefer not to use WCF unless I absolutely have to.<br /><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=1c77984c-04f4-464a-9025-bdc978172c8d" /></div>
    </content>
  </entry>
  <entry>
    <title>Designing Benchmarks: Hardware, Software, and QoS</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/20/DesigningBenchmarksHardwareSoftwareAndQoS.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,e94e7d49-d268-4187-ba23-23b1b4fbf8b1.aspx</id>
    <published>2010-07-20T01:25:29.5923407-04:00</published>
    <updated>2010-07-20T01:25:29.5923407-04:00</updated>
    <category term="Business" label="Business" scheme="http://www.dacris.com/blog/CategoryView,category,Business.aspx" />
    <category term="Science" label="Science" scheme="http://www.dacris.com/blog/CategoryView,category,Science.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <h2>Introduction<br /></h2>
        <p>
There are three types of benchmarks:
</p>
        <ol>
          <li>
Hardware - those that test raw hardware variables like throughput, transfer rate,
latency, or bandwidth.</li>
          <li>
Software - those that test the performance of various algorithms (e.g. pi calculation)
on different hardware devices.</li>
          <li>
QoS - those that test various quality of service aspects, such as security or reliability.</li>
        </ol>
        <h2>
Software Benchmarks
</h2>
        <p>
While high-level (software) benchmarks appear to more accurately reflect what we want
to measure from a user experience standpoint, they are also harder to generalize or
standardize. This is because the hardware resources needed for a pi calculation in
C# may differ greatly from those needed for a pi calculation in C++. Ultimately, software
benchmarks end up being heavily dependent on the platform being used for development.
</p>
        <p>
There are a few software benchmarks, however, which are worthy of implementation.
These are the ones that have a great degree of applicability to the real world and
have a very low degree of platform &amp; algorithm variance. In other words, the algorithm
needs to be commoditized - the public domain version of the algorithm is the most
efficient version of the algorithm available. It needs to take full advantage of all
hardware optimizations known at the time, and be applicable in the real world. It
also needs to be written for as low-level a platform as possible (e.g. C++).
</p>
        <p>
Examples of viable software benchmarks:
</p>
        <ul>
          <li>
Pi calculation (e.g. SuperPI)</li>
          <li>
H.264 video encoding, with fixed settings</li>
          <li>
MP3 audio encoding, with fixed settings</li>
          <li>
Prime number calculation (e.g. Prime95)</li>
          <li>
Fibonacci number sequence</li>
        </ul>
        <p>
Examples of bad software benchmarks:
</p>
        <ul>
          <li>
JavaScript pi calculation - varies by browser type</li>
          <li>
Linux compilation - varies greatly by distribution and configuration</li>
          <li>
XML parsing - varies greatly by algorithm</li>
        </ul>
        <p>
The rule as far as the algorithm is concerned is, it must be easy to reproduce the
most efficient algorithm for that particular task. For example, with pi calculation,
the most efficient algorithm is well-documented and readily available. There is no
hidden or proprietary algorithm that is more optimized than what is already in the
public domain.
</p>
        <h2>
Hardware Benchmarks
</h2>
        <p>
Low-level (hardware) benchmarks are designed specifically to measure the physical
limitations of the underlying hardware. These are generally much more reliable. There
is less variance in results. However, they apply less to real world usage. They are
also known as "synthetic" benchmarks, because they do not take into account real world
usage patterns. Typically, hardware benchmarks will measure things like throughput,
bandwidth, or latency.
</p>
        <p>
Examples of hardware benchmarks:
</p>
        <ul>
          <li>
Cache memory throughput (read, write, copy) with 64 KB blocks</li>
          <li>
Average RAM read latency with 4 KB blocks at random addresses</li>
          <li>
Hard drive seek time for 1/2 disk seek</li>
          <li>
Peak hard drive transfer rate</li>
        </ul>
        <p>
The relevance of a hardware benchmark matters more than anything in terms of determining
whether it is worth pursuing. For example, it would be irrelevant to measure the error
rate of RAM when you are in fact looking for a measure of the performance of the memory
subsystem.
</p>
        <h2>
QoS Benchmarks
</h2>
        <p>
While so far we've discussed only performance testing, there are other variables that
we generally would want to measure. These fall under the category of "quality of service"
(or QoS) variables. The importance of these variables is often underrated.
</p>
        <p>
Examples of QoS variables:
</p>
        <ul>
          <li>
Error rate of a hard drive</li>
          <li>
Security level of the operating system</li>
          <li>
Video rendering quality</li>
        </ul>
        <p>
These variables have nothing to do with speed, but they are nevertheless important.
</p>
        <p>
Benchmarks should not be just about testing performance. They should include QoS variables
as well, since these can determine a purchase decision just as much as performance.
Hardware reviewers will often mention these variables and try to quantify them, but
there are seldom any objective tests done. We predict that QoS benchmarking will be
more important over the coming years, and we plan to focus more on this relatively
unexplored territory.
</p>
        <h2>
Conclusions
</h2>
        <p>
Dacris Benchmarks offers many hardware benchmarks. There is only one software benchmark
in Dacris Benchmarks at the moment, and that is the CPU test, since there is no definitive
way to measure the raw throughput of a CPU. The CPU benchmark is mainly a clone of
the Whetstone benchmark.
</p>
        <p>
Currently, our emphasis with Dacris Benchmarks has been on hardware benchmarks as
much as possible. Our customers have indicated to us that this is the right strategy.
However, in the future we plan to expand into QoS benchmarks as well, as this is a
relatively unexplored area.
</p>
        <p>
Questions? Suggestions? Feel free to post your comment below.
</p>
        <img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=e94e7d49-d268-4187-ba23-23b1b4fbf8b1" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Project Vmana: Lucene.NET in the Cloud</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/16/ProjectVmanaLuceneNETInTheCloud.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,b09b01b2-5feb-41bf-bdcd-1a02770c9744.aspx</id>
    <published>2010-07-16T04:39:49.859-04:00</published>
    <updated>2010-08-17T21:46:17.8807889-04:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Business" label="Business" scheme="http://www.dacris.com/blog/CategoryView,category,Business.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Internet" label="Internet" scheme="http://www.dacris.com/blog/CategoryView,category,Internet.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Search" label="Search" scheme="http://www.dacris.com/blog/CategoryView,category,Search.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">An idea has been tossing &amp; turning in
my head for months now - 3 months actually. Rarely does an idea stick around that
long without me finding <i>some</i> way to dismiss it.<br /><br />
The idea is a <a href="http://www.vmana.com/">hosted customizable search engine</a>,
similar in ease of use to GSA (Google Search Appliance) but more capable - more like
Lucene.<br /><br />
After searching for hours &amp; hours for a decent hosted search engine, guess what?
I found nothing.<br /><br />
The closest thing I was able to find was <a href="http://code.google.com/p/gaelucene/">GAELucene</a> (on
Google Code). It's a Google App Engine version of Lucene. However, the index can only
be read-only. It does not support a dynamic index. Without that, it's useless to me.<br /><br /><b>Hosted Applications - Some Examples</b><br /><br />
Just so you are less inclined to think I have finally lost my marbles:<br /><ul><li>
IIS --&gt; Windows Azure</li><li>
SQL Server --&gt; SQL Azure</li><li>
Outlook --&gt; Gmail</li><li>
Backup --&gt; Mozy<br /></li><li>
Bugzilla</li><li>
SVN</li></ul>
There is a clear trend towards traditional server/desktop applications moving over
to hosted services.<br /><br /><b>Getting a Customized Search Engine ... the Traditional Way:</b><br /><br />
These days, if you need a customized search solution, your options are as follows:<br /><ol><li>
Purchase, deploy, and maintain a gigantic enterprise search application (e.g. Google
search appliance, Endeca, FAST).</li><li>
Integrate Lucene (or another free search engine) into your application (Java/ASP.NET)
and develop your own management interface for it.</li><li>
Drop the customization and integrate a basic Google search box into your web app,
that can only index &amp; search your HTML pages.</li></ol>
Clearly, none of these options are particularly appealing to a small or medium-sized
business. Why?<br /><br />
- Option 1 is super-expensive. Not only is the entry cost in excess of $20,000, the
cost of maintenance and operation also exceeds $10,000 per month.<br />
- Option 2 is less expensive, although certainly not free, and very time consuming.
It could take at least 5 weeks to get a working solution, resulting in more than $5,000
in development costs. Then there's the cost of hosting Lucene yourself. With a large
index, you probably need a dedicated server - around $200 per month!<br />
- Option 3 is super cheap, but it's not at all what you want. It's basically the same
as giving up.<br /><br /><b>Is there a better way?</b><br /><br />
Yes! There is one more option - option 4. But nobody's built it yet.<br /><br />
Option 4 is a <a href="http://www.vmana.com/">hosted search engine</a> where <i>you</i> control
what data flows in &amp; how it comes out, but the management &amp; maintenance is
handled by someone else.<br /><br />
Think of it as <a href="http://www.vmana.com/"><b>cloud search</b></a>.<br /><br />
Two words! Simple.<br /><br />
Enter <a href="http://www.vmana.com/"><b>Project Vmana</b></a>. Thinking search? Think
Vmana.<br /><br /><b>How would it work?</b><br /><ol><li>
You go to <a href="http://www.vmana.com/">vmana.com</a> and sign up for your <b>free</b> entry-level
search account.</li><li>
Just like App Engine, Vmana is metered. Let's say your entry-level account has 500
MB of index space and 100,000 queries per month.</li><li>
Using an easy-to-use admin interface, you configure your data sources:</li></ol><ol><li>
You want some data to be pulled in from your blog, so you give it your RSS feed URL.</li><li>
You want it to crawl your website, so you give it your home page URL.</li><li>
You set up some exclusion lists using regular expressions to filter out unwanted URLs.</li><li>
You have some custom objects with metadata that you will feed in with your own feeder
application.</li></ol><li>
Vmana handles all of your object types &amp; indexes them regularly. You can check
your stats using the built-in dashboard.</li><li>
Vmana provides a testing console - a simple web page where you can type in queries,
see results, and build out customized result templates for use later.</li><li>
You then use the Vmana XML API to send queries from your web application. Your web
app just builds the query, sends it to Vmana, and retrieves the results in XML format.
Then, you apply a bit of XSL and magic happens - you've got your fully-customized
search results page.</li>
How much development effort is involved? Probably about 5 days. Under $1,000.<br /><br />
The value in Vmana lies mainly in the management &amp; admin interface. Lucene does
not provide it. If you did option 2, you'd have to build it yourself from scratch.
Building all that crawling logic and pretty reporting UIs is not that easy, which
is why I said 5 weeks, and that's probably a conservative estimate!<br /><br />
Why "Vmana"? I like the name - it's short, and the domain was available. ;)<br /><br /><b>Summary</b><br /><br />
With Vmana, your costs are reduced to about one-fifth relative to comparable options <b>and </b>you
get better value &amp; peace of mind!<br /><br />
The project has already begun. Stay tuned for additional status updates - probably
in about 3 days.<br /><br /><b>Release Schedule</b><br /><br />
The first phase is a working internal prototype that we can showcase via screenshots.
That is probably about 2 weeks away. Following that, a public beta - if one happens
at all - would arrive around late August. The quality would be similar to the App
Engine beta or the Azure CTP. The beta would continue probably for at least two months.
Expect heavy promotional giveaways during the beta (i.e. high quotas).<br /><br />
This is all I will divulge at this time. I have nothing more anyway.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=b09b01b2-5feb-41bf-bdcd-1a02770c9744" /></div>
    </content>
  </entry>
  <entry>
    <title>Memorable Seinfeld Quotes</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/16/MemorableSeinfeldQuotes.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,64f729f8-406e-44b9-8c4b-4c00abea1608.aspx</id>
    <published>2010-07-16T00:03:56.187-04:00</published>
    <updated>2010-07-16T00:16:57.5432503-04:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="Internet" label="Internet" scheme="http://www.dacris.com/blog/CategoryView,category,Internet.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Seinfeld, a sitcom created by Larry David
in the early 1990s, has managed to have a lasting impact on our society.<br /><br />
So with that I think I'll summarize the most memorable Seinfeld quotes that I still
hear nowadays. Seinfeld fans will know them instantly.<br /><ol><li>
Not that there's anything wrong with that.</li><li>
Oh yeah, well I had sex with your wife! ... (random guy to George: George, his wife
is in a coma!)</li><li>
The last thing this guy's qualified to give a tour of is reality.</li><li>
Jerry: That's an old wives tale. Kramer: Is it? Look at this! (shows hairy chest)
LOOK AT IT! LOOK AT IT!<br /></li><li>
Marriage? Children? They're prisons! Man-made prisons! You're doing time! You get
up in the morning, she's there. You go to sleep at night, she's there. It's like you,
you gotta ask permission to use the bathroom. Honey, can I use the bathroom now? And
you can forget about watching TV while you're eating. Because it's dinner time. And
you know what you do at dinner? You talk about your day. How was your day today? Did
you have a good day or a bad day? Well, I dunno, how about you how was your day? ...
Jerry: I'm glad we had this talk. Kramer: Oh you have NO idea!</li><li>
Occasionally I like to help the humans.</li><li>
Hoochie mama!! Hoochie mama!!</li><li>
Serenity now.</li><li>
That's GOLD, Jerry. GOLD!</li><li>
OK. So that's one tuck, one no-tuck.</li><li>
NO SOUP FOR YOU!</li><li>
Believe it or not George isn't at home, please leave a message at the beep. I must
be out or I'd pick up the phone, where could I be? Believe it or not I'm not home....BEEP!</li><li>
Hello, and welcome to movie phone. If you know the name of the movie you'd like to
see, press one now. ... You've selected, Agent Zero. If this is correct, press one.
... You've selected, Brown Eyed Girl. If this is correct, press one. ... Why don't
you just tell me the name of the movie you selected?</li><li>
Quone! To quone something!</li><li>
Bubble boy: The Moors! George: No, I'm sorry it's the Moops!</li><li>
WHO? WHO DOESN'T WANT TO WEAR DE REEBON??!</li><li>
Yoyoma!</li><li>
Giddyup!</li><li>
Oh I'm stressed.</li><li>
These pretzels are making me thirsty!</li><li>
Stick a fork in me ... I'm done!</li><li>
The sea was angry that day my friends. Like an old man trying to send back soup in
a deli.</li><li>
How many times do I have to tell you? Poise counts!</li><li>
I wished that you would drop dead!</li><li>
It's fusilli Jerry!</li><li>
Jerry Seinfeld's a funny guy!!!</li><li>
I'm not telling you any ... more ... secrets! (Elaine on Schnapps)<br /></li><li>
I heard *something*.</li><li>
I like to stop at the duty free shop.</li><li>
You don't even know what a write-off is.</li><li>
Snapple? ... No thanks.</li><li>
Can't you two see, that you're in love with each other?</li><li>
You put the balm on? Who told you to put the balm on? I didn't tell you to put the
balm on? Where'd you get that da*n balm anyway? ... The Maestro. ... The WHO?!</li><li>
Hello Jerry! ... Hello, Newman.</li><li>
How can anybody not like him?</li><li>
George: What kind of a person are you? ... Jerry: I think I'm pretty much like you...
only successful!</li><li>
Every group has someone that they all make fun of. Like us with Elaine.</li><li>
Jerry, I don't know sometimes...<br /></li><li>
George: WHY did you have to destroy 25 computers? Kramer: George, listen ... I owe
you one!</li><li>
I can't be with someone if I don't respect what they do. ... Jerry: You're a cashier!!<br /></li></ol><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=64f729f8-406e-44b9-8c4b-4c00abea1608" /></div>
    </content>
  </entry>
  <entry>
    <title>.NET Framework Versions and Backwards Compatibility</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/15/NETFrameworkVersionsAndBackwardsCompatibility.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,ca9e2310-86f6-419e-b647-5f79da809e8e.aspx</id>
    <published>2010-07-15T02:48:11.4851591-04:00</published>
    <updated>2010-07-15T02:48:11.4851591-04:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I come across this question quite frequently,
and the answer may not be quite so obvious, but it makes sense once you think about
it.<br /><br /><b>Question:</b> How do I know my app (built with .NET version X) will be compatible
with .NET version Y?<br /><br /><b>Answer:</b><br /><br />
As a rule of thumb, if .NET version X installs side-by-side with .NET version Y, then
.NET version X is not compatible (backwards or forwards) with .NET version Y. This
is a rule I've been using for quite some time (since .NET 2.0 came out). It's probably
too safe for small-scale applications, but it's better to be safe than sorry. 
<p>
Here are some concrete examples:
</p><ul><li>
.NET 4.0 will not run .NET 3.x or earlier applications properly</li><li>
.NET 3.5 will run .NET 3.0 &amp; .NET 2.0 applications, but not .NET 1.1</li><li>
.NET 3.0 will run .NET 2.0 applications, but not .NET 1.1</li><li>
.NET 2.0 will not run .NET 1.1</li></ul>
Here is a matrix that shows every scenario:<br /><br /><img src="http://www.dacris.com/blog/images/netversions.png" /><br /><br />
Here are the versions that install side-by-side:<br /><ul><li>
.NET 4.0</li><li>
.NET 3.5, 3.0, or 2.0</li><li>
.NET 1.1<br /></li></ul><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=ca9e2310-86f6-419e-b647-5f79da809e8e" /></div>
    </content>
  </entry>
  <entry>
    <title>SEO Tips for Reaching #1 Spot on Google</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/14/SEOTipsForReaching1SpotOnGoogle.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,35c3033f-d5fd-4fdc-9b80-2e7cfff43de0.aspx</id>
    <published>2010-07-14T02:36:16.568-04:00</published>
    <updated>2010-07-14T02:52:38.9890811-04:00</updated>
    <category term="Business" label="Business" scheme="http://www.dacris.com/blog/CategoryView,category,Business.aspx" />
    <category term="Internet" label="Internet" scheme="http://www.dacris.com/blog/CategoryView,category,Internet.aspx" />
    <category term="Marketing" label="Marketing" scheme="http://www.dacris.com/blog/CategoryView,category,Marketing.aspx" />
    <category term="SEO" label="SEO" scheme="http://www.dacris.com/blog/CategoryView,category,SEO.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <category term="Tips" label="Tips" scheme="http://www.dacris.com/blog/CategoryView,category,Tips.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Recently I checked my website (<a href="http://www.dacris.com"><b>dacris.com</b></a>)
to see how it ranked against several keywords on Google. It turns out that for quite
a few popular keywords / phrases, I am now very near the #1 spot!<br /><br /><b>Examples:</b><br /><a href="http://www.google.ca/search?hl=en&amp;safe=off&amp;client=firefox-a&amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;q=pc+performance&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=&amp;gs_rfai=">"pc
performance"</a> - #6 spot<br /><a href="http://www.google.ca/search?hl=en&amp;safe=off&amp;client=firefox-a&amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;q=pc+benchmarks&amp;aq=f&amp;aqi=g2g-m8&amp;aql=&amp;oq=&amp;gs_rfai="></a><a href="http://www.google.ca/search?hl=en&amp;safe=off&amp;client=firefox-a&amp;hs=7yG&amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;q=pc+benchmarks&amp;aq=f&amp;aqi=g2g-m8&amp;aql=&amp;oq=&amp;gs_rfai=">"pc
benchmarks"</a> - #5 spot<br /><br />
This was not always the case. My site used to be buried somewhere on page 10 or beyond.
That was only four months ago!<br /><br />
Here's what has worked for me:<br /><ol><li>
Put your most important keywords in the page title - in this case my page title contains <i>PC</i>, <i>Performance</i>,
and <i>Test</i>.</li><li>
Be consistent with your keywords in your copy - do not use "performance" and then
"speed". Choose one.</li><li>
Links are enormously important. Use the keywords from your page title in at least
one link in the page body.</li><li>
Get lots of inbound links from reputable sites (having <a href="http://en.wikipedia.org/wiki/PageRank">PageRank</a> 5
or more). Here are a few ways:<br />
- Put out press releases<br />
- List your software in directories such as <a href="http://www.download.com">download.com</a><br />
- Link your website to your user profile, so that you get a free inbound link whenever
you post comments or reply on forums<br /></li><li>
Put your entire product documentation online. This creates searchable content.<br /></li><li>
Write industry-related articles on your blog &amp; post frequently (at least once
per day).<br /></li><li>
Start a few projects on <a href="http://www.codeplex.com">CodePlex</a> and link back
to your own website. This is what I did with <a href="http://flexsetup.codeplex.com/">FlexSetup</a> and <a href="http://netxpf.codeplex.com/">NETXPF</a>.<br /></li></ol>
To summarize, there are two keys to SEO:<br /><ol><li><b>Content</b> - create lots of relevant content, with proper formatting.</li><li><b>Inbound links</b> - get links from sites having high PageRank, with relevant keywords
in the link or surrounding the link.</li></ol>
Now go out there and get traffic!<br /><br /><b>Tip:</b> Be sure to use <a href="http://www.google.ca/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CB0QFjAA&amp;url=http%3A%2F%2Fwww.google.com%2Fanalytics%2F&amp;ei=hVg9TIHgH8T58Aao3fm2Bg&amp;usg=AFQjCNFz3Lrd3h9xlat60IUur_H8rmADdw&amp;sig2=iGkTTRyVHaaV535QEU0TQQ">Google
Analytics</a> to see which keywords are effective in bringing in traffic.<br /><br /><b>Additional tip:</b> To check the PageRank of a site, go to <a href="http://www.prchecker.info/">prchecker.info</a>.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=35c3033f-d5fd-4fdc-9b80-2e7cfff43de0" /></div>
    </content>
  </entry>
  <entry>
    <title>Getting over the fear of asking</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/13/GettingOverTheFearOfAsking.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,a80422ad-0801-4f4c-83bb-13bba3392073.aspx</id>
    <published>2010-07-13T04:34:15.8573529-04:00</published>
    <updated>2010-07-13T04:34:15.8573529-04:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I have a strong feeling that for most people,
the biggest reason for business failure or personal stagnation is due to the fear
of asking. This applies to me, so it must apply to others out there.<br /><br />
Let's examine this for a minute. What are some fears that people have when it comes
to asking?<br /><ul><li>
Asking to be treated fairly in a relationship</li><li>
Asking for what you feel you deserve to be paid, instead of what you think you can
get</li><li>
Asking others to allow you to speak &amp; make a point</li><li>
Asking the people you have wronged for forgiveness</li><li>
Asking that your government representatives actually represent your interests for
a change</li><li>
Asking a girl out on a date<br /></li></ul>
The list goes on...<br /><br />
It has always been a weakness of mine. I'm sure others are in the same boat. Why else
would it be that so many people are having trouble making ends meet? They clearly
accept their precarious financial situation. It's as if they are content with being
poor. Just as in centuries past, people were content with being slaves.<br /><br />
The reason is always the same: they are afraid to ask.<br /><br />
Well, I don't know about you all, but as far as I'm concerned, I'm determined to get
over my fear of asking. Whatever it takes.<br /><br />
This new modus operandi is called "<b>being assertive</b>." It is now my new quest.<br /><br />
I will start by getting over my fear of asking for $300/hr as my consulting rate.
This is how it begins.<br /><br />
Stay tuned for status updates on my quest. This blog will be my journal on this exciting
shift in paradigm.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=a80422ad-0801-4f4c-83bb-13bba3392073" /></div>
    </content>
  </entry>
  <entry>
    <title>The Modern Online World ... Order</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/07/10/TheModernOnlineWorldOrder.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,c7d3fdc3-2e8e-4384-9605-c38d62cc354f.aspx</id>
    <published>2010-07-10T03:31:45.159-04:00</published>
    <updated>2010-07-10T03:34:44.1404435-04:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I took the liberty of doing some research
on keywords that have over 200,000 monthly searches on Google as they might relate
to software and website ideas. Here's what I came up with...<br /><br /><b>Online Learning</b><br />
- FREE online learning / FREE school / VIRTUAL school<br /><br /><b>Reviews</b><br />
- digital camera reviews<br />
- LCD reviews<br />
- cell phone reviews<br /><br /><b>Language</b><br />
- learn Spanish, German, French<br /><br /><b>Compare</b><br />
- digital cameras, phones, LCD<br /><br /><b>Software / Apps / Programs</b><br />
- DVD burning, games, deployment, programming, zip, weight training<br /><br /><b>Music / Tabs / Sound</b><br />
- sheet music, remix, tablature, guitar lessons, DJ software, sound driver<br /><br /><b>Seduction</b><br />
- Neil Strauss, pick up artist, pua, mystery method<br /><br /><b>Financial</b><br />
- financial planner, financial software, ratios<br /><br /><b>New World Order</b><br />
- illuminati, freemasons, david icke<br /><br /><b>Travel</b><br />
- deals, cruises, last minute, UK, America, Malaysia, visa, Costa Rica, Caribbean,
Chile<br /><br /><b>Online / Internet</b><br />
- play games, tetris, puzzle, chess, solitaire, typing, speed test<br /><br /><b>Money / Interest Rate / Economy</b><br />
- make money, transfer, exchange, gold, converter, mortgage calculator, inflation<br /><br /><b>Auction</b><br />
- auto / car, house<br /><br /><b>Computer / PC</b><br />
- hardware (components), memory, gaming, support, repair, cheap<br /><br /><b>Video</b><br />
- how-to, YouTube converter<br /><br /><b>Weather / Climate</b><br />
- current, 10 day forecast, radar, national, 5 day forecast, extremes, almanac, precipitation<br /><br /><b>SEO / Marketing</b><br />
- services, optimization, software / tools, email marketing, viral marketing<br /><br /><b>Diet</b><br />
- protein, weight loss, recipes, detox, menu, diabetic<br /><br /><b>Hosting</b><br />
- web hosting, email, best, php, windows, UK<br /><br /><b>Network</b><br />
- printer, wireless, management software, monitoring<br /><br /><b>Custom</b><br />
- shirts, promotional products<br /><br /><b>Deal</b><br />
- travel / last minute, laptop, digital camera<br /><br /><b>Screen</b><br />
- LCD / flat, screen capture, boot screen<br /><br /><b>Edit</b><br />
- video editing software, photo editing, regedit, text editor<br /><br />
I can already think of some ideas for software products...<br /><ol><li>
A mobile PUA organizer app equipped with the latest gambits from the seduction community</li><li>
A master online &amp; mobile financial planner, including rent vs. mortgage, investment
strategies, currency converter, etc.</li><li>
A video editing &amp; conversion app with screen capture support (BAM!), with seamless
support for YouTube &amp; DVD output format</li><li>
A simple DJ software for mobile phones<br /></li></ol><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=c7d3fdc3-2e8e-4384-9605-c38d62cc354f" /></div>
    </content>
  </entry>
  <entry>
    <title>Economic Update</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/06/05/EconomicUpdate.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,b4f9d6cf-4d4d-41e3-9599-d33f0bc94d39.aspx</id>
    <published>2010-06-05T19:23:44.709-04:00</published>
    <updated>2010-06-05T19:25:06.9952434-04:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">It was April 29, 2010 when <a href="http://www.dacris.com/blog/2010/04/30/ThatsItImCallingATop.aspx">I
called a top in the Dow</a>. It looks like I hit the nail on the head there. Since
the top (11,205), the Dow has plunged more than 1200 points. I think it's safe to
say now that a bear trend has started that will continue well into 2011.<br /><br />
Now for my latest market call, <b>buy silver now</b>. The gold-silver ratio has just
hit 70:1 after being in the low 60s for nearly a year. It's time to buy some silver.<br /><br />
In other news,<br /><ol><li><a href="http://finance.yahoo.com/news/Owners-Stop-Paying-Mortgage-nytimes-4276925797.html?x=0&amp;sec=topStories&amp;pos=7&amp;asset=&amp;ccode">Owners
stop paying mortgage ... and stop fretting about it</a></li><li><a href="http://americathegrimtruth.wordpress.com/">America - the grim truth</a></li></ol><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=b4f9d6cf-4d4d-41e3-9599-d33f0bc94d39" /></div>
    </content>
  </entry>
  <entry>
    <title>Sell in May and go away? Not this year!</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/05/11/SellInMayAndGoAwayNotThisYear.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,cb6f3263-1887-4edd-a7d9-ba821bb10d83.aspx</id>
    <published>2010-05-11T19:56:16.9533174-04:00</published>
    <updated>2010-05-11T19:56:16.9533174-04:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Gold has just reached a new all-time high
today. It looks like gold is breaking out like a true champ.<br /><br />
There is an old adage among hard-core gold bugs: "Sell in May and go away." There
is some truth to that statement. Gold's seasonality is such that the summer is usually
a bad period, where gold does nothing and sometimes actually falls quite dramatically
in price.<br /><br />
Well, this year is shaping up to be very different. This is a May breakout. I've never
seen anything like it. It is totally counter-seasonal. This indicates enormous strength
in gold right now.<br /><br />
What does this mean for the coming months? I think gold at $1800 before the end of
2010 is not out of the question. In fact, the likelihood of that is about 70%.<br /><br />
There is dollar devaluation afoot. The Euro is no longer a safe haven. Where do you
put your rapidly-depreciating dollars? The stock market casino? Bonds that yield less
than 3%? No. Real estate in a time of recession? No. Gold is the only thing left.<br /><br />
Maybe the old adage should be changed to "buy in May and go away."<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=cb6f3263-1887-4edd-a7d9-ba821bb10d83" /></div>
    </content>
  </entry>
  <entry>
    <title>That's It - I'm Calling a Top</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/04/30/ThatsItImCallingATop.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,907ed682-e7b5-43ce-aa1d-6383ae096bcf.aspx</id>
    <published>2010-04-29T21:47:38.9818959-04:00</published>
    <updated>2010-04-29T21:47:38.9818959-04:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">The chief US economist at Deutsche Bank,
Joseph LaVorgna, has just stated, "we're out of the woods for good." Apparently, the
recession is over. People are spending, companies are making strong positive earnings,
and it's "not just an arithmetic story. It's a story of legitimate growth."<br /><br />
OK. That's it. I'm calling a top. We're at Dow what now, 11,200? Well 11,200 is the
highest it will be for a long time to come.<br /><br />
Where is the money supply recently? Let's see... the M3? Oh that's right, it's SHRINKING!<br /><br /><a href="http://www.nowandfutures.com/key_stats.html">http://www.nowandfutures.com/key_stats.html</a><br /><br />
We are shrinking at a rate of -7.7% annually! Yikes!<br /><br />
Oh, and let's not forget the 9.7% unemployment rate that hasn't budged at all. How
on earth can this be a real recovery?<br /><br />
Not only that, but recently I've noticed that a lot of bears have turned bullish.<br /><br />
But guess what, people ARE spending! Consumers ARE buying stuff, despite being unable
to pay for it. Delinquencies are at all-time highs! This at a time when interest rates
are ZERO!<br /><br />
What else? Oh, the Dow has been rising non-stop since March, 2009. We are now 13 months
into this crazy rally, which is nothing more than a bear market rally.<br /><br />
So, to conclude, I'm calling a top. 11,200. This is it. Expect some big downward moves
in the coming months.<br /><br />
P.S. My track record speaks for itself: in March, 2009 I called the bottom with my
infamous post "Bottom". Then I qualified that by saying it WOULD get worse, in the
long term. Well, now is the time for the resumption of that long term trend.<br /><br /><br /><p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5BA1CIB8jgM&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/5BA1CIB8jgM&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=907ed682-e7b5-43ce-aa1d-6383ae096bcf" /></div>
    </content>
  </entry>
  <entry>
    <title>iPad: Perfect for people who fear computers</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/04/17/iPadPerfectForPeopleWhoFearComputers.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,e2b335fd-8fef-41c2-91fc-fe843224b473.aspx</id>
    <published>2010-04-17T13:29:25.557-04:00</published>
    <updated>2010-04-17T13:33:07.7703521-04:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Apple introduced the iPad a few weeks ago,
and while I almost vowed never to write an Apple-related article, I feel that the
iPad is something I must write about, despite how much I hate Apple's non-free approach
to ISVs. Sure, Apple's app store is highly restrictive and they've cut out large ISVs
like Adobe, but the iPad is so revolutionary that I need to talk about it despite
all of its shortcomings. Bash it all you want, but the iPad is a new category of personal
computer. Plain and simple. Thanks to its large screen, it enables all the features
of a full-sized computer without the scary aspects of viruses or configuration.<br /><br />
The iPad's interface is a move beyond the desktop metaphor that is easier to interact
with and much cleaner. The move can be compared to the evolution from console interfaces
to WYSIWYG ("desktop") interfaces. That move is now considered revolutionary. In the
same way, I consider the iPad to be revolutionary. It introduces an interface metaphor
that is revolutionary compared to the desktop metaphor.<br /><br />
While WYSIWYG interfaces have been around since the late 1960s, it was not until Apple
introduced the interface in the 1980s that the GUI/WYSIWYG interface (a.k.a. the desktop
metaphor) took off. In the same way today, Apple has introduced a new interface: the
touch-screen interface. This interface was in fact introduced with the iPhone and
has already proved to be hugely successful.<br /><br /><b>The Problem with Desktop Interfaces</b><br /><br />
The main problem with the desktop metaphor is that it is non-intuitive. It's a sort
of remote-control interface for your PC. You use the mouse to move a cursor on the
screen. In a sense, the mouse is just like a remote control. You do not "feel" the
UI elements. Furthermore, you have all sorts of equipment just to interact with your
PC. Indeed, the desktop PC is a very complex device, consisting of two input devices
(mouse &amp; keyboard), a strictly-output device (the monitor), and the PC itself
(a big box that just sits there &amp; makes funny noises).<br /><br />
Now let us examine the touch screen as an input (and output) device. It was first
developed several decades ago. Some would argue it's been around since the 1980s,
but it has not taken off until recently. In fact, the original Tablet PC by Microsoft
was probably the first mainstream touch-screen device. It was introduced less than
a decade ago. Since then, we've seen an explosion in touch-screen devices.<br /><br />
Ironically, Microsoft was the first company to introduce the touch screen to the mainstream.
However, they were continuing to use the old desktop metaphor. The problem was that
the input devices were no longer the same: the mouse was gone, and the keyboard became
an on-screen keyboard. Thus, the desktop metaphor lost its efficiency and actually
became harder to use on a touch screen than on a regular PC. This is why the Tablet
PC failed.<br /><br /><b>The Solution: iPad</b><br /><br />
Apple has always been the first to introduce <i>successful</i> new interfaces in the
computing industry (notice I said "introduce," not "invent.") With the hugely-successful
iPhone, Apple stumbled upon a new user interface paradigm that was different from
the traditional desktop paradigm. This new paradigm was much better suited to touch-screen
devices. People who had previously shunned computers were now using apps and playing
games on the new iPhone. The iPhone is effectively a computer. The only thing it lacks
is a keyboard and a mouse.<br /><br />
Now, while the iPhone was enormously successful and proved to the world that the computer
could still evolve, there were things that the iPhone still could not do simply due
to its small screen size. Thus, the iPad was introduced, providing a larger form factor
for the same interface that the iPhone popularized. A new PC was thus truly born.<br /><br /><b>Computing Made Accessible</b><br /><br />
Every great invention is initially ridiculed &amp; vehemently denied. It is then,
much later, accepted as self-evident. The same is the case for the iPad. It may not
seem that revolutionary now, but the iPad is truly the next phase in the evolution
of the PC. At last, we can move away from the mouse &amp; keyboard and embrace touch
screens. The new touch screen paradigm will make computers more accessible to a larger
percentage of the population, facilitating the demise of print media and television/radio.<br /><br />
The iPad is much like Apple's Lisa - a journey into the unknown. It is a very rudimentary,
unpolished product. Fundamentally, it's just a proof of concept. Ultimately, I expect
that future generations of the iPad, along with new devices from competitors like
Microsoft and Google, will demonstrate that the PC is still evolving and that the
touch-screen tablet is just another successful move forward for the PC.<br /><br />
To the iPad bashers, I say, this device is probably not for you. But regardless, this
device will make computing much more accessible to people who are not computer-savvy.
While you can do anything with your PC (because you're a geek), for a lot of people
the PC is still a mysterious device about which they know very little. These people
will benefit greatly from a device that is much easier to learn and enables them to
avoid the mysterious aura surrounding the traditional desktop PC.<br /><br /><b>The Future of the Desktop</b><br /><br />
Any article about the iPad would be incomplete without discussing the future of the
traditional desktop PC. I believe the desktop PC will continue to exist for a long
time. However, it will gradually transition from being an entertainment device back
to being a business/productivity workstation. Basically, the desktop PC has many uses
that touch-screen devices cannot replace. For example, if you're a graphic designer,
you need the precision of a mouse in order to produce good artwork. If you're a programmer
or writer, you need the speed of a real keyboard in order to type efficiently. These
uses are likely not going to be replaced by touch-screen PCs.<br /><br />
I expect that the long term impact of the touch screen device will be that it reduces
demand for traditional PCs somewhat. People who are somewhat afraid of a full-blown
PC and only really use their PC for email &amp; web browsing will opt to go with the
touch-screen PC rather than the traditional PC. However, the reduction in demand for
traditional PCs will be very small, since many people will likely purchase both -
a traditional PC as well as a touch-screen PC.<br /><br />
There is no point in getting worried about the future of the desktop PC. The two types
of PCs will coexist for a very long time, just like laptops &amp; desktops have already
coexisted for several decades with no ill effects. In fact, the biggest effect that
the touch-screen PC will have on the overall PC market will be an expansionary one:
the overall PC market (including all form factors) will actually expand significantly
thanks to the now successful introduction of the touch-screen PC.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=e2b335fd-8fef-41c2-91fc-fe843224b473" /></div>
    </content>
  </entry>
  <entry>
    <title>Significant Probability of Dow Correction</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/03/23/SignificantProbabilityOfDowCorrection.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,813220af-b13b-410c-ab2c-a95f47ed1d4b.aspx</id>
    <published>2010-03-23T00:29:12.7648052-04:00</published>
    <updated>2010-03-23T00:29:12.7648052-04:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I'll be brief. We are now at a point where
the Dow Jones Industrial Average (DJIA) is<b> likely to correct substantially </b>over
the coming months. I assign this outcome a probability of over 40%, with a probability
of virtually 100% that the DJIA will make a substantial correction by November of
this year.<br /><br />
What do I mean by "substantial correction"? I mean 10% or more. This means about 1000
points or more. Likely far more.<br /><br />
So now where do I place the probability of a gain of 10% or more? That would mean
the Dow hitting at least 11,800. I would put that at about 40%. The irrational euphoria
has a high chance of going on much longer &amp; much higher than anyone expects it
to.<br /><br />
So given that, how should you act in this market? It is my belief that, at this point,
buying the Dow is no longer worth the risk of it going down, possibly as much as 50%,
over the coming months.<br /><br />
It is certainly time to sell the Dow, but not short sell it (yet). When it is time
to short, I will post another announcement on my blog that we have hit the top.<br /><br />
Once again, to summarize, <b>this is not the top</b>. But at this point you should
be cashing out &amp; sitting on the sidelines.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=813220af-b13b-410c-ab2c-a95f47ed1d4b" /></div>
    </content>
  </entry>
  <entry>
    <title>Too Much Cow Manure</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/03/10/TooMuchCowManure.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,4764125f-fc94-475d-bf30-5336f1a28a51.aspx</id>
    <published>2010-03-10T01:37:15.771-05:00</published>
    <updated>2010-03-10T02:05:14.6619173-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">There is a channel on YouTube called TheYoungTurks.
Watch a few of their videos. They are nothing more than a rehash of the mainstream
media (NBC, CBS, etc.). Yet that channel has 203 million views. It got me thinking...
203 million! That is probably more than NBC or FOX news! The channel spews out nothing
but the same elitist rhetoric seen on mainstream news channels, but with a more light-hearted
"comedic" approach.<br /><br />
203 million views. What does that say about the numb ignorance of Americans? No wonder
they elected Obama. Were they completely blind to the blatant machinations that led
to Obama's triumphant election victory? Or perhaps the genetically modified beef from
cattle raised ankle-deep in their own feces has finally managed to alter the brain
chemistry of the average American enough to keep them forever ignorant of the blatant
abuse to which they are subjected every day, preferring instead to watch mediocre
comedy mocking their stupidity, rather than wising up and examining the real dark
world which they now inhabit.<br /><br />
It's time to wake up, America. The world ain't pretty. Your country is falling apart.
It's not Alice in Wonderland, and the American Dream is the American Nightmare. Perhaps
my cries will never be heard, perhaps all of the warnings issued by countless people
will fall silently upon the dumb masses. No matter what, I can say with certainty
that the only thing that surprises me these days is the profound stupidity of the
average American.<br /><br />
I was in Virginia Beach. It was August, 2008, just months before the elections. I
asked a random person who they were planning to vote for in the elections. The response
I got was startling: Rudy Giuliani. Or maybe Hillary Clinton. They were undecided.
That is the stupidity with which a small minority of Americans are battling. The machine
that produced this stupidity is the same one that worships it every chance it gets.
It's the US media. It's the super-giants, ultra-giants, the Rupert Murdochs, the three-letter
channels that all look so familiar yet so intimidating in their grandeur.<br /><br />
I admit I am not the most informed person who can pass judgment on these sorts of
issues, but I believe I have enough knowledge at this point to realize that without
a free press, you cannot have an informed population. And without an informed population,
you cannot have fair elections. You cannot have democracy.<br /><br />
The press is the most powerful instrument of a democracy. Most people are too lazy
to research things for themselves. Most will happily accept whatever Brian Williams
tells them is the truth. The media can create such indecision that people will literally
go to bed the night before the elections not knowing who they will vote for. How do
they do that?<br /><br />
It is not solely the media's fault, but it does bear the majority of the responsibility.
The non-choice is ensured from the very beginning. The contenders that could challenge
the system are immediately weeded out by instilling powerful negative images in the
media. Candidates like Ron Paul are smeared and declared to be "cooks" or "nuts".
There is a powerful machinery involved in the pre-decision process, involving selection
of facts, creation of talking points, and so forth. By the time the average American
is ready to vote in the primaries, the media images are permanently perforated into
their skulls.<br /><br />
There is one way to fight the system, and it's relatively simple: start learning things
on your own. Unfortunately, the vast masses of ignorant Americans choose to remain
ignorant. There are now powerful forces outside the media working to ensure that Americans
remain ignorant, including vaccines, genetically-modified foods, synthetic foods,
drugs, etc. A whole environment is created to keep the American ignorant, obedient,
childish, and lazy. This cycle cannot be broken without major efforts, and therefore
is rarely broken.<br /><br />
The elite have a grand plan to save themselves and screw everybody else. They literally
believe themselves to be genetically superior to the "dumb masses." They consider
the dumb masses to be "cannon fodder, to be used as pawns in foreign policy." The
elite are insane and have to be stopped.<br /><br />
For the average dumb American, I have a simple one-step program for how we can all
stop this madness: non-cooperation. Simply stop delegating your power to these elite.
Take back your money. Take money from the bank and put it in gold. Ask your employer
to pay you in gold or silver. Stop dealing in fraudulent paper currency. Stop buying
things made overseas. Get to know your local farmer. Trade silver for food. Trade
labor for food. Barter becomes your new religion. Only deal with those who in turn
are not co-operating with the system. If you encounter a police officer or other public
official, educate them about the deep government corruption, and how they can subvert
this corruption by not cooperating with unjust laws or mandates. And most importantly
- vote. Make an informed vote, and choose the candidate who is aware of everything
I just said and has a proven record of not cooperating with the system. This is how
we can start to create our own reality, outside the corrupt power system imposed by
the elite with our permission.<br /><br />
Last but not least, ignorance is bliss only as long as you've still got a roof over
your head. Those who take the steps now to begin non-cooperation will be much less
impacted by the social collapse which is coming. Become informed and inform others.
Stop cooperating with the system. It's hard, but unfortunately it is the only way
that we can take back power.<br /><br />
Einstein said it best: "There are two things that are infinite - the universe and
human stupidity, and I'm not sure about the former."<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=4764125f-fc94-475d-bf30-5336f1a28a51" /></div>
    </content>
  </entry>
  <entry>
    <title>Buy two lottery tickets every week for the rest of your life</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/03/05/BuyTwoLotteryTicketsEveryWeekForTheRestOfYourLife.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,99e063f2-b288-4291-984c-b2cee13c76c0.aspx</id>
    <published>2010-03-04T20:35:49.977-05:00</published>
    <updated>2010-03-04T20:44:56.9250247-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">This was originally posted over on my other
blog (<a href="http://thelogicspace.blogspot.com/2010/03/ultimate-success-strategy-play-to-win.html">thelogicspace.blogspot.com</a>)
but I think it's important enough to post it here as well...<br /><br />
"<br />
I've recently developed a phrase I like to use to remind myself to take the time to
invest in myself. It's called "Play to Win": You've got to PLAY to WIN. Think of the
lottery: you MIGHT win IF you play, but you CERTAINLY won't win if you don't play.<br /><br />
You've got to think as if every action you take will result in the most spectacular
success even if it won't. Think of yourself as if you're constantly buying lottery
tickets. Every minute you spend is productive only if it has resulted in you buying
another lottery ticket. This idea is also sometimes called "planting seeds." In the
sense that, a tree will not grow unless you plant a seed. Planting a seed takes very
little time, but could potentially result in a big reward later on.<br /><br />
Have you ever found yourself thinking, "this is a waste of time. It hasn't worked
before, so why would it ever work?" I find myself thinking that a lot. When I release
a new product, when I write a new blog article, I think that constantly, because I
don't want to feel like I'm wasting time.<br /><br />
Whenever you find yourself thinking that something is a waste of time, you've got
to ask yourself two things:<br />
1. What have you got to lose?<br />
2. What have you got to win? What is the biggest potential win?<br /><br />
If the potential win (regardless of probability) is large enough, and the potential
loss is almost insignificant (e.g. a few minutes of your time), then why not do it?<br /><br />
You would happily buy a lottery ticket every week. Yet in all logic that seems like
wasted money &amp; time. But it's not. You have to apply this same idea to every action
that you take. Invest in your future. Plant seeds. Play to win -- emphasis on the
"play" part.<br />
"<br /><br />
So now you should understand why you must buy two lottery tickets every week for the
rest of your life. I'll be doing that starting this week. It's less than the cost
of two subway rides, but the payout could be substantial. I plan to play only when
the jackpot exceeds $10 million. I think that's a big enough payoff to be able to
retire and live well, but any less than that doesn't seem worth it to me.<br /><br /><b>Interesting fact:</b> if you buy two lottery tickets every week for 50 years, your
chances of winning lotto 6/49 are 1 in 2700 lifetimes. On the other hand, if you never
play, your odds are ZERO. I'll take 1 in 2700.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=99e063f2-b288-4291-984c-b2cee13c76c0" /></div>
    </content>
  </entry>
  <entry>
    <title>Ominous Sign: SEC Restricts Short Selling, Again</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/03/03/OminousSignSECRestrictsShortSellingAgain.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,7113ab3a-afee-4fc1-8123-aae0a2b3fa42.aspx</id>
    <published>2010-03-03T00:34:59.6141373-05:00</published>
    <updated>2010-03-03T00:34:59.6141373-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Last week, the <a href="http://dealbook.blogs.nytimes.com/2010/02/24/s-e-c-moves-to-put-limits-on-short-selling/">SEC
voted in favour</a> of limiting short selling on stocks that have fallen by more than
10%. This latest move echoes previous attempts by the SEC in 2008 to limit short selling,
during the collapse that occurred in September and October of 2008.<br /><br /><b>Are we in for another stock market crash?</b><br /><br />
While it's impossible to say with certainty, I think this is an ominous sign that
we may be headed for another rapid decline in the US stock market over the coming
months. We've certainly had the longest recovery rally since the Great Depression.
No uptrend lasts forever, and when this one turns around, we can expect nothing less
than a spectacular and terrifying decline.<br /><br />
I think it's a matter of <b>weeks</b> before some major downward moves in the stock
market. The probability of a crash is high enough to warrant evasive action.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=7113ab3a-afee-4fc1-8123-aae0a2b3fa42" /></div>
    </content>
  </entry>
  <entry>
    <title>Japan's Deflation Explained</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/03/03/JapansDeflationExplained.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,1bdc6449-f2e3-4952-b18a-6eb547c59480.aspx</id>
    <published>2010-03-02T22:23:27.597-05:00</published>
    <updated>2010-03-02T22:35:30.1883043-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Here's a handy chart that explains exactly
why Japan had "deflation" for nearly 30 years, and why the US will not experience
deflation anytime soon...<br /><p></p><img src="http://www.dacris.com/blog/content/binary/US_vs_Japan_moneysupply.png" border="0" /><br /><br /><b>Original Article:</b><a href="http://www.safehaven.com/showarticle.cfm?id=12842">US
Not Going Down Japan's Road</a> (Safe Haven)<br /><br />
I suggest you read that article for more in-depth analysis. Here's my quick summary:<br /><br />
Look how slowly Japan's M2 grew from 1992 until 2004. The average rate of growth is
just 2%.<br /><br />
How can you have inflation without monetary expansion? You can't. Japan clearly proves
it.<br /><br />
So when you hear a deflationista argue that Japan pumped money relentlessly into the
economy, that is simply not true. If they had done that, there would have been inflation.
But they didn't.<br /><br />
Now look at the US. Different story entirely. The US money supply expanded at a rate
of nearly 10% in 2008.<br /><br />
Bottom line, watch the money supply. If it grows, inflation will soon follow. It's
a law of nature. Like gravity. You can't argue against it and make it go away.<br /><br /><b>Update:</b> It turns out in 2009 the US money supply (M2) only expanded by about
2%. Could this be the start of a long term trend, or just a temporary anomaly?<br /><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=1bdc6449-f2e3-4952-b18a-6eb547c59480" /></div>
    </content>
  </entry>
  <entry>
    <title>Toronto residents must earn minimum of $35,000 per year</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/02/28/TorontoResidentsMustEarnMinimumOf35000PerYear.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,a0d6be98-997e-4e97-b7b6-6008550e5448.aspx</id>
    <published>2010-02-28T14:35:52.894-05:00</published>
    <updated>2010-02-28T14:44:26.0504347-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <b>Toronto residents must pocket $35,000
per year just to stay afloat.</b>
        <br />
        <br />
Yes. Anyone in Toronto who is earning less than $35,000 (net) per year is falling
behind and will be unable to retire.<br /><br />
This shocking conclusion is based on a careful calculation of required retirement
savings based on the cost of living. In Toronto, the typical cost of living is $2000
per month (including food &amp; housing).<br /><br />
For someone who earns $35,000 per year, what is left over after paying off living
expenses is just $10,000.<br /><br />
Now, assuming you are 25 and plan to work until 60, that means you can save up $350,000.
Assuming you've paid off the mortgage at 60 and your living expenses are reduced by
$1200, to $800 per month, that amount will allow you to last 36 years.<br /><br />
That should be just enough to get you to age 96.<br /><br />
The math is more forgiving if you increase the retirement age from 60 to 65, or to
70. However, even if you were planning to work until 70, you would still need to save
up $6,000 per year for every year you work (assuming you start saving at 25).<br /><br />
Even in this most forgiving case, you would still need to earn a net income of $31,000
per year. Still very close to $35,000 per year.<br /><br />
How much is $35,000 per year in terms of gross salary? $45,000. Yes, $45,000. That's
$23 per hour based on a 40-hour work week with two weeks vacation. $23 is more than
double the minimum wage.<br /><br />
Effectively, $23/hr ought to be the minimum wage in Toronto, because it's impossible
to get ahead on anything less than that (unless you continue living with your parents).<br /><br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=a0d6be98-997e-4e97-b7b6-6008550e5448" /></div>
    </content>
  </entry>
  <entry>
    <title>Do Repeat Yourself... If It's Easy</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/02/23/DoRepeatYourselfIfItsEasy.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,58bde692-7e87-4a6f-b116-0d4b7810be1f.aspx</id>
    <published>2010-02-23T00:34:18.779-05:00</published>
    <updated>2010-02-23T00:34:49.3725943-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Here's an article I've posted over on my
other blog. It's worth a look so I'm cross-linking it here:<br /><br /><a href="http://thelogicspace.blogspot.com/2010/02/do-repeat-yourself-if-its-easy.html">Do
Repeat Yourself... If It's Easy</a><br /><br />
"<b>How many times have you thought of a great idea only to discover that somebody
else has already done it?</b>"<br /><br /><a href="http://thelogicspace.blogspot.com/2010/02/do-repeat-yourself-if-its-easy.html">(read
the full article)</a><br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=58bde692-7e87-4a6f-b116-0d4b7810be1f" /></div>
    </content>
  </entry>
  <entry>
    <title>Upward Mobility is Dead: How persistent unemployment will shape the next decade</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/02/20/UpwardMobilityIsDeadHowPersistentUnemploymentWillShapeTheNextDecade.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,68b71832-c9e0-4045-b17b-6ae82f85b65c.aspx</id>
    <published>2010-02-20T14:11:20.4707431-05:00</published>
    <updated>2010-02-20T14:11:20.4707431-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Science" label="Science" scheme="http://www.dacris.com/blog/CategoryView,category,Science.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">This is a follow-up article to this majestic
piece of writing: <a href="http://www.theatlantic.com/doc/201003/jobless-america-future">How
a New Jobless Era Will Transform America (The Atlantic)</a><br /><br />
After reading the above article, a few ideas popped into my head which may not be
known to the writer, given that the writer (and his/her sources) are probably members
of an older generation. However, since I am a member of the so-called "generation
Y" or the "echo boom" generation, I may be able to shed some light on what I am thinking
(and maybe what other members of my generation are thinking) with respect to this
issue.<br /><br />
First, it's evident at this point that the idea of upward mobility - the idea that
you could work your way up the corporate ladder - is no longer an idea that can be
embraced. It is far too risky. It used to be that if you worked hard enough, you would
eventually end up in a highly-prestigious position, earning lots of money, and having
a fair amount of authority (all of which are highly potent aphrodisiacs to undisciplined
individuals).<br /><br />
OK, I said a mouthful so let's backtrack a little. What is an "undisciplined individual"?
Put simply, all humans have instincts and most humans make decisions solely based
on feeling (emotion), rather than rational thought. In basic sociology, a human has
several aphrodisiacs which elevate his/her sense of self-worth. These are (to name
a few): power, wealth, and social status. Most individuals act as robots seeking these
three aphrodisiacs for their entire lives. Unless you are aware of this fact of nature
and discipline yourself to be content with seeking happiness in other forms, you are
considered an "undisciplined individual," who is purely seeking to maximize one's
social status, power, and/or wealth. The vast majority of Americans are what I consider
"undisciplined individuals."<br /><br />
Now, believe it or not, there are many people in the world who define themselves largely
by the position they hold, or by the organization in which they are members. This
is one way you can define yourself, but what happens when you lose your position,
or the organization you are in collapses and you're left without a position? It is
my belief that if you define yourself in such a way, you will suffer enormous emotional
scars resulting from your "break-up" with your organization. In fact, it is almost
identical to the break-up of a marriage. In a sense, many people are "married" to
their jobs.<br /><br />
So what is the antidote to this madness? And why do I consider it "madness"? Well,
it's madness because first of all, you are probably not a founder of the organization
in which you are a member. Quite probably you have a very low-ranking position within
that organization and even more probably you will never reach the level of power /
control that the founding member has. That's number one. Number two, it's madness
because in this economic environment, anybody can be fired from any position for any
reason (or no reason at all!). While this has always been the case to some extent,
it is only now that it is happening on a mass scale, reaching levels where the risk
of being fired from a position to which you are married actually exceeds the benefit
of "becoming married" to that position.<br /><br />
So what is the antidote to the madness? You have to think clearly and look at the
facts. The facts are that these worker-organization relationships are becoming increasingly
more transient. This idea was put forth by Alvin Toffler in his 1970 book "Future
Shock," in which he describes a condition where relationships (of any kind) become
increasingly more transient in the not-too-distant future. This has come to pass in
the form of increased divorce rate as well as increased job insecurity. I think there
is no question at this point that Toffler was right and that this trend will continue
for a long time.<br /><br />
So given all that, it is far more rewarding to think of yourself in terms OTHER THAN
your relationships with other organizations. When I look at myself, I value myself
based on my ability <b>to solve problems creatively</b>, or by my ability to <b>think
logically</b>. These are attributes that are fundamental to survival, but which have
been almost eternally ignored at the societal level. I believe these attributes are
far more fundamental than anything else. You need to define yourself based on your
fundamental attributes that make you a resilient individual in the face of any natural
or environmental situation. Always avoid the trap of thinking that your identity is
defined by what others think of you. This is a fundamental shift in mentality that
needs to occur on a massive scale. This shift is what separates a "disciplined individual"
from an "undisciplined individual." We, as humans, need to become far more self-disciplined
and far more aware of the destructive aphrodisiacs I mentioned earlier.<br /><br />
As an aside, two things I try to avoid constantly are:<br />
1. Believing (or becoming attached to) others' opinions of me.<br />
2. Following popular beliefs or behaviors unquestioningly.<br /><br />
Coming back to the idea that upward mobility is dead, imagine you start out your career
as a Walmart cashier. Then, 20 years later you're back at Walmart as a cashier. If
you grew attached to the idea that you would advance over time, you would be devastated
to find yourself 20 years later in exactly the same position. However, if you defined
yourself by other characteristics which may not be as socially respectable (yet) as
the idea of career advancement, you would be relatively unaffected by your career
path, however erratic it may be. It is an idea from many oriental religions which
must be embraced: "avoid attachment to things which are invariably transient."<br /><br />
Sadly, many are refusing to accept the new reality and construct a belief system which
is more consistent with it. Instead, it appears that many are resorting to having
children as a way to escape their insecurities and gain social approval. It's understandable
that we are social beings. And it requires an enormous shift in thought patterns in
order to avoid the common traps that cause us to do undesirable things purely for
social approval. Yet, in order to evolve as a species, we must engage in precisely
this sort of detachment from the base aphrodisiacs that have driven society for generations.
So if you find yourself unemployed, become a Buddhist monk. It's a step in the right
direction.<br /><br />
To close off, I will give one last example which illustrates what can happen when
jobs disappear but the parasitic aphrodisiacs of power and social approval remain.
In Philadelphia, white neighborhoods are now becoming increasingly black. White males,
who have held blue-collar and even white-collar jobs have now been unemployed for
years. Some are now resorting to precisely the same kind of behavior that blacks have
been struggling with for decades: fathers abandoning their children, drug dealing,
violent crime, and domestic violence. This is all because, fundamentally, blacks are
no different from whites. It is only the economic circumstances which produce a difference.
Now that the differences in economic circumstances between blacks and whites are beginning
to narrow, we are seeing a convergence in terms of behavior patterns. Unfortunately,
this convergence is happening in the wrong direction: instead of blacks becoming more
affluent, whites are becoming poor.<br /><br />
All too often, persistent widespread poverty results in a loss of dignity among members
of a society. This is certainly understandable, but there are many societies which,
by our definitions of wealth, are extremely poor. Yet, these societies are very cohesive
and peaceful. We do not have to go through a break-up of society as a whole as a result
of increased overall poverty. In fact, the society of the 1930s was very cohesive
and generally in good spirits. People helped each other. We should work toward a healthier
society, by valuing those things which are fundamental to survival: knowledge, and
creative problem solving, rather than those things which are the primal aphrodisiacs
of undisciplined individuals.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=68b71832-c9e0-4045-b17b-6ae82f85b65c" /></div>
    </content>
  </entry>
  <entry>
    <title>13% of US population on food stamps</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/02/20/13OfUSPopulationOnFoodStamps.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,604a6e91-e6bd-4eb2-8b97-3f4d68d16d76.aspx</id>
    <published>2010-02-20T13:23:01.9053174-05:00</published>
    <updated>2010-02-20T13:23:01.9053174-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">The <a href="http://www.frac.org/html/news/fsp/2009.10_FSP.htm">latest
food stamp report</a> is out: 38 million people in the US are now (October, 2009)
on food stamps.<br />
Here is the stunning part: "an increase of nearly<b> 6.9 million people </b>compared
with the prior October."<br /><br /><b>Questions arise:</b><br />
- How is it that 38 million people in the US are on food stamps yet only about 20
million are considered unemployed?<br />
- 7 million more people are on food stamps now than in the fall of 2008. Where is
Obama's recovery?<br />
- What are the social consequences of having one eighth of the US population on food
stamps?<br /><br />
For the social consequences, I will write up another blog post shortly, as things
are quite troubling.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=604a6e91-e6bd-4eb2-8b97-3f4d68d16d76" /></div>
    </content>
  </entry>
  <entry>
    <title>Why C++ Sucks (Part 2)</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/02/16/WhyCSucksPart2.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,1b47f6df-d1a8-443f-9fff-ba4831fee87c.aspx</id>
    <published>2010-02-15T21:41:33.848-05:00</published>
    <updated>2010-02-15T23:21:48.0930983-05:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <b>Recap</b>
        <br />
        <br />
First of all, let me clarify that I think C is a great language and excellent for
the development of low-level system software. I think C++, specifically, adds an extra
unnecessary layer of complexity which makes it less suitable for low-level work but
in some cases it's the only option. I would readily choose C over C++ for low-level
software projects (e.g. drivers).<br /><br />
When dealing with C code, I would aim to write as little code in C as possible and
provide an interface for writing the remainder of my code in another "safer" language,
such as C# or Java. By "safe" here I mean something that is detached from the OS,
so that it has a lower risk of corrupting the system's memory or file system upon
failure. Again, C# and Java run in virtual machines which provide an extra layer of
safety should things go horribly horribly wrong. The layer of safety may not be perfect,
but it's better than having no layer of safety at all.<br /><br />
Also, when I said <a href="http://www.dacris.com/blog/2009/02/10/WhyCSucksSortOf.aspx">C++
sucks (sort of)</a>, I meant that C++ sucks for most types of applications (e.g. GUI
or web applications). There are some cases where C++ is a decent choice, but those
cases are rare and limited in scope. For the most part, C++ is just plain awful, because
it consumes more time and produces more lines of code than either C# or Java. It also
induces programmers to produce substandard code and has the inherent property of creating
very difficult-to-debug code.<br /><br />
There are certainly cases where using C++ is unavoidable. When such a case arises,
it does not usually mean that C++ as a language is in some way superior. It just means
that C++ is not completely useless. I still write C++ code occasionally, because I
have to.<br /><br /><b>The Debate Goes On</b><br /><br />
Recently I came across an article that <a href="http://efxam.blogspot.com/2009/10/why-c-doesnt-suck.html">attempts
to refute my claim</a> that, in most cases, C++ sucks.<br /><br />
I have a couple of remarks related to that article:<br /><br />
"What do you do when writing cross-platform code in C and you need to make heavy use
of the filesystem?"<br /><br />
I assume by "heavy use" here you mean low-level operations. In that case, you need
to make a file system driver in C (or whatever language the OS supports for drivers)
and expose APIs that can easily be called from a higher-level Java or C# client application.
Again, minimize the integration between high-level application code and low-level
driver code.<br /><br />
"On that note, nobody, and I mean nobody should be using C++ without Boost"<br /><br />
If that is the case, why is Boost not a feature of C++? Maybe it will make its way
into C++0x? The very fact that Boost exists indicates that C++ is a deficient language.
Boost is merely a patch over those deficiencies. And when I talk about C++, I'm also
referring to the standard library as well as the language itself.<br /><br />
"I guess the author has never worked on embedded software or real time systems. Or
games for that matter. Or I guess anything other than canned business software."<br /><br />
Actually I have built games using DirectX in the past. I can confidently say that
C++ was not needed for any feature. Given the extra time that C++ adds to the development
of any app, being able to use any other language (and minimize the use of C++) is
quite important.<br />
Here is a simple 3D demo I built with OpenGL and Java in 4 intensive days of coding: <a href="http://www.dacris.com/article.aspx?name=demos">http://www.dacris.com/article.aspx?name=demos</a>.
I probably would not have been able to perform such a feat with C++.<br /><br />
"C++ has a keyword called sizeof() that lets you determine how big a pointer is."<br /><br />
Again, that's nice, but I'd rather not use pointers and not write sizeof() statements
all over the place. The time I save by not thinking about pointers (and by not reading
code that contains pointers) is enormous.<br /><br />
"Perhaps an even better answer is in order though. I won't use any Gui toolkit, because
I won't develop GUI code in C++. Why would I use the language for something which
it doesn't excel at?"<br /><br />
Exactly. If you're content with building console applications, use C++. No problem.
But for any kind of UI, C++ just sucks.<br /><br />
"C++ has a very strong, flexible type system."<br /><br />
Flexible, yes. But the problem is it's also lacking some very useful features compared
to C# or Java. For example, how do you enumerate a class's fields or properties in
C++? How do you detect that class A inherits class B at runtime, or get an object's
type at runtime? In C# this is called "reflection." There is nothing like it in C++.
For this reason, it's very difficult to do generalized serialization in C++. In C#
and Java you can literally serialize any type.<br /><br />
"Code generation"<br /><br />
I can't think of any reason why you would ever want this. Macros and templates are
a symptom of bad design. Instead of using code generation to deal with repetitive
code, why not build a reusable component? Generated code is hard to maintain, hard
to understand, hard to verify, and hard to debug.<br /><br /><b>Write as Little Code as Possible</b><br /><br />
Let me end by saying, I'm not a "substandard programmer." I'm merely a lazy programmer.
I like to write as little code as possible. I keep track of the lines of code in all
my projects, to make sure that number stays low. I guess if I was paid by KLOC I'd
be pretty broke.<b></b><br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=1b47f6df-d1a8-443f-9fff-ba4831fee87c" /></div>
    </content>
  </entry>
  <entry>
    <title>Mediocrity: The Lifeblood of Modern Businesses</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/02/10/MediocrityTheLifebloodOfModernBusinesses.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,7366bde1-c92a-47ef-98ef-c0e8d653df59.aspx</id>
    <published>2010-02-09T19:49:28.1700662-05:00</published>
    <updated>2010-02-09T19:49:28.1700662-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Have you ever woken up one morning thinking
you deserve a raise? Well, if you think logically, if your performance has been excellent
(praised by your boss), you'd think you definitely deserve a raise. Not quite. This
type of logic no longer applies in today's business environment. Shocked? Confused?
Don't worry - I'll elaborate.<br /><br />
Imagine a stellar employee, praised often by his/her manager, is working at a salary
of $60,000/yr and gets called into the manager's office for a talk. The talk is about
how the employee is exceeding the employer's expectations and the employer wants to
assign the employee duties that will be more challenging and possibly more useful
for the business. The employee is certainly excited, thinking he/she might end up
getting a raise. The employer finally reveals the key figure: the salary. It's $45,000/yr
and requires that the employee sign some additional restrictive agreements that are
not applicable in the employee's current position.<br /><br />
Is the employee being promoted or demoted?<br /><br />
From the employer's perspective, the employee is being promoted. Duties are being
expanded and greater responsibility is placed on the employee. But, from the employee's
standpoint, things are not quite so rosy. The employee sees a decrease in salary,
and an increase in work and in restrictions. What benefit is there for the employee?
... Give up? There is no benefit!<br /><br />
That's right, the employee is being demoted for achieving excellent performance. Outstanding
performance is being punished rather than rewarded. I would be willing to bet that
this is happening in a lot of companies these days. In fact, I'd go as far as to say
it's becoming a market-wide phenomenon.<br /><br />
So don't be shocked if an employer offers you a demotion for exceeding expectations.
The world is, as they say, a little more complicated than it appears to be. This paradox
is, like most paradoxes, a mind-boggling one. And its implications are huge. It means
that the best employees are those who walk the fine line between doing too little
and doing too much. They are those who stay inside the box, and live a life of mediocrity.<br /><br />
In the world of business, mediocrity is rewarded. Creativity is punished. I've just
given a concrete example based on personal experience. Yes, it's based on a true story.
When you add it all up, isn't it better to just mind your own business?<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=7366bde1-c92a-47ef-98ef-c0e8d653df59" /></div>
    </content>
  </entry>
  <entry>
    <title>Windows 7 on Older PCs</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/01/17/Windows7OnOlderPCs.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,909aa9d6-114a-49c8-9c77-149affb59f03.aspx</id>
    <published>2010-01-17T14:24:58.179-05:00</published>
    <updated>2010-01-17T14:48:20.4451635-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I would like to take this opportunity to
encourage users of old PCs (pre-2005) to <b>take extra precautionary steps</b> before
installing Windows 7.<br /><br />
Otherwise, you could end up<b> baking</b> your hardware. Yes, baking, in the oven.<br /><br /><b>How I ended up baking my laptop:</b><br /><br />
I installed Windows 7 on an older Toshiba laptop (from 2004) with a GeForce Go 5200
graphics card. First, it was not recognized - Windows 7 actually decided to use the
Standard VGA Adapter driver for the card, which forced me down to 1024x768 resolution
and extremely slow rendering. Well, I decided to look for a driver. Toshiba didn't
have one on their site, NVIDIA no longer supports the 5xxx series, so I ended up finding
a shaky third-party (modded) driver and modded it a bit myself to get it to actually
recognize my card.<br /><br />
So after all that, I installed the custom modded driver and it seemed to work great
at first: I even had Aero Glass! But little did I know there was a major problem lurking
in the shadows... A few days after installing the new driver, I start up the laptop
and it starts displaying columns of random flashing characters (at the BIOS screen).
Immediately I concluded that this was a video card problem - it had happened to me
before, with a GeForce 4 Ti4200 card.<br /><br />
Great, so now I had a dead video card. I looked around the web for people who had
experienced the same problem, and found one who took his laptop to a repair shop and
the technicians there diagnosed it as a "BGA failure." So I looked for BGA-related
problems and found what seemed to be a re-occurring theme on various forums: "bake
at 375*F for 5-10 mins". Surprisingly, those who tried it said it actually worked!<br /><br />
But how does it work? The BGA (Ball Grid Array) is what a video chip is most often
connected to. This thing is just an array of tiny balls of solder that can melt at
very low temperatures (even 120*C). When the video chip gets insanely hot (like over
100*C), it can warp the BGA so much that the chip disconnects from the balls and you
end up with the problem I had (random characters at the BIOS screen). The solution,
apparently, is to heat up the entire PCB (in this case the motherboard) evenly at
a high temperature, so that the solder melts and reattaches itself to the chip. The
prescription, in my case, was to bake at 375*F for 7 minutes.<br /><br />
Of course, I had to remove anything that might melt or explode - like batteries. I
made sure to remove even the CMOS battery and remove all attachable parts (RAM, hard
drive, etc.). I only baked the actual motherboard. But at the end, it worked! The
video is fixed now, thanks to BGA baking!<br /><br />
The problem was caused by Aero Glass overheating my card. I'm 99.9% sure of it. And
I'm also 99.9% sure that's why NVIDIA doesn't have any official Vista / 7 drivers
for it. So immediately when I booted up my laptop after baking, I booted straight
into Safe Mode, removed the graphics driver, and rebooted into Windows 7. Then, I
reinstalled the graphics driver and made sure I was on the <b>Windows 7 Basic</b> theme,
without Aero Glass. I also disabled the DWM service, so that there is no freak occurrence
where Aero Glass gets re-enabled.<br /><br /><b>Precautionary steps that would've saved my behind:</b><br /><br />
Like I was saying, with Windows 7 on older hardware it's very important to take a
few extra precautionary steps:<br /><ol><li>
Run the <b>Windows 7 Upgrade Advisor</b>. Ensure that your essential hardware (the
stuff you can't boot up without) is supported.</li><li>
Take an inventory of your hardware. For me, the easiest way to do this was to just
run <a href="http://www.dacris.com"><b>Dacris Benchmarks</b></a> (version 8.0) and
create an HTML report under the System Information tab. This makes it much easier
to find drivers online when everything in Device Manager is listed as "Unknown." But,
if you have perfect memory, you don't need to do this.<br /></li><li>
Make sure you download any necessary network adapter drivers before you install Windows
7. Otherwise, you won't have Internet access. Usually the Windows 7 Upgrade Advisor
will tell you if you need to do this, but do it even if it doesn't tell you - just
in case - unless you have another PC connected to the Internet and a USB key.</li><li>
For hardware that is shown as not compatible in Windows 7 Upgrade Advisor, try to
find official Windows Vista drivers for it. If no official Windows Vista drivers exist,
and the device is essential, you may want to reconsider upgrading to Windows 7.</li><li>
For software that is shown as not compatible in Windows 7 Upgrade Advisor, try to
find a newer version online that supports Windows Vista. If no such version exists,
and the software is essential, you can still upgrade to Windows 7 but the software
will probably need to be run in <b>XP Mode</b>. While XP mode is great, there are
some things it can't do - like Direct3D. So if the software in question is a game,
you may want to keep Windows XP. In that case, I would recommend dual-booting Windows
7 and Windows XP.</li></ol>
Now, in fairness, I couldn't have run the Windows 7 Upgrade Advisor on that Toshiba
laptop I mentioned, because it had no working OS at the time (the reason I installed
Windows 7 was because XP died). I should've really just reinstalled XP and then run
the Windows 7 Upgrade Advisor.<br /><br /><b>A side note - hardware manufacturers (especially NVIDIA) have failed us:</b><br /><br />
While I was thinking about baking my graphics card, I had a thought: was it really
the fact that Vista had such a different driver model that caused hardware manufacturers
to produce unreliable drivers? Did hardware manufacturers really not have enough time
to adapt to Vista? I remember Microsoft in 2005 mentioned that any PC made in 2005
or later would be able to run Windows Vista. So hardware manufacturers in fact had <b>2
years</b> to produce Vista drivers. The Vista development cycle lasted 5 years. Plenty
of time for IHVs to get involved, learn the Vista driver model, and develop drivers
in consultation with Microsoft.<br /><br />
So who really failed here? Microsoft? Was NVIDIA's discontinuation of support for
the GeForce 5xxx line a Microsoft decision? Who is to blame for NVIDIA's inability
to produce drivers? I would say it's NVIDIA that's to blame here. I've had so many
NVIDIA cards fail on me: I witnessed a friend's NVIDIA card go up in flames, literally,
then my own NVIDIA card did the same thing! Then, I had an older NVIDIA GeForce 4
Ti card that died with the classic BGA failure, then I had this latest failure: another
NVIDIA card. That's four NVIDIA cards, three of which were mine. So out of all the
NVIDIA cards I've ever had (about 5), only two remain. Now, I've had my share of ATI
cards (roughly 5) and not a single one has ever failed. Not one.<br /><br />
Sorry NVIDIA, but I'm afraid I must buy ATI cards from now on. Sure, NVIDIA's drivers
are more polished, and sometimes NVIDIA wins in terms of performance, but the cards
rarely last very long. I would urge anyone who is thinking of purchasing an NVIDIA
card to think twice and consider the ATI alternative, and think of which card you'd
most likely have to bake. Now, of course, if you like baking, NVIDIA is your friend.
:)<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=909aa9d6-114a-49c8-9c77-149affb59f03" /></div>
    </content>
  </entry>
  <entry>
    <title>Windows 7 Smartphone to be Revealed at Mobile World Congress</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/01/16/Windows7SmartphoneToBeRevealedAtMobileWorldCongress.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,cb912c13-ef43-4ecc-88e1-3ef3f7ac283c.aspx</id>
    <published>2010-01-15T23:26:41.959844-05:00</published>
    <updated>2010-01-15T23:26:41.959844-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Microsoft is keeping unusually quiet about
their mobile strategy these days. From the various stories I've been reading on the
Internets, it looks like MSFT is set to announce a major breakthrough at the Mobile
World Congress next month that has the potential to be an iPhone killer.<br /><br /><b>My prediction:</b> The first Windows 7 smartphone will be announced at the Mobile
World Congress, along with APIs for smartphone programming on Windows 7 that match
the APIs provided by Apple for the iPhone.<br /><br />
But, we'll just have to see...<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=cb912c13-ef43-4ecc-88e1-3ef3f7ac283c" /></div>
    </content>
  </entry>
  <entry>
    <title>Technology Innovations of the Last Decade</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/01/09/TechnologyInnovationsOfTheLastDecade.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,dd2b466b-9bc6-41da-80ae-b929d91c2e93.aspx</id>
    <published>2010-01-09T00:28:05.0775805-05:00</published>
    <updated>2010-01-09T00:28:05.0775805-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <b>KEY TECHNOLOGY INNOVATIONS OF THE 2000s
THAT MOST OF US USE EVERY DAY:</b>
        <br />
- LCD monitors and TVs<br />
- Solid State Drives (SSDs)<br />
- Cloud computing<br />
- Wireless networking (WiFi/802.11g)<br />
- Multi-core processors<br />
- USB flash drives<br />
- Streaming audio / video<br />
- Torrents<br />
- Online game consoles<br />
- Touch screens<br />
- Bluetooth<br /><br /><b>KEY TECHNOLOGIES THAT DIED IN THE 2000s:</b><br />
- Floppy disks<br />
- CRT displays<br />
- Modems<br />
- DOS games<br />
- VHS tapes<br /><br /><b>PREDICTED TRENDS FOR 2010s:</b><br />
- Software development re-focuses on hardware limitations &amp; performance optimization
(yes, hardware is still very limited!)<br />
- Streaming 3D - enormous worlds with terabytes of content loaded from the web in
real-time on your mobile phone or gaming console<br />
- Pen-like computers &amp; 3D glasses - this is the next logical combination of input/output
devices overtaking the old PC &amp; monitor<br />
- Popular novels become 3D-ified - entertainment now puts YOU in an immersive 3D world
of fantasy - be on Mars battling aliens<br />
- Enhanced vision - while you wear 3D glasses, your PC will see the real world for
you in many ways: real, infrared, X-ray, and so on<br />
- The OpenWorld3D project: a perfect online replica of the entire Earth as a 3D world
(with buildings, streets, cars, weather, etc.)<br />
- Collaborative 3D modeling online - 3D model wikis are born: allowing the online
community to build 3D models collaboratively, online<br />
- 3D will be THE buzzword of the decade, like "online" was for the last decade; expect
highly immersive &amp; realistic 3D worlds<br />
- Flexible paperlike screens allow creation of rollable (and maybe even foldable)
tablet PCs and phones - OLED will make this happen<br />
- The data web: a computer-friendly version of the entire world wide web, allowing
greater sharing of data between sites<br />
- The Internet goes 3D: toward the end of the decade, expect more and more websites
to be full-blown 3D worlds<br /><br />
Quick! How many times did I mention 3D?<p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=dd2b466b-9bc6-41da-80ae-b929d91c2e93" /></div>
    </content>
  </entry>
  <entry>
    <title>Savings = Power</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2010/01/04/SavingsPower.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,fdce87ce-15e6-4da2-92fa-0534daa3c410.aspx</id>
    <published>2010-01-03T20:56:55.4807157-05:00</published>
    <updated>2010-01-03T20:56:55.4807157-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">It was about 4 years ago when I started
saving money for the first time. I opened an ING Direct savings account. Didn't know
what I was going to do with it all, but I knew one thing: nobody was saving their
money. There had to be a reason. Not only that, but saving was frowned upon. It still
is. "Live your life, man!" is what everybody would say. But no. I was saving every
penny.<br /><br />
At times, I found it somewhat absurd. Why should I keep saving? What's the point?
Why not live for today? Life is short, after all. But I kept saving. I decided to
treat it like an experiment. I wanted to find out where it would take me. What advantages
would I gain (if any) from saving as much as I can?<br /><br />
Mind you, 4 years ago I was 19 years old and was just becoming acquainted with the
vastly complex world of finance. I didn't even know where exactly to put my savings.
CDs? GICs? RRSPs? What does it all mean?<br /><br />
So 3 years ago I started researching finance, in depth. I started reading online materials
on stocks, bonds, GICs, money markets, and everything else. Basically, I wanted to
become aware of all the options I had.<br /><br />
A few months passed, it was July of 2007, and I was observing the stock market. I
observed one thing: stocks had been rising since 2002. So, it had been 5 years of
continuous rise. If I put my money in stocks now, I reasoned, I would probably lose
a whole bunch of it when the stock market crashes (at the time I figured it was a
matter of months before the next crash).<br /><br />
So I decided to hold off on buying stocks and keep exploring. Maybe there was something
I could put my money into that wasn't just a plain vanilla savings account. I turned
my eyes toward inflation. At that point, my only recollection of inflation was the
disastrous hyperinflation that my parents experienced in Romania during the 1990s.
I remembered clearly that there was a time when every week the price of bread would
double. I wondered if something like that could happen again, in North America.<br /><br />
After doing a bit of research on the CPI and noticing that inflation had been going
on, though at a slower pace, in the western world as well, I realized there was really
no difference between Canada and Romania in terms of currency. Fundamentally, the
currency system was exactly the same. So, technically, even though my savings account
was CDIC ensured, the purchasing power of that money was not.<br /><br />
I decided to look for ways of protecting against inflation. Initially, my idea was
to actually start an inflation insurance firm. Yes, I was determined to sell inflation
insurance!<br /><br />
But there already was inflation insurance - and in October, 2007, I finally found
out what it was. Gold. My research quickly took me on the path of precious metals,
which had been inflation-proof for thousands of years. A good enough track record,
I figured.<br /><br />
Great, so I decided to move some of my savings into gold. Of course, I realized it
must not be too much, because gold is extremely volatile. Not only that, but gold
had been going up for 6 years - longer than the stock market. Surely it was due for
a correction. I started small, and moved slowly, making sure that my bullion position
never exceeded the "safe" limit that I had set for myself.<br /><br />
But how did we end up talking about gold? The topic was savings. In general. And why
it's important to have savings.<br /><br />
Well, first I must make it clear that gold is the only true form of savings. Paper
depreciates, and is vulnerable to political turmoil. Stocks are risky - companies
go under all the time. Real estate also depreciates and is vulnerable to political
turmoil. If you want something that can withstand many generations and has a track
record of preserving value through time (which is what savings is), that something
is gold, and silver. Precious metals.<br /><br />
Now we can talk about why savings is power. What does it mean to have savings? It
means you have the power to readily take on adversity, for a prolonged period of time,
in the hope of achieving a greater income. For the individual, it means you can go
without a job longer, so you have the latitude to negotiate higher pay in full view
of the risk of remaining unemployed, because that doesn't bother you, because you
have savings. It means you can explore new business ideas and have no fear of failure,
because you know you have savings.<br /><br />
But this applies not only to individuals. Savings is power for countries as well.
You see, the country that is able to take on the greatest adversity for the longest
period of time will come out on top. Wars are won by those countries that have accumulated
the greatest savings. In World War II, the US had the most gold of any country in
the world. The US won the war and continued to dominate the world for decades thereafter.
Remember: gold is savings, and savings is gold.<br /><br />
Now, 4 years after I started saving, I think I can finally appreciate the power of
savings. I see now that debt is servitude, and savings is power. For you see, those
who are in debt are subservient to those who have the savings. This has always been
the case for all of time. Which side are you on?<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=fdce87ce-15e6-4da2-92fa-0534daa3c410" /></div>
    </content>
  </entry>
  <entry>
    <title>Predictions for 2010</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/12/31/PredictionsFor2010.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,d41d4941-1455-4a7d-9813-15b5c9cb3140.aspx</id>
    <published>2009-12-31T17:02:46.2959074-05:00</published>
    <updated>2009-12-31T17:02:46.2959074-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">My 10 predictions for 2010:<br /><br /><ol><li><b>Inflation will surprise everybody.</b> Watch prices carefully. Everything will
be up 10-15% by summer. Your lunch will no longer be $7, but $10, and soon $12. Your
bus ticket will no longer be $3, but $4 and soon $5. All in 2010.</li><li><b>Revolution will surprise the powers that be.</b> The US is ripe for a revolution.
Especially when it becomes perfectly clear that Obama has done nothing but lie, and
that the propaganda machine around Obama is more powerful and more terrifying than
what Bush could've ever dreamed of.</li><li><b>The big important theme for 2010: Cost cutting.</b> The words "budget" and "low
cost" will be what keep most businesses alive. It'll be about stretching every dollar,
stretching every penny, despite the growing unacknowledged inflation.</li><li><b>China will be a big story in 2010,</b> specifically recognition that China is now
the world's dominant economic superpower and that US treasuries will soon be liquidated
en masse. Furthermore, China will be a story because all of the inflation we'll be
seeing will be originating directly from China!</li><li><b>Not to be outdone, mobile phones will go big in 2010 (or rather, small).</b> There
will be a surprise in the mobile market that neither Google nor Apple will appear
to have prepared for - and that will come from Microsoft. Google, Apple, you have
been warned! Yes, we're talking about Windows 7 phones.</li><li><b>Steorn, and a few others, will surprise the oil companies.</b> Yes, free energy
will arrive in 2010, if you know where to look. Steorn will be doing a demo early
in the year, so it's pretty much a foregone conclusion. The human race has reason
to celebrate, and reason to rise up!</li><li><b>Electric cars will reach power parity with gas-powered cars.</b> Range will be
hundreds of miles on a single tank. Batteries will charge in seconds! You have been
warned...</li><li><b>Government will expand to take over every aspect of our lives.</b> Yes, this is
a sad one, but as private sector jobs disappear due to income tax bracket creep caused
by inflation, government will expand to take over nearly every aspect of industry.
We could see 90% of jobs becoming government-run or government-backed in some way.</li><li><b>Masses will be waking up, in a surprising way.</b> TV will have a decreasing influence
in everyday life, and you will become surprised to know that your next-door neighbor
knows as much about the New World Order as you do, plus a lot of other things about
free energy, UFOs, and other "black-listed" knowledge.</li><li><b>Wage inflation, yes wage inflation, will begin.</b> Your salary will probably be
up 50% by the end of the year, but inflation in everything else will have been closer
to 100%.<br /></li></ol><br />
Overall themes for 2010: surprise, reform, and revolution! Change will come, but not
because of Obama.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=d41d4941-1455-4a7d-9813-15b5c9cb3140" /></div>
    </content>
  </entry>
  <entry>
    <title>Philosophical Bull and Gnostic Brain Flatulence</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/12/27/PhilosophicalBullAndGnosticBrainFlatulence.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,a49454c2-db0f-47ae-b5d8-0b0acfe764b2.aspx</id>
    <published>2009-12-27T04:38:11.536-05:00</published>
    <updated>2009-12-27T04:46:45.8650757-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Science" label="Science" scheme="http://www.dacris.com/blog/CategoryView,category,Science.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Is time linear?<br />
Does every interval of time contain the same amount of information?<br />
What does time contain anyway?<br /><br />
Time is a container for change. Time contains the delta between one state of the cosmos
and another. Each finite interval of time contains within it the amount of change
that has occurred from the beginning of that interval to the end of that interval.<br /><br />
In a sense, change is novelty and novelty is change. Novelty is merely a synonym for
change. So when we think about novelty theory, to refer back to the work of Terence
McKenna, we're really analyzing the content of time.<br /><br />
We know that the content of space is matter, and energy. But what is the content of
time? It's a perplexing question for those who cannot see the logical conclusion that
time in fact contains information. For it is information that informs change. Information
is nothing other than change, and change is information. Novelty is therefore information.
We're running around in circles describing the same phenomenon with different words,
each word trying to out-grandiose the others.<br /><br />
But the fact is simple and yet stunning: Time contains information, much like how
space contains matter.<br /><br />
Now, we know another interesting fact from basic observation of the world around us,
and that is that information is cumulative. You never lose information. This has been
elaborated by Terence McKenna as well. Essentially, the fabric of time itself is cumulative.
At every stage in the evolution of the universe, we have gone from a state of low
complexity to a state of higher complexity. We've never "devolved" into a state of
lower complexity. Complexity has always increased.<br /><br />
Well, what is complexity? First, it helps to understand how we obtain complexity.
At the start of our universe, if we accept the big bang theory, the highest level
of complexity in the universe was characterized by a primordial soup of electrons
and elementary particles. From that evolved the first atom, clearly a structure with
an order far more advanced than what had existed prior to its emergence out of the
primordial ontos.<br /><br />
Now, this first atom, the hydrogen atom, contained a whole lot more information than
its parts, or even the sum of its parts. Because the hydrogen atom has a logical structure
far more elaborate than the logical structure which represents an electron. Indeed,
it is this logical structure that we must talk about when we're talking about complexity
and information. The hydrogen atom is an entity which requires far more information
to describe than the electron or the proton alone. So basically, the primordial soup
required a very small amount of meta-data (meta-information, or logical structure)
to describe, compared to what followed (i.e. the hydrogen atom). This is where we
get the notion of increasing complexity. Complexity is the measure of the quantity
of information required to produce the <b>simplest possible explanation</b> of a particular
physical phenomenon.<br /><br />
As the universe evolved further, we got more and more complex structures. We got other
atoms, molecules, organic compounds, and then biological life, and finally social
life; intelligent life. Each of these complexities builds on the previous level of
complexity. Molecules build on atoms. Social life (cultural or intelligent life) builds
on acultural, biological life. Microbial life builds on essential organic compounds.
In essence, each new level of complexity contains within it all existing levels of
complexity.<br /><br />
Thus, complexity is conserved. We can in fact emphatically state that complexity is
never destroyed. It is strictly conserved.<br /><br />
So what does this all imply for the nature of time? Well, time contains within it
descriptions of changes within entities of varying complexity. At the beginning of
the universe, each second of time contained a only a very minute description of changes,
because only a minute description was needed for the level of complexity at which
the universe had arrived at that time. Basically, God only needed a handful of bits
of information to describe a change in the state of the universe when the universe
was still in its primordial soup state.<br /><br />
As the universe complexified, necessarily the amount of information contained within
each second of time needed to increase, in order to completely describe the more complex
universe that was emerging. Basically, each level of complexity required more information
about the changes within that level of complexity.<br /><br />
Thus, as the universe cooled and complexified, time became more and more burdened
with information, so that each moment of passing time contained within it more information
than the previous moment.<br /><br />
This process continued to this day. With every passing moment, time "expands" to contain
more information than any previous moment that has ever existed. This is a profound
concept to grasp, with profound consequences for our perception of time. It means
that our linear time assumption, the assumption that time is isotropic and linear
- that each moment is the same as every other moment, and that each interval of time
is qualitatively and quantitatively the same as every other interval - is absolutely
patently false and misleading.<br /><br />
We have to ditch the idea that time is somehow plain, linear, and uninteresting. Time
is extremely interesting, and ought to be studied by science like nothing else, because
we don't have a sufficiently clear understanding of the nature of time.<br /><br />
But the interesting implications of this "expanding time" theory are many. This theory
actually validates intuitively-derived beliefs in many cultures that time is accelerating,
or that time is heading towards an ultimate end. In fact, even modern science has
managed to create a theory mainly involving human culture and cultural progress which
indicates that there may be a point in the not too distant future where all of our
knowledge, having been preserved thanks to the law of conservation of complexity,
leads to a point of infinite temporal acceleration - a point of asymptotic discovery
and asymptotic change, putting an end to time itself. Indeed, this very idea has been
prophesied by others, including the ancient Mayans with their apocalyptic 2012 prophecy,
or the Christians, or even modern-day prophets like Terence McKenna, although I'm
sure he would despise being called a "prophet."<br /><br />
We must challenge all of our dearly-held assumptions about time or else we will not
proceed to make true scientific discoveries. Today, we carry notions about time that
are akin to believing that the Earth is flat or that it sits atop the backs of four
turtles. For example, we believe that causal connections can only exist from the past
to the future. We have established one predetermined direction for causality. Yet,
we can clearly observe retrocausal effects all around us that seem to defy the laws
of physics and all too often get classed as mere coincidences or worse, paranormal
phenomena. In fact, such occurrences should be observed experimentally and we should
try to develop a theory for explaining such retrocausal phenomena as the appearance
of 9-11 as a motif in various artifacts well in advance of the actual event which
occurred on 9-11-2001. Other retrocausal phenomena include such cases as the flight
of animals to safety prior to a devastating tsunami or earthquake. Anything that is
often classed as premonition or prophecy ought to be investigated as a potential candidate
for retrocausality - events from the future having causal links to events in the past.
It's crazy to think that the future could have a causal influence on the past, as
it means that the past is now just as malleable or perhaps more malleable than the
future!<br /><br />
Anyway, I hope I've been able to shed some light on the strange nature of time and
why what we humans often think is obvious is really not so.<br /><br />
I could probably talk further here but instead I think I need to actually summarize
what I described:<br /><ol><li>
Time is a container for... change in information, also known as novelty. Necessarily,
then, time has at least two dimensions.</li><li>
Complexity is conserved. Each new level of complexity builds on lower levels. Complexity
is never destroyed or reduced.<br /></li><li>
Time is non-linear and quite probably anisotropic.</li><li>
Time is expanding, with each one-second interval containing more information than
any previous one-second interval. This is subjectively perceived as an acceleration.<br /></li><li>
There may be an endpoint for time, consisting of an asymptotic acceleration of the
rate of progress toward infinite complexity.</li><li>
Causality probably works both ways, even if it seems odd to us. Retrocausality seems
to explain perfectly the phenomenon of prescience in some organisms.</li></ol>
Bend your mind, but be careful not to break it!<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=a49454c2-db0f-47ae-b5d8-0b0acfe764b2" /></div>
    </content>
  </entry>
  <entry>
    <title>A Little Seasonal Spirit</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/12/22/ALittleSeasonalSpirit.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,f32fd4a9-27ed-4de3-8e97-1b413b5aab04.aspx</id>
    <published>2009-12-21T21:57:04.7056377-05:00</published>
    <updated>2009-12-21T21:57:04.7056377-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <font size="4">
          <b>Spring Solstice</b>
          <br />
          <br />
‘Tis the season to be jolly, as the sun begins to dawn.<br />
Spring hath right now just begun.<br /><br />
The solstice ends the sun’s decline.<br />
Soon the snow will melt, the sun will shine.<br /><br />
The sun will burn, high in the sky...<br />
Just like your love did, last July. </font>
        <img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=f32fd4a9-27ed-4de3-8e97-1b413b5aab04" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Dan's Gold &amp; Silver Alert</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/12/22/DansGoldSilverAlert.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,c8ddf5d2-adf7-40e8-b706-21d91cefe2dc.aspx</id>
    <published>2009-12-21T21:17:58.1224765-05:00</published>
    <updated>2009-12-21T21:17:58.1224765-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="Finance" label="Finance" scheme="http://www.dacris.com/blog/CategoryView,category,Finance.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <u>Dan's Gold &amp; Silver Recommendation:</u>
        <b>Buy</b> (with
caution)<br /><br /><hr width="100%" size="2" /><br />
We've now corrected 10% in both gold and silver, from the top reached a few weeks
ago.<br /><br />
I think it's time, given the speed and severity of the correction, to start buying
again.<br /><br />
However, I do think that further downside is possible. So cautious buying is advised.<br /><br /><hr width="100%" size="2" /><br />
I will try to have this segment at every major turn in the market so that you can
stay up to date with the latest market movements.<br /><br />
So stay tuned for more of "Dan's Gold &amp; Silver Alert."<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=c8ddf5d2-adf7-40e8-b706-21d91cefe2dc" /></div>
    </content>
  </entry>
  <entry>
    <title>IE 9: Will it be enough to make me switch from Firefox?</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/12/22/IE9WillItBeEnoughToMakeMeSwitchFromFirefox.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,2742a47f-5d71-454e-b2c5-c3f6d7726f2e.aspx</id>
    <published>2009-12-21T20:22:47.8604344-05:00</published>
    <updated>2009-12-21T20:22:47.8604344-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Internet Explorer 9 will be coming out soon.
It is going to have hardware-accelerated rendering of web pages. In essence, it will
use the video card (instead of the CPU) to render web pages. This means much faster
performance, awesome effects (even 3D), and less CPU usage.<br /><br />
Channel 9 has posted a <a href="http://channel9.msdn.com/posts/Charles/IE-9-Surfing-on-the-GPU-with-D2D/">demo
of IE 9</a>. The video shows some of the awesomeness of this new version of IE.<br /><br />
So here are some highlights of what's coming:<br /><ol><li>
Web page rendering on the GPU (instead of CPU)</li><li>
Better standards support</li><li>
New JavaScript engine, <a href="http://arstechnica.com/microsoft/news/2009/11/javascript-graphics-performance-improvements-on-tap-for-ie9.ars">with
performance similar to Firefox</a></li></ol>
Here is a comparison of browser performance, from <a href="http://arstechnica.com/microsoft/news/2009/11/javascript-graphics-performance-improvements-on-tap-for-ie9.ars">Ars
Technica</a>:<br /><img src="http://app.dacris.com/temp/Dean_PDC_2.png" /><br />
As you can see, IE 9 is now on par with Firefox and Chrome.<br /><br />
Not good news for Firefox. Or is it?<br /><br />
It seems the Firefox people aren't sitting idly by. They're busy <a href="http://tech.icrontic.com/news/mozilla-adds-hardware-acceleration-to-firefox-3-7/">implementing
hardware accelerated rendering in Firefox 3.7</a>.<br /><br />
So it's certainly going to be an interesting competition between IE and Firefox. It
looks like the browser wars are on again.<br /><br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=2742a47f-5d71-454e-b2c5-c3f6d7726f2e" /></div>
    </content>
  </entry>
  <entry>
    <title>Windows 7 Phones: Addendum</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/12/18/Windows7PhonesAddendum.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,6af5a1b2-4fe7-4c2d-acca-e0541f16e205.aspx</id>
    <published>2009-12-17T20:26:35.32435-05:00</published>
    <updated>2009-12-17T20:26:35.32435-05:00</updated>
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Not long after I posted my first topic outlining
the idea of Windows 7 smart phones, I found this...<br /><br /><a href="http://www.istartedsomething.com/20091124/razorfone-conceptual-windows7-wpf-multi-touch-retail/">Razorfone:
A Conceptual Windows 7 &amp; WPF-powered Multi-Touch Phone Retail Experience</a><br /><br />
It looks like the idea of a Windows 7 phone is alive &amp; well. While the "Razorfone"
is a concept for retail environments (a kind of kiosk), it's nice to see others considering
the idea of putting Windows 7 on phones.<br /><br />
One more piece of good news on the mobile phone front:<br /><br /><a href="http://www.nationalpost.com/news/story.html?id=2331650">WIND Mobile Takes
Off - National Post</a><br /><br />
WIND Mobile - www.windmobile.ca - has finally been given the green light in Canada.
No longer will we be limited to the triopoly of Rogers/Bell/Telus. Hopefully, this
means no more 3-year contracts and lower prices in general. Canada is the most backward
country in the world when it comes to mobile phones, largely because of Rogers &amp;
Bell's huge political influence.<br /><br />
I urge all who are upset about Rogers or Bell to check out WIND Mobile and consider
switching over. Actually, I urge all to check out WIND Mobile. From what I can see,
their plans are quite cheap and straightforward.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=6af5a1b2-4fe7-4c2d-acca-e0541f16e205" /></div>
    </content>
  </entry>
  <entry>
    <title>64-bit Windows: The Definitive Guide</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/12/06/64bitWindowsTheDefinitiveGuide.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,7e90196d-a58c-41aa-b1cb-f30923caf3c0.aspx</id>
    <published>2009-12-05T20:20:09.7506529-05:00</published>
    <updated>2009-12-05T20:20:09.7506529-05:00</updated>
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <b>1. How much memory does 32-bit Windows
support?</b>
        <br />
        <br />
I'll try to explain this as simply as I possibly can...<br /><br />
You can have as much as <b>64 GB of RAM</b> with 32-bit Windows, but <b>there will
be a hole between 3 GB and 4 GB</b>.<br /><br />
64 GB? Yes. How is that possible? Well, Intel processors for a long time have had
a feature called PAE (Physical Address Extension) that adds another 4 bits to the
32-bit limit of Windows, making it effectively 36 bit.<br /><br />
But...<br />
A few caveats:<br />
- If you have only 4 GB of RAM, you'll see just 3 GB because of the hole between 3
GB and 4 GB.<br /><br />
- If your CPU doesn't have PAE, you're stuck with 3 GB as the limit. Go to My Computer
- Properties (in XP) to verify you have "Physical Address Extension" listed in your
system information.<br /><br />
Also, processes in 32-bit Windows will see 2 GB of memory. But they won't see the
same 2 GB. They'll be moved around by Windows so that all of your memory gets used
(it's called multitasking!). So there is no "2 GB limit" as some might have you believe.
The real limit is 3 GB, or even more if you have PAE.<br /><br /><b>2. What is different in 64-bit Windows?</b><br /><br />
The first thing that's different, you can access up to 16 EB (exabytes) of RAM! That's
8 million 2-TB hard drives!<br /><br />
But there are a few more things you need to be aware of:<br />
- 64-bit Windows uses up 60% more memory and disk space than 32-bit Windows due to
the doubling of pointer size<br />
- You may have trouble finding 64-bit drivers for older hardware<br />
- 32-bit software will still run perfectly on 64-bit Windows, thanks to WoW (Windows
on Windows) emulation<br />
- 64-bit Windows allows you to access all 4 GB of memory when you have 4 GB installed
(not just 3 GB like 32-bit Windows)<br />
- There is no memory hole in 64-bit Windows<br />
- Each process can use more than 2 GB of memory<br />
- Some CPU-intensive operations will complete faster if they take advantage of 64
bits (up to 5 times faster!)<br /><br />
Overall, if you have 4 GB of RAM or more, you should install 64-bit Windows to get
rid of the memory hole. If you have 3 GB or less, you should stick with 32-bit Windows,
because 64-bit Windows will eat up 60% more of your precious RAM.<br /><br /><b>My Experience - Going from 2 GB to 4 GB</b><br /><br />
I'm running 64-bit Windows 7 on my machine, with 4 GB RAM. It runs much more smoothly
than it did on 2 GB of RAM. I installed 64-bit Windows 7 on 2 GB of RAM. Don't do
it. It caused my memory usage to go up from 50% to 80%. Now, with 4 GB, my memory
usage is down to 40%.<br /><br />
So, if you have 3 GB or less RAM and aren't planning to upgrade it <b>right away</b> after
installing 64-bit Windows, don't install 64-bit Windows. It will eat up too much of
your RAM.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=7e90196d-a58c-41aa-b1cb-f30923caf3c0" /></div>
    </content>
  </entry>
  <entry>
    <title>D3: Free WPF Data Visualization</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/12/03/D3FreeWPFDataVisualization.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,bc748f45-cb99-4834-a2a3-6f59e65b8d5c.aspx</id>
    <published>2009-12-02T22:37:26.0289637-05:00</published>
    <updated>2009-12-02T22:37:26.0289637-05:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Today I just discovered a neat little WPF
graphing library called D3 (<a href="http://dynamicdatadisplay.codeplex.com/">DynamicDataDisplay</a>).<br /><br />
It's amazingly architected so that it's fast and extensible. Although it requires
.NET 3.5, I was able to downgrade it to .NET 3.0 by using <a href="http://www.albahari.com/nutshell/linqbridge.aspx">LinqBridge</a>,
a free library that emulates 99% of Linq without requiring .NET 3.5.<br /><br />
Actually, LinqBridge deserves a topic on its own - there is literally no reason for
you to require .NET 3.5 in your apps, unless you use Linq-to-SQL. Linq-to-Objects
is 99% emulated by LinqBridge.<br /><br />
To .NET library developers: start distributing .NET 3.0 versions of your libraries
using LinqBridge, so that my Vista users don't have to download .NET 3.5. Saves me
a boatload of headache as an ISV.<br /><br />
So, back to the main topic. If you're looking for a WPF line plot library that's free
or simply want an example of how to build a WPF control library the right way, just
take a look at D3.<br /><br />
Those are my findings for today. I guess it's been an exciting day!<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=bc748f45-cb99-4834-a2a3-6f59e65b8d5c" /></div>
    </content>
  </entry>
  <entry>
    <title>Windows 7 Phones: Coming Next Year!</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/12/02/Windows7PhonesComingNextYear.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,12b2e850-aafd-417b-8f32-849406e195da.aspx</id>
    <published>2009-12-01T19:50:03.704-05:00</published>
    <updated>2009-12-01T19:54:42.6164167-05:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="History" label="History" scheme="http://www.dacris.com/blog/CategoryView,category,History.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">So, it seems Moore's Law is at it again.
And those who are not aware of it (by now) will be left in the dust. Read this article
and you'll know what I mean.<br /><br />
First, I must warn you that you may be offended by reading this article. If you are
an ardent fan of Google or Apple and/or a hater of Microsoft, you may not like what
I'm about to tell you. That's fine. Just be prepared, if you do plan to read on.<br /><br />
Yesterday I installed Windows 7 on a 5-year-old laptop with 512 MB RAM and only 7
GB of free disk space. It installed (surprise!) and ran flawlessly! It even ran smoother
than the XP installation I had on it before. Probably because with all the service
packs, XP has actually become more bloated than Windows 7.<br /><br />
Now, I want you to note the specs: 512 MB RAM, 7 GB of disk space. Impressive. A high-end
PC from 10 years ago would've had these specs. So literally, Windows 7 supports a
decade of computers!<br /><br />
But what's more fascinating is the mobile arena. Currently, Apple is still dominant
and yet still afraid to lose its iron grip on the iPhone. On the surface, Apple appears
to be very friendly to developers, but behind the scenes they are the control freaks
they've always been - I'm looking at you, Steve!<br /><br />
Anyway, there are quite a few frustrating things about the iPhone. First, you can
only sell your app through Apple's app store and it has to be approved by Apple. Second,
there is no Flash on the iPhone, and no web browser other than Safari. This ought
to raise eyebrows and even get Apple into legal trouble like Microsoft got into trouble
with IE and Windows, for supposedly abusing their monopoly. But it seems only Microsoft
is the unlucky one.<br /><br />
Next we have Google's Android OS, which is a commendable OS. It has everything. It
is, for mobile devices, like Windows is for PCs. It is open to developers and developers
can share &amp; sell their applications without Google's approval. The only "problem"
with Android is that there are too many variants of it. I wouldn't really call this
a problem. It's a natural drawback of having to support a wide variety of devices.
I mean, look at Windows: Windows XP, Windows Vista, Windows 7, and do you hear Windows
developers complaining about it? No. They've adapted to it. They expect it. Only Apple
fanboys complain about "too many variants" of Android because they don't understand
it.<br /><br />
Next, we have Windows Mobile. Or do we? Windows Mobile is laughably dated and limited.
Microsoft seems to have lost it completely on the mobile front. But have they? Or
are we all missing something that's actually staring us in the face? Are we missing
the elephant in the room?<br /><br />
Yes.<br /><br />
Let me introduce you all to the elephant in the room. It's Windows 7. Yup. And it's
moving to smart phones. Remember, I installed Windows 7 on a PC with 512 MB RAM and
7 GB of disk space. Why do you think Microsoft decided to actually support old devices
this time, and not raise hardware requirements like before? Why do you think Microsoft
developed multi-touch capabilities in Windows 7? Is it for all those giant useless
tablets out there? Is it for all the giant useless netbooks out there? No! It's for
MOBILE PHONES!<br /><br />
Suddenly it all makes sense. But wait, I hear you say, how can Windows 7 ever fit
on a phone? Simple: There are smart phones today that have 512 MB of memory. There
are smart phones today that are extensible (via microSD card) to as much as 32 GB
of storage. Last but not least, is Intel's Atom processor. It's an x86 processor (just
like the desktop ones) with speeds of nearly 2 GHz! But the best thing about Atom
is, it's extremely low-power and low-heat.<br /><br />
So the situation is now ripe for Windows 7 to start transitioning onto smaller and
smaller mobile devices. There are MIDs / UMPCs currently available with screens of
4.8" which is about as small as a PSP. They fit in your pocket. And they run Windows
7. The leap from here to mobile phones is tiny. There is no leap. It's a baby step.<br /><br />
In conclusion, if you thought Microsoft lost the mobile space, you are totally mistaken,
and you'll be in for a shock next year. All the Android and Apple fans out there won't
know what hit them. Better get on for the ride.<br /><br />
As for what I'm doing to prepare, I'm back developing client-side Windows applications.
I use WPF and .NET. They are extremely easy and fun to work with. Microsoft has always
had the best support for developers, which is what helped them gain (and maintain)
a monopoly for so long. Windows has more software than any other OS, and will continue
to do so for many years thanks to Windows 7.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=12b2e850-aafd-417b-8f32-849406e195da" /></div>
    </content>
  </entry>
  <entry>
    <title>DoEvents really *is* evil!</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/11/18/DoEventsReallyIsEvil.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,75ba3e35-f0af-48f7-b22e-46a19ad52819.aspx</id>
    <published>2009-11-17T20:15:46.3217292-05:00</published>
    <updated>2009-11-17T20:15:46.3217292-05:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.dacris.com/blog/CategoryView,category,Personal.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Apparently some of my older blog articles
were really <a href="http://www.codinghorror.com/blog/archives/000159.html">quite
popular</a>, because today I stumbled upon something I wrote 5 years ago:<br /><blockquote><i><b>Application.DoEvents() - The call of the devil.</b></i><p><i>DoEvents messes up the normal flow of your application. If I recall correctly,
DoEvents is asynchronous which means it terminates before the application has actually
processed any outstanding events, so if you're using it in a procedure with many sequential
statements, calling DoEvents causes a huge disturbance whenever it's called. Basically,
if you find yourself needing to call DoEvents anywhere, think about starting another
thread instead, or using asynchronous delegates. </i></p><p><i>Imagine this if you will: You have a button on your form that, when clicked, does
some complex processing. During the complex processing it also intermittently calls
DoEvents to keep the application's user interface "responsive" -- not the best method,
I would have used async delegates, but we're talking about a mediocre programmer here.
Anyhow, the user sees the application still responding and no indication that there's
some processing going on. So the user clicks that button again WHILE the processing
is going on! <b>The button responds to the event and starts another processing thread
but it isn't actually a thread here</b>, I hope you get what I'm saying. So, like
I said earlier, DoEvents screws up the flow of the application too easily. </i></p></blockquote>I want to comment on this further, because I don't think I was really
clear at the time.<br /><br /><b>DoEvents really is evil. Horribly, horribly evil.</b><br /><br />
In fact, the whole Windows Forms threading model is deficient. The fact that you can
set a Label's Text property from any thread is a clear warning sign that something
is wrong. This is only now becoming evident to me after having worked for a few months
with WPF, which doesn't allow any such nonsense. It will throw an exception if you
try to execute UI code on a non-UI thread.<br /><br />
DoEvents should have never been included in the .NET Framework, because it gives a
programmer the illusion that you can get by without worker threads. You can't. If
a programmer wants to keep the UI responsive while another task is executing, that
programmer should use a background worker thread. To update the UI from that thread
(to show changing progress), the programmer should call Invoke on the appropriate
control and pass in a delegate that will be executed on that control's UI thread.
Not only does this serve to keep things consistent, but it also reduces the chances
of odd bugs related to threading (which are always difficult to troubleshoot).<br /><br />
So, in short, avoid DoEvents and do what good programmers do: use worker threads.
WPF makes it easy (and dare I say fun?) to create &amp; use worker threads, and it's
perfectly safe. Windows Forms has a somewhat sketchy UI threading model, mainly because
it still has to deal with Win32 API behind the scenes. This is also a reason why you
should migrate to WPF and stop releasing production software built with Windows Forms.
The sooner Windows Forms dies, the better.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=75ba3e35-f0af-48f7-b22e-46a19ad52819" /></div>
    </content>
  </entry>
  <entry>
    <title>Call of the Devil: System.Diagnostics.Process.Start</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/11/18/CallOfTheDevilSystemDiagnosticsProcessStart.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,bb8575bc-81a0-4823-b2be-87a26e2ea6c3.aspx</id>
    <published>2009-11-17T19:54:34.5886614-05:00</published>
    <updated>2009-11-17T19:54:34.5886614-05:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">So today will be the last time I use System.Diagnostics.Process.Start
without explicitly setting UseShellExecute to true.<br /><br /><b>Why?</b><br /><br />
Oh, it started out innocently enough - I was building a simple load testing tool in
C# to load-test a custom ASP.NET HTTP handler I was implementing. The tool would basically
run <i>wget</i> many times to simulate HTTP requests. Don't know why I didn't just
use System.Net.WebClient (because I certainly could've), but I guess I just had <i>wget</i> on
my mind.<br /><br />
Anyway, so the tool ran fine but it slowly leaked away memory and handles. Initially
I thought it was my HTTP handler. So I ran it with an invalid URL, just to test if
maybe the load testing tool itself had a memory leak. Sure enough, it did!<br /><br />
The leak seemed to be coming from my call to <i><b>System.Diagnostics.Process.Start</b></i>.<br /><br />
So I did a quick Googling and it turns out that System.Diagnostics.Process.Start causes
the child process to <b>inherit handles</b> from the parent process. That means, whatever
process you spawn (e.g. Internet Explorer), that process gets all of the handles owned
by <i><b>your</b></i> process! So even if you free up handles in your process, if
the process you spawned is still running, your handles won't really be freed because
the child process is supposedly using them. A more detailed explanation <a href="http://weblogs.asp.net/jdennany/archive/2007/08/28/leaky-abstractions-system-diagnostics-process-and-1-bottle-of-mountain-dew.aspx">can
be found here</a>.<br /><br />
As it turns out, the CreateProcess call in System.Diagnostics.Process.Start has a
certain parameter that is hard-coded: the bInheritHandles parameter is hard-coded
to true. Well, that's a shame now isn't it?<br /><br /><b>So what can we do instead?</b><br /><br />
I would prefer any solution except calling the CreateProcess API directly, since API
calls are ugly. One option is to set ProcessStartInfo.UseShellExecute to true before
calling Process.Start. However, you won't be able to redirect stdio. In fact, if you
want to redirect stdio you either have to accept MS's buggy implementation or roll
your own with pipes, API, and all that funky stuff.<br /><br /><b>One last thing...</b><br /><br />
With the Process class, be sure to explicitly Close the process object (not just Dispose)
after starting the process or after you're done using it, because otherwise the process
handle may leak.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=bb8575bc-81a0-4823-b2be-87a26e2ea6c3" /></div>
    </content>
  </entry>
  <entry>
    <title>Visual Studio 2010 is a .NET App</title>
    <link rel="alternate" type="text/html" href="http://www.dacris.com/blog/2009/11/13/VisualStudio2010IsANETApp.aspx" />
    <id>http://www.dacris.com/blog/PermaLink,guid,916828ad-9e37-4d01-bb39-067b218c26d4.aspx</id>
    <published>2009-11-12T22:09:39.9132267-05:00</published>
    <updated>2009-11-12T22:09:39.9132267-05:00</updated>
    <category term=".NET" label=".NET" scheme="http://www.dacris.com/blog/CategoryView,category,NET.aspx" />
    <category term="Commentary" label="Commentary" scheme="http://www.dacris.com/blog/CategoryView,category,Commentary.aspx" />
    <category term="News" label="News" scheme="http://www.dacris.com/blog/CategoryView,category,News.aspx" />
    <category term="Technology" label="Technology" scheme="http://www.dacris.com/blog/CategoryView,category,Technology.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Not even two months after I wrote <a href="http://www.dacris.com/blog/2009/09/28/DesktopNETFinallyReadyForTakeOff.aspx">this
article</a>, where I described why desktop .NET is finally ready for take-off, the
news is out that Visual Studio 2010 is a managed (.NET) application. Finally, Microsoft
are setting an example.<br /><br />
What does this mean to you, the developer? It means that if you've been sitting on
the sidelines regarding .NET and are still coding with *gasp* MFC, or Win32 API, it's
finally time to move to .NET.<br /><br />
This also means that WPF is here to stay, unlike its predecessor - Windows Forms.
Many early adopters of .NET were under the impression that Windows Forms would be
supported and actively developed for many years. As it turned out, Windows Forms was
a dead end.<br /><br />
The good news: WPF is now fully endorsed by Microsoft through Visual Studio 2010.
This means WPF is finally mature enough for adoption. Plus, it's included in Windows
7 and Windows Vista. You don't even have to distribute the .NET Framework (provided
you target version 3.0 and not 3.5 or 4.0). Visual Studio now makes it easy to target
a specific version of the .NET Framework, unlike some of the early versions (VS 2003/2005).<br /><br />
Personally, I think we're going to start seeing an explosion of new WPF apps in the
coming months. It could be like the explosion that happened with the iPhone (and I'm
not talking about the screen).<br /><br />
These are the most exciting times for Windows developers since Windows 95.<br /><p></p><img width="0" height="0" src="http://www.dacris.com/blog/aggbug.ashx?id=916828ad-9e37-4d01-bb39-067b218c26d4" /></div>
    </content>
  </entry>
</feed>