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

<channel>
	<title>Andrew Guyton's Blog &#187; Software</title>
	<atom:link href="http://disavian.no-ip.info/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://disavian.no-ip.info</link>
	<description>programming/photography/gaming/reviews</description>
	<lastBuildDate>Tue, 10 Nov 2009 06:03:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Wordpress iPhone Plugin</title>
		<link>http://disavian.no-ip.info/wordpress-iphone-plugin/</link>
		<comments>http://disavian.no-ip.info/wordpress-iphone-plugin/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 02:03:27 +0000</pubDate>
		<dc:creator>disavian</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://disavian.no-ip.info/?p=465</guid>
		<description><![CDATA[If you have a Wordpress installation that you control, I highly recommend installing the WPtouch iPhone Theme. It&#8217;s painless to install, easily configurable, and creates a fast-loading and intuitive mobile interface for your blog. See a screenshot on twitpic.
]]></description>
			<content:encoded><![CDATA[<p>If you have a Wordpress installation that you control, I highly recommend installing the <a href="http://wordpress.org/extend/plugins/wptouch/" rel="nofollow" >WPtouch iPhone Theme</a>. It&#8217;s painless to install, easily configurable, and creates a fast-loading and intuitive mobile interface for your blog. See <a href="http://twitpic.com/oia77" rel="nofollow" >a screenshot on twitpic</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://disavian.no-ip.info/wordpress-iphone-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Useful Free iPhone Apps</title>
		<link>http://disavian.no-ip.info/free-iphone-apps/</link>
		<comments>http://disavian.no-ip.info/free-iphone-apps/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 01:48:00 +0000</pubDate>
		<dc:creator>disavian</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://disavian.no-ip.info/?p=352</guid>
		<description><![CDATA[Now that I have a shiny new iPhone, one of the many things I&#8217;m doing is finding cool free apps to extend my phone&#8217;s funtionality. There are, of course, an incredible number of paid apps as well, but being a poor college student, I&#8217;ll focus on the free ones that you may not have heard [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I have a shiny new iPhone, one of the many things I&#8217;m doing is finding cool free apps to extend my phone&#8217;s funtionality. There are, of course, an incredible number of paid apps as well, but being a poor college student, I&#8217;ll focus on the free ones that you may not have heard of.</p>
<p>There are certain free apps that everyone should already have by now, so I&#8217;m not going to cover them in great detail. Facebook, one of the Twitter clients, and any IM services you use (AIM and Y! both support push notifications, by the way) are must-haves.<span id="more-352"></span></p>
<h3 id="toc-music">Music</h3>
<ul>
<li><b>Shazam</b> &#8211; Identify music that&#8217;s playing. Can be difficult in environments with a large amount of ambient noise, but is capable of identifying even rare music.</li>
<li><b>Pandora</b> &#8211; Listen to music on the fly. Sadly, you have to keep the app open while you&#8217;re listening.</li>
<li><b>AOL Radio</b> &#8211; Listen to local radio stations over the &#8216;net. For Atlanta, this includes 92.9 daveFM, Dave Roots, News-Talk 1380 WAOK, and V-103. I&#8217;d care more if they included WREK in that list. I never thought I&#8217;d ever recommend anything owned by AOL other than Winamp and Engadget, but here we are&#8230;</li>
</ul>
<h3 id="toc-webremoting">Web/remoting</h3>
<ul>
<li><b>WordPress</b> &#8211; Lets you edit, publish, delete, etc posts and pages, as well as approve, edit, and delete comments on any Wordpress blog. Very elegant interface. Most of this post was actually written with this app.</li>
<li><b>bamAnalytics</b> &#8211; Google Analytics app Lets you get a quick view of the most important analytics information.</li>
<li><b>VNC</b> and <b>RDP</b> by MochaSoft &#8211; These let you remote into a system, if you didn&#8217;t already know. If you know what these are, you&#8217;re probably already looking them up in the app store.</li>
<li><b>Remote</b> &#8211; Lets you remotely control a copy of iTunes on a network. Fairly neat if it&#8217;s set up and you have a use for it.</li>
</ul>
<h3 id="toc-images">Images</h3>
<ul>
<li><b>Flickit</b> &#8211; simple app to upload images to Flickr from your phone. It&#8217;s not as simple as I&#8217;d like, but it works.</li>
<li><b>xFractal</b> &#8211; Fractal generator, with Mandelbrot, Multibrot, Julia, Newton fractals, four available color schemes, and some manually adjustable settings. You&#8217;d be surprised how many people don&#8217;t know what a fractal is.</li>
</ul>
<h3 id="toc-mathscience">Math/science</h3>
<ul>
<li><b>Quick Graph</b> &#8211; lets you graph multiple functions in 2d or 3d. My main beef is that they don&#8217;t have a factorial function, but I&#8217;m okay with that, it&#8217;s free and keeps me from having to dig out my TI-86.</li>
<li><b>iHandy Level</b> &#8211; it&#8217;s a level. Not much else you can say about this one.</li>
</ul>
<h3 id="toc-for-the-lulz">For the lulz</h3>
<ul>
<li><b>FML</b> &#8211; If you need a quick dose of schadenfreude, fmylife.com has a mobile app.</li>
<li><b>SpinTheCoke</b> &#8211; You flick a coke bottle, and it spins. Yes, an app version of Spin The Bottle.</li>
<li><b>MyVibe</b> &#8211; The funniest of the bunch, for which you can really say, yes there is an app for everything &#8211; it&#8217;s got one button in the middle of the screen, and some intensity controls on the right. You figure it out.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://disavian.no-ip.info/free-iphone-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better Together: Hamachi and VNC</title>
		<link>http://disavian.no-ip.info/hamachi-vnc/</link>
		<comments>http://disavian.no-ip.info/hamachi-vnc/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 22:04:00 +0000</pubDate>
		<dc:creator>disavian</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[filesharing]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[remote]]></category>

		<guid isPermaLink="false">http://disavian.no-ip.info/?p=319</guid>
		<description><![CDATA[We&#8217;ve all been somewhere (be it Starbucks, your work, a hotel) where we didn&#8217;t have access to the router to allow certain ports through. Some programs or tools require a direct connection or LAN access. Here&#8217;s the solution: Hamachi. It allows you to set up a &#8216;virtual network&#8217; of several computers, allowing you to connect [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve all been somewhere (be it Starbucks, your work, a hotel) where we didn&#8217;t have access to the router to allow certain ports through. Some programs or tools require a direct connection or LAN access. Here&#8217;s the solution: Hamachi. It allows you to set up a &#8216;virtual network&#8217; of several computers, allowing you to connect as if you were on a LAN with the other computers. <a href="https://secure.logmein.com/products/hamachi/list.asp" rel="nofollow" >Download Hamachi</a></p>
<p>Some obvious uses for this include file sharing (provided it is enabled); multiplayer PC gaming (Age of Empires 2 comes to mind), and the point of this post, remote access. There are a few methods; if I am the only one using a computer, I prefer Remote Desktop. If you&#8217;re viewing someone else&#8217;s computer while they&#8217;re using it (to troubleshoot, share things, etc) I prefer VNC. Now you can share your desktop with anyone, no matter what crazy network setup you have. <a href="http://www.tightvnc.com/download.php" rel="nofollow" >Download TightVNC</a></p>
]]></content:encoded>
			<wfw:commentRss>http://disavian.no-ip.info/hamachi-vnc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better Together: AutoHotKey and WinSplit Revolution</title>
		<link>http://disavian.no-ip.info/autohotkey-winsplit-revolution/</link>
		<comments>http://disavian.no-ip.info/autohotkey-winsplit-revolution/#comments</comments>
		<pubDate>Thu, 28 May 2009 06:46:29 +0000</pubDate>
		<dc:creator>disavian</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[autohotkey]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://disavian.no-ip.info/?p=307</guid>
		<description><![CDATA[One of the quirks about my laptop is that the numpad is accessed by a mysterious [fn] key that doesn&#8217;t &#8220;show up&#8221; internally in Windows. As such, it&#8217;s apparently difficult to write commands that use it or any of the features it accesses. Instead of Send {fn}{F7} to decrease the brightness, for example, I&#8217;d have [...]]]></description>
			<content:encoded><![CDATA[<p>One of the quirks about my laptop is that the numpad is accessed by a mysterious [fn] key that doesn&#8217;t &#8220;show up&#8221; internally in Windows. As such, it&#8217;s apparently difficult to write commands that use it or any of the features it accesses. Instead of Send {fn}{F7} to decrease the brightness, for example, I&#8217;d have to do something more creative.</p>
<p>One of my favorite utilities is <a href="http://winsplit-revolution.com/" rel="nofollow" >WinSplit Revolution</a>, which is especially handy for large displays. Its largest feature is the ability to press Ctrl+Alt+[Numpad number] to quickly move the active window to the desired side/corner of a window. Sadly, Ctrl+Alt+[fn][numpad] on my laptop doesn&#8217;t generate a keystroke. So, <a href="http://www.autohotkey.com/" rel="nofollow" >AutoHotKey</a> to save the day.<span id="more-307"></span></p>
<p>It made sense to map the row of keys on the right side of my laptop (from top to bottom: home, page up, page down, end) as I probably wouldn&#8217;t be overriding another important keystroke, and they are sort of near where the number pad would be. While WinSplit lets you manually assign keystrokes, I wouldn&#8217;t have been able to use the Windows key, and if I connected a USB keyboard with a real number pad (something I sometimes do) I wanted all of the program&#8217;s normal functionality available.</p>
<p>The AHK script is as follows:</p>
<blockquote><pre>;WinSplit Revolution Laptop Compatibility
#Delete::Send ^!{Numpad5}
#PgUp::Send ^!{Numpad8}
#PgDn::Send ^!{Numpad2}
#Home::Send ^!{Numpad4}
#End::Send ^!{Numpad6}</pre>
</blockquote>
<p><br/></p>
<p>In plain english:</p>
<blockquote><pre>Win+Delete -> Center (fill/third/two thirds)
Win+Home -> Left half (half/third/two thirds)
Win+Pg up -> Top half
Win+Pg dn -> Bottom half
Win+End -> Right half</pre>
</blockquote>
<p><br/></p>
<p>While I&#8217;d initially decided that Ctrl+Win+(relevant key) would be a good replacement, I decided that I could drop the Ctrl to simplify the keystroke. There are probably many other intuitive (or more functional) methods I could have tried, such as attempting to replicate all </p>
]]></content:encoded>
			<wfw:commentRss>http://disavian.no-ip.info/autohotkey-winsplit-revolution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DMCA 101</title>
		<link>http://disavian.no-ip.info/dmca-101/</link>
		<comments>http://disavian.no-ip.info/dmca-101/#comments</comments>
		<pubDate>Wed, 20 May 2009 07:02:31 +0000</pubDate>
		<dc:creator>disavian</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[DMCA]]></category>
		<category><![CDATA[EFF]]></category>
		<category><![CDATA[fair use]]></category>
		<category><![CDATA[law]]></category>

		<guid isPermaLink="false">http://disavian.no-ip.info/?p=241</guid>
		<description><![CDATA[This is my final paper for CS 4001, Computing and Society, taught by Michael McCracken. The prompt was to select a topic and write an 8-10 page paper on it; specifically, to form a cohesive argument, taking into account positions from all sides of an issue.
A surprisingly large number of people in my senior-level computer [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://disavian.no-ip.info/wp-content/uploads/2009/05/dmca-150x150.jpg" alt="dmca" title="dmca" width="150" height="150" class="alignright size-thumbnail wp-image-302" />This is my final paper for <a href="http://www.cc.gatech.edu/classes/AY2009/cs4001a_spring/index.html" rel="nofollow" >CS 4001, Computing and Society</a>, taught by Michael McCracken. The prompt was to select a topic and write an 8-10 page paper on it; specifically, to form a <i>cohesive argument</i>, taking into account positions from all sides of an issue.</p>
<p>A surprisingly large number of people in my <i>senior-level</i> computer science class had never heard of the DMCA. If you are guilty of this crime of ignorance, it is imperative that you educate yourself on this topic one way or another. Disclaimers: I have given money to EFF, a party involved in this debate. I do not have a law degree. Nevertheless, I am confident in my analysis.<span id="more-241"></span></p>
<h3 id="toc-problem">Problem</h3>
<p>How have the United States’ Digital Millennium Copyright Act (DMCA) and related court cases affected intellectual property since that law was enacted in 1998? Has the act helped or hindered modern innovation and the internet?</p>
<h3 id="toc-introduction">Introduction</h3>
<div class="toc">
<ol>
<li><a href="http://disavian.no-ip.info/dmca-101/#toc-problem">Problem</a></li>
<li><a href="http://disavian.no-ip.info/dmca-101/#toc-introduction">Introduction</a></li>
<li><a href="http://disavian.no-ip.info/dmca-101/#toc-supporting-evidence">Supporting Evidence</a></li>
<li><a href="http://disavian.no-ip.info/dmca-101/#toc-refuting-evidence">Refuting Evidence</a></li>
<li><a href="http://disavian.no-ip.info/dmca-101/#toc-proposals">Proposals</a></li>
<li><a href="http://disavian.no-ip.info/dmca-101/#toc-conclusion">Conclusion</a></li>
<li><a href="http://disavian.no-ip.info/dmca-101/#toc-references">References</a></li>
</ol>
</div>
<p>Long, long ago, the delegates to the Philadelphia Convention wrote in the constitution: “To promote the Progress of Science and useful Arts, by securing for limited Times to Authors and Inventors the exclusive Right to their respective Writings and Discoveries.” Thus is the ultimate basis for the copyright law under question (Delegates to the Philadelphia Convention, 1787). Its writers had no idea of the technological changes yet to come, nor the direction that copyright law would eventually take.</p>
<p> The creation of the DMCA was initially inspired by copyright holders that felt that their works were not sufficiently protected from new, developing and future technologies by existing laws and court rulings. This initially took the form of a white paper published in September 1995, Intellectual Property and the National Information Infrastructure, by a group led by Bruce Lehman, who was the Commissioner of the United States Patent and Trademark Office (Robinson, 2008).</p>
<p>In particular, it was feared that content owners, creators, and distributors would “be willing to put their interests at risk” if systems were not available for them to enforce the conditions under which their content is available. To this end, he proposed that a section be added to the United States’ copyright law that prohibits the circumvention of access controls (Lehman, 2005). There was certainly some dissent from this view among the legal scholars of the time (Boyle, 1995), and some suggestion that Lehman was acting solely on the behalf of content providers such as Disney and CBS (Rothman, 1996).</p>
<p>In 1996, the Clinton administration (represented by Bruce Lehman) brought this white paper to the World Intellectual Property Organization (WIPO), a United Nations agency created in 1967 to protect intellectual property internationally. The white paper served as a central basis for the WIPO Copyright Treaty and the WIPO Performances and Phonograms Treaty, both signed in 1996 (Robinson, 2008) and designed to standardize copyright protection internationally and protect copyright from technology.</p>
<p>These treaties were subsequently enacted by the “WIPO Copyright and Performances and Phonograms Treaties Implementation Act,” also known as Title I of the DMCA. It expands copyright protection to any work created in a country that has signed a copyright treaty (of which there are several) which the United States has also signed (United States Copyright Office, 1998). It expands copyright protection to computer programs and databases. Most notably, it includes language (now §1201 through §1205 of US Copyright Law) known as the “anti-circumvention provisions” (United States Government Printing Office, 2008). This law prevents the creation or sale of programs or devices that circumvent technological restrictions that copyright holders include in their product (Chilling Effects Clearinghouse, Anticircumvention, n.d.). In particular, Section 103 (17 U.S.C. §1201(a)(1)) of the DMCA states:</p>
<blockquote><p>No person shall circumvent a technological measure that effectively controls access to a work protected under this title</p></blockquote>
<p>17 U.S.C. §1201(a)(3) clarifies this (United States Government Printing Office, 2008):</p>
<blockquote><p>(3) As used in this subsection—<br />
(A) to “circumvent a technological measure” means to descramble a scrambled work, to decrypt an encrypted work, or otherwise to avoid, bypass, remove, deactivate, or impair a technological measure, without the authority of the copyright owner; and<br />
(B) a technological measure “effectively controls access to a work” if the measure, in the ordinary course of its operation, requires the application of information, or a process or a treatment, with the authority of the copyright owner, to gain access to the work.</p></blockquote>
<p>When consumers purchase a product, they have various rights, most of them established by the “First Sale Doctrine.” For example, a consumer has a presumed right in the United States to view, trade, rent and lend a product such as a DVD or CD. The issue is murkier with software as companies have tried to establish that consumers are sold a license to access the work instead of being sold an actual copy of the work, but courts have firmly disagreed with them on that issue, even when the EULA specifically prohibits resale (Timothy S. Vernor v. Autodesk, Inc. 2008). </p>
<p>The law is less clear as to creating a backup (or temporary copy) of intellectual property; the Copyright Act of 1976 allows a consumer to back up a copy of a computer program. At concern is when the anti-circumvention clause of the DMCA prevents consumers from expressing the rights enumerated in this section (Chilling Effects Clearinghouse, Anticircumvention, n.d.). There is some consideration of this issue in a report commissioned by DMCA Section 104 (United States Copyright Office, 2000). Note that the distribution of tools that circumvent copy protection is also prohibited (Electronic Frontier Foundation, 2008).</p>
<p>The DMCA is not limited to the anti-circumvention clause, however. Title II is the Online Copyright Infringement Liability Limitation Act, which seeks to limit liability by websites and internet providers when they are hosting content; it is most commonly known as the “Safe Harbor” provision of the bill, and implements the WIPO Copyright Treaty’s directive to “maintain a balance between the rights of authors and the larger public interest, particularly education, research and access to information” (World Intellectual Property Organization, 1996).</p>
<p>Under DMCA Title II, Section 512, an online service provider is not responsible for hosting copyrighted content so long as they 1) have no knowledge that content on their system is copyrighted; 2) have a clear policy for dealing with copyrighted content (such as removing repeat offenders); and 3) provide a way to submit copyright complaints. If a user of the website (perhaps the one that uploaded the content) believes that the content is either not owned by the complainant, or that the content is sufficiently covered by fair use, a counter-notice can be filed to the copyright owner (Chilling Effects Clearinghouse, DMCA Safe Harbor Provisions, n.d.).</p>
<p>There are three additional titles, none of which have come under much, if any, contention. Title III (the “Computer Maintenance Competition Assurance Act”) allows individuals repairing computers to make temporary copies of software; Title IV (“Miscellaneous Provisions”) added an assortment of minor provisions; and Title V (the “Vessel Hull Design Protection Act”) added copyright protection to boat hull designs, which were not previously covered as their form was clearly related to their function.</p>
<p>Thus the DMCA, unanimously passed by the United States Senate on October 12, 1998 and signed into law by President Clinton on October 28, 1998 (Public Knowledge 2008), is clearly far-reaching. It significantly changed not only United States law, but international intellectual property law via the World Intellectual Property Organization (Robinson, 2008).</p>
<p>It is the author’s opinion that this change has been detrimental to technology; that the anticircumvention clause has been unsuccessful in its stated purpose of preventing piracy, and that the safe harbor provisions would have evolved over time through the justice system.</p>
<h3 id="toc-supporting-evidence">Supporting Evidence</h3>
<p>First, we shall consider the negative effect that the anti-circumvention clause has had on free expression, scientific research, fair use, competition, and innovation. An exhaustive list of relevant court cases has been compiled by the Electronic Frontier Foundation and is updated approximately every two years (Electronic Frontier Foundation, 2008). A few notable examples of such are presented here; but an exhaustive list is beyond the scope of this paper, as is a discussion of the relatively ineffectual anti-circumvention exemption process (Lohmann, 2005).</p>
<p>As mentioned in the introduction, a consumer has a right to view, loan, rent, or sell intellectual property as they please (especially if that property takes the form of a song, album, or movie; the law is less clear in certain cases). CDs and DVDs have attempted a wide variety of copy protection methods, sometimes rendering the media unplayable in some devices (for example, certain copy-protected CDs cannot play in car stereos that lack later hardware.</p>
<p>The best example of this limitation of use is the DVD, which uses a form of copy protection known as the Content Scramble System, or CSS. In CSS, a 40-bit stream cipher was used to obscure the content of the DVD; in order to build a DVD player that played these secure DVDs, one must license a key from the DVD Copy Control Association (and contractually, implement the entire copy control system). This was a hurdle that most likely discouraged independent device manufacturers; for example, Diamond created an mp3 (digital music) player without the restraint of a system such as CSS or the consent of the RIAA, and their device that was ruled legal in RIAA v. Diamond Multimedia (Dabeau 2000). Without the DMCA or CSS, many more manufacturers may have been tempted to support the format. Also consider the evolution of the digital music player; without this ruling, the iPod might never have been invented. Would a similarly ubiquitous DVD-playing device have been invented (other than the Video iPod) if the DMCA did not exist?</p>
<p>Introduced in 1996, CSS was broken by Jon Lech Johansen and two additional anonymous individuals in October 1999, and released as DeCSS (Warren, 2000). The source code was leaked soon thereafter, and quickly spread across the internet (Vogt, n.d.). The first legal test of the DMCA was based around this; in Universal v. Reimerdes, the DMCA was upheld as constitutional, and the distributors of this protection-circumventing application were prevented from continuing; in part, because they openly admitted to distributing the program to promote piracy rather than claiming to support fair use (Universal City Studios, Inc. v. Reimerdes). </p>
<p>For these reasons, DVD playback was initially difficult in the open-source operating system Linux; however, there is an “unofficial” library to add this functionality, libdvdcss, which has not been legally challenged. Note that the DMCA and this lawsuit did not actually remove the program or its source code from the internet; it is still widely available (Warren, 2000). (Vogt, n.d.).</p>
<p>If the law was not effective at protecting their system, as is stated above, what has it accomplished in this instance? It restricted the speech of the program’s creators, who did not directly engage in piracy. Jon Lech Johansen was tried after a complaint by the DVD Copy Control Association and the Motion Picture Association; he was ultimately acquitted, but lost approximately two years of his life to litigation. It was, however, made clear that using DeCSS (or similar programs) is a crime (Warren, 2000), even when it is used under one’s fair use rights.</p>
<p>In 2006, Vijay Raghavan’s company, Load ‘N Go, was sued in Paramount Pictures v. Load ‘N Go Video for violating the DMCA (Lewin, 2006). This company sold consumers a Video iPod and several DVDs, and performed the time-consuming process of loading the legally purchased movies onto the iPod for the consumer (Jayasuriya, 2008), a process that clearly falls under fair use (DeJean, 2006). Because the company technically violated the DMCA’s anti-circumvention clause in their primary service, what would otherwise be a legitimate, innovating company was driven out of business, contrary to the stated goals (piracy reduction) of DMCA anti-circumvention provisions (Jayasuriya, 2006).</p>
<p>It is also important to note that piracy has risen dramatically since the enactment of the DMCA, not decreased; in particular, “The Motion Picture Association (MPA), the international arm of the Motion Picture Association of America (MPAA), estimated worldwide losses because of piracy to be US $2.2 billion in 1997 and $3.5 billion annually in 2002, 2003, and 2004” (Lohmann, June 2006). Thus the DMCA anticircumvention measure is effective at criminalizing piracy (because theft was obviously not already a crime), many consumer technologies are missing from the marketplace (or available but technically illegal) as a result of the anti-circumvention provision.</p>
<p>While the DMCA’s safe harbor provisions do a reasonable job of protecting websites, little concern is given to whether a complainant is justified in their DMCA takedown notice. One particularly notable example of this was presidential candidate John McCain’s YouTube channel; various media organizations that the McCain campaign used clips from (under a legitimate claim of fair use) had McCain ads taken down by various media organizations (Stirland, 2008). The most famous recent example was a 30-second clip of a baby dancing with Prince’s “Let’s Go Crazy” playing in the background, almost certainly a fair use (Rasch, 2008). In a positive move, the judge ruled that content owners must consider fair use when sending takedown notices (McSherry, 2008).</p>
<h3 id="toc-refuting-evidence">Refuting Evidence</h3>
<p>The DMCA is not without positive effects and supporters, however. The safe harbor clause does a sufficient job of keeping content-hosting websites out of much legal trouble (Kravets, 2008). It is again difficult to make a comparison, as most modern-day examples of these sites did not exist before the DMCA due primarily to bandwidth reasons. In 1998, the internet was almost entirely populated by Americans (GVU Center, 1998), AOL was still growing rapidly, spam wasn’t as much of a problem, and Facebook wouldn’t be a sparkle in David Zuckerburg’s eye for another six years. However, it is unclear if these companies would have existed in a world without the DMCA Title II to protect them in a clear manner.</p>
<p>Veoh, a video hosting website, has been involved in two recent examples of the protection afforded by DMCA Title II; in Io Group v. Veoh, the court ruled that even though Veoh performed additional processing on videos (such as converting them to flash, indexing them, and generating a representative thumbnail) all of these actions were performed at the bequest of the user, and therefore Veoh did not necessarily have knowledge of infringing content (Raysman, 2008). In UMG v. Veoh, UMG’s lawyers attempted a variety of “novel” arguments to convince the court that Veoh didn’t fit the definition of a safe harbor; so far, the courts have ruled along the same lines as the previously mentioned case (Goldman, 2009).</p>
<p>The other particularly notable safe harbor case is the ongoing lawsuit, Viacom International Inc. et al v. YouTube, Inc. et al, the largest test of the DMCA safe harbor provision (Bangeman 2007). Viacom sued YouTube and its owner Google for hosting around 150,000 videos to which Viacom claimed some sort of intellectual property ownership, asking for a billion dollars in punitive damages. During discovery, Viacom was granted access to an immense amount of data related to user activity on the site, which both parties agreed would remain anonymous (Opsahl 2008). In March 2008, the court denied the punitive damages, although statutory damages remain a possibility (OUT-LAW.COM, 2008). There have been some suggestions that Google bought YouTube anticipating such a lawsuit, given that a poorly defended YouTube might have  established a poor legal precedent that would affected Google&#8217;s primary business (Kono 2007).</p>
<p>There is also an argument to be made that the anti-circumvention clause has encouraged speech (Nimmer, 2005); in particular, it has been suggested that the DMCA does not regulate substantially more speech than is necessary, and as such is constitutional; and without the DMCA, less “speech” would have been created due to reduced incentives and additional piracy (Nimmer, 2005).</p>
<h3 id="toc-proposals">Proposals</h3>
<p>There have been a wide variety of proposals as to how the law should be changed given our retrospective on the DMCA’s effects, most of them concerning the anti-circumvention provisions. A popular suggestion is to simply repeal it and let courts judge based on the many existing laws (McCullagh, 2001), largely because of the effect that anti-circumvention has had on fair use (DeJean, 2006), and that the courts were producing reasonable rulings in this field before the passage of the DMCA (Lee, 2006).</p>
<p>One attempt to amend the DMCA to remedy the problems discussed here was the Benefit Authors without Limiting Advancement or Net Consumer Expectations (BALANCE) Act, proposed by Zoe Lofgren in 2003 (Richmond, 2003). It would have allowed consumers to “make backup copies and display digital works on devices of their choice… prohibit non-negotiable, &#8220;shrink-wrap&#8221; licenses on digital content … [and] … allow consumers to bypass copy protection technologies if those technologies &#8220;impede&#8221; their fair-use rights” (Gross, 2003).</p>
<p>The most serious and well-enumerated proposal has been the Digital Media Consumers’ Rights Act, or the DMCRA, first introduced in 2003 and reintroduced in 2005. This act seeks to remedy most of the aforementioned problems with the DMCA while preserving some of the benefits; in particular, it would require clear labeling of copy-protected CDs, make circumvention of copy protection legal provided that it is fair use, and decriminalizes scientific research into copy protection (Boucher, n.d.).</p>
<p>Neither of these two laws made it out of committee, but the DMCRA may have a reasonable chance for success if it is introduced again, given the current political climate. It will doubtlessly be opposed by content providers, and how such a battle would play out is anyone’s guess.</p>
<p>The safe harbor provisions are not without their problems, however. Some recommendations to this end include increased transparency in the process; centralized reporting of DMCA takedown requests; stronger punishments for false notices; and an addition of a system to request attribution instead of entirely removing the work (Bailey, 2008).</p>
<h3 id="toc-conclusion">Conclusion</h3>
<p>Above all else, the establishment of the DMCA should serve as a cautionary tale. Taking potentially controversial legislation and turning it into an international multi-party treaty, signing it, and then presenting it to congress and the American public as fait accompli is extremely undemocratic. There is a significant danger this will happen again with the Anti-Counterfeiting Trade Agreement (ACTA) which, according to a leaked memo, has measures just as draconian as the DMCA’s anti-circumvention provisions (Robinson, 2008).</p>
<p>It is also clear via John McCain’s difficulties with DMCA takedown notices that John McCain (one of the senators that voted for the DMCA) had no idea of the real implications that the DMCA would have on John McCain (candidate for president) (Stirland, 2008). This shows the need for clearer and increased communication between policy-makers and technologists capable of understanding the various impacts of relevant legislation.</p>
<p>It would also be helpful if everyone, including the media conglomerates most responsible for much of the recent intellectual property legislation and DMCA abuses learned and respected the well-established concept of fair use. In one reasonably recent example, the Recording Industry Association of America attempted to claim that ripping CDs to an iPod was not fair use (Lohmann, February 2006). The willingness to criminalize an action that their entire consumer base undoubtedly engages in shows an almost willful ignorance that is not conducive to the creation of a body of law (be it the DMCRA or any other suitable remedy) that is truly fair to content creators, device manufacturers, and consumers.<br />
 </p>
<h3 id="toc-references">References</h3>
<p>Bailey, Jonathan. (August 5, 2008). <a href="http://www.plagiarismtoday.com/2008/08/05/5-ways-to-improve-dmca-safe-harbor/" rel="nofollow" >5 Ways to Improve DMCA Safe harbor</a>. Retrieved April 11, 2009 from Plagarism Today.</p>
<p>Bangeman, Eric. (May 1, 2007). <a href="http://arstechnica.com/tech-policy/news/2007/05/google-cites-safe-harbor-fair-use-in-viacom-v-youtube-defense.ars" rel="nofollow" >Google cites Safe harbor, fair use in Viacom v. YouTube defense</a>. Retrieved April 11, 2009 from Ars Technica.</p>
<p>Boyle, James. (November 14, 1995). Overregulating the Internet. Washington Times, A17.</p>
<p>Boucher, Rick. <a href="http://www.boucher.house.gov/index.php?option=com_content&#038;task=view&#038;id=22&#038;Itemid" rel="nofollow" >Digital Media Consumers&#8217; Rights Act</a>. Retrieved April 11, 2009 from The Online Office of Congressman Rich Boucher.</p>
<p>Chilling Effects Clearinghouse. <a href="http://www.chillingeffects.org/anticircumvention/" rel="nofollow" >Anticircumvention (DMCA)</a>. Retreived April 11, 2009 from the Chilling Effects Clearinghouse.</p>
<p>Chilling Effects Clearinghouse. <a href="http://www.chillingeffects.org/dmca512/" rel="nofollow" >DMCA Safe Harbor Provisions.</a> Retrieved April 11, 2009 from the Chilling Effects Clearinghouse.</p>
<p>Dabeau, Jocelyn. (February 20, 2000). <a href="http://cyber.law.harvard.edu/property00/MP3/rio.html" rel="nofollow" >Recording Industry Ass&#8217;n of America v. Diamond Multimedia Systems, Inc</a>. Retrieved April 11, 2009 from the Berkman Center of Internet &#038; Society at Harvard University.</p>
<p>DeJean, David. (November 20, 2006). <a href="http://www.informationweek.com/blog/main/archives/2006/11/dear_democrats.html" rel="nofollow" >Dear Democrats: Please Repeal the DMCA</a>. Retrieved April 11, 2009 from InformationWeek.</p>
<p>Delegates to the Philadelphia Convention. (1787). <a href="http://www.archives.gov/exhibits/charters/constitution_transcript.html" rel="nofollow" >Constitution of the United States</a>. Retrieved April 12, 2009 from the U.S. National Archives and Records Administration.</p>
<p>Electronic Frontier Foundation. (October 2008). <a href="http://www.eff.org/wp/unintended-consequences-ten-years-under-dmca" rel="nofollow" >Ten Years under the DMCA</a>. Retrieved April 11, 2009 from the Electronic Frontier Foundation.</p>
<p>Goldman, Eric. (January 5, 2009). <a href="http://blog.ericgoldman.org/archives/2009/01/veoh_gets_anoth.htm" rel="nofollow" >Veoh Gets Another Nice 512(c) Win&#8211;UMG v. Veoh</a>. Retrieved April 11, 2009 from Eric Goldman Technology &#038; Marketing Law Blog.</p>
<p>Gross, Grant. (March 5, 2003). <a href="http://www.infoworld.com/t/applications/bill-would-protect-consumers-dmca-950" rel="nofollow" >Bill would &#8216;protect&#8217; consumers from DMCA</a>. Retrieved April 11, 2009 from Infoworld.</p>
<p>GVU Center. (October 1998). <a href="http://www.cc.gatech.edu/gvu/user_surveys/survey-1998-10/graphs/general/q50.htm" rel="nofollow" >GVU&#8217;s Tenth WWW User Survey: Major Geographical Location</a>. Retrieved April 11, 2009 from GVU Center.</p>
<p>Io Group Inc. v. Veoh Networks Inc., 2008 U.S. Dist. LEXIS 65915 (N.D. Cal. Aug. 27, 2008)</p>
<p>Jayasuriya, Mehan. (October 27, 2008). <a href="http://www.publicknowledge.org/node/1816" rel="nofollow" >10 Years of the DMCA Part One: Vijay Raghavan</a>. Retrieved April 11, 2009 from Public Knowledge. Web site: </p>
<p>Kono, Michi. (March 14, 2007). <a href="http://www.michiknows.com/2007/03/14/maybe-google-wanted-to-be-sued-youtube-and-plan-b/" rel="nofollow" >Maybe Google Wanted to be Sued: YouTube and Plan B</a>. Retrieved April 11, 2009 from Michi Knows.</p>
<p>Kravets, David. (October 27, 2008). <a href="http://blog.wired.com/27bstroke6/2008/10/ten-years-later.html" rel="nofollow" >10 Years Later, Misunderstood DMCA is the Law That Saved the Web</a>. Retrieved April 11, 2009 from Wired.</p>
<p>Lee, Timothy B. (March 21, 2006). <a href="http://www.cato.org/pub_display.php?pub_id=6025" rel="nofollow" >Circumventing Competition: The Perverse Consequences of the Digital Millennium Copyright Act</a>. CATO Institute. </p>
<p>Lehman, Bruce. (September 2005). <a href="http://www.uspto.gov/go/com/doc/ipnii/" rel="nofollow" >Intellectual Property and the National Information Infrastructure</a>. Retrieved April 11, 2009 from the United States Patent and Trademark Office.</p>
<p>Lenz v. Universal Music Group, 2008 U.S. Dist LEXIS 91890 (N.D. Cal. 2008)</p>
<p>Lewin, James. (November 18, 2006). <a href="http://www.podcastingnews.com/2006/11/18/should-ripping-videos-to-ipod-be-illegal/" rel="nofollow" >Should Ripping Videos To iPod Be Illegal?</a> Retrieved April 11, 2009 from Podcasting News.</p>
<p>Lohmann, Fred von. (November 30, 2005). <a href="http://www.eff.org/deeplinks/2005/11/dmca-triennial-rulemaking-failing-consumers-completely" rel="nofollow" >DMCA Triennial Rulemaking: Failing Consumers Completely</a>. Retrieved April 11, 2009 from the Electronic Frontier Foundation.</p>
<p>Lohmann, Fred von. (February 15, 2006). <a href="http://www.eff.org/deeplinks/2006/02/riaa-says-ripping-cds-your-ipod-not-fair-use" rel="nofollow" >RIAA Says Ripping CDs to Your iPod is NOT Fair Use</a>. Retrieved April 11, 2009 from the Electronic Frontier Foundation.</p>
<p>Lohmann, Fred von; Seltzer, Wendy. (June 2006). <a href="http://www.spectrum.ieee.org/jun06/3673" rel="nofollow" >Death by DMCA</a>. IEEE Spectrum. Retrieved April 11, 2009 from the IEEE.</p>
<p>Public Knowledge. (2008). <a href="http://www.publicknowledge.org/issues/dmca" rel="nofollow" >Digital Millennium Copyright Act (DMCA)</a>. Retrieved April 11, 2009 from Public Knowledge.</p>
<p>McCullagh, Declan. (July 25, 2001). <a href="http://www.wired.com/politics/law/news/2001/07/45522" rel="nofollow" >Congress No Haven for Hackers</a>. Retrieved April 11, 2009 from Wired.</p>
<p>McSherry, Corynne. (August 20, 2008). <a href="http://www.eff.org/deeplinks/2008/08/judge-rules-content-owners-must-consider-fair-use-" rel="nofollow" >Judge Rules That Content Owners Must Consider Fair Use Before Sending Takedowns</a>. Retrieved April 11, 2008 from the Electronic Frontier Foundation.</p>
<p>Nimmer, Raymond T. (February 2005). <a href="http://ssrn.com/abstract=572886" rel="nofollow" >First Amendment Speech and the Digital Millennium Copyright Act: A Proper Marriage</a>. Jonathan Griffiths, Uma Suthersanen, eds., Oxford University Press. Retrieved April 11, 2009 from the Social Science Research Network. Also available <a href="http://www.ils.unc.edu/~bwilder/inls180/anti%20samuelson.pdf" rel="nofollow" >here</a>.</p>
<p>Opsahl, Kurt. (July 3, 2008). <a href="http://www.eff.org/deeplinks/2008/07/viacoms-statement-youtube-user-data-controversy" rel="nofollow" >Viacom&#8217;s Statement on YouTube User Data Controversy</a>. Retrieved April 11, 2009 from the Electronic Frontier Foundation.</p>
<p>OUT-LAW.COM. (May 27, 2008). <a href="http://www.out-law.com/page-9146" rel="nofollow" >Google claims YouTube is exactly what DMCA was made for</a>. Retrieved April 11, 2009 from OUT-LAW.COM.</p>
<p>Rasch, Mark. (March 4, 2008). <a href="http://www.securityfocus.com/columnists/467" rel="nofollow" >Let&#8217;s Go Crazy</a>. Retrieved April 11, 2009 from Security Focus.</p>
<p>Raysman, Richard. (October 17, 2008). <a href="http://www.law.com/jsp/legaltechnology/pubArticleLT.jsp?id=1202425323100" rel="nofollow" >DMCA: A Safe Harbor for Video Sharing?</a> Retrieved April 11, 2009 from Law.com.</p>
<p>Richmond, Robert. (March 21, 2003). <a href="http://www.techimo.com/articles/index.pl?photo=29" rel="nofollow" >Balance Act Seeks to Resturcture DMCA</a>. Retrieved April 11, 2009 from TechIMO Hardware.</p>
<p>Robinson, David. (October 27, 2008). <a href="http://www.freedom-to-tinker.com/blog/dgr/dmca-week-part-i-how-dmca-was-born" rel="nofollow" >DMCA Week, Part I: How the DMCA Was Born</a>. Retrieved April 12, 2009 from Freedom to Tinker. </p>
<p>Rothman, David. (March 17, 1996). <a href="http://www.teleread.org/update6.htm" rel="nofollow" >TeleRead Update #6: Copyright Czar Threatens to &#8220;Destroy&#8221; Law Professor</a>. Retrieved April 11, 2009 from Teleread. </p>
<p>Stirland, Sarah Lai. (October 15, 2008). <a href="http://blog.wired.com/27bstroke6/2008/10/youtube-to-mcca.html" rel="nofollow" >YouTube to McCain: You Made Your DMCA Bed, Lie in It</a>. Retrieved April 11, 2009 from Wired.</p>
<p><a href="http://www.citizen.org/documents/vernororder.pdf" rel="nofollow" >Timothy S. Vernor v. Autodesk, Inc.</a> 87 USPQ2d 1501 (W.D.Wash. 2008)</p>
<p>United States Copyright Office. (2000). <a href="http://www.copyright.gov/reports/studies/dmca/dmca_study.html" rel="nofollow" >Digital Millennium Copyright Act Study</a>.</p>
<p>United States Copyright Office. (1998). <a href="http://www.copyright.gov/legislation/dmca.pdf" rel="nofollow" >The Digital Millennium Copyright Act of 1998 (pdf)</a>.</p>
<p>United States Government Printing Office. (December 23, 2008). <a href="http://frwebgate.access.gpo.gov/cgi-bin/usc.cgi?ACTION=BROWSE&#038;title=17usc" rel="nofollow" >US Code Browse – Title 17 – Copyrights</a>.</p>
<p>Universal City Studios, Inc. v. Reimerdes, 111 F. Supp. 2d 294 (S.D.N.Y. 2000), aff&#8217;d, 273 F.3d 429 (2d Cir. 2001)</p>
<p>Vogt, Tom. <a href="http://www.lemuria.org/DeCSS/main.html" rel="nofollow" >DeCSS Central</a>. Retrieved April 11, 2009 from Lemuria.</p>
<p>Warren, Rob. (May 3, 2000). <a href="http://cyber.law.harvard.edu/openlaw/DVD/dvd-discuss-faq.html" rel="nofollow" >The Openlaw DVD/DeCSS Forum Frequently Asked Questions (FAQ) List</a>. Retrieved April 11, 2009 from the Berkman Center of Internet &#038; Society at Harvard University.</p>
<p>World Intellectual Property Organization. <a href="http://www.wipo.int/treaties/en/ip/wct/trtdocs_wo033.html" rel="nofollow" >WIPO Copyright Treaty</a>. (December 20, 1996). Retrieved April 11, 2009 from the World Intellectual Property Organization.</p>
]]></content:encoded>
			<wfw:commentRss>http://disavian.no-ip.info/dmca-101/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WPF Issue Tracker</title>
		<link>http://disavian.no-ip.info/wpf-issue-tracker/</link>
		<comments>http://disavian.no-ip.info/wpf-issue-tracker/#comments</comments>
		<pubDate>Mon, 18 May 2009 18:05:02 +0000</pubDate>
		<dc:creator>disavian</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://disavian.no-ip.info/?p=186</guid>
		<description><![CDATA[For a class project in Georgia Tech&#8217;s CS 2335, the class was instructed to create a client/server issue tracker with several specific features. We are hosting this project on Google Code, where you can use your favorite subversion client (I prefer TortoiseSVN) to download and enjoy our code.
While creating the project, we ran into several [...]]]></description>
			<content:encoded><![CDATA[<p>For a class project in Georgia Tech&#8217;s CS 2335, the class was instructed to create a client/server issue tracker with several specific features. We are hosting this project <a href=" http://code.google.com/p/cs2335lab5/" rel="nofollow" >on Google Code</a>, where you can use your favorite subversion client (I prefer <a href="http://tortoisesvn.tigris.org/" rel="nofollow" >TortoiseSVN</a>) to download and enjoy our code.</p>
<p>While creating the project, we ran into several issues, the solutions to which I felt were somewhat non-trivial. Thanks to several blog posts and WPF books, we were able to create a very solid application that received the maximum grade possible.<span id="more-186"></span></p>
<h3 id="toc-networking">Networking</h3>
<p>Up until this point, we&#8217;d only been introduced to more traditional methods of networking (as used in a <a href="http://code.google.com/p/cs2335lab4spring09/" rel="nofollow" >chat application</a> in the previous lab). I discovered the <a href="http://en.wikipedia.org/wiki/Windows_Communication_Foundation" rel="nofollow" >Windows Communication Foundation</a> (WCF), which makes client/server networking <em>extremely easy</em>. You simply define an interface for the client to call methods on the server, and optionally a callback interface for the server to call methods on the client. We weren&#8217;t able to get the callbacks working, but even with that oversight the application is still relatively solid. With some outside help, callbacks would probably be easily fixed; if not, one could always use something like a timer or refresh button.</p>
<h3 id="toc-overall-architecture">Overall Architecture</h3>
<p>The choice of WCF (see above) really lends itself to a specific class structure; in particular, a &#8220;client&#8221; project, a &#8220;server&#8221; project, and a &#8220;common&#8221; project with the interface between the two (INetworkManager.cs) and any types used therein (User.cs and Issue.cs). I also made use of C#&#8217;s namespaces here, making each of the projects part of a common (solution-wide) namespace, and gave each of the projects a child namespace. </p>
<h3 id="toc-client-architecture">Client Architecture</h3>
<p>I made extensive use of the Application object; while it is technically a singleton, it is a pain to use. The following code makes for easier access to its methods:</p>
<blockquote>
<pre>public static App Instance()
{
     return ((App)App.Current);
}</pre>
</blockquote>
<p></br></p>
<p>While that&#8217;s a fairly simple trick, it saves a nontrivial amount of development time. I also developed the application to have multiple windows, including a login window, a &#8220;main&#8221; client window, and child windows that let the user view details on users or tasks. I felt the best decision here would be to hide/show each as appropriate from the Application class with ShowLogin(), ShowClient(), etc. Note that this means that I needed some code in the Client window that instructed the program to shut down when that window was closed; otherwise, it would simply hang.</p>
<h3 id="toc-data-management">Data management</h3>
<p>The list of valid users and current issues are both maintained on the server. Each time they are updated, they are reserialized to disk, a trivial task with a relatively small number of issues and users.</p>
<p>If the system were used with a large project, the backend could most likely be swapped for a database, especially given the ease with which databases are accessed from .Net.</p>
<h4 id="toc-serialization">Serialization</h4>
<p>We had to make some changes so that the data would persist across sessions. First of all, we will be serializing the collection of users and issues, which depend on other data types. So for the issue manager, we added a couple properties:</p>
<blockquote>
<pre>[XmlRoot("IssueManager")]
[XmlInclude(typeof(Data.Issue))]
[XmlInclude(typeof(Data.User))]
public class IssueManager
{
     ...
}</pre>
</blockquote>
<p></br></p>
<p>In addition, you can&#8217;t exactly serialize a dictionary; instead, you must fool .Net into doing it anyway. I used this as a basis to serialize more complex types, but wasn&#8217;t able to get it working.</p>
<blockquote><pre>/// &lt;summary&gt;
/// Note that we cannot serialize a generic dictionary.
/// &lt;/summary&gt;
[XmlIgnore]
public Dictionary&lt;Int64?, Data.Issue&gt; Issues
{
    get { return issues; }
    set { issues = value; }
}

/// &lt;summary&gt;
/// Property created to fool xml serialization
/// &lt;/summary&gt;
[XmlArray("Issues")]
[XmlArrayItem("IssuesLine", Type = typeof(DictionaryEntry))]
public DictionaryEntry[] UserArray
{
    get
    {
        //Make an array of DictionaryEntries to return
        DictionaryEntry[] ret = new DictionaryEntry[Issues.Count];
        int i = 0;
        DictionaryEntry de;
        //Iterate through Stuff to load items into the array.
        foreach (KeyValuePair&lt;Int64?, Data.Issue&gt; issuesLine in Issues)
        {
            de = new DictionaryEntry();
            de.Key = issuesLine.Key;
            de.Value = issuesLine.Value;
            ret[i] = de;
            i++;
        }
        return ret;
    }
    set
    {
        Issues.Clear();
        for (int i = 0; i < value.Length; i++)
        {
            Issues.Add((Int64?)value[i].Key, (Data.Issue)value[i].Value);
        }
    }
}</pre>
</blockquote>
<p></br></p>
<p>I may have also needed a default (parameterless) constructor for Serialization to work. Now that it is serializable, we need to actually store the data. Every time I updated the collection, I call Serialize(), which is the following function:</p>
<blockquote>
<pre>/// &lt;summary&gt;
/// Serialize the list of issues. This method runs every time an issue is changed.
/// &lt;/summary&gt;
public void Serialize()
{
    XmlSerializer serializer = new XmlSerializer(typeof(IssueManager));
    string filename = "issues.xml";
    StreamWriter outStream = new StreamWriter(filename, false);
    serializer.Serialize(outStream, this);
    outStream.Close();
}</pre>
</blockquote>
<p></br></p>
<h4 id="toc-deserialization">Deserialization</h4>
<p>Once you have serialization hooked up, deserialization is a snap. This function is called when the application starts:</p>
<blockquote>
<pre>void AppStartup(object sender, StartupEventArgs args)
{
    // show the server form
    ShowServer();
    // you may now make calls to App.WriteLine.

    App.WriteLine("Started the dialog");

    // create manager objects
    CreateUserManager();
    CreateIssueManager();
}</pre>
</blockquote>
<p></br></p>
<p>Here is where we read in the xml; note that most of these lines are actually related to error handling:</p>
<blockquote>
<pre>/// &lt;summary&gt;
/// Deserialize the contents of issues.xml into an IssueManager object
/// &lt;/summary&gt;
public void CreateIssueManager()
{
    // deserialize or create a new IssueManager
    XmlSerializer deserial = new XmlSerializer(typeof(IssueManager));
    try
    {
        System.IO.TextReader read = new System.IO.StreamReader("issues.xml");
        IManager = (IssueManager)deserial.Deserialize(read);
        read.Close();
        App.WriteLine("Deserialized IssueManager from issues.xml");
    }
    catch (System.IO.FileNotFoundException)
    {
        App.WriteLine("Couldn't find issues.xml; creating new IssueManager");
        IManager = new IssueManager();
    }
    catch (System.Xml.XmlException)
    {
        App.WriteLine("Error while parsing issues.xml!");
        IManager = new IssueManager();
    }
    catch (Exception ex)
    {
        // print out exception and inner exception if available
        StringBuilder b = new StringBuilder("Error parsing issues.xml: ");
        b.Append(ex.Message);
        if (ex.InnerException != null)
        {
            b.Append(" ");
            b.Append(ex.InnerException.Message);
        }
        App.WriteLine(b.ToString());
        IManager = new IssueManager();
    }
}</pre>
</blockquote>
<p></br></p>
<h3 id="toc-gui-considerations">GUI considerations</h3>
<h4 id="toc-login-form">Login form</h4>
<p>Given that most users will log into a system far more times than they will register for it, I hid the extra registration fields so experienced users would be less confused about what to do next. My model for this was how popular instant messaging clients only ever show the username/password, and direct you to a website to register.</p>
<p>I attempted to use a PasswordBox and to keep the password in a SecureString, but SecureString is particularly difficult to use in that capacity. Thus, as soon as it is needed, the password is put into a string object and passed around as insecure as ever.</p>
<h4 id="toc-client-sorting-listview">Client: Sorting ListView</h4>
<p>I found how to sort a ListView <a href="http://www.switchonthecode.com/tutorials/wpf-tutorial-using-the-listview-part-2-sorting" rel="nofollow" >here</a>. In my code, I had to sort more than one ListView, so I added a handler to each of the columns in each ListView, such as the following:</p>
<blockquote>
<pre>&lt;GridViewColumn DisplayMemberBinding="{Binding Name}"&gt;
     &lt;GridViewColumnHeader Click="IssueSort_Click" Tag="Name" Content="Name"/&gt;
&lt;/GridViewColumn&gt;</pre>
</blockquote>
<p></br></p>
<p>Which called this function:</p>
<blockquote>
<pre>private void IssueSort_Click(object sender, RoutedEventArgs e)
{
     Sort_Click(sender, e, issuesListView);
}</pre>
</blockquote>
<p></br></p>
<p>Which called this function:</p>
<blockquote>
<pre>private void Sort_Click(object sender, RoutedEventArgs e, ListView lv)
{
    GridViewColumnHeader column = sender as GridViewColumnHeader;
    string field = column.Tag as string;

    if (_CurSortCol != null)
    {
        AdornerLayer.GetAdornerLayer(_CurSortCol).Remove(_CurAdorner);
        lv.Items.SortDescriptions.Clear();
    }

    ListSortDirection newDir = ListSortDirection.Ascending;
    if (_CurSortCol == column &#038;&#038; _CurAdorner.Direction == newDir)
    {
        newDir = ListSortDirection.Descending;
    }

    _CurSortCol = column;
    _CurAdorner = new SortAdorner(_CurSortCol, newDir);
    AdornerLayer.GetAdornerLayer(_CurSortCol).Add(_CurAdorner);
    lv.Items.SortDescriptions.Add(new SortDescription(field, newDir));
}</pre>
</blockquote>
<p></br></p>
<p>You will also need their SortAdorner class, which I took the liberty of commenting for you:</p>
<blockquote>
<pre>public class SortAdorner : Adorner
{
    // At the top, we have two static Geometries:
    // one for the up arrow
    private readonly static Geometry _AscGeometry =
        Geometry.Parse("M 0,0 L 10,0 L 5,5 Z");

    // and one for the down arrow
    private readonly static Geometry _DescGeometry =
        Geometry.Parse("M 0,5 L 10,5 L 5,0 Z");

    // sort direction
    public ListSortDirection Direction { get; private set; }

    // The UIElement will be the element that the adorner will adorn
    public SortAdorner(UIElement element, ListSortDirection dir)
        : base(element)
    {
        Direction = dir;
    }

    /// &lt;summary&gt;
    /// All of the rendering occurs in this function
    /// &lt;/summary&gt;
    /// &lt;param name="drawingContext"&gt;&lt;/param&gt;
    protected override void OnRender(DrawingContext drawingContext)
    {
        base.OnRender(drawingContext);

        /// First, if the column header is less than 20 pixels wide,
        /// we don't bother drawing the arrow (it looks kind of silly).
        if (AdornedElement.RenderSize.Width < 20)
            return;

        /// Then we push a TranslateTransform onto the drawing context
        /// transform stack. This makes sure that the arrow will be
        /// drawn at the right edge of the column and vertically in the
        /// center.
        drawingContext.PushTransform(
            new TranslateTransform(
              AdornedElement.RenderSize.Width - 15,
              (AdornedElement.RenderSize.Height - 5) / 2));

        /// In the next line, we draw the geometry (looking at
        /// the Direction to figure out which one)
        drawingContext.DrawGeometry(Brushes.Black, null,
            Direction == ListSortDirection.Ascending ?
              _AscGeometry : _DescGeometry);

        /// Finally, we pop the translate transform off of the transform
        /// stack (just to keep the transform stack clean).
        drawingContext.Pop();
    }
}</pre>
</blockquote>
<p></br></p>
<p>There are certainly other ways to sort ListViews out there, this is simply the one that I used.</p>
<h4 id="toc-issue-detail-drop-down-list-of-users">Issue Detail: Drop-down list of users</h4>
<p>When a user assigns someone to an issue, they are able to click a drop-down and select someone. This required us to ping the server for a list of potential users, but was a nice graphical and usability touch. The drop down box itself looks like this in XAML:</p>
<blockquote>
<pre>&lt;ComboBox Grid.Column="1" Grid.Row="6" Name="assignedToBox" DropDownOpened="assignedToBox_DropDownOpened"/&gt;</pre>
</blockquote>
<p></br></p>
<p>Which called this event handler:</p>
<blockquote>
<pre>private void assignedToBox_DropDownOpened(object sender, EventArgs e)
{
    // clear the current items
    assignedToBox.Items.Clear();

    // if the user isn't an admin, the only choice is the user's username
    if (User.Access == Data.User.Privileges.Normal)
    {
        assignedToBox.Items.Add(User.ID);
    }
    else
    {
        // otherwise the user can choose from any available user
        foreach (KeyValuePair<string, Data.User> usersLine in Users)
        {
            assignedToBox.Items.Add(usersLine.Key);
        }
    }
}</pre>
</blockquote>
<p></br></p>
<p>Some of the magic is happening behind the scenes, though; accessing Users is actually querying the server, as follows:</p>
<blockquote>
<pre>public Dictionary<string, Data.User> Users
{
    get
    {
        lock (App.Instance().Proxy)
        {
            return App.Instance().Proxy.GetUserList();
        }
    }
}</pre>
</blockquote>
<p></br></p>
<p>Those are all of the hints that I think I need to point out. You're welcome to explore and let me know if you have any questions about functionality or design choices.</p>
]]></content:encoded>
			<wfw:commentRss>http://disavian.no-ip.info/wpf-issue-tracker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deceptive Design</title>
		<link>http://disavian.no-ip.info/deceptive-design/</link>
		<comments>http://disavian.no-ip.info/deceptive-design/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 18:57:31 +0000</pubDate>
		<dc:creator>disavian</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[ui design]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://disavian.no-ip.info/?p=152</guid>
		<description><![CDATA[While not as bad as being phished, certain programs and websites are deliberately misleading. I would like to show you two examples that have caught me: Norton and myYearbook.

Norton
When I got my laptop, it came bundled with Norton Internet Security. Anyone familiar with either Norton or McAfee know that they make the most annoying, intrusive [...]]]></description>
			<content:encoded><![CDATA[<p>While not as bad as being <a href="http://en.wikipedia.org/wiki/Phishing" rel="nofollow" >phished</a>, certain programs and websites are deliberately misleading. I would like to show you two examples that have caught me: Norton and myYearbook.<br />
<span id="more-152"></span></p>
<h3 id="toc-norton">Norton</h3>
<p>When I got my laptop, it came bundled with Norton Internet Security. Anyone familiar with either Norton or McAfee know that they make the most annoying, intrusive products known to man (outside of actual malware). Well, I figured since it was free I&#8217;d give it a try, as I hadn&#8217;t used a Symantec product in a few years. Well, they&#8217;re tricky bastards. When it comes time to &#8216;register&#8217; you are presented with the following screen. Everything is fine until you get to the &#8216;country&#8217; box.<br />
<a href="http://disavian.no-ip.info/wp-content/uploads/2009/01/nis-crap-1rd.jpg"><img src="http://disavian.no-ip.info/wp-content/uploads/2009/01/nis-crap-1rd-300x230.jpg" alt="" title="nis-crap-1rd" width="300" height="230" class="alignnone size-medium wp-image-181" /></a></p>
<p>Interestingly, everything is just fine for ANY country except the United States. Here&#8217;s an example of selecting the UK; everything looks as it should, yes?<br />
<a href="http://disavian.no-ip.info/wp-content/uploads/2009/01/nis-crap-2rd.jpg"><img src="http://disavian.no-ip.info/wp-content/uploads/2009/01/nis-crap-2rd-300x230.jpg" alt="" title="nis-crap-2rd" width="300" height="230" class="alignnone size-medium wp-image-182" /></a></p>
<p>As soon as you select &#8216;United States,&#8217; the program quietly rechecks the &#8217;spam me&#8217; check boxes. Since they&#8217;re on the left half of the form, you probably won&#8217;t notice, and you&#8217;ll look straight down to the &#8216;Next&#8217; button without realizing that you&#8217;ve &#8217;selected&#8217; to receive their email.<br />
<a href="http://disavian.no-ip.info/wp-content/uploads/2009/01/nis-crap-3rd.jpg"><img src="http://disavian.no-ip.info/wp-content/uploads/2009/01/nis-crap-3rd-300x230.jpg" alt="" title="nis-crap-3rd" width="300" height="230" class="alignnone size-medium wp-image-183" /></a></p>
<p>Funnily enough, after going back and forth and <i>consciously noting</i> this &#8216;feature,&#8217; I forgot to uncheck it the last time through. It&#8217;s an evil use of well-known UI design concepts, tricking you even if you&#8217;ve noticed it!</p>
<h3 id="toc-myyearbook">myYearbook</h3>
<p>I&#8217;d received an email to try out this site. I like to make profiles on every website ever, so I decided to give it a try. My advice: don&#8217;t. It&#8217;s worse than MySpace, which is saying something. Don&#8217;t even touch it.</p>
<p>So my particular problem here is the &#8216;friend finder,&#8217; which caused me to spam all of my Gmail contacts. <b>Please disregard these emails. I am <i>so sorry</i> I got caught by this!</b> </p>
<p>So you start out with a perfectly normal form:<br />
<a href="http://disavian.no-ip.info/wp-content/uploads/2009/01/mybff1rd.png"><img src="http://disavian.no-ip.info/wp-content/uploads/2009/01/mybff1rd-300x108.png" alt="" title="mybff1rd" width="300" height="108" class="alignnone size-medium wp-image-176" /></a></p>
<p>It checks your contacts and tells you there are two matching ones. Your instinct is to click the button above to add these. But wait!<br />
<a href="http://disavian.no-ip.info/wp-content/uploads/2009/01/mybff2rd.png"><img src="http://disavian.no-ip.info/wp-content/uploads/2009/01/mybff2rd-300x167.png" alt="" title="mybff2rd" width="300" height="167" class="alignnone size-medium wp-image-179" /></a></p>
<p>If you scroll down, you&#8217;ll note that they&#8217;ve also included <i>all of your other contacts</i> and will spam them with deceptive emails encouraging them to join this stupid site if you click that button.<br />
<div id="attachment_173" class="wp-caption alignnone" style="width: 310px"><a href="http://disavian.no-ip.info/wp-content/uploads/2009/01/mybff3rd.png"><img src="http://disavian.no-ip.info/wp-content/uploads/2009/01/mybff3rd-300x170.png" alt="Emails, last names redacted" title="mybff3rd" width="300" height="170" class="size-medium wp-image-173" /></a><p class="wp-caption-text">Emails, last names redacted</p></div></p>
<p>What I actually did was click the button, immediately realize what they had probably done (an oh-shit moment), hit the stop button like five times, and then set my twitter/facebook/IM status to inform my friends to disregard the message. And yes, I changed my password. Do you have any examples of deceptive design such as these? Were you caught by it?</p>
]]></content:encoded>
			<wfw:commentRss>http://disavian.no-ip.info/deceptive-design/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Opera Mobile 9.5 Review</title>
		<link>http://disavian.no-ip.info/opera-mobile-95-review/</link>
		<comments>http://disavian.no-ip.info/opera-mobile-95-review/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 23:02:51 +0000</pubDate>
		<dc:creator>disavian</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[phone]]></category>

		<guid isPermaLink="false">http://disavian.no-ip.info/?p=40</guid>
		<description><![CDATA[I&#8217;ve owned my VX6700 for almost two years now, which has given me time to see its shortcomings, especially compared to the somewhat newer iPhone and iPhone 3G, which about half of my friends seem to own. 
My biggest complaint so far has been Windows Mobile 5&#8217;s browser. It (seemingly) has the html and javascript [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve owned my VX6700 for almost two years now, which has given me time to see its shortcomings, especially compared to the somewhat newer iPhone and iPhone 3G, which about half of my friends seem to own. </p>
<p>My biggest complaint so far has been Windows Mobile 5&#8217;s browser. It (seemingly) has the html and javascript support of Internet Explorer 3. But what other options are there?<span id="more-40"></span></p>
<h3 id="toc-existing-alternatives">Existing alternatives</h3>
<p>About a year and a half ago, a group in Microsoft Research created a Windows Mobile browser with advanced rendering and zooming functionality presumably similar to the features in iPhone&#8217;s Safari.</p>
<p>After making a closed beta of their browser a year and a half ago, the internet has heard exactly nothing from them, leading me to speculate that Silverfish has been rolled into a future version of Windows Mobile, especially since the next versions are said to heavily feature multi-touch. </p>
<p>A fancy new browser built into the next OS would be a compelling reason for users that haven&#8217;t already sprung for a shiny new iPhone to get a new phone with the next version of Windows Mobile.</p>
<h3 id="toc-rendering">Rendering</h3>
<p>The best feature of Opera Mobile is something that desktop users have been taking for granted for a long, long time: proper rendering of web pages. Handsets are (apparently) just now overcoming the processor and memory limitations, although pages are still somewhat slow to render.</p>
<h3 id="toc-zoom">Zoom</h3>
<p>A feature that goes hand-in-hand with desktop-style page rendering is the ability to zoom in on a page. This is a little clunky compared to the multi-touch interface I&#8217;m used to using on newer handheld devices, and is somewhat slow to load.</p>
<h3 id="toc-feel">Feel</h3>
<p>While the &#8216;modern&#8217; features of the browser were nice, I experienced many &#8216;out of memory&#8217; errors on my device, even when viewing relatively simple pages, and even when Opera was the only program running on the device.</p>
<p>Opera doesn&#8217;t respect the traditional Windows Mobile interface; instead, it implements its own non-client area, something probably confusing for most users of the program. This is the same problem that Quicktime had on Windows, where it ignored the usual Windows non-client area in favor of the Mac OS interface, a frankly stupid user interface choice.</p>
<h3 id="toc-conclusion">Conclusion</h3>
<p>For simple browsing (the primary use of mobile web browsing) I found myself gravitating back to the craptastic version of Internet Explorer built into my phone. I found IE&#8217;s low memory usage and intuitive interface to be more important than proper page rendering. It&#8217;s a good program to have on a device in case it&#8217;s needed, but won&#8217;t replace IE on Windows Mobile any time soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://disavian.no-ip.info/opera-mobile-95-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autopano Pro Review</title>
		<link>http://disavian.no-ip.info/autopano-pro-review/</link>
		<comments>http://disavian.no-ip.info/autopano-pro-review/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 17:25:47 +0000</pubDate>
		<dc:creator>disavian</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[image editing]]></category>
		<category><![CDATA[panoramas]]></category>
		<category><![CDATA[photography]]></category>

		<guid isPermaLink="false">http://disavian.no-ip.info/?p=35</guid>
		<description><![CDATA[Being a frequent dabbler in photography, panoramas are something I pick up and play with every now and then, to occasional success; panorama software tends to be like scanning software, in that it is usually difficult to use and frequently produces undesirable results.
I&#8217;ve seen great strides made in both of those image editing categories, somewhat [...]]]></description>
			<content:encoded><![CDATA[<p>Being a frequent dabbler in photography, panoramas are something I pick up and play with every now and then, to occasional success; panorama software tends to be like scanning software, in that it is usually difficult to use and frequently produces undesirable results.</p>
<p>I&#8217;ve seen great strides made in both of those image editing categories, somewhat surprisingly. I recently heard of Autopano while researching HDR photography, and I figured that I&#8217;d share the love.<span id="more-35"></span></p>
<h3 id="toc-auto-detection">Auto detection</h3>
<p>Autopano Pro lets you throw it a full directory of images, and then auto-detects any panoramas present. Personally, I find this amazing, as it&#8217;s found several panoramas I didn&#8217;t realize I&#8217;d taken, i.e., had no intention of taking, but they&#8217;re there anyway.</p>
<h3 id="toc-good-quality">Good quality</h3>
<p>Using something called &#8220;smartblend,&#8221; the panoramas this program makes are relatively flawless, having less of the strange artifacting I&#8217;ve seen in some free panorama programs. You probably won&#8217;t need to put the panorama into Photoshop to &#8216;fix&#8217; the blending, even if the picture includes a couple moving people/vehicles. Not that you won&#8217;t put it into Photoshop for other reasons &#8211; I prefer using PS for cropping and level adjustment.</p>
<h3 id="toc-good-options">Good options</h3>
<p>Most of the panorama settings are configurable; if you want to mess with the points, format, size, etc, you&#8217;re welcome to. However, the default settings work just fine with most images. The program imports most popular image formats (including RAW), and now <a href="http://www.autopano.net/wiki/action/view/How_to_use_the_fisheye_detection" rel="nofollow" >works with fisheye lenses</a>, although not having one, I didn&#8217;t get to test that functionality.</p>
<h3 id="toc-good-ui-design">Good UI design</h3>
<p><a href='http://disavian.no-ip.info/wp-content/uploads/2008/07/autopano_pro.png'><img src="http://disavian.no-ip.info/wp-content/uploads/2008/07/autopano_pro-150x150.png" alt="Autopano Pro\&#039;s UI" title="autopano_pro" width="150" height="150" class="alignright size-thumbnail wp-image-36" /></a>The UI design looks like there was some thought put into it. The left has all of the images you&#8217;ve imported, the right has detected panoramas. </p>
<p>This makes sense from a UI designer&#8217;s perspective; you start on the left, then go to the right, as is natural in western culture. Editing a panorama puts you into a separate window with several tools designed to fine-tune/fix the autogenerated match.</p>
<h3 id="toc-price">Price</h3>
<p>While the demo is nice, the full version costs EUR 99, a small fortune as far as personal software goes. If you&#8217;re a company or professional making a profit on images produced by this program (ex: if you&#8217;re a <a href="http://www.autopano.net/applications/photography.html" rel="nofollow" >professional photographer</a>, <a href="http://www.autopano.net/applications/architecture.html" rel="nofollow" >architect</a>, <a href="http://www.autopano.net/applications/real-estate.html" rel="nofollow" >real estate agent</a>, etc), I would highly recommend getting a license. If you&#8217;re an amateur photographer in college eating ramen&#8230; not so much.</p>
<h3 id="toc-links">Links</h3>
<p>I&#8217;ve uploaded the images I generated using this program to Flickr; the set is here: <a href="http://flickr.com/photos/disavian/sets/72157605974891006/" rel="nofollow" >Stitched panoramas &#8211; a set on Flickr</a>. Their official website (with more detailed explanations, examples, a wiki, etc) is at <a href="http://www.autopano.net" rel="nofollow" >autopano.net</a>. I highly recommend watching <a href="http://www.autopano.net/wiki/action/view/Your_first_panorama" rel="nofollow" >this video tutorial</a> to get a feel for the program. VRMAG published an in-depth <a href="http://www.vrmag.org/issue30/TOOLS_YOU_CAN_USE_-_SOFTWARE_AUTOPANO_PRO_-_JUST_ANOTHER_STITCHER_HARDLY_.html" rel="nofollow" >review</a> that you may also wish to read.</p>
]]></content:encoded>
			<wfw:commentRss>http://disavian.no-ip.info/autopano-pro-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diablo 3 Requests</title>
		<link>http://disavian.no-ip.info/diablo-3-requests/</link>
		<comments>http://disavian.no-ip.info/diablo-3-requests/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 04:53:21 +0000</pubDate>
		<dc:creator>disavian</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[blizzard]]></category>
		<category><![CDATA[diablo3]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[suggestions]]></category>

		<guid isPermaLink="false">http://disavian.no-ip.info/?p=27</guid>
		<description><![CDATA[Ever since Blizzard announced Diablo 3 on June 28, 2008, I&#8217;ve been thinking about it. While not a big fan of World of Warcraft (partially because it ruins lives, but that&#8217;s another story), I&#8217;m an incredibly big Diablo fan. 
I figure that it&#8217;s still early enough in the development process that I can suggest some [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.blizzard.com/diablo3/_images/wallpapers/wall1/wall1-1920x1200.jpg'><img src="http://disavian.no-ip.info/wp-content/uploads/2008/07/wall1-1920x1200-150x150.jpg" alt="Diablo 3 Logo" title="Diablo 3 Logo" width="150" height="150" class="alignright size-thumbnail wp-image-30" /></a>Ever since Blizzard announced Diablo 3 on June 28, 2008, I&#8217;ve been thinking about it. While not a big fan of World of Warcraft (partially because it ruins lives, but that&#8217;s another story), I&#8217;m an incredibly big Diablo fan. </p>
<p>I figure that it&#8217;s still early enough in the development process that I can suggest some features in the hope that someone relevant will come across this post in time for it to matter.<span id="more-27"></span></p>
<p>I&#8217;m under the assumption that the art, sounds, and play style will be great. These are more reflections on hours and hours of Diablo 2 gameplay. I&#8217;d also like to know what you&#8217;d like to see (or not see) in Diablo 3. <b>Comment!</b> Also note this isn&#8217;t intended as a summary of all that we know about Diablo 3 right now &#8211; for something closer to that, I found <a href="http://www.shacknews.com/featuredarticle.x?id=909#" rel="nofollow" >this page</a> to be a good resource.</p>
<h3 id="toc-release-date">Release date</h3>
<p>I&#8217;d like Diablo 3 to be released before Duke Nukem Forever. If by some miracle, Duke Nukem Forever is released before Diablo 3 is ready, I&#8217;ll let them have this one. I want a polished game with a lot of replayability instead of a speedy development. Thus, I agree with <a href="http://www.blizzard.com/diablo3/faq/#3_1" rel="nofollow" >Blizzard&#8217;s Diablo 3 FAQ</a>:</p>
<blockquote><p><i>When will Diablo III be released?</i></br><br />
It&#8217;s too early to estimate Diablo III&#8217;s release date. As with all Blizzard Entertainment games, our goal is to create a game that is as fun, balanced, and polished as possible. We intend to take as much time developing Diablo III as is necessary to ensure the game meets our own high expectations and those of our players.</p></blockquote>
<h3 id="toc-graphics">Graphics</h3>
<p><a href='http://disavian.no-ip.info/wp-content/uploads/2008/07/d3-gameplay-789510.png'><img src="http://disavian.no-ip.info/wp-content/uploads/2008/07/d3-gameplay-789510-150x150.png" alt="Diablo 3 barbarian gameplay screenshot" title="Diablo 3 barbarian gameplay screenshot" width="150" height="150" class="alignright size-thumbnail wp-image-29" /></a>As I&#8217;m sure I&#8217;ll have the relevant equipment by the time it&#8217;s released, I&#8217;d like the game to scale all the way up to 1080p. That would be shiny, and correspond to the graphical assets console devs have had for a while now. </p>
<p>As for particular graphical elements, I especially like the graphical style of elemental weapons (fire-enchanted swords are flaming, etc), and the extremely detailed level design I&#8217;ve seen. The new &#8216;dashboard&#8217; style (borrowing well-tested elements from WOW) is a sleek upgrade from d2&#8217;s interface, and allows more resolution independence.</p>
<h3 id="toc-itemcharacter-storage-space">Item/character storage space</h3>
<p><a href='http://disavian.no-ip.info/wp-content/uploads/2008/07/d2inventory.jpg'><img src="http://disavian.no-ip.info/wp-content/uploads/2008/07/d2inventory-150x150.jpg" alt="Diablo 2 inventory and stash" title="Diablo 2 inventory and stash" width="150" height="150" class="alignright size-thumbnail wp-image-28" /></a>I also want Blizzard to give me infinite storage space for items (you know, weapons, armor, runes, gems, etc), or barring that, the ability to mail items back and forth between characters. </p>
<p>I&#8217;d also like more characters per account. Having a billion items and five slots in which to place them was one of my major frustrations of Diablo 2, as was needing several accounts to keep them in.</p>
<h3 id="toc-map">Map</h3>
<p>I liked a lot of the things included in the Diablo 2 map hack; it was particularly useful when going back and leveling up. I know that would be pretty open for abuse, though. Perhaps when you&#8217;ve beaten the game at that difficulty level a certain number of times you can set it to automatically show you the entire map. </p>
<p>I don&#8217;t want people to abuse the game, but when you&#8217;re replaying a certain quest, you don&#8217;t want to wander around trying to find the right area. I do like the updated graphical look and position of the map (as compared to Diablo 2) as seen in the gameplay trailer, though. </p>
<h3 id="toc-health">Health</h3>
<p>I didn&#8217;t like how D2 was so dependent on potions. The health globe thing Blizzard showed us in the gameplay trailer looks like it will help, especially as it heals the entire party. I was never really a fan of &#8216;hardcore&#8217;, so I&#8217;m no stranger to dying, but I&#8217;d prefer it balanced so that dying is&#8230; unlikely&#8230; or at least, unusual for players that know what they&#8217;re doing.</p>
<h3 id="toc-loot">Loot</h3>
<p>If loot is generated per-player, it would eliminate the need for auto-grab hacks. If you pick it up and drop it, teammates can grab it. I applaud this <a href="http://blizzplanet.com/news/2537/" rel="nofollow" >known design decision</a> and only regret that I didn&#8217;t think of it myself. Hopefully, items available only to you and items available to everyone will be visually distinguishable.</p>
<h3 id="toc-skills">Skills</h3>
<p><a href='http://disavian.no-ip.info/wp-content/uploads/2008/07/d2barbcries.jpg'><img src="http://disavian.no-ip.info/wp-content/uploads/2008/07/d2barbcries-150x150.jpg" alt="Diablo 2 Barbarian Warcries Skill Tree" title="Diablo 2 Barbarian Warcries Skill Tree" width="150" height="150" class="alignright size-thumbnail wp-image-32" /></a>I like the character skills they&#8217;ve demoed; and I especially appreciate the need to use said skills strategically, and the visual appearance of each skill. For example, the use of stomp to make enemies drop their shields is rather clever, and details such as those will add new detail to the gameplay. The way the ground around the barbarian shatters after a stomp is a nice touch.</p>
<p>Now I&#8217;ll go by character class as to specific requests. To see the full list of announced D3 character classes, see <a href="http://www.blizzard.com/diablo3/characters/" rel="nofollow" >Diablo III &#8211; Character Classes</a>.</p>
<h4 id="toc-barbarian">Barbarian</h4>
<p>As for picky changes, it&#8217;d be nice if they made whirlwind a bit stronger- when I played a barbarian, it was just as fast to use double swing and significantly increased run speed, especially if you had mana leech. I&#8217;ve toyed with the idea of entirely new skills being introduced in each (distant future) patch and/or expansion, but that could lead to some difficult balancing work. While we&#8217;re at it, beef up the war cries, if they&#8217;re coming back. When was the last time you saw a high-level war cry barb? That&#8217;s what I thought.</p>
<h4 id="toc-witch-doctor">Witch Doctor</h4>
<p>The Witch Doctor seems to be a clever way to combine the Necromancer and the Druid. I approve of this, as it will likely take the best from each class, keeping the game somewhat original. This is purely speculation, though &#8211; Blizzard may yet decide to include a Necromancer.</p>
<h4 id="toc-sorcerer">Sorcerer</h4>
<p>While not officially confirmed, there&#8217;s bound to be some sort of spellcaster. As I played a barbarian, I usually thought that sorcs were overpowered, and ice sorcs overpowered other configurations. It&#8217;d be nice if there was a wider variety of elements for them to spend their skills on.</p>
<h3 id="toc-levels">Levels</h3>
<p><a href='http://disavian.no-ip.info/wp-content/uploads/2008/07/d2cowlvl.jpg'><img src="http://disavian.no-ip.info/wp-content/uploads/2008/07/d2cowlvl-150x150.jpg" alt="Diablo 2 Cow Level" title="Diablo 2 Cow Level" width="150" height="150" class="alignright size-thumbnail wp-image-33" /></a>I&#8217;d prefer it if we could avoid the crazy bug where you had to traverse halfway through the level to get inside the palace at the end of Act 2, to talk to the prince, to go back, to get out of the damn city. If we could avoid any similar level/gameplay design bugs, that would be GREAT.</p>
<p>Oh, and D3 had better have a cow level of some sort. That was awesome, even if it wasn&#8217;t an effective place to level by the time I started playing Diablo 2, due to changes in each subsequent patch. It&#8217;s that sort of humor that really makes a game worth playing.</p>
]]></content:encoded>
			<wfw:commentRss>http://disavian.no-ip.info/diablo-3-requests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
